
    ,Vhh                     ^   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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
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                 p    t         j                  dd      r t        j                  j	                  |        y y )Nverboser   )optionsgetsysstdoutwrite)ts    C/home/dcms/DCMS/lib/python3.12/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                 :    d| v xr | d   dk(  xr t        |        S Ntypespec	characterr)   rr   s    rm   _ischaracterry   F   .     ZK!? #rn   c                 :    d| v xr | d   dk(  xr t        |        S ru   rx   rr   s    rm   	_isstringr|   K   rz   rn   c                 $    t        |       xr d| vS Ncharselectorry   rr   s    rm   r"   r"   P   s    :s!::rn   c                 4    t        |       xr t        |        S Nr"   r   rr   s    rm   r    r    T   s    (-Bgcl2BBrn   c                 2    t        |       xr t        |       S r   r   rr   s    rm   r!   r!   X   s    (->'#,>rn   c                 $    t        |       xr d| v S r~   r   rr   s    rm   rM   rM   \   s    63!66rn   c                 4    t        |       xr t        |        S r   rM   r   rr   s    rm   rK   rK   `   s    "3'<,<<rn   c                 2    t        |       xr t        |       S r   r   rr   s    rm   rL   rL   d   s    "3'8GCL8rn   c                 2    t        |       xr | d   d   dk(  S )N	dimensionz(*))rL   rr   s    rm   r   r   h   s#     ?#k"22"6%"??rn   c                 &    d| v xr t        |        S Nr   rx   rr   s    rm   r   r   n   s    #5jo"55rn   c                 N    t        |       xs t        |       xs t        |        S r   )r   rK   r)   rr   s    rm   rI   rI   r   s!    @@CAArn   c                 B    t        |       xr | j                  d      dv S Nrv   )complexzdouble complexrI   rh   rr   s    rm   r#   r#   v   s'    C= @77:"??@rn   c                 D    t        |       xr | j                  d      dk(  S )Nrv   logicalr   rr   s    rm   r;   r;   {       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rI   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   rT   rT      /    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   rX   rX      r   rn   c                 `    t        |       sy| j                  d      dk7  ryt        |       dk(  S )Nr   rv   r   -4r   rr   s    rm   rS   rS      r   rn   c                 `    t        |       sy| j                  d      dk7  ryt        |       dk(  S )Nr   rv   r   -8r   rr   s    rm   rV   rV      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   rU   rU      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   rY   rY      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   rW   rW      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   rJ   rJ     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   )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 xr d| d   k(  S )Nblockmoduler   r   s    rm   rB   rB     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   )r0   	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   rO   rO      s    d?<|tG}<<rn   c                 J    t        |       ryt        |       xr t        |       S r   )r0   rO   hasassumedshaper   s    rm   rQ   rQ   $  s"    $7/$"77rn   c                 *    d| j                  dg       v S )Nvaluer   rh   rr   s    rm   rb   rb   )  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   -  sl    xx!"&\ f!!!R(,,["= 	ACx*.&'	
 rn   c                 2    t        |       xs t        |       S r   )rC   r   r   s    rm   requiresf90wrapperr   8  s    4 9OD$99rn   c                 2    t        |       xs t        |       S r   )r*   rO   r   s    rm   rH   rH   <  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   rA   rA   L  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?   X  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%   d  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&   p  s!     H 	I rn   c                 j    t        |       syd| v r| d   }n| d   }|| d   v rt        | d   |         S yr   )r*   rK   r   s     rm   rN   rN   ~  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   rR   rR     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)r8   rr   s    rm   rD   rD     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     9A{a9s   r   )keysanyrefindall)rs   
dimpatternvs      rm   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   rr   s    rm   rG   rG     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   r5   r5     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   r6   r6     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   r9   r9         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\   r6   r7   rr   s    rm   r4   r4     s^    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                 *    d| j                  dg       v S )Ncr  r   rr   s    rm   r0   r0     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   r2   r2     s    SWWXr***rn   c                 *    d| j                  dg       v S )N	overwriter  r   rr   s    rm   r:   r:         #''(B///rn   c                 *    d| j                  dg       v S )Ncallbackr  r   rr   s    rm   r1   r1         2...rn   c                 *    d| j                  dg       v S )Nr  r  r   rr   s    rm   r7   r7     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   rE   rE     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   rF   rF     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   containscommon)r   bs     rm   rT  rT  /  s6    t}f 	Aa 	 rn   c                 b    t        |       ryt        |       sy| d   D ]  }t        |      s y y)Nr   r   rS  )rB   r   containsmodule)r   rU  s     rm   rW  rW  9  s9    5>6] ! rn   c                 
    d| v S )NrS  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                      y)Nr   r   rr   s    rm   istruer[  L      rn   c                      yr   r   rr   s    rm   isfalser^  P  r\  rn   c                       e Zd Zy)	F2PYErrorN)__name__
__module____qualname__r   rn   rm   r`  r`  T  s    rn   r`  c                       e Zd Zd Zd Zy)ra   c                     || _         y r   )mess)selfrf  s     rm   __init__zthrow_error.__init__Z  s	    	rn   c                 >    d|d| j                   d}t        |      )Nz


  var = z
  Message: 
)rf  r`  )rg  rs   rf  s      rm   __call__zthrow_error.__call__]  s    47Corn   N)ra  rb  rc  rh  rk  r   rn   rm   ra   ra   X  s    rn   ra   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   rZ   rZ   b  s]    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 )Nrm  rn  ro  r   z or rp  ru  s       rm   r\   r\   j  s\    B3q6] "r1aj(
		(a.!" 2v{{2/00rn   c                     t        d      S )Nzlambda v,f=f:not f(v))rs  )rv  s    rm   r[   r[   r  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(   v  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 `'''`: rj  )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  rZ   rN   r[   r+   extendr1   r0   r\   rI   r#   rK   rb   r   rL   rr  rt  )
r   cb_mapr  r  	arg_types
arg_types2nrs   ctype
proto_argss
             rm   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
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)rr  )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/   rr  )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yrv  s      rm   <lambda>zflatlist.<locals>.<lambda>  s    q1Q4x rn   )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  rt  r  )r  r   
defaultsep_mr  seps         rm   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  rr  dict)rdarr   r  k1s        rm   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)* 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^   rr  r  typesFunctionTyper   r  rE  )rulesr   rs   retr  rrresr  ry  r  r  s              rm   r	   r	   K  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 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   rv  linems        rm   rP   rP     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 )NrS  use__)rh   r  r  )pymodall_usesinnermodblockr  s        rm   rc   rc     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 rj  )itemslowerr]   rr  r   r  r  )
f2cmap_allnew_mapc2py_maprf   f2cmap_mappednew_map_lowerr  d1r  v1d1_lowers              rm   rd   rd     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   )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/   r.  r1  r4  r3   rE   rF   r   rL  r   r   r   rT  rW  r   r   r[  r^  	Exceptionr`  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     sB  	  
 	      : "" }}
	
"

;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   