K iddlZddlZ ejdejZejdejZejdejZdZejdZejdZ ejdZ d Z d Z ejd Z d Zd ZejdZdZdZejdejZdZdZe dZy)Nz2(\n|\A)(( (\$|\*))|)\s*(subroutine|function)\bz+\n\s*end\s*(subroutine|function)\b.*(\n|\Z)z\n (\$|\*)\s*function\bcg}d} tj||}| |S|j}tj |||j r) |j d||}|dk(rn|}|||dzdk7rn(|dz }tj||j }|xr|j dz xs t|x}}|j||f)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. r z $) routine_start_researchstartfunction_start_rematchendrfindroutine_end_relenappend)astrspanlistindmr ir s Y/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/numpy/f2py/_src_pyf.pyparse_structurer7s H C   # #D# . 9  O   " "4 8JJtS%07!a%=J.     ! !$ 0&1557Q;43t94c %! z<\s*(\w[\w\d]*)\s*>z<\s*(\w[\w\d]*)\s*=\s*(.*?)\s*>z<\s*((.*?))\s*>ctj|}i}|D]G}|djxs t|}|dj dd}t |}|||<I|S)Nrr\,@comma@)named_refindallstrip unique_keyreplaceconv)rrepsnamesrepnamereplthelists rfind_repl_patternsr)Wsl   D !D E1v||~2E!21v~~eY/t*d  Lrc\t|}tjtd|d}||fS)Nr)r)resubnr)rr$s rfind_and_remove_repl_patternsr.as- t $E 778R &q )D ;rz\A\\(?P\d+)\Zc6|jd}|Dcgc]}|j}}tt|D]?}tj ||}|st |jd}||||<Adj|Scc}w)N,index) splitrrangeritem_rer intgroupjoin)rbxlrrjs rr"r"hs 3AqA 3q6] MM!A$  AGGG$%AQ4AaD  88A; sBclt|j}d}d}|sd|}||vr|dz }nd}|sS)z( Obtain a unique key given a dictionary.Fr__lT)listkeys)adictallkeysdonennewkeys rr r rsL5::< G D Aqc W  FAD  Mrz\A\s*(\w[\w\d]*)\s*\Zc j |jdd}|jdd}t|tjd|}fd}tj||}d}d}it j |D]}|vsj||j|d}|td|d||vr|jd s|||<|jd Dcgc]}|jd d }}t|} | | }||<|}| |k(r||<d j|} td |d | d|d |d s|S fd} d} t|D] | t j| |dzz } | jdd} | jdd} | Scc}w)Nz\>z @rightarrow@z\ct|jdjdd}tj |rd|dSd}j D] }||k(s |}|t }||<d|dS)Nrrr<>)r"r6r!template_name_rer r?r )mobjr(r&keylnamess rlistreplzexpand_sub..listreplstzz!},,UI>?  ! !' *wiq> !;;= Cc{g%  <f%D"F4L4&{rzNo replicates found for ) for . Ignoring.c^|jd}j|dz|gzS)Nr)r6get)rJr&kruless rnamereplzexpand_sub..namerepls1zz!}yyA$/033rr+z rG)r!r)rsublist_re template_rerrQ ValueError startswithr2rr7printr3)substrr$rMnumsubs base_rulerr(rrulenumrules_base_rulerTnewstrrRrLrSs @@@r expand_subrcs ^^E> 2F ^^E= 1F  'F \\'6 *F [[6 *FGI E   (9 E>jjEIIa$67G #}}S7IJ!AIIi-JDJd)Ca a"%((5+;"< ){!O+<=S',89%9*  4F 7^=+//(F3f<<=^^NC 0F ^^M3 /F M7Ks'F0c|}d}t|}d}i}|jt|D]I}t|||d\}}||z }|j||t ||d|d|z }|d}K|||dz }|S)Nr+rr)rupdate_special_namesr.rc) allstrrbwritestrstructoldendr$rU cleanedstrdefss r process_strrms FH V $F F E LL 8s1v9NO DJ TJvc!fSV4e<<Q   vwH Orz8(\n|\A)\s*include\s*['\"](?P[\w\d./\\]+\.src)['\"]c"tjj|}t|5}g}|D]}tj |}|r|j d}tjj|s tjj||}tjj|r|jt||j||j| ddd|S#1swYSxYw)Nr&) ospathdirnameopeninclude_src_rer r6isabsr7isfileextendresolve_includesr)sourcedfidlineslinerfns rrwrws A f # #D$$T*AWWV_ww}}R(a,B77>>"%LL!1"!56LL& T" # # L # Ls CDDcLt|}tdj|S)Nr+)rwrmr7)rxr{s r process_filers V $E rwwu~ &&rz <_c=s,d,c,z> <_t=real,double precision,complex,double complex> )ror,compileIrrr rrWrrVr)r.r4r"r rIrcrmrsrwrrfrrrs +Z2::SUWUYUYZJBDDQBJJ=rttD8bjj/0 2::8 9 "**' ( "**, - 2::67<|(WY[Y]Y]^$' $%r