3 from _typeshed import StrOrBytesPath
4 from email.message import Message
5 from http.client import HTTPMessage, HTTPResponse, _HTTPConnectionProtocol
6 from http.cookiejar import CookieJar
7 from typing import IO, Any, Callable, ClassVar, Mapping, NoReturn, Pattern, Sequence, Tuple, TypeVar, overload
8 from urllib.error import HTTPError
9 from urllib.response import addclosehook, addinfourl
16 data: bytes | None = ...,
17 timeout: float | None = ...,
19 cafile: str | None = ...,
20 capath: str | None = ...,
21 cadefault: bool = ...,
22 context: ssl.SSLContext | None = ...,
24 def install_opener(opener: OpenerDirector) -> None: ...
25 def build_opener(*handlers: BaseHandler | Callable[[], BaseHandler]) -> OpenerDirector: ...
27 if sys.platform == "win32":
28 from nturl2path import pathname2url as pathname2url, url2pathname as url2pathname
30 def url2pathname(pathname: str) -> str: ...
31 def pathname2url(pathname: str) -> str: ...
33 def getproxies() -> dict[str, str]: ...
34 def parse_http_list(s: str) -> list[str]: ...
35 def parse_keqv_list(l: list[str]) -> dict[str, str]: ...
37 if sys.platform == "win32" or sys.platform == "darwin":
38 def proxy_bypass(host: str) -> Any: ... # undocumented
41 def proxy_bypass(host: str, proxies: Mapping[str, str] | None = ...) -> Any: ... # undocumented
45 def full_url(self) -> str: ...
47 def full_url(self, value: str) -> None: ...
49 def full_url(self) -> None: ...
55 headers: dict[str, str]
56 unredirected_hdrs: dict[str, str]
59 timeout: float | None # Undocumented, only set after __init__() by OpenerDirector.open()
63 data: bytes | None = ...,
64 headers: dict[str, str] = ...,
65 origin_req_host: str | None = ...,
66 unverifiable: bool = ...,
67 method: str | None = ...,
69 def get_method(self) -> str: ...
70 def add_header(self, key: str, val: str) -> None: ...
71 def add_unredirected_header(self, key: str, val: str) -> None: ...
72 def has_header(self, header_name: str) -> bool: ...
73 def remove_header(self, header_name: str) -> None: ...
74 def get_full_url(self) -> str: ...
75 def set_proxy(self, host: str, type: str) -> None: ...
77 def get_header(self, header_name: str) -> str | None: ...
79 def get_header(self, header_name: str, default: _T) -> str | _T: ...
80 def header_items(self) -> list[tuple[str, str]]: ...
81 def has_proxy(self) -> bool: ...
84 addheaders: list[tuple[str, str]]
85 def add_handler(self, handler: BaseHandler) -> None: ...
86 def open(self, fullurl: str | Request, data: bytes | None = ..., timeout: float | None = ...) -> _UrlopenRet: ...
87 def error(self, proto: str, *args: Any) -> _UrlopenRet: ...
88 def close(self) -> None: ...
91 handler_order: ClassVar[int]
92 parent: OpenerDirector
93 def add_parent(self, parent: OpenerDirector) -> None: ...
94 def close(self) -> None: ...
96 class HTTPDefaultErrorHandler(BaseHandler):
97 def http_error_default(
98 self, req: Request, fp: IO[bytes], code: int, msg: str, hdrs: HTTPMessage
99 ) -> HTTPError: ... # undocumented
101 class HTTPRedirectHandler(BaseHandler):
102 max_redirections: ClassVar[int] # undocumented
103 max_repeats: ClassVar[int] # undocumented
104 inf_msg: ClassVar[str] # undocumented
105 def redirect_request(
106 self, req: Request, fp: IO[bytes], code: int, msg: str, headers: HTTPMessage, newurl: str
107 ) -> Request | None: ...
108 def http_error_301(self, req: Request, fp: IO[bytes], code: int, msg: str, headers: HTTPMessage) -> _UrlopenRet | None: ...
109 def http_error_302(self, req: Request, fp: IO[bytes], code: int, msg: str, headers: HTTPMessage) -> _UrlopenRet | None: ...
110 def http_error_303(self, req: Request, fp: IO[bytes], code: int, msg: str, headers: HTTPMessage) -> _UrlopenRet | None: ...
111 def http_error_307(self, req: Request, fp: IO[bytes], code: int, msg: str, headers: HTTPMessage) -> _UrlopenRet | None: ...
113 class HTTPCookieProcessor(BaseHandler):
115 def __init__(self, cookiejar: CookieJar | None = ...) -> None: ...
116 def http_request(self, request: Request) -> Request: ... # undocumented
117 def http_response(self, request: Request, response: HTTPResponse) -> HTTPResponse: ... # undocumented
118 def https_request(self, request: Request) -> Request: ... # undocumented
119 def https_response(self, request: Request, response: HTTPResponse) -> HTTPResponse: ... # undocumented
121 class ProxyHandler(BaseHandler):
122 def __init__(self, proxies: dict[str, str] | None = ...) -> None: ...
123 def proxy_open(self, req: Request, proxy: str, type: str) -> _UrlopenRet | None: ... # undocumented
124 # TODO add a method for every (common) proxy protocol
126 class HTTPPasswordMgr:
127 def add_password(self, realm: str, uri: str | Sequence[str], user: str, passwd: str) -> None: ...
128 def find_user_password(self, realm: str, authuri: str) -> tuple[str | None, str | None]: ...
129 def is_suburi(self, base: str, test: str) -> bool: ... # undocumented
130 def reduce_uri(self, uri: str, default_port: bool = ...) -> str: ... # undocumented
132 class HTTPPasswordMgrWithDefaultRealm(HTTPPasswordMgr):
133 def add_password(self, realm: str | None, uri: str | Sequence[str], user: str, passwd: str) -> None: ...
134 def find_user_password(self, realm: str | None, authuri: str) -> tuple[str | None, str | None]: ...
136 class HTTPPasswordMgrWithPriorAuth(HTTPPasswordMgrWithDefaultRealm):
138 self, realm: str | None, uri: str | Sequence[str], user: str, passwd: str, is_authenticated: bool = ...
140 def update_authenticated(self, uri: str | Sequence[str], is_authenticated: bool = ...) -> None: ...
141 def is_authenticated(self, authuri: str) -> bool: ...
143 class AbstractBasicAuthHandler:
144 rx: ClassVar[Pattern[str]] # undocumented
145 passwd: HTTPPasswordMgr
146 add_password: Callable[[str, str | Sequence[str], str, str], None]
147 def __init__(self, password_mgr: HTTPPasswordMgr | None = ...) -> None: ...
148 def http_error_auth_reqed(self, authreq: str, host: str, req: Request, headers: HTTPMessage) -> None: ...
149 def http_request(self, req: Request) -> Request: ... # undocumented
150 def http_response(self, req: Request, response: HTTPResponse) -> HTTPResponse: ... # undocumented
151 def https_request(self, req: Request) -> Request: ... # undocumented
152 def https_response(self, req: Request, response: HTTPResponse) -> HTTPResponse: ... # undocumented
153 def retry_http_basic_auth(self, host: str, req: Request, realm: str) -> _UrlopenRet | None: ... # undocumented
155 class HTTPBasicAuthHandler(AbstractBasicAuthHandler, BaseHandler):
156 auth_header: ClassVar[str] # undocumented
157 def http_error_401(self, req: Request, fp: IO[bytes], code: int, msg: str, headers: HTTPMessage) -> _UrlopenRet | None: ...
159 class ProxyBasicAuthHandler(AbstractBasicAuthHandler, BaseHandler):
160 auth_header: ClassVar[str]
161 def http_error_407(self, req: Request, fp: IO[bytes], code: int, msg: str, headers: HTTPMessage) -> _UrlopenRet | None: ...
163 class AbstractDigestAuthHandler:
164 def __init__(self, passwd: HTTPPasswordMgr | None = ...) -> None: ...
165 def reset_retry_count(self) -> None: ...
166 def http_error_auth_reqed(self, auth_header: str, host: str, req: Request, headers: HTTPMessage) -> None: ...
167 def retry_http_digest_auth(self, req: Request, auth: str) -> _UrlopenRet | None: ...
168 def get_cnonce(self, nonce: str) -> str: ...
169 def get_authorization(self, req: Request, chal: Mapping[str, str]) -> str: ...
170 def get_algorithm_impls(self, algorithm: str) -> tuple[Callable[[str], str], Callable[[str, str], str]]: ...
171 def get_entity_digest(self, data: bytes | None, chal: Mapping[str, str]) -> str | None: ...
173 class HTTPDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler):
174 auth_header: ClassVar[str] # undocumented
175 def http_error_401(self, req: Request, fp: IO[bytes], code: int, msg: str, headers: HTTPMessage) -> _UrlopenRet | None: ...
177 class ProxyDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler):
178 auth_header: ClassVar[str] # undocumented
179 def http_error_407(self, req: Request, fp: IO[bytes], code: int, msg: str, headers: HTTPMessage) -> _UrlopenRet | None: ...
181 class AbstractHTTPHandler(BaseHandler): # undocumented
182 def __init__(self, debuglevel: int = ...) -> None: ...
183 def set_http_debuglevel(self, level: int) -> None: ...
184 def do_request_(self, request: Request) -> Request: ...
185 def do_open(self, http_class: _HTTPConnectionProtocol, req: Request, **http_conn_args: Any) -> HTTPResponse: ...
187 class HTTPHandler(AbstractHTTPHandler):
188 def http_open(self, req: Request) -> HTTPResponse: ...
189 def http_request(self, request: Request) -> Request: ... # undocumented
191 class HTTPSHandler(AbstractHTTPHandler):
193 self, debuglevel: int = ..., context: ssl.SSLContext | None = ..., check_hostname: bool | None = ...
195 def https_open(self, req: Request) -> HTTPResponse: ...
196 def https_request(self, request: Request) -> Request: ... # undocumented
198 class FileHandler(BaseHandler):
199 names: ClassVar[Tuple[str, ...] | None] # undocumented
200 def file_open(self, req: Request) -> addinfourl: ...
201 def get_names(self) -> Tuple[str, ...]: ... # undocumented
202 def open_local_file(self, req: Request) -> addinfourl: ... # undocumented
204 class DataHandler(BaseHandler):
205 def data_open(self, req: Request) -> addinfourl: ...
207 class ftpwrapper: # undocumented
209 self, user: str, passwd: str, host: str, port: int, dirs: str, timeout: float | None = ..., persistent: bool = ...
211 def close(self) -> None: ...
212 def endtransfer(self) -> None: ...
213 def file_close(self) -> None: ...
214 def init(self) -> None: ...
215 def real_close(self) -> None: ...
216 def retrfile(self, file: str, type: str) -> tuple[addclosehook, int]: ...
218 class FTPHandler(BaseHandler):
219 def ftp_open(self, req: Request) -> addinfourl: ...
221 self, user: str, passwd: str, host: str, port: int, dirs: str, timeout: float
222 ) -> ftpwrapper: ... # undocumented
224 class CacheFTPHandler(FTPHandler):
225 def setTimeout(self, t: float) -> None: ...
226 def setMaxConns(self, m: int) -> None: ...
227 def check_cache(self) -> None: ... # undocumented
228 def clear_cache(self) -> None: ... # undocumented
230 self, user: str, passwd: str, host: str, port: int, dirs: str, timeout: float
231 ) -> ftpwrapper: ... # undocumented
233 class UnknownHandler(BaseHandler):
234 def unknown_open(self, req: Request) -> NoReturn: ...
236 class HTTPErrorProcessor(BaseHandler):
237 def http_response(self, request: Request, response: HTTPResponse) -> _UrlopenRet: ...
238 def https_response(self, request: Request, response: HTTPResponse) -> _UrlopenRet: ...
242 filename: StrOrBytesPath | None = ...,
243 reporthook: Callable[[int, int, int], None] | None = ...,
244 data: bytes | None = ...,
245 ) -> tuple[str, HTTPMessage]: ...
246 def urlcleanup() -> None: ...
249 version: ClassVar[str]
250 def __init__(self, proxies: dict[str, str] | None = ..., **x509: str) -> None: ...
251 def open(self, fullurl: str, data: bytes | None = ...) -> _UrlopenRet: ...
252 def open_unknown(self, fullurl: str, data: bytes | None = ...) -> _UrlopenRet: ...
256 filename: str | None = ...,
257 reporthook: Callable[[int, int, int], None] | None = ...,
258 data: bytes | None = ...,
259 ) -> tuple[str, Message | None]: ...
260 def addheader(self, *args: tuple[str, str]) -> None: ... # undocumented
261 def cleanup(self) -> None: ... # undocumented
262 def close(self) -> None: ... # undocumented
264 self, url: str, fp: IO[bytes], errcode: int, errmsg: str, headers: HTTPMessage, data: bytes | None = ...
265 ) -> _UrlopenRet: ... # undocumented
266 def http_error_default(
267 self, url: str, fp: IO[bytes], errcode: int, errmsg: str, headers: HTTPMessage
268 ) -> _UrlopenRet: ... # undocumented
269 def open_data(self, url: str, data: bytes | None = ...) -> addinfourl: ... # undocumented
270 def open_file(self, url: str) -> addinfourl: ... # undocumented
271 def open_ftp(self, url: str) -> addinfourl: ... # undocumented
272 def open_http(self, url: str, data: bytes | None = ...) -> _UrlopenRet: ... # undocumented
273 def open_https(self, url: str, data: bytes | None = ...) -> _UrlopenRet: ... # undocumented
274 def open_local_file(self, url: str) -> addinfourl: ... # undocumented
275 def open_unknown_proxy(self, proxy: str, fullurl: str, data: bytes | None = ...) -> None: ... # undocumented
277 class FancyURLopener(URLopener):
278 def prompt_user_passwd(self, host: str, realm: str) -> tuple[str, str]: ...
279 def get_user_passwd(self, host: str, realm: str, clear_cache: int = ...) -> tuple[str, str]: ... # undocumented
281 self, url: str, fp: IO[bytes], errcode: int, errmsg: str, headers: HTTPMessage, data: bytes | None = ...
282 ) -> _UrlopenRet | addinfourl | None: ... # undocumented
284 self, url: str, fp: IO[bytes], errcode: int, errmsg: str, headers: HTTPMessage, data: bytes | None = ...
285 ) -> _UrlopenRet | addinfourl | None: ... # undocumented
287 self, url: str, fp: IO[bytes], errcode: int, errmsg: str, headers: HTTPMessage, data: bytes | None = ...
288 ) -> _UrlopenRet | addinfourl | None: ... # undocumented
290 self, url: str, fp: IO[bytes], errcode: int, errmsg: str, headers: HTTPMessage, data: bytes | None = ...
291 ) -> _UrlopenRet | addinfourl | None: ... # undocumented
298 headers: HTTPMessage,
299 data: bytes | None = ...,
301 ) -> _UrlopenRet | None: ... # undocumented
308 headers: HTTPMessage,
309 data: bytes | None = ...,
311 ) -> _UrlopenRet | None: ... # undocumented
312 def http_error_default(
313 self, url: str, fp: IO[bytes], errcode: int, errmsg: str, headers: HTTPMessage
314 ) -> addinfourl: ... # undocumented
315 def redirect_internal(
316 self, url: str, fp: IO[bytes], errcode: int, errmsg: str, headers: HTTPMessage, data: bytes | None
317 ) -> _UrlopenRet | None: ... # undocumented
318 def retry_http_basic_auth(self, url: str, realm: str, data: bytes | None = ...) -> _UrlopenRet | None: ... # undocumented
319 def retry_https_basic_auth(self, url: str, realm: str, data: bytes | None = ...) -> _UrlopenRet | None: ... # undocumented
320 def retry_proxy_http_basic_auth(
321 self, url: str, realm: str, data: bytes | None = ...
322 ) -> _UrlopenRet | None: ... # undocumented
323 def retry_proxy_https_basic_auth(
324 self, url: str, realm: str, data: bytes | None = ...
325 ) -> _UrlopenRet | None: ... # undocumented