
    thh                        d dl Z 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          J/var/www/histauto/venv/lib/python3.11/site-packages/numpy/f2py/_src_pyf.pyparse_structurer   7   s    H
C&##D#..9		""488 	JJtS%0077!a%=J.. 	
!!$00&15577Q;43t994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)   W   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.   a   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>j   s     qr   index)splitranger   item_rer   intgroupjoin)r   blr   r   js         r   r"   r"   h   s    

3AAA3q66]]  MM!A$ 	AGGG$$%%AQ4AaD88A;;r   c                 z    t          |                                           }d}d}|sd| }||v r|dz  }nd}||S )z( Obtain a unique key given a dictionary.Fr   __lT)listkeys)adictallkeysdonennewkeys        r   r    r    r   s`    5::<<  GD	A q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| d          ||vr|	                    d	          s|||<   d
 |
                    d          D             }t          |          }|
|}||<   |}||k    r||<   d                    |                   }	t          d| d|	 d| 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                 6   t          |                     d                              dd                    }t                              |          rd| dS d }                                D ]}|         |k    r|}|t                    }||<   d| dS )Nr   r   r   <>)r"   r;   r!   template_name_rer   rC   r    )mobjr(   r&   keylnamess       r   listreplzexpand_sub.<locals>.listrepl   s    tzz!}},,UI>>??!!'** 	"!w>>>!;;== 	 	Cc{g%%<f%%D"F4L4{{{r   zNo replicates found for <rL   _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   z*Mismatch in number of replacements (base <=z>) for <z>. Ignoring.c                 t    |                      d          }                    |dz   |gz                     S )Nr   )r;   get)rN   r&   kruless     r   namereplzexpand_sub.<locals>.namerepl   s6    zz!}}yyA$/0033r   r+   z

rK   )r!   r)   r   sublist_retemplate_rer   rV   
ValueError
startswithr7   r   r<   printr8   )substrr$   rQ   numsubs	base_rulerr(   rulenumrules_base_rulerY   newstrrW   rP   rX   s               @@@r   
expand_subrh      sd   ^^E>22F^^E=11F''F\\'6**F     [[6**FGIE  (( 9 9E>>jjEIIa$6$677G !AQ!A!A!ABBB~~g&8&8&=&=~"aJJw}}S7I7IJJJDd))Ca		a"%((5+;"<"< 8 )8 8,;8 88 8")8 8 8 9 9 9  4 4 4 4 4 4 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.   rh   )	allstrrg   writestrstructoldendr$   rZ   
cleanedstrdefss	            r   process_strrr      s    FHV$$FFE	LL     8s1v9NOO
DJTJvc!fSVm4e<<<Q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   r|   r|      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+   )r|   rr   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>
)rt   r,   compileIr   r   r   r   r\   r   r[   r)   r.   r9   r"   r    rM   rh   rr   rx   r|   r   rk   r2   r   r   <module>r      s   				 				+Z 2:SUWUYZZ JBDQQBJ=rtDD   8 bj/002:899
"*'
(
(     "*,
-
-     2:677 < < <|  ( WY[Y]^^  $' ' '
 $# %  r   