a
    hÝEbU  ã                   @   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 g d¢Z	ej
ZejjZejZi Zg ZdZdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Z d$d%„ Z!d&d'„ Z"d(d)„ Z#d*d+„ Z$d,d-„ Z%d.d/„ Z&d0d1„ Z'd2d3„ Z(d4d5„ Z)d6d7„ Z*d8d9„ Z+d:d;„ Z,d<d=„ Z-d>d?„ Z.d@dA„ Z/dBdC„ Z0dDdE„ Z1dFdG„ Z2dHdI„ Z3dJdK„ Z4dLdM„ Z5dNdO„ Z6dPdQ„ Z7dRdS„ Z8dTdU„ Z9dVdW„ Z:dXdY„ Z;dZd[„ Z<d\d]„ Z=d^d_„ Z>d`da„ Z?dbdc„ Z@ddde„ ZAdfdg„ ZBdhdi„ ZCdjdk„ ZDdldm„ ZEdndo„ ZFdpdq„ ZGdrds„ ZHdtdu„ ZIdvdw„ ZJdxdy„ ZKdzd{„ ZLd|d}„ ZMd~d„ ZNd€d�„ ZOd‚dƒ„ ZPd„d…„ ZQd†d‡„ ZRdˆd‰„ ZSdŠd‹„ ZTdŒd�„ ZUdŽd�„ ZVd�d‘„ ZWd’d“„ ZXeJd”eKd•eLd–eMd—ePd˜eOd™eGdšeTd›eVdœeWd�eXdžiZYdŸd „ ZZd¡d¢„ Z[d£d¤„ Z\d¥d¦„ Z]d§d¨„ Z^d©dª„ Z_d«d¬„ Z`d­d®„ Zad¯d°„ Zbd±d²„ Zcd³d´„ Zddµd¶„ ZeG d·d¸„ d¸efƒZgG d¹dº„ dºƒZhd»d¼„ Zid½d¾„ Zjd¿dÀ„ ZkdÁdÂ„ ZldÃdÄ„ ZmdädÅdÆ„ZndÇdÈ„ Zoi fdÉdÊ„ZpdËdÌ„ ZqdÍdÎ„ ZrdÏdÐ„ ZsdÑdÒ„ ZtdÓdÔ„ ZudÕdÖ„ Zvd×dØ„ ZwdÙdÚ„ ZxdÛdÜ„ ZydådÞdß„Zzdà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)RÚ
applyrulesÚ	debugcapiÚ
dictappendÚerrmessÚgentitleÚgetargs2ÚgetcallprotoargumentÚgetcallstatementÚgetfortrannameÚgetpymethoddefÚ
getrestdocÚgetusercodeÚgetusercode1ÚhasbodyÚhascallstatementÚ	hascommonÚhasexternalsÚhasinitvalueÚhasnoteÚhasresultnoteÚisallocatableÚisarrayÚisarrayofstringsÚ	iscomplexÚiscomplexarrayÚiscomplexfunctionÚiscomplexfunction_warnÚisdoubleÚisdummyroutineÚ
isexternalÚ
isfunctionÚisfunction_wrapÚ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Ú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_errorc                 C   s   t  dd¡rtj | ¡ d S )NÚverboser   )ÚoptionsÚgetÚsysÚstdoutÚwrite)Út© r_   úS/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/numpy/f2py/auxfuncs.pyrS   >   s    rS   c                 C   s   dt v S )NZcapi)Údebugoptions©Úvarr_   r_   r`   r   C   s    r   c                 C   s   d| v o| d dkot | ƒ S )NÚtypespecÚ	character©r#   rb   r_   r_   r`   Ú	_isstringG   s    ÿrg   c                 C   s   t | ƒot| ƒ S ©N)rg   r   rb   r_   r_   r`   rC   L   s    rC   c                 C   s   t | ƒod| vS )NZcharselector©rC   rb   r_   r_   r`   ÚischaracterP   s    rj   c                 C   s   t | ƒot| ƒS rh   )r   rg   rb   r_   r_   r`   rD   T   s    rD   c                 C   s   t | ƒo| d d dkS )NÚ	dimensionéÿÿÿÿz(*))rD   rb   r_   r_   r`   r   X   s    r   c                 C   s   d| v ot | ƒ S ©Nrk   rf   rb   r_   r_   r`   r   ^   s    r   c                 C   s   t | ƒpt| ƒpt| ƒ S rh   )r   rC   r#   rb   r_   r_   r`   rA   b   s    rA   c                 C   s   t | ƒo|  d¡dv S ©Nrd   )Úcomplexzdouble complex©rA   rZ   rb   r_   r_   r`   r   f   s    ÿr   c                 C   s   t | ƒo|  d¡dkS )Nrd   Úlogicalrp   rb   r_   r_   r`   r4   k   s    r4   c                 C   s   t | ƒo|  d¡dkS )Nrd   Úintegerrp   rb   r_   r_   r`   r'   o   s    r'   c                 C   s   t | ƒo|  d¡dkS )Nrd   Úrealrp   rb   r_   r_   r`   Úisreals   s    rt   c                 C   sL   z| d d W S  t yF   z| d d W  Y S  t y@   Y n0 Y n0 d S )NZkindselectorÚ*Úkind©ÚKeyErrorrb   r_   r_   r`   Úget_kindw   s    ry   c                 C   s*   t | ƒsdS |  d¡dvrdS t| ƒdkS )Nr   rd   ©rr   rq   Ú8©rA   rZ   ry   rb   r_   r_   r`   r9   �   s
    r9   c                 C   s*   t | ƒsdS |  d¡dkrdS t| ƒdkS )Nr   rd   rr   ú-1r|   rb   r_   r_   r`   rJ   ‰   s
    rJ   c                 C   s*   t | ƒsdS |  d¡dkrdS t| ƒdkS )Nr   rd   rr   ú-2r|   rb   r_   r_   r`   rN   ‘   s
    rN   c                 C   s*   t | ƒsdS |  d¡dkrdS t| ƒdkS )Nr   rd   rr   ú-4r|   rb   r_   r_   r`   rI   ™   s
    rI   c                 C   s*   t | ƒsdS |  d¡dkrdS t| ƒdkS )Nr   rd   rr   ú-8r|   rb   r_   r_   r`   rL   ¡   s
    rL   c                 C   s*   t | ƒsdS |  d¡dksdS t| ƒdkS )Nr   rd   rs   r{   r|   rb   r_   r_   r`   r!   ©   s
    r!   c                 C   s*   t | ƒsdS |  d¡dksdS t| ƒdkS )Nr   rd   rs   Z16r|   rb   r_   r_   r`   r7   ±   s
    r7   c                 C   s   t | ƒsdS t| ƒdkS )Nr   Z32)r   ry   rb   r_   r_   r`   r6   ¹   s    r6   c                 C   s   t | ƒo|  d¡dv S rn   )r   rZ   rb   r_   r_   r`   r   ¿   s    ÿr   c                 C   s"   t | ƒo |  d¡dko t| ƒdkS )Nrd   rr   Ú1©r   rZ   ry   rb   r_   r_   r`   r&   Ä   s    
