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

Reply via email to