[Scipy-svn] r6718 - in trunk: scipy/ndimage/src scipy/odr tools
scipy-svn at scipy.org
scipy-svn at scipy.org
Sat Sep 11 20:49:39 EDT 2010
Author: ptvirtan
Date: 2010-09-11 19:49:39 -0500 (Sat, 11 Sep 2010)
New Revision: 6718
Added:
trunk/scipy/ndimage/src/npy_3kcompat.h
trunk/scipy/odr/npy_3kcompat.h
Modified:
trunk/scipy/ndimage/src/nd_image.c
trunk/scipy/ndimage/src/nd_image.h
trunk/scipy/odr/__odrpack.c
trunk/scipy/odr/odrpack.h
trunk/tools/py3tool.py
Log:
3K: odr now builds and passes most tests.
Modified: trunk/scipy/ndimage/src/nd_image.c
===================================================================
--- trunk/scipy/ndimage/src/nd_image.c 2010-09-12 00:49:17 UTC (rev 6717)
+++ trunk/scipy/ndimage/src/nd_image.c 2010-09-12 00:49:39 UTC (rev 6718)
@@ -28,7 +28,6 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-
#define ND_IMPORT_ARRAY
#include "nd_image.h"
#undef ND_IMPORT_ARRAY
@@ -914,8 +913,32 @@
{NULL, NULL, 0, NULL}
};
+#if PY_VERSION_HEX >= 0x03000000
+static struct PyModuleDef moduledef = {
+ PyModuleDef_HEAD_INIT,
+ "_nd_image",
+ NULL,
+ -1,
+ methods,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+PyObject *PyInit__nd_image(void)
+{
+ PyObject *m, *s, *d;
+
+ m = PyModule_Create(&moduledef);
+ import_array();
+
+ return m;
+}
+#else
PyMODINIT_FUNC init_nd_image(void)
{
Py_InitModule("_nd_image", methods);
import_array();
}
+#endif
Modified: trunk/scipy/ndimage/src/nd_image.h
===================================================================
--- trunk/scipy/ndimage/src/nd_image.h 2010-09-12 00:49:17 UTC (rev 6717)
+++ trunk/scipy/ndimage/src/nd_image.h 2010-09-12 00:49:39 UTC (rev 6718)
@@ -41,6 +41,8 @@
#include <numpy/noprefix.h>
#undef NO_IMPORT_ARRAY
+#include "npy_3kcompat.h"
+
/* Eventually get rid of everything below this line */
typedef enum
Added: trunk/scipy/ndimage/src/npy_3kcompat.h
===================================================================
--- trunk/scipy/ndimage/src/npy_3kcompat.h (rev 0)
+++ trunk/scipy/ndimage/src/npy_3kcompat.h 2010-09-12 00:49:39 UTC (rev 6718)
@@ -0,0 +1,305 @@
+#ifndef _NPY_3KCOMPAT_H_
+#define _NPY_3KCOMPAT_H_
+
+#include <Python.h>
+#include <stdio.h>
+
+#if PY_VERSION_HEX >= 0x03000000
+#define NPY_PY3K
+#endif
+
+#include "numpy/npy_common.h"
+#include "numpy/ndarrayobject.h"
+
+/*
+ * PyInt -> PyLong
+ */
+
+#if defined(NPY_PY3K)
+/* Return True only if the long fits in a C long */
+static NPY_INLINE int PyInt_Check(PyObject *op) {
+ int overflow = 0;
+ if (!PyLong_Check(op)) {
+ return 0;
+ }
+ PyLong_AsLongAndOverflow(op, &overflow);
+ return (overflow == 0);
+}
+
+#define PyInt_FromLong PyLong_FromLong
+#define PyInt_AsLong PyLong_AsLong
+#define PyInt_AS_LONG PyLong_AsLong
+#define PyInt_AsSsize_t PyLong_AsSsize_t
+
+/* NOTE:
+ *
+ * Since the PyLong type is very different from the fixed-range PyInt,
+ * we don't define PyInt_Type -> PyLong_Type.
+ */
+#endif /* NPY_PY3K */
+
+/*
+ * PyString -> PyBytes
+ */
+
+#if defined(NPY_PY3K)
+
+#define PyString_Type PyBytes_Type
+#define PyString_Check PyBytes_Check
+#define PyStringObject PyBytesObject
+#define PyString_FromString PyBytes_FromString
+#define PyString_FromStringAndSize PyBytes_FromStringAndSize
+#define PyString_AS_STRING PyBytes_AS_STRING
+#define PyString_AsStringAndSize PyBytes_AsStringAndSize
+#define PyString_FromFormat PyBytes_FromFormat
+#define PyString_Concat PyBytes_Concat
+#define PyString_ConcatAndDel PyBytes_ConcatAndDel
+#define PyString_AsString PyBytes_AsString
+#define PyString_GET_SIZE PyBytes_GET_SIZE
+#define PyString_Size PyBytes_Size
+
+#define PyUString_Type PyUnicode_Type
+#define PyUString_Check PyUnicode_Check
+#define PyUStringObject PyUnicodeObject
+#define PyUString_FromString PyUnicode_FromString
+#define PyUString_FromStringAndSize PyUnicode_FromStringAndSize
+#define PyUString_FromFormat PyUnicode_FromFormat
+#define PyUString_Concat PyUnicode_Concat2
+#define PyUString_ConcatAndDel PyUnicode_ConcatAndDel
+#define PyUString_GET_SIZE PyUnicode_GET_SIZE
+#define PyUString_Size PyUnicode_Size
+#define PyUString_InternFromString PyUnicode_InternFromString
+#define PyUString_Format PyUnicode_Format
+
+#else
+
+#define PyBytes_Type PyString_Type
+#define PyBytes_Check PyString_Check
+#define PyBytesObject PyStringObject
+#define PyBytes_FromString PyString_FromString
+#define PyBytes_FromStringAndSize PyString_FromStringAndSize
+#define PyBytes_AS_STRING PyString_AS_STRING
+#define PyBytes_AsStringAndSize PyString_AsStringAndSize
+#define PyBytes_FromFormat PyString_FromFormat
+#define PyBytes_Concat PyString_Concat
+#define PyBytes_ConcatAndDel PyString_ConcatAndDel
+#define PyBytes_AsString PyString_AsString
+#define PyBytes_GET_SIZE PyString_GET_SIZE
+#define PyBytes_Size PyString_Size
+
+#define PyUString_Type PyString_Type
+#define PyUString_Check PyString_Check
+#define PyUStringObject PyStringObject
+#define PyUString_FromString PyString_FromString
+#define PyUString_FromStringAndSize PyString_FromStringAndSize
+#define PyUString_FromFormat PyString_FromFormat
+#define PyUString_Concat PyString_Concat
+#define PyUString_ConcatAndDel PyString_ConcatAndDel
+#define PyUString_GET_SIZE PyString_GET_SIZE
+#define PyUString_Size PyString_Size
+#define PyUString_InternFromString PyString_InternFromString
+#define PyUString_Format PyString_Format
+
+#endif /* NPY_PY3K */
+
+
+static NPY_INLINE void
+PyUnicode_ConcatAndDel(PyObject **left, PyObject *right)
+{
+ PyObject *new;
+ new = PyUnicode_Concat(*left, right);
+ Py_DECREF(*left);
+ Py_DECREF(right);
+ *left = new;
+}
+
+static NPY_INLINE void
+PyUnicode_Concat2(PyObject **left, PyObject *right)
+{
+ PyObject *new;
+ new = PyUnicode_Concat(*left, right);
+ Py_DECREF(*left);
+ *left = new;
+}
+
+
+/*
+ * Accessing items of ob_base
+ */
+
+#if (PY_VERSION_HEX < 0x02060000)
+#define Py_TYPE(o) (((PyObject*)(o))->ob_type)
+#define Py_REFCNT(o) (((PyObject*)(o))->ob_refcnt)
+#define Py_SIZE(o) (((PyVarObject*)(o))->ob_size)
+#endif
+
+/*
+ * PyFile_AsFile
+ */
+#if defined(NPY_PY3K)
+static NPY_INLINE FILE*
+npy_PyFile_Dup(PyObject *file, char *mode)
+{
+ int fd, fd2;
+ PyObject *ret, *os;
+ /* Flush first to ensure things end up in the file in the correct order */
+ ret = PyObject_CallMethod(file, "flush", "");
+ if (ret == NULL) {
+ return NULL;
+ }
+ Py_DECREF(ret);
+ fd = PyObject_AsFileDescriptor(file);
+ if (fd == -1) {
+ return NULL;
+ }
+ os = PyImport_ImportModule("os");
+ if (os == NULL) {
+ return NULL;
+ }
+ ret = PyObject_CallMethod(os, "dup", "i", fd);
+ Py_DECREF(os);
+ if (ret == NULL) {
+ return NULL;
+ }
+ fd2 = PyNumber_AsSsize_t(ret, NULL);
+ Py_DECREF(ret);
+ return fdopen(fd2, mode);
+}
+#endif
+
+static NPY_INLINE PyObject*
+npy_PyFile_OpenFile(PyObject *filename, char *mode)
+{
+ PyObject *open;
+ open = PyDict_GetItemString(PyEval_GetBuiltins(), "open");
+ if (open == NULL) {
+ return NULL;
+ }
+ return PyObject_CallFunction(open, "Os", filename, mode);
+}
+
+/*
+ * PyObject_Cmp
+ */
+#if defined(NPY_PY3K)
+static NPY_INLINE int
+PyObject_Cmp(PyObject *i1, PyObject *i2, int *cmp)
+{
+ int v;
+ v = PyObject_RichCompareBool(i1, i2, Py_LT);
+ if (v == 0) {
+ *cmp = -1;
+ return 1;
+ }
+ else if (v == -1) {
+ return -1;
+ }
+
+ v = PyObject_RichCompareBool(i1, i2, Py_GT);
+ if (v == 0) {
+ *cmp = 1;
+ return 1;
+ }
+ else if (v == -1) {
+ return -1;
+ }
+
+ v = PyObject_RichCompareBool(i1, i2, Py_EQ);
+ if (v == 0) {
+ *cmp = 0;
+ return 1;
+ }
+ else {
+ *cmp = 0;
+ return -1;
+ }
+}
+#endif
+
+/*
+ * PyCObject functions adapted to PyCapsules.
+ *
+ * The main job here is to get rid of the improved error handling
+ * of PyCapsules. It's a shame...
+ */
+#if defined(NPY_PY3K)
+
+static NPY_INLINE PyObject *
+NpyCapsule_FromVoidPtr(void *ptr, void (*dtor)(PyObject *))
+{
+ PyObject *ret = PyCapsule_New(ptr, NULL, dtor);
+ if (ret == NULL) {
+ PyErr_Clear();
+ }
+ return ret;
+}
+
+static NPY_INLINE PyObject *
+NpyCapsule_FromVoidPtrAndDesc(void *ptr, void* context, void (*dtor)(PyObject *))
+{
+ PyObject *ret = NpyCapsule_FromVoidPtr(ptr, dtor);
+ if (ret != NULL && PyCapsule_SetContext(ret, context) != 0) {
+ PyErr_Clear();
+ Py_DECREF(ret);
+ ret = NULL;
+ }
+ return ret;
+}
+
+static NPY_INLINE void *
+NpyCapsule_AsVoidPtr(PyObject *obj)
+{
+ void *ret = PyCapsule_GetPointer(obj, NULL);
+ if (ret == NULL) {
+ PyErr_Clear();
+ }
+ return ret;
+}
+
+static NPY_INLINE int
+NpyCapsule_Check(PyObject *ptr)
+{
+ return PyCapsule_CheckExact(ptr);
+}
+
+static void
+simple_capsule_dtor(PyObject *cap)
+{
+ PyArray_free(PyCapsule_GetPointer(cap, NULL));
+}
+
+#else
+
+static NPY_INLINE PyObject *
+NpyCapsule_FromVoidPtr(void *ptr, void (*dtor)(void *))
+{
+ return PyCObject_FromVoidPtr(ptr, dtor);
+}
+
+static NPY_INLINE PyObject *
+NpyCapsule_FromVoidPtrAndDesc(void *ptr, void* context, void (*dtor)(void *))
+{
+ return PyCObject_FromVoidPtrAndDesc(ptr, context, dtor);
+}
+
+static NPY_INLINE void *
+NpyCapsule_AsVoidPtr(PyObject *ptr)
+{
+ return PyCObject_AsVoidPtr(ptr);
+}
+
+static NPY_INLINE int
+NpyCapsule_Check(PyObject *ptr)
+{
+ return PyCObject_Check(ptr);
+}
+
+static void
+simple_capsule_dtor(void *ptr)
+{
+ PyArray_free(ptr);
+}
+
+#endif
+
+#endif /* _NPY_3KCOMPAT_H_ */
Modified: trunk/scipy/odr/__odrpack.c
===================================================================
--- trunk/scipy/odr/__odrpack.c 2010-09-12 00:49:17 UTC (rev 6717)
+++ trunk/scipy/odr/__odrpack.c 2010-09-12 00:49:39 UTC (rev 6718)
@@ -1356,6 +1356,35 @@
{NULL, NULL},
};
+#if PY_VERSION_HEX >= 0x03000000
+static struct PyModuleDef moduledef = {
+ PyModuleDef_HEAD_INIT,
+ "_odrpack",
+ NULL,
+ -1,
+ methods,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+PyObject *PyInit___odrpack(void)
+{
+ PyObject *m, *s, *d;
+
+ m = PyModule_Create(&moduledef);
+ import_array();
+
+ d = PyModule_GetDict(m);
+ odr_error = PyErr_NewException("odr.odrpack.odr_error", NULL, NULL);
+ odr_stop = PyErr_NewException("odr.odrpack.odr_stop", NULL, NULL);
+ PyDict_SetItemString(d, "odr_error", odr_error);
+ PyDict_SetItemString(d, "odr_stop", odr_stop);
+
+ return m;
+}
+#else
PyMODINIT_FUNC init__odrpack(void)
{
PyObject *m, *d;
@@ -1369,3 +1398,4 @@
PyDict_SetItemString(d, "odr_error", odr_error);
PyDict_SetItemString(d, "odr_stop", odr_stop);
}
+#endif
Added: trunk/scipy/odr/npy_3kcompat.h
===================================================================
--- trunk/scipy/odr/npy_3kcompat.h (rev 0)
+++ trunk/scipy/odr/npy_3kcompat.h 2010-09-12 00:49:39 UTC (rev 6718)
@@ -0,0 +1,305 @@
+#ifndef _NPY_3KCOMPAT_H_
+#define _NPY_3KCOMPAT_H_
+
+#include <Python.h>
+#include <stdio.h>
+
+#if PY_VERSION_HEX >= 0x03000000
+#define NPY_PY3K
+#endif
+
+#include "numpy/npy_common.h"
+#include "numpy/ndarrayobject.h"
+
+/*
+ * PyInt -> PyLong
+ */
+
+#if defined(NPY_PY3K)
+/* Return True only if the long fits in a C long */
+static NPY_INLINE int PyInt_Check(PyObject *op) {
+ int overflow = 0;
+ if (!PyLong_Check(op)) {
+ return 0;
+ }
+ PyLong_AsLongAndOverflow(op, &overflow);
+ return (overflow == 0);
+}
+
+#define PyInt_FromLong PyLong_FromLong
+#define PyInt_AsLong PyLong_AsLong
+#define PyInt_AS_LONG PyLong_AsLong
+#define PyInt_AsSsize_t PyLong_AsSsize_t
+
+/* NOTE:
+ *
+ * Since the PyLong type is very different from the fixed-range PyInt,
+ * we don't define PyInt_Type -> PyLong_Type.
+ */
+#endif /* NPY_PY3K */
+
+/*
+ * PyString -> PyBytes
+ */
+
+#if defined(NPY_PY3K)
+
+#define PyString_Type PyBytes_Type
+#define PyString_Check PyBytes_Check
+#define PyStringObject PyBytesObject
+#define PyString_FromString PyBytes_FromString
+#define PyString_FromStringAndSize PyBytes_FromStringAndSize
+#define PyString_AS_STRING PyBytes_AS_STRING
+#define PyString_AsStringAndSize PyBytes_AsStringAndSize
+#define PyString_FromFormat PyBytes_FromFormat
+#define PyString_Concat PyBytes_Concat
+#define PyString_ConcatAndDel PyBytes_ConcatAndDel
+#define PyString_AsString PyBytes_AsString
+#define PyString_GET_SIZE PyBytes_GET_SIZE
+#define PyString_Size PyBytes_Size
+
+#define PyUString_Type PyUnicode_Type
+#define PyUString_Check PyUnicode_Check
+#define PyUStringObject PyUnicodeObject
+#define PyUString_FromString PyUnicode_FromString
+#define PyUString_FromStringAndSize PyUnicode_FromStringAndSize
+#define PyUString_FromFormat PyUnicode_FromFormat
+#define PyUString_Concat PyUnicode_Concat2
+#define PyUString_ConcatAndDel PyUnicode_ConcatAndDel
+#define PyUString_GET_SIZE PyUnicode_GET_SIZE
+#define PyUString_Size PyUnicode_Size
+#define PyUString_InternFromString PyUnicode_InternFromString
+#define PyUString_Format PyUnicode_Format
+
+#else
+
+#define PyBytes_Type PyString_Type
+#define PyBytes_Check PyString_Check
+#define PyBytesObject PyStringObject
+#define PyBytes_FromString PyString_FromString
+#define PyBytes_FromStringAndSize PyString_FromStringAndSize
+#define PyBytes_AS_STRING PyString_AS_STRING
+#define PyBytes_AsStringAndSize PyString_AsStringAndSize
+#define PyBytes_FromFormat PyString_FromFormat
+#define PyBytes_Concat PyString_Concat
+#define PyBytes_ConcatAndDel PyString_ConcatAndDel
+#define PyBytes_AsString PyString_AsString
+#define PyBytes_GET_SIZE PyString_GET_SIZE
+#define PyBytes_Size PyString_Size
+
+#define PyUString_Type PyString_Type
+#define PyUString_Check PyString_Check
+#define PyUStringObject PyStringObject
+#define PyUString_FromString PyString_FromString
+#define PyUString_FromStringAndSize PyString_FromStringAndSize
+#define PyUString_FromFormat PyString_FromFormat
+#define PyUString_Concat PyString_Concat
+#define PyUString_ConcatAndDel PyString_ConcatAndDel
+#define PyUString_GET_SIZE PyString_GET_SIZE
+#define PyUString_Size PyString_Size
+#define PyUString_InternFromString PyString_InternFromString
+#define PyUString_Format PyString_Format
+
+#endif /* NPY_PY3K */
+
+
+static NPY_INLINE void
+PyUnicode_ConcatAndDel(PyObject **left, PyObject *right)
+{
+ PyObject *new;
+ new = PyUnicode_Concat(*left, right);
+ Py_DECREF(*left);
+ Py_DECREF(right);
+ *left = new;
+}
+
+static NPY_INLINE void
+PyUnicode_Concat2(PyObject **left, PyObject *right)
+{
+ PyObject *new;
+ new = PyUnicode_Concat(*left, right);
+ Py_DECREF(*left);
+ *left = new;
+}
+
+
+/*
+ * Accessing items of ob_base
+ */
+
+#if (PY_VERSION_HEX < 0x02060000)
+#define Py_TYPE(o) (((PyObject*)(o))->ob_type)
+#define Py_REFCNT(o) (((PyObject*)(o))->ob_refcnt)
+#define Py_SIZE(o) (((PyVarObject*)(o))->ob_size)
+#endif
+
+/*
+ * PyFile_AsFile
+ */
+#if defined(NPY_PY3K)
+static NPY_INLINE FILE*
+npy_PyFile_Dup(PyObject *file, char *mode)
+{
+ int fd, fd2;
+ PyObject *ret, *os;
+ /* Flush first to ensure things end up in the file in the correct order */
+ ret = PyObject_CallMethod(file, "flush", "");
+ if (ret == NULL) {
+ return NULL;
+ }
+ Py_DECREF(ret);
+ fd = PyObject_AsFileDescriptor(file);
+ if (fd == -1) {
+ return NULL;
+ }
+ os = PyImport_ImportModule("os");
+ if (os == NULL) {
+ return NULL;
+ }
+ ret = PyObject_CallMethod(os, "dup", "i", fd);
+ Py_DECREF(os);
+ if (ret == NULL) {
+ return NULL;
+ }
+ fd2 = PyNumber_AsSsize_t(ret, NULL);
+ Py_DECREF(ret);
+ return fdopen(fd2, mode);
+}
+#endif
+
+static NPY_INLINE PyObject*
+npy_PyFile_OpenFile(PyObject *filename, char *mode)
+{
+ PyObject *open;
+ open = PyDict_GetItemString(PyEval_GetBuiltins(), "open");
+ if (open == NULL) {
+ return NULL;
+ }
+ return PyObject_CallFunction(open, "Os", filename, mode);
+}
+
+/*
+ * PyObject_Cmp
+ */
+#if defined(NPY_PY3K)
+static NPY_INLINE int
+PyObject_Cmp(PyObject *i1, PyObject *i2, int *cmp)
+{
+ int v;
+ v = PyObject_RichCompareBool(i1, i2, Py_LT);
+ if (v == 0) {
+ *cmp = -1;
+ return 1;
+ }
+ else if (v == -1) {
+ return -1;
+ }
+
+ v = PyObject_RichCompareBool(i1, i2, Py_GT);
+ if (v == 0) {
+ *cmp = 1;
+ return 1;
+ }
+ else if (v == -1) {
+ return -1;
+ }
+
+ v = PyObject_RichCompareBool(i1, i2, Py_EQ);
+ if (v == 0) {
+ *cmp = 0;
+ return 1;
+ }
+ else {
+ *cmp = 0;
+ return -1;
+ }
+}
+#endif
+
+/*
+ * PyCObject functions adapted to PyCapsules.
+ *
+ * The main job here is to get rid of the improved error handling
+ * of PyCapsules. It's a shame...
+ */
+#if defined(NPY_PY3K)
+
+static NPY_INLINE PyObject *
+NpyCapsule_FromVoidPtr(void *ptr, void (*dtor)(PyObject *))
+{
+ PyObject *ret = PyCapsule_New(ptr, NULL, dtor);
+ if (ret == NULL) {
+ PyErr_Clear();
+ }
+ return ret;
+}
+
+static NPY_INLINE PyObject *
+NpyCapsule_FromVoidPtrAndDesc(void *ptr, void* context, void (*dtor)(PyObject *))
+{
+ PyObject *ret = NpyCapsule_FromVoidPtr(ptr, dtor);
+ if (ret != NULL && PyCapsule_SetContext(ret, context) != 0) {
+ PyErr_Clear();
+ Py_DECREF(ret);
+ ret = NULL;
+ }
+ return ret;
+}
+
+static NPY_INLINE void *
+NpyCapsule_AsVoidPtr(PyObject *obj)
+{
+ void *ret = PyCapsule_GetPointer(obj, NULL);
+ if (ret == NULL) {
+ PyErr_Clear();
+ }
+ return ret;
+}
+
+static NPY_INLINE int
+NpyCapsule_Check(PyObject *ptr)
+{
+ return PyCapsule_CheckExact(ptr);
+}
+
+static void
+simple_capsule_dtor(PyObject *cap)
+{
+ PyArray_free(PyCapsule_GetPointer(cap, NULL));
+}
+
+#else
+
+static NPY_INLINE PyObject *
+NpyCapsule_FromVoidPtr(void *ptr, void (*dtor)(void *))
+{
+ return PyCObject_FromVoidPtr(ptr, dtor);
+}
+
+static NPY_INLINE PyObject *
+NpyCapsule_FromVoidPtrAndDesc(void *ptr, void* context, void (*dtor)(void *))
+{
+ return PyCObject_FromVoidPtrAndDesc(ptr, context, dtor);
+}
+
+static NPY_INLINE void *
+NpyCapsule_AsVoidPtr(PyObject *ptr)
+{
+ return PyCObject_AsVoidPtr(ptr);
+}
+
+static NPY_INLINE int
+NpyCapsule_Check(PyObject *ptr)
+{
+ return PyCObject_Check(ptr);
+}
+
+static void
+simple_capsule_dtor(void *ptr)
+{
+ PyArray_free(ptr);
+}
+
+#endif
+
+#endif /* _NPY_3KCOMPAT_H_ */
Modified: trunk/scipy/odr/odrpack.h
===================================================================
--- trunk/scipy/odr/odrpack.h 2010-09-12 00:49:17 UTC (rev 6717)
+++ trunk/scipy/odr/odrpack.h 2010-09-12 00:49:39 UTC (rev 6718)
@@ -1,6 +1,8 @@
#include "Python.h"
#include "numpy/arrayobject.h"
+#include "npy_3kcompat.h"
+
#if defined(NO_APPEND_FORTRAN)
#if defined(UPPERCASE_FORTRAN)
#define F_FUNC(f,F) F
Modified: trunk/tools/py3tool.py
===================================================================
--- trunk/tools/py3tool.py 2010-09-12 00:49:17 UTC (rev 6717)
+++ trunk/tools/py3tool.py 2010-09-12 00:49:39 UTC (rev 6718)
@@ -153,6 +153,11 @@
os.path.join('linalg', 'flinalg.py'),
os.path.join('lib', 'blas', '__init__.py'),
os.path.join('lib', 'lapack', '__init__.py'),
+ os.path.join('ndimage', 'filters.py'),
+ os.path.join('ndimage', 'fourier.py'),
+ os.path.join('ndimage', 'interpolation.py'),
+ os.path.join('ndimage', 'measurements.py'),
+ os.path.join('ndimage', 'morphology.py'),
os.path.join('optimize', 'minpack.py'),
os.path.join('optimize', 'zeros.py'),
os.path.join('optimize', 'lbfgsb.py'),
@@ -180,7 +185,11 @@
'_nnls',
'sigtools', 'spline',
'_fitpack', 'dfitpack', '_interpolate',
- '_odepack', '_quadpack', 'vode', '_dop']:
+ '_odepack', '_quadpack', 'vode', '_dop',
+ 'vonmises_cython',
+ 'futil', 'mvn',
+ '_nd_image',
+ ]:
text = re.sub(r'^(\s*)import %s' % mod,
r'\1from . import %s' % mod,
text, flags=re.M)
More information about the Scipy-svn
mailing list