From 0eb59b3c62e9b1c2776ac387943eff0bb09d4271 Mon Sep 17 00:00:00 2001 From: Sergey Miryanov Date: Tue, 24 Jun 2025 01:18:25 +0500 Subject: [PATCH 1/9] Add comemnt for Py_TPFLAGS_PREHEADER --- Include/object.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Include/object.h b/Include/object.h index c75e9db0cbd935..e2ac5300b431dc 100644 --- a/Include/object.h +++ b/Include/object.h @@ -534,6 +534,9 @@ given type object has a specified feature. */ #define Py_TPFLAGS_MANAGED_DICT (1 << 4) +/* Type has dictionary or weakref pointers that are managed by VM and has + * to allocate space to store these. + */ #define Py_TPFLAGS_PREHEADER (Py_TPFLAGS_MANAGED_WEAKREF | Py_TPFLAGS_MANAGED_DICT) /* Set if instances of the type object are treated as sequences for pattern matching */ From 3195c3333907c3d1f0031f255558d7938f925192 Mon Sep 17 00:00:00 2001 From: Sergey Miryanov Date: Tue, 24 Jun 2025 13:06:33 +0500 Subject: [PATCH 2/9] Add Py_TPFLAGS_PREHEADER to typeobj.rst --- Doc/c-api/typeobj.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Doc/c-api/typeobj.rst b/Doc/c-api/typeobj.rst index af2bead3bb5004..fe5b1c4c02e2f5 100644 --- a/Doc/c-api/typeobj.rst +++ b/Doc/c-api/typeobj.rst @@ -1287,6 +1287,15 @@ and :c:data:`PyType_Type` effectively act as defaults.) :c:member:`~PyTypeObject.tp_weaklistoffset` field is set in a superclass. + .. c:macro:: Py_TPFLAGS_PREHEADER + + This is a shorthand for checking is :c:macro:`Py_TPFLAGS_MANAGED_DICT` or + :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` present. Supposed only for internal + usage. + + .. versionadded:: 3.12 + + .. c:macro:: Py_TPFLAGS_ITEMS_AT_END Only usable with variable-size types, i.e. ones with non-zero From 6b37dcf8d0a34f48edcad1c2bfcd014d46939823 Mon Sep 17 00:00:00 2001 From: Sergey Miryanov Date: Tue, 24 Jun 2025 13:08:25 +0500 Subject: [PATCH 3/9] Add news --- .../2025-06-24-13-08-15.gh-issue-95245.3whjTE.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-06-24-13-08-15.gh-issue-95245.3whjTE.rst diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-06-24-13-08-15.gh-issue-95245.3whjTE.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-06-24-13-08-15.gh-issue-95245.3whjTE.rst new file mode 100644 index 00000000000000..7fe309691c410e --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-06-24-13-08-15.gh-issue-95245.3whjTE.rst @@ -0,0 +1 @@ +Add documnetation for :c:macro:`Py_TPFLAGS_MANAGED_Py_TPFLAGS_PREHEADER` From fc7fb8553d21c6f8eed487e4cae001f900fd3031 Mon Sep 17 00:00:00 2001 From: Sergey Miryanov Date: Tue, 24 Jun 2025 13:50:14 +0500 Subject: [PATCH 4/9] Fix news entry --- .../2025-06-24-13-08-15.gh-issue-95245.3whjTE.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-06-24-13-08-15.gh-issue-95245.3whjTE.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-06-24-13-08-15.gh-issue-95245.3whjTE.rst index 7fe309691c410e..34a559dd801bcf 100644 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-06-24-13-08-15.gh-issue-95245.3whjTE.rst +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-06-24-13-08-15.gh-issue-95245.3whjTE.rst @@ -1 +1 @@ -Add documnetation for :c:macro:`Py_TPFLAGS_MANAGED_Py_TPFLAGS_PREHEADER` +Add documnetation for :c:macro:`Py_TPFLAGS_PREHEADER` From 2062b3d3461a01e170f4b4f1356a545e4a5c3fce Mon Sep 17 00:00:00 2001 From: Sergey Miryanov Date: Mon, 7 Jul 2025 16:58:17 +0500 Subject: [PATCH 5/9] Update Doc/c-api/typeobj.rst Co-authored-by: Petr Viktorin --- Doc/c-api/typeobj.rst | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Doc/c-api/typeobj.rst b/Doc/c-api/typeobj.rst index fe5b1c4c02e2f5..a832ca397e3187 100644 --- a/Doc/c-api/typeobj.rst +++ b/Doc/c-api/typeobj.rst @@ -1289,9 +1289,12 @@ and :c:data:`PyType_Type` effectively act as defaults.) .. c:macro:: Py_TPFLAGS_PREHEADER - This is a shorthand for checking is :c:macro:`Py_TPFLAGS_MANAGED_DICT` or - :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` present. Supposed only for internal - usage. + A shorthand for checking if VM-managed fields are present. + Currently, this macro is equivalent to + :c:expr:`Py_TPFLAGS_MANAGED_DICT | Py_TPFLAGS_MANAGED_WEAKREF`. + + This macro is intended for internal usage only; prefer using individual + flags instead. .. versionadded:: 3.12 From fd1f31144103bb2a769d60f59b2a6d8cf91b5630 Mon Sep 17 00:00:00 2001 From: Sergey Miryanov Date: Mon, 7 Jul 2025 18:22:35 +0500 Subject: [PATCH 6/9] Delete news entry --- .../2025-06-24-13-08-15.gh-issue-95245.3whjTE.rst | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-06-24-13-08-15.gh-issue-95245.3whjTE.rst diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-06-24-13-08-15.gh-issue-95245.3whjTE.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-06-24-13-08-15.gh-issue-95245.3whjTE.rst deleted file mode 100644 index 34a559dd801bcf..00000000000000 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-06-24-13-08-15.gh-issue-95245.3whjTE.rst +++ /dev/null @@ -1 +0,0 @@ -Add documnetation for :c:macro:`Py_TPFLAGS_PREHEADER` From 0c8436b5a10d6088543b46d1094d37a3b35d4a2c Mon Sep 17 00:00:00 2001 From: Sergey Miryanov Date: Fri, 22 Aug 2025 22:59:03 +0500 Subject: [PATCH 7/9] Update Doc/c-api/typeobj.rst Co-authored-by: Peter Bierma --- Doc/c-api/typeobj.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/c-api/typeobj.rst b/Doc/c-api/typeobj.rst index a832ca397e3187..f83745f3935d2f 100644 --- a/Doc/c-api/typeobj.rst +++ b/Doc/c-api/typeobj.rst @@ -1289,7 +1289,7 @@ and :c:data:`PyType_Type` effectively act as defaults.) .. c:macro:: Py_TPFLAGS_PREHEADER - A shorthand for checking if VM-managed fields are present. + This bit indicates that the VM will manage some fields by storing them before the object. Currently, this macro is equivalent to :c:expr:`Py_TPFLAGS_MANAGED_DICT | Py_TPFLAGS_MANAGED_WEAKREF`. From e788241fd7a573fc38933977f14c55a3d5cde1e3 Mon Sep 17 00:00:00 2001 From: Sergey Miryanov Date: Fri, 22 Aug 2025 23:00:52 +0500 Subject: [PATCH 8/9] Apply suggestions from review --- Doc/c-api/typeobj.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Doc/c-api/typeobj.rst b/Doc/c-api/typeobj.rst index f83745f3935d2f..facbb70bd3d293 100644 --- a/Doc/c-api/typeobj.rst +++ b/Doc/c-api/typeobj.rst @@ -1289,11 +1289,12 @@ and :c:data:`PyType_Type` effectively act as defaults.) .. c:macro:: Py_TPFLAGS_PREHEADER - This bit indicates that the VM will manage some fields by storing them before the object. - Currently, this macro is equivalent to + These bits indicate that the VM will manage some fields by storing them + before the object. Currently, this macro is equivalent to :c:expr:`Py_TPFLAGS_MANAGED_DICT | Py_TPFLAGS_MANAGED_WEAKREF`. - This macro is intended for internal usage only; prefer using individual + This macro value relies on VM implementation, so his value is not + stable and may change in a future version. Prefer using individual flags instead. .. versionadded:: 3.12 From 8134bc8acbdadf43e50a15d6e23f0bc8fff77990 Mon Sep 17 00:00:00 2001 From: Sergey Miryanov Date: Fri, 22 Aug 2025 23:09:20 +0500 Subject: [PATCH 9/9] Update Doc/c-api/typeobj.rst Co-authored-by: Peter Bierma --- Doc/c-api/typeobj.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/c-api/typeobj.rst b/Doc/c-api/typeobj.rst index 60429e5331295a..8bd3144f88aa71 100644 --- a/Doc/c-api/typeobj.rst +++ b/Doc/c-api/typeobj.rst @@ -1292,7 +1292,7 @@ and :c:data:`PyType_Type` effectively act as defaults.) before the object. Currently, this macro is equivalent to :c:expr:`Py_TPFLAGS_MANAGED_DICT | Py_TPFLAGS_MANAGED_WEAKREF`. - This macro value relies on VM implementation, so his value is not + This macro value relies on the implementation of the VM, so its value is not stable and may change in a future version. Prefer using individual flags instead.