o
    Je#                     @   s  d 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	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL ddlmMZM ddlmNZN dd	lmOZO dd
lmPZP ddlmQZQ ddlmRZR ejSZTejSZUi ZVi ZWdD ]ZXdeWeX< qeYejZ[de Z\de]e^e\ d ed d ed d ed d ed d ed d ed d ed d ed  d! ed" d# ed$ d% ed& d' ed( d) ed* d+ ed, d- ed. d/ eU d0 d+d+d1g d2d3d4gd5Z_d6d7d8d9d:d;d<d=d=ed>eGed=id?
gZ`eWd@dAdBdCdDdEdFg dGedHidIdJgdKgdLZai dMi dNddOddPddQddRddSdTdUddVddWddXddYdZd[dd\dd]dd^dd_dd`d=dad=dbd=dcd=ddd=ded=dPdfdgdhdid=djd=dYd=d[d=dUdkdVdldWdmdXdni d\dod]dpd^dqd_drdsd=dtd=dud=dvdwdxdygdzd{d|d}gd~ddQddOddRddNddd=d=d=d=d=d=d=d=d=d=d=d=d=edeGed=idddd=eGe3dddd=e3ddeFeGeHe3e%eGedeFeGe3e%eGede3d=ed=ieGeHe3e%edeFeGe3e%eGedeFeGe3edieFeGeHe3e%eGediedgiedie>diedieGeHeedie>diedigeFe;eGe=ddeGeHe3eded=ieGeHe3ededieGeHe3edieGeHe3eddgiedgiedie>dieGeHeediedie>diedige!ddeGeHe3eded=ieGeHe3ededieGeHe3edieGeHe3eddgiedgiedie>dieGeHeediedie>diedige=ddeGe(diddedigeFee:dieFeeGe:digeFe eGe!deFeGeHe3e%eGedeFeGe3e%eGeded=ieFeGeHe3e%eGedeFeGe3e%eGedediedeGediedigedie>diedieGeHeedie>diedieFeedieFeeGedigedieGediedie2die0digeGe(diedeGeHee(dieFe eGe:eGe!d	deGeHe3e%deFeGe3e%diddgdddddddddedie>dide>diediedidgdddg dԢeFe:eGe!d՜
dddedٜg
Zbe1de/de.de@deDde?deBdeAdeEdeCde7de"dediZcdMeWidedigdecddediedieFe6eGedddddeFe6eGee+ddediedddgdge8dg ddediedigeddeFeeGeideFeeGee*ide#d=ddeHeAe@d=ddeEd=ddeCd=dded=dedide9dgZdg dMeWidedigdd=ecdeFe4e*dieFe5e*die+dieFe4e*dedigieFe5e*dedigie+deFee(deFee*d igid=dddeFe*eGe4ddddeFe*e4ddde+di de*d	id
e*didVe*didXdd_dd]e*didPdddeGe&digde*dide5dide4dide*didse5didte4didddSddbeGe&didd d!gdeieGe&d"ie&d#id$ed%eGe&d&igid'gd(d)d*ged=d+ded,ieHe%e<deGeHe%e<d-ie+dieFe6eGed.edieFe6eGed/d0e5die4die5d1ie4d1ie)d2ie)d3ie)d4ieFe6eGeeGe8e*d5	ed6d7d=ieFe4eGed8d7d=ieGe-d9ie-d:igd;eGe-d<ieFe6eGee*d=d+edieceFe6eGee(d=d=ed,ieFe6eGed=d>de%deGe%d-ied?ie+d@iedAd0e5die4die5d1ie4d1ie)d4ie)dBie)dCieFee*dD	edEieFe4eGed8id9gdFd<geFee*d=d+e+d0ieFee(dGedieFee(d=d>e+dHidgedIed?ied=d>g dJddKedLieFe+eGe%dMige+dideFe+eGe%dNige8dOdPeGe%dQigdRd<ddSeGe%dNige8d=d+e5die4die5d1ie4d1ieFe)eGe%dMie)dTige)d3ie)d4eFe)eGe%dNieFe8e*dUdeFe8e(iedLie8d=d>dVdWdXdYdZe9d[igde9dKie+d\ided]d^d_d`dadbdcddeFee,dedfeFee,d=d>dgd_d`dadhdcdieFee'dedfeFee'd=d>ediediged=dd0e5die4die5d1ie4d1ieFee*djdkdldme(dnie*doidpe9dqiee*drie(dsiedtidugigdveGeHe+e(dwieFe(eGe+dxiedyiged=dzdeFeeGeideFeeGee*ide#d=ddeAd=ddeEd=ddeCd=dded=dded/ded/edide9dZeed{idd|d}d~deFe6eGed=dddde8d=dddded=dddddgZfdd Zgddddddddddd
Zhdd ZidS (  aG  

Rules for building C/API module with f2py2e.

Here is a skeleton of a new wrapper function (13Dec2001):

wrapper_function(args)
  declarations
  get_python_arguments, say, `a' and `b'

  get_a_from_python
  if (successful) {

    get_b_from_python
    if (successful) {

      callfortran
      if (successful) {

        put_a_to_python
        if (successful) {

          put_b_to_python
          if (successful) {

            buildvalue = ...

          }

        }

      }

    }
    cleanup_b

  }
  cleanup_a

  return buildvalue

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/08/30 08:58:42 $
Pearu Peterson

    N)Path   )__version__)C
