/ lib / numpy / f2py / rules.pyc
rules.pyc
  1  o

  2  [��cF��@sdZddlZddlZddlZddlZddlmZddlmZddl	m
  3  Z
  4  mZmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm 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@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLddlmMZMddlmNZNdd	lmOZOdd
  5  lmPZPddlmQZQddlmRZRejSZTejSZUiZViZWd
D]ZXdeWeX<q�eYejZ�[de����Z\de�]e�^e\��ded�ded�ded�ded�ded�ded�ded�ded �d!ed"�d#ed$�d%ed&�d'ed(�d)ed*�d+ed,�d-ed.�d/eUd0d+d+d1�gd2�d3d4gd5�Z_d6d7d8d9d:d;d<d=d=ed>eGe�d=id?�
  6  gZ`eWd@dAdBdCdDdEdFgdG�edHidIdJgdKgdL�ZaidMidNd�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�id\do�d]dp�d^dq�d_dr�dsd=�dtd=�dud=�dvdw�dxdyg�dzd{�d|d}g�d~d�dQd��dOd��dRd��dNd��d�d=��d=d=d=d=d=d=d=d=d=d=d=d=ed�eGe�d=id��
�d�d�d=eGe3�d��d�d�d=e3d��d�eFeGeHe3e%��eGe��d�eFeGe3�e%eGe��d�e3d=ed=ieGeHe3e%e��d�eFeGe3�e%eGe��d�eFeGe3�e�d�ieFeGeHe3e%��eGe��d�ied�gied�ie>d�ied�ieGeHee��d�ie>d�ied�igeFe;eGe=��d��d�eGeHe3e��d�ed=ieGeHe3e��d�ed�ieGeHe3e��d�ieGeHe3e��d�d�gied�gied�ie>d�ieGeHee��d�ied�ie>d�ied�ige!d��d�eGeHe3e��d�ed=ieGeHe3e��d�ed�ieGeHe3e��d�ieGeHe3e��d�d�gied�gied�ie>d�ieGeHee��d�ied�ie>d�ied�ige=d��d�eGe(�d�id�d�ed�igeFee:�d�ieFeeGe:��d�igeFe eGe!��d��eFeGeHe3e%��eGe��d�eFeGe3�e%eGe��d�ed=ieFeGeHe3e%��eGe��d�eFeGe3�e%eGe��d�ed�ied�eGe�d�ied�iged�ie>d�ied�ieGeHee��d�ie>d�ied�ieFee�d�ieFeeGe��d�iged�ieGe�d�ied�ie2d�ie0d�igeGe(�d�ied�eGeHee(��d�ieFe eGe:�eGe!��d��	d�eGeHe3e%��d�eFeGe3�e%�d�id�d�gd�d�d�d�d�d�d�d�d�ed�ie>d�id�e>d�ied�ied�id�gd�d�d�gdԢeFe:eGe!��d՜
  7  d�d�d�edٜg
  8  Zbe1d�e/d�e.d�e@d�eDd�e?d�eBd�eAd�eEd�eCd�e7d�e"d�ed�i
ZcdMeWid�ed�igd�ecd�d�ed�ied�ieFe6eGe��d�d�d�d�d�eFe6eGe�e+�d�d�ed�ied�d�d�gd�ge8d�gd��d�ed�ied�iged�d�eFeeGe��id�eFeeGe�e*�id�e#d=d��d�eHeAe@�d=d��d�eEd=d��d�eCd=d��d�ed=d��ed�id�e9d��gZdgdMeWi�d�ed�igd�d=ecd���eFe4e*�d�ieFe5e*�d�ie+d�ieFe4e*�d�ed�igieFe5e*�d�ed�igie+d�eFee(�d�eFee*��digid=�d���d�deFe*eGe4���d���d�d�deFe*e4��d��d�d�e+�d��i�de*�d	i��d
  9  e*�di�dVe*�di�dX�d
�d_�d�d]e*�di�dP�d�d�deGe&��dig��de*�di�d�e5�di��de4�di��de*�di�dse5�di�dte4�di��d�d�dS�d�dbeGe&��di��d�d �d!g�d�ei��eGe&��d"ie&�d#i�d$e�d%eGe&��d&igi�d'g�d(�d)�d*ged=�d+��d�e�d,ieHe%e<��deGeHe%e<���d-ie+d�ieFe6eGe���d.��ed�ieFe6eGe���d/���d0e5�die4�die5�d1ie4�d1ie)�d2ie)�d3ie)�d4ieFe6eGe�eGe8�e*��d5�	�e�d6�d7d=ieFe4eGe���d8�d7d=ieGe-��d9ie-�d:ig�d;eGe-��d<ieFe6eGe�e*�d=�d+��ed�ieceFe6eGe�e(�d=�d=��e�d,ieFe6eGe��d=�d>��d�e%�deGe%��d-ie�d?ie+�d@ie�dA���d0e5�die4�die5�d1ie4�d1ie)�d4ie)�dBie)�dCieFee*��dD�	�e�dEieFe4eGe���d8i�d9g�dF�d<geFee*�d=�d+��e+�d0ieFee(��dG��ed�ieFee(�d=�d>��e+�dHid�ge�dI��e�d?ied=�d>��g�dJ��d�dKe�dLieFe+eGe%���dMige+d�id�eFe+eGe%���dNige8�dO���dPeGe%��dQig�dR�d<d�dSeGe%��dNige8d=�d+��e5�die4�die5�d1ie4�d1ieFe)eGe%���dMie)�dTige)�d3ie)�d4eFe)eGe%���dNieFe8e*��dU��d�eFe8e(�i�e�dLie8d=�d>���dV�dW�dX�dY�dZe9�d[ig�de9�dKie+�d\id�e�d]���d^�d_�d`�da�db�dc�ddeFee,��de���dfeFee,�d=�d>���dg�d_�d`�da�dh�dc�dieFee'��de���dfeFee'�d=�d>��ed�ied�iged=d����d0e5�die4�die5�d1ie4�d1ieFee*��dj���dk�dl�dme(�dnie*�doi�dpe9�dqiee*�drie(�dsie�dti�dugig�dveGeHe+e(���dwieFe(eGe+���dxie�dyiged=�dz��d�eFeeGe��i�d�eFeeGe�e*�i�d�e#d=d���d�eAd=d���d�eEd=d���d�eCd=d���d�ed=d���d�e�d/��d�e�d/��ed�id�e9d���Zee�d{id�d|��d}�d~�deFe6eGe��d=�d���d��d��d�e8d=�d���d��d��d�ed=�d���d��d��d��d��gZf�d��d��Zg�d��d��d��d��d��d��d��d��d��d��d��
 10  Zh�d��d��ZidS(�aG
 11  
 12  Rules for building C/API module with f2py2e.
 13  
 14  Here is a skeleton of a new wrapper function (13Dec2001):
 15  
 16  wrapper_function(args)
 17    declarations
 18    get_python_arguments, say, `a' and `b'
 19  
 20    get_a_from_python
 21    if (successful) {
 22  
 23      get_b_from_python
 24      if (successful) {
 25  
 26        callfortran
 27        if (successful) {
 28  
 29          put_a_to_python
 30          if (successful) {
 31  
 32            put_b_to_python
 33            if (successful) {
 34  
 35              buildvalue = ...
 36  
 37            }
 38  
 39          }
 40  
 41        }
 42  
 43      }
 44      cleanup_b
 45  
 46    }
 47    cleanup_a
 48  
 49    return buildvalue
 50  
 51  Copyright 1999,2000 Pearu Peterson all rights reserved,
 52  Pearu Peterson <pearu@ioc.ee>
 53  Permission to use, modify, and distribute this software is given under the
 54  terms of the NumPy License.
 55  
 56  NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
 57  $Date: 2005/08/30 08:58:42 $
 58  Pearu Peterson
 59  
 60  �N)�Path�)�__version__)C�
 61  applyrules�	debugcapi�
 62  dictappend�errmess�gentitle�getargs2�hascallstatement�hasexternals�hasinitvalue�hasnote�
