@@ -7,6 +7,8 @@ from typing import IO, Any, Callable, Iterable, Iterator, Protocol, Sequence, Tu
7
7
from typing_extensions import Literal
8
8
9
9
_DateTuple = Tuple [int , int , int , int , int , int ]
10
+ _ReadWriteMode = Literal ["r" , "w" ]
11
+ _ReadWriteBinaryMode = Literal ["r" , "w" , "rb" , "wb" ]
10
12
_ZipFileMode = Literal ["r" , "w" , "x" , "a" ]
11
13
12
14
class BadZipFile (Exception ): ...
@@ -34,33 +36,43 @@ class ZipExtFile(io.BufferedIOBase):
34
36
MAX_SEEK_READ : int
35
37
36
38
newlines : list [bytes ] | None
37
- mode : str
39
+ mode : _ReadWriteMode
38
40
name : str
39
41
if sys .version_info >= (3 , 7 ):
40
42
@overload
41
43
def __init__ (
42
- self , fileobj : _ClosableZipStream , mode : str , zipinfo : ZipInfo , pwd : bytes | None , close_fileobj : Literal [True ]
44
+ self ,
45
+ fileobj : _ClosableZipStream ,
46
+ mode : _ReadWriteMode ,
47
+ zipinfo : ZipInfo ,
48
+ pwd : bytes | None ,
49
+ close_fileobj : Literal [True ],
43
50
) -> None : ...
44
51
@overload
45
52
def __init__ (
46
53
self ,
47
54
fileobj : _ClosableZipStream ,
48
- mode : str ,
55
+ mode : _ReadWriteMode ,
49
56
zipinfo : ZipInfo ,
50
57
pwd : bytes | None = ...,
51
58
* ,
52
59
close_fileobj : Literal [True ],
53
60
) -> None : ...
54
61
@overload
55
62
def __init__ (
56
- self , fileobj : _ZipStream , mode : str , zipinfo : ZipInfo , pwd : bytes | None = ..., close_fileobj : Literal [False ] = ...
63
+ self ,
64
+ fileobj : _ZipStream ,
65
+ mode : _ReadWriteMode ,
66
+ zipinfo : ZipInfo ,
67
+ pwd : bytes | None = ...,
68
+ close_fileobj : Literal [False ] = ...,
57
69
) -> None : ...
58
70
else :
59
71
@overload
60
72
def __init__ (
61
73
self ,
62
74
fileobj : _ClosableZipStream ,
63
- mode : str ,
75
+ mode : _ReadWriteMode ,
64
76
zipinfo : ZipInfo ,
65
77
decrypter : Callable [[Sequence [int ]], bytes ] | None ,
66
78
close_fileobj : Literal [True ],
@@ -69,7 +81,7 @@ class ZipExtFile(io.BufferedIOBase):
69
81
def __init__ (
70
82
self ,
71
83
fileobj : _ClosableZipStream ,
72
- mode : str ,
84
+ mode : _ReadWriteMode ,
73
85
zipinfo : ZipInfo ,
74
86
decrypter : Callable [[Sequence [int ]], bytes ] | None = ...,
75
87
* ,
@@ -79,7 +91,7 @@ class ZipExtFile(io.BufferedIOBase):
79
91
def __init__ (
80
92
self ,
81
93
fileobj : _ZipStream ,
82
- mode : str ,
94
+ mode : _ReadWriteMode ,
83
95
zipinfo : ZipInfo ,
84
96
decrypter : Callable [[Sequence [int ]], bytes ] | None = ...,
85
97
close_fileobj : Literal [False ] = ...,
@@ -89,6 +101,8 @@ class ZipExtFile(io.BufferedIOBase):
89
101
def __repr__ (self ) -> str : ...
90
102
def peek (self , n : int = ...) -> bytes : ...
91
103
def read1 (self , n : int | None ) -> bytes : ... # type: ignore
104
+ if sys .version_info >= (3 , 7 ):
105
+ def seek (self , offset : int , whence : int = ...) -> int : ...
92
106
93
107
class _Writer (Protocol ):
94
108
def write (self , __s : str ) -> object : ...
@@ -127,7 +141,7 @@ class ZipFile:
127
141
) -> None : ...
128
142
else :
129
143
def __init__ (
130
- self , file : StrPath | IO [bytes ], mode : str = ..., compression : int = ..., allowZip64 : bool = ...
144
+ self , file : StrPath | IO [bytes ], mode : _ZipFileMode = ..., compression : int = ..., allowZip64 : bool = ...
131
145
) -> None : ...
132
146
def __enter__ (self : Self ) -> Self : ...
133
147
def __exit__ (
@@ -138,7 +152,7 @@ class ZipFile:
138
152
def infolist (self ) -> list [ZipInfo ]: ...
139
153
def namelist (self ) -> list [str ]: ...
140
154
def open (
141
- self , name : str | ZipInfo , mode : Literal [ "r" , "w" ] = ..., pwd : bytes | None = ..., * , force_zip64 : bool = ...
155
+ self , name : str | ZipInfo , mode : _ReadWriteMode = ..., pwd : bytes | None = ..., * , force_zip64 : bool = ...
142
156
) -> IO [bytes ]: ...
143
157
def extract (self , member : str | ZipInfo , path : StrPath | None = ..., pwd : bytes | None = ...) -> str : ...
144
158
def extractall (
@@ -171,7 +185,7 @@ class ZipFile:
171
185
172
186
class PyZipFile (ZipFile ):
173
187
def __init__ (
174
- self , file : str | IO [bytes ], mode : str = ..., compression : int = ..., allowZip64 : bool = ..., optimize : int = ...
188
+ self , file : str | IO [bytes ], mode : _ZipFileMode = ..., compression : int = ..., allowZip64 : bool = ..., optimize : int = ...
175
189
) -> None : ...
176
190
def writepy (self , pathname : str , basename : str = ..., filterfunc : Callable [[str ], bool ] | None = ...) -> None : ...
177
191
@@ -205,20 +219,20 @@ class ZipInfo:
205
219
def FileHeader (self , zip64 : bool | None = ...) -> bytes : ...
206
220
207
221
class _PathOpenProtocol (Protocol ):
208
- def __call__ (self , mode : str = ..., pwd : bytes | None = ..., * , force_zip64 : bool = ...) -> IO [bytes ]: ...
222
+ def __call__ (self , mode : _ReadWriteMode = ..., pwd : bytes | None = ..., * , force_zip64 : bool = ...) -> IO [bytes ]: ...
209
223
210
224
if sys .version_info >= (3 , 8 ):
211
225
class Path :
212
226
@property
213
227
def name (self ) -> str : ...
214
228
@property
215
- def parent (self ) -> Path : ... # undocumented
229
+ def parent (self ) -> PathLike [ str ] : ... # undocumented
216
230
if sys .version_info >= (3 , 10 ):
217
231
@property
218
- def filename (self ) -> PathLike [str ]: ...
232
+ def filename (self ) -> PathLike [str ]: ... # undocumented
219
233
def __init__ (self , root : ZipFile | StrPath | IO [bytes ], at : str = ...) -> None : ...
220
234
if sys .version_info >= (3 , 9 ):
221
- def open (self , mode : str = ..., * args : Any , pwd : bytes | None = ..., ** kwargs : Any ) -> IO [bytes ]: ...
235
+ def open (self , mode : _ReadWriteBinaryMode = ..., * args : Any , pwd : bytes | None = ..., ** kwargs : Any ) -> IO [bytes ]: ...
222
236
else :
223
237
@property
224
238
def open (self ) -> _PathOpenProtocol : ...
@@ -235,7 +249,10 @@ if sys.version_info >= (3, 8):
235
249
write_through : bool = ...,
236
250
) -> str : ...
237
251
def read_bytes (self ) -> bytes : ...
238
- def joinpath (self , add : StrPath ) -> Path : ... # undocumented
252
+ if sys .version_info >= (3 , 10 ):
253
+ def joinpath (self , * other : StrPath ) -> Path : ...
254
+ else :
255
+ def joinpath (self , add : StrPath ) -> Path : ... # undocumented
239
256
def __truediv__ (self , add : StrPath ) -> Path : ...
240
257
241
258
def is_zipfile (filename : StrPath | IO [bytes ]) -> bool : ...
0 commit comments