The static types LineIterator and PositionsIterator in codeobject.c are not finalized at exit leading to memory leak.
Reproducer:
def func() -> None:
pass
print(type(func.__code__.co_positions()).mro())
print(type(func.__code__.co_lines()).mro())
Memory leak:
[<class 'positions_iterator'>, <class 'object'>]
[<class 'line_iterator'>, <class 'object'>]
[138 refs, 54 blocks]
The static types
LineIteratorandPositionsIteratorincodeobject.care not finalized at exit leading to memory leak.Reproducer:
Memory leak: