[Rpm-maint] [PATCH 06/15] Update module initialization to work with both Python 2.* and Python 3.*
dmalcolm at redhat.com
Wed Oct 28 19:57:23 UTC 2009
On Mon, 2009-10-19 at 14:19 +0300, Panu Matilainen wrote:
> On Thu, 15 Oct 2009, David Malcolm wrote:
> > Introduce macros and conditional compilation to deal with the major
> > changes to the way that Python extension modules are initialized between
> > Python 2 and 3 (PEP 3121).
> Hmm, this is starting to look a bit more painful :)
[snip discussion of shared module state]
> I didn't try out what it'd actually look like, but it'd seem to me that
> the module initialization version differences could be made more obvious
> (less #ifdefs) by splitting out much of the init work into a separate
> function, ie something like
I finally had a go at doing this; see the attached patch.
This patch splits each of the two modules' initialization into two
- a "prepareInitModule" function that's called _before_ trying to get
a PyObject module pointer,
- a "initModule" function that does the work upon a PyObject module
giving four new functions in all; all of these functions return 1 for
success, 0 for failure.
These functions embed the commonality between 2 and 3 for module
The 2 vs 3 differences are then reduced to calling out to each function
from 2 and 3-specific blocks of code.
Tested very briefly with python 2.6.4 and 3.1.1
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 5033 bytes
Desc: not available
More information about the Rpm-maint