
    G/Phh                        d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	m
Z
 ddl	mZ ddlmZ g d	Ze
j        Zej        Zi Zg ZdZd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d  Z*d! Z+d" Z,d# Z-d$ Z.d% Z/d& Z0d' Z1d( Z2d) Z3d* Z4d+ Z5d, Z6d- Z7d. Z8d/ Z9d0 Z:d1 Z;d2 Z<d3 Z=d4 Z>d5 Z?d6 Z@d7 ZAd8 ZBd9 ZCd: ZDd; ZEd< ZFd= ZGd> ZHd? ZId@ ZJdA ZKdB ZLdC ZMdD ZNdE ZOdF ZPdG ZQdH ZRdI ZSdJ ZTdK ZUdL ZVdM ZWdN ZXdO ZYdP ZZdQ Z[dR Z\dS Z]dT Z^dU Z_dV Z`eRdWeSdXeTdYeUdZeXd[eWd\eNd]e\d^e^d_e_d`e`daiZadb Zbdc Zcdd Zdde Zedf Zfdg Zgdh Zhdi Zidj Zjdk Zkdl Zldm Zmdn Zn G do dpeo          Zp G dq dr          Zqds Zrdt Zsdu Ztdv Zudw ZvddxZwdy Zxi fdzZyd{ Zzd| Z{d} Z|d~ Z}d Z~d Zd Zd Zd ZddZd Zi fdZ ej        dej                  j        Z ej        dej                  j        Zd Zd ZddZdS )a9  
Auxiliary functions for f2py2e.

Copyright 1999 -- 2011 Pearu Peterson all rights reserved.
Copyright 2011 -- present NumPy Developers.
Permission to use, modify, and distribute this software is given under the
terms of the NumPy (BSD style) LICENSE.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
    N)reduce)deepcopy   )__version__)cfuncs)errmess)]
applyrules	debugcapi
dictappendr   gentitlegetargs2getcallprotoargumentgetcallstatementgetfortrannamegetpymethoddef
getrestdocgetusercodegetusercode1getdimensionhasbodyhascallstatement	hascommonhasexternalshasinitvaluehasnotehasresultnoteisallocatableisarrayisarrayofstringsischaracterischaracterarrayischaracter_or_characterarray	iscomplexiscomplexarrayiscomplexfunctioniscomplexfunction_warnisdoubleisdummyroutine
isexternal
isfunctionisfunction_wrapisint1isint1array	isintegerisintent_aux
isintent_cisintent_callbackisintent_copyisintent_dictisintent_hideisintent_inisintent_inoutisintent_inplaceisintent_nothideisintent_outisintent_overwrite	islogicalislogicalfunctionislong_complexislong_doubleislong_doublefunctionislong_longislong_longfunctionismoduleismoduleroutine
isoptional	isprivate
isvariable
isrequired	isroutineisscalarissigned_long_longarrayisstringisstringarrayisstring_or_stringarrayisstringfunctionissubroutineget_f2py_modulenameissubroutine_wrapisthreadsafe
isunsignedisunsigned_charisunsigned_chararrayisunsigned_long_longisunsigned_long_longarrayisunsigned_shortisunsigned_shortarrayl_andl_notl_oroutmessreplaceshow
stripcommathrow_errorisattr_valuegetuseblocksprocess_f2cmap_dictc                 ~    t                               dd          r!t          j                            |            d S d S )Nverboser   )optionsgetsysstdoutwrite)ts    S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numpy/f2py/auxfuncs.pyr]   r]   =   s>    {{9a   
     c                     dt           v S )Ncapi)debugoptionsvars    rm   r
   r
   B   s    \!!rn   c                 B    d| v o| d         dk    ot          |            S Ntypespec	characterr)   rr   s    rm   _ischaracterry   F   0     ZK!? #rn   c                 B    d| v o| d         dk    ot          |            S ru   rx   rr   s    rm   	_isstringr|   K   rz   rn   c                 (    t          |           od| vS Ncharselectorry   rr   s    rm   r"   r"   P   s    :s!::rn   c                 @    t          |           ot          |            S Nr"   r   rr   s    rm   r    r    T   s    (--Bgcll2BBrn   c                 >    t          |           ot          |           S r   r   rr   s    rm   r!   r!   X   s    (-->'#,,>rn   c                 (    t          |           od| v S r~   r   rr   s    rm   rM   rM   \   s    63!66rn   c                 @    t          |           ot          |            S r   rM   r   rr   s    rm   rK   rK   `   s    "3''<,<<rn   c                 >    t          |           ot          |           S r   r   rr   s    rm   rL   rL   d   s    "3''8GCLL8rn   c                 D    t          |           o| d         d         dk    S )N	dimensionz(*))rL   rr   s    rm   r   r   h   s&     ?#k"22"6%"??rn   c                 *    d| v ot          |            S Nr   rx   rr   s    rm   r   r   n   s    #5joo"55rn   c                 ^    t          |           pt          |           pt          |            S r   )r   rK   r)   rr   s    rm   rI   rI   r   s'    @@CAArn   c                 N    t          |           o|                     d          dv S Nrv   )complexzdouble complexrI   rh   rr   s    rm   r#   r#   v   s,    C== @77:"??@rn   c                 R    t          |           o|                     d          dk    S )Nrv   logicalr   rr   s    rm   r;   r;   {   $    C===SWWZ00I==rn   c                 R    t          |           o|                     d          dk    S )Nrv   integerr   rr   s    rm   r.   r.      r   rn   c                 R    t          |           o|                     d          dk    S )Nrv   realr   rr   s    rm   isrealr      s$    C==:SWWZ00F::rn   c                     	 | d         d         S # t           $ r$ 	 | d         d         cY S # t           $ r Y Y d S w xY ww xY w)Nkindselector*kindKeyErrorrr   s    rm   get_kindr      sq    >"3''   	~&v.... 	 	 	DDD	s     
