a
    ;ecw                     @   sX  d Z ddlmZ ej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mZmZ ddlT g d	Zg Zi ai Zd
d
d
dddddddddddddddZdddddddddddddddddd d d!Zd"d#d$d%d&d%d'd(d)d*d+d,d-d.d/d0d1d2d3d!Zd"d#d%d%d'd)d+d,d4d4d4d5d3d6Zd
d
d7d8d8d9dd:d;dd<d=d>d?d@dA	dBdBdCdDdDdEdBdBdCdDdDd9ddFd;dd<dGdHdCidHd7idHdFidIaee ee etee\aZetZg adJdK ZdLdLdMdNdNdOdPdQdNdRdSdTdSdUdUdVdWdXdYZ dZd[ Z!d\d] Z"d^d_ Z#dvd`daZ$dbdc Z%ddde Z&dfdg Z'dhdi Z(djdk Z)dldm Z*dndo Z+dwdpdqZ,drds Z-dtdu Z.dS )xa  
Copyright 1999 -- 2011 Pearu Peterson all rights reserved.
Copyright 2011 -- present NumPy Developers.
Permission to use, modify, and distribute this software is given under the
terms of the NumPy License.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
   )__version__    N)markoutercomma)cb_rules)iso_c_binding_mapisoc_c2pycode_mapiso_c2py_map)*)getctypegetstrlength
getarrdimsgetpydocsigngetarrdocsigngetinitsign2maproutsign2mapmodsign2mapcb_sign2mapcb_routsign2mapcommon_sign2mapprocess_f2cmap_dictfloatintlongcomplexstringbytes)doubler   long_doublecharsigned_charunsigned_charshortunsigned_shortr   r   	long_longunsignedcomplex_floatcomplex_doublecomplex_long_doubler   	characterZ
NPY_DOUBLEZ	NPY_FLOATZNPY_LONGDOUBLEZNPY_BYTEZ	NPY_UBYTEZ	NPY_SHORTZ
NPY_USHORTZNPY_INTZNPY_UINTZNPY_LONGZ	NPY_ULONGZNPY_LONGLONGZNPY_ULONGLONGZ
NPY_CFLOATZNPY_CDOUBLEZ
NPY_STRING)r   r   r   r   r!   r    r"   r#   r   r%   r   unsigned_longr$   unsigned_long_longr&   r'   r(   r   r)   dfgbBhHiIlLqQFDGScNy)r   r   r   r    r"   r   r   r$   r&   r'   r(   r   r)   r   r   ) 48Z1216r    r"   r$   r!   r#   r%   r+   )	r@   12rA   rB   -1z-2z-4z-8r&   r'   r(   )r@   rB   rC   Z24Z32r   )r@   rD   rE   rA   rB   r@   )realintegerr   Zcomplexkindlogicalzdouble complexzdouble precisionbytec              
   C   s   t ta| d u r&d} tj| s&d S zhtd|  t	| $}t
|  i i }W d    n1 sh0    Y  tt|td\aatd W n0 ty } ztd|  W Y d }~n
d }~0 0 d S )Nz.f2py_f2cmapzReading f2cmap from {!r} ...
Tz1Successfully applied user defined f2cmap changes
z;Failed to apply user defined f2cmap changes: %s. Skipping.
)copydeepcopyf2cmap_default
f2cmap_allospathisfileoutmessformatopenevalreadlowerr   c2py_mapf2cmap_mapped	Exceptionerrmess)Zf2cmap_filer-   r,   msg r]   H/var/www/sunrise/env/lib/python3.9/site-packages/numpy/f2py/capi_maps.pyload_f2cmap_file   s    

