Skip to content

Commit 675ab77

Browse files
Add missing methods in urllib.request (#4571)
1 parent de70d01 commit 675ab77

File tree

1 file changed

+127
-2
lines changed

1 file changed

+127
-2
lines changed

stdlib/3/urllib/request.pyi

Lines changed: 127 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,24 @@ import sys
44
from email.message import Message
55
from http.client import HTTPMessage, HTTPResponse, _HTTPConnectionProtocol
66
from http.cookiejar import CookieJar
7-
from typing import IO, Any, Callable, ClassVar, Dict, List, Mapping, NoReturn, Optional, Sequence, Tuple, TypeVar, Union, overload
7+
from typing import (
8+
IO,
9+
Any,
10+
Callable,
11+
ClassVar,
12+
Dict,
13+
List,
14+
Mapping,
15+
NoReturn,
16+
Optional,
17+
Pattern,
18+
Sequence,
19+
Tuple,
20+
TypeVar,
21+
Union,
22+
overload,
23+
)
24+
from urllib.error import HTTPError
825
from urllib.response import addinfourl
926

1027
_T = TypeVar("_T")
@@ -65,12 +82,14 @@ class Request:
6582
@overload
6683
def get_header(self, header_name: str, default: _T) -> Union[str, _T]: ...
6784
def header_items(self) -> List[Tuple[str, str]]: ...
85+
def has_proxy(self) -> bool: ...
6886

6987
class OpenerDirector:
7088
addheaders: List[Tuple[str, str]]
7189
def add_handler(self, handler: BaseHandler) -> None: ...
7290
def open(self, fullurl: Union[str, Request], data: Optional[bytes] = ..., timeout: Optional[float] = ...) -> _UrlopenRet: ...
7391
def error(self, proto: str, *args: Any) -> _UrlopenRet: ...
92+
def close(self) -> None: ...
7493

7594
class BaseHandler:
7695
handler_order: ClassVar[int]
@@ -79,9 +98,15 @@ class BaseHandler:
7998
def close(self) -> None: ...
8099
def http_error_nnn(self, req: Request, fp: IO[str], code: int, msg: int, headers: Mapping[str, str]) -> _UrlopenRet: ...
81100

82-
class HTTPDefaultErrorHandler(BaseHandler): ...
101+
class HTTPDefaultErrorHandler(BaseHandler):
102+
def http_error_default(
103+
self, req: Request, fp: IO[bytes], code: int, msg: str, hdrs: Mapping[str, str]
104+
) -> HTTPError: ... # undocumented
83105

84106
class HTTPRedirectHandler(BaseHandler):
107+
max_redirections: ClassVar[int] # undocumented
108+
max_repeats: ClassVar[int] # undocumented
109+
inf_msg: ClassVar[str] # undocumented
85110
def redirect_request(
86111
self, req: Request, fp: IO[str], code: int, msg: str, headers: Mapping[str, str], newurl: str
87112
) -> Optional[Request]: ...
@@ -101,14 +126,21 @@ class HTTPRedirectHandler(BaseHandler):
101126
class HTTPCookieProcessor(BaseHandler):
102127
cookiejar: CookieJar
103128
def __init__(self, cookiejar: Optional[CookieJar] = ...) -> None: ...
129+
def http_request(self, request: Request) -> Request: ... # undocumented
130+
def http_response(self, request: Request, response: HTTPResponse) -> HTTPResponse: ... # undocumented
131+
def https_request(self, request: Request) -> Request: ... # undocumented
132+
def https_response(self, request: Request, response: HTTPResponse) -> HTTPResponse: ... # undocumented
104133

105134
class ProxyHandler(BaseHandler):
106135
def __init__(self, proxies: Optional[Dict[str, str]] = ...) -> None: ...
136+
def proxy_open(self, req: Request, proxy: str, type: str) -> Optional[_UrlopenRet]: ... # undocumented
107137
# TODO add a method for every (common) proxy protocol
108138

109139
class HTTPPasswordMgr:
110140
def add_password(self, realm: str, uri: Union[str, Sequence[str]], user: str, passwd: str) -> None: ...
111141
def find_user_password(self, realm: str, authuri: str) -> Tuple[Optional[str], Optional[str]]: ...
142+
def is_suburi(self, base: str, test: str) -> bool: ... # undocumented
143+
def reduce_uri(self, uri: str, default_port: bool = ...) -> str: ... # undocumented
112144

113145
class HTTPPasswordMgrWithDefaultRealm(HTTPPasswordMgr):
114146
def add_password(self, realm: Optional[str], uri: Union[str, Sequence[str]], user: str, passwd: str) -> None: ...
@@ -122,15 +154,23 @@ class HTTPPasswordMgrWithPriorAuth(HTTPPasswordMgrWithDefaultRealm):
122154
def is_authenticated(self, authuri: str) -> bool: ...
123155

124156
class AbstractBasicAuthHandler:
157+
rx: ClassVar[Pattern] # undocumented
125158
def __init__(self, password_mgr: Optional[HTTPPasswordMgr] = ...) -> None: ...
126159
def http_error_auth_reqed(self, authreq: str, host: str, req: Request, headers: Mapping[str, str]) -> None: ...
160+
def http_request(self, req: Request) -> Request: ... # undocumented
161+
def http_response(self, req: Request, response: HTTPResponse) -> HTTPResponse: ... # undocumented
162+
def https_request(self, req: Request) -> Request: ... # undocumented
163+
def https_response(self, req: Request, response: HTTPResponse) -> HTTPResponse: ... # undocumented
164+
def retry_http_basic_auth(self, host: str, req: Request, realm: str) -> Optional[_UrlopenRet]: ... # undocumented
127165

128166
class HTTPBasicAuthHandler(AbstractBasicAuthHandler, BaseHandler):
167+
auth_header: ClassVar[str] # undocumented
129168
def http_error_401(
130169
self, req: Request, fp: IO[str], code: int, msg: int, headers: Mapping[str, str]
131170
) -> Optional[_UrlopenRet]: ...
132171

133172
class ProxyBasicAuthHandler(AbstractBasicAuthHandler, BaseHandler):
173+
auth_header: ClassVar[str]
134174
def http_error_407(
135175
self, req: Request, fp: IO[str], code: int, msg: int, headers: Mapping[str, str]
136176
) -> Optional[_UrlopenRet]: ...
@@ -146,11 +186,13 @@ class AbstractDigestAuthHandler:
146186
def get_entity_digest(self, data: Optional[bytes], chal: Mapping[str, str]) -> Optional[str]: ...
147187

148188
class HTTPDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler):
189+
auth_header: ClassVar[str] # undocumented
149190
def http_error_401(
150191
self, req: Request, fp: IO[str], code: int, msg: int, headers: Mapping[str, str]
151192
) -> Optional[_UrlopenRet]: ...
152193

153194
class ProxyDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler):
195+
auth_header: ClassVar[str] # undocumented
154196
def http_error_407(
155197
self, req: Request, fp: IO[str], code: int, msg: int, headers: Mapping[str, str]
156198
) -> Optional[_UrlopenRet]: ...
@@ -173,17 +215,33 @@ class HTTPSHandler(AbstractHTTPHandler):
173215
def https_request(self, request: Request) -> Request: ... # undocumented
174216

175217
class FileHandler(BaseHandler):
218+
names: ClassVar[Optional[Tuple[str, ...]]] # undocumented
176219
def file_open(self, req: Request) -> addinfourl: ...
220+
def get_names(self) -> Tuple[str, ...]: ... # undocumented
221+
def open_local_file(self, req: Request) -> addinfourl: ... # undocumented
177222

178223
class DataHandler(BaseHandler):
179224
def data_open(self, req: Request) -> addinfourl: ...
180225

226+
class ftpwrapper: # undocumented
227+
def __init__(
228+
self, user: str, passwd: str, host: str, port: int, dirs: str, timeout: Optional[float] = ..., persistent: bool = ...
229+
) -> None: ...
230+
181231
class FTPHandler(BaseHandler):
182232
def ftp_open(self, req: Request) -> addinfourl: ...
233+
def connect_ftp(
234+
self, user: str, passwd: str, host: str, port: int, dirs: str, timeout: float
235+
) -> ftpwrapper: ... # undocumented
183236

184237
class CacheFTPHandler(FTPHandler):
185238
def setTimeout(self, t: float) -> None: ...
186239
def setMaxConns(self, m: int) -> None: ...
240+
def check_cache(self) -> None: ... # undocumented
241+
def clear_cache(self) -> None: ... # undocumented
242+
def connect_ftp(
243+
self, user: str, passwd: str, host: str, port: int, dirs: str, timeout: float
244+
) -> ftpwrapper: ... # undocumented
187245