>+>
:>:>c                 z    |                      d          dk    o"t          |           dk    ot          |            S Nrv   r   1)rh   r   r   rr   s    rm   r,   r,      s?    77:)+ 6SMMS 6)0%56rn   c                 |    t          |           sdS |                     d          dvrdS t          |           dk    S )Nr   rv   r   r   8rI   rh   r   rr   s    rm   r@   r@      sC    C== q
wwz"888qC==Crn   c                     t          |           sdS |                     d          dk    rdS t          |           dk    S )Nr   rv   r   -1r   rr   s    rm   rT   rT      B    C== q
wwzi''qC==D  rn   c                     t          |           sdS |                     d          dk    rdS t          |           dk    S )Nr   rv   r   -2r   rr   s    rm   rX   rX      r   rn   c                     t          |           sdS |                     d          dk    rdS t          |           dk    S )Nr   rv   r   -4r   rr   s    rm   rS   rS      r   rn   c                     t          |           sdS |                     d          dk    rdS t          |           dk    S )Nr   rv   r   -8r   rr   s    rm   rV   rV      r   rn   c                     t          |           sdS |                     d          dk    sdS t          |           dk    S )Nr   rv   r   r   r   rr   s    rm   r'   r'      sB    C== q77:&((qC==Crn   c                     t          |           sdS |                     d          dk    sdS t          |           dk    S )Nr   rv   r   16r   rr   s    rm   r>   r>      sB    C== q77:&((qC==D  rn   c                 J    t          |           sdS t          |           dk    S )Nr   32)r#   r   rr   s    rm   r=   r=      s&    S>> qC==D  rn   c                 N    t          |           o|                     d          dv S r   )r   rh   rr   s    rm   r$   r$      s,    3<< @77:"??@rn   c                 x    t          |           o+|                     d          dk    ot          |           dk    S r   r   rh   r   rr   s    rm   r-   r-      s;    3<< !CGGJ//9< !SMMS !rn   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrv   r   r   r   rr   s    rm   rU   rU      <    3<< "CGGJ//3II "SMMT!"rn   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrv   r   r   r   rr   s    rm   rY   rY      r   rn   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrv   r   r   r   rr   s    rm   isunsignedarrayr      r   rn   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrv   r   r   r   rr   s    rm   rW   rW      r   rn   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrv   r   r   r   rr   s    rm   issigned_chararrayr      <    3<< !CGGJ//3II !SMMS !rn   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrv   r   2r   rr   s    rm   issigned_shortarrayr      r   rn   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrv   r   4r   rr   s    rm   issigned_arrayr      r   rn   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrv   r   r   r   rr   s    rm   rJ   rJ     r   rn   c                     d| v o	d| d         v S )Nattrspecallocatable rr   s    rm   r   r     s    A#j/!AArn   c                 *    d| vpt          |            S r   )rK   rr   s    rm   	ismutabler   
  s    3&7(3--88rn   c                 
    d| v S )N
modulenamer   routs    rm   rC   rC     s    4rn   c                 "    d| v od| d         k    S )Nblockmoduler   r   s    rm   rB   rB     s    d?8x4=88rn   c                 "    d| v od| d         k    S )Nr   functionr   r   s    rm   r*   r*     s    d?:zT']::rn   c                 p    t          |           rdS t          ot          |           ot          |            S Nr   )r0   	wrapfuncsr*   r)   r   s    rm   r+   r+     s:    $ qDD))D:d3C3C/CDrn   c                 "    d| v od| d         k    S )Nr   
subroutiner   r   s    rm   rO   rO      s    d?<|tG}<<rn   c                 `    t          |           rdS t          |           ot          |           S r   )r0   rO   hasassumedshaper   s    rm   rQ   rQ   $  s2    $ q7/$"7"77rn   c                 2    d|                      dg           v S )Nvaluer   rh   rr   s    rm   rb   rb   )  s    cggj"----rn   c                     |                      d          rdS | d         D ]D}| d                              |i                                dg           D ]}|dk    r	d| d<     dS EdS )Nr   Targsvarsr   :Fr   )r   ads      rm   r   r   -  s    xx!"" t&\  f!!!R((,,["== 	 	ACxx*.&'ttt 	 5rn   c                 >    t          |           pt          |           S r   )rC   r   r   s    rm   requiresf90wrapperr   8  s    4  9OD$9$99rn   c                 >    t          |           pt          |           S r   )r*   rO   r   s    rm   rH   rH   <  s    d1|D111rn   c                     t          |           sdS d| v r	| d         }n| d         }|| d         v rt          | d         |                   S dS Nr   resultnamer   )r*   r;   r   r   s     rm   r<   r<   @  `    d q4NLDLfa)))1rn   c                     t          |           sdS d| v r	| d         }n| d         }|| d         v rt          | d         |                   S dS r   )r*   r@   r   s     rm   rA   rA   L  s`    d q4NLDL4<?+++1rn   c                     t          |           sdS d| v r	| d         }n| d         }|| d         v rt          | d         |                   S dS r   )r*   r>   r   s     rm   r?   r?   X  s`    d q4NLDLT&\!_---1rn   c                     t          |           sdS d| v r	| d         }n| d         }|| d         v rt          | d         |                   S dS r   )r*   r#   r   s     rm   r%   r%   d  r   rn   c                 F    t          |           rt          d           dS dS )Na      **************************************************************
        Warning: code with a function returning complex value
        may not work correctly with your Fortran compiler.
        When using GNU gcc/g77 compilers, codes should work
        correctly for callbacks with:
        f2py -c -DF2PY_CB_RETURNCOMPLEX
    **************************************************************
