a
    @DfX                     @   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 ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^ePdeQdeRdeSdeVdeUdeMdeZde\de]de^diZ_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Zidd Zjdd ZkG ddĄ delZmG ddƄ dƃZnddȄ Zoddʄ Zpdd̄ Zqdd΄ ZrddЄ Zsddd҄ZtddԄ Zui fddքZvdd؄ Zwddڄ Zxdd܄ Zyddބ Zzdd Z{dd Z|dd Z}dd Z~dd ZdddZdd Zi fdd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                 C   s   t ddrtj|  d S )Nverboser   )optionsgetsysstdoutwrite)t re   `/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/numpy/f2py/auxfuncs.pyrX   A   s    rX   c                 C   s   dt v S )NZcapi)debugoptionsvarre   re   rf   r   F   s    r   c                 C   s   d| v o| d dkot |  S Ntypespec	characterr&   rh   re   re   rf   _ischaracterJ   s    rn   c                 C   s   d| v o| d dkot |  S rj   rm   rh   re   re   rf   	_isstringO   s    ro   c                 C   s   t | od| vS NZcharselectorrn   rh   re   re   rf   r   T   s    r   c                 C   s   t | ot|  S Nr   r   rh   re   re   rf   r   X   s    r   c                 C   s   t | ot| S rr   rs   rh   re   re   rf   r   \   s    r   c                 C   s   t | od| v S rp   rq   rh   re   re   rf   rI   `   s    rI   c                 C   s   t | ot|  S rr   rI   r   rh   re   re   rf   rG   d   s    rG   c                 C   s   t | ot| S rr   rt   rh   re   re   rf   rH   h   s    rH   c                 C   s   t | o| d d dkS )N	dimensionz(*))rH   rh   re   re   rf   r   l   s    r   c                 C   s   d| v ot |  S Nru   rm   rh   re   re   rf   r   r   s    r   c                 C   s   t | pt| pt|  S rr   )r   rG   r&   rh   re   re   rf   rE   v   s    rE   c                 C   s   t | o| ddv S Nrk   )complexzdouble complexrE   r`   rh   re   re   rf   r    z   s    r    c                 C   s   t | o| ddkS )Nrk   logicalrz   rh   re   re   rf   r8      s    r8   c                 C   s   t | o| ddkS )Nrk   integerrz   rh   re   re   rf   r+      s    r+   c                 C   s   t | o| ddkS )Nrk   realrz   rh   re   re   rf   isreal   s    r~   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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
    
r)   c                 C   s*   t | sdS | ddvrdS t| dkS )Nr   rk   r|   r{   8rE   r`   r   rh   re   re   rf   r=      s
    r=   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
    rO   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
    rS   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
    rN   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
    rQ   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
    r$   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
    r;   c                 C   s   t | sdS t| dkS )Nr   Z32)r    r   rh   re   re   rf   r:      s    r:   c                 C   s   t | o| ddv S rx   )r   r`   rh   re   re   rf   r!      s    r!   c                 C   s"   t | o | ddko t| dkS r   r   r`   r   rh   re   re   rf   r*      s    
r*   c                 C   s"   t | o | ddv o t| dkS )Nrk   r   r   r   rh   re   re   rf   rP      s    
rP   c                 C   s"   t | o | ddv o t| dkS )Nrk   r   r   r   rh   re   re   rf   rT      s    
rT   c                 C   s"   t | o | ddv o t| dkS )Nrk   r   r   r   rh   re   re   rf   isunsignedarray   s    
r   c                 C   s"   t | o | ddv o t| dkS )Nrk   r   r   r   rh   re   re   rf   rR      s    
rR   c                 C   s"   t | o | ddv o t| dkS )Nrk   r   r   r   rh   re   re   rf   issigned_chararray   s    
r   c                 C   s"   t | o | ddv o t| dkS )Nrk   r   2r   rh   re   re   rf   issigned_shortarray   s    
r   c                 C   s"   t | o | ddv o t| dkS )Nrk   r   4r   rh   re   re   rf   issigned_array   s    
r   c                 C   s"   t | o | ddv o t| dkS )Nrk   r   r   r   rh   re   re   rf   rF     s    
rF   c                 C   s   d| v od| d v S )NattrspecZallocatablere   rh   re   re   rf   r   
  s    r   c                 C   s   d| vpt |  S rw   )rG   rh   re   re   rf   	ismutable  s    r   c                 C   s   d| v S )N
modulenamere   routre   re   rf   r@     s    r@   c                 C   s   d| v od| d kS )Nblockmodulere   r   re   re   rf   r?     s    r?   c                 C   s   d| v od| d kS )Nr   functionre   r   re   re   rf   r'     s    r'   c                 C   s"   t | rdS to t| o t|  S Nr   )r-   	wrapfuncsr'   r&   r   re   re   rf   r(     s    r(   c                 C   s   d| v od| d kS )Nr   Z
subroutinere   r   re   re   rf   rK   $  s    rK   c                 C   s   t | rdS t| ot| S r   )r-   rK   hasassumedshaper   re   re   rf   rL   (  s    rL   c                 C   s   d|  dg v S )Nvaluer   r`   rh   re   re   rf   r]   -  s    r]   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    rD   c                 C   sF   t | sdS d| v r| d }n| d }|| d v rBt| d | S dS Nr   resultnamer   )r'   r8   r   r   re   re   rf   r9   D  s    
r9   c                 C   sF   t | sdS d| v r| d }n| d }|| d v rBt| d | S dS r   )r'   r=   r   re   re   rf   r>   P  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   re   re   rf   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   re   re   rf   r"   h  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"   rX   r   re   re   rf   r#   t  s    r#   c                 C   sF   t | sdS d| v r| d }n| d }|| d v rBt| d | S dS r   )r'   rG   r   re   re   rf   rJ     s    
rJ   c                 C   s   d| v o| d S )NZ	externalsre   r   re   re   rf   r     s    r   c                 C   s   d| v od| d v S )Nf2pyenhancementsZ
threadsafere   r   re   re   rf   rM     s    
rM   c                 C   s   d| v o| d S )Nr   re   r   re   re   rf   hasvariables  s    r   c                 C   s(   d| v o&d| d v o&d| d vo&t | S )Nr   optionalrequired)r5   rh   re   re   rf   rA     s
    
rA   c                 C   s   d| v od| d v S )Nr   Zexternalre   rh   re   re   rf   r&     s    r&   c                 C   s   t |  ot| S rr   )rA   r5   rh   re   re   rf   rC     s    rC   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outinre   rh   re   re   rf   r2     s    r2   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   re   rh   re   re   rf   r3     s    



r3   c                 C   s   d|  dg v S )Nr   r   r   rh   re   re   rf   r6     s    r6   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   )rW   r3   r4   rh   re   re   rf   r1     s    r1   c                 C   s
   t |  S rr   )r1   rh   re   re   rf   r5     s    r5   c                 C   s   d|  dg v S )Ncr   r   rh   re   re   rf   r-     s    r-   c                 C   s   d|  dg v S )Ncacher   r   rh   re   re   rf   isintent_cache  s    r   c                 C   s   d|  dg v S )Ncopyr   r   rh   re   re   rf   r/     s    r/   c                 C   s   d|  dg v S )N	overwriter   r   rh   re   re   rf   r7     s    r7   c                 C   s   d|  dg v S )Ncallbackr   r   rh   re   re   rf   r.     s    r.   c                 C   s   d|  dg v S )Nr   r   r   rh   re   re   rf   r4     s    r4   c                 C   s   d|  dg v S )NZauxr   r   rh   re   re   rf   r,     s    r,   c                 C   s   d|  dg v S )NZaligned4r   r   rh   re   re   rf   isintent_aligned4  s    r   c                 C   s   d|  dg v S )NZaligned8r   r   rh   re   re   rf   isintent_aligned8  s    r   c                 C   s   d|  dg v 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| v od| d v S )Nr   privatere   rh   re   re   rf   rB     s    rB   c                 C   s   d| v S )N=re   rh   re   re   rf   r     s    r   c                 C   s   t | sdS | d d dv S )Nr   r   )"')r   rh   re   re   rf   hasinitvalueasstring	  s    r   c                 C   s   d| v S )NZnotere   rh   re   re   rf   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   re   re   rf   r     s    
r   c                 C   s   d| v S )Ncommonre   r   re   re   rf   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   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| v S )Nr   re   r   re   re   rf   r   8  s    r   c                 C   s   t | d uS rr   )r   r   re   re   rf   r   <  s    r   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   r\   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
    
rU   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
    
rW   c                 C   s   t dS )Nzlambda v,f=f:not f(v))r   )r   re   re   rf   rV   f  s    rV   c                 C   s,   z| d d dkW S  t y&   Y dS 0 d S )Nr   fortranname r   r   r   re   re   rf   r%   j  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   )r   r	   )r   r   re   re   rf   r   q  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|rd| 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    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
|rqh||v r|| d }nZ||}ttttt|rnt|rnt|s|d }t|st|st|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    

r   c                 C   s
   t | dS )Nusercoder   r   re   re   rf   r     s    r   c                 C   s   t | dddS )Nr   r   )r   r   r   re   re   rf   r     s    r   c                 C   s
   t | dS )NZpymethoddefr   r   re   re   rf   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   re   re   rf   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   re   rf   
<listcomp>  s   zgetargs2.<locals>.<listcomp>r   r   )r`   keysr   )r   r   Zauxvarsr   re   r   rf   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   kre   re   rf   r     s    r   c                 C   s*   dt |  d d }d|d | |d f S )NP         z/*%s %s %s*/r   )r   )r   lnre   re   rf   r
     s    r
   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[   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 re   rY   r   _m)
defaultsepr   re   rf   r     r  zreplace.<locals>.<listcomp>c                    s   g | ]}t | qS re   r
  r  )r   r  re   rf   r     r  r  separatorsforz#%s#)r   r   r   rY   r   r  )r   r   r  r   sepre   )r   r  r   rf   rY     s    

 rY   c                 C   s2  t |tr"|D ]}t| |} q| S | D ] }|d dkr>q*|| v r t | | trd| | g| |< t | | trt || tr| | ||  | |< n| | ||  ntt | | tr,t || tr,|dkr||  D ]$}|| | vr|| | | | |< qnt| | || | |< q*|| | |< q*| S )Nr   _r  )r   r   r   r   r   r   dict)rdarr   r   k1re   re   rf   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 rtd| d i||}d|v rt|d  |  D ]}|dkr| | ||< qt | | trt| | |||< nt | | 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
rtd|i||}d|v r|d }nd	}|| 	t|| qnR| | |
 }t |t
r(td|i|}d|v r$|d }nd	}|| 	t|| q\ntd
t| |   t || trt|| 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   )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  



'	