applyrules	debugcapi
dictappenderrmessgentitlegetargs2hascallstatementhasexternalshasinitvaluehasnotehasresultnoteisarrayisarrayofstringsischaracterischaracterarrayischaracter_or_characterarray	iscomplexiscomplexarrayiscomplexfunctioniscomplexfunction_warnisdummyroutine
isexternal
isfunctionisfunction_wrapisint1isint1arrayisintent_aux
isintent_cisintent_callbackisintent_copyisintent_hideisintent_inoutisintent_nothideisintent_outisintent_overwrite	islogicalislong_complexislong_doubleislong_doublefunctionislong_longislong_longfunctionismoduleroutine
isoptional
isrequiredisscalarissigned_long_longarrayisstringisstringarrayisstringfunctionissubroutineisattr_valueissubroutine_wrapisthreadsafe
isunsignedisunsigned_charisunsigned_chararrayisunsigned_long_longisunsigned_long_longarrayisunsigned_shortisunsigned_shortarrayl_andl_notl_oroutmessreplace
stripcommarequiresf90wrapper)	capi_maps)cfuncs)common_rules)	use_rules)f90mod_rules)	func2subr)decl	frompyobjcleanupfrompyobjtopyarrmethod	pyobjfromclosepyobjfromfreememuserincludes	includes0includestypedefstypedefs_generated	cppmacrosrI   	callbackslatexdocrestdocroutine_defsexternroutinesinitf2pywraphookscommonhooksinitcommonhooksf90modhooksinitf90modhooks
SOURCE_DATE_EPOCHz/* File: #modulename#module.c
 * This file is auto-generated with f2py (version:#f2py_version#).
 * f2py is a Fortran to Python Interface Generator (FPIG), Second Edition,
 * written by Pearu Peterson <pearu@cens.ioc.ee>.
 * Generation date: a  
 * Do not edit this file directly unless you know what you are doing!!!
 */

