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]