https://github.com/python/cpython/commit/8c796782fc3fbd380ca599d7b2dcf896375c5e60
commit: 8c796782fc3fbd380ca599d7b2dcf896375c5e60
branch: main
author: Pablo Galindo Salgado <[email protected]>
committer: pablogsal <[email protected]>
date: 2026-05-04T23:00:23Z
summary:

gh-146462: Add dict introspection debug offsets (#148633)

files:
A 
Misc/NEWS.d/next/Core_and_Builtins/2026-04-15-12-00-00.gh-issue-146462.1YfK6v.rst
M Include/internal/pycore_debug_offsets.h
M Modules/_remote_debugging/debug_offsets_validation.h

diff --git a/Include/internal/pycore_debug_offsets.h 
b/Include/internal/pycore_debug_offsets.h
index 1dd10f8d94cfd8..18490f98a918a7 100644
--- a/Include/internal/pycore_debug_offsets.h
+++ b/Include/internal/pycore_debug_offsets.h
@@ -158,8 +158,16 @@ typedef struct _Py_DebugOffsets {
         uint64_t tp_name;
         uint64_t tp_repr;
         uint64_t tp_flags;
+        uint64_t tp_basicsize;
+        uint64_t tp_dictoffset;
     } type_object;
 
+    // PyHeapTypeObject offset;
+    struct _heap_type_object {
+        uint64_t size;
+        uint64_t ht_cached_keys;
+    } heap_type_object;
+
     // PyTuple object offset;
     struct _tuple_object {
         uint64_t size;
@@ -330,6 +338,12 @@ typedef struct _Py_DebugOffsets {
         .tp_name = offsetof(PyTypeObject, tp_name), \
         .tp_repr = offsetof(PyTypeObject, tp_repr), \
         .tp_flags = offsetof(PyTypeObject, tp_flags), \
+        .tp_basicsize = offsetof(PyTypeObject, tp_basicsize), \
+        .tp_dictoffset = offsetof(PyTypeObject, tp_dictoffset), \
+    }, \
+    .heap_type_object = { \
+        .size = sizeof(PyHeapTypeObject), \
+        .ht_cached_keys = offsetof(PyHeapTypeObject, ht_cached_keys), \
     }, \
     .tuple_object = { \
         .size = sizeof(PyTupleObject), \
diff --git 
a/Misc/NEWS.d/next/Core_and_Builtins/2026-04-15-12-00-00.gh-issue-146462.1YfK6v.rst
 
b/Misc/NEWS.d/next/Core_and_Builtins/2026-04-15-12-00-00.gh-issue-146462.1YfK6v.rst
new file mode 100644
index 00000000000000..44019b7562a344
--- /dev/null
+++ 
b/Misc/NEWS.d/next/Core_and_Builtins/2026-04-15-12-00-00.gh-issue-146462.1YfK6v.rst
@@ -0,0 +1,3 @@
+Added ``PyTypeObject.tp_basicsize``, ``PyTypeObject.tp_dictoffset``, and
+``PyHeapTypeObject.ht_cached_keys`` offsets to :c:type:`!_Py_DebugOffsets` to
+support version-independent read-only dict introspection tools.
diff --git a/Modules/_remote_debugging/debug_offsets_validation.h 
b/Modules/_remote_debugging/debug_offsets_validation.h
index 1507026306192e..f070f03ac459dc 100644
--- a/Modules/_remote_debugging/debug_offsets_validation.h
+++ b/Modules/_remote_debugging/debug_offsets_validation.h
@@ -31,7 +31,7 @@
 #define FIELD_SIZE(type, member) sizeof(((type *)0)->member)
 
 enum {
-    PY_REMOTE_DEBUG_OFFSETS_TOTAL_SIZE = 848,
+    PY_REMOTE_DEBUG_OFFSETS_TOTAL_SIZE = 880,
     PY_REMOTE_ASYNC_DEBUG_OFFSETS_TOTAL_SIZE = 104,
 };
 

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to