#ifdef __cplusplus
extern "C" {
#endif

#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
#endif /* PY_SSIZE_T_CLEAN */

/* Unconditionally included */
#include <Python.h>
#include <numpy/npy_os.h>

zSee f2py2e/cfuncs.py: includesz
#includes#
#includes0#

z,See f2py2e/rules.py: mod_rules['modulebody']zM
static PyObject *#modulename#_error;
static PyObject *#modulename#_module;

zSee f2py2e/cfuncs.py: typedefsz
#typedefs#

z(See f2py2e/cfuncs.py: typedefs_generatedz
#typedefs_generated#

zSee f2py2e/cfuncs.py: cppmacrosz
#cppmacros#

zSee f2py2e/cfuncs.py: cfuncsz
#cfuncs#

z"See f2py2e/cfuncs.py: userincludesz
#userincludes#

z"See f2py2e/capi_rules.py: usercodez9
#usercode#

/* See f2py2e/rules.py */
#externroutines#

z#See f2py2e/capi_rules.py: usercode1z
#usercode1#

z%See f2py2e/cb_rules.py: buildcallbackz
#callbacks#

zSee f2py2e/rules.py: buildapiz	
#body#

z&See f2py2e/f90mod_rules.py: buildhooksz
#f90modhooks#

z/See f2py2e/rules.py: module_rules['modulebody']

z&See f2py2e/common_rules.py: buildhooksz
#commonhooks#

zSee f2py2e/rules.pya,  

static FortranDataDef f2py_routine_defs[] = {
#routine_defs#
    {NULL}
};

static PyMethodDef f2py_module_methods[] = {
#pymethoddef#
    {NULL,NULL}
};

static struct PyModuleDef moduledef = {
    PyModuleDef_HEAD_INIT,
    "#modulename#",
    NULL,
    -1,
    f2py_module_methods,
    NULL,
    NULL,
    NULL,
    NULL
};

PyMODINIT_FUNC PyInit_#modulename#(void) {
    int i;
    PyObject *m,*d, *s, *tmp;
    m = #modulename#_module = PyModule_Create(&moduledef);
    Py_SET_TYPE(&PyFortran_Type, &PyType_Type);
    import_array();
    if (PyErr_Occurred())
        {PyErr_SetString(PyExc_ImportError, "can't initialize module #modulename# (failed to import numpy)"); return m;}
    d = PyModule_GetDict(m);
    s = PyUnicode_FromString("#f2py_version#");
    PyDict_SetItemString(d, "__version__", s);
    Py_DECREF(s);
    s = PyUnicode_FromString(
        "This module '#modulename#' is auto-generated with f2py (version:#f2py_version#).\nFunctions:\n"
#docs#".");
    PyDict_SetItemString(d, "__doc__", s);
    Py_DECREF(s);
    s = PyUnicode_FromString("az  ");
    PyDict_SetItemString(d, "__f2py_numpy_version__", s);
    Py_DECREF(s);
    #modulename#_error = PyErr_NewException ("#modulename#.error", NULL, NULL);
    /*
     * Store the error object inside the dict, so that it could get deallocated.
     * (in practice, this is a module, so it likely will not and cannot.)
     */
    PyDict_SetItemString(d, "_#modulename#_error", #modulename#_error);
    Py_DECREF(#modulename#_error);
    for(i=0;f2py_routine_defs[i].name!=NULL;i++) {
        tmp = PyFortranObject_NewAsAttr(&f2py_routine_defs[i]);
        PyDict_SetItemString(d, f2py_routine_defs[i].name, tmp);
        Py_DECREF(tmp);
    }
#initf2pywraphooks#
#initf90modhooks#
#initcommonhooks#
#interface_usercode#

#ifdef F2PY_REPORT_ATEXIT
    if (! PyErr_Occurred())
        on_exit(f2py_report_on_exit,(void*)"#modulename#");
#endif
    return m;
}
#ifdef __cplusplus
}
#endif
)r]   r^   )z*\section{Module \texttt{#texmodulename#}}
z
#modnote#
z
#latexdoc#zdModule #modulename#
================================================================================z

#restdoc#)
modulebodyseparatorsforr]   r^   z/*eof body*/z/*eof method*/z/*eof externroutines*/z/*eof routine_defs*/z/*eof initf90modhooks*/z/*eof initf2pywraphooks*/z/*eof initcommonhooks*/ z#note#)
bodyrR   r`   r_   re   ra   rc   r]   r^   Zmodnotea=  
#begintitle#
static char doc_#apiname#[] = "\
#docreturn##name#(#docsignatureshort#)\n\nWrapper for ``#name#``.\
\n#docstrsigns#";
/* #declfortranroutine# */
static PyObject *#apiname#(const PyObject *capi_self,
                           PyObject *capi_args,
                           PyObject *capi_keywds,
                           #functype# (*f2py_func)(#callprotoargument#)) {
    PyObject * volatile capi_buildvalue = NULL;
    volatile int f2py_success = 1;
#decl#
    static char *capi_kwlist[] = {#kwlist##kwlistopt##kwlistxa#NULL};
#usercode#
#routdebugenter#
#ifdef F2PY_REPORT_ATEXIT
f2py_start_clock();
#endif
    if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\
        "#argformat#|#keyformat##xaformat#:#pyname#",\
        capi_kwlist#args_capi##keys_capi##keys_xa#))
        return NULL;
#frompyobj#
/*end of frompyobj*/
#ifdef F2PY_REPORT_ATEXIT
f2py_start_call_clock();
#endif
#callfortranroutine#
if (PyErr_Occurred())
  f2py_success = 0;
#ifdef F2PY_REPORT_ATEXIT
f2py_stop_call_clock();
#endif
/*end of callfortranroutine*/
        if (f2py_success) {
#pyobjfrom#
/*end of pyobjfrom*/
        CFUNCSMESS("Building return value.\n");
        capi_buildvalue = Py_BuildValue("#returnformat#"#return#);
/*closepyobjfrom*/
#closepyobjfrom#
        } /*if (f2py_success) after callfortranroutine*/
/*cleanupfrompyobj*/
#cleanupfrompyobj#
    if (capi_buildvalue == NULL) {
#routdebugfailure#
    } else {
#routdebugleave#
    }
    CFUNCSMESS("Freeing memory.\n");
#freemem#
#ifdef F2PY_REPORT_ATEXIT
f2py_stop_clock();
#endif
    return capi_buildvalue;
}
#endtitle#
z#routine_def#z#initf2pywraphook#z#declfortranroutine#z!#docreturn##name#(#docsignature#)z&#docreturn##name#(#docsignatureshort#)z*"    #docreturn##name#(#docsignature#)\n"
)zarrayobject.h
CFUNCSMESSZMINMAXz#define DEBUGCFUNCSz1\subsection{Wrapper function \texttt{#texname#}}
zk
\noindent{{}\verb@#docreturn##name#@{}}\texttt{(#latexdocsignatureshort#)}
#routnote#

#latexdocstrsigns#
zlWrapped function ``#name#``
--------------------------------------------------------------------------------)rj   rl   r_   ra   r`   docdocshortdocsneedr[   r]   r^   rj   callfortranroutineroutdebugenterrN   routdebugleaveroutdebugfailureZ	setjmpbufz || 	docstrreq	docstropt	docstrout	docstrcbsdocstrsignsz\n"
"latexdocstrsignslatexdocstrreqlatexdocstroptlatexdocstroutZlatexdocstrcbskwlist	kwlistoptcallfortrancallfortranappenddocsign
docsignoptz/*decl*/rU   z/*freemem*/Zdocsignshortdocsignoptshortz\nParameters\n----------z$\nOther Parameters\n----------------z\nReturns\n-------z'\nNotes\n-----\nCall-back functions::\nz\noindent Required arguments:z\noindent Optional arguments:z\noindent Return objects:z\noindent Call-back functions:	args_capi	keys_capifunctyperO   z/*frompyobj*/rP   z/*end of cleanupfrompyobj*/rS   z/*pyobjfrom*/rT   z/*end of closepyobjfrom*/rQ   z/*topyarr*/z/*routdebugleave*/z/*routdebugenter*/z/*routdebugfailure*/z/*callfortranroutine*/	argformatz
--- #note#)	keyformatZneed_cfuncs	docreturnreturnreturnformatZrformatkwlistxakeys_xaxaformat	docsignxadocsignxashortinitf2pywraphookZroutnotezf2py_rout_#modulename#_#name#z#modulename#.#name#)ZapinameZpynamerN   _checkz-f2py_rout_#modulename#_#f90modulename#_#name#z##modulename#.#f90modulename#.#name#voidzGextern void #F_FUNC#(#fortranname#,#FORTRANNAME#)(#callprotoargument#);z/extern void #fortranname#(#callprotoargument#);zw    {"#name#",-1,{{-1}},0,0,(char *)  #F_FUNC#(#fortranname#,#FORTRANNAME#),  (f2py_init_func)#apiname#,doc_#apiname#},z]    {"#name#",-1,{{-1}},0,0,(char *)#fortranname#,  (f2py_init_func)#apiname#,doc_#apiname#},zL    {"#name#",-1,{{-1}},0,0,NULL,  (f2py_init_func)#apiname#,doc_#apiname#},F_FUNCzU    fprintf(stderr,"debug-capi:Fortran subroutine `#fortranname#(#callfortran#)'\n");zI        if (#setjmpbuf#) {
            f2py_success = 0;
        } else {z"            Py_BEGIN_ALLOW_THREADSzQ                #callstatement#;
                /*(*f2py_func)(#callfortran#);*/z,                (*f2py_func)(#callfortran#);z             Py_END_ALLOW_THREADSz	        })r   declfortranroutineroutine_defrq   rr   r   zFextern void #F_WRAPPEDFUNC#(#name_lower#,#NAME#)(#callprotoargument#);zv    {"#name#",-1,{{-1}},0,0,(char *)  #F_WRAPPEDFUNC#(#name_lower#,#NAME#),  (f2py_init_func)#apiname#,doc_#apiname#},a  
    {
      extern #ctype# #F_FUNC#(#name_lower#,#NAME#)(void);
      PyObject* o = PyDict_GetItemString(d,"#name#");
      tmp = F2PyCapsule_FromVoidPtr((void*)#F_FUNC#(#name_lower#,#NAME#),NULL);
      PyObject_SetAttrString(o,"_cpointer", tmp);
      Py_DECREF(tmp);
      s = PyUnicode_FromString("#name#");
      PyObject_SetAttrString(o,"__name__", s);
      Py_DECREF(s);
    }
    ZF_WRAPPEDFUNCz\    fprintf(stderr,"debug-capi:Fortran subroutine `f2pywrap#name_lower#(#callfortran#)'\n");z=    if (#setjmpbuf#) {
        f2py_success = 0;
    } else {z    Py_BEGIN_ALLOW_THREADSz     (*f2py_func)(#callfortran#);z9    #callstatement#;
    /*(*f2py_func)(#callfortran#);*/z    Py_END_ALLOW_THREADSz    })r   r   r   r   rq   rr   r   a  
    {
      extern void #F_FUNC#(#name_lower#,#NAME#)(void);
      PyObject* o = PyDict_GetItemString(d,"#name#");
      tmp = F2PyCapsule_FromVoidPtr((void*)#F_FUNC#(#name_lower#,#NAME#),NULL);
      PyObject_SetAttrString(o,"_cpointer", tmp);
      Py_DECREF(tmp);
      s = PyUnicode_FromString("#name#");
      PyObject_SetAttrString(o,"__name__", s);
      Py_DECREF(s);
    }
    #ctype#z#rname#,z#pydocsignout#z"\item[]{{}\verb@#pydocsignout#@{}}z--- #resultnote#z#ifdef USESCOMPAQFORTRAN
    fprintf(stderr,"debug-capi:Fortran function #ctype# #fortranname#(#callcompaqfortran#)\n");
#else
    fprintf(stderr,"debug-capi:Fortran function #ctype# #fortranname#(#callfortran#)\n");
#endif
zZ    fprintf(stderr,"debug-capi:Fortran function #ctype# #fortranname#(#callfortran#)\n");
)r   r   rx   r~   rr   r   zJextern #ctype# #F_FUNC#(#fortranname#,#FORTRANNAME#)(#callprotoargument#);z2extern #ctype# #fortranname#(#callprotoargument#);zJ    {"#name#",-1,{{-1}},0,0,NULL,(f2py_init_func)#apiname#,doc_#apiname#},z&    #ctype# #name#_return_value={0,0};z"    #ctype# #name#_return_value=0;z1    PyObject *#name#_return_value_capi = Py_None;zP    #callstatement#;
/*    #name#_return_value = (*f2py_func)(#callfortran#);*/
z6    #name#_return_value = (*f2py_func)(#callfortran#);zY    fprintf(stderr,"#routdebugshowvalue#\n",#name#_return_value.r,#name#_return_value.i);zA    fprintf(stderr,"#routdebugshowvalue#\n",#name#_return_value);zH    #name#_return_value_capi = pyobj_from_#ctype#1(#name#_return_value);zpyobj_from_#ctype#1Z	long_longZlong_doublez	#rformat#z,#name#_return_value_capiz,#name#_return_value)	r   r   rN   rr   rS   rq   r   r   r   zs    {"#name#",-1,{{-1}},0,0,(char *)#F_FUNC#(#fortranname#,#FORTRANNAME#),(f2py_init_func)#apiname#,doc_#apiname#},z[    {"#name#",-1,{{-1}},0,0,(char *)#fortranname#,(f2py_init_func)#apiname#,doc_#apiname#},z'    #ctype# #name#_return_value = NULL;z$    int #name#_return_value_len = 0;z,#name#_return_value,#name#_return_value_len,z(    #name#_return_value_len = #rlength#;zS    if ((#name#_return_value = (string)malloc(#name#_return_value_len+1) == NULL) {z<        PyErr_SetString(PyExc_MemoryError, "out of memory");z        f2py_success = 0;z    } else {z>        (#name#_return_value)[#name#_return_value_len] = '\0';z    if (f2py_success) {z        Py_BEGIN_ALLOW_THREADSzv#ifdef USESCOMPAQFORTRAN
        (*f2py_func)(#callcompaqfortran#);
#else
        (*f2py_func)(#callfortran#);
#endif
z        Py_END_ALLOW_THREADSz]        fprintf(stderr,"#routdebugshowvalue#\n",#name#_return_value_len,#name#_return_value);z2    } /* if (f2py_success) after (string)malloc */z$    STRINGFREE(#name#_return_value);)r   r   
STRINGFREE)
r   r   rN   r   rr   r   r   rU   rq   r   z]    fprintf(stderr,"debug-capi:Python C/API function #modulename#.#name#(#docsignature#)\n");zZ    fprintf(stderr,"debug-capi:Python C/API function #modulename#.#name#: successful.\n");zW    fprintf(stderr,"debug-capi:Python C/API function #modulename#.#name#: failure.\n");)rs   rt   ru   r   Zcomplex_long_doubleZunsigned_charZunsigned_shortZunsignedZunsigned_long_longZsigned_char	characterz1    /* Processing auxiliary variable #varname# */z'    fprintf(stderr,"#vardebuginfo#\n");z,    /* End of cleaning variable #varname# */)rO   rP   rq   z    #ctype# #varname# = 0;zmath.hz    #varname# = #init#;)rN   rq   rO   r   z
,#varname#z#outvarname#,z#varrformat#)r   rx   r   r   r   z    #ctype# #varname#;z3    #varname#.r = #init.r#, #varname#.i = #init.i#;)rN   rO   r       #ctype# #varname# = NULL;    int slen(#varname#);zlen..)rN   rq   r   )    #ctype# *#varname# = NULL;4    npy_intp #varname#_Dims[#rank#] = {#rank*[-1]#};&    const int #varname#_Rank = #rank#;Zforcombrm   r   )rq   r   _dependzflen(#varname#),string)r   rq   r   z'    /* Processing variable #varname# */)rO   rP   r   rq   z#pydocsign#z\item[]{{}\verb@#pydocsign#@{}}z--- See above.)rw   rv   rx   r}   r|   r~   Zdependz"#varname#",z
#varname#,)r   r   r   z#varname#=#showinit#,)r   r   r   r   )r   r   r   r   z#varname#_extra_args=(),r   z#varname#_extra_args,z=#varname#_extra_args : input tuple, optional\n    Default: ()z
#cbdocstr#z\item[] #cblatexdocstr#z}\item[]{{}\verb@#varname#_extra_args := () input tuple@{}} --- Extra arguments for call-back function {{}\verb@#varname#@{}}.z3    #cbname#_t #varname#_cb = { Py_None, NULL, 0 };z1    #cbname#_t *#varname#_cb_ptr = &#varname#_cb;z,    PyTupleObject *#varname#_xa_capi = NULL;z$    #cbname#_typedef #varname#_cptr;r   z"#varname#_extra_args",Or   r   zO!z,&#varname#_cb.capir   z!,&PyTuple_Type,&#varname#_xa_capiz(setjmp(#varname#_cb.jmpbuf))z#varname#_cptr,rq   z#cbname#zsetjmp.hzif(F2PyCapsule_Check(#varname#_cb.capi)) {
  #varname#_cptr = F2PyCapsule_AsVoidPtr(#varname#_cb.capi);
} else {
  #varname#_cptr = #cbname#;
}
a  if (#varname#_cb.capi==Py_None) {
  #varname#_cb.capi = PyObject_GetAttrString(#modulename#_module,"#varname#");
  if (#varname#_cb.capi) {
    if (#varname#_xa_capi==NULL) {
      if (PyObject_HasAttrString(#modulename#_module,"#varname#_extra_args")) {
        PyObject* capi_tmp = PyObject_GetAttrString(#modulename#_module,"#varname#_extra_args");
        if (capi_tmp) {
          #varname#_xa_capi = (PyTupleObject *)PySequence_Tuple(capi_tmp);
          Py_DECREF(capi_tmp);
        }
        else {
          #varname#_xa_capi = (PyTupleObject *)Py_BuildValue("()");
        }
        if (#varname#_xa_capi==NULL) {
          PyErr_SetString(#modulename#_error,"Failed to convert #modulename#.#varname#_extra_args to tuple.\n");
          return NULL;
        }
      }
    }
  }
  if (#varname#_cb.capi==NULL) {
    PyErr_SetString(#modulename#_error,"Callback #varname# not defined (as an argument or module #modulename# attribute).\n");
    return NULL;
  }
}
z    if (create_cb_arglist(#varname#_cb.capi,#varname#_xa_capi,#maxnofargs#,#nofoptargs#,&#varname#_cb.nofargs,&#varname#_cb.args_capi,"failed in processing argument list for call-back #varname#.")) {
z        fprintf(stderr,"debug-capi:Assuming %d arguments; at most #maxnofargs#(-#nofoptargs#) is expected.\n",#varname#_cb.nofargs);
        CFUNCSMESSPY("for #varname#=",#varname#_cb.capi);zK        fprintf(stderr,"#vardebugshowvalue# (call-back in C).\n",#cbname#);z        CFUNCSMESS("Saving callback variables for `#varname#`.\n");
        #varname#_cb_ptr = swap_active_#cbname#(#varname#_cb_ptr);z        CFUNCSMESS("Restoring callback variables for `#varname#`.\n");
        #varname#_cb_ptr = swap_active_#cbname#(#varname#_cb_ptr);
        Py_DECREF(#varname#_cb.args_capi);
    }ZSWAPZcreate_cb_arglist)rO   rP   rq   r   r   z6    fprintf(stderr,"#vardebugshowvalue#\n",#varname#);z&#varname#,)rN   rS   r   r   r   )rq   r   '    PyObject *#varname#_capi = Py_None;z,&#varname#_capiz]    f2py_success = try_pyarr_from_#ctype#(#varname#_capi,&#varname#);
    if (f2py_success) {z2    } /*if (f2py_success) of #varname# pyobjfrom*/ztry_pyarr_from_#ctype#)	rN   r   r   r   r   rS   rT   rq   r   z;    if (#varname#_capi == Py_None) #varname# = #init#; elser   z"    if (#varname#_capi != Py_None)z        f2py_success = #ctype#_from_pyobj(&#varname#,#varname#_capi,"#pyname#() #nth# (#varname#) can't be converted to #ctype#");
    if (f2py_success) {zo        #varname# = (#ctype#)PyObject_IsTrue(#varname#_capi);
        f2py_success = 1;
    if (f2py_success) {z(    } /*if (f2py_success) of #varname#*/z#ctype#_from_pyobj)rO   rq   r   r   )rO   r   r   zD    fprintf(stderr,"#vardebugshowvalue#\n",#varname#.r,#varname#.i);z,#varname#_capi)rN   r   rS   r   r   ze        f2py_success = try_pyarr_from_#ctype#(#varname#_capi,&#varname#);
        if (f2py_success) {z6        } /*if (f2py_success) of #varname# pyobjfrom*/)	rN   r   r   r   r   rq   rS   rT   r   zW    if (#varname#_capi==Py_None) {#varname#.r = #init.r#, #varname#.i = #init.i#;} elsez3    }  /*if (f2py_success) of #varname# frompyobj*/)rN   r   z4    #varname#_capi = pyobj_from_#ctype#1(#varname#);)rS   rq   r   )r   r   r   zslen(#varname#),zF    fprintf(stderr,"#vardebugshowvalue#\n",slen(#varname#),#varname#);z:        STRINGPADN(#varname#, slen(#varname#), ' ', '\0');Z
STRINGPADN)rN   r   r   rS   r   rq   r   z    slen(#varname#) = #elsize#;
    f2py_success = #ctype#_from_pyobj(&#varname#,&slen(#varname#),#init#,#varname#_capi,"#ctype#_from_pyobj failed in converting #nth#`#varname#' of #pyname# to C #ctype#");
    if (f2py_success) {z:        STRINGPADN(#varname#, slen(#varname#), '\0', ' ');zH        STRINGFREE(#varname#);
    }  /*if (f2py_success) of #varname#*/r   z    f2py_success = try_pyarr_from_#ctype#(#varname#_capi, #varname#,
                                          slen(#varname#));
    if (f2py_success) {)r   r   r   r   rS   rT   rq   r   r   r   r   z2    PyArrayObject *capi_#varname#_as_array = NULL;z"    int capi_#varname#_intent = 0;z    int slen(#varname#) = 0;z,capi_#varname#_as_array)rN   r   r   r   rq   r   z%    int capi_overwrite_#varname# = 1;z"overwrite_#varname#",iz,&capi_overwrite_#varname#zoverwrite_#varname#=1,zoverwrite_#varname#,z9overwrite_#varname# : input int, optional\n    Default: 1)rN   r   r   r   r   r   rw   r   zK    capi_#varname#_intent |= (capi_overwrite_#varname#?0:F2PY_INTENT_COPY);z%    int capi_overwrite_#varname# = 0;zoverwrite_#varname#=0,z9overwrite_#varname# : input int, optional\n    Default: 0)rN   r   r   r   r   r   z    #setdims#;z&    capi_#varname#_intent |= #intent#;zk    const char * capi_errmess = "#modulename#.#pyname#: failed to create array from the #nth# `#varname#`";z    capi_#varname#_as_array = ndarray_from_pyobj(  #atype#,#elsize#,#varname#_Dims,#varname#_Rank,  capi_#varname#_intent,Py_None,capi_errmess);z    capi_#varname#_as_array = ndarray_from_pyobj(  #atype#,#elsize#,#varname#_Dims,#varname#_Rank,  capi_#varname#_intent,#varname#_capi,capi_errmess);a9      if (capi_#varname#_as_array == NULL) {
        PyObject* capi_err = PyErr_Occurred();
        if (capi_err == NULL) {
            capi_err = #modulename#_error;
            PyErr_SetString(capi_err, capi_errmess);
        }
    } else {
        #varname# = (#ctype# *)(PyArray_DATA(capi_#varname#_as_array));
z/    slen(#varname#) = f2py_itemsize(#varname#);z$    if (#varname#_capi == Py_None) {z    {z        #ctype# capi_c;a          int *_i,capi_i=0;
        CFUNCSMESS("#name#: Initializing #varname#=#init#\n");
        if (initforcomb(PyArray_DIMS(capi_#varname#_as_array),
                        PyArray_NDIM(capi_#varname#_as_array),1)) {
            while ((_i = nextforcomb()))
                #varname#[capi_i++] = #init#; /* fortran way */
        } else {
            PyObject *exc, *val, *tb;
            PyErr_Fetch(&exc, &val, &tb);
            PyErr_SetString(exc ? exc : #modulename#_error,
                "Initialization of #nth# #varname# failed (initforcomb).");
            npy_PyErr_ChainExceptionsCause(exc, val, tb);
            f2py_success = 0;
        }
    }
    if (f2py_success) {zG    }  /* if (capi_#varname#_as_array == NULL) ... else of #varname# */zl    if((PyObject *)capi_#varname#_as_array!=#varname#_capi) {
        Py_XDECREF(capi_#varname#_as_array); }z,        Py_XDECREF(capi_#varname#_as_array);z.    }  /*if (f2py_success) of #varname# init*/)rO   rP   r   r   z6    fprintf(stderr,"debug-capi:Checking `#check#'\n");)rO   rq   zQ    CHECKSCALAR(#check#,"#check#","#nth# #varname#","#varshowvalue#",#varname#) {z    } /*CHECKSCALAR(#check#)*/ZCHECKSCALAR)rO   rP   rq   r   _breakzQ    CHECKSTRING(#check#,"#check#","#nth# #varname#","#varshowvalue#",#varname#) {z    } /*CHECKSTRING(#check#)*/ZCHECKSTRINGZ
CHECKARRAYz5    CHECKARRAY(#check#,"#check#","#nth# #varname#") {z    } /*CHECKARRAY(#check#)*/)rq   rO   rP   r   r   ZCHECKGENERICz7    CHECKGENERIC(#check#,"#check#","#nth# #varname#") {z    } /*CHECKGENERIC(#check#)*/)rq   rO   rP   c           "      C   s  t d| d   i }tdd }t| }tdti|}g }g }| d D ]}d}	| d D ]}
|
d dvr9td	 q,|
d D ]}|d |krI|}	 nq=q,|	sWtd
| tj	d q$|	g}d|	v r~|	d 
 D ]\}}t|	}|d= ||d< ||d< || qd|D ]}	t|	}td rtd }|d }t d t| d|d    |rt d| d t| d| d  t d| d t| d| d  nt d| d t| d| d  t|	\}}|r|r|| n|| t||}t||}qq$t| \}}|r|| t||}t||}t| \}}|r+|| t||}t||}|D ]}t|| d |d  }t||}q7t }|d  dd tjD 7  < i }| D ]}g ||< || D ]}d}|tjv r~tj| }nv|tjv rtj| }nj|tjv rtj| }n^|tj v rtj | }nR|tj!v rtj!| }nF|tj"v rtj"| }n:|tjv rtj| }n.|tj#v rtj#| }n"|tj$v rtj$| }n|tj%v rtj%| }n
