Thanks to visit codestin.com
Credit goes to github.com

Skip to content

limitations of new multiline code and closure support in pdb #126958

Open
@limwz01

Description

@limwz01

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

@gaogaotiantian

CPython versions tested on:

3.13

Operating systems tested on:

Linux

Metadata

Metadata

Labels

stdlibPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions