deduperreload gives invalid tracebacks in reloaded functions
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 55/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Pouca atividade
- Stack de tecnologia
- python
- Domínio
- developer-experience, tooling
Direção de pesquisa
Reproduza o problema com o exemplo module.py fornecido, usando o ponto de entrada %autoreload do IPython e o caminho deduperreload. Rastreie como a função recarregada é criada e verifique se um traceback após o recarregamento aponta para a linha real da asserção, inclusive quando comentários, linhas em branco ou uma classe envolvem a função.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
When a function is reloaded with deduperreload, the line number information from the source file is lost. This breaks tracebacks, causing them to point to the start of the file instead of the correct source line. The reported line number matches the offset from the start of the function (plus one if the function is inside a class), but any comments and blank lines are ignored.
Tested with Python 3.13.14, IPython 9.15.0.
Python 3.13.14 | packaged by conda-forge | (main, Jun 12 2026, 09:50:25) [GCC 14.3.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 9.15.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: %load_ext autoreload
In [2]: %autoreload -p 1
In [3]: %%writefile module.py
...: """
...: The traceback incorrectly points to this line (line 2 of the file)
...: """
...: def func():
...: assert False, "before reload"
...:
...:
In [4]: %aimport module
In [5]: module.func()
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
Cell In[5], line 1
----> 1 module.func()
File /tmp/module.py:5, in func()
4 def func():
----> 5 assert False, "before reload"
AssertionError: before reload
In [6]: %%writefile module.py
...: """
...: The traceback incorrectly points to this line (line 2 of the file)
...: """
...: def func():
...: assert False, "after reload"
...:
...:
Overwriting module.py
In [7]: module.func()
Reloading 'module'.
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
Cell In[7], line 1
----> 1 module.func()
File /tmp/module.py:2, in func()
1 """
----> 2 The traceback incorrectly points to this line (line 2 of the file)
3 """
4 def func():
5 assert False, "after reload"
AssertionError: after reload
- Linguagem predominante
- Python
- Estrelas
- 16.8k
- Forks
- 4.5k
- Merge médio
- 5h 50min
- PRs com merge (30d)
- 5
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de ipython/ipython
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 78/100
-
autoreload breaks on partial Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100
-
bug magics
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
Todas as issues de ipython/ipython
Issues semelhantes
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
stephrobert/dsoxlab#238 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
sublimehq/package_control#1780 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
nwg-piotr/nwg-displays#145 ·