Incorrect code collapse while prompting where the error is.
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 36k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Bug report
Bug description:
Read the following code:
# incorrect_collapse.py
def fib(number: int) -> int:
assert number > 0
if number == 1:
return 1
return fib(number - 1) + fib(number - 2) # Notice here
print(fib(2))
There is a mistake in the code above, so if you try to run it, you will get the following traceback:
PC-Killer@ArchLinuxPC ~/p/bugs> python incorrect_collapse.py
Traceback (most recent call last):
File "/home/PC-Killer/python_work/bugs/incorrect_collapse.py", line 9, in <module>
print(fib(2))
~~~^^^
File "/home/PC-Killer/python_work/bugs/incorrect_collapse.py", line 6, in fib
return fib(number - 1) + fib(number - 2) # Notice here
~~~^^^^^^^^^^^^
File "/home/PC-Killer/python_work/bugs/incorrect_collapse.py", line 2, in fib
assert number > 0
^^^^^^^^^^
AssertionError
Notice that the error happened while running the code fib(number - 2).
However, if the number is 5, the duplicate code will be automatically collapsed:
# incorrect_collapse.py
def fib(number: int) -> int:
assert number > 0
if number == 1:
return 1
return fib(number - 1) + fib(number - 2) # Notice here
print(fib(5))
PC-Killer@ArchLinuxPC ~/p/bugs [1]> python incorrect_collapse.py
Traceback (most recent call last):
File "/home/PC-Killer/python_work/bugs/incorrect_collapse.py", line 9, in <module>
print(fib(5))
~~~^^^
File "/home/PC-Killer/python_work/bugs/incorrect_collapse.py", line 6, in fib
return fib(number - 1) + fib(number - 2) # Notice here
~~~^^^^^^^^^^^^
File "/home/PC-Killer/python_work/bugs/incorrect_collapse.py", line 6, in fib
return fib(number - 1) + fib(number - 2) # Notice here
~~~^^^^^^^^^^^^
File "/home/PC-Killer/python_work/bugs/incorrect_collapse.py", line 6, in fib
return fib(number - 1) + fib(number - 2) # Notice here
~~~^^^^^^^^^^^^
[Previous line repeated 1 more time]
File "/home/PC-Killer/python_work/bugs/incorrect_collapse.py", line 2, in fib
assert number > 0
^^^^^^^^^^
AssertionError
The error happened in fib(number - 2). However, in the traceback above, I can only suppose the error happened while running fib(number - 1), which increases the time to find where the real bug is.
CPython versions tested on:
3.13, 3.14
Operating systems tested on:
Linux
Linked PRs
- gh-129973
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire le comportement de fusion du traceback avec les deux exemples de Fibonacci de l’issue sur CPython 3.13 ou 3.14, puis inspectez les points d’entrée du formatage du traceback et de la fusion des frames. Comparez la sortie fusionnée avec le traceback non tronqué et le PR lié gh-129973 ; le travail est terminé lorsque l’expression qui échoue reste identifiable après la fusion des frames répétées.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- developer-experience
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 20/100