Skip to content

Commit 78d1dfe

Browse files
authored
Fix ManagedDict functions for Python 3.13 (#17507)
`PyObject_VisitManagedDict` and `PyObject_ClearManagedDict` were made public in python/cpython#108763. Both are available from `pythoncapi_compat.h`.
1 parent acc65b5 commit 78d1dfe

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

mypyc/codegen/emitclass.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -734,7 +734,7 @@ def generate_traverse_for_class(cl: ClassIR, func_name: str, emitter: Emitter) -
734734
for attr, rtype in base.attributes.items():
735735
emitter.emit_gc_visit(f"self->{emitter.attr(attr)}", rtype)
736736
if has_managed_dict(cl, emitter):
737-
emitter.emit_line("_PyObject_VisitManagedDict((PyObject *)self, visit, arg);")
737+
emitter.emit_line("PyObject_VisitManagedDict((PyObject *)self, visit, arg);")
738738
elif cl.has_dict:
739739
struct_name = cl.struct_name(emitter.names)
740740
# __dict__ lives right after the struct and __weakref__ lives right after that
@@ -757,7 +757,7 @@ def generate_clear_for_class(cl: ClassIR, func_name: str, emitter: Emitter) -> N
757757
for attr, rtype in base.attributes.items():
758758
emitter.emit_gc_clear(f"self->{emitter.attr(attr)}", rtype)
759759
if has_managed_dict(cl, emitter):
760-
emitter.emit_line("_PyObject_ClearManagedDict((PyObject *)self);")
760+
emitter.emit_line("PyObject_ClearManagedDict((PyObject *)self);")
761761
elif cl.has_dict:
762762
struct_name = cl.struct_name(emitter.names)
763763
# __dict__ lives right after the struct and __weakref__ lives right after that

0 commit comments

Comments
 (0)