ÿr&   c                 C   s"   t | ƒo |  d¡dv o t| ƒdkS )Nrd   rz   r}   r‚   rb   r_   r_   r`   rK   É   s    
ÿrK   c                 C   s"   t | ƒo |  d¡dv o t| ƒdkS )Nrd   rz   r~   r‚   rb   r_   r_   r`   rO   Î   s    
ÿrO   c                 C   s"   t | ƒo |  d¡dv o t| ƒdkS )Nrd   rz   r   r‚   rb   r_   r_   r`   ÚisunsignedarrayÓ   s    
ÿrƒ   c                 C   s"   t | ƒo |  d¡dv o t| ƒdkS )Nrd   rz   r€   r‚   rb   r_   r_   r`   rM   Ø   s    
ÿrM   c                 C   s"   t | ƒo |  d¡dv o t| ƒdkS )Nrd   rz   r�   r‚   rb   r_   r_   r`   Úissigned_chararrayÝ   s    
ÿr„   c                 C   s"   t | ƒo |  d¡dv o t| ƒdkS )Nrd   rz   Ú2r‚   rb   r_   r_   r`   Úissigned_shortarrayâ   s    
ÿr†   c                 C   s"   t | ƒo |  d¡dv o t| ƒdkS )Nrd   rz   Ú4r‚   rb   r_   r_   r`   Úissigned_arrayç   s    
ÿrˆ   c                 C   s"   t | ƒo |  d¡dv o t| ƒdkS )Nrd   rz   r{   r‚   rb   r_   r_   r`   rB   ì   s    
ÿrB   c                 C   s   d| v od| d v S )NÚattrspecZallocatabler_   rb   r_   r_   r`   r   ñ   s    r   c                 C   s   d| vpt | ƒ S rm   ri   rb   r_   r_   r`   Ú	ismutableõ   s    rŠ   c                 C   s   d| v S )NÚ
modulenamer_   ©Úroutr_   r_   r`   r<   ù   s    r<   c                 C   s   d| v od| d kS )NÚblockÚmoduler_   rŒ   r_   r_   r`   r;   ý   s    r;   c                 C   s   d| v od| d kS )NrŽ   Úfunctionr_   rŒ   r_   r_   r`   r$     s    r$   c                 C   s"   t | ƒrdS to t| ƒo t| ƒ S ©Nr   )r)   Ú	wrapfuncsr$   r#   rŒ   r_   r_   r`   r%     s    r%   c                 C   s   d| v od| d kS )NrŽ   Z
subroutiner_   rŒ   r_   r_   r`   rF     s    rF   c                 C   s   t | ƒrdS t| ƒot| ƒS r‘   )r)   rF   ÚhasassumedshaperŒ   r_   r_   r`   rG     s    rG   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Úvarsrk   ú:F©rZ   )r�   ÚaÚdr_   r_   r`   r“     s    
r“   c                 C   s   t | ƒpt| ƒS rh   )r<   r“   rŒ   r_   r_   r`   Úrequiresf90wrapper   s    rš   c                 C   s   t | ƒpt| ƒS rh   )r$   rF   rŒ   r_   r_   r`   r@   $  s    r@   c                 C   sF   t | ƒsdS d| v r| d }n| d }|| d v rBt| d | ƒS dS ©Nr   ÚresultÚnamer•   )r$   r4   ©r�   r˜   r_   r_   r`   r5   (  s    
r5   c                 C   sF   t | ƒsdS d| v r| d }n| d }|| d v rBt| d | ƒS dS r›   )r$   r9   rž   r_   r_   r`   r:   4  s    
r:   c                 C   sF   t | ƒsdS d| v r| d }n| d }|| d v rBt| d | ƒS dS r›   )r$   r7   rž   r_   r_   r`   r8   @  s    
r8   c                 C   sF   t | ƒsdS d| v r| d }n| d }|| d v rBt| d | ƒS dS r›   )r$   r   rž   r_   r_   r`   r   L  s    
r   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   rS   rŒ   r_   r_   r`   r    X  s    r    c                 C   sF   t | ƒsdS d| v r| d }n| d }|| d v rBt| d | ƒS dS r›   )r$   rC   rž   r_   r_   r`   rE   f  s    
rE   c                 C   s   d| v o| d S )NZ	externalsr_   rŒ   r_   r_   r`   r   r  s    r   c                 C   s   d| v od| d v S )NÚf2pyenhancementsZ
threadsafer_   rŒ   r_   r_   r`   rH   v  s    
ÿrH   c                 C   s   d| v o| d S )Nr•   r_   rŒ   r_   r_   r`   Úhasvariables{  s    r    c                 C   s(   d| v o&d| d v o&d| d vo&t | ƒS )Nr‰   ÚoptionalÚrequired)r1   rb   r_   r_   r`   r=     s
    
ÿÿr=   c                 C   s   d| v od| d v S )Nr‰   Zexternalr_   rb   r_   r_   r`   r#   „  s    r#   c                 C   s   t | ƒ ot| ƒS rh   )r=   r1   rb   r_   r_   r`   r?   ˆ  s    r?   c                 C   sp   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 rLdS d| d v r\dS d	| d v rldS dS )
NÚintentr   Úhider   ÚinplaceÚinÚoutÚinoutÚoutinr_   rb   r_   r_   r`   r.   Œ  s    r.   c                 C   sD   d| v oBd| d v s d| d v oBd| d voBd| d voBd| d vS )Nr£   r¨   r©   r¦   r¤   r¥   r_   rb   r_   r_   r`   r/   ž  s    
ÿ
ÿ
þ
þr/   c                 C   s   d|   dg ¡v S )Nr§   r£   r—   rb   r_   r_   r`   r2   ¤  s    r2   c                 C   s<   d| v o:d| d v p:d| d v o:d| d vo:t ttƒ| ƒ S )Nr£   r¤   r§   r¦   )rR   r/   r0   rb   r_   r_   r`   r-   ¨  s    þr-   c                 C   s
   t | ƒ S rh   )r-   rb   r_   r_   r`   r1   ­  s    r1   c                 C   s   d|   dg ¡v S )NÚcr£   r—   rb   r_   r_   r`   r)   ±  s    r)   c                 C   s   d|   dg ¡v S )NÚcacher£   r—   rb   r_   r_   r`   Úisintent_cacheµ  s    r¬   c                 C   s   d|   dg ¡v S )NÚcopyr£   r—   rb   r_   r_   r`   r+   ¹  s    r+   c                 C   s   d|   dg ¡v S )NÚ	overwriter£   r—   rb   r_   r_   r`   r3   ½  s    r3   c                 C   s   d|   dg ¡v S )NÚcallbackr£   r—   rb   r_   r_   r`   r*   Á  s    r*   c                 C   s   d|   dg ¡v S )Nr¥   r£   r—   rb   r_   r_   r`   r0   Å  s    r0   c                 C   s   d|   dg ¡v S )NZauxr£   r—   rb   r_   r_   r`   r(   É  s    r(   c                 C   s   d|   dg ¡v S )NZaligned4r£   r—   rb   r_   r_   r`   Úisintent_aligned4Í  s    r°   c                 C   s   d|   dg ¡v S )NZaligned8r£   r—   rb   r_   r_   r`   Úisintent_aligned8Ñ  s    r±   c                 C   s   d|   dg ¡v S )NZ	aligned16r£   r—   rb   r_   r_   r`   Ú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| v od| d v S )Nr‰   Úprivater_   rb   r_   r_   r`   r>   ã  s    r>   c                 C   s   d| v S )Nú=r_   rb   r_   r_   r`   r   ç  s    r   c                 C   s   t | ƒsdS | d d dv S )Nr   rµ   )ú"ú')r   rb   r_   r_   r`   Úhasinitvalueasstringë  s    r¸   c                 C   s   d| v S )NZnoter_   rb   r_   r_   r`   r   ñ  s    r   c                 C   sF   t | ƒsdS d| v r| d }n| d }|| d v rBt| d | ƒS dS r›   )r$   r   rž   r_   r_   r`   r   õ  s    
