U
    ¸mœd¯X  ã                X   @   sÒ  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 ddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^gXZ	ej
ZejjZejZi Zg ZdZd_dY„ Zd`d„ Zdadb„ Zdcdd„ Zded „ Zdfd„ Zdgd„ ZdhdJ„ ZdidH„ ZdjdI„ Zdkd„ Zdld„ ZdmdF„ Zdnd!„ Z dod9„ Z!dpd,„ Z"dqdr„ Z#dsdt„ Z$dud*„ Z%dvd>„ Z&dwdP„ Z'dxdT„ Z(dydO„ Z)dzdR„ Z*d{d%„ Z+d|d<„ Z,d}d;„ Z-d~d"„ Z.dd+„ Z/d€dQ„ Z0d�dU„ Z1d‚dƒ„ Z2d„dS„ Z3d…d†„ Z4d‡dˆ„ Z5d‰dŠ„ Z6d‹dG„ Z7dŒd„ Z8d�dŽ„ Z9d�dA„ Z:d�d@„ Z;d‘d(„ Z<d’d)„ Z=d“dL„ Z>d”dM„ Z?d•d^„ Z@d–d—„ ZAd˜d™„ ZBdšdE„ ZCd›d:„ ZDdœd?„ ZEd�d=„ ZFdžd#„ ZGdŸd$„ ZHd dK„ ZId¡d„ ZJd¢dN„ ZKd£d¤„ ZLd¥dB„ ZMd¦d'„ ZNd§dD„ ZOd¨d3„ ZPd©d4„ ZQdªd7„ ZRd«d2„ ZSd¬d6„ ZTd­d.„ ZUd®d¯„ ZVd°d0„ ZWd±d8„ ZXd²d/„ ZYd³d5„ ZZd´d-„ Z[dµd¶„ Z\d·d¸„ Z]d¹dº„ Z^ePd»eQd¼eRd½eSd¾eVd¿eUdÀeMdÁeZdÂe\dÃe]dÄe^dÅiZ_dÆdC„ Z`dÇd„ ZadÈdÉ„ ZbdÊd„ ZcdËd„ ZddÌd„ ZedÍdÎ„ ZfdÏdÐ„ ZgdÑd„ ZhdÒd„ ZidÓdÔ„ ZjdÕdÖ„ ZkG d×dØ„ dØelƒZmG dÙd]„ d]ƒZndÚdV„ ZodÛdX„ ZpdÜdW„ ZqdÝd&„ ZrdÞd„ Zsdòdßdà„Ztdád„ Zui fdâd„Zvdãd„ Zwdäd„ Zxdåd„ Zydædç„ Zzdèd„ Z{déd„ Z|dêd„ Z}dëdì„ Z~díd\„ ZdódïdZ„Z€dðd	„ Z�i fdñd„Z‚d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Ú
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                 C   s   t  dd¡rtj | ¡ d S )NÚverboser   )ÚoptionsÚgetÚsysÚstdoutÚwrite)Út© re   úL/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numpy/f2py/auxfuncs.pyrX   A   s    c                 C   s   dt kS )NZcapi)Údebugoptions©Úvarre   re   rf   r   F   s    c                 C   s   d| ko| d dkot | ƒ S ©NÚtypespecÚ	character©r&   rh   re   re   rf   Ú_ischaracterJ   s    ÿrn   c                 C   s   d| ko| d dkot | ƒ S rj   rm   rh   re   re   rf   Ú	_isstringO   s    ÿro   c                 C   s   t | ƒod| kS ©NZcharselector©rn   rh   re   re   rf   r   T   s    c                 C   s   t | ƒot| ƒ S ©N©r   r   rh   re   re   rf   r   X   s    c                 C   s   t | ƒot| ƒS rr   rs   rh   re   re   rf   r   \   s    c                 C   s   t | ƒod| kS rp   rq   rh   re   re   rf   rI   `   s    c                 C   s   t | ƒot| ƒ S rr   ©rI   r   rh   re   re   rf   rG   d   s    c                 C   s   t | ƒot| ƒS rr   rt   rh   re   re   rf   rH   h   s    c                 C   s   t | ƒo| d d dkS )NÚ	dimensionéÿÿÿÿz(*))rH   rh   re   re   rf   r   l   s    c                 C   s   d| kot | ƒ S ©Nru   rm   rh   re   re   rf   r   r   s    c                 C   s   t | ƒpt| ƒpt| ƒ S rr   )r   rG   r&   rh   re   re   rf   rE   v   s    c                 C   s   t | ƒo|  d¡dkS ©Nrk   )Úcomplexzdouble complex©rE   r`   rh   re   re   rf   r    z   s    ÿc                 C   s   t | ƒo|  d¡dkS )Nrk   Úlogicalrz   rh   re   re   rf   r8      s    c                 C   s   t | ƒo|  d¡dkS )Nrk   Úintegerrz   rh   re   re   rf   r+   ƒ   s    c                 C   s   t | ƒo|  d¡dkS )Nrk   Úrealrz   rh   re   re   rf   Úisreal‡   s    r~   c                 C   sP   z| d d W S  t k
rJ   z| d d W  Y S  t k
rD   Y nX Y nX d S )NZkindselectorÚ*Úkind©ÚKeyErrorrh   re   re   rf   Úget_kind‹   s    rƒ   c                 C   s$   |   d¡dko"t| ƒdko"t| ƒ S ©Nrk   r|   Ú1)r`   rƒ   r   rh   re   re   rf   r)   •   s
    
ÿÿc                 C   s*   t | ƒsdS |  d¡dkrdS t| ƒdkS )Nr   rk   ©r|   r{   Ú8©rE   r`   rƒ   rh   re   re   rf   r=   š   s
    c                 C   s*   t | ƒsdS |  d¡dkrdS t| ƒdkS )Nr   rk   r|   ú-1rˆ   rh   re   re   rf   rO   ¢   s
    c                 C   s*   t | ƒsdS |  d¡dkrdS t| ƒdkS )Nr   rk   r|   ú-2rˆ   rh   re   re   rf   rS   ª   s
    c                 C   s*   t | ƒsdS |  d¡dkrdS t| ƒdkS )Nr   rk   r|   ú-4rˆ   rh   re   re   rf   rN   ²   s
    c                 C   s*   t | ƒsdS |  d¡dkrdS t| ƒdkS )Nr   rk   r|   ú-8rˆ   rh   re   re   rf   rQ   º   s
    c                 C   s*   t | ƒsdS |  d¡dksdS t| ƒdkS )Nr   rk   r}   r‡   rˆ   rh   re   re   rf   r$   Â   s
    c                 C   s*   t | ƒsdS |  d¡dksdS t| ƒdkS )Nr   rk   r}   Z16rˆ   rh   re   re   rf   r;   Ê   s
    c                 C   s   t | ƒsdS t| ƒdkS )Nr   Z32)r    rƒ   rh   re   re   rf   r:   Ò   s    c                 C   s   t | ƒo|  d¡dkS rx   )r   r`   rh   re   re   rf   r!   Ø   s    ÿc                 C   s"   t | ƒo |  d¡dko t| ƒdkS r„   ©r   r`   rƒ   rh   re   re   rf   r*   Ý   s    
