Closed `sys.stdout` causes an endless stream of tracebacks in the repl
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 35.9k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Bug report
Bug description:
Steps to reproduce:
Run Python 3.14.7 and enter the following:
import sys
f = open("file.txt", "w")
sys.stdout = f
f.close()
After the file is closed, the REPL attempts to display the next prompt.
Actual behavior:
The REPL repeatedly raises:
ValueError: I/O operation on closed file
This results in a very large stream of repeated tracebacks instead of returning to a usable prompt.
The traceback points to _pyrepl and eventually to:
_colorize.py", line 313, in can_colorize
return os.isatty(file.fileno())
ValueError: I/O operation on closed file
Expected behavior:
The REPL should handle a closed sys.stdout gracefully instead of repeatedly emitting tracebacks.
Environment:
Python: 3.14.7
OS: Fedora Linux 44 (Workstation Edition) x86_64
CPython versions tested on:
3.14
Operating systems tested on:
Linux
Linked PRs
- gh-157590
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 le traceback de _pyrepl et le point d’entrée can_colorize dans _colorize.py vers la ligne 313, puis reproduisez le cas de sys.stdout fermé dans la REPL Python 3.14. C’est terminé lorsqu’un stdout fermé ne produit plus un flux interminable de tracebacks et que la REPL gère correctement le prompt suivant.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- cli
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 25/100