r   c                 C   s   d| v S )NÚcommonr_   rŒ   r_   r_   r`   r     s    r   c                 C   s4   t | ƒrdS t| ƒr0| d D ]}t|ƒr dS qdS )Nr   Úbodyr   )r   r   Úcontainscommon)r�   Úbr_   r_   r`   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¼   r_   r_   r`   r½     s    r½   c                 C   s   d| v S )Nrº   r_   rŒ   r_   r_   r`   r     s    r   c                 C   s   t | ƒd uS rh   )r   rŒ   r_   r_   r`   r     s    r   c                 C   s   dS )Nr   r_   rb   r_   r_   r`   Úistrue"  s    r¾   c                 C   s   dS r‘   r_   rb   r_   r_   r`   Úisfalse&  s    r¿   c                   @   s   e Zd ZdS )Ú	F2PYErrorN)Ú__name__Ú
__module__Ú__qualname__r_   r_   r_   r`   rÀ   *  s   rÀ   c                   @   s   e Zd Zdd„ Zdd„ ZdS )rW   c                 C   s
   || _ d S rh   )Úmess)ÚselfrÄ   r_   r_   r`   Ú__init__0  s    zthrow_error.__init__c                 C   s   d|| j f }t|ƒ‚d S )Nz

  var = %s
  Message: %s
)rÄ   rÀ   )rÅ   rc   rÄ   r_   r_   r`   Ú__call__3  s    zthrow_error.__call__N)rÁ   rÂ   rÃ   rÆ   rÇ   r_   r_   r_   r`   rW   .  s   rW   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ÚlÚl2Úir_   r_   r`   rP   8  s
    
rP   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Ò   r_   r_   r`   rR   @  s
    