2r_   z%gz%Lgz%dz%hhuz%hdz%huz%uz%ldz%luz(%g,%g)z	(%Lg,%Lg)z\"%s\"z'%c')r   r   r   r   r    r!   r"   r#   r   r%   r   r*   r$   r&   r'   r(   r   r)   c                 C   s  d}t | rRd| v r| d }n| d }|| d v rBt| d | S td|  nt| r^|S t| rjdS t| rvdS d| v r| d  tv r| d  }t| }|d	 }d
| v rd| d
 v rz|| d
 d  }W n2 ty   td| d d| d
 d f  Y n0 nd| d
 v r|d tv r8t|d  }z|| d
 d  }W n ty   |tv rnt| }z|t	| d
 d  }W n@ ty   td|| d
 d ||| d
 d t
 f  Y n0 Y n0 nt| std|   |S )z
    Determines C type
    voidresultnamevars,getctype: function %s has no return value?!
r)   r   typespecr@   Zkindselectorr	   z$getctype: "%s %s %s" not supported.
kindz}getctype: "%s(kind=%s)" is mapped to C "%s" (to override define dict(%s = dict(%s="<C typespec>")) in %s/.f2py_f2cmap file).
z2getctype: No C-type found in "%s", assuming void.
)
isfunctionr
   r[   ZissubroutineZischaracter_or_characterarrayZisstring_or_stringarrayrW   rN   KeyErrorstrrO   getcwd
isexternal)varctypeare   Zf2cmapr]   r]   r^   r
      sZ    



r
   c                 C   s   t dd| } | S )a^  Rewrite Fortran expression as f2py supported C expression.

    Due to the lack of a proper expression parser in f2py, this
    function uses a heuristic approach that assumes that Fortran
    arithmetic expressions are valid C arithmetic expressions when
    mapping Fortran function calls to the corresponding C function/CPP
    macros calls.

    z\blen\bZ	f2py_slen)resub)exprr]   r]   r^   f2cexpr   s    rr   c                 C   s   t | rJd| v r| d }n| d }|| d v r>t| d | S td|  t| sbtdt|   d}d| v r| d }d|v r|d }nd	|v rt|d	 }td
|std|rt| rtdt|   d}|S )Nra   rb   rc   z0getstrlength: function %s has no return value?!
z;getstrlength: expected a signature of a string but got: %s
rD   charselectorr	   lenz\(\s*(\*|:)\s*\)z(\*|:)zMgetstrlength:intent(hide): expected a string with defined length but got: %s
rF   )	isstringfunctionr   r[   isstringreprrr   ro   matchisintent_hide)rl   rn   rt   r]   r]   r^   r      s2    


r   c           	      C   s  i }t |r4t|s4t||d< d|d< d|d< nJt|rXd|d< d|d< d|d< n&t|r~t|d }d||d< ztt|d |d< W n ty   Y n0 d	||d< tt	||d< tt	|d
g dd
 |d< t
t	|D ]|}g }|| tv r|| g}n,tD ]&}td| || r|| q|D ](}t|t| krDd||<  qqDqd\|d< }|D ].}|d }|dvrd|d ||f |d< q|d r|d d d
 |d< d\|d< }|d D ]|}|d }|dvrd|d ||f |d< nLt|r>td|  d|d |df |d< n|rtdt| t|f  q|d r~|d d d
 |d< |S )Nsize0rankr@   dimsrD   	dimensionr	   ,r   z	rank*[-1]z.*?\b%s\b.*)r@   r   Zsetdims)r	   :z(*)z(:)z%s#varname#_Dims[%d]=%s,Z	cbsetdimsz?getarrdims:warning: assumed shape array, using 0 instead of %r
r   z]getarrdims: If in call-back function: array argument %s must have bounded dimensions: got %s
)rv   isarrayr   isscalarrK   joinrw   rU   rZ   rt   rangedepargsro   rx   appendindexisintent_inrR   r[   )	rn   rl   verboseretdimr3   vvar,   r]   r]   r^   r     sx    









r   c                 C   s  t |rPd|v r|d }n|d }||d v r@t||d | S td|  dS | |  }}d}t|rld}nt|rxd}| }t|r|d	 D ]$}|d d
 dkr|d
d  } qqd}t|}	t|rt| |\}}
d|
 }t	|r4t|rd| |t
