mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-06 20:24:30 +08:00
Fix return types in urllib.request (#2389)
* Tighten return types of URL handlers * urlopen() etc. return a modified HTTPResponse * Add missing methods to HTTPResponse
This commit is contained in:
committed by
Rebecca Chen
parent
d70a6cbcc0
commit
9827132d5b
@@ -104,6 +104,9 @@ if sys.version_info >= (3, 5):
|
||||
def __exit__(self, exc_type: Optional[Type[BaseException]],
|
||||
exc_val: Optional[BaseException],
|
||||
exc_tb: Optional[types.TracebackType]) -> bool: ...
|
||||
def info(self) -> email.message.Message: ...
|
||||
def geturl(self) -> str: ...
|
||||
def getcode(self) -> int: ...
|
||||
else:
|
||||
class HTTPResponse(io.RawIOBase, BinaryIO): # type: ignore
|
||||
msg = ... # type: HTTPMessage
|
||||
@@ -126,6 +129,9 @@ else:
|
||||
def __exit__(self, exc_type: Optional[Type[BaseException]],
|
||||
exc_val: Optional[BaseException],
|
||||
exc_tb: Optional[types.TracebackType]) -> bool: ...
|
||||
def info(self) -> email.message.Message: ...
|
||||
def geturl(self) -> str: ...
|
||||
def getcode(self) -> int: ...
|
||||
|
||||
class HTTPConnection:
|
||||
if sys.version_info >= (3, 7):
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
from typing import (
|
||||
Any, Callable, ClassVar, Dict, List, IO, Mapping, Optional, Sequence, Tuple,
|
||||
TypeVar, Union, overload,
|
||||
TypeVar, Union, overload, NoReturn,
|
||||
)
|
||||
from http.client import HTTPResponse, HTTPMessage
|
||||
from http.cookiejar import CookieJar
|
||||
@@ -13,8 +13,11 @@ import sys
|
||||
import os
|
||||
|
||||
_T = TypeVar('_T')
|
||||
_UrlopenRet = Union[HTTPResponse, addinfourl]
|
||||
_UrlopenRet = Union[_HTTPResponse, addinfourl]
|
||||
|
||||
class _HTTPResponse(HTTPResponse):
|
||||
url: str
|
||||
msg: str # type: ignore
|
||||
|
||||
def urlopen(
|
||||
url: Union[str, Request], data: Optional[bytes] = ...,
|
||||
@@ -155,33 +158,33 @@ class ProxyDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler):
|
||||
hdrs: Mapping[str, str]) -> Optional[_UrlopenRet]: ...
|
||||
|
||||
class HTTPHandler(BaseHandler):
|
||||
def http_open(self, req: Request) -> _UrlopenRet: ...
|
||||
def http_open(self, req: Request) -> HTTPResponse: ...
|
||||
|
||||
class HTTPSHandler(BaseHandler):
|
||||
def __init__(self, debuglevel: int = ...,
|
||||
context: Optional[ssl.SSLContext] = ...,
|
||||
check_hostname: bool = ...) -> None: ...
|
||||
def https_open(self, req: Request) -> _UrlopenRet: ...
|
||||
def https_open(self, req: Request) -> HTTPResponse: ...
|
||||
|
||||
class FileHandler(BaseHandler):
|
||||
def file_open(self, req: Request) -> _UrlopenRet: ...
|
||||
def file_open(self, req: Request) -> addinfourl: ...
|
||||
|
||||
class DataHandler(BaseHandler):
|
||||
def data_open(self, req: Request) -> _UrlopenRet: ...
|
||||
def data_open(self, req: Request) -> addinfourl: ...
|
||||
|
||||
class FTPHandler(BaseHandler):
|
||||
def ftp_open(self, req: Request) -> _UrlopenRet: ...
|
||||
def ftp_open(self, req: Request) -> addinfourl: ...
|
||||
|
||||
class CacheFTPHandler(FTPHandler):
|
||||
def setTimeout(self, t: float) -> None: ...
|
||||
def setMaxConns(self, m: int) -> None: ...
|
||||
|
||||
class UnknownHandler(BaseHandler):
|
||||
def unknown_open(self, req: Request) -> _UrlopenRet: ...
|
||||
def unknown_open(self, req: Request) -> NoReturn: ...
|
||||
|
||||
class HTTPErrorProcessor(BaseHandler):
|
||||
def http_response(self) -> _UrlopenRet: ...
|
||||
def https_response(self) -> _UrlopenRet: ...
|
||||
def http_response(self, request, response) -> _UrlopenRet: ...
|
||||
def https_response(self, request, response) -> _UrlopenRet: ...
|
||||
|
||||
if sys.version_info >= (3, 6):
|
||||
def urlretrieve(url: str, filename: Optional[Union[str, os.PathLike]] = ...,
|
||||
|
||||
Reference in New Issue
Block a user