
    Ngg                     "   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        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# Z0d$ Z1d% Z2d& Z3d' Z4d( Z5d) Z6d* Z7d+ Z8d, Z9d- Z:d. Z;d/ Z<d0 Z=d1 Z>d2 Z?d3 Z@d4 ZAd5 ZBd6 ZCd7 ZDd8 ZEd9 ZFd: ZGd; ZHd< ZId= ZJd> ZKd? ZLd@ ZMdA ZNdB ZOdC ZPdD ZQdE ZRdF ZSdG ZTdH ZUdI ZVdJ ZWdK ZXdL ZYdM ZZdN Z[dO Z\dP Z]dQ Z^dR Z_dS Z`dT ZadU ZbeTdVeUdWeVdXeWdYeZdZeYd[ePd\e^d]e`d^ead_ebd`iZcda Zddb Zedc Zfdd Zgde Zhdf Zidg Zjdh Zkdi Zldj Zmdk Zndl Zo G dm dnep          Zq G do dp          Zrdq Zsdr Ztds Zudt Zvdu ZwddvZxdw Zyi fdxZzdy Z{dz Z|d{ Z}d| Z~d} Zd~ Zd Zd Zd ZddZd Zi fdZ ej        dej                  j        Z ej        dej                  j        Zd Zd ZddZdS )a9  
Auxiliary functions for f2py2e.

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

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


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

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

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

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

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

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

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



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