
    G/Ph                        d dl Z 	  e j        de j                  Z e j        de j                  Z e j        de j                  Zd Z e j        d          Z e j        d          Z e j        d          Z	d	 Z
d
 Z e j        d          Zd Zd Z e j        d          Zd Zd Z e j        de j                  Zd Zd Z e
d          ZdS )    Nz2(\n|\A)((     (\$|\*))|)\s*(subroutine|function)\bz+\n\s*end\s*(subroutine|function)\b.*(\n|\Z)z\n     (\$|\*)\s*function\bc                 "   g }d}	 t                               | |          }|n|                                }t                              | ||                                          r4	 |                     d||          }|dk    rn|}| ||dz            dk    rn3|dz  }t                              | |                                          }|r|                                dz
  pt          |           x}}|	                    ||f           	|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.
    r   TN
   z
     $   )
routine_start_researchstartfunction_start_rematchendrfindroutine_end_relenappend)astrspanlistindmr
   ir   s          S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numpy/f2py/_src_pyf.pyparse_structurer   6   s    H
C&##D#..9		""488 	JJtS%00b55!A#;
** 	
!!$00O!%%''!)0s4yy0c%%%!&" O    z<\s*(\w[\w\d]*)\s*>z<\s*(\w[\w\d]*)\s*=\s*(.*?)\s*>z<\s*((.*?))\s*>c                     t                               |           }i }|D ][}|d                                         pt          |          }|d                             dd          }t          |          }|||<   \|S )Nr   r   \,@comma@)named_refindallstrip
unique_keyreplaceconv)r   repsnamesrepnamereplthelists          r   find_repl_patternsr)   U   sy    D!!DE  1v||~~2E!2!21v~~eY//t**dLr   c                 j    t          |           }t          j        t          d|           d         } | |fS )N r   )r)   resubnr   )r   r$   s     r   find_and_remove_repl_patternsr.   _   s1    t$$E78R&&q)D;r   z\A\\(?P<index>\d+)\Zc                 J   |                      d          }d |D             }t          t          |                    D ]Q}t                              ||                   }|r-t          |                    d                    }||         ||<   Rd                    |          S )N,c                 6    g | ]}|                                 S  )r   ).0xs     r   
<listcomp>zconv.<locals>.<listcomp>g   s     qr   index)splitranger   item_rer   intgroupjoin)r   blr   r   js         r   r"   r"   e   s    

3AAA3q66]]  MM!A$ 	AGGG$$%%AQ4AaD88A;;r   c                 z    t          |                                           }d}d}|sd|z  }||v r|dz  }nd}||S )z( Obtain a unique key given a dictionary.Fr   z__l%sT)listkeys)adictallkeysdonennewkeys        r   r    r    o   s^    5::<<  GD	A AWFAAD   Mr   z\A\s*(\w[\w\d]*)\s*\Zc           
         |                      dd          } |                      dd          } t          |           t                              d|           } fd}t                              ||           } d }d }i t
                              |           D ]}|vr                    ||                    |d                     }|t          d|z            ||vr|	                    d          s|||<   d	 |
                    d
          D             }t          |          }|
|}||<   |}||k    r||<   t          d                    |d
                    |                   ||                     s| S fd}	d}
t          |          D ]#|
t
                              |	|           dz   z  }
$|
                     dd          }
|
                     dd          }
|
S )Nz\>z@rightarrow@z\<z@leftarrow@z<\1>c                 2   t          |                     d                              dd                    }t                              |          rd|z  S d }                                D ]}|         |k    r|}|t                    }||<   d|z  S )Nr   r   r   z<%s>)r"   r;   r!   template_name_rer   rB   r    )mobjr(   r&   keylnamess       r   listreplzexpand_sub.<locals>.listrepl   s    tzz!}},,UI>>??!!'** 	&W%%;;== 	 	Cc{g%%<f%%D"F4L}r   zNo replicates found for <%s>_c                 :    g | ]}|                     d d          S )r   r0   )r!   )r3   r   s     r   r5   zexpand_sub.<locals>.<listcomp>   s&    JJJ!AIIi--JJJr   r0   zHMismatch in number of replacements (base <{}={}>) for <{}={}>. Ignoring.c                 t    |                      d          }                    |dz   |gz                     S )Nr   )r;   get)rK   r&   kruless     r   namereplzexpand_sub.<locals>.namerepl   s5    zz!}}yy!dV|,,Q//r   r+   z

><)r!   r)   r   sublist_retemplate_rer   rR   
ValueError
startswithr7   r   printformatr<   r8   )substrr$   rN   numsubs	base_rulerr(   rulenumrU   newstrrS   rM   rT   s              @@@r   
expand_subrf   ~   s;   ^^E>22F^^E=11F''F\\'6**F     [[6**F GIE  (( j jE>>jjEIIa$6$677G !?1!EFFF~~g&8&8&=&=~"aJJw}}S7I7IJJJDd))Ca		a //5vi%PYJZA[A[]^`g/h/hj j j 0 0 0 0 0 0 F7^^ = =+//(F33f<<^^NC00F^^M3//FMr   c                 ^   | }d}t          |          }d}i }|                    t                     |D ]k}t          |||d                            \  }}||z  }|                    |           |t	          ||d         |d                  |          z  }|d         }l|||d          z  }|S )Nr+   r   r   )r   update_special_namesr.   rf   )	allstrre   writestrstructoldendr$   rX   
cleanedstrdefss	            r   process_strrp      s    FHV$$FFE	LL     8s1v9NOO
DJTJvc!fSVm4e<<<a&vwwHOr   z8(\n|\A)\s*include\s*['\"](?P<name>[\w\d./\\]+\.src)['\"]c                 \   t           j                            |           }t          |           5 }g }|D ]}t                              |          }|r|                    d          }t           j                            |          s t           j                            ||          }t           j        	                    |          r#|
                    t          |                     |                    |           |                    |           	 d d d            n# 1 swxY w Y   |S )Nr&   )ospathdirnameopeninclude_src_rer   r;   isabsr<   isfileextendresolve_includesr   )sourcedfidlinesliner   fns          r   rz   rz      sF   
A	f # 	# 	#D$$T**A 	#WWV__w}}R(( -a,,B7>>"%% 'LL!1"!5!56666LL&&&&T""""	## # # # # # # # # # # # # # # Ls   C%D!!D%(D%c                 d    t          |           }t          d                    |                    S )Nr+   )rz   rp   r<   )r{   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>
)r,   compileIr   r   r   r   rZ   r   rY   r)   r.   r9   r"   r    rJ   rf   rp   rv   rz   r   ri   r2   r   r   <module>r      s|   				+Z 2:SUWUYZZ JBDQQBJ=rtDD   6 bj/002:899
"*'
(
(    
 "*,
-
-     2:677 9 9 9v  & WY[Y]^^  $' ' ' $# %  r   