[Python-Dev] The docstring hack for signature information has to go

Nick Coghlan ncoghlan at gmail.com
Tue Feb 4 15:44:52 CET 2014

On 4 February 2014 02:04, Larry Hastings <larry at hastings.org> wrote:
> On 02/03/2014 07:08 AM, Barry Warsaw wrote:
> On Feb 03, 2014, at 06:43 AM, Larry Hastings wrote:
> But that only fixes part of the problem.  Our theoretical extension that
> wants to be binary-compatible with 3.3 and 3.4 still has a problem: how can
> they support signatures?  They can't give PyMethodDefEx structures to 3.3,
> it
> will blow up.  But if they don't use PyMethodDefEx, they can't have
> signatures.
> Can't an extension writer #ifdef around this?  Yeah, it's ugly, but it's a
> pretty standard approach for making C extensions multi-version compatible.
> For source compatibility, yes.  But I thought the point of the binary ABI
> was to allow compiling a single extension that worked unmodified with
> multiple versions of Python.  If we simply don't support that, then an ifdef
> would be fine.

Then the solution appears straightforward to me: Python 3.4 will not
support providing introspection information through the stable ABI. If
you want to provide signature info for your C extension without an odd
first line in your 3.3 docstring, you must produce version specific
binaries (which allows #ifdef hackery).

Then PEP 457 can address this properly for 3.5 along with the other
issues it needs to cover.


Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia

More information about the Python-Dev mailing list