-
-
Couldn't load subscription status.
- Fork 1.9k
Labels
help wantedAn actionable problem of low to medium complexity where a PR would be very welcomeAn actionable problem of low to medium complexity where a PR would be very welcomestubs: false negativeType checkers do not report an error, but shouldType checkers do not report an error, but should
Description
Right now TarFile.__init__ is defined as:
Lines 128 to 132 in c7e29ec
| def __init__( | |
| self, | |
| name: StrOrBytesPath | None = None, | |
| mode: Literal["r", "a", "w", "x"] = "r", | |
| fileobj: _Fileobj | None = None, |
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 NoneTypeRight 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.
ashm-dev
Metadata
Metadata
Assignees
Labels
help wantedAn actionable problem of low to medium complexity where a PR would be very welcomeAn actionable problem of low to medium complexity where a PR would be very welcomestubs: false negativeType checkers do not report an error, but shouldType checkers do not report an error, but should