tdt&|  qn|| | qnqd|| |D ]}d|v r|d | sd|vr$t||| }t||}qtt'|}t(j)*td |d }||d < t+|d!}|,|d" -d#d$ W d   n	1 sVw   Y  t d%| d |f  td& rt(j)*td |d d' }t+|d!}|,d( |,d)*|d*  W d   n	1 sw   Y  t d+td |d f  td, rt(j)*td |d d- }||d.< t+|d!-}|,d/t  d0tvr|,d1 |,d)*|d2  d0tvr|,d3 W d   n	1 sw   Y  t d4td |d f  |rt(j)*td |d5 }||d6< t+|d!}|,d7 |,d8t  |,d9 g } d:*|d) .d)D ]V}!d;|!/d<  krKd=k rVn n	| |!d)  q:|!r|!d; d>krt0|!d=kr| |!dd= d?  |!d=d }!t0|!d=ksg| |!d)  q:| |!d)  q:d*| -d@d)} |,|  W d   n	1 sw   Y  t dA|  |r|t(j)*td dB|d  }||d6< t+|d!}|,dC |,dDt  |,dE g } d:*|d) .d)D ]k}!d;|!/d<  krdFk rn n	| |!d)  qt0|!dFkrO|!d; d>krO| |!ddF dG  |!dFd }!t0|!d=krF| |!dd= dG  |!d=d }!t0|!d=ks.| |!d)  q| |!d)  qd*| -d@d)} |,|  W d   n	1 sqw   Y  t dH|  |S )Iz
    Return
    z    Building module "%s"...
