On Mon, Feb 25, 2013 at 6:12 AM, Bill Spotz <wfsp...@sandia.gov> wrote:
> 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. > Hi Bill, this works as expected for me. I did the following: 1. Build 1.7.0 release in-place 2. Set PYTHONPATH to in-place build. 3. $ cd doc/swig 4. $ make test # runs all tests 5. Add define in numpy.i like you did 6. $ make test # now fails because old_defines.h wasn't included First failure is: Array_wrap.cxx:5506:20: error: ‘PyArrayObject’ has no member named ‘data’ Array_wrap.cxx: In function ‘PyObject* _wrap_new_Array2(PyObject*, PyObject*)’: Array_wrap.cxx:5635:55: error: cannot convert ‘PyObject* {aka _object*}’ to ‘const PyArrayObject* {aka const tagPyArrayObject*}’ for argument ‘1’ to ‘int PyArray_TYPE(const PyArrayObject*)’ error: command 'gcc' failed with exit status 1 If you're about to update numpy.i, maybe you could take along the divergence between the numpy and scipy versions of it? A ticket was just opened for that: http://projects.scipy.org/scipy/ticket/1825 I don't know how much work that would be, or why we even have two versions. Cheers, Ralf > > 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 <thomas.p.kra...@gmail.com> > 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 <wfsp...@sandia.gov> 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 <thomas.p.kra...@gmail.com> > 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 > >> NumPy-Discussion@scipy.org > >> 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: wfsp...@sandia.gov ** > > > > > > _______________________________________________ > > NumPy-Discussion mailing list > > NumPy-Discussion@scipy.org > > http://mail.scipy.org/mailman/listinfo/numpy-discussion > > > > > > <example.tar.gz>_______________________________________________ > > NumPy-Discussion mailing list > > NumPy-Discussion@scipy.org > > 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: wfsp...@sandia.gov ** > > > > > > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion