[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