nameNf2py_versionZ
interfacedrl   block)Z	interfacezabstract interfacez1buildmodule: Expected interface block. Skipping.
zKbuildmodule: Could not find the body of interfaced routine "%s". Skipping.
)fileentryargsZemptygenZ	buildpath
modulenamez(    Generating possibly empty wrappers"
/Zcoutputz    Maybe empty "z-f2pywrappers2.f90"
z-f2pywrappers2.f90z-f2pywrappers.f"
z-f2pywrappers.fZuserY   c                 S   s   g | ]
}|t  v r|qS  )typedef_need_dictvalues).0Zcvarr   r   ^/home/seandotau/au.memorygallery.club/gallery/lib/python3.10/site-packages/numpy/f2py/rules.py
<listcomp>/  s    zbuildmodule.<locals>.<listcomp>rk   zbuildmodule: unknown need %s.
r   Zcsrcwri   	z  z)    Wrote C/API module "%s" to file "%s"
Z	dorestdoczmodule.restz.. -*- rest -*-
rf   r^   z;    ReST Documentation is saved to file "%s/%smodule.rest"
Z
dolatexdocz
module.texZltxz6%% This file is auto-generated with f2py (version:%s)
Z
shortlatexzO\documentclass{article}
\usepackage{a4wide}
\begin{document}
\tableofcontents

