a
    hÝEbMz  ã                   @   sb  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T g d¢Z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œZdddddddddddddddddœZerà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-d.d/œZe�r6d"d#d0d%d1d%d2d3d(d4d*d+d5d6d,d-d7d8d!œZd"d#d%d%d2d(d*d+d9d9d9d:d;œZd
d
d<d=d=d>œdd?d@ddAdBdCdDdEdFœ	dGdGdHdIdIdJœdGdGdHdIdId>œddKd@ddAdLœdMdHidMd<idMdKidMdidNœ	ae t¡ZdOdP„ ZdQdQdRdSdSdTdUdVdSdWdXdYdXdZdZd[d\d]œZd^d_„ Zd`da„ Zdvdbdc„Zddde„ Zdfdg„ Zdhdi„ Zdjdk„ Z dldm„ Z!dndo„ Z"dwdpdq„Z#drds„ Z$dtdu„ Z%dS )xa)  

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 License.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
$Date: 2005/05/06 10:57:33 $
Pearu Peterson

é   )Ú__version__é    N)Úmarkoutercomma)Úcb_rules)Ú*)ÚgetctypeÚgetstrlengthÚ
getarrdimsÚgetpydocsignÚgetarrdocsignÚgetinitÚsign2mapÚroutsign2mapÚmodsign2mapÚcb_sign2mapÚcb_routsign2mapÚcommon_sign2mapTÚfloatÚintÚlongÚcomplexÚstring)Údoubler   Úlong_doubleÚcharÚsigned_charÚunsigned_charÚshortÚunsigned_shortr   r   Ú	long_longÚunsignedÚcomplex_floatÚcomplex_doubleÚcomplex_long_doubler   Z
NPY_DOUBLEZ	NPY_FLOATZ
NPY_STRINGZ	NPY_UBYTEZNPY_BYTEZ	NPY_SHORTZ
NPY_USHORTZNPY_INTZNPY_UINTZNPY_LONGZ
NPY_CFLOATZNPY_CDOUBLE)r   r   r   r   r   r   r   r   r   r    r   r   r!   r"   r#   r   ZNPY_LONGDOUBLEZ	NPY_ULONGZNPY_LONGLONGZNPY_ULONGLONG)r   r   r   r   r   r   r   r   r   r    r   Úunsigned_longr   Úunsigned_long_longr!   r"   r#   r   ÚdÚfÚ1ÚbÚsÚwÚiÚuÚlÚLÚFÚDÚc)r   r   r   r   r   r   r   r   r   r    r   r   r!   r"   r#   r   ÚgÚBÚhÚHÚIÚqÚQÚGÚSÚNÚy)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>   r(   Ú2r?   r@   ú-1z-2z-4z-8r!   r"   r#   )r>   r@   rA   Z24Z32r   )r>   r(   rB   r?   r@   r>   )	ÚrealÚintegerr   ZcomplexkindÚlogicalzdouble complexzdouble precisionÚbyteÚ	characterc                 C   sÆ  t  t¡a| d u r&d} tj | ¡s&d S �zftd | ¡ƒ t	| dƒ� }t
| ¡ i i ƒ}W d   ƒ n1 sh0    Y  | ¡ D ]6\}}| ¡ D ]}|| || ¡ < qŠ|| || ¡ < qz| ¡ D ]È}|tvrÎi t|< ||  ¡ D ]¦}|| | tv �rR|t| v �r"td||t| | || | f ƒ || | t| |< td|||| | f ƒ qÚtd|||| | || | tt ¡ ƒf ƒ qÚqºtdƒ W n2 t�yÀ } ztd| ƒ W Y d }~n
d }~0 0 d S )	Nz.f2py_f2cmapzReading f2cmap from {!r} ...
Úrz3	Warning: redefinition of {'%s':{'%s':'%s'->'%s'}}
z	Mapping "%s(kind=%s)" to "%s"
z5	Ignoring map {'%s':{'%s':'%s'}}: '%s' must be in %s
z1Successfully 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ÚitemsÚkeysÚlowerÚc2py_mapÚerrmessÚlistÚ	Exception)Zf2cmap_filer'   r&   ÚkZd1Zk1Úmsg© r_   úT/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/numpy/f2py/capi_maps.pyÚload_f2cmap_file®   sD    
.ÿÿ"ÿÿra   z%gz%Lgz%dz%hhuz%hdz%huz%uz%ldz%luz(%g,%g)z	(%Lg,%Lg)ú%s)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| ƒ �nxt| ƒr^|S d| v �r´| d  ¡ tv �r´| d  ¡ }t| }|d }d| v �rÊd	| d v rôz|| d d	  }W n0 tyð   td
| d d	| d d	 f ƒ Y n0 n¾d| d v �rÊ|d tv �rt|d  }z|| d d  }W n€ t�y°   |tv �rRt| }z|t| d d ƒ }W n@ t�yª   td|| d d ||| d d t 	¡ f ƒ Y n0 Y n0 nt
| ƒ�sÊtd|  ƒ |S )z
    Determines C type
    ÚvoidÚresultÚnameÚvarsú,getctype: function %s has no return value?!
Ú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   rZ   ZissubroutinerX   rM   ÚKeyErrorÚstrrN   ÚgetcwdÚ
isexternal)ÚvarÚctypeÚarh   Zf2cmapr_   r_   r`   r   ï   sR    

ÿ
ÿÿ
r   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 r˜|d	 }t d
|¡s°t d|¡rÌt| ƒrÈtdt| ƒ ƒ d}|S )Nrd   re   rf   z0getstrlength: function %s has no return value?!
z;getstrlength: expected a signature of a string but got: %s
r(   Zcharselectorr   Úlenz\(\s*(\*|:)\s*\)z(\*|:)zMgetstrlength:intent(hide): expected a string with defined length but got: %s
rC   )Úisstringfunctionr   rZ   ÚisstringÚreprÚreÚmatchÚisintent_hide)ro   rq   rr   r_   r_   r`   r     s2    

ÿ
ÿr   c           	      C   s†  i }t |ƒr8t|ƒs8t|ƒ|d< |d |d< d|d< �nJt|ƒr\d|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�rHd||<  qö�qHqöd\|d< }|D ].}|d }|dv�r„d|d ||f |d< �q„|d �rÒ|d d d
… |d< d\|d< }|d D ]|}|d }|dv�rd|d ||f |d< nLt|ƒ�rBtd| ƒ d|d |df |d< n|�rætdt| ƒt|ƒf ƒ �qæ|d �r‚|d d d
… |d< |S )NÚdimsÚsizer(   ÚrankÚ0r>   Ú	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
)rt   Úisarrayr   ÚisscalarrJ   Újoinru   rT   r\   rr   ÚrangeÚdepargsrv   rw   ÚappendÚindexÚisintent_inrQ   rZ   )	rq   ro   ÚverboseÚretÚdimr,   Ú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 … } q²qŒd}t|ƒ}	t|ƒrÜt| |ƒ\}}
d|
 }t	|ƒ�r4t|ƒ�rd| |t
|	 t|	 |f }nd| |t
|	 |f }d|t
|	 f }�nNt|ƒ�r„t|ƒ�r^d| |t|ƒ|f }nd| |t|ƒ|f }d|t|ƒf }nþt|ƒ�r|d }tt|ƒƒ}d| ||t|	 d |¡|f }| |k�ræd| |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 )Nrd   re   rf   rg   ©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".
)rj   r
   rZ   rˆ   Úisintent_inoutÚisintent_outr   Úhasinitvaluer   r‚   rY   Úc2pycode_maprt   r   r�   ru   rr   rƒ   rn   Úlcb_mapÚlcb2_map)rq   ro   ÚafÚsigZsigoutÚoptÚout_ar]   Úinitrp   Úshowinitr‹   r{   Zuar_   r_   r`   r
   w  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   rt   r�   r   r‚   rY   r˜   ru   rr   rƒ   )rq   ro   rp   rœ   r‹   r{   r_   r_   r`   r   Á  s&    ÿ
ÿÿýr   c                 C   sL  t |ƒrd\}}nd\}}t|ƒ�rD|d }|}t|ƒs@t|ƒrèi }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|ƒræd|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')rt   r—   Ú	iscomplexÚiscomplexarrayr   ÚsplitrT   rl   rD   Úimagr\   Ú
ValueErrorr�   Úreplace)rq   ro   rŸ   r    rŠ   rŒ   r_   r_   r`   r   Ó  sD    


ÿÿ"
ÿ
ÿ
r   c              "   C   s<  | }t |ƒr:|d D ]$}|dd… dkr|dd… } q:q| |t|ƒdœ}g }t ¡ D ]\}}||ƒrV| d| ¡ qV|rŠd |¡|d< nd|d< t|ƒr¤d	|d
< n&|d tv rÂt|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 �ržt|  |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|ƒ�rÔt|ƒ|d< t|ƒ�rüt|t| |ƒƒ}t |d ¡}|d tv �rt|d  |d< t|ƒ�r¸t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'd/g"}	g }
t(d0t)|	ƒd1ƒD ]&}|	| |ƒ�r”|
 |	|d  ¡ �q”t|ƒ�rÜ|
 d2| |d f ¡ t|ƒ�rd3 t*d4d5„ |d |ƒ¡}|
 d6| ¡ t|ƒ�r6d7| |d d3 |