|	 t|	 |f }nd| |t
|	 |f }d|t
|	 f }nNt|rt|r^d| |t||f }nd| |t||f }d|t|f }nt|r|d }tt|}d| ||t|	 d||f }| |krd| |t|	 d|f }nd||t|	 d|| f }n~t|rvd}| tv rdt|  tv rddtt|   v rdtt|   d }|| ks`d| }nd}d| |f }|}ntd|   ||fS )Nra   rb   rc   rd   r@   r@   r@   inputz	in/outputintent   out=z, optional\n    Default: %sz%s : %s rank-0 array(%s,'%s')%sz%s : %s %s%sz%s : %sz*%s : %s rank-0 array(string(len=%s),'c')%sz%s : %s string(len=%s)%sz%s : string(len=%s)r~   z.%s : %s rank-%s array('%s') with bounds (%s)%sr   )%s : rank-%s array('%s') with bounds (%s)z8%s : rank-%s array('%s') with bounds (%s) and %s storageargnamez => %sz%s : call-back function%sz7getpydocsign: Could not resolve docsignature for "%s".
)rg   r   r[   r   isintent_inoutisintent_outr
   hasinitvaluer   r   rX   c2pycode_maprv   r   r   rw   rt   r   rk   lcb_maplcb2_map)rn   rl   afsigZsigoutoptout_akinitrm   showinitr   r|   Zuar]   r]   r^   r   V  s    









*

r   c                 C   s   t |}t|r*t|s*d| t|f }nVt|rJd| t| t| f }n6t|r|d }tt|}d| |t| d	|f }|S )Nz%%s : rank-0 array(string(len=%s),'c')z%s : rank-0 array(%s,'%s')r~   r   r   )
r
   rv   r   r   r   rX   r   rw   rt   r   )rn   rl   rm   r   r   r|   r]   r]   r^   r     s&    
r   c                 C   sL  t |rd\}}nd\}}t|rD|d }|}t|s@t|ri }zb|d }d|v rzt|dd d\|d< |d	< n*t|i i }t|jt|j	 |d< |d	< W n" t
y   td
|| f Y n0 t|rd|d |d	 f }n\t |rD|s d\}}|d dkr&d|dd dd }|d dkrDd|dd  }||fS )N)z""z''r   =r   r   r   @,@init.rinit.izMgetinit: expected complex number `(r,i)' but got `%s' as initial value of %r.z (capi_c.r=%s,capi_c.i=%s,capi_c)r   'z"%s""z\"z'%s')rv   r   	iscomplexiscomplexarrayr   splitrU   ri   rG   imagrZ   
ValueErrorr   replace)rn   rl   r   r   r   r   r]   r]   r^   r     sD    


"


r   c                 C   sD   t | st| r,t| }| d d|}|S t| s<t| r@dS dS )Nrs   Zf2py_lenrD   )rv   isstringarrayr   getZischaracterZischaracterarray)rl   elsizer]   r]   r^   
get_elsize  s    r   c              "   C   sH  | }t |r:|d D ]$}|dd dkr|dd } q:q| |t|d}g }t D ]\}}||rV|d|  qV|rd||d< nd|d< t|rd	|d
< n&|d tv rt|d  |d
< nd|d
< t| |\|d< |d< t	|r$t
|r$t|s$t|d dd d\|d< |d< t|r| |d< | tv rt|  |d< tt|   d |d< tt|   d |d< tt|   d |d< tt|   d |d< n | |d< td| tt f  t|rt||d< t|rt|t| |}t|d }|d tv r&t|d  |d< t||d < t|rtd!t d"td#td$td%td&t
d't t!t"t
d(td)td*t#d+t$d,t%d-t t&t"t%d.td/t'd/t(d0g"}	g }
t)d1t*|	d2D ]&}|	| |r|
|	|d   qt|r|
d3| |d f  t|rd4t+d5d6 |d |}|
d7|  t|rBd8| |d d4|
f |d9< n"d:|d | |d d4|
f |d9< t!|r|d t,v rd;| t,|d  f |d<< t|rd=| | f |d<< t|rd>|  |d<< |d t,v rd?| t,|d  f |d@< dAt,|d   |dB< t|rdC| | f |d@< t-| |\|dD< |dE< t.|rD|dF |dF< |S )Gz
    varname,ctype,atype
    init,init.r,init.i,pytype
    vardebuginfo,vardebugshowvalue,varshowvalue
    varrformat

    intent
    r   Nr   r   )varnameZ
