U
    9%e                     @   s  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 dd	d
dddddddddg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dZdddddd d!d"d#d$d%d%d&d'd'dd(d)Zerddd*d dd d!d"d#d$d%d+d,d-d&d'd'ddd.Zd/d0d/d1d1d2d3d4d5d6d7d8d9d:d:d;d;d<ZerTd/d0d=d2d>d2d?d@d5dAd7d8dBdCd9d:dDdEd;d.Zd/d0d2d2d?d5d7d8dFdFdFdGd;dHZdddIdJdJdKddLdMddNdOdPdQdRdS	dTdTdUdVdVdWdTdTdUdVdVdKddXdMddNdYdZdUidZdIidZdXid[aetZg Zd\d] Zd^d^d_d`d`dadbdcd`dddedfdedgdgdhdidjdkZdld Zdmdn Zdod	 Zd|dpd
Zdqd Zdrd Z dsd Z!dtdu Z"dvd Z#dwd Z$dxd Z%d}dydZ&dzd Z'd{d Z(dS )~a)  

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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_STRINGZ	NPY_UBYTEZNPY_BYTEZ	NPY_SHORTZ
NPY_USHORTZNPY_INTZNPY_UINTZNPY_LONGZ
NPY_CFLOATZNPY_CDOUBLEZNPY_CHAR)r   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   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   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   r   ) 48Z1216r   r   r    r   r   r!   r'   )	r@   r*   2rA   rB   -1z-2z-4z-8r"   r#   r$   )r@   rB   rC   Z24Z32r   )r@   r*   rD   rA   rB   r@   )realintegerr   ZcomplexkindZlogicalzdouble complexzdouble precisionbytec                 C   s  t ta| d kr&d} tj| s&d S zhtd|  t	| d}t
|  i i }W 5 Q R X | D ]6\}}| D ]}|| || < qz|| || < qj| D ]}|tkri t|< ||  D ]}|| | tkrT|t| krtd||t| | || | f  || | t| |< td|||| | f  t|| |  qtd|||| | || | tt f  qqtd W n0 tk
r } ztd|  W 5 d }~X Y nX 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loweritemskeysc2py_mapf2cmap_mappedappenderrmesslist	Exception)Zf2cmap_filer)   r(   kZd1Zk1msg ra   S/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numpy/f2py/capi_maps.pyload_f2cmap_file   sN    
  
 
 
rc   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| kr| d }n| d }|| d krBt| d | S td|  nt| r^|S t| rjdS t| rvdS d| kr| d  tkr| d  }t| }|d	 }d
| krd| d
 krz|| d
 d  }W n4 tk
r   td| d d| d
 d f  Y nX nd| d
 kr|d tkr:t|d  }z|| d
 d  }W n tk
r   |tkrrt| }z|t	| d
 d  }W nB tk
r   td|| d
 d ||| d
 d t
 f  Y nX Y nX 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_stringarrayrV   rM   KeyErrorstrrN   getcwd
isexternal)varctypeari   Zf2cmapra   ra   rb   r      s^    


 
 
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)exprra   ra   rb   f2cexpr+  s    rv   c                 C   s   t | rJd| kr| d }n| d }|| d kr>t| d | S td|  t| sbtdt|   d}d| kr| d }d|kr|d }nd	|krt|d	 }td
|std|rt| rtdt|   d}|S )Nre   rf   rg   z0getstrlength: function %s has no return value?!
z;getstrlength: expected a signature of a string but got: %s
r*   charselectorr   lenz\(\s*(\*|:)\s*\)z(\*|:)zMgetstrlength:intent(hide): expected a string with defined length but got: %s
rE   )	isstringfunctionr   r\   isstringreprrv   rs   matchisintent_hide)rp   rr   rx   ra   ra   rb   r   :  s2    


c           	      C   s  i }t |r4t|s4t||d< d|d< d|d< nLt|rXd|d< d|d< d|d< n(t|rt|d }d||d< ztt|d |d< W n tk
r   Y nX d	||d< tt	||d< tt	|d
g dd
 |d< t
