Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Closed
Description
Bug report
% cat leak.py def f(): __foo = 1 class X[T]: ... return __foof()% python3.12 leak.pyTraceback (most recent call last): File "/Users/jelle/py/cpython/leak.py", line 5, in <module> f() File "/Users/jelle/py/cpython/leak.py", line 4, in f return __foo ^^^^^NameError: name '_X__foo' is not defined. Did you mean: '__foo'?The PEP 695 implementation of generic classes turns on name mangling for the type parameter scope, but never turns it off afterwards. As a result, all code that appears syntactically after the PEP 695 scope also gets mangling applied to it.
I have a fix for this, but I believe applying it requires updating the magic number, and I'm not sure we can afford to to do that on the 3.12 branch.