outvarnamerm   zF2PY_%s|ZF2PY_INTENT_INr>   Z
varrformatrm   Or   r   r   r   r   r   r   Z	cbnamekeyZcbname
maxnofargs
nofoptargsZdocstrZcbdocstrZlatexdocstrZcblatexdocstrz5sign2map: Confused: external %s is not in lcb_map%s.
lengthr~   atyper   r   outputZinoutputrequiredoptionalhiddenzcomplex scalarZscalarr   arrayzcomplex arrayzstring arrayzcomplex functionfunctioncallbackZ	auxiliaryr      zslen(%s)=%sr   c                 S   s   d| |f S )Nz%s|%sr]   )xr?   r]   r]   r^   <lambda>1      zsign2map.<locals>.<lambda>zdims(%s)zdebug-capi:%s=>%s:%sZvardebuginfozdebug-capi:%s %s=%s:%sdebug-capi:%s=%sZvardebugshowvalue"debug-capi:slen(%s)=%%d %s=\"%%s\"zdebug-capi:%s=%%pz#name#:%s=%sZvarshowvalue%sshowvalueformatz#name#:slen(%s)=%%d %s=\"%%s\"	pydocsignpydocsignoutnote)/r   r
   Zisintent_dictitemsr   r   r   c2buildvalue_mapr   r   r   r   r   rk   r   r   r[   listkeysrv   r   
dictappendr   rK   
c2capi_mapr   	debugcapir   r   Z
isrequired
isoptionalry   Zl_andr   Zl_notr   r   iscomplexfunctionrg   isintent_callbackZisintent_auxr   rt   mapcformat_mapr   hasnote)rn   rl   r   r   r   Zintent_flagsr-   sr   ZilZrlr3   Zddimr]   r]   r^   r     s    	
















r   c           	      C   s  | d }t | }||dd| | t|td| || t| pJdt| pTdt| p^dd}d|v rvd|d< nd|d< d|v rd	|d
< nd
|d
< i ad| v r:| d 	 D ]}|t
jv rt
j| D ]j}|d }d| d | v r(| d | d 	 D ]*}| d | d | |d kr|} q(q|d t|< qqn0d| v rj| d rjtd|d t| d f  t| tpxd|d< t| rd| v r| d }n| d }||d< t|| \|d< |d< t| d | |d< t| r| d | d |d< dg| d | d< |d tv r&t|d  |d< nd|d< tdt|d   t| r|d tv rrd|t|d  f |d< t| rd ||f |d< t| rt| d | |d!< |d! d"krtd#t| d   d$|d!< t| r| d |d< dg| d< |S )%zV
    name,NAME,begintitle,endtitle
    rname,ctype,rformat
    routdebugshowvalue
    rb   _\_	end of %sr@   )rb   ZtexnameZ
name_lowerNAME
begintitleendtitleZfortrannameZFORTRANNAMEZcallstatementusercode	usercode1	F_FUNC_USF_FUNCZF_WRAPPEDFUNC_USZF_WRAPPEDFUNCZuser   r   r   Z	externalszMroutsign2map: Confused: function %s has externals %s but no "use" statement.
Zcallprotoargumentra   rnamer   r   rc   rm   r   Z
resultnoteSee elsewhere.Zrformatr   z.routsign2map: no c2buildvalue key for type %s
r   Zroutdebugshowvaluer   ZrlengthrF   zzroutsign2map: expected explicit specification of the length of the string returned by the fortran function %s; taking 10.
10)Zgetfortrannamer   rW   uppergentitleZgetcallstatementgetusercodegetusercode1r   r   r   Zcb_mapr[   rw   Zgetcallprotoargumentrg   r   r
   Zhasresultnoter   r   r   ru   r   r   )	routrb   fnamer   uZunlnr   rn   r]   r]   r^   r   M  s    





















