
    wgg                     X   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 Zm G dn doen      Zo G dp dq      Zpdr Zqds Zrdt Zsdu Ztdv ZuddwZvdx Zwi fdyZxdz Zyd{ Zzd| Z{d} Z|d~ Z}d Z~d Zd Zd ZddZd Zi fdZ ej
                  dej                        j                  Z ej
                  dej                        j                  Zd Zd ZddZy)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
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                 p    t         j                  dd      r t        j                  j	                  |        y y )Nverboser   )optionsgetsysstdoutwrite)ts    X/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/numpy/f2py/auxfuncs.pyr\   r\   >   s'    {{9a 

 !    c                     dt         v S )Ncapi)debugoptionsvars    rl   r
   r
   C   s    \!!rm   c                 :    d| v xr | d   dk(  xr t        |        S Ntypespec	characterr)   rq   s    rl   _ischaracterrx   G   .     ZK!? #rm   c                 :    d| v xr | d   dk(  xr t        |        S rt   rw   rq   s    rl   	_isstringr{   L   ry   rm   c                 $    t        |       xr d| vS Ncharselectorrx   rq   s    rl   r"   r"   Q   s    :s!::rm   c                 4    t        |       xr t        |        S Nr"   r   rq   s    rl   r    r    U   s    (-Bgcl2BBrm   c                 2    t        |       xr t        |       S r   r   rq   s    rl   r!   r!   Y   s    (->'#,>rm   c                 $    t        |       xr d| v S r}   r   rq   s    rl   rL   rL   ]   s    63!66rm   c                 4    t        |       xr t        |        S r   rL   r   rq   s    rl   rJ   rJ   a   s    "3'<,<<rm   c                 2    t        |       xr t        |       S r   r   rq   s    rl   rK   rK   e   s    "3'8GCL8rm   c                 2    t        |       xr | d   d   dk(  S )N	dimensionz(*))rK   rq   s    rl   r   r   i   s#     ?#k"22"6%"??rm   c                 &    d| v xr t        |        S Nr   rw   rq   s    rl   r   r   o   s    #5jo"55rm   c                 N    t        |       xs t        |       xs t        |        S r   )r   rJ   r)   rq   s    rl   rH   rH   s   s!    @@CAArm   c                 B    t        |       xr | j                  d      dv S Nru   )complexzdouble complexrH   rg   rq   s    rl   r#   r#   w   s'    C= @77:"??@rm   c                 D    t        |       xr | j                  d      dk(  S )Nru   logicalr   rq   s    rl   r;   r;   |       C==SWWZ0I==rm   c                 D    t        |       xr | j                  d      dk(  S )Nru   integerr   rq   s    rl   r.   r.      r   rm   c                 D    t        |       xr | j                  d      dk(  S )Nru   realr   rq   s    rl   isrealr      s    C=:SWWZ0F::rm   c                 d    	 | d   d   S # t         $ r 	 | d   d   cY S # t         $ r Y Y y w xY ww xY w)Nkindselector*kindKeyErrorrq   s    rl   get_kindr      sM    >"3'' 	~&v.. 		s    
 	//	+/+/c                 f    | j                  d      dk(  xr t        |       dk(  xr t        |        S Nru   r   1)rg   r   r   rq   s    rl   r,   r,      s8    77:)+ 6SMS 6)0%56rm   c                 ^    t        |       sy| j                  d      dvryt        |       dk(  S )Nr   ru   r   r   8rH   rg   r   rq   s    rl   r@   r@      s0    C=