rR   c                 C   s   t dƒS )Nzlambda v,f=f:not f(v))rÐ   )rÓ   r_   r_   r`   rQ   H  s    rQ   c                 C   s,   z| d d dkW S  t y&   Y dS 0 d S )NrŸ   ÚfortrannameÚ r   rw   rŒ   r_   r_   r`   r"   L  s    r"   c                 C   sT   z4| d d }|dkrt ‚|s2td| d  ƒ t ‚W n t yN   | d }Y n0 |S )NrŸ   r×   rØ   z"Failed to use fortranname from %s
r�   )rx   r	   )r�   r�   r_   r_   r`   r   S  s    ÿr   c                 C   s  z| d   |¡}W n ty&   Y d S 0 |s0d S |dkrFt|tƒrFd S t|tƒrh|t|ƒkr`d 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
)rZ   rx   Ú
isinstanceÚstrÚlistrÎ   Úreprr	   )r�   Z	blocknameÚcommentÚcounterÚrr_   r_   r`   Úgetmultilineblocka  s@    
ÿÿÿ
ÿ
ÿrâ   c                 C   s
   t | dƒS )NZcallstatement©râ   rŒ   r_   r_   r`   r     s    r   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||v r˜|| d }nJ||ƒ}tttttƒƒ|ƒr¶nt|ƒrÀn|d }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_typedefru   ú,Úvoid)râ   r   rS   Z	capi_mapsrä   rP   rE   rQ   r%   Úextendr*   r)   rR   rA   r   rC   r   rÏ   rÑ   )