ÿc                 C   s"   t | ƒo |  d¡dko t| ƒdkS )Nrk   r†   r‰   r�   rh   re   re   rf   rP   â   s    
ÿc                 C   s"   t | ƒo |  d¡dko t| ƒdkS )Nrk   r†   rŠ   r�   rh   re   re   rf   rT   ç   s    
ÿc                 C   s"   t | ƒo |  d¡dko t| ƒdkS )Nrk   r†   r‹   r�   rh   re   re   rf   Úisunsignedarrayì   s    
ÿrŽ   c                 C   s"   t | ƒo |  d¡dko t| ƒdkS )Nrk   r†   rŒ   r�   rh   re   re   rf   rR   ñ   s    
ÿc                 C   s"   t | ƒo |  d¡dko t| ƒdkS )Nrk   r†   r…   r�   rh   re   re   rf   Úissigned_chararrayö   s    
ÿr�   c                 C   s"   t | ƒo |  d¡dko t| ƒdkS )Nrk   r†   Ú2r�   rh   re   re   rf   Úissigned_shortarrayû   s    
ÿr‘   c                 C   s"   t | ƒo |  d¡dko t| ƒdkS )Nrk   r†   Ú4r�   rh   re   re   rf   Úissigned_array   s    
ÿr“   c                 C   s"   t | ƒo |  d¡dko t| ƒdkS )Nrk   r†   r‡   r�   rh   re   re   rf   rF     s    
ÿc                 C   s   d| kod| d kS )NÚattrspecZallocatablere   rh   re   re   rf   r   
  s    c                 C   s   d| kpt | ƒ S rw   )rG   rh   re   re   rf   Ú	ismutable  s    r•   c                 C   s   d| kS )NÚ
