aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>2020-07-28 10:27:30 +0200
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>2020-07-28 10:31:37 +0200
commit938d39716488b545b92c28f48acc94a7b8fc9138 (patch)
tree890f28dc7c4e395df2b68aa0c2cda795854e4049
parent2d4ac9374460ba155a14945051b27fddf9cd3211 (diff)
python: enum: make it compatible with Python 3.9
As reported by: https://github.com/mchehab/zbar/issues/92 python bindings don't build with Python 3.9, because it is using tp_print, which has been silently ignored since Python 3.0, according with[1]: "The tp_print slot of PyTypeObject has been removed. It was used for printing objects to files in Python 2.7 and before. Since Python 3.0, it has been ignored and unused." [1] https://docs.python.org/3.9/whatsnew/3.9.html#id3 Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
-rw-r--r--python/enum.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/python/enum.c b/python/enum.c
index a113553..dfe1b1e 100644
--- a/python/enum.c
+++ b/python/enum.c
@@ -76,6 +76,8 @@ enumitem_str (zbarEnumItem *self)
return(self->name);
}
+#if PY_MAJOR_VERSION < 3
+/* tp_print was dropped on Python 3.9 */
static int
enumitem_print (zbarEnumItem *self,
FILE *fp,
@@ -83,6 +85,7 @@ enumitem_print (zbarEnumItem *self,
{
return(self->name->ob_type->tp_print(self->name, fp, flags));
}
+#endif
static PyObject*
enumitem_repr (zbarEnumItem *self)
@@ -115,7 +118,9 @@ PyTypeObject zbarEnumItem_Type = {
.tp_new = (newfunc)enumitem_new,
.tp_dealloc = (destructor)enumitem_dealloc,
.tp_str = (reprfunc)enumitem_str,
+#if PY_MAJOR_VERSION < 3
.tp_print = (printfunc)enumitem_print,
+#endif
.tp_repr = (reprfunc)enumitem_repr,
};

Privacy Policy