Is there documentation for the new C API for numpy? Thanks, Bill
On Feb 26, 2013, at 2:04 PM, Bill Spotz wrote: > So the difference is that I was wanting to make changes in the git repository > that is at version 1.8. I would expect it to still work, though. > > I can take a look at the scipy issue. > > -Bill > > On Feb 26, 2013, at 1:41 PM, Ralf Gommers wrote: > >> On Mon, Feb 25, 2013 at 6:12 AM, Bill Spotz <[email protected]> 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 <[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
