1
1
import ssl
2
2
import sys
3
- from _typeshed import StrOrBytesPath
3
+ from _typeshed import StrOrBytesPath , SupportsRead
4
4
from email .message import Message
5
5
from http .client import HTTPMessage , HTTPResponse , _HTTPConnectionProtocol
6
6
from http .cookiejar import CookieJar
7
- from typing import IO , Any , Callable , ClassVar , Mapping , MutableMapping , NoReturn , Pattern , Sequence , TypeVar , overload
7
+ from typing import IO , Any , Callable , ClassVar , Iterable , Mapping , MutableMapping , NoReturn , Pattern , Sequence , TypeVar , overload
8
8
from urllib .error import HTTPError
9
9
from urllib .response import addclosehook , addinfourl
10
10
11
11
_T = TypeVar ("_T" )
12
12
_UrlopenRet = Any
13
+ _DataType = bytes | SupportsRead [bytes ] | Iterable [bytes ] | None
13
14
14
15
def urlopen (
15
16
url : str | Request ,
16
- data : bytes | None = ...,
17
+ data : _DataType | None = ...,
17
18
timeout : float | None = ...,
18
19
* ,
19
20
cafile : str | None = ...,
@@ -51,7 +52,7 @@ class Request:
51
52
host : str
52
53
origin_req_host : str
53
54
selector : str
54
- data : bytes | None
55
+ data : _DataType
55
56
headers : MutableMapping [str , str ]
56
57
unredirected_hdrs : dict [str , str ]
57
58
unverifiable : bool
@@ -60,7 +61,7 @@ class Request:
60
61
def __init__ (
61
62
self ,
62
63
url : str ,
63
- data : bytes | None = ...,
64
+ data : _DataType = ...,
64
65
headers : MutableMapping [str , str ] = ...,
65
66
origin_req_host : str | None = ...,
66
67
unverifiable : bool = ...,
@@ -83,7 +84,7 @@ class Request:
83
84
class OpenerDirector :
84
85
addheaders : list [tuple [str , str ]]
85
86
def add_handler (self , handler : BaseHandler ) -> None : ...
86
- def open (self , fullurl : str | Request , data : bytes | None = ..., timeout : float | None = ...) -> _UrlopenRet : ...
87
+ def open (self , fullurl : str | Request , data : _DataType = ..., timeout : float | None = ...) -> _UrlopenRet : ...
87
88
def error (self , proto : str , * args : Any ) -> _UrlopenRet : ...
88
89
def close (self ) -> None : ...
89
90
@@ -242,7 +243,7 @@ def urlretrieve(
242
243
url : str ,
243
244
filename : StrOrBytesPath | None = ...,
244
245
reporthook : Callable [[int , int , int ], None ] | None = ...,
245
- data : bytes | None = ...,
246
+ data : _DataType = ...,
246
247
) -> tuple [str , HTTPMessage ]: ...
247
248
def urlcleanup () -> None : ...
248
249
0 commit comments