a ;jgcw@sXdZddlmZejZddlZddlZddlZddlm Z ddlm Z ddl m Z m Z mZddlTgd ZgZiaiZd d d d d d d d d d d d d d d dddZdddddddddddddddddd d d!Zd"d#d$d%d&d%d'd(d)d*d+d,d-d.d/d0d1d2d3d!Zd"d#d%d%d'd)d+d,d4d4d4d5d3d6 Zd d d7d8d8d9d d:d;d dd?d@dA dBdBdCdDdDdEdBdBdCdDdDd9d dFd;d d/usr/local/lib/python3.9/site-packages/numpy/f2py/capi_maps.pyload_f2cmap_files   2 r^z%gz%Lgz%dz%hhuz%hdz%huz%uz%ldz%luz(%g,%g)z (%Lg,%Lg)z\"%s\"z'%c')rrrrr r!r"r#rr%rr*r$r&r'r(rr)cCsd}t|rRd|vr|d}n|d}||dvrBt|d|Std|nt|r^|St|rjdSt|rvdSd|vr|dtvr|d}t|}|d }d |vrd |d vrz||d d }Wn2ty td |dd |d d fYn0nd |d vr|d tvr8t|d }z||d d }Wnty|tvrnt|}z|t |d d }Wn@tytd||d d |||d d t fYn0Yn0nt |std||S)z Determines C type voidresultnamevars,getctype: function %s has no return value?! r)rtypespecr@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="")) in %s/.f2py_f2cmap file). z2getctype: No C-type found in "%s", assuming void. ) isfunctionr rZZ issubroutineZischaracter_or_characterarrayZisstring_or_stringarrayrVrMKeyErrorstrrNgetcwd isexternal)varctypeardZf2cmapr\r\r]r sZ        r cCstdd|}|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)resub)exprr\r\r]f2cexprs rqcCst|rJd|vr|d}n|d}||dvr>t|d|Std|t|sbtdt|d}d|vr|d}d|vr|d}nd |vrt|d }td |std |rt|rtd t|d }|S)Nr`rarbz0getstrlength: 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 rZisstringreprrqrnmatch isintent_hide)rkrmrsr\r\r]r s2      r c Csi}t|r4t|s4t||d<d|d<d|d<nJt|rXd|d<d|d<d|d<n&t|r~t|d}d||d<ztt|d|d<WntyYn0d ||d<tt ||d<tt |d gd d |d <t t |D]|}g}||t vr||g}n,t D]&}t d |||r||q|D](}t |t |krDd||<qqDqd\|d<}|D].}|d }|dvrd|d||f|d<q|dr|ddd |d<d\|d<}|dD]|}|d }|dvrd|d||f|d<nLt|r>td|d|d|df|d<n|rtdt|t|fq|dr~|ddd |d<|S)Nsize0rankr@dimsrD dimensionr ,rz rank*[-1]z .*?\b%s\b.*)r@rZsetdims)r :z(*)z(:)z%s#varname#_Dims[%d]=%s,Z cbsetdimsz?getarrdims:warning: assumed shape array, using 0 instead of %r rz]getarrdims: If in call-back function: array argument %s must have bounded dimensions: got %s )ruisarrayr isscalarrJjoinrvrTrYrsrangedepargsrnrwappendindex isintent_inrQrZ) rmrkverboseretdimr3vvar,r\r\r]r sx                  r cCst|rPd|vr|d}n|d}||dvr@t||d|Std|dS||}}d}t|rld}n t|rxd}|}t|r|d D]$}|dd d kr|d d}qqd}t|} t|rt||\}} d | }t |r4t|r d ||t | t | |f}nd||t | |f}d|t | f}nNt |rt|r^d||t ||f}nd||t ||f}d|t |f}nt|r|d} tt| } d||| t | d| |f}||krd|| t | d| f}nd|| t | d| |f}n~t|rvd} |tvrdt|tvrddtt|vrdtt|d} | |ks`d| } nd} d|| f}|}n td|||fS)Nr`rarbrcr@r@r@inputz in/outputintentout=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 storageargnamez => %sz%s : call-back function%sz7getpydocsign: Could not resolve docsignature for "%s". )rfr rZrisintent_inout isintent_outr hasinitvaluerrrW c2pycode_maprur rrvrsrrjlcb_maplcb2_map)rmrkafsigZsigoutoptout_akinitrlshowinitrr{Zuar\r\r]r Vs                  *   r cCst|}t|r*t|s*d|t|f}nVt|rJd|t|t|f}n6t|r|d}tt|}d||t|d |f}|S)Nz%%s : rank-0 array(string(len=%s),'c')z%s : rank-0 array(%s,'%s')r}rr~) r rurr rrWrrvrsr)rmrkrlrrr{r\r\r]rs&  rcCsLt|rd\}}nd\}}t|rD|d}|}t|s@t|ri}zb|d}d|vrzt|ddd\|d<|d <n*t|ii}t|jt|j |d<|d <Wn"t yt d ||fYn0t |rd |d|d f}n\t|rD|sd\}}|d d kr&d|dd dd}|d dkrDd|dd}||fS)N)z""z''r=r~rr@,@init.rinit.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')rur iscomplexiscomplexarrayrsplitrTrhrGimagrY ValueErrorrreplace)rmrkrrrrr\r\r]rsD    "    rcCsDt|st|r,t|}|dd|}|St|s||d<<|d t,vrd?|t,|d f|d@<dAt,|d |dB<t|rdC||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 rNrr)varnameZ outvarnamerlzF2PY_%s|ZF2PY_INTENT_INr>Z varrformatrlOrrrrrrrZ cbnamekeyZcbname maxnofargs nofoptargsZdocstrZcbdocstrZ latexdocstrZ cblatexdocstrz5sign2map: Confused: external %s is not in lcb_map%s. lengthr}atyperroutputZinoutputrequiredoptionalZhiddenzcomplex scalarZscalarrarrayz complex arrayz string arrayzcomplex functionfunctioncallbackZ auxiliaryrz slen(%s)=%sr~cSs d||fS)Nz%s|%sr\)xr?r\r\r]1zsign2map..zdims(%s)zdebug-capi:%s=>%s:%sZ vardebuginfozdebug-capi:%s %s=%s:%sdebug-capi:%s=%sZvardebugshowvalue"debug-capi:slen(%s)=%%d %s=\"%%s\"zdebug-capi:%s=%%pz #name#:%s=%sZ varshowvalue%sshowvalueformatz#name#:slen(%s)=%%d %s=\"%%s\" pydocsign pydocsignoutnote)/rr Z isintent_dictitemsrrrc2buildvalue_maprrrrrrjrrrZlistkeysrur dictappendr rJ c2capi_mapr debugcapirrZ isrequired isoptionalrxZl_andrZl_notrriscomplexfunctionrfisintent_callbackZ isintent_auxrrsmap cformat_mapr hasnote) rmrkrrrZ intent_flagsr-srilZrlr3Zddimr\r\r]rs                             rc Cs|d}t|}||dd||t|td|||t|pJdt|pTdt|p^dd }d|vrvd|d<nd|d<d|vrd |d <nd |d <iad |vr:|d  D]}|t j vrt j |D]j}|d }d |d |vr(|d |d  D]*}|d |d ||d kr|}q(q|dt|<qqn0d|vrj|drjt d|dt |dft|tpxd|d<t|rd|vr|d}n|d}||d<t||\|d<|d<t|d||d<t|r|d|d|d<dg|d|d<|dtvr&t|d|d<nd|d<t dt |dt|r|dtvrrd|t|df|d<t|rd ||f|d<t|rt|d||d!<|d!d"krt d#t |dd$|d!<t|r|d|d<dg|d<|S)%zV name,NAME,begintitle,endtitle rname,ctype,rformat routdebugshowvalue ra_\_ end of %sr@) raZtexnameZ name_lowerNAME begintitleendtitleZ fortrannameZ FORTRANNAMEZ callstatementusercode usercode1 F_FUNC_USF_FUNCZF_WRAPPEDFUNC_USZ F_WRAPPEDFUNCZuserrrZ externalszMroutsign2map: Confused: function %s has externals %s but no "use" statement. Zcallprotoargumentr`rnamerrrbrlrZ resultnoteSee elsewhere.Zrformatrz.routsign2map: no c2buildvalue key for type %s rZroutdebugshowvaluerZrlengthrFzzroutsign2map: expected explicit specification of the length of the string returned by the fortran function %s; taking 10. 10)ZgetfortrannamerrVuppergentitleZgetcallstatement getusercode getusercode1rrrZcb_maprZrvZgetcallprotoargumentrfr r Z hasresultnoterrrrtr r) routrafnameruunlnrrmr\r\r]rMs                        rcCst|r.|d|d|dddd}n$|d|d|dddd}t|p\g|d<t|rv|d|d<t|pd|d <t|pd|d <|d rt|d d pd|d <nd|d <t|pd|d<d|vr|d|d<d|vr|d|d<|S)z modulename rarr)Z f90modulenameZ F90MODULENAMEZtexf90modulename) modulenameZ MODULENAMEZ texmodulenameZrestdocrr@rrbodyrZinterface_usercodeZ pymethoddefZcoutputZf2py_wrapper_output)ismodulerrZ getrestdocrrrZgetpymethoddef)mrr\r\r]rs.     rcCsd|i}|d|d<t||d<|dtvrHt|d|d<t||d<|dtvrhdt|d|d<t|rt|t||}t||\|d<|d <t|r|d |d <d g|d <|S) NrZ varname_irlrrrrrrrr) r rrrrrr r r)rmrkrrr\r\r]rs       rcCsd|d|fdd}t|r`d|dvr0d}nd}d||d|df|d <d |d <n|d|d <d |d <|d|d <t|d|d <td|d|d<t||d<d|d<|ddkrd|d<n |d|d<|ddkrt|rd|d<nd|d<|dtvr$dt|d|d<t|r:t||d<t |rd|vrX|d}n|d}t |d|r|d|d|d<dg|d|d<||d<t ||\|d<|d <t|rd!|d<n t |r|d|d<dg|d<d"}d"}d#|vrLd|vrL|d#D]<}|d|}t t t|r|d$}t|r|d$}qt||d%<t||d&<t |rt |rd|vr|d|d'<dg|d<|S)(z\ name,begintitle,endtitle,argname ctype,rctype,maxnofargs,nofoptargs,returncptr z cb_%s_in_%srar@)ra returncptrrrrz %s(%s,%s)Z callbacknameZexternZstaticrrrrrlr_Zrctyperz3 #ifdef F2PY_CB_RETURNCOMPLEX return_value= #endif rz return_value=rrZ strlengthr`rbrrrrrz8 #ifdef F2PY_CB_RETURNCOMPLEX #ctype# #else void #endif rargsrrrZroutnote)rrVrrr rrrtr rfrr Zl_orrrrrv)rZumrrrmZnofargsrrkr\r\r]rsz                             rcCs|t|d}t|rd|d<|dtvrFt|d|d<t||d<|dtvrfdt|d|d<t|rt|t||}nt|rt ||d<d |d <t ||\|d <|d <t |r|d |d <dg|d <t |||d<|S)N)rrlrrlrrrrryrDr{rrrrZ arrdocstr) r rrrrrrr rur r rr)rmrkrr\r\r]rs&      r)r)N)/__doc__r@rversionZ f2py_versionrJrnrNZ crackfortranrrZ _isocbindrrrZauxfuncs__all__rrrrWrrrrMupdaterrrKrLrXr^rr rqr r r rrrrrrrrrr\r\r\r]s&      3 =J#jQ R