r�   Zcb_maprá   rä   Z	arg_typesZ
arg_types2Únrc   ÚctypeZ
proto_argsr_   r_   r`   r   ƒ  s>    ÿ

r   c                 C   s
   t | dƒS )NÚusercoderã   rŒ   r_   r_   r`   r   §  s    r   c                 C   s   t | ddd�S )Nrê   r   )rà   rã   rŒ   r_   r_   r`   r   «  s    r   c                 C   s
   t | dƒS )NZpymethoddefrã   rŒ   r_   r_   r`   r   ¯  s    r   c                 C   sp   g g  }}d| v rh| d }d| v r`| d D ]}||v r*|  |¡ q*|D ]}||vrF|  |¡ qFn| d }||fS )Nr”   Úsortvars)rÏ   )r�   Úsortargsr”   r˜   r_   r_   r`   Úgetargs³  s    
rí   c                    s�   g ˆ  dg ¡ }‰ ‡ ‡fdd„ˆd  ¡ D ƒ}|ˆ  ‰ dˆv r|ˆd D ]}|ˆ v rF| |¡ qFˆ D ]}||vrb| |¡ qbn|ˆd  }ˆ |fS )Nr”   c                    s(   g | ] }t ˆd  | ƒr|ˆ vr|‘qS )r•   )r(   )Ú.0r˜   ©r”   r�   r_   r`   Ú
<listcomp>Å  s   ÿzgetargs2.<locals>.<listcomp>r•   rë   )rZ   ÚkeysrÏ   )r�   rì   Zauxvarsr˜   r_   rï   r`   r   Ã  s    r   c                 C   s<   d| vrd S d }| d dkr,| d | d f}| d   |d ¡S )NZf2pymultilinesrŽ   zpython moduler�   r—   )r�   Úkr_   r_   r`   r   Ô  s    r   c                 C   s*   dt | ƒ d d }d|d | |d f S )NéP   é   é   z/*%s %s %s*/ru   )rÎ   )r�   rÔ   r_   r_   r`   r
   Ý  s    r
   c                 C   s$   t | tƒrttfdd„| g ƒS | gS )Nc                 S   s   | ||ƒ S rh   r_   )ÚxÚyrÓ   r_   r_   r`   Ú<lambda>ä  ó    zflatlist.<locals>.<lambda>)rÛ   rÝ   r   Úflatlist)rÔ   r_   r_   r`   rú   â  s    
