limitations of new multiline code and closure support in pdb
Abierto
@gaogaotiantian ya está trabajando en esto.
Desde el 18/11/2024.
stdlib
type-bug
- Lenguaje dominante
- Python
- Estrellas
- 77.2k
- Forks
- 35.9k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Evaluación
Este issue todavía no se ha evaluado.