Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork1.9k
Open
Description
Right nowTarFile.__init__
is defined as:
Lines 128 to 132 inc7e29ec
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 whenname
andfileobj
are bothNone
at the same time. And this will lead to runtime errors:
>>>importtarfile>>>tarfile.TarFile(None,fileobj=None)Traceback (mostrecentcalllast):File"<python-input-2>",line1,in<module>tarfile.TarFile(None,fileobj=None)~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^File"/Users/sobolev/Desktop/cpython/Lib/tarfile.py",line1729,in__init__fileobj=bltn_open(name,self._mode)TypeError:expectedstr,bytesoros.PathLikeobject,notNoneType
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 eithername
orfileobj
, they can be bothNone
at the same time. So, we need to add overloads.
There are several other methods that needs to be updated likeopen
andtaropen
, maybe others.