¡f |d8< n"d9|d | |d d3 |
¡f |d8< t |ƒ�rˆ|d t+v �rˆd:| t+|d  f |d;< t|ƒ�r¢d<| | f |d;< t|ƒ�r¸d=|  |d;< |d t+v �ròd>| t+|d  f |d?< d@t+|d   |dA< t|ƒ�rdB| | f |d?< t,| |ƒ\|dC< |dD< t-|ƒ�r8|dE |dE< |S )Fz…
    varname,ctype,atype
    init,init.r,init.i,pytype
    vardebuginfo,vardebugshowvalue,varshowvalue
    varrfromat
    intent
    r�   Nr‘   r’   )ÚvarnameZ
outvarnamerp   zF2PY_%sú|ZF2PY_INTENT_INr<   Z
varrformatrp   Ú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�   Ú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>B  ó    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varshowvaluerb   Úshowvalueformatz#name#:slen(%s)=%%d %s=\"%%s\"Ú	pydocsignÚpydocsignoutÚnote).r–   r   Zisintent_dictrV   r†   rƒ   r�   Úc2buildvalue_mapr   r—   r§   r   r©   rn   r™   rš   rZ   r[   rW   rt   r   Ú
dictappendr	   rJ   Ú
c2capi_mapÚ	debugcapirˆ   r•   Z
isrequiredÚ
isoptionalrx   Zl_andr‚   Zl_notr¨   ÚisstringarrayÚiscomplexfunctionrj   Úisintent_callbackZisintent_auxr„   rr   ÚmapÚcformat_mapr
   Úhasnote)rq   ro   rž   r]   rŠ   Zintent_flagsr'   r*   r‹   ÚilZrlr,   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 r�d	|d
< nd
|d
< i ad| v �r:| d  	¡ D ]„}|t
jv r²t
j| D ]j}|d }d| d | v �r(| d | d  	¡ D ]*}| d | d | |d krü|} �q(qü|d t|< qÊq²n0d| v �rj| d �rjtd|d t| d ƒf ƒ t| tƒ�pxd|d< t| ƒ�rÔd| 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| ƒ�rŒd ||f |d< t| ƒ�rÔt| d | ƒ|d!< |d! d"k�rÔtd#t| d ƒ ƒ d$|d!< t| ƒ�rô| d |d< dg| d< |S )%zV
    name,NAME,begintitle,endtitle
    rname,ctype,rformat
    routdebugshowvalue
    re   Ú_ú\_ú	end of %sr>   )re   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callprotoargumentrd   ÚrnamerÂ   rÃ   rf   rp   rÄ   Z
