[Rpm-maint] [PATCH 06/15] Update module initialization to work with both Python 2.* and Python 3.*
Panu Matilainen
pmatilai at redhat.com
Thu Oct 29 11:04:27 UTC 2009
On Wed, 28 Oct 2009, David Malcolm wrote:
> 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
> [snip]
>
> I finally had a go at doing this; see the attached patch.
>
> This patch splits each of the two modules' initialization into two
> parts:
> - 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
> ptr.
> 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
> initialization.
>
> The 2 vs 3 differences are then reduced to calling out to each function
> from 2 and 3-specific blocks of code.
Okay this looks much nicer at least to my eyes. Applied, thanks!
- Panu -
More information about the Rpm-maint
mailing list