[Python-porting] Py_TPFLAGS_HAVE_{WEAKREFS,ITER} in Python 3

Amaury Forgeot d'Arc amauryfa at gmail.com
Fri Apr 27 17:48:49 CEST 2012


Hi,

2012/4/27 Barry Warsaw <barry at python.org>

> Someone is trying to build gdb 7.4 with Python 3 and hit a problem with
> Py_TPFLAGS_HAVE_ITER.  PEP 234 describes this flag, which no longer exists
> in
> Python 3.  python3porting.com has precious little to say about Py_TPFLAGS
> changes in Python 3.
>
> When I did the dbus-python port, I found that Py_TPFLAGS_HAVE_WEAKREFS is
> both
> unnecessary and undefined in Python 3.  Unfortunately, if you're going to
> support both Python 2 and 3 with the same C code, you'll need to #ifdef
> that
> away (since it's still required in Python 2).
>
> My guess is that HAVE_ITER falls under the same recommendation, but I'm
> looking for verification.  For now, I've added this to
> https://wiki.ubuntu.com/Python/3


This is correct. I checked that everywhere Py_TPFLAGS_HAVE_ITER is used in
Python2.7,
the corresponding code in Python 3 does as if this flag is always set.

So you could either #ifdef its usage, or simply put in some compatibility
header file:
#if PY_MAJOR_VERSION >=3
#  define Py_TPFLAGS_HAVE_ITER 0
#endif


-- 
Amaury Forgeot d'Arc
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-porting/attachments/20120427/f1211d4a/attachment.html>


More information about the Python-porting mailing list