U Dx`TUR@sdZddlZddlZddlZddlmZddlmZddlmZddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXgRZ ej Z ej j ZejZiZgZdZdYdTZdZdZd[d\Zd]dDZd^d_Zd`dEZdadZdbdZdcdBZdddZded5Zdfd(ZdgdhZdidjZ dkd:Z!dldKZ"dmdOZ#dndJZ$dodMZ%dpd"Z&dqd8Z'drd7Z(dsdZ)dtd'Z*dudLZ+dvdPZ,dwdxZ-dydNZ.dzd{Z/d|d}Z0d~dZ1ddCZ2ddZ3ddZ4dd=Z5dd<Z6dd%Z7dd&Z8ddGZ9ddHZ:ddZ;ddZdd;Z?dd9Z@dd ZAdd!ZBddFZCddZDddIZEddZFdd>ZGdd$ZHdd@ZIdd/ZJdd0ZKdd3ZLdd.ZMdd2ZNdd*ZOddZPdd,ZQdd4ZRdd+ZSdd1ZTdd)ZUddZVddZWddZXeJdeKdeLdeMdePdeOdeGdeTdeVdeWdeXdi ZYdd?ZZddZ[ddZ\ddZ]ddZ^ddZ_dd„Z`ddĄZaddZbddZcddȄZdddʄZeGdd̄defZgGddXdXZhddQZiddSZjddRZkdd#ZlddZmdddԄZnddZoifdd ZpddZqddZrddZsddۄZtdd ZuddZvdd ZwddZxddWZydddUZzdd Z{ifddZ|dS)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 N)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)tr_:/tmp/pip-target-zr53vnty/lib/python/numpy/f2py/auxfuncs.pyrS>s cCsdtkS)NZcapi) debugoptionsvarr_r_r`rCscCsd|ko|ddkot| S)Ntypespec characterr#rbr_r_r` _isstringGsrgcCst|ot| SN)rgrrbr_r_r`rCLscCst|od|kS)NZ charselectorrCrbr_r_r` ischaracterPsrjcCst|ot|Srh)rrgrbr_r_r`rDTscCst|o|dddkS)N dimensionz(*))rDrbr_r_r`rXscCsd|kot| SNrkrfrbr_r_r`r^scCst|pt|pt| Srh)rrCr#rbr_r_r`rAbscCst|o|ddkSNrd)complexzdouble complexrArZrbr_r_r`rfs cCst|o|ddkS)Nrdlogicalrprbr_r_r`r4kscCst|o|ddkS)Nrdintegerrprbr_r_r`r'oscCst|o|ddkS)Nrdrealrprbr_r_r`isrealssrtc CsPz|ddWStk rJz|ddWYStk rDYnXYnXdS)NZ kindselector*kindKeyErrorrbr_r_r`get_kindwsrycCs*t|s dS|ddkrdSt|dkS)Nrrdrrrq8rArZryrbr_r_r`r9s cCs*t|s dS|ddkrdSt|dkS)Nrrdrr-1r|rbr_r_r`rJs cCs*t|s dS|ddkrdSt|dkS)Nrrdrr-2r|rbr_r_r`rNs cCs*t|s dS|ddkrdSt|dkS)Nrrdrr-4r|rbr_r_r`rIs cCs*t|s dS|ddkrdSt|dkS)Nrrdrr-8r|rbr_r_r`rLs cCs*t|s dS|ddksdSt|dkS)Nrrdrsr{r|rbr_r_r`r!s cCs*t|s dS|ddksdSt|dkS)NrrdrsZ16r|rbr_r_r`r7s cCst|s dSt|dkS)NrZ32)rryrbr_r_r`r6scCst|o|ddkSrn)rrZrbr_r_r`rs cCs"t|o |ddko t|dkS)Nrdrr1rrZryrbr_r_r`r&s cCs"t|o |ddko t|dkS)Nrdrzr}rrbr_r_r`rKs cCs"t|o |ddko t|dkS)Nrdrzr~rrbr_r_r`rOs cCs"t|o |ddko t|dkS)Nrdrzrrrbr_r_r`isunsignedarrays rcCs"t|o |ddko t|dkS)Nrdrzrrrbr_r_r`rMs cCs"t|o |ddko t|dkS)Nrdrzrrrbr_r_r`issigned_chararrays rcCs"t|o |ddko t|dkS)Nrdrz2rrbr_r_r`issigned_shortarrays rcCs"t|o |ddko t|dkS)Nrdrz4rrbr_r_r`issigned_arrays rcCs"t|o |ddko t|dkS)Nrdrzr{rrbr_r_r`rBs cCsd|kod|dkS)NattrspecZ allocatabler_rbr_r_r`rscCsd|kpt| Srmrirbr_r_r` ismutablesrcCsd|kS)N modulenamer_routr_r_r`r<scCsd|kod|dkS)Nblockmoduler_rr_r_r`r;scCsd|kod|dkS)Nrfunctionr_rr_r_r`r$scCs"t|r dSto t|o t| SNr)r) wrapfuncsr$r#rr_r_r`r%scCsd|kod|dkS)NrZ subroutiner_rr_r_r`rF scCst|r dSt|ot|Sr)r)rFhasassumedshaperr_r_r`rGscCsV|drdS|dD]:}|d|idgD]}|dkr2d|d<dSq2qdS)NrTargsvarsrk:FrZ)radr_r_r`rs   rcCst|pt|Srh)r<rrr_r_r`requiresf90wrapper srcCst|pt|Srh)r$rFrr_r_r`r@$scCsFt|s dSd|kr|d}n|d}||dkrBt|d|SdSNrresultnamer)r$r4rrr_r_r`r5(s  cCsFt|s dSd|kr|d}n|d}||dkrBt|d|SdSr)r$r9rr_r_r`r:4s  cCsFt|s dSd|kr|d}n|d}||dkrBt|d|SdSr)r$r7rr_r_r`r8@s  cCsFt|s dSd|kr|d}n|d}||dkrBt|d|SdSr)r$rrr_r_r`rLs  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)rrSrr_r_r`r XscCsFt|s dSd|kr|d}n|d}||dkrBt|d|SdSr)r$rCrr_r_r`rEfs  cCsd|ko|dS)NZ externalsr_rr_r_r`rrscCsd|kod|dkS)Nf2pyenhancementsZ threadsafer_rr_r_r`rHvs cCsd|ko|dS)Nrr_rr_r_r` hasvariables{srcCs(d|ko&d|dko&d|dko&t|S)Nroptionalrequired)r1rbr_r_r`r=s  cCsd|kod|dkS)NrZexternalr_rbr_r_r`r#scCst| ot|Srh)r=r1rbr_r_r`r?scCspd|kr dSd|dkrdSd|dkr,dSd|dkrscCsd|kS)N=r_rbr_r_r`rscCst|s dS|dddkS)Nrr)"')rrbr_r_r`hasinitvalueasstringsrcCsd|kS)NZnoter_rbr_r_r`rscCsFt|s dSd|kr|d}n|d}||dkrBt|d|SdSr)r$rrr_r_r`rs  cCsd|kS)Ncommonr_rr_r_r`rscCs4t|r dSt|r0|dD]}t|rdSqdS)Nrbodyr)rrcontainscommon)rbr_r_r`rs rcCs8t|r dSt|sdS|dD]}t|r dSq dS)Nrrr)r;rcontainsmodule)rrr_r_r`rs rcCsd|kS)Nrr_rr_r_r`rscCs t|dk Srh)r rr_r_r`rscCsdS)Nrr_rbr_r_r`istrue"srcCsdSrr_rbr_r_r`isfalse&src@s eZdZdS) F2PYErrorN)__name__ __module__ __qualname__r_r_r_r`r*src@seZdZddZddZdS)rWcCs ||_dSrh)mess)selfrr_r_r`__init__0szthrow_error.__init__cCsd||jf}t|dS)Nz var = %s Message: %s )rr)rrcrr_r_r`__call__3szthrow_error.__call__N)rrrrrr_r_r_r`rW.scGsNdg}}tt|D] }d|||f}|d|qtd|d|fS)Nlambda v %s,f%d=f[%d]f%d(v)%s:%sz and rangelenappendevaljoinfll2ir_r_r`rP8s  cGsNdg}}tt|D] }d|||f}|d|qtd|d|fS)Nrrrrz or rrr_r_r`rR@s  cCstdS)Nzlambda v,f=f:not f(v))r)rr_r_r`rQHscCs.z|dddkWStk r(YdSXdS)Nr fortrannamerrwrr_r_r`r"LscCsVz4|dd}|dkrt|s2td|dtWntk rP|d}YnX|S)Nrrrz"Failed to use fortranname from %s r)rxr )rrr_r_r`rSs 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 )rZrx isinstancestrlistrreprr )rZ blocknamecommentcounterrr_r_r`getmultilineblockas@     rcCs t|dS)NZ callstatementrrr_r_r`r 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)Nusercoderrr_r_r`rscCst|dddS)Nrr)rrrr_r_r`rscCs t|dS)NZ pymethoddefrrr_r_r`rscCspgg}}d|krh|d}d|kr`|dD]}||kr*||q*|D]}||krF||qFn|d}||fS)Nrsortvars)r)rsortargsrrr_r_r`getargss   rcsgdg}fdddD}|dkr|dD]}|krF||qFD]}||krb||qbn |d}|fS)Nrcs(g|] }td|r|kr|qS)r)r().0rrrr_r` szgetargs2..rr)rZkeysr)rrZauxvarsrr_rr`r s   cCs<d|kr dSd}|ddkr,|d|df}|d|dS)NZf2pymultilinesrz python modulerr)rkr_r_r`rs  cCs*dt|dd}d|d||dfS)NPz /*%s %s %s*/ru)r)rrr_r_r`r scCs$t|trttfdd|gS|gS)NcSs |||Srhr_)xyrr_r_r`zflatlist..)rrrflatlist)rr_r_r`rs rcCs |r|ddkr|ddS|S)Nrlrr_)sr_r_r`rVs rc sttrfddDSttr<fddDSdtD]v}|dkrZqLdkr||dkr|d|}n}t|trd||t|qLd||qLS)Ncsg|]}t|qSr_rTr_m) defaultseprr_r`rszreplace..csg|]}t|qSr_rr)rrr_r`rsr separatorsforz#%s#)rrrrTrr)rrrrsepr_)rrrr`rTs   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)rrrrrrdict)rdarrrk1r_r_r`rs.      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)rrrrrZ append_needsrrrTrrtypes FunctionTyper rr) rulesrrcretrrrresrrrrr_r_r`rsl             )rr)r)}__doc__pprintr[r  functoolsrrrr__all__versionZ f2py_versionstderrr]r rUrYrarrSrrgrCrjrDrrrArr4r'rtryr9rJrNrIrLr!r7r6rr&rKrOrrMrrrrBrrr<r;r$r%rFrGrrr@r5r:r8rr rErrHrr=r#r?r.r/r2r-r1r)rr+r3r*r0r(rrrr,r>rrrrrrrrrrr ExceptionrrWrPrRrQr"rrr r rrrrr rr rrVrTrrr_r_r_r`s                 $