B
    n\z                 @   s`  d Z ddlmZmZmZ dd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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 a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!d0Zd1d2d1d3d3d4d5d6d7d8d9d:d;d<d<d=d>Zertd1d2d?d4d@d4dAdBd7dCd9d:dDdEd;d<dFdGd0Zd1d2d4d4dAd7d9d:dHdHdHdIdJZejd dKkrdLed< erdddMdNdNdOddPdQddRdSdTdUdVdW	dXdXdYdZdZd[dXdXdYdZdZdOdd\dQddRd]d^dYid^dMid^d\id^did_	Zejd`rАyreda ed`dbZ e!e " i i Z#e $  xRe%e#& D ]B\Z'Z(x&e%e() D ]Z*e(e* e(e*+ < q|W e#e' e#e'+ < qfW xe%e#) D ]Z'e'ekri ee'< xe%e#e' ) D ]Z*e#e' e* ekrZe*ee' kr*edce'e*ee' e* e#e' e* f  e#e' e* ee' e*< edde'e*e#e' e* f  n.e,dee'e*e#e' e* e#e' e* e%e) f  qW qW edf W n0 e-k
r Z. ze,dge.  W ddZ.[.X Y nX dhdhdidjdjdkdldmdjdndodpdodqdqdrdsdtZ/dud Z0dvd Z1ddwdZ2dxd Z3dyd Z4dzd Z5d{d Z6d|d Z7d}d Z8dd~dZ9dd Z:dd 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

    )divisionabsolute_importprint_functionz$Revision: 1.60 $
      )__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z)r   r   r   r    r"   r   r   r$   r&   r'   r(   r      yr   r   ) 48Z1216r    r"   r$   r!   r#   r%   r*   )	rE   r-   2rF   rG   z-1z-2z-4z-8r&   r'   r(   )rE   rG   rH   Z24Z32r   )rE   r-   rI   rF   rG   rE   )	realZintegerr   ZcomplexkindZlogicalzdouble complexzdouble precisionZbyte	characterz.f2py_f2cmapzReading .f2py_f2cmap ...
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
z<Successfully applied user defined changes from .f2py_f2cmap
zFFailed to apply user defined changes from .f2py_f2cmap: %s. Skipping.
z%gz%Lgz%dz%hhuz%hdz%huz%uz%ldz%luz(%g,%g)z	(%Lg,%Lg)z%s)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|  n~t| r^|S d| kr| d  tkr| d  }t| }|d }d| krd	| d kry|| d d	  }W n2 tk
r   td
| d d	| d d	 f  Y nX nd| d kr|d tkrt|d  }y|| d d  }W n tk
r   |tkrVt| }y|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varsz,getctype: function %s has no return value?!
typespecrE   Zkindselectorr   z$getctype: "%s %s %s" not supported.
Z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   errmessZissubroutinelower
f2cmap_allKeyErrorstrosgetcwd
isexternal)varctypearQ   Zf2cmap r^   3lib/python3.7/site-packages/numpy/f2py/capi_maps.pyr      sN    

"
(

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r|d	 }td
|std|rt| rtdt|   d}|S )NrN   rO   rP   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
z-1)isstringfunctionr   rS   isstringreprrematchisintent_hide)r[   r]   r`   r^   r^   r_   r     s.    

c       	      C   s  i }t |r8t|s8t||d< |d |d< d|d< n^t|r\d|d< d|d< d|d< n:t|rt|d }d||d< ytt|d |d< W n tk
r   Y nX d	||d< tt	||d< tt	|d
g dd
 |d< xt