r   r   )r%   r]   r   s    rm   r&   r&   p  s9     	 H 	I 	I 	I q1rn   c                     t          |           sdS d| v r	| d         }n| d         }|| d         v rt          | d         |                   S dS r   )r*   rK   r   s     rm   rN   rN   ~  s`    d q4NLDLVQ(((1rn   c                     d| v o| d         S )N	externalsr   r   s    rm   r   r     s    $44#44rn   c                     d| v o	d| d         v S )Nf2pyenhancements
threadsafer   r   s    rm   rR   rR     s"    % 44 2334rn   c                     d| v o| d         S )Nr   r   r   s    rm   hasvariablesr     s    T>*d6l*rn   c                 P    d| v o"d| d         v od| d         vot          |           S )Nr   optionalrequired)r8   rr   s    rm   rD   rD     sB    # .*J"? .c*o-I3CC3H3HIrn   c                     d| v o	d| d         v S )Nr   externalr   rr   s    rm   r)   r)     s    >s:!>>rn   c                     dd|                                  v r9t          d | d         D                       rfd| d         D             d         S d S d S )Nz	\((.*?)\)r   c              3      K   | ]}d |v V  	dS )r   Nr   ).0ss     rm   	<genexpr>zgetdimension.<locals>.<genexpr>  s'      99A{a999999rn   c                 :    g | ]}t          j        |          S r   )refindall)r  v
dimpatterns     rm   
<listcomp>z getdimension.<locals>.<listcomp>  s%    GGG!BJz1--GGGrn   r   )keysany)rs   r  s    @rm   r   r     sv    JSXXZZ99Z99999 	KGGGGs:GGGJJ  	K 	Krn   c                 @    t          |            ot          |           S r   )rD   r8   rr   s    rm   rG   rG     s    #8#3C#8#88rn   c                     d| vrdS d| d         v rdS d| d         v rdS d| d         v rdS d| d         v rdS d| d         v rdS d	| d         v rdS dS )
Nintentr   hider   inplaceinoutinoutoutinr   rr   s    rm   r5   r5     s    sqXqCM!!qs8}qHq#h-q#h-q1rn   c                 n    d| v o1d| d         v s
d| d         v od| d         vod| d         vo	d| d         vS )Nr  r  r  r  r  r  r   rr   s    rm   r6   r6     sg    O KCM!9 "%s8}$K*.c(m*CK#h-'K,5S],JLrn   c                 2    d|                      dg           v S )Nr  r  r   rr   s    rm   r9   r9         CGGHb))))rn   c                     d| v oAd| d         v p7d| d         v o-d| d         vo# t          t          t                    |            S )Nr  r  r  r  )r\   r6   r7   rr   s    rm   r4   r4     sd    O D3x=!8 "Cc(m# BCM(A B;T.*:;;C@@@Ern   c                 "    t          |            S r   )r4   rr   s    rm   r8   r8     s    S!!!!rn   c                 2    d|                      dg           v S )Ncr  r   rr   s    rm   r0   r0     s    #''(B''''rn   c                 2    d|                      dg           v S )Ncacher  r   rr   s    rm   isintent_cacher"    s    cggh++++rn   c                 2    d|                      dg           v S )Ncopyr  r   rr   s    rm   r2   r2     s    SWWXr****rn   c                 2    d|                      dg           v S )N	overwriter  r   rr   s    rm   r:   r:         #''(B////rn   c                 2    d|                      dg           v S )Ncallbackr  r   rr   s    rm   r1   r1         2....rn   c                 2    d|                      dg           v S )Nr  r  r   rr   s    rm   r7   r7     s    "----rn   c                 2    d|                      dg           v S )Nauxr  r   rr   s    rm   r/   r/     r  rn   c                 2    d|                      dg           v S )Naligned4r  r   rr   s    rm   isintent_aligned4r0    r*  rn   c                 2    d|                      dg           v S )Naligned8r  r   rr   s    rm   isintent_aligned8r3    r*  rn   c                 2    d|                      dg           v S )N	aligned16r  r   rr   s    rm   isintent_aligned16r6    r'  rn   	INTENT_ININTENT_INOUT
INTENT_OUTINTENT_HIDEINTENT_CACHEINTENT_COPTIONALINTENT_INPLACEINTENT_ALIGNED4INTENT_ALIGNED8INTENT_ALIGNED16c                     d| v o	d| d         v S )Nr   privater   rr   s    rm   rE   rE     s    =c*o!==rn   c                 ^    t          |           dk    rd| v r| d         d         dv rd}nd}|S )Nr   r   r   )publicrC  FTlen)rs   is_vars     rm   rF   rF     sA    
3xx1}}s**
OA"777Mrn   c                 
    d| v S )N=r   rr   s    rm   r   r     s    #:rn   c                 D    t          |           sdS | d         d         dv S )Nr   rJ  )"')r   rr   s    rm   hasinitvalueasstringrN    s*     qs8A;*$$rn   c                 
    d| v S )Nnoter   rr   s    rm   r   r     s    S=rn   c                     t          |           sdS d| v r	| d         }n| d         }|| d         v rt          | d         |                   S dS r   )r*   r   r   s     rm   r   r     s`    d q4NLDLtF|A'''1rn   c                 
    d| v S )Ncommonr   r   s    rm   r   r   +  s    trn   c                     t          |           rdS t          |           r| d         D ]}t          |          r dS dS )Nr   bodyr   )r   r   containscommon)r   bs     rm   rV  rV  /  sW     qt}} f 	 	Aa   qq1rn   c                     t          |           rdS t          |           sdS | d         D ]}t          |          r dS dS )Nr   r   rU  )rB   r   containsmodule)r   rW  s     rm   rY  rY  9  s\     q5>> q6]  ! 	11	1rn   c                 
    d| v S )NrU  r   r   s    rm   r   r   D  s    T>rn   c                 $    t          |           d uS r   )r   r   s    rm   r   r   H  s    D!!--rn   c                     dS )Nr   r   rr   s    rm   istruer]  L      1rn   c                     dS r   r   rr   s    rm   isfalser`  P  r^  rn   c                       e Zd ZdS )	F2PYErrorN)__name__
__module____qualname__r   rn   rm   rb  rb  T  s        Drn   rb  c                       e Zd Zd Zd ZdS )ra   c                     || _         d S r   )mess)selfrh  s     rm   __init__zthrow_error.__init__Z  s    			rn   c                 <    d|d| j         d}t          |          )Nz


  var = z
  Message: 
)rh  rb  )ri  rs   rh  s      rm   __call__zthrow_error.__call__]  s$     47CCCoorn   N)rc  rd  re  rj  rm  r   rn   rm   ra   ra   X  s2              rn   ra   c                      dg }}t          t          |                     D ]"}d|||fz  }|                    d|z             #t          |dd                    |                    S )Nlambda v%s,f%d=f[%d]f%d(v)r   z and rangerG  appendevaljoinfl1l2is       rm   rZ   rZ   b  su    B3q66]] " "r1aj(
		(a.!!!!222w||B///0111rn   c                      dg }}t          t          |                     D ]"}d|||fz  }|                    d|z             #t          |dd                    |                    S )Nro  rp  rq  r   z or rr  rw  s       rm   r\   r\   j  sr    B3q66]] " "r1aj(
		(a.!!!!222v{{2/000rn   c                      t          d          S )Nzlambda v,f=f:not f(v))ru  )rx  s    rm   r[   r[   r  s    '(((rn   c                 J    	 | d         d         dk    S # t           $ r Y dS w xY w)Nr   fortranname r   r   r   s    rm   r(   r(   v  s?    &'6"<<   qqs    
""c                     	 | d         d         }|dk    rt           |st          d| d         z             t           n# t           $ r | d         }Y nw xY w|S )Nr   r  r  z"Failed to use fortranname from %s
r   )r   r   )r   r   s     rm   r   r   }  s    	&'62::N 	9,-/ 0 0 0N	    F|Ks   <? AAc                 F   	 | d                              |          }n# t          $ r Y d S w xY w|sd S |dk    rt          |t                    rd S t          |t                    r|t          |          k    rd S ||         }|d d         dk    r|r'd|z   dz   t          |          z   dz   |dd          z   }n
|dd          }|dd          dk    r.|r!|d d         d	z   t          |          z   d
z   }n-|d d         }n"t          |dt          |          d           |S )Nr   r      z'''z
	/* start z multiline (z) */
