[PyKDE] How to add handwritten *.cpp files to a sip generated module with configure.py

Gerard Vermeulen gvermeul at grenoble.cnrs.fr
Mon Feb 2 09:00:01 GMT 2004


On Mon, 02 Feb 2004 00:15:35 +0100
ulrich.berning at t-online.de (Ulrich Berning) wrote:

> Gerard Vermeulen schrieb:
> 
> >Hi Phil,
> >
> >Ulrich Berning kindly provided me with code to build PyQwt with configure.py.
> >
> >One of his changes was to put a few handwritten *.cpp files to interface
> >the Numerical Python extension modules (numpy and numarray) in the qwtmod.sip
> >file.
> >
> >The problem is that there are conflicts between the header files of numpy and
> >numarray (numarray should become the successor of numpy, so there is an
> >overlap in their API). Putting all the interface code in the qwtmod.sip file
> >leads to compile errors because of the inclusion of the conflicting headers in
> >the same .cpp file. 
> >
> >Ulli did not see it, because he is only having numpy, I guess.
> >
> >  
> >
> Yes, this is true. I can't see why I should have numpy AND numarray. 
> Because numarry will be the successor of numpy someday, but currently it 
> is not, I choosed to stay with numpy. The only reason to support numpy 
> AND numeric could be to provide a binary module that works either with 
> numpy or with numarray or with none of them. But then, the interface 
> code needs some modifactions. You have to find out in the init function 
> if numpy or numarray or none of both is available. Simply calling 
> import_array() and/or import_libnumarray() does not work. If you call 
> import_libnumarray() when nummarray is not installed you get a 
> Py_FatalError().
> 
> And at least, if I take a look at Numeric/arrayobject.h and 
> numarray/arrayobject.h, I can see the following:
> 
> in Numeric/arrayobject.h:
> #ifndef Py_ARRAYOBJECT_H
> #define Py_ARRAYOBJECT_H
> 
> in numarray/arrayobject.h:
> #ifdef Py_ARRAYOBJECT_H
> #error "Can't use numarray Numeric compatability *and* Numeric in same 
> module"
> #endif
> 
> My recommendation is, either numpy is used, if it is there OR numarray 
> if it is there OR none of them. Using the numpy API AND the numarray API 
> in the same module may work, but was not intended by the Numerical 
> Python Group and seems to be dangerous.
> 
PyQwt is able to import both, since version 3.7 and since version 3.8
it includes numarray/libnumarray.h. It really works in the same Python program
but it requires that calls to the Numeric API and numarray API are split into
different source files (importing a C API from a C/C++ extension module is
nothing else than setting up a table with pointers to functions into the module).

I provide the possibility to use both so that people can make the transition.
It also facilitates support and testing. 

The purpose of my mail was to point out a facility that is lacking from Phil's
new build system (but I can hack my way out).  It explains also why I am
sticking so long with my own tools which are lacking in other respects.

Gerard




More information about the PyQt mailing list