15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//////////////////// CythonFunction.proto //////////////////// 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __Pyx_CyFunction_USED 1 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include <structmember.h> 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __Pyx_CYFUNCTION_CCLASS 0x04 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __Pyx_CyFunction_GetClosure(f) \ 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (((__pyx_CyFunctionObject *) (f))->func_closure) 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __Pyx_CyFunction_GetClassObj(f) \ 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (((__pyx_CyFunctionObject *) (f))->func_classobj) 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __Pyx_CyFunction_Defaults(type, f) \ 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __Pyx_CyFunction_SetDefaultsGetter(f, g) \ 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)typedef struct { 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyCFunctionObject func; 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *func_dict; 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *func_weakreflist; 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *func_name; 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *func_qualname; 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *func_doc; 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *func_globals; 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *func_code; 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *func_closure; 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *func_classobj; /* No-args super() class cell */ 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* Dynamic default args and annotations */ 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void *defaults; 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int defaults_pyobjects; 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int flags; 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* Defaults info */ 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *defaults_tuple; /* Const defaults tuple */ 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *defaults_kwdict; /* Const kwonly defaults dict */ 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *(*defaults_getter)(PyObject *); 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *func_annotations; /* function annotations dict */ 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} __pyx_CyFunctionObject; 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyTypeObject *__pyx_CyFunctionType = 0; 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code) \ 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code) 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int flags, PyObject* qualname, 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *self, 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *module, PyObject *globals, 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject* code); 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) size_t size, 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int pyobjects); 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *tuple); 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *dict); 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *dict); 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __Pyx_CyFunction_init(void); 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//////////////////// CythonFunction //////////////////// 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@substitute: naming 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@requires: CommonTypes.c::FetchCommonType 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)////@requires: ObjectHandling.c::PyObjectGetAttrStr 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(op->func_doc == NULL)) { 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (op->func.m_ml->ml_doc) { 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_MAJOR_VERSION >= 3 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(op->func_doc == NULL)) 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else { 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(Py_None); 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return Py_None; 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(op->func_doc); 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return op->func_doc; 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value) 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *tmp = op->func_doc; 1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (value == NULL) 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value = Py_None; /* Mark as deleted */ 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(value); 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_doc = value; 1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(tmp); 1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op) 1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 1115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(op->func_name == NULL)) { 1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_MAJOR_VERSION >= 3 1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); 1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); 1165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 1175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(op->func_name == NULL)) 1185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(op->func_name); 1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return op->func_name; 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int 1255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value) 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *tmp; 1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_MAJOR_VERSION >= 3 1305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(value == NULL || !PyUnicode_Check(value))) { 1315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 1325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(value == NULL || !PyString_Check(value))) { 1335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 1345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_SetString(PyExc_TypeError, 1355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "__name__ must be set to a string object"); 1365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 1375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 1385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) tmp = op->func_name; 1395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(value); 1405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_name = value; 1415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(tmp); 1425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 1435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 1465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op) 1475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 1485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(op->func_qualname); 1495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return op->func_qualname; 1505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int 1535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value) 1545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 1555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *tmp; 1565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_MAJOR_VERSION >= 3 1585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(value == NULL || !PyUnicode_Check(value))) { 1595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 1605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(value == NULL || !PyString_Check(value))) { 1615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 1625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_SetString(PyExc_TypeError, 1635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "__qualname__ must be set to a string object"); 1645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 1655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 1665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) tmp = op->func_qualname; 1675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(value); 1685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_qualname = value; 1695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(tmp); 1705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 1715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 1745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) 1755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 1765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *self; 1775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self = m->func_closure; 1795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (self == NULL) 1805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self = Py_None; 1815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(self); 1825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return self; 1835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 1865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op) 1875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 1885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(op->func_dict == NULL)) { 1895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_dict = PyDict_New(); 1905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(op->func_dict == NULL)) 1915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 1925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 1935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(op->func_dict); 1945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return op->func_dict; 1955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int 1985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value) 1995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 2005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *tmp; 2015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(value == NULL)) { 2035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_SetString(PyExc_TypeError, 2045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "function's dictionary may not be deleted"); 2055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 2065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 2075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!PyDict_Check(value))) { 2085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_SetString(PyExc_TypeError, 2095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setting function's dictionary to a non-dict"); 2105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 2115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 2125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) tmp = op->func_dict; 2135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(value); 2145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_dict = value; 2155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(tmp); 2165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 2175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 2205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op) 2215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 2225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(op->func_globals); 2235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return op->func_globals; 2245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 2275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op) 2285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 2295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(Py_None); 2305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return Py_None; 2315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 2345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op) 2355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 2365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject* result = (op->func_code) ? op->func_code : Py_None; 2375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(result); 2385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return result; 2395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int 2425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { 2435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *res = op->defaults_getter((PyObject *) op); 2445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!res)) 2455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 2465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* Cache result */ 2485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->defaults_tuple = PyTuple_GET_ITEM(res, 0); 2495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(op->defaults_tuple); 2505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); 2515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(op->defaults_kwdict); 2525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(res); 2535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 2545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int 2575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) { 2585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject* tmp; 2595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!value) { 2605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // del => explicit None to prevent rebuilding 2615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value = Py_None; 2625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else if (value != Py_None && !PyTuple_Check(value)) { 2635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_SetString(PyExc_TypeError, 2645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "__defaults__ must be set to a tuple object"); 2655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 2665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 2675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(value); 2685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) tmp = op->defaults_tuple; 2695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->defaults_tuple = value; 2705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(tmp); 2715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 2725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 2755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) { 2765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject* result = op->defaults_tuple; 2775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!result)) { 2785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (op->defaults_getter) { 2795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; 2805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) result = op->defaults_tuple; 2815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else { 2825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) result = Py_None; 2835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 2845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 2855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(result); 2865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return result; 2875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int 2905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) { 2915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject* tmp; 2925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!value) { 2935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // del => explicit None to prevent rebuilding 2945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value = Py_None; 2955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else if (value != Py_None && !PyDict_Check(value)) { 2965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_SetString(PyExc_TypeError, 2975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "__kwdefaults__ must be set to a dict object"); 2985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 2995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(value); 3015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) tmp = op->defaults_kwdict; 3025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->defaults_kwdict = value; 3035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(tmp); 3045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 3055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 3085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) { 3095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject* result = op->defaults_kwdict; 3105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!result)) { 3115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (op->defaults_getter) { 3125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; 3135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) result = op->defaults_kwdict; 3145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else { 3155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) result = Py_None; 3165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(result); 3195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return result; 3205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int 3235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) { 3245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject* tmp; 3255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!value || value == Py_None) { 3265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value = NULL; 3275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else if (!PyDict_Check(value)) { 3285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_SetString(PyExc_TypeError, 3295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "__annotations__ must be set to a dict object"); 3305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 3315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XINCREF(value); 3335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) tmp = op->func_annotations; 3345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_annotations = value; 3355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(tmp); 3365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 3375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 3405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) { 3415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject* result = op->func_annotations; 3425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!result)) { 3435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) result = PyDict_New(); 3445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unlikely(!result)) return NULL; 3455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_annotations = result; 3465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(result); 3485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return result; 3495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//#if PY_VERSION_HEX >= 0x030400C1 3525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//static PyObject * 3535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//__Pyx_CyFunction_get_signature(__pyx_CyFunctionObject *op) { 3545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// PyObject *inspect_module, *signature_class, *signature; 3555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// // from inspect import Signature 3565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// inspect_module = PyImport_ImportModuleLevelObject(PYIDENT("inspect"), NULL, NULL, NULL, 0); 3575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// if (unlikely(!inspect_module)) 3585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// goto bad; 3595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// signature_class = __Pyx_PyObject_GetAttrStr(inspect_module, PYIDENT("Signature")); 3605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Py_DECREF(inspect_module); 3615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// if (unlikely(!signature_class)) 3625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// goto bad; 3635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// // return Signature.from_function(op) 3645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// signature = PyObject_CallMethodObjArgs(signature_class, PYIDENT("from_function"), op, NULL); 3655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Py_DECREF(signature_class); 3665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// if (likely(signature)) 3675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// return signature; 3685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//bad: 3695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// // make sure we raise an AttributeError from this property on any errors 3705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// if (!PyErr_ExceptionMatches(PyExc_AttributeError)) 3715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// PyErr_SetString(PyExc_AttributeError, "failed to calculate __signature__"); 3725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// return NULL; 3735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//} 3745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//#endif 3755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyGetSetDef __pyx_CyFunction_getsets[] = { 3775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, 3785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, 3795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, 3805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, 3815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, 3825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, 3835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, 3845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, 3855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, 3865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, 3875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, 3885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, 3895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, 3905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, 3915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, 3925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, 3935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, 3945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, 3955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//#if PY_VERSION_HEX >= 0x030400C1 3965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// {(char *) "__signature__", (getter)__Pyx_CyFunction_get_signature, 0, 0, 0}, 3975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//#endif 3985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {0, 0, 0, 0, 0} 3995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 4005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef PY_WRITE_RESTRICTED /* < Py2.5 */ 4025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define PY_WRITE_RESTRICTED WRITE_RESTRICTED 4035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 4045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyMemberDef __pyx_CyFunction_members[] = { 4065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "__module__", T_OBJECT, offsetof(__pyx_CyFunctionObject, func.m_module), PY_WRITE_RESTRICTED, 0}, 4075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {0, 0, 0, 0, 0} 4085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 4095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 4115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) 4125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 4135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_MAJOR_VERSION >= 3 4145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return PyUnicode_FromString(m->func.m_ml->ml_name); 4155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 4165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return PyString_FromString(m->func.m_ml->ml_name); 4175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 4185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 4195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyMethodDef __pyx_CyFunction_methods[] = { 4215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {__Pyx_NAMESTR("__reduce__"), (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, 4225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {0, 0, 0, 0} 4235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 4245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname, 4275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { 4285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type); 4295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (op == NULL) 4305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 4315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->flags = flags; 4325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_weakreflist = NULL; 4335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func.m_ml = ml; 4345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func.m_self = (PyObject *) op; 4355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XINCREF(closure); 4365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_closure = closure; 4375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XINCREF(module); 4385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func.m_module = module; 4395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_dict = NULL; 4405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_name = NULL; 4415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(qualname); 4425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_qualname = qualname; 4435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_doc = NULL; 4445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_classobj = NULL; 4455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_globals = globals; 4465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(op->func_globals); 4475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XINCREF(code); 4485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_code = code; 4495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* Dynamic Default args */ 4505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->defaults_pyobjects = 0; 4515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->defaults = NULL; 4525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->defaults_tuple = NULL; 4535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->defaults_kwdict = NULL; 4545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->defaults_getter = NULL; 4555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_annotations = NULL; 4565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject_GC_Track(op); 4575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return (PyObject *) op; 4585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 4595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int 4615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) 4625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 4635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(m->func_closure); 4645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(m->func.m_module); 4655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(m->func_dict); 4665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(m->func_name); 4675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(m->func_qualname); 4685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(m->func_doc); 4695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(m->func_globals); 4705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(m->func_code); 4715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(m->func_classobj); 4725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(m->defaults_tuple); 4735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(m->defaults_kwdict); 4745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(m->func_annotations); 4755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (m->defaults) { 4775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); 4785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int i; 4795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) for (i = 0; i < m->defaults_pyobjects; i++) 4815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(pydefaults[i]); 4825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyMem_Free(m->defaults); 4845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) m->defaults = NULL; 4855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 4865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 4885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 4895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) 4915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 4925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject_GC_UnTrack(m); 4935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (m->func_weakreflist != NULL) 4945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject_ClearWeakRefs((PyObject *) m); 4955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __Pyx_CyFunction_clear(m); 4965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject_GC_Del(m); 4975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 4985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) 5005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 5015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_VISIT(m->func_closure); 5025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_VISIT(m->func.m_module); 5035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_VISIT(m->func_dict); 5045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_VISIT(m->func_name); 5055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_VISIT(m->func_qualname); 5065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_VISIT(m->func_doc); 5075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_VISIT(m->func_globals); 5085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_VISIT(m->func_code); 5095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_VISIT(m->func_classobj); 5105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_VISIT(m->defaults_tuple); 5115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_VISIT(m->defaults_kwdict); 5125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (m->defaults) { 5145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); 5155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int i; 5165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) for (i = 0; i < m->defaults_pyobjects; i++) 5185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_VISIT(pydefaults[i]); 5195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 5205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 5225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 5235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) 5255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 5265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; 5275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { 5295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(func); 5305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return func; 5315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 5325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { 5345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (type == NULL) 5355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) type = (PyObject *)(Py_TYPE(obj)); 5365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return PyMethod_New(func, 5375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) type, (PyObject *)(Py_TYPE(type))); 5385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 5395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (obj == Py_None) 5415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) obj = NULL; 5425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return PyMethod_New(func, obj, type); 5435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 5445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject* 5465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) 5475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 5485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_MAJOR_VERSION >= 3 5495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return PyUnicode_FromFormat("<cyfunction %U at %p>", 5505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) op->func_qualname, (void *)op); 5515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 5525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return PyString_FromFormat("<cyfunction %s at %p>", 5535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyString_AsString(op->func_qualname), (void *)op); 5545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 5555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 5565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if CYTHON_COMPILING_IN_PYPY 5585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/* originally copied from PyCFunction_Call() in CPython's Objects/methodobject.c */ 5595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/* PyPy does not have this function */ 5605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { 5615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyCFunctionObject* f = (PyCFunctionObject*)func; 5625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyCFunction meth = PyCFunction_GET_FUNCTION(func); 5635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *self = PyCFunction_GET_SELF(func); 5645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_ssize_t size; 5655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 5665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) switch (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST)) { 5675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case METH_VARARGS: 5685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (likely(kw == NULL) || PyDict_Size(kw) == 0) 5695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return (*meth)(self, arg); 5705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) break; 5715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case METH_VARARGS | METH_KEYWORDS: 5725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); 5735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case METH_NOARGS: 5745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (likely(kw == NULL) || PyDict_Size(kw) == 0) { 5755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) size = PyTuple_GET_SIZE(arg); 5765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (size == 0) 5775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return (*meth)(self, NULL); 5785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Format(PyExc_TypeError, 5795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "%.200s() takes no arguments (%zd given)", 5805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) f->m_ml->ml_name, size); 5815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 5825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 5835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) break; 5845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case METH_O: 5855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (likely(kw == NULL) || PyDict_Size(kw) == 0) { 5865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) size = PyTuple_GET_SIZE(arg); 5875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (size == 1) 5885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return (*meth)(self, PyTuple_GET_ITEM(arg, 0)); 5895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Format(PyExc_TypeError, 5905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "%.200s() takes exactly one argument (%zd given)", 5915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) f->m_ml->ml_name, size); 5925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 5935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 5945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) break; 5955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) default: 5965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_SetString(PyExc_SystemError, "Bad call flags in " 5975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "__Pyx_CyFunction_Call. METH_OLDARGS is no " 5985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "longer supported!"); 5995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 6005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 6015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 6025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", 6035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) f->m_ml->ml_name); 6045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 6055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 6065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 6075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { 6085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return PyCFunction_Call(func, arg, kw); 6095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 6105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 6115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 6125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyTypeObject __pyx_CyFunctionType_type = { 6135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyVarObject_HEAD_INIT(0, 0) 6145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __Pyx_NAMESTR("cython_function_or_method"), /*tp_name*/ 6155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) sizeof(__pyx_CyFunctionObject), /*tp_basicsize*/ 6165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_itemsize*/ 6175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (destructor) __Pyx_CyFunction_dealloc, /*tp_dealloc*/ 6185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_print*/ 6195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_getattr*/ 6205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_setattr*/ 6215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_MAJOR_VERSION < 3 6225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_compare*/ 6235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 6245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*reserved*/ 6255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 6265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (reprfunc) __Pyx_CyFunction_repr, /*tp_repr*/ 6275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_as_number*/ 6285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_as_sequence*/ 6295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_as_mapping*/ 6305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_hash*/ 6315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __Pyx_CyFunction_Call, /*tp_call*/ 6325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_str*/ 6335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_getattro*/ 6345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_setattro*/ 6355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_as_buffer*/ 6365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags*/ 6375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_doc*/ 6385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (traverseproc) __Pyx_CyFunction_traverse, /*tp_traverse*/ 6395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (inquiry) __Pyx_CyFunction_clear, /*tp_clear*/ 6405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_richcompare*/ 6415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) offsetof(__pyx_CyFunctionObject, func_weakreflist), /* tp_weaklistoffse */ 6425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_iter*/ 6435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_iternext*/ 6445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_CyFunction_methods, /*tp_methods*/ 6455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_CyFunction_members, /*tp_members*/ 6465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_CyFunction_getsets, /*tp_getset*/ 6475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_base*/ 6485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_dict*/ 6495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __Pyx_CyFunction_descr_get, /*tp_descr_get*/ 6505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_descr_set*/ 6515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) offsetof(__pyx_CyFunctionObject, func_dict),/*tp_dictoffset*/ 6525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_init*/ 6535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_alloc*/ 6545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_new*/ 6555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_free*/ 6565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_is_gc*/ 6575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_bases*/ 6585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_mro*/ 6595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_cache*/ 6605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_subclasses*/ 6615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_weaklist*/ 6625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_del*/ 6635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_VERSION_HEX >= 0x02060000 6645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_version_tag*/ 6655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 6665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_VERSION_HEX >= 0x030400a1 6675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_finalize*/ 6685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 6695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 6705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 6715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 6725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __Pyx_CyFunction_init(void) { 6735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if !CYTHON_COMPILING_IN_PYPY 6745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // avoid a useless level of call indirection 6755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_CyFunctionType_type.tp_call = PyCFunction_Call; 6765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 6775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); 6785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (__pyx_CyFunctionType == NULL) { 6795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 6805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 6815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 6825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 6835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 6845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { 6855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; 6865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 6875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) m->defaults = PyMem_Malloc(size); 6885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!m->defaults) 6895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return PyErr_NoMemory(); 6905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) memset(m->defaults, 0, size); 6915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) m->defaults_pyobjects = pyobjects; 6925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return m->defaults; 6935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 6945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 6955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { 6965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; 6975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) m->defaults_tuple = tuple; 6985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(tuple); 6995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 7005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { 7025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; 7035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) m->defaults_kwdict = dict; 7045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(dict); 7055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 7065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { 7085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; 7095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) m->func_annotations = dict; 7105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(dict); 7115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 7125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//////////////////// CyFunctionClassCell.proto //////////////////// 7145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static CYTHON_INLINE void __Pyx_CyFunction_InitClassCell(PyObject *cyfunctions, 7155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *classobj); 7165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//////////////////// CyFunctionClassCell //////////////////// 7185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@requires: CythonFunction 7195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static CYTHON_INLINE void __Pyx_CyFunction_InitClassCell(PyObject *cyfunctions, PyObject *classobj) { 7215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int i; 7225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) for (i = 0; i < PyList_GET_SIZE(cyfunctions); i++) { 7245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_CyFunctionObject *m = 7255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (__pyx_CyFunctionObject *) PyList_GET_ITEM(cyfunctions, i); 7265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) m->func_classobj = classobj; 7275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(classobj); 7285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 7295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 7305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//////////////////// FusedFunction.proto //////////////////// 7325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)typedef struct { 7335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_CyFunctionObject func; 7345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *__signatures__; 7355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *type; 7365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *self; 7375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} __pyx_FusedFunctionObject; 7385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __pyx_FusedFunction_NewEx(ml, flags, qualname, self, module, globals, code) \ 7405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_FusedFunction_New(__pyx_FusedFunctionType, ml, flags, qualname, self, module, globals, code) 7415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject *__pyx_FusedFunction_New(PyTypeObject *type, 7425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyMethodDef *ml, int flags, 7435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *qualname, PyObject *self, 7445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *module, PyObject *globals, 7455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *code); 7465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __pyx_FusedFunction_clear(__pyx_FusedFunctionObject *self); 7485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyTypeObject *__pyx_FusedFunctionType = NULL; 7495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __pyx_FusedFunction_init(void); 7505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define __Pyx_FusedFunction_USED 7525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//////////////////// FusedFunction //////////////////// 7545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//@requires: CythonFunction 7555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 7575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__pyx_FusedFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, 7585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *qualname, PyObject *self, 7595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *module, PyObject *globals, 7605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *code) 7615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 7625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_FusedFunctionObject *fusedfunc = 7635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (__pyx_FusedFunctionObject *) __Pyx_CyFunction_New(type, ml, flags, qualname, 7645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self, module, globals, code); 7655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!fusedfunc) 7665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 7675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) fusedfunc->__signatures__ = NULL; 7695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) fusedfunc->type = NULL; 7705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) fusedfunc->self = NULL; 7715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return (PyObject *) fusedfunc; 7725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 7735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static void __pyx_FusedFunction_dealloc(__pyx_FusedFunctionObject *self) { 7755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_FusedFunction_clear(self); 7765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_FusedFunctionType->tp_free((PyObject *) self); 7775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 7785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int 7805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__pyx_FusedFunction_traverse(__pyx_FusedFunctionObject *self, 7815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) visitproc visit, 7825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void *arg) 7835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 7845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_VISIT(self->self); 7855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_VISIT(self->type); 7865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_VISIT(self->__signatures__); 7875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return __Pyx_CyFunction_traverse((__pyx_CyFunctionObject *) self, visit, arg); 7885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 7895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int 7915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__pyx_FusedFunction_clear(__pyx_FusedFunctionObject *self) 7925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 7935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(self->self); 7945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(self->type); 7955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(self->__signatures__); 7965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return __Pyx_CyFunction_clear((__pyx_CyFunctionObject *) self); 7975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 7985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 7995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 8015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__pyx_FusedFunction_descr_get(PyObject *self, PyObject *obj, PyObject *type) 8025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 8035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_FusedFunctionObject *func, *meth; 8045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) func = (__pyx_FusedFunctionObject *) self; 8065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (func->self || func->func.flags & __Pyx_CYFUNCTION_STATICMETHOD) { 8085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* Do not allow rebinding and don't do anything for static methods */ 8095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(self); 8105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return self; 8115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 8125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (obj == Py_None) 8145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) obj = NULL; 8155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) meth = (__pyx_FusedFunctionObject *) __pyx_FusedFunction_NewEx( 8175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ((PyCFunctionObject *) func)->m_ml, 8185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ((__pyx_CyFunctionObject *) func)->flags, 8195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ((__pyx_CyFunctionObject *) func)->func_qualname, 8205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ((__pyx_CyFunctionObject *) func)->func_closure, 8215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ((PyCFunctionObject *) func)->m_module, 8225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ((__pyx_CyFunctionObject *) func)->func_globals, 8235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ((__pyx_CyFunctionObject *) func)->func_code); 8245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!meth) 8255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 8265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XINCREF(func->func.func_classobj); 8285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) meth->func.func_classobj = func->func.func_classobj; 8295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XINCREF(func->__signatures__); 8315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) meth->__signatures__ = func->__signatures__; 8325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XINCREF(type); 8345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) meth->type = type; 8355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XINCREF(func->func.defaults_tuple); 8375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) meth->func.defaults_tuple = func->func.defaults_tuple; 8385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (func->func.flags & __Pyx_CYFUNCTION_CLASSMETHOD) 8405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) obj = type; 8415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XINCREF(obj); 8435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) meth->self = obj; 8445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return (PyObject *) meth; 8465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 8475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 8495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)_obj_to_str(PyObject *obj) 8505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 8515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (PyType_Check(obj)) 8525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return PyObject_GetAttr(obj, PYIDENT("__name__")); 8535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) else 8545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return PyObject_Str(obj); 8555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 8565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 8585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__pyx_FusedFunction_getitem(__pyx_FusedFunctionObject *self, PyObject *idx) 8595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 8605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *signature = NULL; 8615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *unbound_result_func; 8625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *result_func = NULL; 8635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (self->__signatures__ == NULL) { 8655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_SetString(PyExc_TypeError, "Function is not fused"); 8665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 8675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 8685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (PyTuple_Check(idx)) { 8705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *list = PyList_New(0); 8715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_ssize_t n = PyTuple_GET_SIZE(idx); 8725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *string = NULL; 8735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *sep = NULL; 8745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int i; 8755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!list) 8775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 8785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) for (i = 0; i < n; i++) { 8805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *item = PyTuple_GET_ITEM(idx, i); 8815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) string = _obj_to_str(item); 8835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!string || PyList_Append(list, string) < 0) 8845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto __pyx_err; 8855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(string); 8875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 8885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 8895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) sep = PyUnicode_FromString("|"); 8905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (sep) 8915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) signature = PyUnicode_Join(sep, list); 8925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__pyx_err: 8935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles); 8945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(list); 8955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(sep); 8965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else { 8975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) signature = _obj_to_str(idx); 8985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 8995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!signature) 9015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 9025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) unbound_result_func = PyObject_GetItem(self->__signatures__, signature); 9045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (unbound_result_func) { 9065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (self->self || self->type) { 9075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_FusedFunctionObject *unbound = (__pyx_FusedFunctionObject *) unbound_result_func; 9085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* Todo: move this to InitClassCell */ 9105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(unbound->func.func_classobj); 9115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XINCREF(self->func.func_classobj); 9125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) unbound->func.func_classobj = self->func.func_classobj; 9135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) result_func = __pyx_FusedFunction_descr_get(unbound_result_func, 9155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self->self, self->type); 9165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else { 9175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) result_func = unbound_result_func; 9185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(result_func); 9195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 9205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 9215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(signature); 9235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(unbound_result_func); 9245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return result_func; 9265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 9275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 9295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__pyx_FusedFunction_callfunction(PyObject *func, PyObject *args, PyObject *kw) 9305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 9315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; 9325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *result; 9335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int static_specialized = (cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD && 9345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) !((__pyx_FusedFunctionObject *) func)->__signatures__); 9355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (cyfunc->flags & __Pyx_CYFUNCTION_CCLASS && !static_specialized) { 9375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_ssize_t argc; 9385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *new_args; 9395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *self; 9405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *m_self; 9415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) argc = PyTuple_GET_SIZE(args); 9435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new_args = PyTuple_GetSlice(args, 1, argc); 9445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!new_args) 9465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 9475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self = PyTuple_GetItem(args, 0); 9495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!self) 9515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 9525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) m_self = cyfunc->func.m_self; 9545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) cyfunc->func.m_self = self; 9555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) result = __Pyx_CyFunction_Call(func, new_args, kw); 9565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) cyfunc->func.m_self = m_self; 9575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(new_args); 9595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else { 9605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) result = __Pyx_CyFunction_Call(func, args, kw); 9615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 9625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return result; 9645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 9655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/* Note: the 'self' from method binding is passed in in the args tuple, 9675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) whereas PyCFunctionObject's m_self is passed in as the first 9685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) argument to the C function. For extension methods we need 9695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) to pass 'self' as 'm_self' and not as the first element of the 9705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) args tuple. 9715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)*/ 9725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject * 9735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__pyx_FusedFunction_call(PyObject *func, PyObject *args, PyObject *kw) 9745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles){ 9755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_FusedFunctionObject *binding_func = (__pyx_FusedFunctionObject *) func; 9765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_ssize_t argc = PyTuple_GET_SIZE(args); 9775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *new_args = NULL; 9785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_FusedFunctionObject *new_func = NULL; 9795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *result = NULL; 9805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *self = NULL; 9815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int is_staticmethod = binding_func->func.flags & __Pyx_CYFUNCTION_STATICMETHOD; 9825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int is_classmethod = binding_func->func.flags & __Pyx_CYFUNCTION_CLASSMETHOD; 9835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (binding_func->self) { 9855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* Bound method call, put 'self' in the args tuple */ 9865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_ssize_t i; 9875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new_args = PyTuple_New(argc + 1); 9885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!new_args) 9895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 9905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self = binding_func->self; 9925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(self); 9935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyTuple_SET_ITEM(new_args, 0, self); 9945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 9955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) for (i = 0; i < argc; i++) { 9965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *item = PyTuple_GET_ITEM(args, i); 9975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_INCREF(item); 9985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyTuple_SET_ITEM(new_args, i + 1, item); 9995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 10005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 10015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) args = new_args; 10025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else if (binding_func->type) { 10035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* Unbound method call */ 10045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (argc < 1) { 10055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_SetString(PyExc_TypeError, "Need at least one argument, 0 given."); 10065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 10075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 10085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self = PyTuple_GET_ITEM(args, 0); 10095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 10105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 10115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (self && !is_classmethod && !is_staticmethod && 10125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) !PyObject_IsInstance(self, binding_func->type)) { 10135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_Format(PyExc_TypeError, 10145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "First argument should be of type %.200s, got %.200s.", 10155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ((PyTypeObject *) binding_func->type)->tp_name, 10165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) self->ob_type->tp_name); 10175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto __pyx_err; 10185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 10195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 10205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (binding_func->__signatures__) { 10215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *tup = PyTuple_Pack(4, binding_func->__signatures__, args, 10225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) kw == NULL ? Py_None : kw, 10235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) binding_func->func.defaults_tuple); 10245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!tup) 10255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto __pyx_err; 10265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 10275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new_func = (__pyx_FusedFunctionObject *) __pyx_FusedFunction_callfunction(func, tup, NULL); 10285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(tup); 10295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 10305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!new_func) 10315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) goto __pyx_err; 10325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 10335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XINCREF(binding_func->func.func_classobj); 10345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_CLEAR(new_func->func.func_classobj); 10355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new_func->func.func_classobj = binding_func->func.func_classobj; 10365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 10375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) func = (PyObject *) new_func; 10385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 10395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 10405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) result = __pyx_FusedFunction_callfunction(func, args, kw); 10415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)__pyx_err: 10425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF(new_args); 10435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_XDECREF((PyObject *) new_func); 10445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return result; 10455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 10465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 10475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyMemberDef __pyx_FusedFunction_members[] = { 10485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {(char *) "__signatures__", 10495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) T_OBJECT, 10505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) offsetof(__pyx_FusedFunctionObject, __signatures__), 10515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) READONLY, 10525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __Pyx_DOCSTR(0)}, 10535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) {0, 0, 0, 0, 0}, 10545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 10555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 10565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyMappingMethods __pyx_FusedFunction_mapping_methods = { 10575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, 10585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (binaryfunc) __pyx_FusedFunction_getitem, 10595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, 10605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 10615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 10625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyTypeObject __pyx_FusedFunctionType_type = { 10635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyVarObject_HEAD_INIT(0, 0) 10645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __Pyx_NAMESTR("fused_cython_function"), /*tp_name*/ 10655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) sizeof(__pyx_FusedFunctionObject), /*tp_basicsize*/ 10665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_itemsize*/ 10675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (destructor) __pyx_FusedFunction_dealloc, /*tp_dealloc*/ 10685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_print*/ 10695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_getattr*/ 10705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_setattr*/ 10715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_MAJOR_VERSION < 3 10725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_compare*/ 10735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 10745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*reserved*/ 10755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 10765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_repr*/ 10775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_as_number*/ 10785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_as_sequence*/ 10795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) &__pyx_FusedFunction_mapping_methods, /*tp_as_mapping*/ 10805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_hash*/ 10815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (ternaryfunc) __pyx_FusedFunction_call, /*tp_call*/ 10825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_str*/ 10835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_getattro*/ 10845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_setattro*/ 10855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_as_buffer*/ 10865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, /* tp_flags*/ 10875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_doc*/ 10885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (traverseproc) __pyx_FusedFunction_traverse, /*tp_traverse*/ 10895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (inquiry) __pyx_FusedFunction_clear,/*tp_clear*/ 10905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_richcompare*/ 10915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_weaklistoffset*/ 10925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_iter*/ 10935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_iternext*/ 10945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_methods*/ 10955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_FusedFunction_members, /*tp_members*/ 10965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* __doc__ is None for the fused function type, but we need it to be */ 10975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* a descriptor for the instance's __doc__, so rebuild descriptors in our subclass */ 10985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_CyFunction_getsets, /*tp_getset*/ 10995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) &__pyx_CyFunctionType_type, /*tp_base*/ 11005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_dict*/ 11015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_FusedFunction_descr_get, /*tp_descr_get*/ 11025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_descr_set*/ 11035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_dictoffset*/ 11045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_init*/ 11055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_alloc*/ 11065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_new*/ 11075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_free*/ 11085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_is_gc*/ 11095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_bases*/ 11105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_mro*/ 11115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_cache*/ 11125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_subclasses*/ 11135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_weaklist*/ 11145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_del*/ 11155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_VERSION_HEX >= 0x02060000 11165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_version_tag*/ 11175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 11185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if PY_VERSION_HEX >= 0x030400a1 11195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 0, /*tp_finalize*/ 11205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 11215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 11225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 11235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static int __pyx_FusedFunction_init(void) { 11245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) __pyx_FusedFunctionType = __Pyx_FetchCommonType(&__pyx_FusedFunctionType_type); 11255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (__pyx_FusedFunctionType == NULL) { 11265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return -1; 11275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 11285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return 0; 11295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 11305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 11315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//////////////////// ClassMethod.proto //////////////////// 11325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 11335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "descrobject.h" 11345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject* __Pyx_Method_ClassMethod(PyObject *method); /*proto*/ 11355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 11365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)//////////////////// ClassMethod //////////////////// 11375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 11385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static PyObject* __Pyx_Method_ClassMethod(PyObject *method) { 11395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if CYTHON_COMPILING_IN_PYPY 11405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (PyObject_TypeCheck(method, &PyWrapperDescr_Type)) { /* cdef classes */ 11415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return PyClassMethod_New(method); 11425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 11435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 11445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /* It appears that PyMethodDescr_Type is not anywhere exposed in the Python/C API */ 11455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static PyTypeObject *methoddescr_type = NULL; 11465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (methoddescr_type == NULL) { 11475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyObject *meth = __Pyx_GetAttrString((PyObject*)&PyList_Type, "append"); 11485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!meth) return NULL; 11495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) methoddescr_type = Py_TYPE(meth); 11505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Py_DECREF(meth); 11515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 11525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (PyObject_TypeCheck(method, methoddescr_type)) { /* cdef classes */ 11535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyMethodDescrObject *descr = (PyMethodDescrObject *)method; 11545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #if PY_VERSION_HEX < 0x03020000 11555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyTypeObject *d_type = descr->d_type; 11565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #else 11575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyTypeObject *d_type = descr->d_common.d_type; 11585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) #endif 11595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return PyDescr_NewClassMethod(d_type, descr->d_method); 11605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 11615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 11625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) else if (PyMethod_Check(method)) { /* python classes */ 11635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return PyClassMethod_New(PyMethod_GET_FUNCTION(method)); 11645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 11655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) else if (PyCFunction_Check(method)) { 11665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return PyClassMethod_New(method); 11675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 11685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifdef __Pyx_CyFunction_USED 11695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) else if (PyObject_TypeCheck(method, __pyx_CyFunctionType)) { 11705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return PyClassMethod_New(method); 11715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 11725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 11735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PyErr_SetString(PyExc_TypeError, 11745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "Class-level classmethod() can only be called on " 11755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "a method_descriptor or instance method."); 11765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return NULL; 11775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1178