
    ~OdX                        d 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 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" Z-d# Z.d$ Z/d% Z0d& Z1d' Z2d( Z3d) Z4d* Z5d+ Z6d, Z7d- Z8d. Z9d/ Z:d0 Z;d1 Z<d2 Z=d3 Z>d4 Z?d5 Z@d6 ZAd7 ZBd8 ZCd9 ZDd: ZEd; ZFd< ZGd= ZHd> ZId? ZJd@ ZKdA ZLdB ZMdC ZNdD ZOdE ZPdF ZQdG ZRdH ZSdI ZTdJ ZUdK ZVdL ZWdM ZXdN ZYdO ZZdP Z[dQ Z\dR Z]dS Z^ePdTeQdUeRdVeSdWeVdXeUdYeMdZeZd[e\d\e]d]e^d^iZ_d_ Z`d` Zada Zbdb Zcdc Zddd Zede Zfdf Zgdg Zhdh Zidi Zjdj Zk G dk dlel          Zm G dm dn          Zndo Zodp Zpdq Zqdr Zrds ZsddtZtdu Zui fdvZvdw Zwdx Zxdy Zydz Zzd{ Z{d| Z|d} Z}d~ Z~d ZddZd Zi fdZdS )aW  

Auxiliary functions for f2py2e.

Copyright 1999,2000 Pearu Peterson all rights reserved,
Pearu Peterson <pearu@ioc.ee>
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.
$Date: 2005/07/24 19:01:55 $
Pearu Peterson

    N)reduce   )__version__)cfuncs)X
applyrules	debugcapi
dictappenderrmessgentitlegetargs2getcallprotoargumentgetcallstatementgetfortrannamegetpymethoddef
getrestdocgetusercodegetusercode1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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_valuec                 ~    t                               dd          r!t          j                            |            d S d S )Nverboser   )optionsgetsysstdoutwrite)ts    3lib/python3.11/site-packages/numpy/f2py/auxfuncs.pyrY   rY   A   s>    {{9a   
     c                     dt           v S )Ncapi)debugoptionsvars    rg   r   r   F   s    \!!rh   c                 B    d| v o| d         dk    ot          |            S Ntypespec	characterr'   rl   s    rg   _ischaracterrs   J   0     ZK!? #rh   c                 B    d| v o| d         dk    ot          |            S ro   rr   rl   s    rg   	_isstringrv   O   rt   rh   c                 (    t          |           od| vS Ncharselectorrs   rl   s    rg   r    r    T   s    :s!::rh   c                 @    t          |           ot          |            S Nr    r   rl   s    rg   r   r   X   s    (--Bgcll2BBrh   c                 >    t          |           ot          |           S r|   r}   rl   s    rg   r   r   \   s    (-->'#,,>rh   c                 (    t          |           od| v S rx   rz   rl   s    rg   rJ   rJ   `   s    63!66rh   c                 @    t          |           ot          |            S r|   rJ   r   rl   s    rg   rH   rH   d   s    "3''<,<<rh   c                 >    t          |           ot          |           S r|   r   rl   s    rg   rI   rI   h   s    "3''8GCLL8rh   c                 D    t          |           o| d         d         dk    S )N	dimensionz(*))rI   rl   s    rg   r   r   l   s&     ?#k"22"6%"??rh   c                 *    d| v ot          |            S Nr   rr   rl   s    rg   r   r   r   s    #5joo"55rh   c                 ^    t          |           pt          |           pt          |            S r|   )r   rH   r'   rl   s    rg   rF   rF   v   s'    @@CAArh   c                 N    t          |           o|                     d          dv S Nrp   )complexzdouble complexrF   rb   rl   s    rg   r!   r!   z   s,    C== @77:"??@rh   c                 R    t          |           o|                     d          dk    S )Nrp   logicalr   rl   s    rg   r9   r9      $    C===SWWZ00I==rh   c                 R    t          |           o|                     d          dk    S )Nrp   integerr   rl   s    rg   r,   r,      r   rh   c                 R    t          |           o|                     d          dk    S )Nrp   realr   rl   s    rg   isrealr      s$    C==:SWWZ00F::rh   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KeyErrorrl   s    rg   get_kindr      sq    >"3''   	~&v.... 	 	 	DDD	s     
