U C^BUR@sdZddlmZmZmZddlZddlZddlZddlm Z ddl m Z ddl m Z dd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYgRZ e jZejjZejZiZgZdZdZdUZd[d Zd\d]Zd^dEZd_d`ZdadFZdbdZdcdZdddCZdedZ dfd6Z!dgd)Z"dhdiZ#djdkZ$dld;Z%dmdLZ&dndPZ'dodKZ(dpdNZ)dqd#Z*drd9Z+dsd8Z,dtd Z-dud(Z.dvdMZ/dwdQZ0dxdyZ1dzdOZ2d{d|Z3d}d~Z4ddZ5ddDZ6ddZ7ddZ8dd>Z9dd=Z:dd&Z;dd'ZddZ?ddBZ@dd7ZAdd<ZBdd:ZCdd!ZDdd"ZEddGZFddZGddJZHddZIdd?ZJdd%ZKddAZLdd0ZMdd1ZNdd4ZOdd/ZPdd3ZQdd+ZRddZSdd-ZTdd5ZUdd,ZVdd2ZWdd*ZXddZYddZZddZ[eMdeNdeOdePdeSdeRdeJdeWdeYdeZde[di Z\dd@Z]ddZ^ddZ_ddZ`ddZaddZbddZcddÄZdddZeddZfddDŽZgddɄZhGdd˄deiZjGddYdYekZlddRZmddTZnddSZodd$ZpddZqdddӄZrddZsifddZtddZuddZvddZwddڄZxdd ZyddZzdd Z{dd߄Z|ddXZ}dddVZ~dd ZifddZdS)aW Auxiliary functions for f2py2e. Copyright 1999,2000 Pearu Peterson all rights reserved, Pearu Peterson Permission to use, modify, and distribute this software is given under the terms of the NumPy (BSD style) LICENSE. NO WARRANTY IS EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. $Date: 2005/07/24 19:01:55 $ Pearu Peterson )divisionabsolute_importprint_functionN)reduce) __version__)cfuncs applyrules debugcapi dictappenderrmessgentitlegetargs2getcallprotoargumentgetcallstatementgetfortrannamegetpymethoddef getrestdoc getusercode getusercode1hasbodyhascallstatement hascommon hasexternals hasinitvaluehasnote hasresultnote isallocatableisarrayisarrayofstrings iscomplexiscomplexarrayiscomplexfunctioniscomplexfunction_warnisdoubleisdummyroutine isexternal isfunctionisfunction_wrap isint1array isinteger isintent_aux isintent_cisintent_callback isintent_copy isintent_dict isintent_hide isintent_inisintent_inoutisintent_inplaceisintent_nothide isintent_outisintent_overwrite islogicalislogicalfunctionislong_complex islong_doubleislong_doublefunction islong_longislong_longfunctionismoduleismoduleroutine isoptional isprivate isrequired isroutineisscalarissigned_long_longarrayisstring isstringarrayisstringfunction issubroutineissubroutine_wrap isthreadsafe isunsignedisunsigned_charisunsigned_chararrayisunsigned_long_longisunsigned_long_longarrayisunsigned_shortisunsigned_shortarrayl_andl_notl_oroutmessreplaceshow stripcomma throw_errorcCstddrtj|dS)Nverboser)optionsgetsysstdoutwrite)trb6/tmp/pip-install-6_kvzl1k/numpy/numpy/f2py/auxfuncs.pyrV@s cCsdtkS)NZcapi) debugoptionsvarrbrbrcr EscCsd|ko|ddkot| S)Ntypespec characterr&rerbrbrc _isstringIsrjcCst|ot| SN)rjrrerbrbrcrFNscCst|od|kS)NZ charselectorrFrerbrbrc ischaracterRsrmcCst|ot|Srk)rrjrerbrbrcrGVscCst|o|dddkS)N dimensionz(*))rGrerbrbrcrZscCsd|kot| SNrnrirerbrbrcr`scCst|pt|pt| Srk)rrFr&rerbrbrcrDdscCst|o|ddkSNrg)complexzdouble complexrDr]rerbrbrcr hs cCst|o|ddkS)Nrglogicalrsrerbrbrcr7mscCst|o|ddkS)Nrgintegerrsrerbrbrcr*qscCst|o|ddkS)Nrgrealrsrerbrbrcisrealusrwc CsPz|ddWStk rJz|ddWYStk rDYnXYnXdS)NZ kindselector*kindKeyErrorrerbrbrcget_kindysr|cCs*t|s dS|ddkrdSt|dkS)Nrrgrurt8rDr]r|rerbrbrcr<s cCs*t|s dS|ddkrdSt|dkS)Nrrgru-1rrerbrbrcrMs cCs*t|s dS|ddkrdSt|dkS)Nrrgru-2rrerbrbrcrQs cCs*t|s dS|ddkrdSt|dkS)Nrrgru-4rrerbrbrcrLs cCs*t|s dS|ddkrdSt|dkS)Nrrgru-8rrerbrbrcrOs cCs*t|s dS|ddksdSt|dkS)Nrrgrvr~rrerbrbrcr$s cCs*t|s dS|ddksdSt|dkS)NrrgrvZ16rrerbrbrcr:s cCst|s dSt|dkS)NrZ32)r r|rerbrbrcr9scCst|o|ddkSrq)rr]rerbrbrcr!s cCs"t|o |ddko t|dkS)Nrgru1rr]r|rerbrbrcr)s cCs"t|o |ddko t|dkS)Nrgr}rrrerbrbrcrNs cCs"t|o |ddko t|dkS)Nrgr}rrrerbrbrcrRs cCs"t|o |ddko t|dkS)Nrgr}rrrerbrbrcisunsignedarrays rcCs"t|o |ddko t|dkS)Nrgr}rrrerbrbrcrPs cCs"t|o |ddko t|dkS)Nrgr}rrrerbrbrcissigned_chararrays rcCs"t|o |ddko t|dkS)Nrgr}2rrerbrbrcissigned_shortarrays rcCs"t|o |ddko t|dkS)Nrgr}4rrerbrbrcissigned_arrays rcCs"t|o |ddko t|dkS)Nrgr}r~rrerbrbrcrEs cCsd|kod|dkS)NattrspecZ allocatablerbrerbrbrcrscCsd|kpt| Srprlrerbrbrc ismutablesrcCsd|kS)N modulenamerbroutrbrbrcr?scCsd|kod|dkS)Nblockmodulerbrrbrbrcr>scCsd|kod|dkS)Nrfunctionrbrrbrbrcr'scCs"t|r dSto t|o t| SNr)r, wrapfuncsr'r&rrbrbrcr(scCsd|kod|dkS)NrZ subroutinerbrrbrbrcrI scCst|r dSt|ot|Sr)r,rIhasassumedshaperrbrbrcrJscCsV|drdS|dD]:}|d|idgD]}|dkr2d|d<dSq2qdS)NrTargsvarsrn:Fr])radrbrbrcrs   rcCst|pt|Srk)r'rIrrbrbrcrC!scCsFt|s dSd|kr|d}n|d}||dkrBt|d|SdSNrresultnamer)r'r7rrrbrbrcr8%s  cCsFt|s dSd|kr|d}n|d}||dkrBt|d|SdSr)r'r<rrbrbrcr=1s  cCsFt|s dSd|kr|d}n|d}||dkrBt|d|SdSr)r'r:rrbrbrcr;=s  cCsFt|s dSd|kr|d}n|d}||dkrBt|d|SdSr)r'r rrbrbrcr"Is  cCst|rtddSdS)Na ************************************************************** Warning: code with a function returning complex value may not work correctly with your Fortran compiler. Run the following test before using it in your applications: $(f2py install dir)/test-site/{b/runme_scalar,e/runme} When using GNU gcc/g77 compilers, codes should work correctly. ************************************************************** rr)r"rVrrbrbrcr#UscCsFt|s dSd|kr|d}n|d}||dkrBt|d|SdSr)r'rFrrbrbrcrHcs  cCsd|ko|dS)NZ externalsrbrrbrbrcroscCsd|kod|dkS)Nf2pyenhancementsZ threadsaferbrrbrbrcrKss cCsd|ko|dS)Nrrbrrbrbrc hasvariablesxsrcCs(d|ko&d|dko&d|dko&t|S)Nroptionalrequired)r4rerbrbrcr@|s  cCsd|kod|dkS)NrZexternalrbrerbrbrcr&scCst| ot|Srk)r@r4rerbrbrcrBscCspd|kr dSd|dkrdSd|dkr,dSd|dkrrcontainsmodule)rrrbrbrcr s rcCsd|kS)NrrbrrbrbrcrscCs t|dk Srk)rrrbrbrcrscCsdS)NrrbrerbrbrcistruesrcCsdSrrbrerbrbrcisfalse#src@s eZdZdS) F2PYErrorN)__name__ __module__ __qualname__rbrbrbrcr'src@seZdZddZddZdS)rZcCs ||_dSrk)mess)selfrrbrbrc__init__-szthrow_error.__init__cCsd||jf}t|dS)Nz var = %s Message: %s )rr)rrfrrbrbrc__call__0szthrow_error.__call__N)rrrrrrbrbrbrcrZ+scGsNdg}}tt|D] }d|||f}|d|qtd|d|fS)Nlambda v %s,f%d=f[%d]f%d(v)%s:%sz and rangelenappendevaljoinfll2irbrbrcrS5s  cGsNdg}}tt|D] }d|||f}|d|qtd|d|fS)Nrrrrz or rrrbrbrcrU=s  cCstdS)Nzlambda v,f=f:not f(v))r)rrbrbrcrTEscCs.z|dddkWStk r(YdSXdS)Nr fortrannamerrzrrbrbrcr%IscCsVz4|dd}|dkrt|s2td|dtWntk rP|d}YnX|S)Nrrrz"Failed to use fortranname from %s r)r{r )rrrbrbrcrPs cCs z|d|}Wntk r(YdSX|s2dS|dkrHt|trHdSt|trj|t|krbdS||}|dddkr|rd|dt|d|dd}n |dd}|dddkr|r|ddd t|d }n |dd}ntd |t|f|S) Nrrz'''z /* start z multiline (z) */ z /* end multiline (z)*/z-%s multiline block should end with `'''`: %s )r]r{ isinstancestrlistrreprr )rZ blocknamecommentcounterrrbrbrcgetmultilineblock^s@     rcCs t|dS)NZ callstatementrrrbrbrcr|sc Cs t|ddd}|r|St|r*tddSddlm}gg}}tttt|r`| ddg|d D]}|d |}t |rqh||kr||d }nJ||}tt t t t|rnt|rn|d }t|st|r|d||qhd ||} | sd} | S)NZcallprotoargumentr)rz      cCs t|dS)NusercoderrrbrbrcrscCst|dddS)Nrr)rrrrbrbrcrscCs t|dS)NZ pymethoddefrrrbrbrcrscCspgg}}d|krh|d}d|kr`|dD]}||kr*||q*|D]}||krF||qFn|d}||fS)Nrsortvars)r)rsortargsrrrbrbrcgetargss   rcsgdg}fdddD}|dkr|dD]}|krF||qFD]}||krb||qbn |d}|fS)Nrcs(g|] }td|r|kr|qS)r)r+).0rrrrbrc szgetargs2..rr)r]keysr)rrZauxvarsrrbrrcrs   cCs<d|kr dSd}|ddkr,|d|df}|d|dS)NZf2pymultilinesrz python modulerr)rkrbrbrcrs  cCs*dt|dd}d|d||dfS)NPz /*%s %s %s*/rx)r)rrrbrbrcr scCs$t|trttfdd|gS|gS)NcSs |||Srkrb)xyrrbrbrczflatlist..)rrrflatlist)rrbrbrcrs rcCs |r|ddkr|ddS|S)Nrorrb)srbrbrcrYs rc sttrfddDSttr<fddDSdtD]v}|dkrZqLdkr||dkr|d|}n}t|trd||t|qLd||qLS)Ncsg|]}t|qSrbrWr_m) defaultseprrbrcrszreplace..csg|]}t|qSrbrr)rrrbrcrsr separatorsforz#%s#)rrrrWrr)rrrrseprb)rrrrcrWs   cCs2t|tr"|D]}t||}q|S|D]}|ddkr>q*||kr t||trd||g||<t||trt||tr||||||<n||||ntt||tr,t||tr,|dkr||D]$}|||kr||||||<qnt||||||<q*||||<q*|S)Nr_r)rrr rrrdict)rdarrrk1rbrbrcr s.      c Csi}t|tr>|D]&}t|||}t||}d|krq:q|Sd|krV|d|sV|Sd|krtd|di||}d|krt|d|D]}|dkr||||<qt||trt|||||<nt||tr$g||<||D].}t||i||} || kr|| | |qn2|ddkr8qnt||t rBg||<||D]} t| t j r\| |r\t||| tr||| D]N}t|t rtd|i||}d|kr|d}nd }|| t||qnR||| }t|t r(td|i|}d|kr$|d}nd }|| t||q\nt d t||t||trt||d kr||d||<||gkr||=q|S) N_break_checkZneedZneedsrrrZ supertextrzapplyrules: ignoring rule %s. r)rrr r rZ append_needsrrrWrrtypes FunctionTyper rr) rulesrrfretrrrresrrrrrbrbrcr sl             )rr)r)__doc__ __future__rrrpprintr^r  functoolsrrrr__all__versionZ f2py_versionstderrr`r rXr\rdrrVr rjrFrmrGrrrDr r7r*rwr|r<rMrQrLrOr$r:r9r!r)rNrRrrPrrrrErrr?r>r'r(rIrJrrCr8r=r;r"r#rHrrKrr@r&rBr1r2r5r0r4r,rr.r6r-r3r+rrrr/rArrrrrrrrrrr ExceptionrobjectrZrSrUrTr%rrrrrrrrrrr rrYrWr r rbrbrbrcs                 $