r]   z\end{document}z5    Documentation is saved to file "%s/%smodule.tex"
Zf2py_wrapper_outputfsrczC     -*- fortran -*-
z8C     This file is autogenerated with f2py (version:%s)
z<C     It contains Fortran 77 wrappers to fortran functions.
rh   r   !B    z
     &z
     &
z*    Fortran 77 wrappers are saved to "%s"
z%s-f2pywrappers2.f90z!     -*- f90 -*-
z8!     This file is autogenerated with f2py (version:%s)
z<!     It contains Fortran 90 wrappers to fortran functions.
H   z&
     &z*    Fortran 90 wrappers are saved to "%s"
)1rD   defmod_rulesrH   Zmodsign2mapr   r   r   printsysstderritemscopydeepcopyappendrG   optionsr   touchbuildapir   rJ   Z
buildhooksrL   rK   ZbuildusevarsrI   Z	get_needsZf2cmap_mappedkeysrW   rX   rV   rY   rZ   r[   r\   rd   rb   reprmodule_rulesospathjoinopenwriterE   splitfindlen)"mZumretZ	mod_rulesvrdrdZfuncwrappersZfuncwrappers2nnbZbibZnb_listkaZnb1Zisf90b_pathZm_nameapiwraparcrmruZneedscodecrfnfZwnlineslr   r   r   buildmodule  s  











