[Numpy-discussion] [EXTERNAL] swig interface file (numpy.i) warning

Ralf Gommers ralf.gommers at gmail.com
Tue Feb 26 15:41:59 EST 2013


On Mon, Feb 25, 2013 at 6:12 AM, Bill Spotz <wfspotz at 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.krauss at 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 <wfspotz at 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.krauss at 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 at 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: wfspotz at sandia.gov **
> >
> >
> > _______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion at scipy.org
> > http://mail.scipy.org/mailman/listinfo/numpy-discussion
> >
> >
> > <example.tar.gz>_______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion at 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: wfspotz at sandia.gov **
>
>
>
>
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20130226/48a6509a/attachment.html>


More information about the NumPy-Discussion mailing list