o
    U=ºilX  ã                   @   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 d S )NÚverboser   )ÚoptionsÚgetÚsysÚstdoutÚwrite)Út© r_   úYC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\numpy/f2py/auxfuncs.pyrS   >   s   ÿrS   c                 C   s   dt v S )NZcapi)Údebugoptions©Úvarr_   r_   r`   r   C   ó   r   c                 C   s   d| v o| d dkot | ƒ S )NÚtypespecÚ	character©r#   rb   r_   r_   r`   Ú	_isstringG   s   ÿrh   c                 C   s   t | ƒot| ƒ S ©N)rh   r   rb   r_   r_   r`   rC   L   ó   rC   c                 C   s   t | ƒod| vS )NZcharselector©rC   rb   r_   r_   r`   ÚischaracterP   ó   rl   c                 C   s   t | ƒot| ƒS ri   )r   rh   rb   r_   r_   r`   rD   T   rm   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 ©Nrn   rg   rb   r_   r_   r`   r   ^   rj   r   c                 C   s   t | ƒpt| ƒpt| ƒ S ri   )r   rC   r#   rb   r_   r_   r`   rA   b   s   rA   c                 C   ó   t | ƒo
|  d¡dv S ©Nre   )Úcomplexzdouble complex©rA   rZ   rb   r_   r_   r`   r   f   ó   ÿr   c                 C   ó   t | ƒo
|  d¡dkS )Nre   Úlogicalrt   rb   r_   r_   r`   r4   k   ó   r4   c                 C   rv   )Nre   Úintegerrt   rb   r_   r_   r`   r'   o   rx   r'   c                 C   rv   )Nre   Úrealrt   rb   r_   r_   r`   Úisreals   rx   r{   c                 C   sH   z| d d W S  t y#   z	| d d W  Y S  t y"   Y Y d S w w )NZkindselectorÚ*Úkind©ÚKeyErrorrb   r_   r_   r`   Úget_kindw   s   ÿýr€   c                 C   s*   t | ƒsdS |  d¡dvrdS t| ƒdkS )Nr   re   ©ry   rw   Ú8©rA   rZ   r€   rb   r_   r_   r`   r9   �   ó
   r9   c                 C   ó*   t | ƒsdS |  d¡dkrdS t| ƒdkS )Nr   re   ry   ú-1rƒ   rb   r_   r_   r`   rJ   ‰   r„   rJ   c                 C   r…   )Nr   re   ry   ú-2rƒ   rb   r_   r_   r`   rN   ‘   r„   rN   c                 C   r…   )Nr   re   ry   ú-4rƒ   rb   r_   r_   r`   rI   ™   r„   rI   c                 C   r…   )Nr   re   ry   ú-8rƒ   rb   r_   r_   r`   rL   ¡   r„   rL   c                 C   ó*   t | ƒsdS |  d¡dksdS t| ƒdkS )Nr   re   rz   r‚   rƒ   rb   r_   r_   r`   r!   ©   r„   r!   c                 C   rŠ   )Nr   re   rz   Z16rƒ   rb   r_   r_   r`   r7   ±   r„   r7   c                 C   s   t | ƒsdS t| ƒdkS )Nr   Ú32)r   r€   rb   r_   r_   r`   r6   ¹   s   r6   c                 C   rq   rr   )r   rZ   rb   r_   r_   r`   r   ¿   ru   r   c                 C   s"   t | ƒo|  d¡dkot| ƒdkS )Nre   ry   Ú1©r   rZ   r€   rb   r_   r_   r`   r&   Ä   ó   
ÿr&   c                 C   ó"   t | ƒo|  d¡dv ot| ƒdkS )Nre   r�   r†   r�   rb   r_   r_   r`   rK   É   rŽ   rK   c                 C   r�   )Nre   r�   r‡   r�   rb   r_   r_   r`   rO   Î   rŽ   rO   c                 C   r�   )Nre   r�   rˆ   r�   rb   r_   r_   r`   ÚisunsignedarrayÓ   rŽ   r�   c                 C   r�   )Nre   r�   r‰   r�   rb   r_   r_   r`   rM   Ø   rŽ   rM   c                 C   r�   )Nre   r�   rŒ   r�   rb   r_   r_   r`   Úissigned_chararrayÝ   rŽ   r‘   c                 C   r�   )Nre   r�   Ú2r�   rb   r_   r_   r`   Úissigned_shortarrayâ   rŽ   r“   c                 C   r�   )Nre   r�   Ú4r�   rb   r_   r_   r`   Úissigned_arrayç   rŽ   r•   c                 C   r�   )Nre   r�   r‚   r�   rb   r_   r_   r`   rB   ì   rŽ   rB   c                 C   ó   d| v o	d| d v S )NÚattrspecZallocatabler_   rb   r_   r_   r`   r   ñ   ó   r   c                 C   s   d| vpt | ƒ S rp   rk   rb   r_   r_   r`   Ú	ismutableõ   rj   r™   c                 C   ó   d| v S )NÚ
modulenamer_   ©Úroutr_   r_   r`   r<   ù   rd   r<   c                 C   ó   d| v o	d| d kS )NÚblockÚmoduler_   rœ   r_   r_   r`   r;   ý   r˜   r;   c                 C   rž   )NrŸ   Úfunctionr_   rœ   r_   r_   r`   r$     r˜   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   rž   )NrŸ   Z
subroutiner_   rœ   r_   r_   r`   rF     r˜   rF   c                 C   s   t | ƒrdS t| ƒot| ƒS r¢   )r)   rF   Úhasassumedshaperœ   r_   r_   r`   rG     ó   rG   c                 C   sV   |   d¡rdS | d D ]}| d   |i ¡  dg ¡D ]}|dkr'd| d<   dS qqdS )Nr¤   TÚargsÚvarsrn   ú:F©rZ   )r�   ÚaÚdr_   r_   r`   r¤     s   
þÿr¤   c                 C   ó   t | ƒpt| ƒS ri   )r<   r¤   rœ   r_   r_   r`   Úrequiresf90wrapper   rm   r­   c                 C   r¬   ri   )r$   rF   rœ   r_   r_   r`   r@   $  rm   r@   c                 C   óF   t | ƒsdS d| v r| d }n| d }|| d v r!t| d | ƒS dS ©Nr   ÚresultÚnamer§   )r$   r4   ©r�   rª   r_   r_   r`   r5   (  ó   
r5   c                 C   r®   r¯   )r$   r9   r²   r_   r_   r`   r:   4  r³   r:   c                 C   r®   r¯   )r$   r7   r²   r_   r_   r`   r8   @  r³   r8   c                 C   r®   r¯   )r$   r   r²   r_   r_   r`   r   L  r³   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   r®   r¯   )r$   rC   r²   r_   r_   r`   rE   f  r³   rE   c                 C   ó   d| v o| d S )NZ	externalsr_   rœ   r_   r_   r`   r   r  rm   r   c                 C   r–   )NÚf2pyenhancementsZ
threadsafer_   rœ   r_   r_   r`   rH   v  s   
ÿrH   c                 C   r´   )Nr§   r_   rœ   r_   r_   r`   Úhasvariables{  rm   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   r–   )Nr—   Zexternalr_   rb   r_   r_   r`   r#   „  r˜   r#   c                 C   s   t | ƒ ot| ƒS ri   )r=   r1   rb   r_   r_   r`   r?   ˆ  rj   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 r&dS d| d v r.dS d	| d v r6dS dS )
NÚintentr   Úhider   ÚinplaceÚinÚoutÚinoutÚoutinr_   rb   r_   r_   r`   r.   Œ  s   r.   c                 C   sD   d| v o!d| 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_   rb   r_   r_   r`   r/   ž  s   
ÿ
ÿ
þ
þr/   c                 C   ó   d|   dg ¡v S )Nr½   r¹   r©   rb   r_   r_   r`   r2   ¤  rm   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 ri   )r-   rb   r_   r_   r`   r1   ­  ó   
r1   c                 C   rÀ   )NÚcr¹   r©   rb   r_   r_   r`   r)   ±  rm   r)   c                 C   rÀ   )NÚcacher¹   r©   rb   r_   r_   r`   Úisintent_cacheµ  rm   rÄ   c                 C   rÀ   )NÚcopyr¹   r©   rb   r_   r_   r`   r+   ¹  rm   r+   c                 C   rÀ   )NÚ	overwriter¹   r©   rb   r_   r_   r`   r3   ½  rm   r3   c                 C   rÀ   )NÚcallbackr¹   r©   rb   r_   r_   r`   r*   Á  rm   r*   c                 C   rÀ   )Nr»   r¹   r©   rb   r_   r_   r`   r0   Å  rm   r0   c                 C   rÀ   )NZauxr¹   r©   rb   r_   r_   r`   r(   É  rm   r(   c                 C   rÀ   )NZaligned4r¹   r©   rb   r_   r_   r`   Úisintent_aligned4Í  rm   rÈ   c                 C   rÀ   )NZaligned8r¹   r©   rb   r_   r_   r`   Úisintent_aligned8Ñ  rm   rÉ   c                 C   rÀ   )NZ	aligned16r¹   r©   rb   r_   r_   r`   Úisintent_aligned16Õ  rm   rÊ   Z	INTENT_INZINTENT_INOUTZ
INTENT_OUTZINTENT_HIDEZINTENT_CACHEZINTENT_CZOPTIONALZINTENT_INPLACEZINTENT_ALIGNED4ZINTENT_ALIGNED8ZINTENT_ALIGNED16c                 C   r–   )Nr—   Úprivater_   rb   r_   r_   r`   r>   ã  r˜   r>   c                 C   rš   )Nú=r_   rb   r_   r_   r`   r   ç  rd   r   c                 C   s   t | ƒsdS | d d dv S )Nr   rÌ   )ú"ú')r   rb   r_   r_   r`   Úhasinitvalueasstringë  r¥   rÏ   c                 C   rš   )NZnoter_   rb   r_   r_   r`   r   ñ  rd   r   c                 C   r®   r¯   )r$   r   r²   r_   r_   r`   r   õ  r³   r   c                 C   rš   )NÚcommonr_   rœ   r_   r_   r`   r     rd   r   c                 C   s4   t | ƒrdS t| ƒr| 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   rš   )NrÑ   r_   rœ   r_   r_   r`   r     rd   r   c                 C   s   t | ƒd uS ri   )r   rœ   r_   r_   r`   r     s   r   c                 C   ó   dS )Nr   r_   rb   r_   r_   r`   Úistrue"  ó   rÖ   c                 C   rÕ   r¢   r_   rb   r_   r_   r`   Úisfalse&  r×   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 ri   )Úmess)ÚselfrÝ   r_   r_   r`   Ú__init__0  rÁ   zthrow_error.__init__c                 C   s   d|| j f }t|ƒ‚)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   óN   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  ó
   
rP   c                  G   rá   )Nrâ   rã   rä   rå   z or ræ   rì   r_   r_   r`   rR   @  rñ   rR   c                 C   s   t dƒS )Nzlambda v,f=f:not f(v))rê   )rí   r_   r_   r`   rQ   H  rd   rQ   c                 C   s(   z	| d d dkW S  t y   Y dS w )Nrµ   ÚfortrannameÚ r   r~   rœ   r_   r_   r`   r"   L  s
   ÿr"   c                 C   sT   z| d d }|dkrt ‚|std| d  ƒ t ‚W |S  t y)   | d }Y |S w )Nrµ   rò   ró   z"Failed to use fortranname from %s
r±   )r   r	   )r�   r±   r_   r_   r`   r   S  s   ÿýþ
þr   c                 C   s
  z	| d   |¡}W n
 ty   Y d S w |sd S |dkr#t|tƒr#d S t|tƒr4|t|ƒkr0d S || }|d d… dkrƒ|rQd| d t|ƒ d |dd …  }n|dd … }|dd … dkry|rq|d d… d	 t|ƒ d
 }|S |d d… }|S 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   r   Ú
isinstanceÚstrÚlistrè   Úreprr	   )r�   Z	blocknameÚcommentÚcounterÚrr_   r_   r`   Úgetmultilineblocka  sF   ÿ
ÿÿÿ
ÿüþ
ÿrý   c                 C   ó
   t | dƒS )NZcallstatement©rý   rœ   r_   r_   r`   r     rÁ   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ƒƒ| ƒr0| 	ddg¡ | d	 D ]B}| d
 | }t
|ƒrAq4||v rL|| d }n%||ƒ}tttttƒƒ|ƒr[n	t|ƒr`n|d }t|ƒslt|ƒrq| d¡ | |¡ q4d || ¡}	|	s‚d}	|	S )NZcallprotoargumentr   )rú   z<warning: callstatement is defined without callprotoargument
r   )Úgetctypezchar*Zsize_tr¦   r§   Z_typedefr|   ú,Z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   rþ   )NÚusercoderÿ   rœ   r_   r_   r`   r   §  rÁ   r   c                 C   s   t | ddd�S )Nr  r   )rû   rÿ   rœ   r_   r_   r`   r   «  s   r   c                 C   rþ   )NZpymethoddefrÿ   rœ   r_   r_   r`   r   ¯  rÁ   r   c                 C   sv   g g }}d| v r7| d }d| v r3| d D ]}||v r |  |¡ q|D ]}||vr.|  |¡ q#||fS | 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 rAˆd D ]}|ˆ v r.| |¡ q#ˆ D ]}||vr<| |¡ q1ˆ |fS |ˆ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*/r|   )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 ri   r_   )ÚxÚyrí   r_   r_   r`   Ú<lambda>ä  s    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 )Nro   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 ];}|dkr-q&dˆ v r>|ˆ d v r>ˆ d | }nˆ}t ˆ | tƒrWˆ d| | tˆ | ƒ¡¡‰q&ˆ d| ˆ | ¡‰q&ˆS )Nc                    s   g | ]}t ˆ|ˆ ƒ‘qS r_   ©rT   ©r	  Ú_m)Ú
defaultsepr÷   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   s&  t |tƒr|D ]}t| |ƒ} q| S | ¡ D ]{}|d dkrq|| v rŠt | | tƒr0| | g| |< t | | tƒrSt || tƒrI| | ||  | |< q| |  || ¡ qt | | tƒr‰t || tƒr‰|dkr~||  ¡ D ]$}|| | vr}|| | | | |< qkt| | || ƒ| |< q|| | |< q| S )Nr   Ú_r  )rö   rø   r   r  r÷   ré   Údict)ÚrdÚarrª   r  Úk1r_   r_   r`   r     s4   
€€€r   c                 C   s†  i }t | tƒr | D ]}t|||ƒ}t||ƒ}d|v r |S q	|S d| v r,| d |ƒs,|S d| v rEtd| d i||ƒ}d|v rEt |d ¡ |  ¡ D ]÷}|dkrV| | ||< qIt | | tƒrgt| | |ƒ||< n¶t | | tƒrŽg ||< | | D ]¦}t||i||ƒ}	||	v r�||  	|	| ¡ qv|d dkr•qIt | | t
ƒ�rg ||< | |  ¡ D ]u}
t |
tjƒ�r|
|ƒ�rt | | |
 tƒré| | |
 D ]M}t |t
ƒrÞtd|i||ƒ}d|v rÜ|d }nd	}||  	t||ƒ¡ qÄ| | |
 }t |t
ƒ�rtd|i|ƒ}d|v �r|d }nd	}||  	t||ƒ¡ q§td
t| | ƒ ƒ t || tƒ�r@t|| ƒdk�r6|| d ||< || g k�r@||= qI|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     sv   

þ€



€€r   )r   r   )ró   )}Ú__doc__Úpprintr[   r$  Ú	functoolsr   ró   r   r   Ú__all__ÚversionZf2py_versionÚstderrr]   r	   rU   rY   ra   r£   rS   r   rh   rC   rl   rD   r   r   rA   r   r4   r'   r{   r€   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þ   
ù


$	