t	|D ]|}g }|| tkr|| g}n,tD ]&}td| || r|| q|D ](}t|t| krFd||<  qqFqd\|d< }|D ].}|d }|dkrd|d ||f |d< q|d r|d d d
 |d< d\|d< }|d D ]|}|d }|dk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@   Zdimsr*   	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
)rz   isarrayr   isscalarrJ   joinr{   rT   r^   rx   rangedepargsrs   r|   r[   indexisintent_inrQ   r\   )	rr   rp   verboseretdimr.   vvar(   ra   ra   rb   r	   V  s    


  

  
  
c                 C   s  t |rPd|kr|d }n|d }||d k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krdt|  tkrddtt|   krdtt|   d }|| ks`d| }nd}d| |f }|}ntd|   ||fS )Nre   rf   rg   rh   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".
)rk   r
   r\   r   isintent_inoutisintent_outr   hasinitvaluer   r   rY   c2pycode_maprz   r   r   r{   rx   r   ro   lcb_maplcb2_map)rr   rp   afsigZsigoutoptout_ar_   initrq   showinitr   r   Zuara   ra   rb   r
     s    



 

      
 

*

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   rz   r   r   r   rY   r   r{   rx   r   )rr   rp   rq   r   r   r   ra   ra   rb   r     s&    
c                 C   sN  t |rd\}}nd\}}t|rF|d }|}t|s@t|ri }zb|d }d|krzt|dd d\|d< |d	< n*t|i i }t|jt|j	 |d< |d	< W n$ t
k
r   td
|| f Y nX t|rd|d |d	 f }n\t |rF|sd\}}|d dkr(d|dd dd }|d dkrFd|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')rz   r   	iscomplexiscomplexarrayr   splitrT   rm   rF   imagr^   
ValueErrorr   replace)rr   rp   r   r   r   r   ra   ra   rb   r     sF    


"

 
c                 C   sD   t | st| r,t| }| d d|}|S t| s<t| r@dS dS )Nrw   Zf2py_lenr*   )rz   isstringarrayr   getZischaracterZischaracterarray)rp   elsizera   ra   rb   
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k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k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k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,krd;| t,|d  f |d<< t|rd=| | f |d<< t|rd>|  |d<< |d t,k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
outvarnamerq   zF2PY_%s|ZF2PY_INTENT_INr>   Z
varrformatrq   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optionalZ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|%sra   )xr?   ra   ra   rb   <lambda>n      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_dictrW   r[   r   r   c2buildvalue_mapr   r   r   r   r   ro   r   r   r\   r]   rX   rz   r   
dictappendr	   rJ   
c2capi_mapr   	debugcapir   r   Z
isrequired
isoptionalr}   Zl_andr   Zl_notr   r   iscomplexfunctionrk   isintent_callbackZisintent_auxr   rx   mapcformat_mapr
   hasnote)rr   rp   r   r_   r   Zintent_flagsr)   r,   r   ilZrlr.   Zddimra   ra   rb   r      s    	


 



                   


     

 


 



c           	      C   s  | d }t | }||dd| | t|td| || t| pJdt| pTdt| p^dd}d|krvd|d< nd|d< d|krd	|d
< nd
|d
< i ad| kr:| d 	 D ]}|t
jkrt
j| D ]j}|d }d| d | kr(| d | d 	 D ]*}| d | d | |d kr|} q(q|d t|< qqn0d| krj| d rjtd|d t| d f  t| tpxd|d< t| rd| kr| d }n| d }||d< t|| \|d< |d< t| d | |d< t| r| d | d |d< dg| d | d< |d tkr&t|d  |d< nd|d< tdt|d   t| r|d tk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
    rf   _\_	end of %sr@   )rf   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callprotoargumentre   rnamer   r   rg   rq   r   Z
resultnoteSee elsewhere.Zrformatr   z.routsign2map: no c2buildvalue key for type %s
r   Zroutdebugshowvaluer   ZrlengthrE   zzroutsign2map: expected explicit specification of the length of the string returned by the fortran function %s; taking 10.
10)Zgetfortrannamer   rV   uppergentitleZgetcallstatementgetusercodegetusercode1r   rX   r   Zcb_mapr\   r{   Zgetcallprotoargumentrk   r
   r   Zhasresultnoter   r   r   ry   r   r   )	routrf   fnamer   r/   unlnr_   rr   ra   ra   rb   r     s    








 






 


 




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| kr| d |d< d| kr| d |d< |S )z
    modulename
    rf   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   ra   ra   rb   r     s.    

c                 C   s   d| i}|d |d< t ||d< |d tkrHt|d  |d< t||d< |d tkrhdt|d   |d< t|rt|t| |}t| |\|d< |d	< t|r|d
 |d
< dg|d
< |S )Nr   Z	varname_irq   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r	   r
   r   )rr   rp   r   r   ra   ra   rb   r     s    
c                 C   s  d| d |f dd}t | r`d| d k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kr$dt|d   |d< t| r:t| |d< t	| rd| k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#| krLd| krL| d# D ]<}| d | }ttt|r|d$ }t|r|d$ }qt||d%< t||d&< t
| rt	| rd| kr| d |d'< dg| d< |S )(z\
    name,begintitle,endtitle,argname
    ctype,rctype,maxnofargs,nofoptargs,returncptr
    zcb_%s_in_%srf   r@   )rf   
returncptrr   r   r   z	%s(%s,%s)ZcallbacknameZexternZstaticr   r   r   r   rq   rd   Zrctyper   z3
#ifdef F2PY_CB_RETURNCOMPLEX
return_value=
#endif
r   zreturn_value=r   r   Z	strlengthre   rg   r   r   r   r   r   z8
#ifdef F2PY_CB_RETURNCOMPLEX
#ctype#
#else
void
#endif
r   argsr   r   r   Zroutnote)r   rV   r   r   r   r   r   ry   r   rk   r   r
   Zl_orr   r   r   r{   )r   Zumr   r   rr   Znofargsr   rp   ra   ra   rb   r   
  sz    














c                 C   s   | t |d}t|rd|d< |d tkrFt|d  |d< t||d< |d tk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   rq   r   rq   r   r   r   r   r~   r*   r   r   r   r   r   Z	arrdocstr)r   r   r   r   r   r   r   r	   rz   r   r
   r   r   )rr   rp   r   ra   ra   rb   r   \  s&    
)r   )N))__doc__r@   r   versionZf2py_versionrJ   rs   rN   Zcrackfortranr   r   Zauxfuncs__all__Zusing_newcorer   r   r   rY   r   r   r   rM   rK   rL   rZ   rc   r   r   rv   r   r	   r
   r   r   r   r   r   r   r   r   r   ra   ra   ra   rb   <module>   s                 
,3
=J#jQ
R