From 471df1a41f023bca52c74bbf516953da816a34aa Mon Sep 17 00:00:00 2001 From: Pierre Schnizer Date: Wed, 7 Feb 2024 10:23:22 +0100 Subject: [PATCH 1/4] [TASK] moving to PyVarObject_HEAD_INIT fix for python3.12 --- src/qrng_module.c | 218 ++++++++++++++++---------------- src/rng/rngmodule.c | 72 +++++------ src/transform/space.c | 54 ++++---- src/transform/transformmodule.c | 42 +++--- src/transform/wavelet.c | 16 +-- 5 files changed, 201 insertions(+), 201 deletions(-) diff --git a/src/qrng_module.c b/src/qrng_module.c index 0e77853..9ac5dcf 100644 --- a/src/qrng_module.c +++ b/src/qrng_module.c @@ -11,11 +11,11 @@ static PyObject *module = NULL; #ifdef PyGSL_PY3K -#define PyGSL_STRING_AS_STRING(obj) PyBytes_FromString(obj) -#define PyGSL_STRING_LENGTH(obj) PyBytes_Length(obj) +#define PyGSL_STRING_AS_STRING(obj) PyBytes_FromString(obj) +#define PyGSL_STRING_LENGTH(obj) PyBytes_Length(obj) #else -#define PyGSL_STRING_AS_STRING(obj) PyString_AsString(obj) -#define PyGSL_STRING_LENGTH(obj) PyString_Size(obj) +#define PyGSL_STRING_AS_STRING(obj) PyString_AsString(obj) +#define PyGSL_STRING_LENGTH(obj) PyString_Size(obj) #endif @@ -53,90 +53,90 @@ PyObject* qrng_type_getattr(PyGSL_qrng_type *self, char *name) { if(strcmp(name, "__doc__") == 0){ - return PyGSL_get_docobject_for_object(self->py_name); + return PyGSL_get_docobject_for_object(self->py_name); }else{ - Py_INCREF(Py_None); - return Py_None; - } + Py_INCREF(Py_None); + return Py_None; + } } */ #ifdef PyGSL_PY3K static PyTypeObject PyGSL_qrng_pytype = { - PyObject_HEAD_INIT(NULL) - "PyGSL_qrng", /* tp_name */ - sizeof(PyGSL_qrng), /* tp_basicsize */ - 0, /* tp_itemsize */ - (destructor) qrng_delete, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_reserved */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - (ternaryfunc) qrng_get, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT, /* tp_flags */ - (char *)0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - qrng_methods, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - 0, /* tp_init */ - 0, /* tp_alloc */ - 0, /* tp_new */ + PyVarObject_HEAD_INIT(NULL, 0) + "PyGSL_qrng", /* tp_name */ + sizeof(PyGSL_qrng), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor) qrng_delete, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_reserved */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + (ternaryfunc) qrng_get, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + (char *)0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + qrng_methods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ }; #else /* PyGSL_PY3K */ -static PyObject * /* on "instance.attr" */ +static PyObject * /* on "instance.attr" */ qrng_getattr (PyGSL_qrng *self, char *name); static PyTypeObject PyGSL_qrng_pytype = { - PyObject_HEAD_INIT(NULL) /* fix up the type slot in initcrng */ - 0, /* ob_size */ - "PyGSL_qrng", /* tp_name */ - sizeof(PyGSL_qrng), /* tp_basicsize */ - 0, /* tp_itemsize */ + PyObject_HEAD_INIT(NULL) /* fix up the type slot in initcrng */ + 0, /* ob_size */ + "PyGSL_qrng", /* tp_name */ + sizeof(PyGSL_qrng), /* tp_basicsize */ + 0, /* tp_itemsize */ /* standard methods */ (destructor) qrng_delete, /* tp_dealloc ref-count==0 */ - (printfunc) 0, /* tp_print "print x" */ + (printfunc) 0, /* tp_print "print x" */ (getattrfunc) qrng_getattr, /* tp_getattr "x.attr" */ - (setattrfunc) 0, /* tp_setattr "x.attr=v" */ - (cmpfunc) 0, /* tp_compare "x > y" */ + (setattrfunc) 0, /* tp_setattr "x.attr=v" */ + (cmpfunc) 0, /* tp_compare "x > y" */ (reprfunc) 0, /* tp_repr `x`, print x */ /* type categories */ - 0, /* tp_as_number +,-,*,/,%,&,>>,pow...*/ - 0, /* tp_as_sequence +,[i],[i:j],len, ...*/ - 0, /* tp_as_mapping [key], len, ...*/ + 0, /* tp_as_number +,-,*,/,%,&,>>,pow...*/ + 0, /* tp_as_sequence +,[i],[i:j],len, ...*/ + 0, /* tp_as_mapping [key], len, ...*/ /* more methods */ - (hashfunc) 0, /* tp_hash "dict[x]" */ + (hashfunc) 0, /* tp_hash "dict[x]" */ (ternaryfunc) qrng_get, /* tp_call "x()" */ (reprfunc) 0, /* tp_str "str(x)" */ - (getattrofunc) 0, /* tp_getattro */ - (setattrofunc) 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - 0L, /* tp_flags */ - 0 /* tp_doc */ + (getattrofunc) 0, /* tp_getattro */ + (setattrofunc) 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + 0L, /* tp_flags */ + 0 /* tp_doc */ }; -static PyObject * /* on "instance.attr" */ +static PyObject * /* on "instance.attr" */ qrng_getattr (PyGSL_qrng *self, char *name){ PyObject *tmp = NULL; @@ -144,12 +144,12 @@ qrng_getattr (PyGSL_qrng *self, char *name){ /* if(strcmp(name, "__doc__") == 0) - return PyGSL_get_docobject_for_object("qrng.qrng"); + return PyGSL_get_docobject_for_object("qrng.qrng"); */ tmp = Py_FindMethod(qrng_methods, (PyObject *) self, name); - if(NULL == tmp){ - PyGSL_add_traceback(module, __FILE__, "qrng.__attr__", __LINE__ - 1); - return NULL; + if(NULL == tmp){ + PyGSL_add_traceback(module, __FILE__, "qrng.__attr__", __LINE__ - 1); + return NULL; } return tmp; @@ -158,7 +158,7 @@ qrng_getattr (PyGSL_qrng *self, char *name){ #endif /* PyGSL_PY3K */ - + static PyObject * qrng_get(PyGSL_qrng *self, PyObject *args) { @@ -171,13 +171,13 @@ qrng_get(PyGSL_qrng *self, PyObject *args) FUNC_MESS_BEGIN(); assert(PyGSLQRng_Check(self)); if(0 == PyArg_ParseTuple(args, "|i", &dimension)){ - goto fail; + goto fail; } if(dimension <= 0){ - lineno = __LINE__ - 1; - PyErr_SetString(PyExc_ValueError, - "The sample number must be positive!"); - goto fail; + lineno = __LINE__ - 1; + PyErr_SetString(PyExc_ValueError, + "The sample number must be positive!"); + goto fail; } dims[0] = dimension; dims[1] = self->qrng->dimension; @@ -188,10 +188,10 @@ qrng_get(PyGSL_qrng *self, PyObject *args) assert((PyArray_STRIDE(a_array, 1) / sizeof(double)) == 1); for(i=0; iqrng, data); + DEBUG_MESS(6, "Setting slice %d", i); + data = (double *) (PyArray_GETPTR1(a_array, i)); + DEBUG_MESS(6, "Data at %p", (void *) data); + gsl_qrng_get(self->qrng, data); } FUNC_MESS_END(); @@ -230,7 +230,7 @@ qrng_name(PyGSL_qrng *self, PyObject *args) { assert(PyGSLQRng_Check(self)); if(0 == PyArg_ParseTuple(args, ":name")) - return NULL; + return NULL; return PyGSL_string_from_string(gsl_qrng_name(self->qrng)); } @@ -240,7 +240,7 @@ qrng_clone(PyGSL_qrng *self, PyObject *args) PyGSL_qrng * qrng; assert(PyGSLQRng_Check(self)); if(0 == PyArg_ParseTuple(args, ":clone")) - return NULL; + return NULL; qrng = (PyGSL_qrng *) PyObject_NEW(PyGSL_qrng, &PyGSL_qrng_pytype); qrng->qrng = gsl_qrng_clone(self->qrng); return (PyObject *) qrng; @@ -257,42 +257,42 @@ PyGSL_qrng_init(PyObject *self, PyObject *args, const gsl_qrng_type * qrng_type) FUNC_MESS_BEGIN(); if(qrng_type == NULL){ - PyGSL_add_traceback(module, __FILE__, "qrng.__init__", __LINE__ - 2); - return NULL; + PyGSL_add_traceback(module, __FILE__, "qrng.__init__", __LINE__ - 2); + return NULL; } if (0 == PyArg_ParseTuple(args, "i:qrng.__init__", &dimension)){ - PyGSL_add_traceback(module, __FILE__, "qrng.__init__", __LINE__ - 2); - return NULL; + PyGSL_add_traceback(module, __FILE__, "qrng.__init__", __LINE__ - 2); + return NULL; } if (dimension <= 0){ - PyErr_SetString(PyExc_ValueError, "The sample number must be positive!"); - PyGSL_add_traceback(module, __FILE__, "qrng.__init__", __LINE__ - 2); - return NULL; + PyErr_SetString(PyExc_ValueError, "The sample number must be positive!"); + PyGSL_add_traceback(module, __FILE__, "qrng.__init__", __LINE__ - 2); + return NULL; } qrng = (PyGSL_qrng *) PyObject_NEW(PyGSL_qrng, &PyGSL_qrng_pytype); if(qrng == NULL){ - return NULL; + return NULL; } qrng->qrng = NULL; qrng->qrng = gsl_qrng_alloc(qrng_type, dimension); /* XXX handle failure in allocation of qrng! ... */ - + FUNC_MESS_END(); return (PyObject *) qrng; } -#define RNG_ARNG(name) \ +#define RNG_ARNG(name) \ static PyObject* PyGSL_qrng_init_ ## name (PyObject *self, PyObject *args) \ { \ PyObject *tmp = NULL; \ FUNC_MESS_BEGIN(); \ tmp = PyGSL_qrng_init(self, args, gsl_qrng_ ## name); \ if (tmp == NULL){ \ - PyGSL_add_traceback(module, __FILE__, __FUNCTION__, __LINE__); \ + PyGSL_add_traceback(module, __FILE__, __FUNCTION__, __LINE__); \ } \ FUNC_MESS_END(); \ return tmp; \ @@ -303,10 +303,10 @@ RNG_ARNG(sobol) static PyMethodDef PyGSL_qrng_module_functions[] = { - {"niederreiter_2", PyGSL_qrng_init_niederreiter_2, METH_VARARGS, NULL}, - {"sobol", PyGSL_qrng_init_sobol, METH_VARARGS, NULL}, - {NULL, 0, 0, NULL} -}; + {"niederreiter_2", PyGSL_qrng_init_niederreiter_2, METH_VARARGS, NULL}, + {"sobol", PyGSL_qrng_init_sobol, METH_VARARGS, NULL}, + {NULL, 0, 0, NULL} +}; #ifdef PyGSL_PY3K static struct PyModuleDef moduledef = { @@ -314,7 +314,7 @@ static struct PyModuleDef moduledef = { "_qrng", NULL, -1, - PyGSL_qrng_module_functions, + PyGSL_qrng_module_functions, NULL, NULL, NULL, @@ -336,26 +336,26 @@ DL_EXPORT(void) init_qrng(void) #define RETVAL #endif /* PyGSL_PY3K */ { - PyObject *m = NULL; + PyObject *m = NULL; + + init_pygsl(); - init_pygsl(); - #ifdef PyGSL_PY3K - m = PyModule_Create(&moduledef); + m = PyModule_Create(&moduledef); #else /* PyGSL_PY3K */ - m = Py_InitModule("_qrng", PyGSL_qrng_module_functions); + m = Py_InitModule("_qrng", PyGSL_qrng_module_functions); #endif - assert(m); - /* create_qrng_types(m); */ - module = m; + assert(m); + /* create_qrng_types(m); */ + module = m; #ifdef PyGSL_PY3K - if (PyType_Ready(&PyGSL_qrng_pytype) < 0) - return NULL; + if (PyType_Ready(&PyGSL_qrng_pytype) < 0) + return NULL; #else /* PyGSL_PY3K */ - PyGSL_qrng_pytype.ob_type = &PyType_Type; + PyGSL_qrng_pytype.ob_type = &PyType_Type; #endif /* PyGSL_PY3K */ - + return RETVAL; } diff --git a/src/rng/rngmodule.c b/src/rng/rngmodule.c index 47ad09f..c0fdd2c 100644 --- a/src/rng/rngmodule.c +++ b/src/rng/rngmodule.c @@ -35,7 +35,7 @@ static PyObject * rng_call(PyGSL_rng *self, PyObject *args); static void rng_delete(PyGSL_rng *self); -static PyObject * +static PyObject * rng_call (PyGSL_rng *self, PyObject *args); static PyObject * rng_get(PyGSL_rng *self, PyObject *args); @@ -52,7 +52,7 @@ static PyObject * rng_name(PyGSL_rng *self, PyObject *args); static PyObject * rng_clone(PyGSL_rng *self, PyObject *args); #define RNG_DISTRIBUTION(name, function) \ -static PyObject* rng_ ## name (PyGSL_rng *self, PyObject *args); +static PyObject* rng_ ## name (PyGSL_rng *self, PyObject *args); #include "rng_distributions.h" #undef RNG_DISTRIBUTION @@ -117,7 +117,7 @@ static struct PyMethodDef rng_methods[] = { {"hypergeometric",(PyCFunction)rng_hypergeometric,METH_VARARGS, rng_hypergeometric_doc}, {"logarithmic",(PyCFunction)rng_logarithmic,METH_VARARGS, rng_logarithmic_doc}, {"landau",(PyCFunction)rng_landau,METH_VARARGS, rng_landau_doc}, - {"erlang",(PyCFunction)rng_erlang,METH_VARARGS, NULL}, + {"erlang",(PyCFunction)rng_erlang,METH_VARARGS, NULL}, {"multinomial",(PyCFunction)rng_multinomial,METH_VARARGS, multinomial_doc}, {"dirichlet",(PyCFunction)rng_dirichlet,METH_VARARGS, rng_dirichlet_doc}, {NULL, NULL} @@ -126,7 +126,7 @@ static struct PyMethodDef rng_methods[] = { #ifdef PyGSL_PY3K static PyTypeObject PyGSL_rng_pytype = { - PyObject_HEAD_INIT(NULL) + PyVarObject_HEAD_INIT(NULL, 0) "PyGSL_rng", /* tp_name */ sizeof(PyGSL_rng), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -240,16 +240,16 @@ static PyObject* PyGSL_rng_init_ ## name (PyObject *self, PyObject *args) \ #include "rng_list.h" static PyObject * -PyGSL_rng_init_default(PyObject *self, PyObject *args) -{ - PyObject *tmp = NULL; - FUNC_MESS_BEGIN(); - tmp = PyGSL_rng_init(self, args, NULL); - if (tmp == NULL){ +PyGSL_rng_init_default(PyObject *self, PyObject *args) +{ + PyObject *tmp = NULL; + FUNC_MESS_BEGIN(); + tmp = PyGSL_rng_init(self, args, NULL); + if (tmp == NULL){ PyGSL_add_traceback(module, __FILE__, __FUNCTION__, __LINE__ - 1); - } - FUNC_MESS_END(); - return tmp; + } + FUNC_MESS_END(); + return tmp; } @@ -345,7 +345,7 @@ rng_set(PyGSL_rng *self, PyObject *args) if(!seed){lineno = __LINE__ - 1; goto fail;} useed = PyLong_AsUnsignedLong(seed); gsl_rng_set(self->rng, useed); - + Py_INCREF(Py_None); FUNC_MESS_END(); return Py_None; @@ -439,9 +439,9 @@ rng_getattr(PyGSL_rng *self, char *name) FUNC_MESS_BEGIN(); assert(PyGSL_RNG_Check(self)); - + tmp = Py_FindMethod(rng_methods, (PyObject *) self, name); - if(NULL == tmp){ + if(NULL == tmp){ PyGSL_add_traceback(module, __FILE__, "rng.__attr__", __LINE__ - 1); return NULL; } @@ -478,10 +478,10 @@ rng_create_list(PyObject *self, PyObject *args) item = PyGSL_string_from_string(tmp); if(item == NULL) goto fail; - + Py_INCREF(item); assert(item); - + if(PyList_Append(list, item) != 0) goto fail; thisRNGType++; @@ -514,17 +514,17 @@ static PyObject* rng_ ## name ## _pdf (PyObject *self, PyObject *args) \ #include "rng_distributions.h" -static PyObject* rng_dirichlet_lnpdf (PyObject *self, PyObject *args) -{ +static PyObject* rng_dirichlet_lnpdf (PyObject *self, PyObject *args) +{ PyObject *tmp; FUNC_MESS_BEGIN(); - tmp = PyGSL_pdf_dA_to_dA(self, args, gsl_ran_dirichlet_lnpdf); + tmp = PyGSL_pdf_dA_to_dA(self, args, gsl_ran_dirichlet_lnpdf); FUNC_MESS_END(); return tmp; } static PyObject* rng_multinomial_lnpdf (PyObject *self, PyObject *args) -{ +{ PyObject *tmp; FUNC_MESS_BEGIN(); tmp = PyGSL_pdf_uidA_to_uiA(self, args, gsl_ran_multinomial_lnpdf); @@ -533,7 +533,7 @@ static PyObject* rng_multinomial_lnpdf (PyObject *self, PyObject *args) } -static const char rng_env_setup_doc[] = +static const char rng_env_setup_doc[] = "This function reads the environment variables `GSL_RNG_TYPE' and\n\ `GSL_RNG_SEED'.\n\ The environment variable `GSL_RNG_TYPE' should be the name of a\n\ @@ -648,18 +648,18 @@ static PyMethodDef PyGSL_rng_module_functions[] = { {"pascal_pdf",rng_pascal_pdf,METH_VARARGS, rng_pascal_pdf_doc}, {"geometric_pdf",rng_geometric_pdf,METH_VARARGS, rng_geometric_pdf_doc}, {"hypergeometric_pdf",rng_hypergeometric_pdf,METH_VARARGS, rng_hypergeometric_pdf_doc}, - {"logarithmic_pdf",rng_logarithmic_pdf,METH_VARARGS, rng_logarithmic_pdf_doc}, - {"landau_pdf",rng_landau_pdf,METH_VARARGS, rng_landau_pdf_doc}, + {"logarithmic_pdf",rng_logarithmic_pdf,METH_VARARGS, rng_logarithmic_pdf_doc}, + {"landau_pdf",rng_landau_pdf,METH_VARARGS, rng_landau_pdf_doc}, {"erlang_pdf",rng_erlang_pdf,METH_VARARGS, NULL}, - {"multinomial_pdf",rng_multinomial_pdf,METH_VARARGS,multinomial_pdf_doc}, + {"multinomial_pdf",rng_multinomial_pdf,METH_VARARGS,multinomial_pdf_doc}, {"dirichlet_pdf",rng_dirichlet_pdf,METH_VARARGS, rng_dirichlet_pdf_doc}, - {"multinomial_lnpdf",rng_multinomial_lnpdf,METH_VARARGS, NULL}, + {"multinomial_lnpdf",rng_multinomial_lnpdf,METH_VARARGS, NULL}, {"dirichlet_lnpdf",rng_dirichlet_lnpdf,METH_VARARGS, rng_dirichlet_lnpdf_doc}, {"env_setup",PyGSL_rng_env_setup,METH_NOARGS, (char*) rng_env_setup_doc}, {NULL, NULL, 0} /* Sentinel */ }; -static void +static void set_api_pointer(void) { @@ -710,7 +710,7 @@ DL_EXPORT(void) initrng(void) if(m == NULL) return RETVAL; - + assert(m); /* import_array(); */ init_pygsl(); @@ -721,14 +721,14 @@ DL_EXPORT(void) initrng(void) dict = PyModule_GetDict(m); if(!dict) goto fail; - + if (!(item = PyGSL_string_from_string(rng_module_doc))){ - PyErr_SetString(PyExc_ImportError, + PyErr_SetString(PyExc_ImportError, "I could not generate module doc string!"); goto fail; } if (PyDict_SetItemString(dict, "__doc__", item) != 0){ - PyErr_SetString(PyExc_ImportError, + PyErr_SetString(PyExc_ImportError, "I could not init doc string!"); goto fail; } @@ -745,16 +745,16 @@ DL_EXPORT(void) initrng(void) api = PyCapsule_New((void *) PyGSL_API, _PyGSL_RNG_API_CAP, NULL); if(api == NULL) goto fail; - + assert(api); if (PyDict_SetItemString(dict, "_PYGSL_RNG_API", api) != 0){ - PyErr_SetString(PyExc_ImportError, + PyErr_SetString(PyExc_ImportError, "I could not add _PYGSL_RNG_API!"); goto fail; } - + return RETVAL; - + fail: if(!PyErr_Occurred()){ PyErr_SetString(PyExc_ImportError, "I could not init rng module!"); diff --git a/src/transform/space.c b/src/transform/space.c index a9190a1..2d6a1c9 100644 --- a/src/transform/space.c +++ b/src/transform/space.c @@ -61,7 +61,7 @@ static PyMethodDef PyGSL_transform_generic_methods[] = { #ifdef PyGSL_PY3K static PyTypeObject PyGSL_transform_space_pytype = { - PyObject_HEAD_INIT(NULL) + PyVarObject_HEAD_INIT(NULL, 0) "PyGSL_transform_space", /* tp_name */ sizeof(PyGSL_transform_space), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -150,7 +150,7 @@ PyGSL_transform_space_get_n(PyGSL_transform_space *self) case REAL_WORKSPACE: n = self->space.rws ->n; break; case COMPLEX_WAVETABLE: n = self->space.cwt ->n; break; case REAL_WAVETABLE: n = self->space.rwt ->n; break; - case HALFCOMPLEX_WAVETABLE: n = self->space.hcwt->n; break; + case HALFCOMPLEX_WAVETABLE: n = self->space.hcwt->n; break; case COMPLEX_WORKSPACE_FLOAT: n = self->space.cwsf ->n; break; case REAL_WORKSPACE_FLOAT: n = self->space.rwsf ->n; break; case COMPLEX_WAVETABLE_FLOAT: n = self->space.cwtf ->n; break; @@ -179,10 +179,10 @@ static PyObject * PyGSL_transform_space_get_factors(PyGSL_transform_space *self, PyObject *args) { - PyGSL_array_index_t nf, i; + PyGSL_array_index_t nf, i; long *data=NULL; size_t *cp_data=NULL; - PyArrayObject * a_array = NULL; + PyArrayObject * a_array = NULL; int lineno; FUNC_MESS_BEGIN(); @@ -192,14 +192,14 @@ PyGSL_transform_space_get_factors(PyGSL_transform_space *self, PyObject *args) switch(self->type){ case COMPLEX_WAVETABLE: nf = self->space.cwt ->nf; cp_data = self->space.cwt ->factor; break; case REAL_WAVETABLE: nf = self->space.rwt ->nf; cp_data = self->space.rwt ->factor; break; - case HALFCOMPLEX_WAVETABLE: nf = self->space.hcwt->nf; cp_data = self->space.hcwt->factor; break; + case HALFCOMPLEX_WAVETABLE: nf = self->space.hcwt->nf; cp_data = self->space.hcwt->factor; break; case COMPLEX_WAVETABLE_FLOAT: nf = self->space.cwtf ->nf; cp_data = self->space.cwtf ->factor; break; case REAL_WAVETABLE_FLOAT: nf = self->space.rwtf ->nf; cp_data = self->space.rwtf ->factor; break; - case HALFCOMPLEX_WAVETABLE_FLOAT: nf = self->space.hcwtf->nf; cp_data = self->space.hcwtf->factor; break; - default: + case HALFCOMPLEX_WAVETABLE_FLOAT: nf = self->space.hcwtf->nf; cp_data = self->space.hcwtf->factor; break; + default: lineno = __LINE__ - 1; - pygsl_error("Got unknown switch", filename, lineno, GSL_ESANITY); - goto fail; + pygsl_error("Got unknown switch", filename, lineno, GSL_ESANITY); + goto fail; break; } @@ -211,7 +211,7 @@ PyGSL_transform_space_get_factors(PyGSL_transform_space *self, PyObject *args) data = (long *) PyArray_DATA(a_array); - + for(i=0; itype){ case COMPLEX_WORKSPACE: - case REAL_WORKSPACE: + case REAL_WORKSPACE: case COMPLEX_WORKSPACE_FLOAT: case REAL_WORKSPACE_FLOAT: tmp = PyGSL_transform_space_get_factors(self, args); @@ -283,7 +283,7 @@ PyGSL_transform_generic_get_factors(PyGSL_transform_space *self, PyObject *args) } FUNC_MESS_END(); return tmp; - + } @@ -306,10 +306,10 @@ PyGSL_transform_space_getattr(PyGSL_transform_space *self, char *name) { PyObject *tmp = NULL; FUNC_MESS_BEGIN(); - assert(PyGSL_transform_space_check(self)); + assert(PyGSL_transform_space_check(self)); switch(self->type){ case COMPLEX_WORKSPACE: - case REAL_WORKSPACE: + case REAL_WORKSPACE: case COMPLEX_WORKSPACE_FLOAT: case REAL_WORKSPACE_FLOAT: tmp = Py_FindMethod(PyGSL_transform_space_methods, (PyObject *) self, name); @@ -325,7 +325,7 @@ static void PyGSL_transform_space_dealloc(PyGSL_transform_space * self) { FUNC_MESS_BEGIN(); - assert(PyGSL_transform_space_check(self)); + assert(PyGSL_transform_space_check(self)); assert(self->space.v); switch(self->type){ case COMPLEX_WORKSPACE: gsl_fft_complex_workspace_free(self->space.cws); break; @@ -350,7 +350,7 @@ PyGSL_transform_space_dealloc(PyGSL_transform_space * self) -static PyObject* +static PyObject* PyGSL_transform_space_init(PyObject *self, PyObject *args, const enum pygsl_transform_space_type type) { PyGSL_transform_space *o=NULL; @@ -371,11 +371,11 @@ PyGSL_transform_space_init(PyObject *self, PyObject *args, const enum pygsl_tran } o->type = type; switch(type){ - case COMPLEX_WORKSPACE: o->space.cws = gsl_fft_complex_workspace_alloc(n); break; - case COMPLEX_WAVETABLE: o->space.cwt = gsl_fft_complex_wavetable_alloc(n); break; - case REAL_WORKSPACE: o->space.rws = gsl_fft_real_workspace_alloc(n); break; - case REAL_WAVETABLE: o->space.rwt = gsl_fft_real_wavetable_alloc(n); break; - case HALFCOMPLEX_WAVETABLE: o->space.hcwt = gsl_fft_halfcomplex_wavetable_alloc(n); break; + case COMPLEX_WORKSPACE: o->space.cws = gsl_fft_complex_workspace_alloc(n); break; + case COMPLEX_WAVETABLE: o->space.cwt = gsl_fft_complex_wavetable_alloc(n); break; + case REAL_WORKSPACE: o->space.rws = gsl_fft_real_workspace_alloc(n); break; + case REAL_WAVETABLE: o->space.rwt = gsl_fft_real_wavetable_alloc(n); break; + case HALFCOMPLEX_WAVETABLE: o->space.hcwt = gsl_fft_halfcomplex_wavetable_alloc(n); break; case COMPLEX_WORKSPACE_FLOAT: o->space.cwsf = gsl_fft_complex_workspace_float_alloc(n); break; case COMPLEX_WAVETABLE_FLOAT: o->space.cwtf = gsl_fft_complex_wavetable_float_alloc(n); break; case REAL_WORKSPACE_FLOAT: o->space.rwsf = gsl_fft_real_workspace_float_alloc(n); break; @@ -398,16 +398,16 @@ static PyObject * \ PyGSL_transform_space_init_ ## TYPE (PyObject *self, PyObject *args)\ { \ return PyGSL_transform_space_init(self, args, TYPE); \ -} +} PyGSL_SPACE_ALLOC(COMPLEX_WORKSPACE) PyGSL_SPACE_ALLOC(COMPLEX_WAVETABLE) -PyGSL_SPACE_ALLOC(REAL_WORKSPACE) +PyGSL_SPACE_ALLOC(REAL_WORKSPACE) PyGSL_SPACE_ALLOC(REAL_WAVETABLE) PyGSL_SPACE_ALLOC(HALFCOMPLEX_WAVETABLE) PyGSL_SPACE_ALLOC(COMPLEX_WORKSPACE_FLOAT) PyGSL_SPACE_ALLOC(COMPLEX_WAVETABLE_FLOAT) -PyGSL_SPACE_ALLOC(REAL_WORKSPACE_FLOAT) +PyGSL_SPACE_ALLOC(REAL_WORKSPACE_FLOAT) PyGSL_SPACE_ALLOC(REAL_WAVETABLE_FLOAT) PyGSL_SPACE_ALLOC(HALFCOMPLEX_WAVETABLE_FLOAT) diff --git a/src/transform/transformmodule.c b/src/transform/transformmodule.c index fa76fc6..627831e 100644 --- a/src/transform/transformmodule.c +++ b/src/transform/transformmodule.c @@ -43,9 +43,9 @@ static const char filename[] = __FILE__; #include "space.c" /* Function to copy the different arrays. */ #include "arraycopy.c" -/* +/* * Macros and functions which set the information up and call the - * PyGSL_transform functions + * PyGSL_transform functions */ #include "fft.c" /* @@ -60,7 +60,7 @@ static const char filename[] = __FILE__; #define PyGSL_WAVELET_TRANSFORM_TYPE(name) #endif /* - * The real workers. + * The real workers. */ #include "core.c" @@ -81,24 +81,24 @@ static PyMethodDef transformMethods[] = { #endif /* transform functions */ PyGSL_TRANSFORM_FD_FUNCTION("complex_forward", fft_complex_forward, cf_doc) - PyGSL_TRANSFORM_FD_FUNCTION("complex_backward", fft_complex_backward, cb_doc) - PyGSL_TRANSFORM_FD_FUNCTION("complex_inverse", fft_complex_inverse, ci_doc) - PyGSL_TRANSFORM_FD_FUNCTION("complex_radix2_forward", fft_complex_radix2_forward, cf_doc_r2) + PyGSL_TRANSFORM_FD_FUNCTION("complex_backward", fft_complex_backward, cb_doc) + PyGSL_TRANSFORM_FD_FUNCTION("complex_inverse", fft_complex_inverse, ci_doc) + PyGSL_TRANSFORM_FD_FUNCTION("complex_radix2_forward", fft_complex_radix2_forward, cf_doc_r2) PyGSL_TRANSFORM_FD_FUNCTION("complex_radix2_backward", fft_complex_radix2_backward, cb_doc_r2) PyGSL_TRANSFORM_FD_FUNCTION("complex_radix2_inverse", fft_complex_radix2_inverse, ci_doc_r2) PyGSL_TRANSFORM_FD_FUNCTION("complex_radix2_dif_forward", fft_complex_radix2_dif_forward, cf_doc_r2_dif) PyGSL_TRANSFORM_FD_FUNCTION("complex_radix2_dif_backward", fft_complex_radix2_dif_backward, cb_doc_r2_dif) PyGSL_TRANSFORM_FD_FUNCTION("complex_radix2_dif_inverse", fft_complex_radix2_dif_inverse, ci_doc_r2_dif) - PyGSL_TRANSFORM_FD_FUNCTION("real_transform", fft_real_transform, rt_doc) + PyGSL_TRANSFORM_FD_FUNCTION("real_transform", fft_real_transform, rt_doc) PyGSL_TRANSFORM_FD_FUNCTION("halfcomplex_transform", fft_halfcomplex_transform, hc_doc) PyGSL_TRANSFORM_FD_FUNCTION("halfcomplex_inverse", fft_halfcomplex_inverse, hi_doc) - PyGSL_TRANSFORM_FD_FUNCTION("real_radix2_transform", fft_real_radix2_transform, rt_doc_r2) + PyGSL_TRANSFORM_FD_FUNCTION("real_radix2_transform", fft_real_radix2_transform, rt_doc_r2) PyGSL_TRANSFORM_FD_FUNCTION("halfcomplex_radix2_transform",fft_halfcomplex_radix2_transform, hc_doc_r2) PyGSL_TRANSFORM_FD_FUNCTION("halfcomplex_radix2_inverse", fft_halfcomplex_radix2_inverse, hi_doc_r2) /* helper functions */ {"halfcomplex_radix2_unpack", PyGSL_fft_halfcomplex_radix2_unpack, METH_VARARGS, (char*)un_doc_r2}, {"halfcomplex_radix2_unpack_float", PyGSL_fft_halfcomplex_radix2_unpack_float, METH_VARARGS, (char*)float_doc}, - /* wavelet inits */ + /* wavelet inits */ #ifdef _PYGSL_GSL_HAS_WAVELET PyGSL_WAVELET_TRANSFORM_TYPE(daubechies) PyGSL_WAVELET_TRANSFORM_TYPE(haar) @@ -109,9 +109,9 @@ static PyMethodDef transformMethods[] = { /* - * Set the various function pointers for the different transforms. See the - * structure _pygsl_transform_func_s for the functions. Some architectures do - * not allow to initalise function pointers in static structures on the heap. + * Set the various function pointers for the different transforms. See the + * structure _pygsl_transform_func_s for the functions. Some architectures do + * not allow to initalise function pointers in static structures on the heap. * (some solaris versions? ) */ #define PYGSL_INIT_FUNCS(helpers, space, table, spacet, tablet) \ @@ -121,7 +121,7 @@ static PyMethodDef transformMethods[] = { helpers.table_free = (pygsl_transform_help_t *) gsl_fft_ ## table ## _free; \ helpers.space_type = spacet; \ helpers.table_type = tablet; \ - + #define PYGSL_INIT_FUNCS_DF(helpers, space, table, spacet, tablet) \ PYGSL_INIT_FUNCS(helpers ## _funcs, space, table, spacet, tablet) \ PYGSL_INIT_FUNCS(helpers ## _float ## _funcs, space ## _float, table ## _float, spacet ## _FLOAT, tablet ## _FLOAT) @@ -134,18 +134,18 @@ init_helpers(void) PYGSL_INIT_FUNCS_DF(real, real_workspace, real_wavetable, REAL_WORKSPACE, REAL_WAVETABLE) PYGSL_INIT_FUNCS_DF(halfcomplex, real_workspace, halfcomplex_wavetable, REAL_WORKSPACE, HALFCOMPLEX_WAVETABLE) - DEBUG_MESS(3, "PyArray_FLOAT = %d ", NPY_FLOAT ); + DEBUG_MESS(3, "PyArray_FLOAT = %d ", NPY_FLOAT ); DEBUG_MESS(3, "PyArray_DOUBLE = %d ", NPY_DOUBLE ); DEBUG_MESS(3, "PyArray_CFLOAT = %d ", NPY_CFLOAT ); DEBUG_MESS(3, "PyArray_CDOUBLE = %d ", NPY_CDOUBLE); -#ifdef _PYGSL_GSL_HAS_WAVELET +#ifdef _PYGSL_GSL_HAS_WAVELET DEBUG_MESS(4, "%s @ %p", "daubechies", gsl_wavelet_daubechies); DEBUG_MESS(4, "%s @ %p", "daubechies_centered", gsl_wavelet_daubechies_centered); DEBUG_MESS(4, "%s @ %p", "haar", gsl_wavelet_haar); DEBUG_MESS(4, "%s @ %p", "haar_centered", gsl_wavelet_haar_centered); DEBUG_MESS(4, "%s @ %p", "bspline", gsl_wavelet_bspline); - DEBUG_MESS(4, "%s @ %p", "bspline_centered", gsl_wavelet_bspline_centered); + DEBUG_MESS(4, "%s @ %p", "bspline_centered", gsl_wavelet_bspline_centered); #endif FUNC_MESS_END(); @@ -179,9 +179,9 @@ DL_EXPORT(void) init_transform(void) #endif /* PyGSL_PY3K */ { PyObject *m = NULL, *dict = NULL, *item = NULL; - + FUNC_MESS_BEGIN(); - + if (PyType_Ready(&PyGSL_transform_space_pytype) < 0) return RETVAL; @@ -205,14 +205,14 @@ DL_EXPORT(void) init_transform(void) dict = PyModule_GetDict(m); if (dict == NULL) return RETVAL; - + if (!(item = PyGSL_string_from_string(transform_module_doc))){ - PyErr_SetString(PyExc_ImportError, + PyErr_SetString(PyExc_ImportError, "I could not generate module doc string!"); return RETVAL; } if (PyDict_SetItemString(dict, "__doc__", item) != 0){ - PyErr_SetString(PyExc_ImportError, + PyErr_SetString(PyExc_ImportError, "I could not init doc string!"); return RETVAL; } diff --git a/src/transform/wavelet.c b/src/transform/wavelet.c index fb67831..8bf35f1 100644 --- a/src/transform/wavelet.c +++ b/src/transform/wavelet.c @@ -2,7 +2,7 @@ #include "wavelet.h" -static void +static void PyGSL_wavelet_dealloc(PyGSL_wavelet *self); #define PYGSL_WAVLET_DEF(direction) \ @@ -26,9 +26,9 @@ static PyMethodDef PyGSL_wavelet_methods[] = { {"transform_forward", (PyCFunction)PyGSL_wavelet_forward, METH_VARARGS, (char *)PyGSL_wavelet_forward_doc}, {"transform_inverse", (PyCFunction)PyGSL_wavelet_inverse, METH_VARARGS, (char *)PyGSL_wavelet_inverse_doc}, {"transform2d_forward", (PyCFunction)PyGSL_wavelet2d_forward, METH_VARARGS, (char *)PyGSL_wavelet_forward_doc}, - {"transform2d_inverse", (PyCFunction)PyGSL_wavelet2d_inverse, METH_VARARGS, (char *)PyGSL_wavelet_inverse_doc}, + {"transform2d_inverse", (PyCFunction)PyGSL_wavelet2d_inverse, METH_VARARGS, (char *)PyGSL_wavelet_inverse_doc}, {"nstransform2d_forward", (PyCFunction)PyGSL_wavelet2d_nsforward, METH_VARARGS, (char *)PyGSL_wavelet_forward_doc}, - {"nstransform2d_inverse", (PyCFunction)PyGSL_wavelet2d_nsinverse, METH_VARARGS, (char *)PyGSL_wavelet_inverse_doc}, + {"nstransform2d_inverse", (PyCFunction)PyGSL_wavelet2d_nsinverse, METH_VARARGS, (char *)PyGSL_wavelet_inverse_doc}, {"get_n", (PyCFunction)PyGSL_wavelet_get_n_py, METH_NOARGS, NULL}, {NULL, NULL, 0, NULL} /* sentinel */ }; @@ -40,7 +40,7 @@ PyGSL_wavelet_getattr(PyGSL_wavelet *self, const char * name); #ifdef PyGSL_PY3K static PyTypeObject PyGSL_wavelet_pytype = { - PyObject_HEAD_INIT(NULL) + PyVarObject_HEAD_INIT(NULL, 0) "PyGSL_wavelet", /* tp_name */ sizeof(PyGSL_wavelet), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -95,7 +95,7 @@ PyTypeObject PyGSL_wavelet_pytype = { (setattrfunc) 0, /* tp_setattr "x.attr=v" */ (cmpfunc) 0, /* tp_compare "x > y" */ (reprfunc) 0, /* tp_repr `x`, print x */ - + /* type categories */ 0, /* tp_as_number +,-,*,/,%,&,>>,pow...*/ 0, /* tp_as_sequence +,[i],[i:j],len, ...*/ @@ -121,7 +121,7 @@ typedef int (complex_transform)(gsl_complex_packed_array gsl_fft_complex_workspace * WORK); */ -static void +static void PyGSL_wavelet_dealloc(PyGSL_wavelet *self) { FUNC_MESS_BEGIN(); @@ -231,7 +231,7 @@ PyGSL_wavelet_init(PyObject *self, PyObject *args, const gsl_wavelet_type *type) if((o->wavelet = gsl_wavelet_alloc(type, n)) == NULL){ line = __LINE__ - 1; - /* + /* * If the wrong parameter n is given, it will call PyGSL_ERROR() * and return NULL. I hope it does that in case of no memory as * well. The installed error handler will then call @@ -241,7 +241,7 @@ PyGSL_wavelet_init(PyObject *self, PyObject *args, const gsl_wavelet_type *type) } FUNC_MESS_END(); return (PyObject *) o; - + fail: FUNC_MESS("Fail"); PyGSL_add_traceback(module, filename, __FUNCTION__, line); From 8c27f27f63ee16d121369f42ceb33c2f5729c07b Mon Sep 17 00:00:00 2001 From: Pierre Schnizer Date: Wed, 7 Feb 2024 10:24:48 +0100 Subject: [PATCH 2/4] [TASK] testing solvers : obsolete code marking them as ext2 only. Code to be removed soon --- gsl_packages.py | 55 +++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/gsl_packages.py b/gsl_packages.py index 9aba38f..66cdc87 100644 --- a/gsl_packages.py +++ b/gsl_packages.py @@ -32,7 +32,7 @@ ) -exts.append(SWIG_Extension("hankel", +exts.append(SWIG_Extension("hankel", ["src/hankel/gsl_hankel.i"], swig_include_dirs=["src/hankel"], swig_flags = swig_flags, @@ -40,7 +40,7 @@ define_macros = macros, python_min_version=(2,0), ) - + ) exts.append(SWIG_Extension("sum", @@ -66,7 +66,7 @@ #gsl_min_version=(1,9), define_macros = macros, python_min_version=(2,1), - ) + ) ) flag = 0 @@ -82,7 +82,7 @@ swig_flags = swig_flags, define_macros = macros, python_min_version=(2,1), - ) + ) ) @@ -100,9 +100,9 @@ #gsl_min_version=(1,2), define_macros = macros, python_min_version=(2,1), - ) + ) ) - + flag = 0 try: flag = gsl_features.odeiv2 @@ -213,7 +213,7 @@ python_min_version=(2,1) ) exts.append(pygsl_rng) - + pygsl_ieee=gsl_Extension("ieee", ['src/ieeemodule.c'], gsl_min_version=(1,), @@ -228,14 +228,14 @@ gsl_min_version=(1,0), python_min_version=(2,2) ) -extsOnly2.append(pygsl_histogram) +extsOnly2.append(pygsl_histogram) pygsl_multimin=gsl_Extension("multimin", ['src/multiminmodule.c'], define_macros = macros, gsl_min_version=(1,0), python_min_version=(2,2) ) -extsOnly2.append(pygsl_multimin) +extsOnly2.append(pygsl_multimin) pygsl_qrng=gsl_Extension("_qrng", @@ -259,49 +259,49 @@ define_macros = macros, python_min_version=(2,1) ) -exts.append(pygsl_statistics_uchar) +exts.append(pygsl_statistics_uchar) pygsl_statistics_char=gsl_Extension("statistics.char", ['src/statistics/charmodule.c'], gsl_min_version=(1,), define_macros = macros, python_min_version=(2,1) ) -exts.append(pygsl_statistics_char) +exts.append(pygsl_statistics_char) pygsl_statistics_double=gsl_Extension("statistics.double", ['src/statistics/doublemodule.c'], gsl_min_version=(1,), define_macros = macros, python_min_version=(2,1) ) -exts.append(pygsl_statistics_double) +exts.append(pygsl_statistics_double) pygsl_statistics_float=gsl_Extension("statistics.float", ['src/statistics/floatmodule.c'], gsl_min_version=(1,), define_macros = macros, python_min_version=(2,1) ) -exts.append(pygsl_statistics_float) +exts.append(pygsl_statistics_float) pygsl_statistics_long=gsl_Extension("statistics.long", ['src/statistics/longmodule.c'], gsl_min_version=(1,), define_macros = macros, python_min_version=(2,1) ) -exts.append(pygsl_statistics_long) +exts.append(pygsl_statistics_long) pygsl_statistics_int=gsl_Extension("statistics.int", ['src/statistics/intmodule.c'], gsl_min_version=(1,), define_macros = macros, python_min_version=(2,1) ) -exts.append(pygsl_statistics_int) +exts.append(pygsl_statistics_int) pygsl_statistics_short=gsl_Extension("statistics.short", ['src/statistics/shortmodule.c'], gsl_min_version=(1,), define_macros = macros, python_min_version=(2,1) ) -exts.append(pygsl_statistics_short) +exts.append(pygsl_statistics_short) errortest = gsl_Extension("errortest", ['src/errortestmodule.c'], @@ -318,13 +318,13 @@ gsl_min_version=(1,0), python_min_version=(2,2) ) - exts.append(pygsl_matrix) + exts.append(pygsl_matrix) if BUILD_TESTING: solver=gsl_Extension("testing.multimin", ['testing/src/solvers/multimin.c'], gsl_min_version=(1,), - define_macros = macros, + define_macros = macros, python_min_version=(2,0) ) extsOnly2.append(solver) @@ -332,7 +332,7 @@ solver=gsl_Extension("testing.multiroot", ['testing/src/solvers/multiroot.c'], gsl_min_version=(1,), - define_macros = macros, + define_macros = macros, python_min_version=(2,0) ) extsOnly2.append(solver) @@ -340,7 +340,7 @@ solver=gsl_Extension("testing.multifit_nlin", ['testing/src/solvers/multifit_nlin.c'], gsl_min_version=(1,), - define_macros = macros, + define_macros = macros, python_min_version=(2,0) ) #extsOnly2.append(solver) @@ -348,7 +348,7 @@ solver=gsl_Extension("testing.minimize", ['testing/src/solvers/minimize.c'], gsl_min_version=(1,), - define_macros = macros, + define_macros = macros, python_min_version=(2,0) ) extsOnly2.append(solver) @@ -356,7 +356,7 @@ solver=gsl_Extension("testing.roots", ['testing/src/solvers/roots.c'], gsl_min_version=(1,), - define_macros = macros, + define_macros = macros, python_min_version=(2,0) ) extsOnly2.append(solver) @@ -364,7 +364,7 @@ solver=gsl_Extension("testing.odeiv", ['testing/src/solvers/odeiv.c'], gsl_min_version=(1,), - define_macros = macros, + define_macros = macros, python_min_version=(2,0) ) extsOnly2.append(solver) @@ -372,7 +372,7 @@ #solver=gsl_Extension("testing.monte", # ['testing/src/solvers/monte.c'], # gsl_min_version=(1,), - # define_macros = macros, + # define_macros = macros, # python_min_version=(2,0) # ) #exts.append(solver) @@ -383,7 +383,7 @@ define_macros = macros + [("ONEFILE", 1)], python_min_version=(2,0) ) - exts.append(solver) + extsOnly2.append(solver) #cheb=gsl_Extension("testing.chebyshev", # ['testing/src/solvers/chebyshev.c'], # gsl_min_version=(1,), @@ -399,7 +399,7 @@ define_macros = macros, python_min_version=(2,0) ) - #exts.append(sfarray) + # exts.append(sfarray) sf=gsl_Extension("testing._ufuncs", ['testing/src/sf/sfmodule_testing.c'], gsl_min_version=(1,), @@ -414,6 +414,3 @@ # python_min_version=(2,0) # ) #exts.append(sftest) - - - From b6195d5d6af718118639f6824410517138050da0 Mon Sep 17 00:00:00 2001 From: Pierre Schnizer Date: Wed, 7 Feb 2024 10:23:22 +0100 Subject: [PATCH 3/4] [TASK] moving to PyVarObject_HEAD_INIT fix for python3.12 --- src/qrng_module.c | 218 ++++++++++++++++---------------- src/rng/rngmodule.c | 72 +++++------ src/transform/space.c | 54 ++++---- src/transform/transformmodule.c | 42 +++--- src/transform/wavelet.c | 16 +-- 5 files changed, 201 insertions(+), 201 deletions(-) diff --git a/src/qrng_module.c b/src/qrng_module.c index 0e77853..9ac5dcf 100644 --- a/src/qrng_module.c +++ b/src/qrng_module.c @@ -11,11 +11,11 @@ static PyObject *module = NULL; #ifdef PyGSL_PY3K -#define PyGSL_STRING_AS_STRING(obj) PyBytes_FromString(obj) -#define PyGSL_STRING_LENGTH(obj) PyBytes_Length(obj) +#define PyGSL_STRING_AS_STRING(obj) PyBytes_FromString(obj) +#define PyGSL_STRING_LENGTH(obj) PyBytes_Length(obj) #else -#define PyGSL_STRING_AS_STRING(obj) PyString_AsString(obj) -#define PyGSL_STRING_LENGTH(obj) PyString_Size(obj) +#define PyGSL_STRING_AS_STRING(obj) PyString_AsString(obj) +#define PyGSL_STRING_LENGTH(obj) PyString_Size(obj) #endif @@ -53,90 +53,90 @@ PyObject* qrng_type_getattr(PyGSL_qrng_type *self, char *name) { if(strcmp(name, "__doc__") == 0){ - return PyGSL_get_docobject_for_object(self->py_name); + return PyGSL_get_docobject_for_object(self->py_name); }else{ - Py_INCREF(Py_None); - return Py_None; - } + Py_INCREF(Py_None); + return Py_None; + } } */ #ifdef PyGSL_PY3K static PyTypeObject PyGSL_qrng_pytype = { - PyObject_HEAD_INIT(NULL) - "PyGSL_qrng", /* tp_name */ - sizeof(PyGSL_qrng), /* tp_basicsize */ - 0, /* tp_itemsize */ - (destructor) qrng_delete, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_reserved */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - (ternaryfunc) qrng_get, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT, /* tp_flags */ - (char *)0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - qrng_methods, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - 0, /* tp_init */ - 0, /* tp_alloc */ - 0, /* tp_new */ + PyVarObject_HEAD_INIT(NULL, 0) + "PyGSL_qrng", /* tp_name */ + sizeof(PyGSL_qrng), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor) qrng_delete, /* tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + 0, /* tp_reserved */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + (ternaryfunc) qrng_get, /* tp_call */ + 0, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + (char *)0, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + qrng_methods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ }; #else /* PyGSL_PY3K */ -static PyObject * /* on "instance.attr" */ +static PyObject * /* on "instance.attr" */ qrng_getattr (PyGSL_qrng *self, char *name); static PyTypeObject PyGSL_qrng_pytype = { - PyObject_HEAD_INIT(NULL) /* fix up the type slot in initcrng */ - 0, /* ob_size */ - "PyGSL_qrng", /* tp_name */ - sizeof(PyGSL_qrng), /* tp_basicsize */ - 0, /* tp_itemsize */ + PyObject_HEAD_INIT(NULL) /* fix up the type slot in initcrng */ + 0, /* ob_size */ + "PyGSL_qrng", /* tp_name */ + sizeof(PyGSL_qrng), /* tp_basicsize */ + 0, /* tp_itemsize */ /* standard methods */ (destructor) qrng_delete, /* tp_dealloc ref-count==0 */ - (printfunc) 0, /* tp_print "print x" */ + (printfunc) 0, /* tp_print "print x" */ (getattrfunc) qrng_getattr, /* tp_getattr "x.attr" */ - (setattrfunc) 0, /* tp_setattr "x.attr=v" */ - (cmpfunc) 0, /* tp_compare "x > y" */ + (setattrfunc) 0, /* tp_setattr "x.attr=v" */ + (cmpfunc) 0, /* tp_compare "x > y" */ (reprfunc) 0, /* tp_repr `x`, print x */ /* type categories */ - 0, /* tp_as_number +,-,*,/,%,&,>>,pow...*/ - 0, /* tp_as_sequence +,[i],[i:j],len, ...*/ - 0, /* tp_as_mapping [key], len, ...*/ + 0, /* tp_as_number +,-,*,/,%,&,>>,pow...*/ + 0, /* tp_as_sequence +,[i],[i:j],len, ...*/ + 0, /* tp_as_mapping [key], len, ...*/ /* more methods */ - (hashfunc) 0, /* tp_hash "dict[x]" */ + (hashfunc) 0, /* tp_hash "dict[x]" */ (ternaryfunc) qrng_get, /* tp_call "x()" */ (reprfunc) 0, /* tp_str "str(x)" */ - (getattrofunc) 0, /* tp_getattro */ - (setattrofunc) 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - 0L, /* tp_flags */ - 0 /* tp_doc */ + (getattrofunc) 0, /* tp_getattro */ + (setattrofunc) 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + 0L, /* tp_flags */ + 0 /* tp_doc */ }; -static PyObject * /* on "instance.attr" */ +static PyObject * /* on "instance.attr" */ qrng_getattr (PyGSL_qrng *self, char *name){ PyObject *tmp = NULL; @@ -144,12 +144,12 @@ qrng_getattr (PyGSL_qrng *self, char *name){ /* if(strcmp(name, "__doc__") == 0) - return PyGSL_get_docobject_for_object("qrng.qrng"); + return PyGSL_get_docobject_for_object("qrng.qrng"); */ tmp = Py_FindMethod(qrng_methods, (PyObject *) self, name); - if(NULL == tmp){ - PyGSL_add_traceback(module, __FILE__, "qrng.__attr__", __LINE__ - 1); - return NULL; + if(NULL == tmp){ + PyGSL_add_traceback(module, __FILE__, "qrng.__attr__", __LINE__ - 1); + return NULL; } return tmp; @@ -158,7 +158,7 @@ qrng_getattr (PyGSL_qrng *self, char *name){ #endif /* PyGSL_PY3K */ - + static PyObject * qrng_get(PyGSL_qrng *self, PyObject *args) { @@ -171,13 +171,13 @@ qrng_get(PyGSL_qrng *self, PyObject *args) FUNC_MESS_BEGIN(); assert(PyGSLQRng_Check(self)); if(0 == PyArg_ParseTuple(args, "|i", &dimension)){ - goto fail; + goto fail; } if(dimension <= 0){ - lineno = __LINE__ - 1; - PyErr_SetString(PyExc_ValueError, - "The sample number must be positive!"); - goto fail; + lineno = __LINE__ - 1; + PyErr_SetString(PyExc_ValueError, + "The sample number must be positive!"); + goto fail; } dims[0] = dimension; dims[1] = self->qrng->dimension; @@ -188,10 +188,10 @@ qrng_get(PyGSL_qrng *self, PyObject *args) assert((PyArray_STRIDE(a_array, 1) / sizeof(double)) == 1); for(i=0; iqrng, data); + DEBUG_MESS(6, "Setting slice %d", i); + data = (double *) (PyArray_GETPTR1(a_array, i)); + DEBUG_MESS(6, "Data at %p", (void *) data); + gsl_qrng_get(self->qrng, data); } FUNC_MESS_END(); @@ -230,7 +230,7 @@ qrng_name(PyGSL_qrng *self, PyObject *args) { assert(PyGSLQRng_Check(self)); if(0 == PyArg_ParseTuple(args, ":name")) - return NULL; + return NULL; return PyGSL_string_from_string(gsl_qrng_name(self->qrng)); } @@ -240,7 +240,7 @@ qrng_clone(PyGSL_qrng *self, PyObject *args) PyGSL_qrng * qrng; assert(PyGSLQRng_Check(self)); if(0 == PyArg_ParseTuple(args, ":clone")) - return NULL; + return NULL; qrng = (PyGSL_qrng *) PyObject_NEW(PyGSL_qrng, &PyGSL_qrng_pytype); qrng->qrng = gsl_qrng_clone(self->qrng); return (PyObject *) qrng; @@ -257,42 +257,42 @@ PyGSL_qrng_init(PyObject *self, PyObject *args, const gsl_qrng_type * qrng_type) FUNC_MESS_BEGIN(); if(qrng_type == NULL){ - PyGSL_add_traceback(module, __FILE__, "qrng.__init__", __LINE__ - 2); - return NULL; + PyGSL_add_traceback(module, __FILE__, "qrng.__init__", __LINE__ - 2); + return NULL; } if (0 == PyArg_ParseTuple(args, "i:qrng.__init__", &dimension)){ - PyGSL_add_traceback(module, __FILE__, "qrng.__init__", __LINE__ - 2); - return NULL; + PyGSL_add_traceback(module, __FILE__, "qrng.__init__", __LINE__ - 2); + return NULL; } if (dimension <= 0){ - PyErr_SetString(PyExc_ValueError, "The sample number must be positive!"); - PyGSL_add_traceback(module, __FILE__, "qrng.__init__", __LINE__ - 2); - return NULL; + PyErr_SetString(PyExc_ValueError, "The sample number must be positive!"); + PyGSL_add_traceback(module, __FILE__, "qrng.__init__", __LINE__ - 2); + return NULL; } qrng = (PyGSL_qrng *) PyObject_NEW(PyGSL_qrng, &PyGSL_qrng_pytype); if(qrng == NULL){ - return NULL; + return NULL; } qrng->qrng = NULL; qrng->qrng = gsl_qrng_alloc(qrng_type, dimension); /* XXX handle failure in allocation of qrng! ... */ - + FUNC_MESS_END(); return (PyObject *) qrng; } -#define RNG_ARNG(name) \ +#define RNG_ARNG(name) \ static PyObject* PyGSL_qrng_init_ ## name (PyObject *self, PyObject *args) \ { \ PyObject *tmp = NULL; \ FUNC_MESS_BEGIN(); \ tmp = PyGSL_qrng_init(self, args, gsl_qrng_ ## name); \ if (tmp == NULL){ \ - PyGSL_add_traceback(module, __FILE__, __FUNCTION__, __LINE__); \ + PyGSL_add_traceback(module, __FILE__, __FUNCTION__, __LINE__); \ } \ FUNC_MESS_END(); \ return tmp; \ @@ -303,10 +303,10 @@ RNG_ARNG(sobol) static PyMethodDef PyGSL_qrng_module_functions[] = { - {"niederreiter_2", PyGSL_qrng_init_niederreiter_2, METH_VARARGS, NULL}, - {"sobol", PyGSL_qrng_init_sobol, METH_VARARGS, NULL}, - {NULL, 0, 0, NULL} -}; + {"niederreiter_2", PyGSL_qrng_init_niederreiter_2, METH_VARARGS, NULL}, + {"sobol", PyGSL_qrng_init_sobol, METH_VARARGS, NULL}, + {NULL, 0, 0, NULL} +}; #ifdef PyGSL_PY3K static struct PyModuleDef moduledef = { @@ -314,7 +314,7 @@ static struct PyModuleDef moduledef = { "_qrng", NULL, -1, - PyGSL_qrng_module_functions, + PyGSL_qrng_module_functions, NULL, NULL, NULL, @@ -336,26 +336,26 @@ DL_EXPORT(void) init_qrng(void) #define RETVAL #endif /* PyGSL_PY3K */ { - PyObject *m = NULL; + PyObject *m = NULL; + + init_pygsl(); - init_pygsl(); - #ifdef PyGSL_PY3K - m = PyModule_Create(&moduledef); + m = PyModule_Create(&moduledef); #else /* PyGSL_PY3K */ - m = Py_InitModule("_qrng", PyGSL_qrng_module_functions); + m = Py_InitModule("_qrng", PyGSL_qrng_module_functions); #endif - assert(m); - /* create_qrng_types(m); */ - module = m; + assert(m); + /* create_qrng_types(m); */ + module = m; #ifdef PyGSL_PY3K - if (PyType_Ready(&PyGSL_qrng_pytype) < 0) - return NULL; + if (PyType_Ready(&PyGSL_qrng_pytype) < 0) + return NULL; #else /* PyGSL_PY3K */ - PyGSL_qrng_pytype.ob_type = &PyType_Type; + PyGSL_qrng_pytype.ob_type = &PyType_Type; #endif /* PyGSL_PY3K */ - + return RETVAL; } diff --git a/src/rng/rngmodule.c b/src/rng/rngmodule.c index 47ad09f..c0fdd2c 100644 --- a/src/rng/rngmodule.c +++ b/src/rng/rngmodule.c @@ -35,7 +35,7 @@ static PyObject * rng_call(PyGSL_rng *self, PyObject *args); static void rng_delete(PyGSL_rng *self); -static PyObject * +static PyObject * rng_call (PyGSL_rng *self, PyObject *args); static PyObject * rng_get(PyGSL_rng *self, PyObject *args); @@ -52,7 +52,7 @@ static PyObject * rng_name(PyGSL_rng *self, PyObject *args); static PyObject * rng_clone(PyGSL_rng *self, PyObject *args); #define RNG_DISTRIBUTION(name, function) \ -static PyObject* rng_ ## name (PyGSL_rng *self, PyObject *args); +static PyObject* rng_ ## name (PyGSL_rng *self, PyObject *args); #include "rng_distributions.h" #undef RNG_DISTRIBUTION @@ -117,7 +117,7 @@ static struct PyMethodDef rng_methods[] = { {"hypergeometric",(PyCFunction)rng_hypergeometric,METH_VARARGS, rng_hypergeometric_doc}, {"logarithmic",(PyCFunction)rng_logarithmic,METH_VARARGS, rng_logarithmic_doc}, {"landau",(PyCFunction)rng_landau,METH_VARARGS, rng_landau_doc}, - {"erlang",(PyCFunction)rng_erlang,METH_VARARGS, NULL}, + {"erlang",(PyCFunction)rng_erlang,METH_VARARGS, NULL}, {"multinomial",(PyCFunction)rng_multinomial,METH_VARARGS, multinomial_doc}, {"dirichlet",(PyCFunction)rng_dirichlet,METH_VARARGS, rng_dirichlet_doc}, {NULL, NULL} @@ -126,7 +126,7 @@ static struct PyMethodDef rng_methods[] = { #ifdef PyGSL_PY3K static PyTypeObject PyGSL_rng_pytype = { - PyObject_HEAD_INIT(NULL) + PyVarObject_HEAD_INIT(NULL, 0) "PyGSL_rng", /* tp_name */ sizeof(PyGSL_rng), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -240,16 +240,16 @@ static PyObject* PyGSL_rng_init_ ## name (PyObject *self, PyObject *args) \ #include "rng_list.h" static PyObject * -PyGSL_rng_init_default(PyObject *self, PyObject *args) -{ - PyObject *tmp = NULL; - FUNC_MESS_BEGIN(); - tmp = PyGSL_rng_init(self, args, NULL); - if (tmp == NULL){ +PyGSL_rng_init_default(PyObject *self, PyObject *args) +{ + PyObject *tmp = NULL; + FUNC_MESS_BEGIN(); + tmp = PyGSL_rng_init(self, args, NULL); + if (tmp == NULL){ PyGSL_add_traceback(module, __FILE__, __FUNCTION__, __LINE__ - 1); - } - FUNC_MESS_END(); - return tmp; + } + FUNC_MESS_END(); + return tmp; } @@ -345,7 +345,7 @@ rng_set(PyGSL_rng *self, PyObject *args) if(!seed){lineno = __LINE__ - 1; goto fail;} useed = PyLong_AsUnsignedLong(seed); gsl_rng_set(self->rng, useed); - + Py_INCREF(Py_None); FUNC_MESS_END(); return Py_None; @@ -439,9 +439,9 @@ rng_getattr(PyGSL_rng *self, char *name) FUNC_MESS_BEGIN(); assert(PyGSL_RNG_Check(self)); - + tmp = Py_FindMethod(rng_methods, (PyObject *) self, name); - if(NULL == tmp){ + if(NULL == tmp){ PyGSL_add_traceback(module, __FILE__, "rng.__attr__", __LINE__ - 1); return NULL; } @@ -478,10 +478,10 @@ rng_create_list(PyObject *self, PyObject *args) item = PyGSL_string_from_string(tmp); if(item == NULL) goto fail; - + Py_INCREF(item); assert(item); - + if(PyList_Append(list, item) != 0) goto fail; thisRNGType++; @@ -514,17 +514,17 @@ static PyObject* rng_ ## name ## _pdf (PyObject *self, PyObject *args) \ #include "rng_distributions.h" -static PyObject* rng_dirichlet_lnpdf (PyObject *self, PyObject *args) -{ +static PyObject* rng_dirichlet_lnpdf (PyObject *self, PyObject *args) +{ PyObject *tmp; FUNC_MESS_BEGIN(); - tmp = PyGSL_pdf_dA_to_dA(self, args, gsl_ran_dirichlet_lnpdf); + tmp = PyGSL_pdf_dA_to_dA(self, args, gsl_ran_dirichlet_lnpdf); FUNC_MESS_END(); return tmp; } static PyObject* rng_multinomial_lnpdf (PyObject *self, PyObject *args) -{ +{ PyObject *tmp; FUNC_MESS_BEGIN(); tmp = PyGSL_pdf_uidA_to_uiA(self, args, gsl_ran_multinomial_lnpdf); @@ -533,7 +533,7 @@ static PyObject* rng_multinomial_lnpdf (PyObject *self, PyObject *args) } -static const char rng_env_setup_doc[] = +static const char rng_env_setup_doc[] = "This function reads the environment variables `GSL_RNG_TYPE' and\n\ `GSL_RNG_SEED'.\n\ The environment variable `GSL_RNG_TYPE' should be the name of a\n\ @@ -648,18 +648,18 @@ static PyMethodDef PyGSL_rng_module_functions[] = { {"pascal_pdf",rng_pascal_pdf,METH_VARARGS, rng_pascal_pdf_doc}, {"geometric_pdf",rng_geometric_pdf,METH_VARARGS, rng_geometric_pdf_doc}, {"hypergeometric_pdf",rng_hypergeometric_pdf,METH_VARARGS, rng_hypergeometric_pdf_doc}, - {"logarithmic_pdf",rng_logarithmic_pdf,METH_VARARGS, rng_logarithmic_pdf_doc}, - {"landau_pdf",rng_landau_pdf,METH_VARARGS, rng_landau_pdf_doc}, + {"logarithmic_pdf",rng_logarithmic_pdf,METH_VARARGS, rng_logarithmic_pdf_doc}, + {"landau_pdf",rng_landau_pdf,METH_VARARGS, rng_landau_pdf_doc}, {"erlang_pdf",rng_erlang_pdf,METH_VARARGS, NULL}, - {"multinomial_pdf",rng_multinomial_pdf,METH_VARARGS,multinomial_pdf_doc}, + {"multinomial_pdf",rng_multinomial_pdf,METH_VARARGS,multinomial_pdf_doc}, {"dirichlet_pdf",rng_dirichlet_pdf,METH_VARARGS, rng_dirichlet_pdf_doc}, - {"multinomial_lnpdf",rng_multinomial_lnpdf,METH_VARARGS, NULL}, + {"multinomial_lnpdf",rng_multinomial_lnpdf,METH_VARARGS, NULL}, {"dirichlet_lnpdf",rng_dirichlet_lnpdf,METH_VARARGS, rng_dirichlet_lnpdf_doc}, {"env_setup",PyGSL_rng_env_setup,METH_NOARGS, (char*) rng_env_setup_doc}, {NULL, NULL, 0} /* Sentinel */ }; -static void +static void set_api_pointer(void) { @@ -710,7 +710,7 @@ DL_EXPORT(void) initrng(void) if(m == NULL) return RETVAL; - + assert(m); /* import_array(); */ init_pygsl(); @@ -721,14 +721,14 @@ DL_EXPORT(void) initrng(void) dict = PyModule_GetDict(m); if(!dict) goto fail; - + if (!(item = PyGSL_string_from_string(rng_module_doc))){ - PyErr_SetString(PyExc_ImportError, + PyErr_SetString(PyExc_ImportError, "I could not generate module doc string!"); goto fail; } if (PyDict_SetItemString(dict, "__doc__", item) != 0){ - PyErr_SetString(PyExc_ImportError, + PyErr_SetString(PyExc_ImportError, "I could not init doc string!"); goto fail; } @@ -745,16 +745,16 @@ DL_EXPORT(void) initrng(void) api = PyCapsule_New((void *) PyGSL_API, _PyGSL_RNG_API_CAP, NULL); if(api == NULL) goto fail; - + assert(api); if (PyDict_SetItemString(dict, "_PYGSL_RNG_API", api) != 0){ - PyErr_SetString(PyExc_ImportError, + PyErr_SetString(PyExc_ImportError, "I could not add _PYGSL_RNG_API!"); goto fail; } - + return RETVAL; - + fail: if(!PyErr_Occurred()){ PyErr_SetString(PyExc_ImportError, "I could not init rng module!"); diff --git a/src/transform/space.c b/src/transform/space.c index a9190a1..2d6a1c9 100644 --- a/src/transform/space.c +++ b/src/transform/space.c @@ -61,7 +61,7 @@ static PyMethodDef PyGSL_transform_generic_methods[] = { #ifdef PyGSL_PY3K static PyTypeObject PyGSL_transform_space_pytype = { - PyObject_HEAD_INIT(NULL) + PyVarObject_HEAD_INIT(NULL, 0) "PyGSL_transform_space", /* tp_name */ sizeof(PyGSL_transform_space), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -150,7 +150,7 @@ PyGSL_transform_space_get_n(PyGSL_transform_space *self) case REAL_WORKSPACE: n = self->space.rws ->n; break; case COMPLEX_WAVETABLE: n = self->space.cwt ->n; break; case REAL_WAVETABLE: n = self->space.rwt ->n; break; - case HALFCOMPLEX_WAVETABLE: n = self->space.hcwt->n; break; + case HALFCOMPLEX_WAVETABLE: n = self->space.hcwt->n; break; case COMPLEX_WORKSPACE_FLOAT: n = self->space.cwsf ->n; break; case REAL_WORKSPACE_FLOAT: n = self->space.rwsf ->n; break; case COMPLEX_WAVETABLE_FLOAT: n = self->space.cwtf ->n; break; @@ -179,10 +179,10 @@ static PyObject * PyGSL_transform_space_get_factors(PyGSL_transform_space *self, PyObject *args) { - PyGSL_array_index_t nf, i; + PyGSL_array_index_t nf, i; long *data=NULL; size_t *cp_data=NULL; - PyArrayObject * a_array = NULL; + PyArrayObject * a_array = NULL; int lineno; FUNC_MESS_BEGIN(); @@ -192,14 +192,14 @@ PyGSL_transform_space_get_factors(PyGSL_transform_space *self, PyObject *args) switch(self->type){ case COMPLEX_WAVETABLE: nf = self->space.cwt ->nf; cp_data = self->space.cwt ->factor; break; case REAL_WAVETABLE: nf = self->space.rwt ->nf; cp_data = self->space.rwt ->factor; break; - case HALFCOMPLEX_WAVETABLE: nf = self->space.hcwt->nf; cp_data = self->space.hcwt->factor; break; + case HALFCOMPLEX_WAVETABLE: nf = self->space.hcwt->nf; cp_data = self->space.hcwt->factor; break; case COMPLEX_WAVETABLE_FLOAT: nf = self->space.cwtf ->nf; cp_data = self->space.cwtf ->factor; break; case REAL_WAVETABLE_FLOAT: nf = self->space.rwtf ->nf; cp_data = self->space.rwtf ->factor; break; - case HALFCOMPLEX_WAVETABLE_FLOAT: nf = self->space.hcwtf->nf; cp_data = self->space.hcwtf->factor; break; - default: + case HALFCOMPLEX_WAVETABLE_FLOAT: nf = self->space.hcwtf->nf; cp_data = self->space.hcwtf->factor; break; + default: lineno = __LINE__ - 1; - pygsl_error("Got unknown switch", filename, lineno, GSL_ESANITY); - goto fail; + pygsl_error("Got unknown switch", filename, lineno, GSL_ESANITY); + goto fail; break; } @@ -211,7 +211,7 @@ PyGSL_transform_space_get_factors(PyGSL_transform_space *self, PyObject *args) data = (long *) PyArray_DATA(a_array); - + for(i=0; itype){ case COMPLEX_WORKSPACE: - case REAL_WORKSPACE: + case REAL_WORKSPACE: case COMPLEX_WORKSPACE_FLOAT: case REAL_WORKSPACE_FLOAT: tmp = PyGSL_transform_space_get_factors(self, args); @@ -283,7 +283,7 @@ PyGSL_transform_generic_get_factors(PyGSL_transform_space *self, PyObject *args) } FUNC_MESS_END(); return tmp; - + } @@ -306,10 +306,10 @@ PyGSL_transform_space_getattr(PyGSL_transform_space *self, char *name) { PyObject *tmp = NULL; FUNC_MESS_BEGIN(); - assert(PyGSL_transform_space_check(self)); + assert(PyGSL_transform_space_check(self)); switch(self->type){ case COMPLEX_WORKSPACE: - case REAL_WORKSPACE: + case REAL_WORKSPACE: case COMPLEX_WORKSPACE_FLOAT: case REAL_WORKSPACE_FLOAT: tmp = Py_FindMethod(PyGSL_transform_space_methods, (PyObject *) self, name); @@ -325,7 +325,7 @@ static void PyGSL_transform_space_dealloc(PyGSL_transform_space * self) { FUNC_MESS_BEGIN(); - assert(PyGSL_transform_space_check(self)); + assert(PyGSL_transform_space_check(self)); assert(self->space.v); switch(self->type){ case COMPLEX_WORKSPACE: gsl_fft_complex_workspace_free(self->space.cws); break; @@ -350,7 +350,7 @@ PyGSL_transform_space_dealloc(PyGSL_transform_space * self) -static PyObject* +static PyObject* PyGSL_transform_space_init(PyObject *self, PyObject *args, const enum pygsl_transform_space_type type) { PyGSL_transform_space *o=NULL; @@ -371,11 +371,11 @@ PyGSL_transform_space_init(PyObject *self, PyObject *args, const enum pygsl_tran } o->type = type; switch(type){ - case COMPLEX_WORKSPACE: o->space.cws = gsl_fft_complex_workspace_alloc(n); break; - case COMPLEX_WAVETABLE: o->space.cwt = gsl_fft_complex_wavetable_alloc(n); break; - case REAL_WORKSPACE: o->space.rws = gsl_fft_real_workspace_alloc(n); break; - case REAL_WAVETABLE: o->space.rwt = gsl_fft_real_wavetable_alloc(n); break; - case HALFCOMPLEX_WAVETABLE: o->space.hcwt = gsl_fft_halfcomplex_wavetable_alloc(n); break; + case COMPLEX_WORKSPACE: o->space.cws = gsl_fft_complex_workspace_alloc(n); break; + case COMPLEX_WAVETABLE: o->space.cwt = gsl_fft_complex_wavetable_alloc(n); break; + case REAL_WORKSPACE: o->space.rws = gsl_fft_real_workspace_alloc(n); break; + case REAL_WAVETABLE: o->space.rwt = gsl_fft_real_wavetable_alloc(n); break; + case HALFCOMPLEX_WAVETABLE: o->space.hcwt = gsl_fft_halfcomplex_wavetable_alloc(n); break; case COMPLEX_WORKSPACE_FLOAT: o->space.cwsf = gsl_fft_complex_workspace_float_alloc(n); break; case COMPLEX_WAVETABLE_FLOAT: o->space.cwtf = gsl_fft_complex_wavetable_float_alloc(n); break; case REAL_WORKSPACE_FLOAT: o->space.rwsf = gsl_fft_real_workspace_float_alloc(n); break; @@ -398,16 +398,16 @@ static PyObject * \ PyGSL_transform_space_init_ ## TYPE (PyObject *self, PyObject *args)\ { \ return PyGSL_transform_space_init(self, args, TYPE); \ -} +} PyGSL_SPACE_ALLOC(COMPLEX_WORKSPACE) PyGSL_SPACE_ALLOC(COMPLEX_WAVETABLE) -PyGSL_SPACE_ALLOC(REAL_WORKSPACE) +PyGSL_SPACE_ALLOC(REAL_WORKSPACE) PyGSL_SPACE_ALLOC(REAL_WAVETABLE) PyGSL_SPACE_ALLOC(HALFCOMPLEX_WAVETABLE) PyGSL_SPACE_ALLOC(COMPLEX_WORKSPACE_FLOAT) PyGSL_SPACE_ALLOC(COMPLEX_WAVETABLE_FLOAT) -PyGSL_SPACE_ALLOC(REAL_WORKSPACE_FLOAT) +PyGSL_SPACE_ALLOC(REAL_WORKSPACE_FLOAT) PyGSL_SPACE_ALLOC(REAL_WAVETABLE_FLOAT) PyGSL_SPACE_ALLOC(HALFCOMPLEX_WAVETABLE_FLOAT) diff --git a/src/transform/transformmodule.c b/src/transform/transformmodule.c index fa76fc6..627831e 100644 --- a/src/transform/transformmodule.c +++ b/src/transform/transformmodule.c @@ -43,9 +43,9 @@ static const char filename[] = __FILE__; #include "space.c" /* Function to copy the different arrays. */ #include "arraycopy.c" -/* +/* * Macros and functions which set the information up and call the - * PyGSL_transform functions + * PyGSL_transform functions */ #include "fft.c" /* @@ -60,7 +60,7 @@ static const char filename[] = __FILE__; #define PyGSL_WAVELET_TRANSFORM_TYPE(name) #endif /* - * The real workers. + * The real workers. */ #include "core.c" @@ -81,24 +81,24 @@ static PyMethodDef transformMethods[] = { #endif /* transform functions */ PyGSL_TRANSFORM_FD_FUNCTION("complex_forward", fft_complex_forward, cf_doc) - PyGSL_TRANSFORM_FD_FUNCTION("complex_backward", fft_complex_backward, cb_doc) - PyGSL_TRANSFORM_FD_FUNCTION("complex_inverse", fft_complex_inverse, ci_doc) - PyGSL_TRANSFORM_FD_FUNCTION("complex_radix2_forward", fft_complex_radix2_forward, cf_doc_r2) + PyGSL_TRANSFORM_FD_FUNCTION("complex_backward", fft_complex_backward, cb_doc) + PyGSL_TRANSFORM_FD_FUNCTION("complex_inverse", fft_complex_inverse, ci_doc) + PyGSL_TRANSFORM_FD_FUNCTION("complex_radix2_forward", fft_complex_radix2_forward, cf_doc_r2) PyGSL_TRANSFORM_FD_FUNCTION("complex_radix2_backward", fft_complex_radix2_backward, cb_doc_r2) PyGSL_TRANSFORM_FD_FUNCTION("complex_radix2_inverse", fft_complex_radix2_inverse, ci_doc_r2) PyGSL_TRANSFORM_FD_FUNCTION("complex_radix2_dif_forward", fft_complex_radix2_dif_forward, cf_doc_r2_dif) PyGSL_TRANSFORM_FD_FUNCTION("complex_radix2_dif_backward", fft_complex_radix2_dif_backward, cb_doc_r2_dif) PyGSL_TRANSFORM_FD_FUNCTION("complex_radix2_dif_inverse", fft_complex_radix2_dif_inverse, ci_doc_r2_dif) - PyGSL_TRANSFORM_FD_FUNCTION("real_transform", fft_real_transform, rt_doc) + PyGSL_TRANSFORM_FD_FUNCTION("real_transform", fft_real_transform, rt_doc) PyGSL_TRANSFORM_FD_FUNCTION("halfcomplex_transform", fft_halfcomplex_transform, hc_doc) PyGSL_TRANSFORM_FD_FUNCTION("halfcomplex_inverse", fft_halfcomplex_inverse, hi_doc) - PyGSL_TRANSFORM_FD_FUNCTION("real_radix2_transform", fft_real_radix2_transform, rt_doc_r2) + PyGSL_TRANSFORM_FD_FUNCTION("real_radix2_transform", fft_real_radix2_transform, rt_doc_r2) PyGSL_TRANSFORM_FD_FUNCTION("halfcomplex_radix2_transform",fft_halfcomplex_radix2_transform, hc_doc_r2) PyGSL_TRANSFORM_FD_FUNCTION("halfcomplex_radix2_inverse", fft_halfcomplex_radix2_inverse, hi_doc_r2) /* helper functions */ {"halfcomplex_radix2_unpack", PyGSL_fft_halfcomplex_radix2_unpack, METH_VARARGS, (char*)un_doc_r2}, {"halfcomplex_radix2_unpack_float", PyGSL_fft_halfcomplex_radix2_unpack_float, METH_VARARGS, (char*)float_doc}, - /* wavelet inits */ + /* wavelet inits */ #ifdef _PYGSL_GSL_HAS_WAVELET PyGSL_WAVELET_TRANSFORM_TYPE(daubechies) PyGSL_WAVELET_TRANSFORM_TYPE(haar) @@ -109,9 +109,9 @@ static PyMethodDef transformMethods[] = { /* - * Set the various function pointers for the different transforms. See the - * structure _pygsl_transform_func_s for the functions. Some architectures do - * not allow to initalise function pointers in static structures on the heap. + * Set the various function pointers for the different transforms. See the + * structure _pygsl_transform_func_s for the functions. Some architectures do + * not allow to initalise function pointers in static structures on the heap. * (some solaris versions? ) */ #define PYGSL_INIT_FUNCS(helpers, space, table, spacet, tablet) \ @@ -121,7 +121,7 @@ static PyMethodDef transformMethods[] = { helpers.table_free = (pygsl_transform_help_t *) gsl_fft_ ## table ## _free; \ helpers.space_type = spacet; \ helpers.table_type = tablet; \ - + #define PYGSL_INIT_FUNCS_DF(helpers, space, table, spacet, tablet) \ PYGSL_INIT_FUNCS(helpers ## _funcs, space, table, spacet, tablet) \ PYGSL_INIT_FUNCS(helpers ## _float ## _funcs, space ## _float, table ## _float, spacet ## _FLOAT, tablet ## _FLOAT) @@ -134,18 +134,18 @@ init_helpers(void) PYGSL_INIT_FUNCS_DF(real, real_workspace, real_wavetable, REAL_WORKSPACE, REAL_WAVETABLE) PYGSL_INIT_FUNCS_DF(halfcomplex, real_workspace, halfcomplex_wavetable, REAL_WORKSPACE, HALFCOMPLEX_WAVETABLE) - DEBUG_MESS(3, "PyArray_FLOAT = %d ", NPY_FLOAT ); + DEBUG_MESS(3, "PyArray_FLOAT = %d ", NPY_FLOAT ); DEBUG_MESS(3, "PyArray_DOUBLE = %d ", NPY_DOUBLE ); DEBUG_MESS(3, "PyArray_CFLOAT = %d ", NPY_CFLOAT ); DEBUG_MESS(3, "PyArray_CDOUBLE = %d ", NPY_CDOUBLE); -#ifdef _PYGSL_GSL_HAS_WAVELET +#ifdef _PYGSL_GSL_HAS_WAVELET DEBUG_MESS(4, "%s @ %p", "daubechies", gsl_wavelet_daubechies); DEBUG_MESS(4, "%s @ %p", "daubechies_centered", gsl_wavelet_daubechies_centered); DEBUG_MESS(4, "%s @ %p", "haar", gsl_wavelet_haar); DEBUG_MESS(4, "%s @ %p", "haar_centered", gsl_wavelet_haar_centered); DEBUG_MESS(4, "%s @ %p", "bspline", gsl_wavelet_bspline); - DEBUG_MESS(4, "%s @ %p", "bspline_centered", gsl_wavelet_bspline_centered); + DEBUG_MESS(4, "%s @ %p", "bspline_centered", gsl_wavelet_bspline_centered); #endif FUNC_MESS_END(); @@ -179,9 +179,9 @@ DL_EXPORT(void) init_transform(void) #endif /* PyGSL_PY3K */ { PyObject *m = NULL, *dict = NULL, *item = NULL; - + FUNC_MESS_BEGIN(); - + if (PyType_Ready(&PyGSL_transform_space_pytype) < 0) return RETVAL; @@ -205,14 +205,14 @@ DL_EXPORT(void) init_transform(void) dict = PyModule_GetDict(m); if (dict == NULL) return RETVAL; - + if (!(item = PyGSL_string_from_string(transform_module_doc))){ - PyErr_SetString(PyExc_ImportError, + PyErr_SetString(PyExc_ImportError, "I could not generate module doc string!"); return RETVAL; } if (PyDict_SetItemString(dict, "__doc__", item) != 0){ - PyErr_SetString(PyExc_ImportError, + PyErr_SetString(PyExc_ImportError, "I could not init doc string!"); return RETVAL; } diff --git a/src/transform/wavelet.c b/src/transform/wavelet.c index fb67831..8bf35f1 100644 --- a/src/transform/wavelet.c +++ b/src/transform/wavelet.c @@ -2,7 +2,7 @@ #include "wavelet.h" -static void +static void PyGSL_wavelet_dealloc(PyGSL_wavelet *self); #define PYGSL_WAVLET_DEF(direction) \ @@ -26,9 +26,9 @@ static PyMethodDef PyGSL_wavelet_methods[] = { {"transform_forward", (PyCFunction)PyGSL_wavelet_forward, METH_VARARGS, (char *)PyGSL_wavelet_forward_doc}, {"transform_inverse", (PyCFunction)PyGSL_wavelet_inverse, METH_VARARGS, (char *)PyGSL_wavelet_inverse_doc}, {"transform2d_forward", (PyCFunction)PyGSL_wavelet2d_forward, METH_VARARGS, (char *)PyGSL_wavelet_forward_doc}, - {"transform2d_inverse", (PyCFunction)PyGSL_wavelet2d_inverse, METH_VARARGS, (char *)PyGSL_wavelet_inverse_doc}, + {"transform2d_inverse", (PyCFunction)PyGSL_wavelet2d_inverse, METH_VARARGS, (char *)PyGSL_wavelet_inverse_doc}, {"nstransform2d_forward", (PyCFunction)PyGSL_wavelet2d_nsforward, METH_VARARGS, (char *)PyGSL_wavelet_forward_doc}, - {"nstransform2d_inverse", (PyCFunction)PyGSL_wavelet2d_nsinverse, METH_VARARGS, (char *)PyGSL_wavelet_inverse_doc}, + {"nstransform2d_inverse", (PyCFunction)PyGSL_wavelet2d_nsinverse, METH_VARARGS, (char *)PyGSL_wavelet_inverse_doc}, {"get_n", (PyCFunction)PyGSL_wavelet_get_n_py, METH_NOARGS, NULL}, {NULL, NULL, 0, NULL} /* sentinel */ }; @@ -40,7 +40,7 @@ PyGSL_wavelet_getattr(PyGSL_wavelet *self, const char * name); #ifdef PyGSL_PY3K static PyTypeObject PyGSL_wavelet_pytype = { - PyObject_HEAD_INIT(NULL) + PyVarObject_HEAD_INIT(NULL, 0) "PyGSL_wavelet", /* tp_name */ sizeof(PyGSL_wavelet), /* tp_basicsize */ 0, /* tp_itemsize */ @@ -95,7 +95,7 @@ PyTypeObject PyGSL_wavelet_pytype = { (setattrfunc) 0, /* tp_setattr "x.attr=v" */ (cmpfunc) 0, /* tp_compare "x > y" */ (reprfunc) 0, /* tp_repr `x`, print x */ - + /* type categories */ 0, /* tp_as_number +,-,*,/,%,&,>>,pow...*/ 0, /* tp_as_sequence +,[i],[i:j],len, ...*/ @@ -121,7 +121,7 @@ typedef int (complex_transform)(gsl_complex_packed_array gsl_fft_complex_workspace * WORK); */ -static void +static void PyGSL_wavelet_dealloc(PyGSL_wavelet *self) { FUNC_MESS_BEGIN(); @@ -231,7 +231,7 @@ PyGSL_wavelet_init(PyObject *self, PyObject *args, const gsl_wavelet_type *type) if((o->wavelet = gsl_wavelet_alloc(type, n)) == NULL){ line = __LINE__ - 1; - /* + /* * If the wrong parameter n is given, it will call PyGSL_ERROR() * and return NULL. I hope it does that in case of no memory as * well. The installed error handler will then call @@ -241,7 +241,7 @@ PyGSL_wavelet_init(PyObject *self, PyObject *args, const gsl_wavelet_type *type) } FUNC_MESS_END(); return (PyObject *) o; - + fail: FUNC_MESS("Fail"); PyGSL_add_traceback(module, filename, __FUNCTION__, line); From 5a486ce37975e049bda232e5388fc999a1e09a70 Mon Sep 17 00:00:00 2001 From: Pierre Schnizer Date: Wed, 7 Feb 2024 10:24:48 +0100 Subject: [PATCH 4/4] [TASK] testing solvers : obsolete code marking them as ext2 only. Code to be removed soon --- gsl_packages.py | 55 +++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/gsl_packages.py b/gsl_packages.py index 9aba38f..66cdc87 100644 --- a/gsl_packages.py +++ b/gsl_packages.py @@ -32,7 +32,7 @@ ) -exts.append(SWIG_Extension("hankel", +exts.append(SWIG_Extension("hankel", ["src/hankel/gsl_hankel.i"], swig_include_dirs=["src/hankel"], swig_flags = swig_flags, @@ -40,7 +40,7 @@ define_macros = macros, python_min_version=(2,0), ) - + ) exts.append(SWIG_Extension("sum", @@ -66,7 +66,7 @@ #gsl_min_version=(1,9), define_macros = macros, python_min_version=(2,1), - ) + ) ) flag = 0 @@ -82,7 +82,7 @@ swig_flags = swig_flags, define_macros = macros, python_min_version=(2,1), - ) + ) ) @@ -100,9 +100,9 @@ #gsl_min_version=(1,2), define_macros = macros, python_min_version=(2,1), - ) + ) ) - + flag = 0 try: flag = gsl_features.odeiv2 @@ -213,7 +213,7 @@ python_min_version=(2,1) ) exts.append(pygsl_rng) - + pygsl_ieee=gsl_Extension("ieee", ['src/ieeemodule.c'], gsl_min_version=(1,), @@ -228,14 +228,14 @@ gsl_min_version=(1,0), python_min_version=(2,2) ) -extsOnly2.append(pygsl_histogram) +extsOnly2.append(pygsl_histogram) pygsl_multimin=gsl_Extension("multimin", ['src/multiminmodule.c'], define_macros = macros, gsl_min_version=(1,0), python_min_version=(2,2) ) -extsOnly2.append(pygsl_multimin) +extsOnly2.append(pygsl_multimin) pygsl_qrng=gsl_Extension("_qrng", @@ -259,49 +259,49 @@ define_macros = macros, python_min_version=(2,1) ) -exts.append(pygsl_statistics_uchar) +exts.append(pygsl_statistics_uchar) pygsl_statistics_char=gsl_Extension("statistics.char", ['src/statistics/charmodule.c'], gsl_min_version=(1,), define_macros = macros, python_min_version=(2,1) ) -exts.append(pygsl_statistics_char) +exts.append(pygsl_statistics_char) pygsl_statistics_double=gsl_Extension("statistics.double", ['src/statistics/doublemodule.c'], gsl_min_version=(1,), define_macros = macros, python_min_version=(2,1) ) -exts.append(pygsl_statistics_double) +exts.append(pygsl_statistics_double) pygsl_statistics_float=gsl_Extension("statistics.float", ['src/statistics/floatmodule.c'], gsl_min_version=(1,), define_macros = macros, python_min_version=(2,1) ) -exts.append(pygsl_statistics_float) +exts.append(pygsl_statistics_float) pygsl_statistics_long=gsl_Extension("statistics.long", ['src/statistics/longmodule.c'], gsl_min_version=(1,), define_macros = macros, python_min_version=(2,1) ) -exts.append(pygsl_statistics_long) +exts.append(pygsl_statistics_long) pygsl_statistics_int=gsl_Extension("statistics.int", ['src/statistics/intmodule.c'], gsl_min_version=(1,), define_macros = macros, python_min_version=(2,1) ) -exts.append(pygsl_statistics_int) +exts.append(pygsl_statistics_int) pygsl_statistics_short=gsl_Extension("statistics.short", ['src/statistics/shortmodule.c'], gsl_min_version=(1,), define_macros = macros, python_min_version=(2,1) ) -exts.append(pygsl_statistics_short) +exts.append(pygsl_statistics_short) errortest = gsl_Extension("errortest", ['src/errortestmodule.c'], @@ -318,13 +318,13 @@ gsl_min_version=(1,0), python_min_version=(2,2) ) - exts.append(pygsl_matrix) + exts.append(pygsl_matrix) if BUILD_TESTING: solver=gsl_Extension("testing.multimin", ['testing/src/solvers/multimin.c'], gsl_min_version=(1,), - define_macros = macros, + define_macros = macros, python_min_version=(2,0) ) extsOnly2.append(solver) @@ -332,7 +332,7 @@ solver=gsl_Extension("testing.multiroot", ['testing/src/solvers/multiroot.c'], gsl_min_version=(1,), - define_macros = macros, + define_macros = macros, python_min_version=(2,0) ) extsOnly2.append(solver) @@ -340,7 +340,7 @@ solver=gsl_Extension("testing.multifit_nlin", ['testing/src/solvers/multifit_nlin.c'], gsl_min_version=(1,), - define_macros = macros, + define_macros = macros, python_min_version=(2,0) ) #extsOnly2.append(solver) @@ -348,7 +348,7 @@ solver=gsl_Extension("testing.minimize", ['testing/src/solvers/minimize.c'], gsl_min_version=(1,), - define_macros = macros, + define_macros = macros, python_min_version=(2,0) ) extsOnly2.append(solver) @@ -356,7 +356,7 @@ solver=gsl_Extension("testing.roots", ['testing/src/solvers/roots.c'], gsl_min_version=(1,), - define_macros = macros, + define_macros = macros, python_min_version=(2,0) ) extsOnly2.append(solver) @@ -364,7 +364,7 @@ solver=gsl_Extension("testing.odeiv", ['testing/src/solvers/odeiv.c'], gsl_min_version=(1,), - define_macros = macros, + define_macros = macros, python_min_version=(2,0) ) extsOnly2.append(solver) @@ -372,7 +372,7 @@ #solver=gsl_Extension("testing.monte", # ['testing/src/solvers/monte.c'], # gsl_min_version=(1,), - # define_macros = macros, + # define_macros = macros, # python_min_version=(2,0) # ) #exts.append(solver) @@ -383,7 +383,7 @@ define_macros = macros + [("ONEFILE", 1)], python_min_version=(2,0) ) - exts.append(solver) + extsOnly2.append(solver) #cheb=gsl_Extension("testing.chebyshev", # ['testing/src/solvers/chebyshev.c'], # gsl_min_version=(1,), @@ -399,7 +399,7 @@ define_macros = macros, python_min_version=(2,0) ) - #exts.append(sfarray) + # exts.append(sfarray) sf=gsl_Extension("testing._ufuncs", ['testing/src/sf/sfmodule_testing.c'], gsl_min_version=(1,), @@ -414,6 +414,3 @@ # python_min_version=(2,0) # ) #exts.append(sftest) - - -