Open
Description
Bug report
Bug description:
The following code is the template to illustrate the problems:
#!/usr/bin/env python3.13
g0 = 0
def main():
import pdb
pdb.Pdb().set_trace()
if __name__ == "__main__":
main()
The problems:
- not re-using the same Cells for each local (this is really the biggest issue)
(Pdb) t = 1
(Pdb) f = lambda: t
(Pdb) t = 2
(Pdb) f()
1
- not obtaining the last expression (a pdb test suggests otherwise, but it is actually wrong)
(Pdb) t=10; (lambda: t)()
<no output>
(it does return a value for global g; g=1; g
. but I'm at a loss as to where that value comes from)
- giving a weird result with shadowed variables (actually because it bails out):
(Pdb) g0 = 1
(Pdb) global g0; t=g0; t=(lambda: t)()
*** NameError: name 't' is not defined
- not removing annotations (not allowed for nonlocal variables)
(Pdb) t:int = 1; (lambda: t)()
*** NameError: name 't' is not defined
- using indentation to set up block scope
(Pdb) print((lambda:len("""
... """))())
7
- not remembering globals (this is arguable):
(Pdb) global g; g=1
(Pdb) t=2
(Pdb) g=(lambda: t)()
(Pdb) global g; g
1
CPython versions tested on:
3.13
Operating systems tested on:
Linux