[Python-Dev] PyIndex_Check conflicts with PEP 384
Christian Tismer
tismer at stackless.com
Fri Jun 1 17:37:22 EDT 2018
Hi Nate,
I just did that, and I got some follow-up work, too, which is fine
with me. Just as a note for you:
Qt not itself, but PyQt5 did that already and submitted a stable
ABI for Python 3.5 and up.
I was challenged end of last December to try that, and I succeeded
after a long struggle, because I also needed to convert all of PySide2
to using heaptypes, and that was really hard. Actually, I succeeded
yesterday, after 5 months. And now I know all the subtle things
that people need to know when converting existing types to heaptypes.
Since QtC has adopted PySide2 in 2016, including myself as a consultant,
now it is really a Qt product, and the limited API is due to my work.
It comes naturally that I also should fix the problems which showed up
during that process.
I also think to submit a paper to python.org where I document all the
subtle problems which occured during the conversion process. It looks
simple, but it really is not.
All the best -- Chris
On 01.06.18 17:18, Nathaniel Smith wrote:
> Indeed, that sounds like a pretty straightforward bug in the stable ABI.
> You should file an issue on bugs.python.org <http://bugs.python.org> so
> it doesn't get lost (and if it's the main new stable ABI break in 3.7
> then you should probably mark that bug as a release blocker so that Ned
> notices it).
>
> Unfortunately, very few people use the stable ABI currently, so it's
> easy for things like this to get missed. Hopefully it Qt starts using it
> then that will help us shake these things out... But it also means we
> need your help to catch these kinds of issues :-). Thanks!
>
> On Fri, Jun 1, 2018, 06:51 Christian Tismer <tismer at stackless.com
> <mailto:tismer at stackless.com>> wrote:
>
> Hi friends,
>
> when implementing the limited API for PySide2, I recognized
> a little bug where a function was replaced by a macro.
>
> The file number.rst on python 3.6 says
>
> """
> .. c:function:: int PyIndex_Check(PyObject *o)
>
> Returns ``1`` if *o* is an index integer (has the nb_index slot
> of the
> tp_as_number structure filled in), and ``0`` otherwise.
> """
>
> Without notice, this function was replaced by a macro a while
> ago, which reads
>
> #define PyIndex_Check(obj) \
> ((obj)->ob_type->tp_as_number != NULL && \
> (obj)->ob_type->tp_as_number->nb_index != NULL)
>
> This contradicts PEP 384, because there is no way for non-heaptype
> types to access the nb_index field.
>
> If nobody objects, I would like to submit a patch that adds the
> function back when the limited API is active.
> I think to fix that before Python 3.7 is out.
>
> Ciao -- Chris
>
> --
> Christian Tismer-Sperling :^) tismer at stackless.com
> <mailto:tismer at stackless.com>
> Software Consulting : http://www.stackless.com/
> Karl-Liebknecht-Str. 121 : http://pyside.org
> 14482 Potsdam : GPG key -> 0xFB7BEE0E
> phone +49 173 24 18 776 fax +49 (30) 700143-0023
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org <mailto:Python-Dev at python.org>
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> https://mail.python.org/mailman/options/python-dev/njs%40pobox.com
>
--
Christian Tismer-Sperling :^) tismer at stackless.com
Software Consulting : http://www.stackless.com/
Karl-Liebknecht-Str. 121 : http://pyside.org
14482 Potsdam : GPG key -> 0xFB7BEE0E
phone +49 173 24 18 776 fax +49 (30) 700143-0023
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 496 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/python-dev/attachments/20180601/f55fa5ac/attachment.sig>
More information about the Python-Dev
mailing list