`tarfile.TarFile` has several missing overloads
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 5.1k
- Forks
- 2.1k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 82
Description
Right now TarFile.__init__ is defined as: https://github.com/python/typeshed/blob/c7e29eccd9759411c0f46580e20727038668b320/stdlib/tarfile.pyi#L128-L132
Which is not exactly right, because there's a case when name and fileobj are both None at the same time. And this will lead to runtime errors:
>>> import tarfile
>>> tarfile.TarFile(None, fileobj=None)
Traceback (most recent call last):
File "<python-input-2>", line 1, in <module>
tarfile.TarFile(None, fileobj=None)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "/Users/sobolev/Desktop/cpython/Lib/tarfile.py", line 1729, in __init__
fileobj = bltn_open(name, self._mode)
TypeError: expected str, bytes or os.PathLike object, not NoneType
Right now mypy does not raise any errors for this broken case: https://mypy-play.net/?mypy=latest&python=3.12&gist=7452d274249fafba1f8a16565d5486c6
We need either name or fileobj, they can be both None at the same time. So, we need to add overloads.
There are several other methods that needs to be updated like open and taropen, maybe others.
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 stdlib/tarfile.pyi autour des lignes 128-132 et examinez les signatures de TarFile.init, open et taropen. Reproduisez l'appel None/None avec mypy en utilisant l'exemple de playground lié, puis vérifiez que les surcharges représentent les combinaisons name/fileobj valides et diagnostiquez le cas invalide.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- devtools
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 48/100