
    gh                     R   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
 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% Z.d& Z/d' Z0d( Z1d) Z2d* Z3d+ Z4d, Z5d- Z6d. Z7d/ Z8d0 Z9d1 Z:d2 Z;d3 Z<d4 Z=d5 Z>d6 Z?d7 Z@d8 ZAd9 ZBd: ZCd; ZDd< ZEd= ZFd> ZGd? ZHd@ ZIdA ZJdB ZKdC ZLdD ZMdE ZNdF ZOdG ZPdH ZQdI ZRdJ ZSdK ZTdL ZUdM ZVdN ZWdO ZXdP ZYdQ ZZdR Z[dS Z\dT Z]dU Z^ePdVeQdWeRdXeSdYeVdZeUd[eLd\eZd]e\d^e]d_e^d`iZ_da Z`db Zadc Zbdd Zcde Zddf Zedg Zfdh Zgdi Zhdj Zidk Zjdl Zkdm Zl G dn doem      Zn G dp dq      Zodr Zpds Zqdt Zrdu Zsdv ZtddwZudx Zvi fdyZwdz Zxd{ Zyd| Zzd} Z{d~ Z|d Z}d Z~d Zd 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   )__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_dictcontainscommonc                 p    t         j                  dd      r t        j                  j	                  |        y y )Nverboser   )optionsgetsysstdoutwrite)ts    H/var/www/openai/venv/lib/python3.12/site-packages/numpy/f2py/auxfuncs.pyr\   r\   <   s'    {{9a 

 !    c                     dt         v S )Ncapi)debugoptionsvars    rm   r	   r	   A   s    \!!rn   c                 :    d| v xr | d   dk(  xr t        |        S Ntypespec	characterr(   rr   s    rm   _ischaracterry   E   .     ZK!? #rn   c                 :    d| v xr | d   dk(  xr t        |        S ru   rx   rr   s    rm   	_isstringr|   J   rz   rn   c                 $    t        |       xr d| vS Ncharselectorry   rr   s    rm   r!   r!   O   s    :s!::rn   c                 4    t        |       xr t        |        S Nr!   r   rr   s    rm   r   r   S   s    (-Bgcl2BBrn   c                 2    t        |       xr t        |       S r   r   rr   s    rm   r    r    W   s    (->'#,>rn   c                 $    t        |       xr d| v S r~   r   rr   s    rm   rL   rL   [   s    63!66rn   c                 4    t        |       xr t        |        S r   rL   r   rr   s    rm   rJ   rJ   _   s    "3'<,<<rn   c                 2    t        |       xr t        |       S r   r   rr   s    rm   rK   rK   c   s    "3'8GCL8rn   c                 2    t        |       xr | d   d   dk(  S )N	dimensionz(*))rK   rr   s    rm   r   r   g   s#     ?#k"22"6%"??rn   c                 &    d| v xr t        |        S Nr   rx   rr   s    rm   r   r   m   s    #5jo"55rn   c                 N    t        |       xs t        |       xs t        |        S r   )r   rJ   r(   rr   s    rm   rH   rH   q   s!    @@CAArn   c                 B    t        |       xr | j                  d      dv S Nrv   )complexzdouble complexrH   rh   rr   s    rm   r"   r"   u   s'    C= @77:"??@rn   c                 D    t        |       xr | j                  d      dk(  S )Nrv   logicalr   rr   s    rm   r:   r:   z       C==SWWZ0I==rn   c                 D    t        |       xr | j                  d      dk(  S )Nrv   integerr   rr   s    rm   r-   r-   ~   r   rn   c                 D    t        |       xr | j                  d      dk(  S )Nrv   realr   rr   s    rm   isrealr      s    C=:SWWZ0F::rn   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KeyErrorrr   s    rm   get_kindr      sM    >"3'' 	~&v.. 		s    
 	//	+/+/c                 f    | j                  d      dk(  xr t        |       dk(  xr t        |        S Nrv   r   1)rh   r   r   rr   s    rm   r+   r+      s8    77:)+ 6SMS 6)0%56rn   c                 ^    t        |       sy| j                  d      dvryt        |       dk(  S )Nr   rv   r   r   8rH   rh   r   rr   s    rm   r?   r?      s0    C=
wwz"88C=Crn   c                 `    t        |       sy| j                  d      dk7  ryt        |       dk(  S )Nr   rv   r   -1r   rr   s    rm   rS   rS      /    C=
wwzi'C=D  rn   c                 `    t        |       sy| j                  d      dk7  ryt        |       dk(  S )Nr   rv   r   -2r   rr   s    rm   rW   rW      r   rn   c                 `    t        |       sy| j                  d      dk7  ryt        |       dk(  S )Nr   rv   r   -4r   rr   s    rm   rR   rR      r   rn   c                 `    t        |       sy| j                  d      dk7  ryt        |       dk(  S )Nr   rv   r   -8r   rr   s    rm   rU   rU      r   rn   c                 `    t        |       sy| j                  d      dk(  syt        |       dk(  S )Nr   rv   r   r   r   rr   s    rm   r&   r&      s/    C=77:&(C=Crn   c                 `    t        |       sy| j                  d      dk(  syt        |       dk(  S )Nr   rv   r   16r   rr   s    rm   r=   r=      s/    C=77:&(C=D  rn   c                 6    t        |       syt        |       dk(  S )Nr   32)r"   r   rr   s    rm   r<   r<      s    S>C=D  rn   c                 B    t        |       xr | j                  d      dv S r   )r   rh   rr   s    rm   r#   r#      s'    3< @77:"??@rn   c                 d    t        |       xr$ | j                  d      dk(  xr t        |       dk(  S r   r   rh   r   rr   s    rm   r,   r,      s4    3< !CGGJ/9< !SMS !rn   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nrv   r   r   r   rr   s    rm   rT   rT      5    3< "CGGJ/3II "SMT!"rn   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nrv   r   r   r   rr   s    rm   rX   rX      r   rn   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nrv   r   r   r   rr   s    rm   isunsignedarrayr      r   rn   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nrv   r   r   r   rr   s    rm   rV   rV      r   rn   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nrv   r   r   r   rr   s    rm   issigned_chararrayr      5    3< !CGGJ/3II !SMS !rn   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nrv   r   2r   rr   s    rm   issigned_shortarrayr      r   rn   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nrv   r   4r   rr   s    rm   issigned_arrayr      r   rn   c                 b    t        |       xr# | j                  d      dv xr t        |       dk(  S )Nrv   r   r   r   rr   s    rm   rI   rI      r   rn   c                     d| v xr d| d   v S )Nattrspecallocatable rr   s    rm   r   r     s    A#j/!AArn   c                 &    d| vxs t        |        S r   )rJ   rr   s    rm   	ismutabler   	  s    3&7(3-88rn   c                 
    d| v S )N
modulenamer   routs    rm   rB   rB     s    4rn   c                     d| v xr d| d   k(  S )Nblockmoduler   r   s    rm   rA   rA     s    d?8x4=88rn   c                     d| v xr d| d   k(  S )Nr   functionr   r   s    rm   r)   r)     s    d?:zT']::rn   c                 \    t        |       ryt        xr t        |       xr t        |        S Nr   )r/   	wrapfuncsr)   r(   r   s    rm   r*   r*     s*    $DD)D:d3C/CDrn   c                     d| v xr d| d   k(  S )Nr   
subroutiner   r   s    rm   rN   rN     s    d?<|tG}<<rn   c                 J    t        |       ryt        |       xr t        |       S r   )r/   rN   hasassumedshaper   s    rm   rP   rP   #  s"    $7/$"77rn   c                 *    d| j                  dg       v S )Nvaluer   rh   rr   s    rm   ra   ra   (  s    cggj"---rn   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      rm   r   r   ,  sb    xx!"&\f!!!R(,,["=ACx*.&' > 
 rn   c                 2    t        |       xs t        |       S r   )rB   r   r   s    rm   requiresf90wrapperr   7  s    4 9OD$99rn   c                 2    t        |       xs t        |       S r   )r)   rN   r   s    rm   rG   rG   ;  s    d1|D11rn   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     rm   r;   r;   ?  I    d4NLDLfa))rn   c                 j    t        |       syd| v r| d   }n| d   }|| d   v rt        | d   |         S yr   )r)   r?   r   s     rm   r@   r@   K  sI    d4NLDL4<?++rn   c                 j    t        |       syd| v r| d   }n| d   }|| d   v rt        | d   |         S yr   )r)   r=   r   s     rm   r>   r>   W  sI    d4NLDLT&\!_--rn   c                 j    t        |       syd| v r| d   }n| d   }|| d   v rt        | d   |         S yr   )r)   r"   r   s     rm   r$   r$   c  r   rn   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    rm   r%   r%   o  s!     H 	I rn   c                 j    t        |       syd| v r| d   }n| d   }|| d   v rt        | d   |         S yr   )r)   rJ   r   s     rm   rM   rM   }  sI    d4NLDLVQ((rn   c                     d| v xr | d   S )N	externalsr   r   s    rm   r   r     s    $44#44rn   c                     d| v xr d| d   v S )Nf2pyenhancements