r   c                 C   s   t | r.| d | d  | d ddd}n$| d | d  | d ddd}t| p\g |d< t| rv| d |d< t| pd|d	< t| pd|d
< | d rt| d d pd|d< nd|d< t| pd|d< d| v r| d |d< d| v r| d |d< |S )z
    modulename
    rb   r   r   )Zf90modulenameZF90MODULENAMEZtexf90modulename)
modulenameZ
MODULENAMEZtexmodulenameZrestdocr   r@   r   r   bodyr   Zinterface_usercodeZpymethoddefZcoutputZf2py_wrapper_output)ismoduler   r   Z
getrestdocr   r   r   Zgetpymethoddef)mr   r]   r]   r^   r     s.    

r   c                 C   s   d| i}|d |d< t ||d< |d tv rHt|d  |d< t||d< |d tv rhdt|d   |d< t|rt|t| |}t| |\|d< |d	< t|r|d
 |d
< dg|d
< |S )Nr   Z	varname_irm   r   r   r   r   r   r   r   r   )	r
   r   r   r   r   r   r   r   r   )rn   rl   r   r   r]   r]   r^   r     s    
r   c                 C   s  d| d |f dd}t | r`d| d v r0d}nd}d|| d  | d  f |d	< d
|d< n|d |d	< d|d< | d |d< t|d |d< td|d  |d< t| |d< d|d< |d dkrd|d< n|d |d< |d dkrt| rd|d< nd|d< |d tv r$dt|d   |d< t| r:t| |d< t	| rd| v rX| d }n| d }t
| d | r| d | d |d< dg| d | d< ||d< t|| \|d< |d < t| rd!|d< n t
| r| d |d< dg| d< d"}d"}d#| v rLd| v rL| d# D ]<}| d | }ttt|r|d$ }t|r|d$ }qt||d%< t||d&< t
| rt	| rd| v r| d |d'< dg| d< |S )(z\
    name,begintitle,endtitle,argname
    ctype,rctype,maxnofargs,nofoptargs,returncptr
    zcb_%s_in_%srb   r@   )rb   
returncptrr   r   r   z	%s(%s,%s)ZcallbacknameexternZstaticr   r   r   r   rm   r`   Zrctyper   z3
#ifdef F2PY_CB_RETURNCOMPLEX
return_value=
#endif
r   zreturn_value=r   r   Z	strlengthra   rc   r   r   r   r   r   z8
#ifdef F2PY_CB_RETURNCOMPLEX
#ctype#
#else
void
#endif
r   argsr   r   r   Zroutnote)r   rW   r   r   r
   r   r   ru   r   rg   r   r   Zl_orr   r   r   rw   )r   Zumr   r   rn   Znofargsr   rl   r]   r]   r^   r     sz    














r   c                 C   s   | t |d}t|rd|d< |d tv rFt|d  |d< t||d< |d tv rfdt|d   |d< t|rt|t| |}nt|rt	||d< d	|d
< t
| |\|d< |d< t|r|d |d< dg|d< t| ||d< |S )N)r   rm   r   rm   r   r   r   r   rz   rD   r|   r   r   r   r   Z	arrdocstr)r
   r   r   r   r   r   r   r   rv   r   r   r   r   )rn   rl   r   r]   r]   r^   r     s&    
r   )r   )N)/__doc__r@   r   versionZf2py_versionrK   ro   rO   Zcrackfortranr   r   Z	_isocbindr   r   r   Zauxfuncs__all__r   r   r   rX   r   r   r   rN   updater   r   rL   rM   rY   r_   r   r
   rr   r   r   r   r   r   r   r   r   r   r   r   r   r]   r]   r]   r^   <module>   s&  


3
=J#jQ
R