repr(PermissionError) lacks filename information
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
repr(PermissionError) looses the information about the affected filename, because it only returns PermissionError(13, 'Permission denied'). Example code to demonstrate that (run as non-root):
#!/usr/bin/python3
try:
open("/path-with-no-write-access", "w")
except PermissionError as error:
print(f"error = {error}")
print(f"eval(repr(error)) = {eval(repr(error))}")
Output of this code:
error = [Errno 13] Permission denied: '/path-with-no-write-access'
eval(repr(error)) = [Errno 13] Permission denied
I also failed to figure out how to raise a PermissionError with a filename specified. PermissionError takes no keyword arguments.
Rational
apport uses repr(error) in UserInterface.collect_info() in case the thread_collect_info thread crashes to present this information to the user. One test case failed with PermissionError(13, 'Permission denied') which did not help at all to trouble shoot the failure. If the representation of the exception had included the filename, it would have saved me time.
Your environment
- CPython versions tested on: 3.10.4
- Operating system and architecture: Ubuntu 22.04 LTS (jammy)
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 l’exemple de PermissionError signalé sur un système sans privilèges root et examinez comment PermissionError stocke et formate son filename. Suivez la représentation de l’exception et les tests existants pour les sous-classes de OSError, puis ajoutez une couverture montrant les informations filename souhaitées dans repr tout en préservant le comportement de eval(repr(error)) lorsque cela s’applique.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- operating-systems
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100