K iadZddlmZmZddlmZmZmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"ejFZ$ddgdddd d d d Z%id iddddddddddddddddddddddddddddd dd!dd"ddd#dd$dd%dgddd&dd'ddd(dgddd)ddgddd*dd+ddd,ddd-d.d/d0dddd1d2d3d4e d5ee did6d7ed8id9ed:igd;edeeeeeed?ed@idAdBdCedDidEedFigd;edargs_capi; CFUNCSMESS("cb:Call-back function #name# (maxnofargs=#maxnofargs#(-#nofoptargs#))\n"); CFUNCSMESSPY("cb:#name#_capi=",cb->capi); if (cb->capi==NULL) { capi_longjmp_ok = 0; cb->capi = PyObject_GetAttrString(#modulename#_module,"#argname#"); CFUNCSMESSPY("cb:#name#_capi=",cb->capi); } if (cb->capi==NULL) { PyErr_SetString(#modulename#_error,"cb: Callback #argname# not defined (as an argument or module #modulename# attribute).\n"); goto capi_fail; } if (F2PyCapsule_Check(cb->capi)) { #name#_typedef #name#_cptr; #name#_cptr = F2PyCapsule_AsVoidPtr(cb->capi); #returncptr#(*#name#_cptr)(#optargs_nm##args_nm##strarglens_nm#); #return# } if (capi_arglist==NULL) { capi_longjmp_ok = 0; capi_tmp = PyObject_GetAttrString(#modulename#_module,"#argname#_extra_args"); if (capi_tmp) { capi_arglist = (PyTupleObject *)PySequence_Tuple(capi_tmp); Py_DECREF(capi_tmp); if (capi_arglist==NULL) { PyErr_SetString(#modulename#_error,"Failed to convert #modulename#.#argname#_extra_args to tuple.\n"); goto capi_fail; } } else { PyErr_Clear(); capi_arglist = (PyTupleObject *)Py_BuildValue("()"); } } if (capi_arglist == NULL) { PyErr_SetString(#modulename#_error,"Callback #argname# argument list is not set.\n"); goto capi_fail; } #setdims# #ifdef PYPY_VERSION #define CAPI_ARGLIST_SETITEM(idx, value) PyList_SetItem((PyObject *)capi_arglist_list, idx, value) capi_arglist_list = PySequence_List((PyObject *)capi_arglist); if (capi_arglist_list == NULL) goto capi_fail; #else #define CAPI_ARGLIST_SETITEM(idx, value) PyTuple_SetItem((PyObject *)capi_arglist, idx, value) #endif #pyobjfrom# #undef CAPI_ARGLIST_SETITEM #ifdef PYPY_VERSION CFUNCSMESSPY("cb:capi_arglist=",capi_arglist_list); #else CFUNCSMESSPY("cb:capi_arglist=",capi_arglist); #endif CFUNCSMESS("cb:Call-back calling Python function #argname#.\n"); #ifdef F2PY_REPORT_ATEXIT f2py_cb_start_call_clock(); #endif #ifdef PYPY_VERSION capi_return = PyObject_CallObject(cb->capi,(PyObject *)capi_arglist_list); Py_DECREF(capi_arglist_list); capi_arglist_list = NULL; #else capi_return = PyObject_CallObject(cb->capi,(PyObject *)capi_arglist); #endif #ifdef F2PY_REPORT_ATEXIT f2py_cb_stop_call_clock(); #endif CFUNCSMESSPY("cb:capi_return=",capi_return); if (capi_return == NULL) { fprintf(stderr,"capi_return is NULL\n"); goto capi_fail; } if (capi_return == Py_None) { Py_DECREF(capi_return); capi_return = Py_BuildValue("()"); } else if (!PyTuple_Check(capi_return)) { capi_return = Py_BuildValue("(N)",capi_return); } capi_j = PyTuple_Size(capi_return); capi_i = 0; #frompyobj# CFUNCSMESS("cb:#name#:successful\n"); Py_DECREF(capi_return); #ifdef F2PY_REPORT_ATEXIT f2py_cb_stop_clock(); #endif goto capi_return_pt; capi_fail: fprintf(stderr,"Call-back #name# failed.\n"); Py_XDECREF(capi_return); Py_XDECREF(capi_arglist_list); if (capi_longjmp_ok) { longjmp(cb->jmpbuf,-1); } capi_return_pt: ; #return# } #endtitle# )zsetjmp.h CFUNCSMESSF2PY_THREAD_LOCAL_DECLz #maxnofargs#z #nofoptargs#zF def #argname#(#docsignature#): return #docreturn#\n\ #docstrsigns#zc {{}\verb@def #argname#(#latexdocsignature#): return #docreturn#@{}} #routnote# #latexdocstrsigns#z1def #argname#(#docsignature#): return #docreturn#) cbtypedefsbodyneed maxnofargs nofoptargsdocstr latexdocstr docstrshort separatorsfordecl args,optargs pyobjfromfreememargs_td optargs_tdargs_nm optargs_nm frompyobjsetdims docstrsignsz\n" "latexdocstrsignslatexdocstrreqlatexdocstroptlatexdocstroutlatexdocstrcbsz/*decl*/z /*pyobjfrom*/z /*frompyobj*/return strarglensz /*freemem*/ strarglens_td strarglens_nmnoargsz /*setdims*/z Required arguments:z Optional arguments:z Return objects:z Call-back functions:z\noindent Required arguments:z\noindent Optional arguments:z\noindent Return objects:z\noindent Call-back functions:z --- #note#)r<r= docstrreq docstropt docstrout docstrcbs docreturndocsign docsignoptr>r?r@rAroutnotez #ctype# return_value = 0;z, CFUNCSMESS("cb:Getting return_value->");a if (capi_j>capi_i) { GETSCALARFROMPYTUPLE(capi_return,capi_i++,&return_value,#ctype#, "#ctype#_from_pyobj failed in converting return_value of" " call-back function #name# to C #ctype#\n"); } else { fprintf(stderr,"Warning: call-back function #name# did not provide" " return value (index=%d, type=#ctype#)\n",capi_i); }z8 fprintf(stderr,"#showvalueformat#.\n",return_value);z#ctype#_from_pyobjr#GETSCALARFROMPYTUPLEz return return_value;)r.r:r'rB_checkzB fprintf(stderr,"debug-capi:cb:#name#:%d:\n",return_value_len);z)#ctype# return_value,int return_value_lenzreturn_value,&return_value_lenz #ctype# ,intz. CFUNCSMESS("cb:Getting return_value->\"");a if (capi_j>capi_i) { GETSTRFROMPYTUPLE(capi_return,capi_i++,return_value,return_value_len); } else { fprintf(stderr,"Warning: call-back function #name# did not provide" " return value (index=%d, type=#ctype#)\n",capi_i); }z: fprintf(stderr,"#showvalueformat#\".\n",return_value);zstring.hGETSTRFROMPYTUPLEzreturn;)r4r0r8r6r:r'rBrPz< #ifndef F2PY_CB_RETURNCOMPLEX #ctype# *return_value #endif z3 #ifndef F2PY_CB_RETURNCOMPLEX return_value #endif z0 #ifndef F2PY_CB_RETURNCOMPLEX #ctype# * #endif zH #ifdef F2PY_CB_RETURNCOMPLEX #ctype# return_value = {0, 0}; #endif a if (capi_j>capi_i) { #ifdef F2PY_CB_RETURNCOMPLEX GETSCALARFROMPYTUPLE(capi_return,capi_i++,&return_value,#ctype#, "#ctype#_from_pyobj failed in converting return_value of call-back" " function #name# to C #ctype#\n"); #else GETSCALARFROMPYTUPLE(capi_return,capi_i++,return_value,#ctype#, "#ctype#_from_pyobj failed in converting return_value of call-back" " function #name# to C #ctype#\n"); #endif } else { fprintf(stderr, "Warning: call-back function #name# did not provide" " return value (index=%d, type=#ctype#)\n",capi_i); }z#ifdef F2PY_CB_RETURNCOMPLEX fprintf(stderr,"#showvalueformat#.\n",(return_value).r,(return_value).i); #else fprintf(stderr,"#showvalueformat#.\n",(*return_value).r,(*return_value).i); #endif zP #ifdef F2PY_CB_RETURNCOMPLEX return return_value; #else return; #endif z#ctype#)r2r9r7r.r:rBr'rPz #pydocsignout#z"\item[]{{}\verb@#pydocsignout#@{}}z#rname#,)rIr@rKrP)rPrBz #pydocsign#z\item[]{{}\verb@#pydocsign#@{}}z--- See above.z #varname#,) rHrGrIr?r>r@rLrMdependz#ctype# #varname_i#z#ctype# *#varname_i#_cb_capiz#ctype# *#varname_i#z #varname_i#z#varname_i#_cb_capiz #ctype# *z,int #varname_i#_cb_lenz,intz,#varname_i#_cb_len)r0r8r6r'rCrDrEz/ #ctype# #varname_i#=(*#varname_i#_cb_capi);z8intent(c,out) is forbidden for callback scalar argumentsz) CFUNCSMESS("cb:Getting #varname#->");z if (capi_j>capi_i) GETSCALARFROMPYTUPLE(capi_return,capi_i++,#varname_i#_cb_capi,#ctype#,"#ctype#_from_pyobj failed in converting argument #varname# of call-back function #name# to C #ctype#\n");z7 fprintf(stderr,"#showvalueformat#.\n",#varname_i#);z@ fprintf(stderr,"#showvalueformat#.\n",*#varname_i#_cb_capi);zK fprintf(stderr,"#showvalueformat#.\n",(#varname_i#).r,(#varname_i#).i);z] fprintf(stderr,"#showvalueformat#.\n",(*#varname_i#_cb_capi).r,(*#varname_i#_cb_capi).i);)r.errorr:r'rPz if (cb->nofargs>capi_i) if (CAPI_ARGLIST_SETITEM(capi_i++,pyobj_from_#ctype#1(#varname_i#))) goto capi_fail;z if (cb->nofargs>capi_i) if (CAPI_ARGLIST_SETITEM(capi_i++,pyarr_from_p_#ctype#1(#varname_i#_cb_capi))) goto capi_fail;zpyobj_from_#ctype#1zpyarr_from_p_#ctype#1)r4r'rP _optionalz+ CFUNCSMESS("cb:Getting #varname#->\"");zf if (capi_j>capi_i) GETSTRFROMPYTUPLE(capi_return,capi_i++,#varname_i#,#varname_i#_cb_len);zP fprintf(stderr,"#showvalueformat#\":%d:.\n",#varname_i#,#varname_i#_cb_len);)r:r'rPze fprintf(stderr,"debug-capi:cb:#varname#=#showvalueformat#:%d:\n",#varname_i#,#varname_i#_cb_len);z if (cb->nofargs>capi_i) if (CAPI_ARGLIST_SETITEM(capi_i++,pyobj_from_#ctype#1size(#varname_i#,#varname_i#_cb_len))) goto capi_fail;z if (cb->nofargs>capi_i) { int #varname_i#_cb_dims[] = {#varname_i#_cb_len}; if (CAPI_ARGLIST_SETITEM(capi_i++,pyarr_from_p_#ctype#1(#varname_i#,#varname_i#_cb_dims))) goto capi_fail; }zpyobj_from_#ctype#1sizez6 npy_intp #varname_i#_Dims[#rank#] = {#rank*[-1]#};z #cbsetdims#;)r.r;rP_dependz0 fprintf(stderr,"debug-capi:cb:#varname#\n");a if (cb->nofargs>capi_i) { /* tmp_arr will be inserted to capi_arglist_list that will be destroyed when leaving callback function wrapper together with tmp_arr. */ PyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type, #rank#,#varname_i#_Dims,#atype#,NULL,(char*)#varname_i#,#elsize#, NPY_ARRAY_CARRAY,NULL); a if (cb->nofargs>capi_i) { /* tmp_arr will be inserted to capi_arglist_list that will be destroyed when leaving callback function wrapper together with tmp_arr. */ PyArrayObject *tmp_arr = (PyArrayObject *)PyArray_New(&PyArray_Type, #rank#,#varname_i#_Dims,#atype#,NULL,(char*)#varname_i#,#elsize#, NPY_ARRAY_FARRAY,NULL); z if (tmp_arr==NULL) goto capi_fail; if (CAPI_ARGLIST_SETITEM(capi_i++,(PyObject *)tmp_arr)) goto capi_fail; })r4rPrTz if (capi_j>capi_i) { PyArrayObject *rv_cb_arr = NULL; if ((capi_tmp = PyTuple_GetItem(capi_return,capi_i++))==NULL) goto capi_fail; rv_cb_arr = array_from_pyobj(#atype#,#varname_i#_Dims,#rank#,F2PY_INTENT_INz|F2PY_INTENT_Ca8,capi_tmp); if (rv_cb_arr == NULL) { fprintf(stderr,"rv_cb_arr is NULL\n"); goto capi_fail; } MEMCOPY(#varname_i#,PyArray_DATA(rv_cb_arr),PyArray_NBYTES(rv_cb_arr)); if (capi_tmp != (PyObject *)rv_cb_arr) { Py_DECREF(rv_cb_arr); } }z fprintf(stderr,"<-.\n");MEMCOPY)rKrPcgt|d<|dD]9}|ddk(s |dD]&}|rt||dtd|dd(;y)Nnamer&block interfacezwarning: empty body for r/)cb_map buildcallbackr)mbibs Y/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/numpy/f2py/cb_rules.pybuildcallbacksrasmF1V9iF g;+ %Z F!!QvY/6qykDE  FFc ddlm}td|dd|dt|\}}||_|d}|j ||}t i|}t|j|d|dgtD]/}d|vr |d|sd|vst|||} t || }1i} t|D]}\} } |j| || | }|| | <tD]S}d |vrd |vrt|| rd|vr|d|| sd|vs2t|||| } t || }d |vsS}|D]g} | | }tD]W}d |vrd |vsd |vrt|| rd|vr|d|| sd|vs6t|||| } t || }d |vsWgi|D]U} | | }tD]E}d |vrd |vr d|vr|d|| sd|vs$t|||| } t || }d |vsEUWd |vr;d|vr7t!|dt"r$|ddgz|d<|ddgz|d<|ddgz|d<t!|dt"rt%t'dd|di|d<t%t'dd|di} | dk(rt%t'dd|di|d<nt'd|d| d|d<|dj'dd|d<|dj'dd |d<g|d!<g|d"<d#D]g}||vr!t!||t"r|d!||z|d!<d$|z}||vs2t!||t"sF|d"||d%dzd&gz||ddzd'gz|d"<id |vrd|d <d|d(<d|d)<|j)d s'|j)ds|j)d*sd+|d,<tt*|} | d-t,j.|d<t!| d.t0r | d.g| d.<d.|vr?t,j2j5D]}||d.vs | d.j| | d/t,j6|dd0z<| d.j|dd0z| d.t,j8|d<| d1| d2| d3| d4|d5d6|j:|d<td7| d8d9y):Nr) capi_mapsz( Constructing call-back function "cb_rX_in_z" varsrP)indexrUrT_breakr0r2z( #ifndef F2PY_CB_RETURNCOMPLEX , #endif r9r7rKz #docreturn#z #docsignopt#rMr3z #docsign#rL docsignaturez#docsign#[#docsignopt#])rLrM_z\_latexdocsignaturer1z, r<r=)rGrHrIrJlatexz\begin{description}z\end{description}r6r8rCvoidrFr&r'r%_typedefr(r)r*r+argname)r(r)r*r+rpz r,r/)r3rdrr depargscb_routsign2maprr[append cb_rout_rulesr enumerate cb_sign2map cb_arg_rulesrr isinstancelistr!r getcb_routine_rulesr callbacksstrtypedefskeystypedefs_generatedneedslcb2_map)routumrdr0rqvarvrdrdrarsavevrdiar2kts r`r\r\s 7V ~T"T RSDMMD'I v,C  # #D" -C B B 2JtF|RZ01 $ Mkak$/XQ5FAsD)BB#B$G$ 1##As1vQ#7  AA~aJs1v$6A +!H+c!f"581;L3A/B'q=   aj AA~1$+*:z#a&?QA +!H+c!f"581;L3A/B'q=   aj A!aA +!H+c!f"581;L3A/B'q=  | R bmT *yM.-ByM ",/43 B|  ",/43 B|  "[/4($ MKK#A BD;".<0@!A#$G"}' K)R ]!; <>>%%>13I4;&()>!088eDB !45==c4HBB}B A' 7z"Q%. "= 1BqE 9B}  aK 7z"Q%.%'(:%;beAaj%H'(&)+-a59&5%&&'B! " 'R6 9 9 FF6NbffY/266,3G8 $b )B#%f:FRZ "V*c"j\6  |%%' %ABvJ6 !!!$ %:rs "B"" e[ x A   GSjX &$  # '0" 6A4 IRTX #S *6 $S +7 &t .7  (  -d +D 3CD +D 3CD   (;F r$,R2>rDMm 2$R*9" 2$R*9" " =!"r..*/Bb::6;lE'NB?7:0 F G  H J  & <'@BXY, E*:$;UCT=UV%* !fg;3! I J  K M  & <'@02").    F G  % 4& <'@3Y@#q9t+> ,/1  y1MG VJ(89;PQJ(89;PQ"$<= -=>AdBIAdBI (E*- .0N + +   (J ' (E*- .0E ] m   (J ' (E*- . [ i  h2I>!:;"F+"$9:16z"$UV L#$^_a!"MN#klYeI.> (KLTVYeI.>j@Q(RS]_Yi(DEhjYiz9J(KLz| !57M NO\*,'*#% &( !45 "9:Y')"23!"PQS km /\*J8,/ 9 ; &(    89 "9:<"23%,I% !"UV!$Z(+&)4!14 ^3TU9<!"MNX"#34  !"AB!$^Y78.),"Gg T Fz,rb