t	|D ]}g }|| tkr|| g}n0x.tD ]&}td| || r"|| q"W x.|D ]&}t|t| krRd||< P qRW qW d\|d< }x6|D ].}|d }|dkrd|d ||f |d< qW |d r|d d d
 |d< d\|d< }x|d D ]|}|d }|dkr&d|d ||f |d< nLt|rTtd|  d|d |df |d< n|rtdt| t|f  qW |d r|d d d
 |d< |S )NZdimssizer-   rank0rE   	dimensionr   ,r   r   z	rank*[-1]z.*?\b%s\b.*)rE   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
)rb   isarrayr   isscalarcopyjoinrc   eval	Exceptionr`   rangedepargsrd   re   appendindexisintent_inoutmessrS   )	r]   r[   verboseretdimr1   vZvar+   r^   r^   r_   r   ;  sn    








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|rx.|d	 D ]"}|d d
 dkr|d
d  }P qW d}t|}	t|rt| |\}}
d|
 }t	|r6t|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|rxd}| tkrft|  tkrfdtt|   krftt|   d }|| ksbd| }nd}d| |f }|}ntd|   ||fS )NrN   rO   rP   z,getctype: function %s has no return value?!
)rE   rE   rE   inputz	in/outputintent   z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)rj   z.%s : %s rank-%s array('%s') with bounds (%s)%srk   z)%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%sz8getpydocsign: Could not resolve docsignature for "%s".\n)rR   r   rS   rw   isintent_inoutisintent_outr   hasinitvaluer   rn   c2py_mapc2pycode_maprb   r   rm   rc   r`   rp   rZ   lcb_maplcb2_map)r]   r[   ZafsigZsigoutZoptout_akinitr\   showinitr{   rh   Zuar^   r^   r_   r   y  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')rj   z)%s : rank-%s array('%s') with bounds (%s)rk   )
r   rb   rm   r   rn   r   r   rc   r`   rp   )r]   r[   r\   r   r{   rh   r^   r^   r_   r     s    
c             C   sN  t |rd\}}nd\}}t|rF|d }|}t|s@t|ri }yb|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'')rE   rE   =rk   r   r   z@,@zinit.rz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')rb   r   	iscomplexiscomplexarrayr	   splitrq   rW   rJ   imagrr   
ValueErrorrm   replace)r]   r[   r   r   rz   r|   r^   r^   r_   r     s:    

""
c          "   C   sF  | }t |r<x.|d D ]"}|dd dkr|dd }P qW | |t|d}g }x*t D ]\}}||rZ|d|  qZW |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|rt|t| |}t|d }|d tkr t|d  |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'd/g"}	g }
x:t(d0t)|	d1D ]&}|	| |r|
|	|d   qW t|r|
d2| |d f  t|rd3t*d4d5 |d |}|
d6|  t|r@d7| |d d3|
f |d8< n"d9|d | |d d3|
f |d8< 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?< d@t+|d   |dA< t|rdB| | f |d?< t,| |\|dC< |dD< t-|rB|dE |dE< |S )Fz
    varname,ctype,atype
    init,init.r,init.i,pytype
    vardebuginfo,vardebugshowvalue,varshowvalue
    varrfromat
    intent
    r~   Nr   zout=)varnameZ
outvarnamer\   zF2PY_%s|ZF2PY_INTENT_INrA   Z
varrformatr\   Or   r   r   r   z@,@zinit.rzinit.iZ	cbnamekeyZcbname
maxnofargs
nofoptargsZdocstrZcbdocstrZlatexdocstrZcblatexdocstrz5sign2map: Confused: external %s is not in lcb_map%s.
lengthrj   atyper}   outputZinoutputZrequiredZoptionalZhiddenzcomplex scalarZscalarr   Zarrayzcomplex arrayzstring arrayzcomplex functionZfunctioncallbackZ	auxiliaryr      zslen(%s)=%srk   c             S   s   d| |f S )Nz%s|%sr^   )xrD   r^   r^   r_   <lambda>E  s    zsign2map.<locals>.<lambda>zdims(%s)zdebug-capi:%s=>%s:%sZvardebuginfozdebug-capi:%s %s=%s:%szdebug-capi:%s=%sZvardebugshowvaluez"debug-capi:slen(%s)=%%d %s=\"%%s\"zdebug-capi:%s=%%pz#name#:%s=%sZvarshowvaluez%sshowvalueformatz#name#:slen(%s)=%%d %s=\"%%s\"	pydocsignpydocsignoutnote).r   r   Zisintent_dictitemsru   rp   rm   c2buildvalue_mapr   r   r   r	   r   rZ   r   r   rS   listkeysrb   r   
dictappendr   ro   
c2capi_map	debugcapirw   r   Z
isrequired
isoptionalrf   Zl_andrn   Zl_notr   isstringarrayiscomplexfunctionrR   isintent_callbackZisintent_auxrs   r`   mapcformat_mapr   hasnote)r]   r[   r   r   rz   Zintent_flagsr,   r/   r{   ZilZrlr1   Zddimr^   r^   r_   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rFx| d 	 D ]}|t
jkrx|t
j| D ]n}|d }d| d | kr0xB| d | d 	 D ]*}| d | d | |d kr|}P qW |d t|< qW qW n0d| krv| d rvtd|d t| d f  t| tpd|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r2t|d  |d< nd|d< tdt|d   t| r|d tkr~d|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
    rO   _z\_z	end of %srE   )rO   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callprotoargumentrN   rnamer   r   rP   r\   r   Z