>+>
:>:>c                 z    |                      d          dk    o"t          |           dk    ot          |            S Nrp   r   1)rb   r   r   rl   s    rg   r*   r*      s?    77:)+ 6SMMS 6)0%56rh   c                 |    t          |           sdS |                     d          dvrdS t          |           dk    S )Nr   rp   r   r   8rF   rb   r   rl   s    rg   r>   r>      sC    C== q
wwz"888qC==Crh   c                     t          |           sdS |                     d          dk    rdS t          |           dk    S )Nr   rp   r   -1r   rl   s    rg   rP   rP      B    C== q
wwzi''qC==D  rh   c                     t          |           sdS |                     d          dk    rdS t          |           dk    S )Nr   rp   r   -2r   rl   s    rg   rT   rT      r   rh   c                     t          |           sdS |                     d          dk    rdS t          |           dk    S )Nr   rp   r   -4r   rl   s    rg   rO   rO      r   rh   c                     t          |           sdS |                     d          dk    rdS t          |           dk    S )Nr   rp   r   -8r   rl   s    rg   rR   rR      r   rh   c                     t          |           sdS |                     d          dk    sdS t          |           dk    S )Nr   rp   r   r   r   rl   s    rg   r%   r%      sB    C== q77:&((qC==Crh   c                     t          |           sdS |                     d          dk    sdS t          |           dk    S )Nr   rp   r   16r   rl   s    rg   r<   r<      sB    C== q77:&((qC==D  rh   c                 J    t          |           sdS t          |           dk    S )Nr   32)r!   r   rl   s    rg   r;   r;      s&    S>> qC==D  rh   c                 N    t          |           o|                     d          dv S r   )r   rb   rl   s    rg   r"   r"      s,    3<< @77:"??@rh   c                 x    t          |           o+|                     d          dk    ot          |           dk    S r   r   rb   r   rl   s    rg   r+   r+      s;    3<< !CGGJ//9< !SMMS !rh   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrp   r   r   r   rl   s    rg   rQ   rQ      <    3<< "CGGJ//3II "SMMT!"rh   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrp   r   r   r   rl   s    rg   rU   rU      r   rh   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrp   r   r   r   rl   s    rg   isunsignedarrayr      r   rh   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrp   r   r   r   rl   s    rg   rS   rS      r   rh   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrp   r   r   r   rl   s    rg   issigned_chararrayr      <    3<< !CGGJ//3II !SMMS !rh   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrp   r   2r   rl   s    rg   issigned_shortarrayr      r   rh   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrp   r   4r   rl   s    rg   issigned_arrayr      r   rh   c                 t    t          |           o)|                     d          dv ot          |           dk    S )Nrp   r   r   r   rl   s    rg   rG   rG     r   rh   c                     d| v o	d| d         v S )Nattrspecallocatable rl   s    rg   r   r   
  s    A#j/!AArh   c                 *    d| vpt          |            S r   )rH   rl   s    rg   	ismutabler     s    3&7(3--88rh   c                 
    d| v S )N