z
	/* end multiline (z)*/z( multiline block should end with `'''`: rl  )rh   r   
isinstancestrlistrG  reprr   )r   	blocknamecommentcounterrs        rm   getmultilineblockr    s}   #$((33    {{z!S)){!T c!ffFgJ!u~~ 		)!%g/19:<=abbEBAA !""ARSS6U?? crcF55WEMcrcF yy$q''''+ , , ,Hs    
,,c                 "    t          | d          S )Ncallstatementr  r   s    rm   r   r     s    T?333rn   c           	      8   t          | dd          }|r|S t          |           rt          d           d S ddlm} g g }} t          t          t          t                              |           r|	                    ddg           | d	         D ]}| d
         |         }t          |          r ||v r||         dz   }n ||          } t          t          t          t          t                              |          rn$t          |          rnt!          |          s|dz   }t          |          st#          |          st%          |          r|                    d           |                    |           d                    ||z             }	|	sd}	|	S )Ncallprotoargumentr   )r  z<warning: callstatement is defined without callprotoargument
r   )getctypezchar*size_tr   r   _typedefr   ,void)r  r   r]   	capi_mapsr  rZ   rN   r[   r+   extendr1   r0   r\   rI   r#   rK   rb   r   rL   rt  rv  )
r   cb_mapr  r  	arg_types
arg_types2nrs   ctype
proto_argss
             rm   r   r     s   $ 3Q???A  K	M 	M 	M######zI6uu_5566t<< .'8,---&\    6l1oS!! 	;;1I
*EEHSMME;uZh	!:!:;;C@@ (# (#C(( (!CKE ,$S)),!#&&, !!(+++)j011J 
rn   c                 "    t          | d          S )Nusercoder  r   s    rm   r   r     s    T:...rn   c                 &    t          | dd          S )Nr  r   )r  r  r   s    rm   r   r     s    T:q9999rn   c                 "    t          | d          S )Npymethoddefr  r   s    rm   r   r     s    T=111rn   c                     g g }}d| v rW| d         }d| v rC| d         D ]}||v r|                     |           |D ]}||vr|                     |           n| d         }||fS )Nr   sortvars)rt  )r   sortargsr   r   s       rm   getargsr    s    dH~~F|*% ' '99OOA&&& ' 'H$$OOA&&&' F|H>rn   c                 <    g                       dg           c} fd d                                         D             }|z   d v rC d         D ]}|v r|                    |           D ]}||vr|                    |           n| d         z   }|fS )Nr   c                 R    g | ]#}t          d          |                   r|v!|$S )r   )r/   )r  r   r   r   s     rm   r  zgetargs2.<locals>.<listcomp>  s@     " " "Qd6l1o1N1N "D==  ==rn   r   r  )rh   r  rt  )r   r  auxvarsr   r   s   `   @rm   r   r     s    &"--NHd" " " " "$v,++-- " " "GT>DTj! 	# 	#ADyy""" 	# 	#A  """	# T&\)>rn   c                     d| vrd S d }| d         dk    r| d         | d         f}| d                              |d           S )Nf2pymultilinesr   zpython moduler   r   )r   ks     rm   r   r     sT    t##tAG}''M4<' !%%a...rn   c                 V    dt          |           z
  dz
  dz  }d|dz  d| d|dz  dS )NP         z/*r    z*/rF  )r   lns     rm   r   r   
  s>    
