Python 3.12: Fix the structure of class property
authorChristian Tismer <tismer@stackless.com>
Tue, 14 Feb 2023 13:46:22 +0000 (14:46 +0100)
committerDmitry Shachnev <mitya57@debian.org>
Tue, 25 Jun 2024 20:47:03 +0000 (23:47 +0300)
There is a PySide bug in Python 3.10 already: The structure for
classproperty derives from the property structure. This was extended
in Python 3.10, already, but the type generation check was made more
exhaustive in Python 3.12 and recognized that.

This change is only for making the compiler/C API happy.
In order to use the extension field, it is necessary to do a runtime
check because of the Limited API.

Task-number: PYSIDE-2230
Change-Id: I88dcaa11589ff41852f08fa2defa5200a0dd4eb6
Reviewed-by: Adrian Herrmann <adrian.herrmann@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
(cherry picked from commit edfd9a5ad174a48f8d7da511dc6a1c69e931a418)

Gbp-Pq: Name Python-3.12-Fix-the-structure-of-class-property.patch

sources/pyside2/libpyside/feature_select.cpp

index 3011b3584c39f3836c065f5e965cff373b927c98..b9e14709a8e6caf29eaf43c14893ca6ca1a217c5 100644 (file)
@@ -671,6 +671,11 @@ typedef struct {
     PyObject *prop_set;
     PyObject *prop_del;
     PyObject *prop_doc;
+#if PY_VERSION_HEX >= 0x030A0000
+    // Note: This is a problem with Limited API: We have no direct access.
+    //       You need to pick it from runtime info.
+    PyObject *prop_name;
+#endif
     int getter_doc;
 } propertyobject;