I wanted to take a stab at updating numpy.i to not use deprecated NumPy C/API code. Nothing in the git logs indicates this has already been done. I added
#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION to numpy.i right before it includes numpy/arrayobject.h. The built-in tests for numpy.i should be sufficient to ferret out all of the deprecated calls. When I try to make the tests, the compiler tells me that it has included npy_deprecated_api.h and I get a compiler error when it includes old_defines.h, telling me that it is deprecated. Shouldn't my #define prevent this from happening? I'm confused. Any guidance would be appreciated. Thanks, Bill On Oct 9, 2012, at 9:18 PM, Tom Krauss wrote: > This code reproduces the error - I think it is small enough for email. > (large) numpy.i not included, let me know if you want that too. Makefile > will need to be tailored to your environment. > If it's more convenient, or you have trouble reproducing, I can create a > branch on github - let me know. > > On Tue, Oct 9, 2012 at 1:47 PM, Tom Krauss <[email protected]> wrote: > I can't attach the exact code but would be happy to provide something simple > that has the same issue. I'll post something here when I can get to it. > - Tom > > > On Tue, Oct 9, 2012 at 10:52 AM, Bill Spotz <[email protected]> wrote: > Tom, Charles, > > If you discuss this further, be sure to CC me. > > -Bill Spotz > > On Oct 9, 2012, at 8:50 AM, Charles R Harris wrote: > >> Hi Tom, >> >> On Tue, Oct 9, 2012 at 8:30 AM, Tom Krauss <[email protected]> wrote: >> Hi, >> >> I've been happy to use numpy.i for generating SWIG interfaces to C++. >> >> For a while, I've noticed this warning while compiling: >> /Users/tkrauss/projects/dev_env/lib/python2.7/site-packages/numpy-1.8.0.dev_f2f0ac0_20120725-py2.7-macosx-10.8-x86_64.egg/numpy/core/include/numpy/npy_deprecated_api.h:11:2: >> warning: #warning "Using deprecated NumPy API, disable it by #defining >> NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" >> >> and today tried to get rid of the warning. >> >> So, in numpy.i, I followed the warning's advice. I added the # def here: >> >> %{ >> #ifndef SWIG_FILE_WITH_INIT >> # define NO_IMPORT_ARRAY >> #endif >> #include "stdio.h" >> #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION >> #include <numpy/arrayobject.h> >> %} >> >> SWIG was happy, but when compiling the C++ wrapper, there were many warnings >> followed by many errors. The warnings were for redefinition of NPY_MIN_BYTE >> and similar. The errors were for all kinds of stuff, excerpt here: >> native_wrap.cpp:3632: error: ‘PyArray_NOTYPE’ was not declared in this scope >> native_wrap.cpp:3633: error: cannot convert ‘PyObject*’ to ‘const >> PyArrayObject*’ for argument ‘1’ to ‘int PyArray_TYPE(const PyArrayObject*)’ >> native_wrap.cpp: At global scope: >> native_wrap.cpp:3877: error: ‘intp’ has not been declared >> native_wrap.cpp: In function ‘int require_fortran(PyArrayObject*)’: >> native_wrap.cpp:3929: error: ‘struct tagPyArrayObject’ has no member named >> ‘nd’ >> native_wrap.cpp:3933: error: ‘struct tagPyArrayObject’ has no member named >> ‘flags’ >> native_wrap.cpp:3933: error: ‘FARRAY’ was not declared in this scope >> native_wrap.cpp:20411: error: ‘struct tagPyArrayObject’ has no member named >> ‘data’ >> >> It looks like there is a new C API for numpy, and the version of numpy.i >> that I have doesn't use it. >> >> Is there a new version of numpy.i available (or in development) that works >> with the new API? Short term it will just get rid of a warning but I am >> interested in a good long term solution in case I need to upgrade numpy. >> >> >> In the long term we would like to hide the ndarray internals, essentially >> making them private. There are still some incomplete areas, f2py and, >> apparently, numpy.i. Your feedback here is quite helpful and if you have >> some time we can try to get this straightened out. Could you attach the code >> you are trying to interface? If you have a github account you could also set >> up a branch where we could work on this. >> >> Chuck >> _______________________________________________ >> NumPy-Discussion mailing list >> [email protected] >> http://mail.scipy.org/mailman/listinfo/numpy-discussion > > ** Bill Spotz ** > ** Sandia National Laboratories Voice: (505)845-0170 ** > ** P.O. Box 5800 Fax: (505)284-0154 ** > ** Albuquerque, NM 87185-0370 Email: [email protected] ** > > > _______________________________________________ > NumPy-Discussion mailing list > [email protected] > http://mail.scipy.org/mailman/listinfo/numpy-discussion > > > <example.tar.gz>_______________________________________________ > NumPy-Discussion mailing list > [email protected] > http://mail.scipy.org/mailman/listinfo/numpy-discussion ** Bill Spotz ** ** Sandia National Laboratories Voice: (505)845-0170 ** ** P.O. Box 5800 Fax: (505)284-0154 ** ** Albuquerque, NM 87185-0370 Email: [email protected] ** _______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