threadsafer   r   s    rm   rQ   rQ     s"    % 44 2334rn   c                     d| v xr | d   S )Nr   r   r   s    rm   hasvariablesr     s    T>*d6l*rn   c                 H    d| v xr d| d   v xr d| d   vxr t        |       S )Nr   optionalrequired)r7   rr   s    rm   rC   rC     s?    # .*J"? .c*o-I3CC3HIrn   c                     d| v xr d| d   v S )Nr   externalr   rr   s    rm   r(   r(     s    >s:!>>rn   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     rm   	<genexpr>zgetdimension.<locals>.<genexpr>  s     9A{as   r   )keysanyrefindall)rs   
dimpatternvs      rm   r   r     s]    JSXXZ9Z997::G!BJJz1-GJJ :  Gs   Ac                 4    t        |        xr t        |       S r   )rC   r7   rr   s    rm   rF   rF     s    #8#3C#88rn   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   rr   s    rm   r4   r4     sj    sXCM!s8}H#h-#h-rn   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   rr   s    rm   r5   r5     sg    O KCM!9 "%s8}$K*.c(m*CK#h-'K,5S],JLrn   c                 *    d| j                  dg       v S )Nr  r  r   rr   s    rm   r8   r8         CGGHb)))rn   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[   r5   r6   rr   s    rm   r3   r3     s^    O D3x=!8 "Cc(m# BCM(A B;T.*:;C@@Ern   c                     t        |        S r   )r3   rr   s    rm   r7   r7     s    S!!!rn   c                 *    d| j                  dg       v S )Ncr  r   rr   s    rm   r/   r/     s    #''(B'''rn   c                 *    d| j                  dg       v S )Ncacher  r   rr   s    rm   isintent_cacher     s    cggh+++rn   c                 *    d| j                  dg       v S )Ncopyr  r   rr   s    rm   r1   r1     s    SWWXr***rn   c                 *    d| j                  dg       v S )N	overwriter  r   rr   s    rm   r9   r9         #''(B///rn   c                 *    d| j                  dg       v S )Ncallbackr  r   rr   s    rm   r0   r0         2...rn   c                 *    d| j                  dg       v S )Nr  r  r   rr   s    rm   r6   r6     s    "---rn   c                 *    d| j                  dg       v S )Nauxr  r   rr   s    rm   r.   r.     r  rn   c                 *    d| j                  dg       v S )Naligned4r  r   rr   s    rm   isintent_aligned4r.    r(  rn   c                 *    d| j                  dg       v S )Naligned8r  r   rr   s    rm   isintent_aligned8r1    r(  rn   c                 *    d| j                  dg       v S )N	aligned16r  r   rr   s    rm   isintent_aligned16r4    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 xr d| d   v S )Nr   privater   rr   s    rm   rD   rD     s    =c*o!==rn   c                 J    t        |       dk(  rd| v r| d   d   dv rd}|S d}|S )Nr   r   r   )publicrA  FTlen)rs   is_vars     rm   rE   rE     s>    
3x1}s*
OA"77 M Mrn   c                 
    d| v S )N=r   rr   s    rm   r   r     s    #:rn   c                 .    t        |       sy| d   d   dv S )Nr   rH  )"')r   rr   s    rm   hasinitvalueasstringrL    s     s8A;*$$rn   c                 
    d| v S )Nnoter   rr   s    rm   r   r     s    S=rn   c                 j    t        |       syd| v r| d   }n| d   }|| d   v rt        | d   |         S yr   )r)   r   r   s     rm   r   r     sI    d4NLDLtF|A''rn   c                 
    d| v S )Ncommonr   r   s    rm   r   r   *  s    trn   c                 `    t        |       ryt        |       r| d   D ]  }t        |      s y y)Nr   bodyr   )r   r   rd   )r   bs     rm   rd   rd   .  s1    t}fAa   rn   c                 b    t        |       ryt        |       sy| d   D ]  }t        |      s y y)Nr   r   rS  )rA   r   containsmodule)r   rT  s     rm   rV  rV  8  s4    5>6]!  rn   c                 
    d| v S )NrS  r   r   s    rm   r   r   C  s    T>rn   c                     t        |       d uS r   )r   r   s    rm   r   r   G  s    D!--rn   c                      y)Nr   r   rr   s    rm   istruerZ  K      rn   c                      yr   r   rr   s    rm   isfalser]  O  r[  rn   c                       e Zd Zy)	F2PYErrorN)__name__
__module____qualname__r   rn   rm   r_  r_  S  s    rn   r_  c                       e Zd Zd Zd Zy)r`   c                     || _         y r   )mess)selfre  s     rm   __init__zthrow_error.__init__Y  s	    	rn   c                 >    d|d| j                   d}t        |      )Nz


  var = z
  Message: 
)re  r_  )rf  rs   re  s      rm   __call__zthrow_error.__call__\  s    47Corn   N)r`  ra  rb  rg  rj  r   rn   rm   r`   r`   W  s    rn   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 rangerE  appendevaljoinfl1l2is       rm   rY   rY   a  sX    B3q6]r1aj(
		(a.!  2w||B/011rn   c                      dg }}t        t        |             D ]  }d|||fz  }|j                  d|z           t        |ddj	                  |            S )Nrl  rm  rn  r   z or ro  rt  s       rm   r[   r[   i  sW    B3q6]r1aj(
		(a.!  2v{{2/00rn   c                     t        d      S )Nzlambda v,f=f:not f(v))rr  )ru  s    rm   rZ   rZ   q  s    '((rn   c                 8    	 | d   d   dk(  S # t         $ r Y yw xY w)Nr   fortranname r   r   r   s    rm   r'   r'   u  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   r|  r}  z"Failed to use fortranname from %s
r   )r   r   )r   r   s     rm   r   r   |  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 `'''`: ri  )rh   r   
isinstancestrlistrE  reprr   )r   	blocknamecommentcounterrs        rm   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    rm   r   r     s    T?33rn   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*   extendr0   r/   r[   rH   r"   rJ   ra   r   rK   rq  rs  )
r   cb_mapr  r  	arg_types
arg_types2nrs   ctype
proto_argss
             rm   r   r     s6   $ 3Q?AK	M#zI6uu_56t<'8,-&\6l1oS!;1I
*ESME;uZh	!:;C@##C(!CKE$S)!#&!!(+' * )j0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9rn   c                     t        | d      S )Npymethoddefr  r   s    rm   r   r     s    T=11rn   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)rq  )r   sortargsr   r   s       rm   getargsr    s    dH~F|*%9OOA& & H$OOA& 
 > F|H>rn   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  )rh   r  r.   rq  )r   r  r   r   auxvarss        rm   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     rm   r   r      sI    t#AG}'M4<' !%%a..rn   c                 N    dt        |       z
  dz
  dz  }d|dz  d| d|dz  dS )NP         z/*r    z*/rD  )r   lns     rm   r   r   	  s.    
s4y.1
	"B#XtR#X66rn   c                 P    t        | t              rt        t        fd| g       S | gS )Nc                     |  ||      z   S r   r   )xyru  s      rm   <lambda>zflatlist.<locals>.<lambda>  s    q1Q4xrn   )r  r  r   flatlist)lsts    rm   r  r    s%    #tX7bAA5Lrn   c                 $    | r| d   dk(  r| d d S | S )Nr   r  r   )r  s    rm   r_   r_     s    QrUc\"vHrn   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  rs  r  )r  r   
defaultsep_mr  seps         rm   r]   r]     s    !T789qR,q99#t589SrAz*S99affhaA?);$;O$Q'CCadD!++flCHHXad^,DEC++flAaD1C   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  rq  dict)rdarr   r  k1s        rm   r
   r
   -  s4   "dAB"B 	WWYQ43;7"Q%%A1"Q%&beT*qEBqEMBqEqELLA'BqE4(beT*O+"$Q%**,B!A,.qE"I1b	 #/ !+2a5"Q% 81qEBqE) * Irn   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  	supertextr}  zapplyrules: ignoring rule %s.
r   )r  r  r   r
   r   append_needsr  r  r]   rq  r  typesFunctionTyper   r  rE  )rulesr   rs   retr  rrresr  rx  r  r  s              rm   r   r   J  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b%"4"45"S'!%(2,5!&q"A)!T2&0+q1A1c&J#.##5(+K(8A(*AFMM'!Q-8 ". "!HRL%a.",k1-=q"AC*c1$'$4$&Agam4' &* 5U1XFGc!fd#3q6{aQA1v|FU V 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        |      }|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   ru  linems        rm   rO   rO     s[    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 )NrS  use__)rh   r  r  )pymodall_usesinnermodblockr  s        rm   rb   rb     sr    HvfH||E"HLL,?,D,D,F X,Fq$VW-,F XY &  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 ri  )itemslowerr\   rq  r   r  r  )
f2cmap_allnew_mapc2py_maprf   f2cmap_mappednew_map_lowerr  d1r  v1d1_lowers              rm   rc   rc     s4   L MM213<vr2BHHJN<#+aggi  ! $$&2JJqMhhjFBX~A&b*Q-"3R9 %'
1b!1b"MN$$R(b"b$x}}*?A !	 ', }$$3 =s   D-)r   r   )r}  )F)__doc__pprintri   r
  r  	functoolsr   r}  r   r   r   __all__versionf2py_versionr^   rg   rq   r   r\   r	   ry   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   rB   rA   r)   r*   rN   rP   ra   r   r   rG   r;   r@   r>   r$   r%   rM   r   rQ   r   rC   r(   r   rF   r4   r5   r8   r3   r7   r/   r   r1   r9   r0   r6   r.   r.  r1  r4  r2   rD   rE   r   rL  r   r   r   rd   rV  r   r   rZ  r]  	Exceptionr_  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   rn   rm   <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%rn   