K isdZddlZddlZddlZddlZddlmZddlmZm Z m Z m Z m Z m Z mZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm 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;mZ>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRejZTejZUiZViZWdD]ZXdeWeX< eYejjd ejZ\d ejeje\zd zed zd zedzdzedzdzedzdzedzdzedzdzedzdzedzdzedzdzedzdzed zd!zed"zd#zed$zd%zed&zd'zed(zd)zeUzd*zd%d%d+gd,d-d.gd/Z_d0d1d2d3d4d5d6d7d7ed8eMed7id9 gZ`eWd:d;dd?d@gdAedBidCdDgdEgdF ZaidGidHddIddJddKddLddMdNdOddPddQddRddSdTdUddVddWddXddYddZd7d[d7d\d7d]d7d^d7d_d7dJd`dadbdcd7ddd7dSd7dUd7dOdedPdfdQdgdRdhidVdidWdjdXdkdYdldmd7dnd7dod7dpdqdrdsgdtdudvdwgdxdydKdzdId{dLd|dHd}d~d7d7d7d7d7d7d7d7d7d7d7d7d7edeMed7id ddd7eMe:dddd7e:ddeLeMeNe:e,eMe%deLeMe:e,eMe%de:d7e%d7ieMeNe:e,e%deLeMe:e,eMe%deLeMe:e%dieLeMeNe:e,eMe%diedgiedieDdiedieMeNee%dieDdiedigeLeBeMeCddeMeNe:e%de%d7ieMeNe:e%de%dieMeNe:e%dieMeNe:e%ddgiedgiedieDdieMeNee%diedieDdiedige(ddeMeNe:e%de%d7ieMeNe:e%de%dieMeNe:e%dieMeNe:e%ddgiedgiedieDdieMeNee%diedieDdiedigeCddeMe/diddedigeLeeAdieLeeMeAdigeLe'eMe(deLeMeNe:e,eMe%deLeMe:e,eMe%de%d7ieLeMeNe:e,eMe%deLeMe:e,eMe%de%die$deMe#die#digedieDdiedieMeNee%dieDdiedieLee#dieLeeMe#dige#dieMe%die#die9die7digeMe/die#deMeNe#e/dieLe'eMeAeMe(d deMeNe:e,deLeMe:e,diddgdddddddddedieDdideDdiediedidgdddgd΢eLeAeMe(dϜ dddedӜg Zbe8de6de5deFdeJdeEdeHdeGdeKdeIde>de)dedi ZcdGeWidedigdecdޜdediedieLe=eMe!dddddeLe=eMe!e2ddedie!dddgdge?dgddediedigeddeLeeMe"ideLeeMe"e1ide*d7ddeNeGeFd7ddeKd7ddeId7dde"d7dedide@dgZdgdGeWidedigdd7ecdeLe;e1dieLe ed?ieLe;eMed2id3gd@d6geLe!e1d7d%e2d*ieLe!e/dAedieLe!e/d7d8e2dBidge!dCed9ie!d7d8gdDddEedFieLe2eMe,dGige2dideLe2eMe,dHige?dIdJeMe,dKigdLd6ddMeMe,dHige?d7d%e<die;die<d+ie;d+ieLe0eMe,dGie0dNige0d-ie0d.eLe0eMe,dHieLe?e1dOdeLe?e/iedFie?d7d8dPdQdRdSdTe@dUigde@dEie2dVidedWdXdYdZd[d\d]d^eLee3d_d`eLee3d7d8dadYdZd[dbd]dceLee.d_d`eLee.d7d8ediediged7dd*e<die;die<d+ie;d+ieLee1dddedfdge/dhie1diidje@dkiee1dlie/dmie"dnidogigdpeMeNe2e/dqieLe/eMe2driedsiged7dtdeLeeMe"ideLeeMe"e1ide*d7ddeGd7ddeKd7ddeId7dde"d7dded)de d)edide@dZeeduiddvdwdxdyeLe=eMe!d7dzd{d|d}e?d7dzd~dded7dddddgZfdZgddddddddddd ZhdZiy(a+ 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 -- 2011 Pearu Peterson all rights reserved. Copyright 2011 -- present NumPy Developers. 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. N)Path) __version__ capi_mapscfuncs common_rules f90mod_rules func2subr use_rules)C applyrules debugcapi dictappenderrmessgentitlegetargs2hascallstatement hasexternals hasinitvaluehasnote hasresultnoteisarrayisarrayofstrings isattr_value ischaracterischaracter_or_characterarrayischaracterarray iscomplexiscomplexarrayiscomplexfunctioniscomplexfunction_warnisdummyroutine isexternal isfunctionisfunction_wrapisint1 isint1array isintent_aux isintent_cisintent_callback isintent_copy isintent_hideisintent_inoutisintent_nothide isintent_outisintent_overwrite islogicalislong_complex islong_doubleislong_doublefunction islong_longislong_longfunctionismoduleroutine isoptional isrequiredisscalarissigned_long_longarrayisstring isstringarrayisstringfunction issubroutineissubroutine_wrap isthreadsafe isunsignedisunsigned_charisunsigned_chararrayisunsigned_long_longisunsigned_long_longarrayisunsigned_shortisunsigned_shortarrayl_andl_notl_oroutmessreplacerequiresf90wrapper stripcomma)decl frompyobjcleanupfrompyobjtopyarrmethod pyobjfromclosepyobjfromfreemem userincludes includes0includestypedefstypedefs_generated cppmacrosr callbackslatexdocrestdoc routine_defsexternroutinesinitf2pywraphooks commonhooksinitcommonhooks f90modhooksinitf90modhooks 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 . * 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 #include zSee f2py2e/cfuncs.py: includesz #includes# #includes0# z,See f2py2e/rules.py: mod_rules['modulebody']zM static PyObject *#modulename#_error; static PyObject *#modulename#_module; zSee f2py2e/cfuncs.py: typedefsz #typedefs# z(See f2py2e/cfuncs.py: typedefs_generatedz #typedefs_generated# zSee f2py2e/cfuncs.py: cppmacrosz #cppmacros# zSee 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# zSee 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# zSee 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("aW"); 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# #if Py_GIL_DISABLED // signal whether this module supports running with the GIL disabled PyUnstable_Module_SetGIL(m , #gil_used#); #endif #ifdef F2PY_REPORT_ATEXIT if (! PyErr_Occurred()) on_exit(f2py_report_on_exit,(void*)"#modulename#"); #endif if (PyType_Ready(&PyFortran_Type) < 0) { return NULL; } 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#) bodyrSrar`rfrbrdr^r_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 CFUNCSMESSMINMAXz#define DEBUGCFUNCSz1\subsection{Wrapper function \texttt{#texname#}} zk \noindent{{}\verb@#docreturn##name#@{}}\texttt{(#latexdocsignatureshort#)} #routnote# #latexdocstrsigns# zlWrapped function ``#name#`` --------------------------------------------------------------------------------) rkrmr`rbradocdocshortdocsneedr\r^r_rkcallfortranroutineroutdebugenterrOroutdebugleaveroutdebugfailure setjmpbufz || docstrreq docstropt docstrout docstrcbs docstrsignsz\n" "latexdocstrsignslatexdocstrreqlatexdocstroptlatexdocstroutlatexdocstrcbskwlist kwlistopt callfortrancallfortranappenddocsign docsignoptz/*decl*/rVz /*freemem*/ docsignshortdocsignoptshortz\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_capifunctyperPz /*frompyobj*/rQz/*end of cleanupfrompyobj*/rTz /*pyobjfrom*/rUz/*end of closepyobjfrom*/rRz /*topyarr*/z/*routdebugleave*/z/*routdebugenter*/z/*routdebugfailure*/z/*callfortranroutine*/ argformatz --- #note#) keyformat need_cfuncs docreturnreturn returnformatrformatkwlistxakeys_xaxaformat docsignxadocsignxashortinitf2pywraphookroutnotezf2py_rout_#modulename#_#name#z#modulename#.#name#)apinamepynamerO_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 })rdeclfortranroutine routine_defrtrurzFextern 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_WRAPPEDFUNC#(#name_lower#,#NAME#),NULL); PyObject_SetAttrString(o,"_cpointer", tmp); Py_DECREF(tmp); s = PyUnicode_FromString("#name#"); PyObject_SetAttrString(o,"__name__", s); Py_DECREF(s); } 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 })rrrrrtrura { 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"); )rrr|rrurzJextern #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);zpyobj_from_#ctype#1 long_long long_doublez #rformat#z,#name#_return_value_capiz,#name#_return_value) rrrOrurTrtrrrzs {"#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);)rr STRINGFREE) rrrOrrurrrVrtrz] 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");)rvrwrxrcomplex_long_double unsigned_charunsigned_shortunsignedunsigned_long_long signed_char characterz1 /* Processing auxiliary variable #varname# */z' fprintf(stderr,"#vardebuginfo#\n");z, /* End of cleaning variable #varname# */)rPrQrtz #ctype# #varname# = 0;zmath.hz #varname# = #init#;)rOrtrPrz ,#varname#z #outvarname#,z #varrformat#)rr|rrrz #ctype# #varname#;z3 #varname#.r = #init.r#, #varname#.i = #init.i#;)rOrPr #ctype# #varname# = NULL; int slen(#varname#);zlen..)rOrtr) #ctype# *#varname# = NULL;4 npy_intp #varname#_Dims[#rank#] = {#rank*[-1]#};& const int #varname#_Rank = #rank#;forcombror)rtr_dependzflen(#varname#),string)rrtrz' /* Processing variable #varname# */)rPrQrrtz #pydocsign#z\item[]{{}\verb@#pydocsign#@{}}z--- See above.)r{rzr|rrrdependz "#varname#",z #varname#,)rrrz#varname#=#showinit#,)rrrr)rrrrz#varname#_extra_args=(),rz#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;rz"#varname#_extra_args",OrrzO!z,&#varname#_cb.capirz!,&PyTuple_Type,&#varname#_xa_capiz(setjmp(#varname#_cb.jmpbuf))z#varname#_cptr,rtz#cbname#zsetjmp.hzif(F2PyCapsule_Check(#varname#_cb.capi)) { #varname#_cptr = F2PyCapsule_AsVoidPtr(#varname#_cb.capi); } else { #varname#_cptr = #cbname#; } aif (#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); }SWAPcreate_cb_arglist)rPrQrtrrz6 fprintf(stderr,"#vardebugshowvalue#\n",#varname#);z &#varname#,)rOrTrrr)rtr' 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*/ztry_pyarr_from_#ctype#) rOrrrrrTrUrtrz; if (#varname#_capi == Py_None) #varname# = #init#; elserz" 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)rPrtrr)rPrrzD fprintf(stderr,"#vardebugshowvalue#\n",#varname#.r,#varname#.i);z,#varname#_capi)rOrrTrrze f2py_success = try_pyarr_from_#ctype#(#varname#_capi,&#varname#); if (f2py_success) {z6 } /*if (f2py_success) of #varname# pyobjfrom*/) rOrrrrrtrTrUrzW if (#varname#_capi==Py_None) {#varname#.r = #init.r#, #varname#.i = #init.i#;} elsez3 } /*if (f2py_success) of #varname# frompyobj*/)rOrz4 #varname#_capi = pyobj_from_#ctype#1(#varname#);)rTrtr)rrrzslen(#varname#),zF fprintf(stderr,"#vardebugshowvalue#\n",slen(#varname#),#varname#);z: STRINGPADN(#varname#, slen(#varname#), ' ', '\0'); STRINGPADN)rOrrrTrrtrz 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#*/rz f2py_success = try_pyarr_from_#ctype#(#varname#_capi, #varname#, slen(#varname#)); if (f2py_success) {)rrrrrTrUrtrrrrz2 PyArrayObject *capi_#varname#_as_array = NULL;z" int capi_#varname#_intent = 0;z int slen(#varname#) = 0;z,capi_#varname#_as_array)rOrrrrtrz% int capi_overwrite_#varname# = 1;z"overwrite_#varname#",iz,&capi_overwrite_#varname#zoverwrite_#varname#=1,zoverwrite_#varname#,z9overwrite_#varname# : input int, optional\n Default: 1)rOrrrrrr{rzK capi_#varname#_intent |= (capi_overwrite_#varname#?0:F2PY_INTENT_COPY);z% int capi_overwrite_#varname# = 0;zoverwrite_#varname#=0,z9overwrite_#varname# : input int, optional\n Default: 0)rOrrrrrz #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"); struct ForcombCache cache; if (initforcomb(&cache, PyArray_DIMS(capi_#varname#_as_array), PyArray_NDIM(capi_#varname#_as_array),1)) { while ((_i = nextforcomb(&cache))) #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*/)rPrQrrz6 fprintf(stderr,"debug-capi:Checking `#check#'\n");)rPrtzQ CHECKSCALAR(#check#,"#check#","#nth# #varname#","#varshowvalue#",#varname#) {z } /*CHECKSCALAR(#check#)*/ CHECKSCALAR)rPrQrtr_breakzQ CHECKSTRING(#check#,"#check#","#nth# #varname#","#varshowvalue#",#varname#) {z } /*CHECKSTRING(#check#)*/ CHECKSTRING CHECKARRAYz5 CHECKARRAY(#check#,"#check#","#nth# #varname#") {z } /*CHECKARRAY(#check#)*/)rtrPrQrr CHECKGENERICz7 CHECKGENERIC(#check#,"#check#","#nth# #varname#") {z } /*CHECKGENERIC(#check#)*/)rtrPrQc td|ddi}tdd}tj|}t dt i|}g}g}|dD]}d} |dD]+} | dd vr t d | dD]} | d|k(s | } +-| s td |d tj [| g} d| vrN| djD]8\} }tj| }|d=| |d<||d<| j|:| D]+} t| }tdrtd}|d}tdt!|d|dj#|r]td|dt!|d|dj#td|dt!|d|dj#n.td|dt!|d|dj#t%| \}}|r%|r|j|n|j|t'||}t ||}.t)j*|\}}|r|j|t'||}t ||}t-j*|\}}|r|j|t'||}t ||}|D]-}t/j0||d|d}t ||}/t3j4}|dxxtj6Dcgc]}|t8j;vr|c}z cc<i}|j=D]}g||<||D]} d}| t2j>vrt2j>| }nr| t2j@vrt2j@| }nK| t2jBvrt2jB| }n$| t2jDvrt2jD| }n| t2jFvrt2jF| }n| t2jHvrt2jH| }n| t2j2vrt2j2| }n| t2jJvrt2jJ| }nf| t2jLvrt2jL| }n@| t2jNvrt2jN| }nt dtQ| d||j||j||D]/}d |vr |d |sd |vst'|||}t ||}1t'tR|}tTjVjYtd|d}||d!<t[|d"5}|j]|d#j_d$d%dddtd&|dd'|d(td)rtTjVjYtd|dd*z}t[|d"5}|j]d+|j]d,jY|d-dddtd.tdd|dd/td0rtTjVjYtd|dd1z}||d2<t[|d"5}|j]d3t d4d5tvr4|j]d6|j]d,jY|d7d5tvr|j]d8dddtd9tdd|dd:|rtTjVjYtd|d;} | |d<<t[| d"5}|j]d=|j]d>t d4|j]d?g}!d@jY|d,zjad,D]}"dA|"jcdBcxkrdCkrnn|!j|"d,z5|"rV|"dAdDk(rNte|"dCk\r+|!j|"ddCdEz|"dCd}"te|"dCk\r+|!j|"d,z|!j|"d,zdjY|!j_dFd,}!|j]|!dddtdG| d(|rtTjVjYtd|dd} | |d<<t[| d"5}|j]dH|j]dIt d4|j]dJg}!d@jY|d,zjad,D]}"dA|"jcdBcxkrdKkrnn|!j|"d,z5te|"dKkDrr|"dAdDk(rj|!j|"ddKdLz|"dKd}"te|"dCkDr+|!j|"ddCdLz|"dCd}"te|"dCkDr+|!j|"d,z|!j|"d,zdjY|!j_dFd,}!|j]|!dddtdM| d(|Scc}w#1swYxYw#1swYUxYw#1swYxYw#1swYxYw#1swYSxYw)Nz Return z Building module "name"... N f2py_version interfacedrmblock) interfacezabstract interfacez1buildmodule: Expected interface block. Skipping. zB    NqcQ_`gjgqgq s $ b=7 ))+ $1mmB'LF F s#  $  $B'r*Ez" -\*CDxqY 01288:/x7LMNF81VH,>?@FFH/x7IJKF81VHO<=CCE/x7IJKF81VHO<=CCE  IC!((. ''-C%BB#B7 $/2$j&&q)HB D! B B B B&&q)HB T" B B B B    # #Aqx& ': ; B      E *9+B+BA4!%6%=%=%??AA D ZZ\Qq AAF$$$$$Q'foo%OOA&f)))''*foo%OOA&f///--a0f&&&$$Q'fmm#MM!$f&&&$$Q'f(((&&q)f(((&&q)4T!WISAB GNN1 3 8T $ Mkak!n(!2CAsA&BB#B$ L" %B gk*C N ;BCK b#9! < ((w789 '& {-t4 HI{ WW\\ K #l"3m"CE "c] .a GG' ( GGDIIbm, - . %s<'8: ;| WW\\ K #l"3l"BDE "c] +a GGCL>QTU W7*np "Z.127*)* + %s<'8: ; WW\\'+.4I0J KF "c] a GG- . GGF|nTWX Z GGO QEkk,/$6==dC +s (b(LLT*1Q43;a&B, QsVj%89bcFa&B,LLT*LLT* +GGEN**<>E GGEN' ( 8DAB WW\\ K S%6$77I"JLF "c] a GG) * GGF|nTWX Z GGO QEkk-047>>tD +s (b(LLT*Vb[QqTS[LL3B+!56"#Aa&2+ QsVk%9:bcFa&2+LLT*LLT* +GGEN**<>E GGEN+ , 8DAB JmAP99 . . + +  2  sSj &%j%*5j2 A/j?Ck 4Ak )Dk*Ak%j/2j<?k  kk"stndrth) r rc F tj|\}}t|\}}|t_|d}t |rt d|dd|ddnt d|ddtj|}ti|}tD]/}d|vr |d|sd|vst|||}t||}1d \} } i} |D]} tj| || }t|| rt} not} t|| sVt!|| s$| d z} t#| t$| d zzd z|d <n)| d z} t#| t$| d zzdz|d <nd|d <|| | <| D]@}d|vrd|vr|d|| sd|vst|||| }t||}d|vs@|D]} t|| rt} nt} | | }| D]@}d|vrd|vr|d|| sd|vst|||| }t||}d|vs@nd|| vsp|| dD]'}||d<tt&||| }t||})t)|dt*r|dj-t)|dt*r|dj-t/t1d|d|d|dd|d<t/t1d|d|dd}|dk(rt/t1d d|di|d!<nt1d"|d|d#|d!<|d!j1d$d%|d&<|d&j1d'd(|d&<t/t1d)|d*|d+d,}t3|d+d kDr"t/t1d-|d*|d+d,|d.<n||d.<||d*<t)|d/t*r t/t1d0d/|d/id1z|d/<g|d2<g|d3<d4D]g}||vr!t)||t*r|d2||z|d2<d5|z}||vs2t)||t*sF|d3||d6d zd7gz||d dzd8gz|d3<itt4|}t |rt d9|d:d;||fSt d<|d:d;||fS)=Nvarsz+ Constructing wrapper function "r.rrz' Constructing wrapper function "r)rrr z argumentnthz keywordhiddenrrcheckrQrUz #docsign##docsignopt##docsignxa#rrr)rrr docsignaturez#docsignopt##docsignxa#rr)rrrlz #docsign#docsignatureshortz#docsign#[#docsignopt#])rr_z\_latexdocsignatureshort,z, z #callfortran##callfortranappend#rr)rrz##callfortran# 0,#callfortranappend#callcompaqfortranrz #docreturn#z = r~r)rzr{r|r}latexrz\begin{description}z\end{description}z rrrgz )r assubrrrdepargsr6rK routsign2mapr rout_rulesr sign2mapr' aux_rules arg_rulesr+r7rstnd check_rules isinstancelistreverserNrLr routine_rules)routrrr=varrrrrr2nthksavevrdr _rulesroptargscfsr s r!rrs!!$'JD$TNMD'I v,Ctl#T&\3 4 :4<.PQ   &C B B $ Mkak$/XQ5FAsD)BB#B$ ICG   CF+ A FF Q(!#a&)'C!%cT#(^!;k!ICJ!8D!%dd4"9o!= !JCJ%E   AA~A +!H+c!f"581;L3A/B'q= !0( A FFaj A!A +!H+c!f"581;L3A/B'q=  c!f VG_ ( G  S#a&9B' ((&"'($/ &&("%&- $$&#G,N8:9 ;=l;K:<[/-K%LMB~!:/12B/C023D0E"G#$G"}", K)R ]!; <#> #**C68m9@+-#. $&&9#:#B#B3#NB #% $"")'#t"4 W?$&}$5BObLcBef gC 2! "#a'",W5Z<>}r?r@rArBrCrDrErFrGrHrIrJrKrLrMrNversionr numpy_versionrsepdictr intenvirongetgenerationtimeasctimegmtimerrrHr?rrArBrDr"rCrrPr!r_s[/` DDDDDDDDDDDDDDDDDDL"" ##   ,AGAJ&RZZ^^$7EF '$,,{t{{>'BC D G */0+1*4+2=>3?2B3:/0;1:4; @9:A ;@>A#F01G#2F5G&L-.M&/L2M)R34S)5R8S,X34Y,5X8Y2d45e26d9e5j67k58j;k8p./q80p3q;v78w;9v<w>|@A}>B|E}@@78A@9@<ACF$%GC&F()#Gk#V&3Wk3V'6WRf#)!')3s[ |/+151(E'NB7   7 p$-, .8 : 523G;SL b'.6FfVZ*D2Dd%v&t.9$ALT&t .;I  -d  +D  3CD +D3CD' "'"2'(5b';Nr' 2'$R'*0' =' '.r' r'.r' 1' =!'" +#'$ B%'& :''( :)'* 6+', ;-'. R/'.%b/'.+5b/'0 _1'4 :;5'6 _7': 67;'< =='<#34H='> .?'@ 2A'B 6C'D RE'D')2rb22BZ\lE'NB?M'P3'(  C7!  $U4+L%MuUcOdehq$U?%;Z~I^_bS.-r! $ NC D : %(*eN6K L : %(. 9 :  uT/:>?~AVWYab oq r  ? @  4 5 4(.9 :C E = > ? +  e,=&>?G$J$T/>%JKNV-r! $7 8 :  :  #4#HI L  tO^<=QY?Z[ vx y  7 8 4(.9 :7 9 L N 5 6 7 # "W,Z$T/>%JKNV-r! $7 8 :  :  #4#HI L  tO^<=QY?Z[ vx y  7 8 4(.9 :7 9 L N 5 6 7 # $W,ZM*J7%A)+=>@ %i1A BE !&i7G1H IL  ! E/$:;#& %U4+L%MuUcOdeht$U?%;Z~I^_bV-r! %_j9:' ); %(*eN6K L;  8  )*R)*,PR#EG  7 8   4(.9 :M O 5 6 7 # 9/ 0q s 9e$56 79} ~@ ()st'2#%:;%{3'79}-{;$&A/?@BXZ E*:$;U?=ST_0bhd?J?@PeO4jAw ;79EIt_:-`&8 ,/ !-.NO!-.LM ,k: )#C DS1 4$(93(%*@AQ)V{wv u` H !+"M#%:$o%'7)+?)?*,<.0D,k]2K " J "LMQJ! -x("$=>% "23 %$&% "2LA )"$YZ1+  <3lL5QR  %~!67 %~!68HI (/: $ (  /0BC_T  lJ J  @ "LMQJ!  J J(89=IJ(89=I"$45 -=>AdBIAdBI!% "2MB iJ t !Z[% "23sJ @)"L% 2C]S!hi!23 J L: #& #& "45 "45!9:$' *+cd #34 KJ d$%~Z|)<=CE23 R%& #34 cJ xHI =1wJ ~#$YZ =1}J F#$Z[&'EJ N !hiMJ Z<$/ D E<z!2 3 J L   . eJ&78,GI#YJ @ :  J L  -&w  #\24%}J d!#& #& "45 "45 >5#4 5 J L  *+_`!9~uZ'89<I"23cJ D %-0C J H  !jkG J T 2G9E5!?@ $+-?@!;< S J n 8,/-0Q!34 m J @ c!34 J J 8,/-0Q/ I J \ c/[ J d  *\<,HIc J l : #& #& "45 "45!12 k J |  4D > ?E F  > @ !79(!:;  30d O 4 m4 582 3=% "5 6G I K L  {>y J z %~!67y J ~ %~!68HI} J D E J N #O J X $Y J b (c J l m J x w J B"AJ L/0BCKJ  ` !]^o<% "23 o< P; R=- DI\ DTdt DTdt5srP