rú   c                 C   s    | r| d dkr| d d… S | S )Nrl   rå   r_   )Úsr_   r_   r`   rV   è  s    rV   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ˆ v r||ˆ d v r|ˆ d | }nˆ}t ˆ | tƒr®ˆ d| | tˆ | ƒ¡¡‰qLˆ d| ˆ | ¡‰qLˆS )Nc                    s   g | ]}t ˆ|ˆ ƒ‘qS r_   ©rT   ©rî   Ú_m)Ú
defaultseprÜ   r_   r`   rð   ð  rù   zreplace.<locals>.<listcomp>c                    s   g | ]}t |ˆ ˆƒ‘qS r_   rü   rý   )r™   rÿ   r_   r`   rð   ò  rù   rõ   Úseparatorsforz#%s#)rÛ   rÝ   rñ   rT   rÑ   rú   )rÜ   r™   rÿ   rò   Úsepr_   )r™   rÿ   rÜ   r`   rT   î  s    

 rT   c                 C   s2  t |tƒr"|D ]}t| |ƒ} q| S | ¡ D �] }|d dkr>q*|| v �r t | | tƒrd| | g| |< t | | tƒrªt || tƒr–| | ||  | |< n| |  || ¡ ntt | | tƒ�r,t || tƒ�r,|dk�r||  ¡ D ]$}|| | vrà|| | | | |< qànt| | || ƒ| |< q*|| | |< q*| S )Nr   Ú_r   )rÛ   rÝ   r   rñ   rÜ   rÏ   Údict)ÚrdÚarr˜   rò   Úk1r_   r_   r`   r     s.    


r   c                 C   sž  i }t | tƒr>| D ]&}t|||ƒ}t||ƒ}d|v r q:q|S d| v rV| d |ƒsV|S d| v rˆtd| d i||ƒ}d|v rˆt |d ¡ |  ¡ D �]}|dkr¬| | ||< q�t | | tƒrÐt| | |ƒ||< �n†t | | tƒ�r$g ||< | | D ].}t||i||ƒ}	||	v 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|v �rÌ|d }nd	}||  	t||ƒ¡ �q˜nR| | |
 }t |t
ƒ�r(td|i|ƒ}d|v �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Ü   rT   rÏ   r  ÚtypesÚFunctionTyper	   rÞ   rÎ   )Úrulesr™   rc   Úretrá   ÚrrÚresrò   rÖ   r  r  r_   r_   r`   r     sl    





r   )r   r   )rØ   )}Ú__doc__Úpprintr[   r	  Ú	functoolsr   rØ   r   r   Ú__all__ÚversionZf2py_versionÚstderrr]   r	   rU   rY   ra   r’   rS   r   rg   rC   rj   rD   r   r   rA   r   r4   r'   rt   ry   r9   rJ   rN   rI   rL   r!   r7   r6   r   r&   rK   rO   rƒ   rM   r„   r†   rˆ   rB   r   rŠ   r<   r;   r$   r%   rF   rG   r“   rš   r@   r5   r:   r8   r   r    rE   r   rH   r    r=   r#   r?   r.   r/   r2   r-   r1   r)   r¬   r+   r3   r*   r0   r(   r°   r±   r²   r,   r>   r   r¸   r   r   r   r»   r½   r   r   r¾   r¿   Ú	ExceptionrÀ   rW   rP   rR   rQ   r"   r   râ   r   r   r   r   r   rí   r   r   r
   rú   rV   rT   r   r   r_   r_   r_   r`   Ú<module>   sü   
ù


$	
