B []$@sdZddlmZmZmZdddZdZddlZdd lm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZdd d Zdd d ZdddZddZdS)aW Rules for building C/API module with 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 License. NO WARRANTY IS EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. $Date: 2004/11/26 11:13:06 $ Pearu Peterson )divisionabsolute_importprint_functionz$Revision: 1.16 $ z See `f2py -v`N) getfortranname isexternal isfunctionisfunction_wrap isintent_in isintent_outislogicalfunctionismoduleroutineisscalar issubroutineissubroutine_wrapoutmessshowcCs|dkr |}||kr,t|td|dSd||krTt||td|dS||d}|dkrd||krd|||df}i}d}d||kr||d}d }nd ||kr||d }d }d |kr6|r|d d krd|}nd|||d f}n0|d dkr$d||d f}nd||d f}nZd |krvd||d f}d |krld||d f}nd|}nd |krd||d f}d||f}d||krd|d||df}|S)Nz1var2fixfortran: No definition for argument "%s". typespecz/var2fixfortran: No typespec for argument "%s". typetypenamez%s(%s)Z kindselectorkind charselectorlen*)r:z(*)z %s(len=*)z %s(%s=%s))rrz%s*(%s)z%s*%sz %s(len=%sz %s,kind=%s)z%s)z %s(kind=%s)z%s %s dimension,)rrjoin)varsafaf90modeZvardefselectorZlkr&7/tmp/pip-install-svzetoqp/numpy/numpy/f2py/func2subr.pyvar2fixfortransP                 r(cst|s tg|d}x|dD]~}|d|}xlt|dgD]X\}}|dkrDd||f}tddgd}d ||f|d <||||<||d|<qDWq"W|dt} d g} | fd d } |d} t|} t |}d| }||kr|| ||<|g|ddd}n|g|d}t || ||}|dddkr|r`d|dd}nd|dd}|| d}|dd dkrd|d<d |}|r| d|d| |f|s| d|d| fn.| d| |f| s| d| |d| }| r>x0|d d D]}| d!r| |qW|dd}g}x2|D]*}t||rT| d|||qTWxF|D]>}||krqt||r| t |||d"||qWxF|D]>}||krqt||r| t |||d"||qWx.|D]&}||kr*q| t |||d"qW| || rx|rXn | d#| |d | d$d fd%d&|D}|st|r| d'|| |fn| d(|| |f|r| d)|d| fn| d*| d+S),Nr!argsrrz f2py_%s_d%sintegerhide)rintentz shape(%s, %s)=rcSsd|d|f|d<dS)Nz %s %srr&)lineretr&r&r'adddszcreatefuncwrapper..addnamez %sf2pywrapr z character*(*)zcharacter(len=10)z character*10rrz(*)10z, zsubroutine f2pywrap_%s_%s (%s) modulenamezuse %s, only : %szsubroutine f2pywrap%s (%s)z external %ssaved_interface zuse )r$ interfacez end interfacecsg|]}|kr|qSr&r&).0r") extra_argsr&r' sz%createfuncwrapper..z%s = .not.(.not.%s(%s))z %s = %s(%s)zend subroutine f2pywrap_%s_%sendr)r AssertionError enumerategetdictappendextendboolrrr(r splitlstrip startswithr rr r)rout signaturer!r"viddndvneed_interfacer/r0r1 fortrannamer$Znewnamer)lZ charselectsargsr. dumped_argsr&)r9r'createfuncwrapperPs                     rRcst|s tg|d}x|dD]~}|d|}xlt|dgD]X\}}|dkrDd||f}tddgd}d ||f|d <||||<||d|<qDWq"W|dt} d g} | fd d } |d} t|} t |}|d}d |}|r.| d|d| |f|sP| d|d| fn"| d| |f| sP| d| | rx0|d dD]}| drf| |qfWg}x2|D]*}t||r| d|||qWxF|D]>}||krؐqt||r| t|||d||qWx.|D]&}||kr q| t|||dqW| rf|rFn | d| |d | dd fdd|D}|s| d| |f|r| d|d| fn| d| d S)!Nr!r)rrz f2py_%s_d%sr*r+)rr,z shape(%s, %s)r-rcSsd|d|f|d<dS)Nz %s %srr&)r.r/r&r&r'r0szcreatesubrwrapper..addr1z, zsubroutine f2pywrap_%s_%s (%s)r4zuse %s, only : %szsubroutine f2pywrap%s (%s)z external %sr5r6zuse )r$r7z end interfacecsg|]}|kr|qSr&r&)r8r")r9r&r'r:sz%createsubrwrapper..z call %s(%s)zend subroutine f2pywrap_%s_%sr;r)rr<r=r>r?r@rArBrrr rCrDrEr rr()rFrGr!r"rHrIrJrKrLrMr/r0r1rNr$r)rPr.rQr&)r9r'createsubrwrappers|             rScCs:t|rt|}|d}td||ft|}|}|}d|kr^|d}|d||d|<|d|}t|sd|krg|d<|ddd}x |dD]}|drd }PqW|r|dd ||g|d |d dd<|t|fSt|r2t|}|d}td ||ft|}|t |fS|d fS)Nr1z6 Creating wrapper for Fortran function "%s"("%s")... resultr!r,outrzout=rzout=%sr)z8 Creating wrapper for Fortran subroutine "%s"("%s")... r) r rrcopyr r@rErRrrS)rFrNr1fnamernameZfvarflagrIr&r&r'assubr sB         rZ)NN)r)r)__doc__ __future__rrr __version__Z f2py_versionrVZauxfuncsrr r r r r rrrrrrrr(rRrSrZr&r&r&r's < 1 j P