modulenamer   routs    rg   rA   rA     s    4rh   c                 "    d| v od| d         k    S )Nblockmoduler   r   s    rg   r@   r@     s    d?8x4=88rh   c                 "    d| v od| d         k    S )Nr   functionr   r   s    rg   r(   r(     s    d?:zT']::rh   c                 p    t          |           rdS t          ot          |           ot          |            S Nr   )r.   	wrapfuncsr(   r'   r   s    rg   r)   r)     s:    $ qDD))D:d3C3C/CDrh   c                 "    d| v od| d         k    S )Nr   
subroutiner   r   s    rg   rL   rL   $  s    d?<|tG}<<rh   c                 `    t          |           rdS t          |           ot          |           S r   )r.   rL   hasassumedshaper   s    rg   rM   rM   (  s2    $ q7/$"7"77rh   c                 2    d|                      dg           v S )Nvaluer   rb   rl   s    rg   r^   r^   -  s    cggj"----rh   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      rg   r   r   1  s    xx!"" t&\  f!!!R((,,["== 	 	ACxx*.&'ttt 	 5rh   c                 >    t          |           pt          |           S r|   )rA   r   r   s    rg   requiresf90wrapperr   <  s    4  9OD$9$99rh   c                 >    t          |           pt          |           S r|   )r(   rL   r   s    rg   rE   rE   @  s    d1|D111rh   c                     t          |           sdS d| v r	| d         }n| d         }|| d         v rt          | d         |                   S dS Nr   resultnamer   )r(   r9   r   r   s     rg   r:   r:   D  `    d q4NLDLfa)))1rh   c                     t          |           sdS d| v r	| d         }n| d         }|| d         v rt          | d         |                   S dS r   )r(   r>   r   s     rg   r?   r?   P  s`    d q4NLDL4<?+++1rh   c                     t          |           sdS d| v r	| d         }n| d         }|| d         v rt          | d         |                   S dS r   )r(   r<   r   s     rg   r=   r=   \  s`    d q4NLDLT&\!_---1rh   c                     t          |           sdS d| v r	| d         }n| d         }|| d         v rt          | d         |                   S dS r   )r(   r!   r   s     rg   r#   r#   h  r   rh   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#   rY   r   s    rg   r$   r$   t  s9     	 H 	I 	I 	I q1rh   c                     t          |           sdS d| v r	| d         }n| d         }|| d         v rt          | d         |                   S dS r   )r(   rH   r   s     rg   rK   rK     s`    d q4NLDLVQ(((1rh   c                     d| v o| d         S )N	externalsr   r   s    rg   r   r     s    $44#44rh   c                     d| v o	d| d         v S )Nf2pyenhancements
threadsafer   r   s    rg   rN   rN     s"    % 44 2334rh   c                     d| v o| d         S )Nr   r   r   s    rg   hasvariablesr     s    T>*d6l*rh   c                 P    d| v o"d| d         v od| d         vot          |           S )Nr   optionalrequired)r6   rl   s    rg   rB   rB     sB    # .*J"? .c*o-I3CC3H3HIrh   c                     d| v o	d| d         v S )Nr   externalr   rl   s    rg   r'   r'     s    >s:!>>rh   c                 @    t          |            ot          |           S r|   )rB   r6   rl   s    rg   rD   rD     s    #8#3C#8#88rh   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   rl   s    rg   r3   r3     s    sqXqCM!!qs8}qHq#h-q#h-q1rh   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   rl   s    rg   r4   r4     sg    O KCM!9 "%s8}$K*.c(m*CK#h-'K,5S],JLrh   c                 2    d|                      dg           v S )Nr  r   r   rl   s    rg   r7   r7         CGGHb))))rh   c                     d| v oAd| d         v p7d| d         v o-d| d         vo# t          t          t                    |            S )Nr   r   r  r  )rX   r4   r5   rl   s    rg   r2   r2     sd    O D3x=!8 "Cc(m# BCM(A B;T.*:;;C@@@Erh   c                 "    t          |            S r|   )r2   rl   s    rg   r6   r6     s    S!!!!rh   c                 2    d|                      dg           v S )Ncr   r   rl   s    rg   r.   r.     s    #''(B''''rh   c                 2    d|                      dg           v S )Ncacher   r   rl   s    rg   isintent_cacher    s    cggh++++rh   c                 2    d|                      dg           v S )Ncopyr   r   rl   s    rg   r0   r0     s    SWWXr****rh   c                 2    d|                      dg           v S )N	overwriter   r   rl   s    rg   r8   r8         #''(B////rh   c                 2    d|                      dg           v S )Ncallbackr   r   rl   s    rg   r/   r/         2....rh   c                 2    d|                      dg           v S )Nr  r   r   rl   s    rg   r5   r5     s    "----rh   c                 2    d|                      dg           v S )Nauxr   r   rl   s    rg   r-   r-     r  rh   c                 2    d|                      dg           v S )Naligned4r   r   rl   s    rg   isintent_aligned4r    r  rh   c                 2    d|                      dg           v S )Naligned8r   r   rl   s    rg   isintent_aligned8r     r  rh   c                 2    d|                      dg           v S )N	aligned16r   r   rl   s    rg   isintent_aligned16r#    r  rh   	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   rl   s    rg   rC   rC     s    =c*o!==rh   c                 
    d| v S )N=r   rl   s    rg   r   r     s    #:rh   c                 D    t          |           sdS | d         d         dv S )Nr   r2  )"')r   rl   s    rg   hasinitvalueasstringr6  	  s*     qs8A;*$$rh   c                 
    d| v S )Nnoter   rl   s    rg   r   r     s    S=rh   c                     t          |           sdS d| v r	| d         }n| d         }|| d         v rt          | d         |                   S dS r   )r(   r   r   s     rg   r   r     s`    d q4NLDLtF|A'''1rh   c                 
    d| v S )Ncommonr   r   s    rg   r   r     s    trh   c                     t          |           rdS t          |           r| d         D ]}t          |          r dS dS )Nr   bodyr   )r   r   containscommon)r   bs     rg   r>  r>  #  sW     qt}} f 	 	Aa   qq1rh   c                     t          |           rdS t          |           sdS | d         D ]}t          |          r dS dS )Nr   r   r=  )r@   r   containsmodule)r   r?  s     rg   rA  rA  -  s\     q5>> q6]  ! 	11	1rh   c                 
    d| v S )Nr=  r   r   s    rg   r   r   8  s    T>rh   c                 $    t          |           d uS r|   )r   r   s    rg   r   r   <  s    D!!--rh   c                     dS )Nr   r   rl   s    rg   istruerE  @      1rh   c                     dS r   r   rl   s    rg   isfalserH  D  rF  rh   c                       e Zd ZdS )	F2PYErrorN)__name__
__module____qualname__r   rh   rg   rJ  rJ  H  s        Drh   rJ  c                       e Zd Zd Zd ZdS )r]   c                     || _         d S r|   )mess)selfrP  s     rg   __init__zthrow_error.__init__N  s    			rh   c                 <    d|d| j         d}t          |          )Nz


  var = z
  Message: 
)rP  rJ  )rQ  rm   rP  s      rg   __call__zthrow_error.__call__Q  s$     47CCCoorh   N)rK  rL  rM  rR  rU  r   rh   rg   r]   r]   L  s2              rh   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       rg   rV   rV   V  su    B3q66]] " "r1aj(
		(a.!!!!222w||B///0111rh   c                      dg }}t          t          |                     D ]"}d|||fz  }|                    d|z             #t          |dd                    |                    S )NrW  rX  rY  r   z or rZ  r`  s       rg   rX   rX   ^  sr    B3q66]] " "r1aj(
		(a.!!!!222v{{2/000rh   c                      t          d          S )Nzlambda v,f=f:not f(v))r^  )ra  s    rg   rW   rW   f  s    '(((rh   c                 J    	 | d         d         dk    S # t           $ r Y dS w xY w)Nr   fortranname r   r   r   s    rg   r&   r&   j  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   rh  ri  z"Failed to use fortranname from %s
r   )r   r
   )r   r   s     rg   r   r   q  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 `'''`: rT  )rb   r   