resultnotezSee elsewhere.Zrformatr   z.routsign2map: no c2buildvalue key for type %s
zdebug-capi:%s=%sZroutdebugshowvaluez"debug-capi:slen(%s)=%%d %s=\"%%s\"Zrlengthz-1zzroutsign2map: expected explicit specification of the length of the string returned by the fortran function %s; taking 10.
Z10)Zgetfortrannamer   rT   uppergentitleZgetcallstatementgetusercodegetusercode1r   r   r
   Zcb_maprS   rc   ZgetcallprotoargumentrR   r   r   Zhasresultnoter   r   r   ra   r   r   )	routrO   fnamerz   r2   ZunZlnr   r]   r^   r^   r_   r   a  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
    rO   r   z\_)Zf90modulenameZF90MODULENAMEZtexf90modulename)Z
modulenameZ
MODULENAMEZtexmodulenameZrestdocr   rE   r   r   Zbodyr   Zinterface_usercodeZpymethoddefZcoutputZf2py_wrapper_output)Zismoduler   r   Z
getrestdocr   r   r   Zgetpymethoddef)mrz   r^   r^   r_   r     s*    

c             C   s   d| i}|d |d< t ||d< |d tkr<t|d  |d< |d tkr\dt|d   |d< t|rtt|t| |}t| |\|d< |d< t|r|d	 |d	< d
g|d	< |S )Nr   Z	varname_ir\   r   z%sr   r   r   r   zSee elsewhere.)r   r   r   rm   r   r   r   r   )r]   r[   rv   rz   r^   r^   r_   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rPd| krPxH| d# D ]<}| d | }ttt|r|d$ }t|r|d$ }qW 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_%srO   rE   )rO   
returncptrr   r   r   z	%s(%s,%s)ZcallbacknameZexternZstaticr   r   z	end of %sr   r\   rM   Zrctyper   z3
#ifdef F2PY_CB_RETURNCOMPLEX
return_value=
#endif
r   zreturn_value=z%sr   Z	strlengthrN   rP   r   zSee elsewhere.r   r   r   z8
#ifdef F2PY_CB_RETURNCOMPLEX
#ctype#
#else
void
#endif
r   argsr   r   r   Zroutnote)r   rT   r   r   r   r   r   ra   r   rR   r   r   Zl_orrw   r   r   rc   )r   Zumrz   r   r]   Znofargsr   r[   r^   r^   r_   r     st    













c             C   s   | t |d}t|rd|d< |d tkr:t|d  |d< |d tkrZdt|d   |d< t|rtt|t| |}nt|rt||d< d|d	< t	| |\|d
< |d< t
|r|d |d< dg|d< t| ||d< |S )N)r   r\   r   r\   r   z%sr   rg   r-   rh   r   r   r   zSee elsewhere.Z	arrdocstr)r   r   r   r   rm   r   r   rb   r   r   r   r   )r]   r[   rz   r^   r^   r_   r   2  s$    
)r   )N)<__doc__Z
__future__r   r   r   r   rE   versionZf2py_versionro   rd   rX   sysZcrackfortranr	   r
   Zauxfuncs__all__Zusing_newcorert   r   r   r   r   r   r   version_inforU   pathisfilerx   openr,   rq   readr+   closer   r   r   Zd1r   Zk1rT   rS   rr   msgr   r   r   r   r   r   r   r   r   r   r   r   r   r^   r^   r^   r_   <module>   s  



"61
>J#iQ
R