wwz"88C=Crm   c                 `    t        |       sy| j                  d      dk7  ryt        |       dk(  S )Nr   ru   r   -1r   rq   s    rl   rS   rS      /    C=
wwzi'C=D  rm   c                 `    t        |       sy| j                  d      dk7  ryt        |       dk(  S )Nr   ru   r   -2r   rq   s    rl   rW   rW      r   rm   c                 `    t        |       sy| j                  d      dk7  ryt        |       dk(  S )Nr   ru   r   -4r   rq   s    rl   rR   rR      r   rm   c                 `    t        |       sy| j                  d      dk7  ryt        |       dk(  S )Nr   ru   r   -8r   rq   s    rl   rU   rU      r   rm   c                 `    t        |       sy| j                  d      dk(  syt        |       dk(  S )Nr   ru   r   r   r   rq   s    rl   r'   r'      s/    C=77:&(C=Crm   c                 `    t        |       sy| j                  d      dk(  syt        |       dk(  S )Nr   ru   r   16r   rq   s    rl   r>   r>      s/    C=77:&(C=D  rm   c                 6    t        |       syt        |       dk(  S )Nr   32)r#   r   rq   s    rl   r=   r=      s    S>C=D  rm   c                 B    t        |       xr | j                  d      dv S r   )r   rg   rq   s    rl   r$   r$      s'    3< @77:"??@rm   c                 d    t        |       xr$ | j                  d      dk(  xr t        |       dk(  S r   r   rg   r   rq   s    rl   r-   r-      s4    3< !CGGJ/9< !SMS !rm   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nru   r   r   r   rq   s    rl   rT   rT      5    3< "CGGJ/3II "SMT!"rm   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nru   r   r   r   rq   s    rl   rX   rX      r   rm   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nru   r   r   r   rq   s    rl   isunsignedarrayr      r   rm   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nru   r   r   r   rq   s    rl   rV   rV      r   rm   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nru   r   r   r   rq   s    rl   issigned_chararrayr      5    3< !CGGJ/3II !SMS !rm   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nru   r   2r   rq   s    rl   issigned_shortarrayr      r   rm   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nru   r   4r   rq   s    rl   issigned_arrayr      r   rm   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nru   r   r   r   rq   s    rl   rI   rI     r   rm   c                     d| v xr d| d   v S )Nattrspecallocatable rq   s    rl   r   r     s    A#j/!AArm   c                 &    d| vxs t        |        S r   )rJ   rq   s    rl   	ismutabler     s    3&7(3-88rm   c                 
    d| v S )N
modulenamer   routs    rl   rC   rC     s    4rm   c                     d| v xr d| d   k(  S )Nblockmoduler   r   s    rl   rB   rB     s    d?8x4=88rm   c                     d| v xr d| d   k(  S )Nr   functionr   r   s    rl   r*   r*     s    d?:zT']::rm   c                 \    t        |       ryt        xr t        |       xr t        |        S Nr   )r0   	wrapfuncsr*   r)   r   s    rl   r+   r+     s*    $DD)D:d3C/CDrm   c                     d| v xr d| d   k(  S )Nr   
subroutiner   r   s    rl   rN   rN   !  s    d?<|tG}<<rm   c                 J    t        |       ryt        |       xr t        |       S r   )r0   rN   hasassumedshaper   s    rl   rP   rP   %  s"    $7/$"77rm   c                 *    d| j                  dg       v S )Nvaluer   rg   rq   s    rl   ra   ra   *  s    cggj"---rm   c                     | j                  d      ry| d   D ]9  }| d   j                  |i       j                  dg       D ]  }|dk(  s	d| d<     y ; y)Nr   Targsvarsr   :Fr   )r   ads      rl   r   r   .  sl    xx!"&\ f!!!R(,,["= 	ACx*.&'	
 rm   c                 2    t        |       xs t        |       S r   )rC   r   r   s    rl   requiresf90wrapperr   9  s    4 9OD$99rm   c                 2    t        |       xs t        |       S r   )r*   rN   r   s    rl   rG   rG   =  s    d1|D11rm   c                 j    t        |       syd| v r| d   }n| d   }|| d   v rt        | d   |         S yNr   resultnamer   )r*   r;   r   r   s     rl   r<   r<   A  I    d4NLDLfa))rm   c                 j    t        |       syd| v r| d   }n| d   }|| d   v rt        | d   |         S yr   )r*   r@   r   s     rl   rA   rA   M  sI    d4NLDL4<?++rm   c                 j    t        |       syd| v r| d   }n| d   }|| d   v rt        | d   |         S yr   )r*   r>   r   s     rl   r?   r?   Y  sI    d4NLDLT&\!_--rm   c                 j    t        |       syd| v r| d   }n| d   }|| d   v rt        | d   |         S yr   )r*   r#   r   s     rl   r%   r%   e  r   rm   c                 2    t        |       rt        d       yy)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    rl   r&   r&   q  s!     H 	I rm   c                 j    t        |       syd| v r| d   }n| d   }|| d   v rt        | d   |         S yr   )r*   rJ   r   s     rl   rM   rM     sI    d4NLDLVQ((rm   c                     d| v xr | d   S )N	externalsr   r   s    rl   r   r     s    $44#44rm   c                     d| v xr d| d   v S )Nf2pyenhancements
