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

Reply via email to