188246
class UnknownHandler(BaseHandler):
189247
def unknown_open(self, req: Request) -> NoReturn: ...
@@ -222,6 +280,73 @@ class URLopener:
222280
reporthook: Optional[Callable[[int, int, int], None]] = ...,
223281
data: Optional[bytes] = ...,
224282
) -> Tuple[str, Optional[Message]]: ...
283+
def addheader(self, *args: Tuple[str, str]) -> None: ... # undocumented
284+
def cleanup(self) -> None: ... # undocumented
285+
def close(self) -> None: ... # undocumented
286+
def http_error(
287+
self, url: str, fp: IO[bytes], errcode: int, errmsg: str, headers: Mapping[str, str], data: Optional[bytes] = ...
288+
) -> _UrlopenRet: ... # undocumented
289+
def http_error_default(
290+
self, url: str, fp: IO[bytes], errcode: int, errmsg: str, headers: Mapping[str, str]
291+
) -> _UrlopenRet: ... # undocumented
292+
def open_data(self, url: str, data: Optional[bytes] = ...) -> addinfourl: ... # undocumented
293+
def open_file(self, url: str) -> addinfourl: ... # undocumented
294+
def open_ftp(self, url: str) -> addinfourl: ... # undocumented
295+
def open_http(self, url: str, data: Optional[bytes] = ...) -> _UrlopenRet: ... # undocumented
296+
def open_https(self, url: str, data: Optional[bytes] = ...) -> _UrlopenRet: ... # undocumented
297+
def open_local_file(self, url: str) -> addinfourl: ... # undocumented
298+
def open_unknown_proxy(self, proxy: str, fullurl: str, data: Optional[bytes] = ...) -> None: ... # undocumented
225299

226300
class FancyURLopener(URLopener):
227301
def prompt_user_passwd(self, host: str, realm: str) -> Tuple[str, str]: ...
302+
def get_user_passwd(self, host: str, realm: str, clear_cache: int = ...) -> Tuple[str, str]: ... # undocumented
303+
def http_error_301(
304+
self, url: str, fp: IO[str], errcode: int, errmsg: str, headers: Mapping[str, str], data: Optional[bytes] = ...
305+
) -> Optional[Union[_UrlopenRet, addinfourl]]: ... # undocumented
306+
def http_error_302(
307+
self, url: str, fp: IO[str], errcode: int, errmsg: str, headers: Mapping[str, str], data: Optional[bytes] = ...
308+
) -> Optional[Union[_UrlopenRet, addinfourl]]: ... # undocumented
309+
def http_error_303(
310+
self, url: str, fp: IO[str], errcode: int, errmsg: str, headers: Mapping[str, str], data: Optional[bytes] = ...
311+
) -> Optional[Union[_UrlopenRet, addinfourl]]: ... # undocumented
312+
def http_error_307(
313+
self, url: str, fp: IO[str], errcode: int, errmsg: str, headers: Mapping[str, str], data: Optional[bytes] = ...
314+
) -> Optional[Union[_UrlopenRet, addinfourl]]: ... # undocumented
315+
def http_error_401(
316+
self,
317+
url: str,
318+
fp: IO[str],
319+
errcode: int,
320+
errmsg: str,
321+
headers: Mapping[str, str],
322+
data: Optional[bytes] = ...,
323+
retry: bool = ...,
324+
) -> Optional[_UrlopenRet]: ... # undocumented
325+
def http_error_407(
326+
self,
327+
url: str,
328+
fp: IO[str],
329+
errcode: int,
330+
errmsg: str,
331+
headers: Mapping[str, str],
332+
data: Optional[bytes] = ...,
333+
retry: bool = ...,
334+
) -> Optional[_UrlopenRet]: ... # undocumented
335+
def http_error_default(
336+
self, url: str, fp: IO[bytes], errcode: int, errmsg: str, headers: Mapping[str, str]
337+
) -> addinfourl: ... # undocumented
338+
def redirect_internal(
339+
self, url: str, fp: IO[str], errcode: int, errmsg: str, headers: Mapping[str, str], data: Optional[bytes]
340+
) -> Optional[_UrlopenRet]: ... # undocumented
341+
def retry_http_basic_auth(
342+
self, url: str, realm: str, data: Optional[bytes] = ...
343+
) -> Optional[_UrlopenRet]: ... # undocumented
344+
def retry_https_basic_auth(
345+
self, url: str, realm: str, data: Optional[bytes] = ...
346+
) -> Optional[_UrlopenRet]: ... # undocumented
347+
def retry_proxy_http_basic_auth(
348+
self, url: str, realm: str, data: Optional[bytes] = ...
349+
) -> Optional[_UrlopenRet]: ... # undocumented
350+
def retry_proxy_https_basic_auth(
351+
self, url: str, realm: str, data: Optional[bytes] = ...
352+
) -> Optional[_UrlopenRet]: ... # undocumented

0 commit comments

Comments
 (0)