threadsafer   r   s    rl   rQ   rQ     s"    % 44 2334rm   c                     d| v xr | d   S )Nr   r   r   s    rl   hasvariablesr     s    T>*d6l*rm   c                 H    d| v xr d| d   v xr d| d   vxr t        |       S )Nr   optionalrequired)r8   rq   s    rl   rD   rD     s?    # .*J"? .c*o-I3CC3HIrm   c                     d| v xr d| d   v S )Nr   externalr   rq   s    rl   r)   r)     s    >s:!>>rm   c                     d}d| j                         v r@t        d | d   D              r*| d   D cg c]  }t        j                  ||       c}d   S y y c c}w )Nz	\((.*?)\)r   c              3   $   K   | ]  }d |v  
 yw)r   Nr   ).0ss     rl   	<genexpr>zgetdimension.<locals>.<genexpr>  s     9A{a9s   r   )keysanyrefindall)rr   
dimpatternvs      rl   r   r     sY    JSXXZ9Z997::G!BJJz1-GJJ :  Gs   Ac                 4    t        |        xr t        |       S r   )rD   r8   rq   s    rl   rF   rF     s    #8#3C#88rm   c                 n    d| vryd| d   v ryd| d   v ryd| d   v ryd| d   v ryd| d   v ryd	| d   v ryy)
Nintentr   hider   inplaceinoutinoutoutinr   rq   s    rl   r5   r5     sj    sXCM!s8}H#h-#h-rm   c                 d    d| v xr+ d| d   v xs d| d   v xr d| d   vxr d| d   vxr d| d   vS )Nr  r  r  r  r  r  r   rq   s    rl   r6   r6     sg    O KCM!9 "%s8}$K*.c(m*CK#h-'K,5S],JLrm   c                 *    d| j                  dg       v S )Nr  r  r   rq   s    rl   r9   r9         CGGHb)))rm   c                 z    d| v xr6 d| d   v xs- d| d   v xr$ d| d   vxr  t        t        t              |        S )Nr  r  r  r  )r[   r6   r7   rq   s    rl   r4   r4     s^    O D3x=!8 "Cc(m# BCM(A B;T.*:;C@@Erm   c                     t        |        S r   )r4   rq   s    rl   r8   r8     s    S!!!rm   c                 *    d| j                  dg       v S )Ncr  r   rq   s    rl   r0   r0     s    #''(B'''rm   c                 *    d| j                  dg       v S )Ncacher  r   rq   s    rl   isintent_cacher    s    cggh+++rm   c                 *    d| j                  dg       v S )Ncopyr  r   rq   s    rl   r2   r2     s    SWWXr***rm   c                 *    d| j                  dg       v S )N	overwriter  r   rq   s    rl   r:   r:         #''(B///rm   c                 *    d| j                  dg       v S )Ncallbackr  r   rq   s    rl   r1   r1         2...rm   c                 *    d| j                  dg       v S )Nr  r  r   rq   s    rl   r7   r7     s    "---rm   c                 *    d| j                  dg       v S )Nauxr  r   rq   s    rl   r/   r/     r  rm   c                 *    d| j                  dg       v S )Naligned4r  r   rq   s    rl   isintent_aligned4r-    r'  rm   c                 *    d| j                  dg       v S )Naligned8r  r   rq   s    rl   isintent_aligned8r0    r'  rm   c                 *    d| j                  dg       v S )N	aligned16r  r   rq   s    rl   isintent_aligned16r3    r$  rm   	INTENT_ININTENT_INOUT
INTENT_OUTINTENT_HIDEINTENT_CACHEINTENT_COPTIONALINTENT_INPLACEINTENT_ALIGNED4INTENT_ALIGNED8INTENT_ALIGNED16c                     d| v xr d| d   v S )Nr   privater   rq   s    rl   rE   rE     s    =c*o!==rm   c                 
    d| v S )N=r   rq   s    rl   r   r   	  s    #:rm   c                 .    t        |       sy| d   d   dv S )Nr   rB  )"')r   rq   s    rl   hasinitvalueasstringrF    s     s8A;*$$rm   c                 
    d| v S )Nnoter   rq   s    rl   r   r     s    S=rm   c                 j    t        |       syd| v r| d   }n| d   }|| d   v rt        | d   |         S yr   )r*   r   r   s     rl   r   r     sI    d4NLDLtF|A''rm   c                 
    d| v S )Ncommonr   r   s    rl   r   r   #  s    trm   c                 `    t        |       ryt        |       r| d   D ]  }t        |      s y y)Nr   bodyr   )r   r   containscommon)r   bs     rl   rN  rN  '  s6    t}f 	Aa 	 rm   c                 b    t        |       ryt        |       sy| d   D ]  }t        |      s y y)Nr   r   rM  )rB   r   containsmodule)r   rO  s     rl   rQ  rQ  1  s9    5>6] ! rm   c                 
    d| v S )NrM  r   r   s    rl   r   r   <  s    T>rm   c                     t        |       d uS r   )r   r   s    rl   r   r   @  s    D!--rm   c                      y)Nr   r   rq   s    rl   istruerU  D      rm   c                      yr   r   rq   s    rl   isfalserX  H  rV  rm   c                       e Zd Zy)	F2PYErrorN)__name__