s4yy.1
	"BB#XXXtttR#XXX66rn   c                 d    t          | t                    rt          t          fd| g           S | gS )Nc                     |  ||          z   S r   r   )xyrx  s      rm   <lambda>zflatlist.<locals>.<lambda>  s    q11Q44x rn   )r  r  r   flatlist)lsts    rm   r  r    s7    #t BX777bAAA5Lrn   c                 6    | r| d         dk    r
| d d         S | S )Nr   r  r   )r  s    rm   r`   r`     s(     QrUc\\"vHrn   r  c           
      *    t          t                    r fdD             S t           t                    rfd D             S dt                                                    z  D ]}|dk    r	dv r|d         v rd         |         }n}t          |         t                    r@                     d|z  |                    t          |                                                             d|z  |                     S )Nc                 2    g | ]}t          |          S r   r^   )r  _m
defaultsepr  s     rm   r  zreplace.<locals>.<listcomp>  s%    999R,,999rn   c                 2    g | ]}t          |          S r   r  )r  r  r   r  s     rm   r  zreplace.<locals>.<listcomp>  s%    999rAz**999rn   r  separatorsforz#%s#)r  r  r  r^   rv  r  )r  r   r  r  seps   ```  rm   r^   r^     s*   !T :99999q9999#t :99999S9999affhh 
2 
2aA?);$;$;O$Q'CCCadD!! 	2++flCHHXad^^,D,DEECC++flAaD11CCJrn   c                 ,   t          |t                    r|D ]}t          | |          } | S |                                D ]Q}|d         dk    r|| v r1t          | |         t                    r| |         g| |<   t          | |         t                    rRt          ||         t                    r| |         ||         z   | |<   | |                             ||                    t          | |         t                    rt          ||         t                    re|dk    r@||                                         D ]#}|| |         vr||         |         | |         |<   $%t          | |         ||                   | |<   F||         | |<   S| S )Nr   _r  )r  r  r   r  r  rt  dict)rdarr   r  k1s        rm   r   r   .  s   "d  	# 	#AB""BB	WWYY  Q43;;77"Q%%%  A1"Q%&& 9beT** (qEBqEMBqEEqELLA''''BqE4(( 9beT** 9O++"$Q%**,, 6 6B!A,.qE"I1b	6 !+2a5"Q% 8 81qEBqEEIrn   c           	         i }t          | t                    r.| D ])}t          |||          }t          ||          }d|v r n*|S d| v r | d         |          s|S d| v r7t          d| d         i||          }d|v rt	          j        |d                    |                                 D ]}|dk    r| |         ||<   t          | |         t                    rt          | |         |          ||<   nt          | |         t                    rJg ||<   | |         D ]:}t          ||i||          }	||	v r!||         	                    |	|                    ;n|d         dk    rt          | |         t                    rLg ||<   | |                                         D ]*}
t          |
t          j                  r |
|          r t          | |         |
         t                    rr| |         |
         D ]b}t          |t                    r"t          d|i||          }d|v r	|d         }nd	}||         	                    t          ||                     c| |         |
         }t          |t                    r!t          d|i|          }d|v r	|d         }nd	}||         	                    t          ||                     ,n%t          d
t          | |                   z             t          ||         t                    r9t          ||                   dk    r||         d         ||<   ||         g k    r||= |S )N_break_checkneedneedsr  r   r  	supertextr  zapplyrules: ignoring rule %s.
r   )r  r  r	   r   r   append_needsr  r  r^   rt  r  typesFunctionTyper   r  rG  )rulesr   rs   retr  rrresr  r{  r  r  s              rm   r	   r	   K  s   
C%  	 	AAq#&&BS"%%C2~~ 
5/%/#"6"6
'5=11c::c>>G---ZZ\\ * *1XCFeAh$$ !	HU1Xq))CFFa$'' 	HCF1X ) )A3//77FMM"Q%((() qTS[[a$'' 	HCFAhmmoo 5 5b%"455 5""S'' 5!%(2,55 5!&q" 9 9A)!T22 +&0+q1A1c&J&J#.##5#5(+K(8AA(*AFMM'!Q--88889 "!HRL%a.. '",k1-=q"A"AC*c11$'$4$&Agamm444'5* 5U1XFGGGc!fd## 	3q6{{aQA1v||FJrn   z%\s*python\s*module\s*(?P<name>[\w_]+)z4\s*python\s*module\s*(?P<name>[\w_]*?__user__[\w_]*)c                     d }t          |           5 }|D ]:}t          |          }|r't          |          r#|                    d          } n;d d d            n# 1 swxY w Y   |S )Nr   )open_f2py_module_name_match_f2py_user_module_name_matchgroup)sourcer   rx  linems        rm   rP   rP     s    D	f  	 	D'--A /55 wwv	               Ks   >AA #A c                     g }| d         D ]f}|d         D ][}|                     d          rD|                    d |                     d                                          D                        \g|S )NrU  usec                     g | ]}d |v|	S )__r   )r  r  s     rm   r  z getuseblocks.<locals>.<listcomp>  s     X X Xq$VW-----rn   )rh   r  r  )pymodall_usesinnermodblocks       rm   rc   rc     s    Hv Z Zf 	Z 	ZH||E"" Z X XHLL,?,?,D,D,F,F X X XYYY	Z Orn   Fc                    g }i }|                                 D ]:\  }}d |                                 D             }|||                                <   ;|                                 D ]\  }}|| vri | |<   |                                 D ]\  }	}
|
|v rn|	| |         v r(t          d|d|	d| |         |	         d|
d	           |
| |         |	<   |rt          d|d|	d	|
d
           |                    |
           w|r>t	          d|d|	d|
d|
dt          |                                          d           | |fS )a  
    Update the Fortran-to-C type mapping dictionary with new mappings and
    return a list of successfully mapped C types.

    This function integrates a new mapping dictionary into an existing
    Fortran-to-C type mapping dictionary. It ensures that all keys are in
    lowercase and validates new entries against a given C-to-Python mapping
    dictionary. Redefinitions and invalid entries are reported with a warning.

    Parameters
    ----------
    f2cmap_all : dict
        The existing Fortran-to-C type mapping dictionary that will be updated.
        It should be a dictionary of dictionaries where the main keys represent
        Fortran types and the nested dictionaries map Fortran type specifiers
        to corresponding C types.

    new_map : dict
        A dictionary containing new type mappings to be added to `f2cmap_all`.
        The structure should be similar to `f2cmap_all`, with keys representing
        Fortran types and values being dictionaries of type specifiers and their
        C type equivalents.

    c2py_map : dict
        A dictionary used for validating the C types in `new_map`. It maps C
        types to corresponding Python types and is used to ensure that the C
        types specified in `new_map` are valid.

    verbose : boolean
        A flag used to provide information about the types mapped

    Returns
    -------
    tuple of (dict, list)
        The updated Fortran-to-C type mapping dictionary and a list of
        successfully mapped C types.
    c                 >    i | ]\  }}|                                 |S r   )lower)r  r  v1s      rm   
<dictcomp>z'process_f2cmap_dict.<locals>.<dictcomp>  s&    <<<vr2BHHJJ<<<rn   z	Warning: redefinition of {'z':{'z':'z'->'z'}}
z
	Mapping "z(kind=z)" to "z"
z	Ignoring map {'z'}}: 'z' must be in rl  )itemsr  r]   rt  r   r  r  )
f2cmap_allnew_mapc2py_maprf   f2cmap_mappednew_map_lowerr  d1d1_lowerr  r  s              rm   rd   rd     s   L MM , ,2<<<<<#+aggii  $$&&  2JJqMhhjj 	 	FBX~~A&&G11bbb*Q-"3"3"3RRR9   %'
1b! OG111bbb"""MNNN$$R(((( G11bbb"""bbb$x}}*?*?*?*?A  	$ }$$rn   )r   r   )r  )F)__doc__pprintri   r	  r  	functoolsr   r$  r   r  r   r   r   __all__versionf2py_versionr_   rg   rq   r   r]   r
   ry   r|   r"   r    r!   rM   rK   rL   r   r   rI   r#   r;   r.   r   r   r,   r@   rT   rX   rS   rV   r'   r>   r=   r$   r-   rU   rY   r   rW   r   r   r   rJ   r   r   rC   rB   r*   r+   rO   rQ   rb   r   r   rH   r<   rA   r?   r%   r&   rN   r   rR   r   rD   r)   r   rG   r5   r6   r9   r4   r8   r0   r"  r2   r:   r1   r7   r/   r0  r3  r6  r3   rE   rF   r   rN  r   r   r   rV  rY  r   r   r]  r`  	Exceptionrb  ra   rZ   r\   r[   r(   r   r  r   r   r   r   r   r  r   r   r   r  r`   r^   r   r	   compileImatchr  r  rP   rc   rd   r   rn   rm   <module>r     s  	 	  



 				                                 : " }
	  
" " "  
  
; ; ;C C C? ? ?7 7 7= = =9 9 9@ @ @6 6 6B B B@ @ @
> > >> > >; ; ;  6 6 6
     ! ! !! ! !! ! !! ! !     ! ! !! ! !@ @ @
! ! !
" " "
" " "
" " "
" " "
! ! !
! ! !
! ! !
! ! !
B B B9 9 9     9 9 9; ; ;E E E= = =8 8 8
. . .  : : :2 2 2	 	 		 	 		 	 		 	 	  	 	 	5 5 54 4 4
+ + +I I I
? ? ?K K K9 9 9  $L L L* * *E E E" " "( ( (, , ,+ + +0 0 0/ / /. . .* * */ / // / /0 0 0 k>>|]MZZ!#3"$5"$5#%7> > >    % % %  	 	 	        . . .    	 	 	 	 		 	 	 	       2 2 21 1 1) ) )       <4 4 4 ') $ $ $ $N/ / /: : :2 2 2     "/ / /7 7 7
       &  :   ; ; ; ;z %"*%M%'T+ ++0 )rz +=>@d D  DDI 
 
 
  C% C% C% C% C% C%rn   