-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Open
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 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.
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