__module____qualname__r   rm   rl   rZ  rZ  L  s    rm   rZ  c                       e Zd Zd Zd Zy)r`   c                     || _         y r   )mess)selfr`  s     rl   __init__zthrow_error.__init__R  s	    	rm   c                 >    d|d| j                   d}t        |      )Nz


  var = z
  Message: 
)r`  rZ  )ra  rr   r`  s      rl   __call__zthrow_error.__call__U  s    47Corm   N)r[  r\  r]  rb  re  r   rm   rl   r`   r`   P  s    rm   r`   c                      dg }}t        t        |             D ]  }d|||fz  }|j                  d|z           t        |ddj	                  |            S )Nlambda v%s,f%d=f[%d]f%d(v)r   z and rangelenappendevaljoinfl1l2is       rl   rY   rY   Z  s]    B3q6] "r1aj(
		(a.!" 2w||B/011rm   c                      dg }}t        t        |             D ]  }d|||fz  }|j                  d|z           t        |ddj	                  |            S )Nrg  rh  ri  r   z or rj  rp  s       rl   r[   r[   b  s\    B3q6] "r1aj(
		(a.!" 2v{{2/00rm   c                     t        d      S )Nzlambda v,f=f:not f(v))rn  )rq  s    rl   rZ   rZ   j  s    '((rm   c                 8    	 | d   d   dk(  S # t         $ r Y yw xY w)Nr   fortranname r   r   r   s    rl   r(   r(   n  s/    &'6"<< s   
 	c                     	 | d   d   }|dk(  rt         |st        d| d   z         t         	 |S # t         $ r	 | d   }Y |S w xY w)Nr   rx  ry  z"Failed to use fortranname from %s
r   )r   r   )r   r   s     rl   r   r   u  so    	&'62:N9,-/ 0N  K  F|Ks   ,1 AAc                    	 | d   j                  |      }|sy |dkD  rt        |t              ry t        |t              r|t        |      k\  ry ||   }|d d dk(  ri|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   }|S |d d }|S t        |dt        |      d       |S # t        $ r Y y w xY w)Nr   r      z'''z
	/* start z multiline (z) */
z
	/* end multiline (z)*/z( multiline block should end with `'''`: rd  )rg   r   
isinstancestrlistrl  reprr   )r   	blocknamecommentcounterrs        rl   getmultilineblockr    s'   #$((3 {z!S)!Tc!fgJ!u~	)!%g/19:<=abEBA !"ARS6U?crF55WEM H	 crF H  $q'+ ,H1  s   C 	CCc                     t        | d      S )Ncallstatementr  r   s    rl   r   r     s    T?33rm   c           	      ~   t        | dd      }|r|S t        |       rt        d       y ddlm} g g }} t        t        t        t                    |       r|j                  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|j'                  d       |j'                  |        dj)                  ||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  rY   rM   rZ   r+   extendr1   r0   r[   rH   r#   rJ   ra   r   rK   rm  ro  )
r   cb_mapr  r  	arg_types
arg_types2nrr   ctype
proto_argss
             rl   r   r     s;   $ 3Q?AK	M#zI6uu_56t<'8,-&\  6l1oS!;1I
*ESME;uZh	!:;C@##C(!CKE#$S)!#&!!(+' * )j01J
rm   c                     t        | d      S )Nusercoder  r   s    rl   r   r     s    T:..rm   c                     t        | dd      S )Nr  r   )r  r  r   s    rl   r   r     s    T:q99rm   c                     t        | d      S )Npymethoddefr  r   s    rl   r   r     s    T=11rm   c                     g g }}d| v rO| d   }d| v rA| d   D ]  }||v s|j                  |        |D ]  }||vs|j                  |        ||fS | d   }||fS )Nr   sortvars)rm  )r   sortargsr   r   s       rl   getargsr    s    dH~F|*% '9OOA&'  'H$OOA&'
 > F|H>rm   c                 L   g | j                  dg       }}| d   j                         D cg c]  }t        | d   |         s||vr| }}||z   }d| v rA| d   D ]  }||v s|j                  |        |D ]  }||vs|j                  |        ||fS || d   z   }||fS c c}w )Nr   r   r  )rg   r  r/   rm  )r   r  r   r   auxvarss        rl   r   r     s    &"-dHv,++- "Qd6l1o1ND=  "G "T>DTj! 	#ADy"	#  	#A "	#
 > T&\)>"s   B!B!c                 ^    d| vry d }| d   dk(  r
| d   | d   f}| d   j                  |d       S )Nf2pymultilinesr   zpython moduler   r   )r   ks     rl   r   r     sI    t#AG}'M4<' !%%a..rm   c                 N    dt        |       z
  dz
  dz  }d|dz  d| d|dz  dS )NP         z/*r    z*/)rl  )r   lns     rl   r   r     s.    
s4y.1
	"B#XtR#X66rm   c                 P    t        | t              rt        t        fd| g       S | gS )Nc                     |  ||      z   S r   r   )xyrq  s      rl   <lambda>zflatlist.<locals>.<lambda>	  s    q1Q4x rm   )r~  r  r   flatlist)lsts    rl   r  r    s%    #tX7bAA5Lrm   c                 $    | r| d   dk(  r| d d S | S )Nr   r  r   )r  s    rl   r_   r_     s    QrUc\"vHrm   c           
         t        |t              r|D cg c]  }t        | ||       c}S t        | t              r| D cg c]  }t        |||       c}S dt        |j                               z  D ]z  }|dk(  r	d|v r||d   v r	|d   |   }n|}t        ||   t              r1| j                  d|z  |j	                  t        ||                     } c| j                  d|z  ||         } | | S c c}w c c}w )Nr  separatorsforz#%s#)r~  r  r]   r  ro  r  )r  r   
defaultsep_mr  seps         rl   r]   r]     s    !T789R,99#t589rAz*99affh 
2aA?);$;O$Q'CCadD!++flCHHXad^,DEC++flAaD1C
2 J :9s   C2 C7c                 Z   t        |t              r|D ]  }t        | |      }  | S |j                         D ]  }|d   dk(  r|| v rt        | |   t              r	| |   g| |<   t        | |   t              r:t        ||   t              r| |   ||   z   | |<   a| |   j                  ||          yt        | |   t              st        ||   t              s|dk(  r/||   j                         D ]  }|| |   vs||   |   | |   |<    t        | |   ||         | |<   ||   | |<    | S )Nr   _r  )r~  r  r   r  r  rm  dict)rdarr   r  k1s        rl   r   r   &  sC   "d 	#AB"B	#	WWY Q43;7"Q%%A1"Q%&beT*qEBqEMBqEqELLA'BqE4(beT*O+"$Q%**, 6B!A,.qE"I1b	6 !+2a5"Q% 81qEBqE)* Irm   c           	         i }t        | t              r)| D ]"  }t        |||      }t        ||      }d|v s! |S  |S d| v r | d   |      s|S d| v r.t        d| d   i||      }d|v rt	        j
                  |d          | j                         D ]  }|dk(  r	| |   ||<   t        | |   t              rt        | |   |      ||<   nt        | |   t              r<g ||<   | |   D ]-  }t        ||i||      }	||	v s||   j                  |	|          / n5|d   dk(  rt        | |   t              rg ||<   | |   j                         D ]  }
t        |
t        j                        s |
|      s't        | |   |
   t              rW| |   |
   D ]K  }t        |t              rt        d|i||      }d|v r|d   }nd	}||   j                  t        ||             M | |   |
   }t        |t              rt        d|i|      }d|v r|d   }nd	}||   j                  t        ||              nt        d
t        | |         z         t        ||   t              st        ||         dk(  r||   d   ||<   ||   g k(  s||=  |S )N_break_checkneedneedsr  r   r  	supertextry  zapplyrules: ignoring rule %s.
r   )r~  r  r	   r   r   append_needsr  r  r]   rm  r  typesFunctionTyper   r  rl  )rulesr   rr   retr  rrresr  rt  r  r  s              rl   r	   r	   C  s   
C% 	AAq#&BS"%C2~
	
 
5/%/#"6
'5=11c:c>G-ZZ\ *1XCFeAh$U1Xq)CFa$'CF1X )A3/7FMM"Q%() qTS[a$'CFAhmmo 5b%"4"45"S'!%(2,5!&q" 9A)!T2&0+q1A1c&J#.##5(+K(8A(*AFMM'!Q-89 "!HRL%a.",k1-=q"AC*c1$'$4$&Agam4'5* 5U1XFGc!fd#3q6{aQA1v|FU*V Jrm   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        |      }|st        |      r|j                  d      } n d d d        |S # 1 sw Y   |S xY w)Nr   )open_f2py_module_name_match_f2py_user_module_name_matchgroup)sourcer   rq  linems        rl   rO   rO     se    D	f  	D'-A/5wwv	 K Ks   A AAc           	          g }| d   D ]_  }|d   D ]U  }|j                  d      s|j                  |j                  d      j                         D cg c]	  }d|vs| c}       W a |S c c}w )NrM  use__)rg   r  r  )pymodall_usesinnermodblockr  s        rl   rb   rb     sz    Hv Zf 	ZH||E"HLL,?,D,D,F Xq$VW- XY	ZZ O !Ys   	A,A,c                 f   g }i }|j                         D ]I  \  }}|j                         D 	ci c]  \  }}	|j                         |	 }
}}	|
||j                         <   K |j                         D ]  \  }}|| vri | |<   |j                         D ]  \  }}	|	|v rV|| |   v rt        d|d|d| |   |   d|	d	       |	| |   |<   |rt        d|d|d|	d	       |j                  |	       `|sct	        d
|d|d|	d|	dt        |j                               d         | |fS c c}	}w )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.
    z	Warning: redefinition of {'z':{'z':'z'->'z'}}
z
	Mapping "z(kind=z)" to "z"
z	Ignoring map {'z'}}: 'z' must be in rd  )itemslowerr\   rm  r   r  r  )
f2cmap_allnew_mapc2py_mapre   f2cmap_mappednew_map_lowerr  d1r  v1d1_lowers              rl   rc   rc     sB   L MM ,213<vr2BHHJN<<#+aggi , $$& 2JJqMhhj 	FBX~A&b*Q-"3R9 %'
1b!1b"MN$$R(b"b$x}}*?A		, }$$3 =s   D-)r   r   )ry  )F)__doc__pprintrh   r	  r  	functoolsr   r!  r   ry  r   r   r   __all__versionf2py_versionr^   rf   rp   r   r\   r
   rx   r{   r"   r    r!   rL   rJ   rK   r   r   rH   r#   r;   r.   r   r   r,   r@   rS   rW   rR   rU   r'   r>   r=   r$   r-   rT   rX   r   rV   r   r   r   rI   r   r   rC   rB   r*   r+   rN   rP   ra   r   r   rG   r<   rA   r?   r%   r&   rM   r   rQ   r   rD   r)   r   rF   r5   r6   r9   r4   r8   r0   r  r2   r:   r1   r7   r/   r-  r0  r3  r3   rE   r   rF  r   r   r   rN  rQ  r   r   rU  rX  	ExceptionrZ  r`   rY   r[   rZ   r(   r   r  r   r   r   r   r   r  r   r   r   r  r_   r]   r   r	   compileImatchr  r  rO   rb   rc   r   rm   rl   <module>r     s=  	  
 	      < "" }}
	
"

;C?7=9@6B@
>>;6
 !!!! !!@
!
"
"
"
"
!
!
!
!
B9 9;E=8
.:2					54
+I
?K9$L*E"(,+0/.*//0 k>>|]MZZ!#3"$5"$5#%7>%	.		 	 21)<4 ') $N/:2 "/7
&:   ;z %"**%M%'TT++05 )rzz +=>@dd DDIE 
C%rm   