modulenamere   ©Úroutre   re   rf   r@     s    c                 C   s   d| kod| d kS )NÚblockÚmodulere   r—   re   re   rf   r?     s    c                 C   s   d| kod| d kS )Nr™   Úfunctionre   r—   re   re   rf   r'     s    c                 C   s"   t | ƒrdS to t| ƒo t| ƒ S ©Nr   )r-   Ú	wrapfuncsr'   r&   r—   re   re   rf   r(     s    c                 C   s   d| kod| d kS )Nr™   Z
subroutinere   r—   re   re   rf   rK   $  s    c                 C   s   t | ƒrdS t| ƒot| ƒS rœ   )r-   rK   Úhasassumedshaper—   re   re   rf   rL   (  s    c                 C   s   d|   dg ¡kS )NÚvaluer”   ©r`   rh   re   re   rf   r]   -  s    c                 C   sV   |   d¡rdS | d D ]:}| d   |i ¡  dg ¡D ]}|dkr2d| d<   dS q2qdS )Nrž   TÚargsÚvarsru   ú:Fr    )r˜   ÚaÚdre   re   rf   rž   1  s    
rž   c                 C   s   t | ƒpt| ƒS rr   )r@   rž   r—   re   re   rf   Úrequiresf90wrapper<  s    r¦   c                 C   s   t | ƒpt| ƒS rr   )r'   rK   r—   re   re   rf   rD   @  s    c                 C   sF   t | ƒsdS d| kr| d }n| d }|| d krBt| d | ƒS dS ©Nr   ÚresultÚnamer¢   )r'   r8   ©r˜   r¤   re   re   rf   r9   D  s    
c                 C   sF   t | ƒsdS d| kr| d }n| d }|| d krBt| d | ƒS dS r§   )r'   r=   rª   re   re   rf   r>   P  s    
c                 C   sF   t | ƒsdS d| kr| d }n| d }|| d krBt| d | ƒS dS r§   )r'   r;   rª   re   re   rf   r<   \  s    
c                 C   sF   t | ƒsdS d| kr| d }n| d }|| d krBt| d | ƒS dS r§   )r'   r    rª   re   re   rf   r"   h  s    
c                 C   s   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"   rX   r—   re   re   rf   r#   t  s    c                 C   sF   t | ƒsdS d| kr| d }n| d }|| d krBt| d | ƒS dS r§   )r'   rG   rª   re   re   rf   rJ   ‚  s    
c                 C   s   d| ko| d S )NZ	externalsre   r—   re   re   rf   r   Ž  s    c                 C   s   d| kod| d kS )NÚf2pyenhancementsZ
threadsafere   r—   re   re   rf   rM   ’  s    
ÿc                 C   s   d| ko| d S )Nr¢   re   r—   re   re   rf   Úhasvariables—  s    r¬   c                 C   s(   d| ko&d| d ko&d| d ko&t | ƒS )Nr”   ÚoptionalÚrequired)r5   rh   re   re   rf   rA   ›  s
    
ÿÿc                 C   s   d| kod| d kS )Nr”   Zexternalre   rh   re   re   rf   r&      s    c                 C   s   t | ƒ ot| ƒS rr   )rA   r5   rh   re   re   rf   rC   ¤  s    c                 C   sp   d| krdS d| d krdS d| d kr,dS d| d kr<dS d| d krLdS d| d kr\dS d	| d krldS dS )
NÚintentr   Úhider   ÚinplaceÚinÚoutÚinoutÚoutinre   rh   re   re   rf   r2   ¨  s    c                 C   sD   d| koBd| d ks d| d koBd| d koBd| d koBd| d kS )Nr¯   r´   rµ   r²   r°   r±   re   rh   re   re   rf   r3   º  s    
ÿ
ÿ
þ
þc                 C   s   d|   dg ¡kS )Nr³   r¯   r    rh   re   re   rf   r6   À  s    c                 C   s<   d| ko:d| d kp:d| d ko:d| d ko:t ttƒ| ƒ S )Nr¯   r°   r³   r²   )rW   r3   r4   rh   re   re   rf   r1   Ä  s    þc                 C   s
   t | ƒ S rr   )r1   rh   re   re   rf   r5   Ê  s    c                 C   s   d|   dg ¡kS )NÚcr¯   r    rh   re   re   rf   r-   Î  s    c                 C   s   d|   dg ¡kS )NÚcacher¯   r    rh   re   re   rf   Úisintent_cacheÒ  s    r¸   c                 C   s   d|   dg ¡kS )NÚcopyr¯   r    rh   re   re   rf   r/   Ö  s    c                 C   s   d|   dg ¡kS )NÚ	overwriter¯   r    rh   re   re   rf   r7   Ú  s    c                 C   s   d|   dg ¡kS )NÚcallbackr¯   r    rh   re   re   rf   r.   Þ  s    c                 C   s   d|   dg ¡kS )Nr±   r¯   r    rh   re   re   rf   r4   â  s    c                 C   s   d|   dg ¡kS )NZauxr¯   r    rh   re   re   rf   r,   æ  s    c                 C   s   d|   dg ¡kS )NZaligned4r¯   r    rh   re   re   rf   Úisintent_aligned4ê  s    r¼   c                 C   s   d|   dg ¡kS )NZaligned8r¯   r    rh   re   re   rf   Úisintent_aligned8î  s    r½   c                 C   s   d|   dg ¡kS )NZ	aligned16r¯   r    rh   re   re   rf   Úisintent_aligned16ò  s    r¾   Z	INTENT_INZINTENT_INOUTZ
INTENT_OUTZINTENT_HIDEZINTENT_CACHEZINTENT_CÚOPTIONALZINTENT_INPLACEZINTENT_ALIGNED4ZINTENT_ALIGNED8ZINTENT_ALIGNED16c                 C   s   d| kod| d kS )Nr”   Úprivatere   rh   re   re   rf   rB     s    c                 C   s   d| kS )Nú=re   rh   re   re   rf   r     s    c                 C   s   t | ƒsdS | d d dkS )Nr   rÁ   )ú"ú')r   rh   re   re   rf   Úhasinitvalueasstring	  s    rÄ   c                 C   s   d| kS )NZnotere   rh   re   re   rf   r     s    c                 C   sF   t | ƒsdS d| kr| d }n| d }|| d krBt| d | ƒS dS r§   )r'   r   rª   re   re   rf   r     s    
c                 C   s   d| kS )NÚcommonre   r—   re   re   rf   r     s    c                 C   s4   t | ƒrdS t| ƒr0| d D ]}t|ƒr dS qdS )Nr   Úbodyr   )r   r   Úcontainscommon)r˜   Úbre   re   rf   rÇ   #  s    rÇ   c                 C   s8   t | ƒrdS t| ƒsdS | d D ]}t|ƒr  dS q dS )Nr   r   rÆ   )r?   r   Úcontainsmodule)r™   rÈ   re   re   rf   rÉ   -  s    rÉ   c                 C   s   d| kS )NrÆ   re   r—   re   re   rf   r   8  s    c                 C   s   t | ƒd k	S rr   )r   r—   re   re   rf   r   <  s    c                 C   s   dS )Nr   re   rh   re   re   rf   Úistrue@  s    rÊ   c                 C   s   dS rœ   re   rh   re   re   rf   ÚisfalseD  s    rË   c                   @   s   e Zd ZdS )Ú	F2PYErrorN)Ú__name__Ú
__module__Ú__qualname__re   re   re   rf   rÌ   H  s   rÌ   c                   @   s   e Zd Zdd„ Zdd„ ZdS )r\   c                 C   s
   || _ d S rr   )Úmess)ÚselfrÐ   re   re   rf   Ú__init__N  s    zthrow_error.__init__c                 C   s   d|| j f }t|ƒ‚d S )Nz

  var = %s
  Message: %s
)rÐ   rÌ   )rÑ   ri   rÐ   re   re   rf   Ú__call__Q  s    zthrow_error.__call__N)rÍ   rÎ   rÏ   rÒ   rÓ   re   re   re   rf   r\   L  s   c                  G   sN   dg  }}t t| ƒƒD ] }d|||f }| d| ¡ qtd|d |¡f ƒS )Núlambda vú%s,f%d=f[%d]úf%d(v)ú%s:%sz and ©ÚrangeÚlenÚappendÚevalÚjoin©ÚfÚl1Úl2Úire   re   rf   rU   V  s
    
c                  G   sN   dg  }}t t| ƒƒD ] }d|||f }| d| ¡ qtd|d |¡f ƒS )NrÔ   rÕ   rÖ   r×   z or rØ   rÞ   re   re   rf   rW   ^  s
    
c                 C   s   t dƒS )Nzlambda v,f=f:not f(v))rÜ   )rß   re   re   rf   rV   f  s    c                 C   s.   z| d d dkW S  t k
r(   Y dS X d S )Nr«   ÚfortrannameÚ r   r�   r—   re   re   rf   r%   j  s    c                 C   sV   z4| d d }|dkrt ‚|s2td| d  ƒ t ‚W n t k
rP   | d }Y nX |S )Nr«   rã   rä   z"Failed to use fortranname from %s
r©   )r‚   r	   )r˜   r©   re   re   rf   r   q  s    ÿc                 C   s
  z| d   |¡}W n tk
r(   Y d S X |s2d S |dkrHt|tƒrHd S t|tƒrj|t|ƒkrbd S || }|d d… dk�r|r¦d| d t|ƒ d |dd …  }n|dd … }|dd … dkrò|rä|d d… d	 t|ƒ d
 }n|d d… }ntd|t|ƒf ƒ |S )Nr«   r   é   z'''z
	/* start z multiline (z) */
éýÿÿÿz
	/* end multiline (z)*/z-%s multiline block should end with `'''`: %s
)r`   r‚   Ú
isinstanceÚstrÚlistrÚ   Úreprr	   )r˜   Z	blocknameÚcommentÚcounterÚrre   re   rf   Úgetmultilineblock  s@    
ÿÿÿ
ÿ
ÿrî   c                 C   s
   t | dƒS )NZcallstatement©rî   r—   re   re   rf   r   �  s    c           
      C   s  t | d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‚qh||kr˜|| d }nZ||ƒ}tttttƒƒ|ƒr¶nt|ƒrÀnt|ƒsÐ|d }t|ƒsèt|ƒsèt|ƒrò| d¡ | |¡ qhd || ¡}	|	�sd}	|	S )NZcallprotoargumentr   )rë   z<warning: callstatement is defined without callprotoargument
r   )Úgetctypezchar*Zsize_tr¡   r¢   Z_typedefr   ú,Úvoid)rî   r   rX   Z	capi_mapsrð   rU   rJ   rV   r(   Úextendr.   r-   rW   rE   r    rG   r]   r   rH   rÛ   rÝ   )
r˜   Zcb_maprí   rð   Z	arg_typesZ
arg_types2Únri   ÚctypeZ
proto_argsre   re   rf   r   ¡  sH    ÿ
ÿþ
c                 C   s
   t | dƒS )NÚusercoderï   r—   re   re   rf   r   È  s    c                 C   s   t | ddd�S )Nrö   r   )rì   rï   r—   re   re   rf   r   Ì  s    c                 C   s
   t | dƒS )NZpymethoddefrï   r—   re   re   rf   r   Ð  s    c                 C   sp   g g  }}d| krh| d }d| kr`| d D ]}||kr*|  |¡ q*|D ]}||krF|  |¡ qFn| d }||fS )Nr¡   Úsortvars)rÛ   )r˜   Úsortargsr¡   r¤   re   re   rf   ÚgetargsÔ  s    
rù   c                    s�   g ˆ  dg ¡ }‰ ‡ ‡fdd„ˆd  ¡ D ƒ}|ˆ  ‰ dˆkr|ˆd D ]}|ˆ krF| |¡ qFˆ D ]}||krb| |¡ qbn|ˆd  }ˆ |fS )Nr¡   c                    s(   g | ] }t ˆd  | ƒr|ˆ kr|‘qS )r¢   )r,   )Ú.0r¤   ©r¡   r˜   re   rf   Ú
<listcomp>æ  s     ÿzgetargs2.<locals>.<listcomp>r¢   r÷   )r`   ÚkeysrÛ   )r˜   rø   Zauxvarsr¤   re   rû   rf   r   ä  s    c                 C   s<   d| krd S d }| d dkr,| d | d f}| d   |d ¡S )NZf2pymultilinesr™   zpython moduler©   r    )r˜   Úkre   re   rf   r   õ  s    c                 C   s*   dt | ƒ d d }d|d | |d f S )NéP   é   é   z/*%s %s %s*/r   )rÚ   )r©   Úlnre   re   rf   r
   þ  s    c                 C   s$   t | tƒrttfdd„| g ƒS | gS )Nc                 S   s   | ||ƒ S rr   re   )ÚxÚyrß   re   re   rf   Ú<lambda>  ó    zflatlist.<locals>.<lambda>)rç   ré   r   Úflatlist)Úlstre   re   rf   r    s    
r  c                 C   s    | r| d dkr| d d… S | S )Nrv   rñ   re   )Úsre   re   rf   r[   	  s    rä   c              	      sÈ   t ˆ tƒr‡‡fdd„ˆ D ƒS t ˆtƒr<‡ ‡fdd„ˆD ƒS dtˆ  ¡ ƒ D ]v}|dkrZqLdˆ kr||ˆ d kr|ˆ d | }nˆ}t ˆ | tƒr®ˆ d| | tˆ | ƒ¡¡‰qLˆ d| ˆ | ¡‰qLˆS )Nc                    s   g | ]}t ˆ|ˆ ƒ‘qS re   ©rY   ©rú   Ú_m)Ú
defaultseprè   re   rf   rü     s     zreplace.<locals>.<listcomp>c                    s   g | ]}t |ˆ ˆƒ‘qS re   r
  r  )r¥   r  re   rf   rü     s     r  Úseparatorsforz#%s#)rç   ré   rý   rY   rÝ   r  )rè   r¥   r  rþ   Úsepre   )r¥   r  rè   rf   rY     s    

 c                 C   s2  t |tƒr"|D ]}t| |ƒ} q| S | ¡ D �] }|d dkr>q*|| k�r t | | tƒrd| | g| |< t | | tƒrªt || tƒr–| | ||  | |< n| |  || ¡ ntt | | tƒ�r,t || tƒ�r,|dk�r||  ¡ D ]$}|| | krà|| | | | |< qànt| | || ƒ| |< q*|| | |< q*| S )Nr   Ú_r  )rç   ré   r   rý   rè   rÛ   Údict)ÚrdÚarr¤   rþ   Úk1re   re   rf   r   "  s.    


c                 C   sž  i }t | tƒr>| D ]&}t|||ƒ}t||ƒ}d|kr q:q|S d| krV| d |ƒsV|S d| krˆtd| d i||ƒ}d|krˆt |d ¡ |  ¡ D �]}|dkr¬| | ||< q�t | | tƒrÐt| | |ƒ||< �n†t | | tƒ�r$g ||< | | D ].}t||i||ƒ}	||	krð||  	|	| ¡ qð�n2|d dk�r8q��nt | | t
ƒ�rBg ||< | |  ¡ D ]â}
t |
tjƒ�r\|
|ƒ�r\t | | |
 tƒ�rê| | |
 D ]N}t |t
ƒ�rÐtd|i||ƒ}d|k�rÌ|d }nd	}||  	t||ƒ¡ �q˜nR| | |
 }t |t
ƒ�r(td|i|ƒ}d|k�r$|d }nd	}||  	t||ƒ¡ �q\ntd
t| | ƒ ƒ t || tƒr�t|| ƒdk�r†|| d ||< || g kr�||= q�|S )NÚ_breakÚ_checkZneedZneedsr  r   r  Z	supertexträ   zapplyrules: ignoring rule %s.
r   )rç   ré   r   r   r   Zappend_needsrý   rè   rY   rÛ   r  ÚtypesÚFunctionTyper	   rê   rÚ   )Úrulesr¥   ri   Úretrí   ÚrrÚresrþ   râ   r  r  re   re   rf   r   ?  sl    





)r   r   )rä   )ƒÚ__doc__Úpprintra   r  Ú	functoolsr   rä   r   r   Ú__all__ÚversionZf2py_versionÚstderrrc   r	   rZ   r_   rg   r�   rX   r   rn   ro   r   r   r   rI   rG   rH   r   r   rE   r    r8   r+   r~   rƒ   r)   r=   rO   rS   rN   rQ   r$   r;   r:   r!   r*   rP   rT   rŽ   rR   r�   r‘   r“   rF   r   r•   r@   r?   r'   r(   rK   rL   r]   rž   r¦   rD   r9   r>   r<   r"   r#   rJ   r   rM   r¬   rA   r&   rC   r2   r3   r6   r1   r5   r-   r¸   r/   r7   r.   r4   r,   r¼   r½   r¾   r0   rB   r   rÄ   r   r   r   rÇ   rÉ   r   r   rÊ   rË   Ú	ExceptionrÌ   r\   rU   rW   rV   r%   r   rî   r   r   r   r   r   rù   r   r   r
   r  r[   rY   r   r   re   re   re   rf   Ú<module>   sÎ                                                                 ç
           ù


'	