isinstancestrlistr\  reprr
   )r   	blocknamecommentcounterrs        rg   getmultilineblockrv    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rv  r   s    rg   r   r     s    T?333rh   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   )rs  z<warning: callstatement is defined without callprotoargument
r   )getctypezchar*size_tr   r   _typedefr   ,void)rv  r   rY   	capi_mapsr|  rV   rK   rW   r)   extendr/   r.   rX   rF   r!   rH   r^   r   rI   r]  r_  )
r   cb_mapru  r|  	arg_types
arg_types2nrm   ctype
proto_argss
             rg   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 
rh   c                 "    t          | d          S )Nusercodery  r   s    rg   r   r     s    T:...rh   c                 &    t          | dd          S )Nr  r   )rt  ry  r   s    rg   r   r     s    T:q9999rh   c                 "    t          | d          S )Npymethoddefry  r   s    rg   r   r     s    T=111rh   c                     g g }}d| v rW| d         }d| v rC| d         D ]}||v r|                     |           |D ]}||vr|                     |           n| d         }||fS )Nr   sortvars)r]  )r   sortargsr   r   s       rg   getargsr    s    dH~~F|*% ' '99OOA&&& ' 'H$$OOA&&&' F|H>rh   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-   ).0r   r   r   s     rg   
<listcomp>zgetargs2.<locals>.<listcomp>  s@     " " "Qd6l1o1N1N "D==  ==rh   r   r  )rb   keysr]  )r   r  auxvarsr   r   s   `   @rg   r   r     s    &"--NHd" " " " "$v,++-- " " "GT>DTj! 	# 	#ADyy""" 	# 	#A  """	# T&\)>rh   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     rg   r   r     sT    t##tAG}''M4<' !%%a...rh   c                 V    dt          |           z
  dz
  dz  }d|dz  d| d|dz  dS )NP         z/*r    z*/)r\  )r   lns     rg   r   r     s>    
s4yy.1
	"BB#XXXtttR#XXX66rh   c                 d    t          | t                    rt          t          fd| g           S | gS )Nc                     |  ||          z   S r|   r   )xyra  s      rg   <lambda>zflatlist.<locals>.<lambda>  s    q11Q44x rh   )rn  rp  r   flatlist)lsts    rg   r  r    s7    #t BX777bAAA5Lrh   c                 6    | r| d         dk    r
| d d         S | S )Nr   r  r   )ss    rg   r\   r\   	  s(     QrUc\\"vHrh   ri  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   rZ   )r  _m
defaultsepro  s     rg   r  zreplace.<locals>.<listcomp>  s%    999R,,999rh   c                 2    g | ]}t          |          S r   r  )r  r  r   r  s     rg   r  zreplace.<locals>.<listcomp>  s%    999rAz**999rh   r  separatorsforz#%s#)rn  rp  r  rZ   r_  r  )ro  r   r  r  seps   ```  rg   rZ   rZ     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Jrh   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  )rn  rp  r	   r  ro  r]  dict)rdarr   r  k1s        rg   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Irh   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  	supertextri  zapplyrules: ignoring rule %s.
r   )rn  rp  r   r	   r   append_needsr  ro  rZ   r]  r  typesFunctionTyper
   rq  r\  )rulesr   rm   retru  rrresr  rd  r  r  s              rg   r   r   ?  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Jrh   )r   r   )ri  )__doc__pprintrc   r  	functoolsr   ri  r   r   __all__versionf2py_versionstderrre   r
   r[   ra   rk   r   rY   r   rs   rv   r    r   r   rJ   rH   rI   r   r   rF   r!   r9   r,   r   r   r*   r>   rP   rT   rO   rR   r%   r<   r;   r"   r+   rQ   rU   r   rS   r   r   r   rG   r   r   rA   r@   r(   r)   rL   rM   r^   r   r   rE   r:   r?   r=   r#   r$   rK   r   rN   r   rB   r'   rD   r3   r4   r7   r2   r6   r.   r  r0   r8   r/   r5   r-   r  r   r#  r1   rC   r   r6  r   r   r   r>  rA  r   r   rE  rH  	ExceptionrJ  r]   rV   rX   rW   r&   r   rv  r   r   r   r   r   r  r   r   r   r  r\   rZ   r	   r   r   rh   rg   <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
? ? ?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
       &  :   ; ; ; ; ; ;rh   