
    W^gi                     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
 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^dV Z_eQdWeRdXeSdYeTdZeWd[eVd\eLd]e[d^e]d_e^d`e_daiZ`db Zadc Zbdd Zcde Zddf Zedg Zfdh Zgdi Zhdj Zidk Zjdl Zkdm Zldn Zm G do dpen      Zo G dq dr      Zpds Zqdt Zrdu Zsdv Ztdw ZuddxZvdy Zwi fdzZxd{ 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   )__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iscstyledirective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    i/var/www/python.lazyprojects.co.uk/rdoDiscordBot/venv/lib/python3.12/site-packages/numpy/f2py/auxfuncs.pyr]   r]   <   s'    {{9a 

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


  var = z
  Message: 
)ro  ri  )rp  rt   ro  s      rn   __call__zthrow_error.__call__a  s    47Coro   N)rj  rk  rl  rq  rt  r   ro   rn   ra   ra   \  s    ro   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 rangerO  appendevaljoinfl1l2is       rn   rZ   rZ   f  sX    B3q6]r1aj(
		(a.!  2w||B/011ro   c                      dg }}t        t        |             D ]  }d|||fz  }|j                  d|z           t        |ddj	                  |            S )Nrv  rw  rx  r   z or ry  r~  s       rn   r\   r\   n  sW    B3q6]r1aj(
		(a.!  2v{{2/00ro   c                     t        d      S )Nzlambda v,f=f:not f(v))r|  )r  s    rn   r[   r[   v  s    '((ro   c                 8    	 | d   d   dk(  S # t         $ r Y yw xY w)Nr   fortranname r   r   r   s    rn   r(   r(   z  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     rn   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 `'''`: rs  )ri   r   
isinstancestrlistrO  reprr   )r   	blocknamecommentcounterrs        rn   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 )Nr  r  r   s    rn   r   r     s    T?33ro   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 )Nr  r   )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   r{  r}  )
r   cb_mapr  r  	arg_types
arg_types2nrt   ctype
proto_argss
             rn   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
ro   c                     t        | d      S )Nusercoder  r   s    rn   r   r     s    T:..ro   c                     t        | dd      S )Nr  r   )r  r  r   s    rn   r   r     s    T:q99ro   c                     t        | d      S )Nr  r  r   s    rn   r   r     s    T=11ro   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)r{  )r   sortargsr   r   s       rn   getargsr    s    dH~F|*%9OOA& & H$OOA& 
 > F|H>ro   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  )ri   r	  r/   r{  )r   r  r   r   auxvarss        rn   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     rn   r   r     sI    t#AG}'M4<' !%%a..ro   c                 N    dt        |       z
  dz
  dz  }d|dz  d| d|dz  dS )NP         z/*r    z*/rN  )r   lns     rn   r   r     s.    
s4y.1
	"B#XtR#X66ro   c                 P    t        | t              rt        t        fd| g       S | gS )Nc                     |  ||      z   S r   r   )xyr  s      rn   <lambda>zflatlist.<locals>.<lambda>  s    q1Q4xro   )r  r  r   flatlist)lsts    rn   r  r    s%    #tX7bAA5Lro   c                 $    | r| d   dk(  r| d d S | S )Nr   r  r   )r  s    rn   r`   r`     s    QrUc\"vHro   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	  r}  r  )r  r   
defaultsep_mr  seps         rn   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  r{  dict)rdarr   r  k1s        rn   r
   r
   2  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) * Iro   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^   r{  r  typesFunctionTyper   r  rO  )rulesr   rt   retr  rrresr  r  r  r  s              rn   r   r   O  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 Jro   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   r  linems        rn   rP   rP     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 )Nr]  use__)ri   r  r	  )pymodall_usesinnermodblockr  s        rn   rc   rc     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 rs  )itemsr  r]   r{  r   r  r	  )
f2cmap_allnew_mapc2py_maprg   f2cmap_mappednew_map_lowerr  d1r  v1d1_lowers              rn   rd   rd     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__pprintrj   r  r  	functoolsr   r  r   r   r   __all__versionf2py_versionr_   rh   rr   r   r]   r	   rz   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   r#   r5   r6   r9   r4   r8   r0   r*  r2   r:   r1   r7   r/   r8  r;  r>  r3   rE   rF   r   rV  r   r   r   re   r`  r   r   rd  rg  	Exceptionri  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   ro   rn   <module>r     sE  	  
 	     : "" }}
	
"

;C?7=9@6B@
>>;6
 !!!! !!@
!
"
"
"
"
!
!
!
!
B9 9;E=8
.:2					54
+I
?K9K
$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%ro   