a ;jgæã@sÆddlZe dej¡Ze dej¡Ze dej¡Zdd„Ze d¡Ze d¡Ze d ¡Z d d „Z d d „Z e d¡Z dd„Z dd„Ze d¡Zdd„Zdd„Ze dej¡Zdd„Zdd„Ze dƒZdS)éNz2(\n|\A)(( (\$|\*))|)\s*(subroutine|function)\bz+\n\s*end\s*(subroutine|function)\b.*(\n|\Z)z\n (\$|\*)\s*function\bcCs´g}d}t ||¡}|durq°| ¡}t ||| ¡¡rl| d||¡}|dkrPql|}|||d…dkr8qlq8|d7}t || ¡¡}|r”| ¡dpšt|ƒ}}|  ||f¡q|S)z‘ Return a list of tuples for each function or subroutine each tuple is the start and end of a subroutine or function to be expanded. rNÚ éÿÿÿÿéz $é) Úroutine_start_reÚsearchÚstartÚfunction_start_reÚmatchÚendÚrfindÚroutine_end_reÚlenÚappend)ÚastrZspanlistÚindÚmrÚir ©rú=/usr/local/lib/python3.9/site-packages/numpy/f2py/_src_pyf.pyÚparse_structure6s$ rz<\s*(\w[\w\d]*)\s*>z<\s*(\w[\w\d]*)\s*=\s*(.*?)\s*>z<\s*((.*?))\s*>cCsPt |¡}i}|D]8}|d ¡p(t|ƒ}|d dd¡}t|ƒ}|||<q|S)Nrrú\,ú@comma@)Únamed_reÚfindallÚstripÚ unique_keyÚreplaceÚconv)rZrepsÚnamesÚrepÚnameÚreplÚthelistrrrÚfind_repl_patternsUs  r$cCs"t|ƒ}t td|¡d}||fS)NÚr)r$ÚreÚsubnr)rrrrrÚfind_and_remove_repl_patterns_sr(z\A\\(?P\d+)\ZcCs`| d¡}dd„|Dƒ}tt|ƒƒD]0}t ||¡}|r$t| d¡ƒ}||||<q$d |¡S)Nú,cSsg|] }| ¡‘qSr)r)Ú.0ÚxrrrÚ gózconv..Úindex)ÚsplitÚrangerÚitem_rer ÚintÚgroupÚjoin)rÚbÚlrrÚjrrrres rcCs<t| ¡ƒ}d}d}|s8d|}||vr2|d7}qd}q|S)z( Obtain a unique key given a dictionary.Frz__l%sT)ÚlistÚkeys)ÚadictZallkeysÚdoneÚnZnewkeyrrrros  rz\A\s*(\w[\w\d]*)\s*\Zc sl| dd¡}| dd¡}t|ƒ‰t d|¡}‡fdd„}t ||¡}d}d}i‰t |¡D]´}|ˆvrZˆ || |d¡¡}|durŽtd|ƒ‚||vr¨|  d ¡s¨|||<d d „|  d ¡Dƒ}t |ƒ}|durÞ|}|ˆ|<|}qZ||krð|ˆ|<qZt d   |d  ˆ|¡||¡ƒqZˆs|S‡‡fdd„} d} t|ƒD]‰| t | |¡d7} q4|  dd¡} |  dd¡} | S)Nz\>z @rightarrow@z\csjt| d¡ dd¡ƒ}t |¡r(d|Sd}ˆ ¡D]}ˆ||kr4|}q4|durbtˆƒ}|ˆ|<d|S)Nrrrz<%s>)rr3rÚtemplate_name_rer r9r)Úmobjr#r!Úkey)ÚlnamesrrÚlistrepl„s   zexpand_sub..listreplzNo replicates found for <%s>Ú_cSsg|]}| dd¡‘qS)rr))r)r*rrrrr,žr-zexpand_sub..r)zHMismatch in number of replacements (base <{}={}>) for <{}={}>. Ignoring.cs$| d¡}ˆ |ˆd|g¡ˆS)Nr)r3Úget)r>r!)ÚkÚrulesrrÚnamerepl­s zexpand_sub..namereplr%z ú>ú<)rr$rÚsubÚlist_reÚ template_rerrCÚ ValueErrorÚ startswithr/rÚprintÚformatr4r0) ÚsubstrrrAZnumsubsZ base_ruleÚrr#ÚruleÚnumrFÚnewstrr)rDr@rErÚ expand_sub~sH      ÿ   rUc Cs|}d}t|ƒ}d}i}| t¡|D]T}t|||d…ƒ\}}||7}| |¡|t||d|d…|ƒ7}|d}q&|||d…7}|S)Nr%rr)rÚupdateÚ_special_namesr(rU) ZallstrrTÚwritestrÚstructZoldendrrIZ cleanedstrZdefsrrrÚ process_str¹s   rZz8(\n|\A)\s*include\s*['\"](?P[\w\d./\\]+\.src)['\"]cCsªtj |¡}t|ƒ‚}g}|D]h}t |¡}|r|| d¡}tj |¡sTtj ||¡}tj  |¡rp|  t |ƒ¡q†|  |¡q|  |¡qWdƒn1sœ0Y|S)Nr!) ÚosÚpathÚdirnameÚopenÚinclude_src_rer r3Úisabsr4ÚisfileÚextendÚresolve_includesr)ÚsourceÚdZfidÚlinesÚlinerÚfnrrrrcÎs       *rccCst|ƒ}td |¡ƒS)Nr%)rcrZr4)rdrfrrrÚ process_fileàsrizÿ <_c=s,d,c,z> <_t=real,double precision,complex,double complex> )r&ÚcompileÚIrr r rrKrrJr$r(r1rrr=rUrZr_rcrirWrrrrÚs&1       ;