"







	
"
"r   stndr   th)
r                        	   r   c                 C   s  t | \} }t| \}}|t_| d }t| r%td| d | d f  ntd| d   t| }ti |}t	D ]}d|v rE|d | sId|vrTt
||| }t||}q9d\}	}
i }|D ]|}t||| }t|| rpt}n8t}t|| st|| s|	d }	t|	t|	d	   d
 |d< n|
d }
t|
t|
d	   d |d< nd|d< |||< |D ]*}d|v rqd|v r|d || sd|vrt
|||| }t||}d|v r nqq]|D ]d}t|| rt}nt}|| }|D ].}d|vrqd|v r|d || s	d|vrt
|||| }t||}d|v r nqd|| v r@|| d D ]}||d< t
t||| }t||}q+qt|d trO|d   t|d tr]|d   ttd|d |d |d d|d< ttd|d |d d}|dkrttdd|d i|d< ntd |d |d!|d< |d d"d#|d$< |d$ d%d&|d$< ttd'|d( |d) d*}t|d) dkrttd+|d( |d) d*|d,< n||d,< ||d(< t|d- trttd.d-|d- id/ |d-< g |d0< g |d1< d2D ]G}||v rt|| tr|d0 ||  |d0< d3| }||v rHt|| trH|d1 || d4d  d5g || dd   d6g |d1< qt
t|}t| r`td7|d8   ||fS td9|d8   ||fS ):Nvarsz5            Constructing wrapper function "%s.%s"...
r   r   z.        Constructing wrapper function "%s"...
r   )r   r   r   
   z	 argumentnthz keywordZhiddenr   r   checkrP   rT   z #docsign##docsignopt##docsignxa#r   r   r   )r   r   r   Zdocsignaturez#docsignopt##docsignxa#r   r   )r   r   rk   z	#docsign#Zdocsignatureshortz#docsign#[#docsignopt#])r   r   _z\_Zlatexdocsignatureshort,z, z #callfortran##callfortranappend#r   r   )r   r   z##callfortran# 0,#callfortranappend#Zcallcompaqfortranr   z#docreturn#z = rz   r{   )rv   rw   rx   ry   latexr   z\begin{description}z\end{description}z              %s
ro   z          %s
)rM   Zassubrr
   rH   depargsr.   rD   Zroutsign2mapr   
rout_rulesr   Zsign2mapr   	aux_rules	arg_rulesr#   r/   r   stndcheck_rules
isinstancelistreverserF   rE   r   routine_rules)routr   r   r   varr   r   r   r   r   ZnthkZsavevrdr   Z_rulesr   Zoptargscfsr   r   r   r   r     s   


 
&







r   )j__doc__r   r   timer   pathlibr   rk   r   Zauxfuncsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   versionr   Znumpy_versionr   Zsepdictr   intenvirongetZgenerationtimeasctimegmtimer   r   r  r   r   r   r   r  r   r   r   r   r   r   r   <module>   s>  3 
  ##&&)),,225588;;>>@@CCkk 
  8Q



 !""
(%	-	-


1,    '		
V


 ',




F-
~     %  6  ;  A  G  S  ]  `  d  h  n   
       
$    &    ,    9    B    G    P    T    X    `
1
           !      $      )      .      3      8      >      C      H      R" N