hasresultnote�isarray�isarrayofstrings�ischaracter�ischaracterarray�ischaracter_or_characterarray�	iscomplex�iscomplexarray�iscomplexfunction�iscomplexfunction_warn�isdummyroutine�
 63  isexternal�
 64  isfunction�isfunction_wrap�isint1�isint1array�isintent_aux�
 65  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�
 66  isoptional�
 67  isrequired�isscalar�issigned_long_longarray�isstring�
isstringarray�isstringfunction�issubroutine�isattr_value�issubroutine_wrap�isthreadsafe�
 68  isunsigned�isunsigned_char�isunsigned_chararray�isunsigned_long_long�isunsigned_long_longarray�isunsigned_short�isunsigned_shortarray�l_and�l_not�l_or�outmess�replace�
 69  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�
 70  �SOURCE_DATE_EPOCHz�/* File: #modulename#module.c
 71   * This file is auto-generated with f2py (version:#f2py_version#).
 72   * f2py is a Fortran to Python Interface Generator (FPIG), Second Edition,
 73   * written by Pearu Peterson <pearu@cens.ioc.ee>.
 74   * Generation date: a
 75   * Do not edit this file directly unless you know what you are doing!!!
 76   */
 77  
 78  #ifdef __cplusplus
 79  extern "C" {
 80  #endif
 81  
 82  #ifndef PY_SSIZE_T_CLEAN
 83  #define PY_SSIZE_T_CLEAN
 84  #endif /* PY_SSIZE_T_CLEAN */
 85  
 86  /* Unconditionally included */
 87  #include <Python.h>
 88  #include <numpy/npy_os.h>
 89  
 90  zSee f2py2e/cfuncs.py: includesz
 91  #includes#
 92  #includes0#
 93  
 94  z,See f2py2e/rules.py: mod_rules['modulebody']zM
 95  static PyObject *#modulename#_error;
 96  static PyObject *#modulename#_module;
 97  
 98  zSee f2py2e/cfuncs.py: typedefsz
 99  #typedefs#
100  
101  z(See f2py2e/cfuncs.py: typedefs_generatedz
102  #typedefs_generated#
103  
104  zSee f2py2e/cfuncs.py: cppmacrosz
105  #cppmacros#
106  
107  zSee f2py2e/cfuncs.py: cfuncsz
108  #cfuncs#
109  
110  z"See f2py2e/cfuncs.py: userincludesz
111  #userincludes#
112  
113  z"See f2py2e/capi_rules.py: usercodez9
114  #usercode#
115  
116  /* See f2py2e/rules.py */
117  #externroutines#
118  
119  z#See f2py2e/capi_rules.py: usercode1z
120  #usercode1#
121  
122  z%See f2py2e/cb_rules.py: buildcallbackz
123  #callbacks#
124  
125  zSee f2py2e/rules.py: buildapiz	
126  #body#
127  
128  z&See f2py2e/f90mod_rules.py: buildhooksz
129  #f90modhooks#
130  
131  z/See f2py2e/rules.py: module_rules['modulebody']�
132  
133  z&See f2py2e/common_rules.py: buildhooksz
134  #commonhooks#
135  
136  zSee f2py2e/rules.pya,
137  
138  static FortranDataDef f2py_routine_defs[] = {
139  #routine_defs#
140      {NULL}
141  };
142  
143  static PyMethodDef f2py_module_methods[] = {
144  #pymethoddef#
145      {NULL,NULL}
146  };
147  
148  static struct PyModuleDef moduledef = {
149      PyModuleDef_HEAD_INIT,
150      "#modulename#",
151      NULL,
152      -1,
153      f2py_module_methods,
154      NULL,
155      NULL,
156      NULL,
157      NULL
158  };
159  
160  PyMODINIT_FUNC PyInit_#modulename#(void) {
161      int i;
162      PyObject *m,*d, *s, *tmp;
163      m = #modulename#_module = PyModule_Create(&moduledef);
164      Py_SET_TYPE(&PyFortran_Type, &PyType_Type);
165      import_array();
166      if (PyErr_Occurred())
167          {PyErr_SetString(PyExc_ImportError, "can't initialize module #modulename# (failed to import numpy)"); return m;}
168      d = PyModule_GetDict(m);
169      s = PyUnicode_FromString("#f2py_version#");
170      PyDict_SetItemString(d, "__version__", s);
171      Py_DECREF(s);
172      s = PyUnicode_FromString(
173          "This module '#modulename#' is auto-generated with f2py (version:#f2py_version#).\nFunctions:\n"
174  #docs#".");
175      PyDict_SetItemString(d, "__doc__", s);
176      Py_DECREF(s);
177      s = PyUnicode_FromString("az");
178      PyDict_SetItemString(d, "__f2py_numpy_version__", s);
179      Py_DECREF(s);
180      #modulename#_error = PyErr_NewException ("#modulename#.error", NULL, NULL);
181      /*
182       * Store the error object inside the dict, so that it could get deallocated.
183       * (in practice, this is a module, so it likely will not and cannot.)
184       */
185      PyDict_SetItemString(d, "_#modulename#_error", #modulename#_error);
186      Py_DECREF(#modulename#_error);
187      for(i=0;f2py_routine_defs[i].name!=NULL;i++) {
188          tmp = PyFortranObject_NewAsAttr(&f2py_routine_defs[i]);
189          PyDict_SetItemString(d, f2py_routine_defs[i].name, tmp);
190          Py_DECREF(tmp);
191      }
192  #initf2pywraphooks#
193  #initf90modhooks#
194  #initcommonhooks#
195  #interface_usercode#
196  
197  #ifdef F2PY_REPORT_ATEXIT
198      if (! PyErr_Occurred())
199          on_exit(f2py_report_on_exit,(void*)"#modulename#");
200  #endif
201      return m;
202  }
203  #ifdef __cplusplus
204  }
205  #endif
206  )r]r^)z*\section{Module \texttt{#texmodulename#}}
207  z
208  #modnote#
209  z
210  #latexdoc#zdModule #modulename#
211  ================================================================================z
212  
213  #restdoc#)�
214  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#)
215  �bodyrRr`r_rerarcr]r^Zmodnotea=
216  #begintitle#
217  static char doc_#apiname#[] = "\
218  #docreturn##name#(#docsignatureshort#)\n\nWrapper for ``#name#``.\
219  \n#docstrsigns#";
220  /* #declfortranroutine# */
221  static PyObject *#apiname#(const PyObject *capi_self,
222                             PyObject *capi_args,
223                             PyObject *capi_keywds,
224                             #functype# (*f2py_func)(#callprotoargument#)) {
225      PyObject * volatile capi_buildvalue = NULL;
226      volatile int f2py_success = 1;
227  #decl#
228      static char *capi_kwlist[] = {#kwlist##kwlistopt##kwlistxa#NULL};
229  #usercode#
230  #routdebugenter#
231  #ifdef F2PY_REPORT_ATEXIT
232  f2py_start_clock();
233  #endif
234      if (!PyArg_ParseTupleAndKeywords(capi_args,capi_keywds,\
235          "#argformat#|#keyformat##xaformat#:#pyname#",\
236          capi_kwlist#args_capi##keys_capi##keys_xa#))
237          return NULL;
238  #frompyobj#
239  /*end of frompyobj*/
240  #ifdef F2PY_REPORT_ATEXIT
241  f2py_start_call_clock();
242  #endif
243  #callfortranroutine#
244  if (PyErr_Occurred())
245    f2py_success = 0;
246  #ifdef F2PY_REPORT_ATEXIT
247  f2py_stop_call_clock();
248  #endif
249  /*end of callfortranroutine*/
250          if (f2py_success) {
251  #pyobjfrom#
252  /*end of pyobjfrom*/
253          CFUNCSMESS("Building return value.\n");
254          capi_buildvalue = Py_BuildValue("#returnformat#"#return#);
255  /*closepyobjfrom*/
256  #closepyobjfrom#
257          } /*if (f2py_success) after callfortranroutine*/
258  /*cleanupfrompyobj*/
259  #cleanupfrompyobj#
260      if (capi_buildvalue == NULL) {
261  #routdebugfailure#
262      } else {
263  #routdebugleave#
264      }
265      CFUNCSMESS("Freeing memory.\n");
266  #freemem#
267  #ifdef F2PY_REPORT_ATEXIT
268  f2py_stop_clock();
269  #endif
270      return capi_buildvalue;
271  }
272  #endtitle#
273  z
#routine_def#z#initf2pywraphook#z#declfortranroutine#z!#docreturn##name#(#docsignature#)z&#docreturn##name#(#docsignatureshort#)z*"    #docreturn##name#(#docsignature#)\n"
274  )z
arrayobject.h�
275  CFUNCSMESS�MINMAXz#define DEBUGCFUNCSz1\subsection{Wrapper function \texttt{#texname#}}
276  zk
277  \noindent{{}\verb@#docreturn##name#@{}}\texttt{(#latexdocsignatureshort#)}
278  #routnote#
279  
280  #latexdocstrsigns#
281  zlWrapped function ``#name#``
282  --------------------------------------------------------------------------------)rjrlr_rar`�doc�docshort�docs�needr[r]r^rj�callfortranroutine�routdebugenterrN�routdebugleave�routdebugfailureZ	setjmpbufz || �	docstrreq�	docstropt�	docstrout�	docstrcbs�docstrsignsz\n"
283  "�latexdocstrsigns�latexdocstrreq�latexdocstropt�latexdocstrout�latexdocstrcbs�kwlist�	kwlistopt�callfortran�callfortranappend�docsign�
284  docsignoptz/*decl*/rUz/*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�functyperOz
/*frompyobj*/rPz/*end of cleanupfrompyobj*/rSz
/*pyobjfrom*/rTz/*end of closepyobjfrom*/rQz/*topyarr*/z/*routdebugleave*/z/*routdebugenter*/z/*routdebugfailure*/z/*callfortranroutine*/�	argformatz
285  --- #note#)
�	keyformatZneed_cfuncs�	docreturn�return�returnformat�rformat�kwlistxa�keys_xa�xaformat�	docsignxa�docsignxashort�initf2pywraphook�routnotezf2py_rout_#modulename#_#name#z#modulename#.#name#)�apinameZpynamerN�_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#) {
286              f2py_success = 0;
287          } else {z"            Py_BEGIN_ALLOW_THREADSzQ                #callstatement#;
288                  /*(*f2py_func)(#callfortran#);*/z,                (*f2py_func)(#callfortran#);z             Py_END_ALLOW_THREADSz	        })r��declfortranroutine�routine_defrrrsr�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�
289      {
290        extern #ctype# #F_FUNC#(#name_lower#,#NAME#)(void);
291        PyObject* o = PyDict_GetItemString(d,"#name#");
292        tmp = F2PyCapsule_FromVoidPtr((void*)#F_FUNC#(#name_lower#,#NAME#),NULL);
293        PyObject_SetAttrString(o,"_cpointer", tmp);
294        Py_DECREF(tmp);
295        s = PyUnicode_FromString("#name#");
296        PyObject_SetAttrString(o,"__name__", s);
297        Py_DECREF(s);
298      }
299      �
F_WRAPPEDFUNCz\    fprintf(stderr,"debug-capi:Fortran subroutine `f2pywrap#name_lower#(#callfortran#)'\n");z=    if (#setjmpbuf#) {
300          f2py_success = 0;
301      } else {z    Py_BEGIN_ALLOW_THREADSz     (*f2py_func)(#callfortran#);z9    #callstatement#;
302      /*(*f2py_func)(#callfortran#);*/z    Py_END_ALLOW_THREADSz    })r�r�r�r�rrrsr�a�
303      {
304        extern void #F_FUNC#(#name_lower#,#NAME#)(void);
305        PyObject* o = PyDict_GetItemString(d,"#name#");
306        tmp = F2PyCapsule_FromVoidPtr((void*)#F_FUNC#(#name_lower#,#NAME#),NULL);
307        PyObject_SetAttrString(o,"_cpointer", tmp);
308        Py_DECREF(tmp);
309        s = PyUnicode_FromString("#name#");
310        PyObject_SetAttrString(o,"__name__", s);
311        Py_DECREF(s);
312      }
313      �#ctype#z#rname#,z#pydocsignout#z"\item[]{{}\verb@#pydocsignout#@{}}z--- #resultnote#z�#ifdef USESCOMPAQFORTRAN
314      fprintf(stderr,"debug-capi:Fortran function #ctype# #fortranname#(#callcompaqfortran#)\n");
315  #else
316      fprintf(stderr,"debug-capi:Fortran function #ctype# #fortranname#(#callfortran#)\n");
317  #endif
318  zZ    fprintf(stderr,"debug-capi:Fortran function #ctype# #fortranname#(#callfortran#)\n");
319  )r�r�ryrrsr�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#;
320  /*    #name#_return_value = (*f2py_func)(#callfortran#);*/
321  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)	r�r�rNrsrSrrr�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
322          (*f2py_func)(#callcompaqfortran#);
323  #else
324          (*f2py_func)(#callfortran#);
325  #endif
326  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��
327  STRINGFREE)
328  r�r�rNr�rsr�r�rUrrr�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");)rtrurvr��complex_long_double�
unsigned_char�unsigned_short�unsigned�unsigned_long_long�signed_char�	characterz1    /* Processing auxiliary variable #varname# */z'    fprintf(stderr,"#vardebuginfo#\n");z,    /* End of cleaning variable #varname# */)rOrPrrz    #ctype# #varname# = 0;zmath.hz    #varname# = #init#;)rNrrrOr�z
329  ,#varname#z
#outvarname#,z#varrformat#)r�ryr�r�r�z    #ctype# #varname#;z3    #varname#.r = #init.r#, #varname#.i = #init.i#;)rNrOr��    #ctype# #varname# = NULL;�    int slen(#varname#);zlen..)rNrrr�)�    #ctype# *#varname# = NULL;�4    npy_intp #varname#_Dims[#rank#] = {#rank*[-1]#};�&    const int #varname#_Rank = #rank#;�forcombrmr�)rrr��_dependzflen(#varname#),�string)r�rrr�z'    /* Processing variable #varname# */)rOrPr�rrz#pydocsign#z\item[]{{}\verb@#pydocsign#@{}}z--- See above.)rxrwryr~r}r�dependz"#varname#",z
330  #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
331  #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�zO!z,&#varname#_cb.capir�z!,&PyTuple_Type,&#varname#_xa_capiz(setjmp(#varname#_cb.jmpbuf))z#varname#_cptr,rrz#cbname#zsetjmp.hz�if(F2PyCapsule_Check(#varname#_cb.capi)) {
332    #varname#_cptr = F2PyCapsule_AsVoidPtr(#varname#_cb.capi);
333  } else {
334    #varname#_cptr = #cbname#;
335  }
336  a�if (#varname#_cb.capi==Py_None) {
337    #varname#_cb.capi = PyObject_GetAttrString(#modulename#_module,"#varname#");
338    if (#varname#_cb.capi) {
339      if (#varname#_xa_capi==NULL) {
340        if (PyObject_HasAttrString(#modulename#_module,"#varname#_extra_args")) {
341          PyObject* capi_tmp = PyObject_GetAttrString(#modulename#_module,"#varname#_extra_args");
342          if (capi_tmp) {
343            #varname#_xa_capi = (PyTupleObject *)PySequence_Tuple(capi_tmp);
344            Py_DECREF(capi_tmp);
345          }
346          else {
347            #varname#_xa_capi = (PyTupleObject *)Py_BuildValue("()");
348          }
349          if (#varname#_xa_capi==NULL) {
350            PyErr_SetString(#modulename#_error,"Failed to convert #modulename#.#varname#_extra_args to tuple.\n");
351            return NULL;
352          }
353        }
354      }
355    }
356    if (#varname#_cb.capi==NULL) {
357      PyErr_SetString(#modulename#_error,"Callback #varname# not defined (as an argument or module #modulename# attribute).\n");
358      return NULL;
359    }
360  }
361  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#.")) {
362  z�        fprintf(stderr,"debug-capi:Assuming %d arguments; at most #maxnofargs#(-#nofoptargs#) is expected.\n",#varname#_cb.nofargs);
363          CFUNCSMESSPY("for #varname#=",#varname#_cb.capi);zK        fprintf(stderr,"#vardebugshowvalue# (call-back in C).\n",#cbname#);z�        CFUNCSMESS("Saving callback variables for `#varname#`.\n");
364          #varname#_cb_ptr = swap_active_#cbname#(#varname#_cb_ptr);z�        CFUNCSMESS("Restoring callback variables for `#varname#`.\n");
365          #varname#_cb_ptr = swap_active_#cbname#(#varname#_cb_ptr);
366          Py_DECREF(#varname#_cb.args_capi);
367      }�SWAP�create_cb_arglist)rOrPrrr�r�z6    fprintf(stderr,"#vardebugshowvalue#\n",#varname#);z&#varname#,)rNrSr�r�r�)rrr��'    PyObject *#varname#_capi = Py_None;z,&#varname#_capiz]    f2py_success = try_pyarr_from_#ctype#(#varname#_capi,&#varname#);
368      if (f2py_success) {z2    } /*if (f2py_success) of #varname# pyobjfrom*/ztry_pyarr_from_#ctype#)	rNr�r�r�r�rSrTrrr�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#");
369      if (f2py_success) {zo        #varname# = (#ctype#)PyObject_IsTrue(#varname#_capi);
370          f2py_success = 1;
371      if (f2py_success) {z(    } /*if (f2py_success) of #varname#*/z#ctype#_from_pyobj)rOrrr�r�)rOr�r�zD    fprintf(stderr,"#vardebugshowvalue#\n",#varname#.r,#varname#.i);z,#varname#_capi)rNr�rSr�r�ze        f2py_success = try_pyarr_from_#ctype#(#varname#_capi,&#varname#);
372          if (f2py_success) {z6        } /*if (f2py_success) of #varname# pyobjfrom*/)	rNr�r�r�r�rrrSrTr�zW    if (#varname#_capi==Py_None) {#varname#.r = #init.r#, #varname#.i = #init.i#;} elsez3    }  /*if (f2py_success) of #varname# frompyobj*/)rNr�z4    #varname#_capi = pyobj_from_#ctype#1(#varname#);)rSrrr�)r�r�r�zslen(#varname#),zF    fprintf(stderr,"#vardebugshowvalue#\n",slen(#varname#),#varname#);z:        STRINGPADN(#varname#, slen(#varname#), ' ', '\0');�
373  STRINGPADN)rNr�r�rSr�rrr�z�    slen(#varname#) = #elsize#;
374      f2py_success = #ctype#_from_pyobj(&#varname#,&slen(#varname#),#init#,#varname#_capi,"#ctype#_from_pyobj failed in converting #nth#`#varname#' of #pyname# to C #ctype#");
375      if (f2py_success) {z:        STRINGPADN(#varname#, slen(#varname#), '\0', ' ');zH        STRINGFREE(#varname#);
376      }  /*if (f2py_success) of #varname#*/r�z�    f2py_success = try_pyarr_from_#ctype#(#varname#_capi, #varname#,
377                                            slen(#varname#));
378      if (f2py_success) {)r�r�r�r�rSrTrrr�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)rNr�r�r�rrr�z%    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)rNr�r�r�r�r�rxr�zK    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)rNr�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) {
379          PyObject* capi_err = PyErr_Occurred();
380          if (capi_err == NULL) {
381              capi_err = #modulename#_error;
382              PyErr_SetString(capi_err, capi_errmess);
383          }
384      } else {
385          #varname# = (#ctype# *)(PyArray_DATA(capi_#varname#_as_array));
386  z/    slen(#varname#) = f2py_itemsize(#varname#);z$    if (#varname#_capi == Py_None) {z    {z        #ctype# capi_c;a�        int *_i,capi_i=0;
387          CFUNCSMESS("#name#: Initializing #varname#=#init#\n");
388          if (initforcomb(PyArray_DIMS(capi_#varname#_as_array),
389                          PyArray_NDIM(capi_#varname#_as_array),1)) {
390              while ((_i = nextforcomb()))
391                  #varname#[capi_i++] = #init#; /* fortran way */
392          } else {
393              PyObject *exc, *val, *tb;
394              PyErr_Fetch(&exc, &val, &tb);
395              PyErr_SetString(exc ? exc : #modulename#_error,
396                  "Initialization of #nth# #varname# failed (initforcomb).");
397              npy_PyErr_ChainExceptionsCause(exc, val, tb);
398              f2py_success = 0;
399          }
400      }
401      if (f2py_success) {zG    }  /* if (capi_#varname#_as_array == NULL) ... else of #varname# */zl    if((PyObject *)capi_#varname#_as_array!=#varname#_capi) {
402          Py_XDECREF(capi_#varname#_as_array); }z,        Py_XDECREF(capi_#varname#_as_array);z.    }  /*if (f2py_success) of #varname# init*/)rOrPr�r�z6    fprintf(stderr,"debug-capi:Checking `#check#'\n");)rOrrzQ    CHECKSCALAR(#check#,"#check#","#nth# #varname#","#varshowvalue#",#varname#) {z    } /*CHECKSCALAR(#check#)*/�CHECKSCALAR)rOrPrrr��_breakzQ    CHECKSTRING(#check#,"#check#","#nth# #varname#","#varshowvalue#",#varname#) {z    } /*CHECKSTRING(#check#)*/�CHECKSTRING�
403  CHECKARRAYz5    CHECKARRAY(#check#,"#check#","#nth# #varname#") {z    } /*CHECKARRAY(#check#)*/)rrrOrPr�r��CHECKGENERICz7    CHECKGENERIC(#check#,"#check#","#nth# #varname#") {z    } /*CHECKGENERIC(#check#)*/)rrrOrPc"Cs�td|d�i}tdd�}t�|�}tdti|�}g}g}|dD]�}d}	|dD]}
404  |
405  ddvr9td	�q,|
406  dD]}|d|krI|}	nq=q,|	sWtd
407  |tj	d�q$|	g}d|	vr~|	d�
408  �D]\}
}t�|	�}|d=|
|d<||d
<|�
|�qd|D]�}	t|	�}tdr�td}|d}td�t|�d|d�����|r�td|�d��t|�d|�d����td|�d��t|�d|�d����ntd|�d��t|�d|�d����t|	�\}}|r�|r�|�
|�n|�
|�t||�}t||�}q�q$t�|�\}}|�r|�
|�t||�}t||�}t�|�\}}|�r+|�
|�t||�}t||�}|D]}t�||d|d�}t||�}�q7t��}|ddd�tjD�7<i}|��D]�}g||<||D]�}
d}|
tjv�r~tj|
}nv|
tjv�r�tj|
}nj|
tjv�r�tj|
}n^|
tj v�r�tj |
}nR|
tj!v�r�tj!|
}nF|
tj"v�r�tj"|
}n:|
tjv�r�tj|
}n.|
tj#v�r�tj#|
}n"|
tj$v�r�tj$|
}n|
tj%v�r�tj%|
}n
409  tdt&|
���qn||�
|��qn�qd|�
|�|D]}d|v�r|d|��sd|v�r$t|||�}t||�}�qtt'|�}t(j)�*td|d�}||d <t+|d!��}|�,|d"�-d#d$��Wd�n	1�sVwYtd%|d|f�td&�r�t(j)�*td|dd'�}t+|d!��}|�,d(�|�,d)�*|d*��Wd�n	1�s�wYtd+td|df�td,�rt(j)�*td|dd-�}||d.<t+|d!��-}|�,d/t�d0tv�r�|�,d1�|�,d)�*|d2��d0tv�r�|�,d3�Wd�n	1�s�wYtd4td|df�|�r�t(j)�*td|d5�}||d6<t+|d!���}|�,d7�|�,d8t�|�,d9�g} d:�*|�d)�.d)�D]V}!d;|!�/d<�k�rKd=k�rVnn	| �
|!d)��q:|!�r�|!d;d>k�r�t0|!�d=k�r| �
|!dd=�d?�|!d=d�}!t0|!�d=k�sg| �
|!d)��q:| �
|!d)��q:d�*| ��-d@d)�} |�,| �Wd�n	1�s�wYtdA|�|�r|t(j)�*tddB|d�}||d6<t+|d!���}|�,dC�|�,dDt�|�,dE�g} d:�*|�d)�.d)�D]k}!d;|!�/d<�k�r�dFk�rnn	| �
|!d)��q�t0|!�dFk�rO|!d;d>k�rO| �
|!ddF�dG�|!dFd�}!t0|!�d=k�rF| �
|!dd=�dG�|!d=d�}!t0|!�d=k�s.| �
|!d)��q�| �
|!d)��q�d�*| ��-d@d)�} |�,| �Wd�n	1�sqwYtdH|�|S)Iz
410      Return
411      z    Building module "%s"...
412  �nameN�f2py_version�
413  interfacedrl�block)�	interfacezabstract interfacez1buildmodule: Expected interface block. Skipping.
414  zKbuildmodule: Could not find the body of interfaced routine "%s". Skipping.
415  )�file�entry�args�emptygen�	buildpath�
416  modulenamez(    Generating possibly empty wrappers"
417  �/�coutputz    Maybe empty "z-f2pywrappers2.f90"
418  z-f2pywrappers2.f90z-f2pywrappers.f"
419  z-f2pywrappers.f�userYcSsg|]
420  }|t��vr|�qS�)�typedef_need_dict�values)�.0Zcvarr�r���C:\Users\Jacks.GUTTSPC\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\numpy\f2py\rules.py�
421  <listcomp>/s�zbuildmodule.<locals>.<listcomp>rkzbuildmodule: unknown need %s.
422  r��csrc�wri�	z  z)    Wrote C/API module "%s" to file "%s"
423  �	dorestdoczmodule.restz.. -*- rest -*-
424  rfr^z;    ReST Documentation is saved to file "%s/%smodule.rest"
425426  dolatexdocz
427  module.texZltxz6%% This file is auto-generated with f2py (version:%s)
428429  shortlatexzO\documentclass{article}
430  \usepackage{a4wide}
431  \begin{document}
432  \tableofcontents
433  
434  r]z\end{document}z5    Documentation is saved to file "%s/%smodule.tex"
435  �f2py_wrapper_output�fsrczC     -*- fortran -*-
436  z8C     This file is autogenerated with f2py (version:%s)
437  z<C     It contains Fortran 77 wrappers to fortran functions.
438  rhr�!�B� z
439       &z
440       &
441  z*    Fortran 77 wrappers are saved to "%s"
442  z%s-f2pywrappers2.f90z!     -*- f90 -*-
443  z8!     This file is autogenerated with f2py (version:%s)
444  z<!     It contains Fortran 90 wrappers to fortran functions.
445  �Hz&
446       &z*    Fortran 90 wrappers are saved to "%s"
447  )1rD�defmod_rulesrH�modsign2maprr�r�print�sys�stderr�items�copy�deepcopy�appendrG�optionsr�touch�buildapirrJ�
448  buildhooksrLrK�buildusevarsrI�	get_needs�
f2cmap_mapped�keysrWrXrVrYrZr[r\rdrb�repr�module_rules�os�path�join�open�writerE�split�find�len)"�m�um�retZ	mod_rules�vrd�rdZfuncwrappersZ
funcwrappers2�n�nb�bi�bZnb_list�k�a�nb1Zisf90�b_path�m_name�api�wrap�ar�cr�mr�u�needs�code�c�r�fn�f�wn�lines�lr�r�r��buildmodule�s�
449  ��
450  �
451  
452  
453  �
454  
455  
456  
457  
458  
459  �
460  "
461  �
462  �
463  �
464  ��
465  ��
466  �
467  
468  ��	�
469  ��"���
470  ��"��r�st�ndr��th)
471  r��������	rcCs�t�|�\}}t|�\}}|t_|d}t|�r%td|d|df�ntd|d�t�|�}ti|�}t	D]}d|vrE|d|�sId|vrTt
472  |||�}t||�}q9d\}	}
473  i}|D]|}t�|||�}t||�rpt
}
n8t}
t||�s�t||�s�|	d}	t|	�t|	d	d
474  |d<n|
475  d}
476  t|
477  �t|
478  d	d|d<nd
|d<|||<|
D]*}d|vr�q�d|vr�|d||�s�d|vr�t
479  ||||�}t||�}d|vr�nq�q]|D]d}t||�r�t
}
nt}
||}|
D].}d|vr�q�d|v�r|d||��s	d|v�rt
480  ||||�}t||�}d|v�rnq�d||v�r@||dD]}||d<t
481  t|||�}t||�}�q+q�t|dt��rO|d��t|dt��r]|d��ttd|d|d|dd���|d<ttd|d|dd���}|dk�r�ttdd|di��|d<ntd |d|d!��|d<|d�d"d#�|d$<|d$�d%d&�|d$<ttd'|d(|d)d*���}t|d)�dk�r�ttd+|d(|d)d*���|d,<n||d,<||d(<t|d-t��r�ttd.d-|d-i��d/|d-<g|d0<g|d1<d2D]G}||v�rt||t��r|d0|||d0<d3|}||v�rHt||t��rH|d1||d4d�d5g||dd�d6g|d1<�qt
482  t|�}t|��r`td7|d8�||fStd9|d8�||fS):N�varsz5            Constructing wrapper function "%s.%s"...
483  r�r�z.        Constructing wrapper function "%s"...
484  r�)rrr�
485  z	 argument�nthz keyword�hiddenr�r��checkrPrTz #docsign##docsignopt##docsignxa#r�r�r�)r�r�r��docsignaturez#docsignopt##docsignxa#r�r�)r�r�rkz	#docsign#Zdocsignatureshortz#docsign#[#docsignopt#])r�r��_z\_Zlatexdocsignatureshort�,z, z #callfortran##callfortranappend#r�r�)r�r�z##callfortran# 0,#callfortranappend#Zcallcompaqfortranr�z#docreturn#z = r{r|)rwrxryrz�latexrz\begin{description}z\end{description}z              %s
486  rpz
          %s
487  )rM�assubrr
488  rH�depargsr.rD�routsign2mapr�
489  rout_rulesr�sign2mapr�	aux_rules�	arg_rulesr#r/r��stnd�check_rules�
490  isinstance�list�reverserFrEr��
routine_rules)�routrr�r,�varr�r�rr	r$Znthk�savevrdrZ_rulesr�optargs�cfsrr�r�r�r��s��
491  
492  
493  � 
494  �&
495  
496  ���
497  ���
498  
499  �����
500  ��������
501  
502  �r�)j�__doc__r�r��timer��pathlibrrkr�auxfuncsrrrrr	r
503  rrr
rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFrGrHrIrJrKrLrM�versionr��
numpy_versionr��sepdictr�int�environ�get�generationtime�asctime�gmtimer�r�r7r.r�r0r1r3rr2r�r�r�r�r��<module>s>3�
504  �������� � �#�#�&�&�)�)�,�,�2�2�5�5�8�8�;�;�>�>�@�@�C�C�k�k�
505  ������8��Q��������������
506  �
507  �
508  �
509  �����
�
��������������������� �!�"�"
510  �(��������%��	�����-��	�����-
511  ������
������
512  �
513  ��1�����,����'������	���	�
514  ���������V�����

515  �
516  �
517  ������ ��'��,��
518  ���
519  ����
�
520  ���
521  �
522  �������F��-
523  ��~���������%������6���;���A���G���S�����]���`���d���h���n���������
524  �����������
525  $����&����,�����9����B����G����P����T����X����`��
526  ����1��
527  ���������!�����$�����)�����.�����3�����8�����>�����C�����H�����R������"N