
    Kh                        S SK r S SKr \R                  " S\R                  5      r\R                  " S\R                  5      r\R                  " S\R                  5      rS r\R                  " S5      r\R                  " S5      r	\R                  " S5      r
S	 rS
 r\R                  " S5      rS rS r\R                  " S5      rS rS r\R                  " S\R                  5      rS rS r\" S5      rg)    Nz2(\n|\A)((     (\$|\*))|)\s*(subroutine|function)\bz+\n\s*end\s*(subroutine|function)\b.*(\n|\Z)z\n     (\$|\*)\s*function\bc                    / nSn [         R                  X5      nUc   U$ UR                  5       n[        R	                  XUR                  5       5      (       a*   U R                  SX$5      nUS:X  a  OUnXUS-    S:w  a  OM)  US-  n[        R                  XR                  5       5      nU=(       a    UR                  5       S-
  =(       d    [        U 5      =p&UR                  XF45        M  )zReturn 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_researchstartfunction_start_rematchendrfindroutine_end_relenappend)astrspanlistindmr
   ir   s          E/var/www/html/env/lib/python3.13/site-packages/numpy/f2py/_src_pyf.pyparse_structurer   7   s     H
C
##D.9 O 	""488JJtS0b5!A#;
*  	
!!$0O!%%'!)0s4y0%!     z<\s*(\w[\w\d]*)\s*>z<\s*(\w[\w\d]*)\s*=\s*(.*?)\s*>z<\s*((.*?))\s*>c                     [         R                  U 5      n0 nU HL  nUS   R                  5       =(       d    [        U5      nUS   R	                  SS5      n[        U5      nXbU'   MN     U$ )Nr   r   \,@comma@)named_refindallstrip
unique_keyreplaceconv)r   repsnamesrepnamereplthelists          r   find_repl_patternsr)   V   se    D!DE1v||~2E!21v~~eY/t*d	 
 Lr   c                 \    [        U 5      n[        R                  " [        SU 5      S   n X4$ )N r   )r)   resubnr   )r   r$   s     r   find_and_remove_repl_patternsr.   `   s+    t$E778R&q)D;r   z\A\\(?P<index>\d+)\Zc                 D   U R                  S5      nU Vs/ s H  o"R                  5       PM     nn[        [        U5      5       HC  n[        R                  X4   5      nU(       d  M#  [        UR                  S5      5      nX6   X4'   ME     SR                  U5      $ s  snf )N,index)	splitr   ranger   item_rer   intgroupjoin)r   bxlr   r   js          r   r"   r"   f   s    

3AAqAA3q6]MM!$1AGGG$%A4AD	 
 88A; 	s   Bc                     [        U R                  5       5      nSnSnU(       d  SU-  nXA;   a  US-  nOSnU(       d  M  W$ )z'Obtain a unique key given a dictionary.Fr   z__l%sT)listkeys)adictallkeysdonennewkeys        r   r    r    p   sJ    5::< GD	AAFAD d Mr   z\A\s*(\w[\w\d]*)\s*\Zc           
        ^^^ U R                  SS5      n U R                  SS5      n [        U 5      m[        R                  SU 5      n U4S jn[        R                  X 5      n S nS n0 m[
        R                  U 5       H  nUT;  d  M  TR                  XQR                  US 5      5      nUc  [        SU-  5      eXQ;  a  UR                  S5      (       d  XaU'   UR                  S	5       Vs/ s H  owR                  S
S	5      PM     nn[        U5      n	Uc  U	nUTU'   UnM  X:X  a  UTU'   M  [        SR                  US	R                  TU   5      XV5      5        M     T(       d  U $ UU4S jn
Sn[        U5       H  mU[
        R                  X5      S-   -  nM      UR                  SS5      nUR                  SS5      nU$ s  snf )Nz\>z@rightarrow@z\<z@leftarrow@z<\1>c                   > [        U R                  S5      R                  SS5      5      n[        R	                  U5      (       a  SU-  $ S nTR                  5        H  nTU   U:X  d  M  UnM     Uc  [        T5      nUTU'   SU-  $ )Nr   r   r   z<%s>)r"   r6   r!   template_name_rer   r>   r    )mobjr(   r&   keylnamess       r   listreplexpand_sub.<locals>.listrepl   s    tzz!},,UI>?!!'**W%%;;=Cc{g% ! <f%D"F4L}r   zNo replicates found for <%s>_r0   r   zHMismatch in number of replacements (base <{}={}>) for <{}={}>. Ignoring.c                 ^   > U R                  S5      nTR                  UTS-   U/-  5      T   $ )Nr   )r6   get)rG   r&   kruless     r   namereplexpand_sub.<locals>.namerepl   s0    zz!}yy!dV|,Q//r   r+   z

><)r!   r)   r   sublist_retemplate_rer   rN   
ValueError
startswithr2   r   printformatr7   r3   )substrr$   rJ   numsubs	base_rulerr(   r   rulenumrQ   newstrrO   rI   rP   s               @@@r   
expand_subrc      s   ^^E>2F^^E=1F'F\\'6*F [[*F GIE  (E>jjIIa$67G !?1!EFF~g&8&8&=&="a7>}}S7IJ7I!IIi-7IDJd)Ca	a //5vi%PYJZA[]^/hj# )& 0 F7^+//(3f<<  ^^NC0F^^M3/FM3 Ks   .Gc                     U nSn[        U5      nSn0 nUR                  [        5        U HF  n[        XUS    5      u  pxX'-  nUR                  U5        U[	        XS   US    U5      -  nUS   nMH     X!US  -  nU$ )Nr+   r   r   )r   update_special_namesr.   rc   )	allstrrb   writestrstructoldendr$   rU   
cleanedstrdefss	            r   process_strrm      s    FHV$FFE	LL 8s1v9NO
TJv!fSV4e<<a&  vwHOr   z8(\n|\A)\s*include\s*['\"](?P<name>[\w\d./\\]+\.src)['\"]c                 N   [         R                  R                  U 5      n[        U 5       n/ nU H  n[        R                  U5      nU(       a  UR                  S5      n[         R                  R                  U5      (       d  [         R                  R                  X5      n[         R                  R                  U5      (       a  UR                  [        U5      5        M  UR                  U5        M  UR                  U5        M     S S S 5        U$ ! , (       d  f       W$ = f)Nr&   )ospathdirnameopeninclude_src_rer   r6   isabsr7   isfileextendresolve_includesr   )sourcedfidlinesliner   fns          r   rw   rw      s    
A	fD$$T*AWWV_ww}}R((a,B77>>"%%LL!1"!56LL&T"  
 L 
 Ls   C D
D$c                 L    [        U 5      n[        SR                  U5      5      $ )Nr+   )rw   rm   r7   )rx   r{   s     r   process_filer      s    V$Erwwu~&&r   z
<_c=s,d,c,z>
<_t=real,double precision,complex,double complex>
<prefix=s,d,c,z>
<ftype=real,double precision,complex,double complex>
<ctype=float,double,complex_float,complex_double>
<ftypereal=real,double precision,\0,\1>
<ctypereal=float,double,\0,\1>
)ro   r,   compileIr   r   r   r   rW   r   rV   r)   r.   r4   r"   r    rF   rc   rm   rs   rw   r   rf    r   r   <module>r      s   	 	+Z ::SUWUYUYZ JBDDQJJ=rttD 6 jj/0::89
**'
(
 **,
- ::67 9v& WY[Y]Y]^$' $ % r   