resultnoteúSee elsewhere.Zrformatr¯   z.routsign2map: no c2buildvalue key for type %s
r¿   ZroutdebugshowvaluerÀ   ZrlengthrC   zzroutsign2map: expected explicit specification of the length of the string returned by the fortran function %s; taking 10.
Ú10)Zgetfortrannamer¬   rX   ÚupperÚgentitleZgetcallstatementÚgetusercodeÚgetusercode1r™   rW   r   Zcb_maprZ   ru   Zgetcallprotoargumentrj   r
   r   ZhasresultnoterÅ   rÈ   rÎ   rs   r   rÏ   )	Úroutre   ÚfnamerŠ   r-   ÚunÚlnr]   rq   r_   r_   r`   r   ^  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| ƒp€d|d	< t| ƒp�d|d
< | d r¸t| d d ƒp°d|d< nd|d< t| ƒpÊd|d< d| v rä| d |d< d| v rø| d |d< |S )z
    modulename
    re   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 r<t|d  |d< |d tv r\dt|d   |d< t|ƒrtt|t| |ƒƒ}t| |ƒ\|d< |d< t|ƒr¨|d	 |d	< d
g|d	< |S )Nr­   Z	varname_irp   r³   rb   rÁ   rÂ   rÃ   rÄ   rÜ   )r   rÇ   rÎ   r�   rÆ   r	   r
   rÏ   )rq   ro   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rÎd|d< n|d |d< |d dk�rt| ƒrúd|d< nd|d< |d tv �r$dt|d   |d< t| ƒ�r:t| ƒ|d< t	| ƒ�rÊd| v �rX| d }n| d }t
| d | ƒ�r˜| d | d |d< dg| d | d< ||d< t|| ƒ\|d< |d < t| ƒ�rêd!|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
| ƒ�r˜t	| ƒ�r˜d| v �r˜| d |d'< dg| d< |S )(z\
    name,begintitle,endtitle,argname
    ctype,rctype,maxnofargs,nofoptargs,returncptr
    zcb_%s_in_%sre   r>   )re   Ú
returncptrrÑ   rÙ   rÚ   z	%s(%s,%s)ZcallbacknameZexternZstaticr”   rÕ   rÓ   rÖ   rp   rc   Zrctyper   z3
#ifdef F2PY_CB_RETURNCOMPLEX
return_value=
#endif
rê   zreturn_value=rb   rÁ   Z	strlengthrd   rf   rÄ   rÜ   rÛ   rÂ   rÃ   z8
#ifdef F2PY_CB_RETURNCOMPLEX
#ctype#
#else
void
#endif
r   Úargsr   r°   r±   Zroutnote)rÌ   rX   rÞ   rß   r   rË   rÎ   rs   r   rj   rÏ   r
   Zl_orrˆ   r•   rÉ   ru   )râ   ZumrŠ   rÚ   rq   Znofargsr±   ro   r_   r_   r`   r   Ý  sz    ÿ

þÿ












r   c                 C   sÖ   | t |ƒdœ}t|ƒrd|d< |d tv r:t|d  |d< |d tv rZdt|d   |d< t|ƒrtt|t| |ƒƒ}nt|ƒr�t|ƒ|d< d|d	< t	| |ƒ\|d
< |d< t
|ƒrÄ|d |d< dg|d< t| |ƒ|d< |S )N)r­   rp   r   rp   r³   rb   rÁ   rz   r(   r{   rÂ   rÃ   rÄ   rÜ   Z	arrdocstr)r   rÊ   rÇ   rÎ   r�   rÆ   r	   rt   r   r
   rÏ   r   )rq   ro   rŠ   r_   r_   r`   r   /  s$    
r   )r   )N)&Ú__doc__r>   r   ÚversionZf2py_versionrJ   rv   rN   Zcrackfortranr   r   ZauxfuncsÚ__all__Zusing_newcorer…   r™   rš   rY   rÇ   r˜   rÅ   rM   rK   rL   ra   rÎ   r   r   r	   r
   r   r   r   r   r   r   r   r   r_   r_   r_   r`   Ú<module>   sZ  ññïñïõÿýþþÿï
+ð/
=J#hQ
R