Improve http (#248)

This commit is contained in:
Valérian Rousset
2016-06-06 01:55:51 +02:00
committed by Guido van Rossum
parent 09e165ec35
commit e97638d4bd
4 changed files with 380 additions and 227 deletions

View File

@@ -1,101 +1,213 @@
# Stubs for http.client (Python 3.4)
from typing import Any, Dict
from typing import (
Any, Dict, IO, Iterable, List, Iterator, Mapping, Optional, Tuple, TypeVar,
Union,
overload,
)
import email.message
import io
import sys
import ssl
import types
_DataType = Union[bytes, IO[Any], Iterable[bytes], str]
_T = TypeVar('_T')
HTTP_PORT = ... # type: int
HTTPS_PORT = ... # type: int
CONTINUE = ... # type: int
SWITCHING_PROTOCOLS = ... # type: int
PROCESSING = ... # type: int
OK = ... # type: int
CREATED = ... # type: int
ACCEPTED = ... # type: int
NON_AUTHORITATIVE_INFORMATION = ... # type: int
NO_CONTENT = ... # type: int
RESET_CONTENT = ... # type: int
PARTIAL_CONTENT = ... # type: int
MULTI_STATUS = ... # type: int
IM_USED = ... # type: int
MULTIPLE_CHOICES = ... # type: int
MOVED_PERMANENTLY = ... # type: int
FOUND = ... # type: int
SEE_OTHER = ... # type: int
NOT_MODIFIED = ... # type: int
USE_PROXY = ... # type: int
TEMPORARY_REDIRECT = ... # type: int
BAD_REQUEST = ... # type: int
UNAUTHORIZED = ... # type: int
PAYMENT_REQUIRED = ... # type: int
FORBIDDEN = ... # type: int
NOT_FOUND = ... # type: int
METHOD_NOT_ALLOWED = ... # type: int
NOT_ACCEPTABLE = ... # type: int
PROXY_AUTHENTICATION_REQUIRED = ... # type: int
REQUEST_TIMEOUT = ... # type: int
CONFLICT = ... # type: int
GONE = ... # type: int
LENGTH_REQUIRED = ... # type: int
PRECONDITION_FAILED = ... # type: int
REQUEST_ENTITY_TOO_LARGE = ... # type: int
REQUEST_URI_TOO_LONG = ... # type: int
UNSUPPORTED_MEDIA_TYPE = ... # type: int
REQUESTED_RANGE_NOT_SATISFIABLE = ... # type: int
EXPECTATION_FAILED = ... # type: int
UNPROCESSABLE_ENTITY = ... # type: int
LOCKED = ... # type: int
FAILED_DEPENDENCY = ... # type: int
UPGRADE_REQUIRED = ... # type: int
PRECONDITION_REQUIRED = ... # type: int
TOO_MANY_REQUESTS = ... # type: int
REQUEST_HEADER_FIELDS_TOO_LARGE = ... # type: int
INTERNAL_SERVER_ERROR = ... # type: int
NOT_IMPLEMENTED = ... # type: int
BAD_GATEWAY = ... # type: int
SERVICE_UNAVAILABLE = ... # type: int
GATEWAY_TIMEOUT = ... # type: int
HTTP_VERSION_NOT_SUPPORTED = ... # type: int
INSUFFICIENT_STORAGE = ... # type: int
NOT_EXTENDED = ... # type: int
NETWORK_AUTHENTICATION_REQUIRED = ... # type: int
responses = ... # type: Dict[int, str]
class HTTPMessage(email.message.Message):
def getallmatchingheaders(self, name): ...
class HTTPMessage(email.message.Message): ...
class HTTPResponse(io.RawIOBase):
fp = ... # type: Any
debuglevel = ... # type: Any
headers = ... # type: Any
version = ... # type: Any
status = ... # type: Any
reason = ... # type: Any
chunked = ... # type: Any
chunk_left = ... # type: Any
length = ... # type: Any
will_close = ... # type: Any
def __init__(self, sock, debuglevel=..., method=..., url=...) -> None: ...
code = ... # type: Any
def begin(self): ...
def close(self): ...
def flush(self): ...
def readable(self): ...
def isclosed(self): ...
def read(self, amt=...): ...
def readinto(self, b): ...
def fileno(self): ...
def getheader(self, name, default=...): ...
def getheaders(self): ...
def __iter__(self): ...
def info(self): ...
def geturl(self): ...
def getcode(self): ...
# TODO uncomment when mypy handle conditionals
#if sys.version_info >= (3, 5):
# class HTTPResponse(io.BufferedIOBase):
# msg = ... # type: HTTPMessage
# version = ... # type: int
# debuglevel = ... # type: int
# closed = ... # type: bool
# status = ... # type: int
# reason = ... # type: str
# def read(self, amt: Optional[int] = ...) -> bytes: ...
# def readinto(self, b: bytearray) -> int: ...
# @overload
# def getheader(self, name: str) -> Optional[str]: ...
# @overload
# def getheader(self, name: str, default: _T) -> Union[str, _T]: ...
# def getheaders(self) -> List[Tuple[str, str]]: ...
# def fileno(self) -> int: ...
# def __iter__(self) -> Iterator[bytes]: ...
# def __enter__(self) -> 'HTTPResponse': ...
# def __exit__(self, exc_type: Optional[type],
# exc_val: Optional[Exception],
# exc_tb: Optional[types.TracebackType]) -> bool: ...
#else:
# class HTTPResponse:
# msg = ... # type: HTTPMessage
# version = ... # type: int
# debuglevel = ... # type: int
# closed = ... # type: bool
# status = ... # type: int
# reason = ... # type: str
# def read(self, amt: Optional[int] = ...) -> bytes: ...
# if sys.version_info >= (3, 3):
# def readinto(self, b: bytearray) -> int: ...
# @overload
# def getheader(self, name: str) -> Optional[str]: ...
# @overload
# def getheader(self, name: str, default: _T) -> Union[str, _T]: ...
# def getheaders(self) -> List[Tuple[str, str]]: ...
# def fileno(self) -> int: ...
# def __iter__(self) -> Iterator[bytes]: ...
# def __enter__(self) -> 'HTTPResponse': ...
# def __exit__(self, exc_type: Optional[type],
# exc_val: Optional[Exception],
# exc_tb: Optional[types.TracebackType]) -> bool: ...
class HTTPResponse(io.BufferedIOBase):
msg = ... # type: HTTPMessage
version = ... # type: int
debuglevel = ... # type: int
closed = ... # type: bool
status = ... # type: int
reason = ... # type: str
def read(self, amt: Optional[int] = ...) -> bytes: ...
def readinto(self, b: bytearray) -> int: ...
@overload
def getheader(self, name: str) -> Optional[str]: ...
@overload
def getheader(self, name: str, default: _T) -> Union[str, _T]: ...
def getheaders(self) -> List[Tuple[str, str]]: ...
def fileno(self) -> int: ...
def __iter__(self) -> Iterator[bytes]: ...
def __enter__(self) -> 'HTTPResponse': ...
def __exit__(self, exc_type: Optional[type],
exc_val: Optional[Exception],
exc_tb: Optional[types.TracebackType]) -> bool: ...
class HTTPConnection:
response_class = ... # type: Any
default_port = ... # type: Any
auto_open = ... # type: Any
debuglevel = ... # type: Any
mss = ... # type: Any
timeout = ... # type: Any
source_address = ... # type: Any
sock = ... # type: Any
def __init__(self, host, port=..., timeout=..., source_address=...) -> None: ...
def set_tunnel(self, host, port=..., headers=...): ...
def set_debuglevel(self, level): ...
def connect(self): ...
def close(self): ...
def send(self, data): ...
def putrequest(self, method, url, skip_host=..., skip_accept_encoding=...): ...
def putheader(self, header, *values): ...
def endheaders(self, message_body=...): ...
def request(self, method, url, body=..., headers=...): ...
def getresponse(self): ...
if sys.version_info >= (3, 4):
def __init__(self, # type: ignore
host: str, port: Optional[int] = ...,
timeout: int = ...,
source_address: Optional[Tuple[str, int]] = ...) \
-> None: ...
else:
def __init__(self, # type: ignore
host: str, port: Optional[int] = ...,
strict: bool = ..., timeout: int = ...,
source_address: Optional[Tuple[str, int]] = ...) \
-> None: ...
def request(self, method: str, url: str,
body: Optional[_DataType] = ...,
headers: Mapping[str, str] = ...) -> None: ...
def getresponse(self) -> HTTPResponse: ...
def set_debuglevel(self, level: int) -> None: ...
def set_tunnel(self, host: str, port: Optional[int] = ...,
headers: Optional[Mapping[str, str]] = ...) -> None: ...
def connect(self) -> None: ...
def close(self) -> None: ...
def putrequest(self, request: str, selector: str, skip_host: bool = ...,
skip_accept_encoding: bool = ...) -> None: ...
def putheader(self, header: str, *argument: str) -> None: ...
def endheaders(self, message_body: Optional[_DataType] = ...) -> None: ...
def send(self, data: _DataType) -> None: ...
class HTTPSConnection(HTTPConnection):
default_port = ... # type: Any
key_file = ... # type: Any
cert_file = ... # type: Any
def __init__(self, host, port=..., key_file=..., cert_file=..., timeout=...,
source_address=..., *, context=..., check_hostname=...): ...
sock = ... # type: Any
def connect(self): ...
if sys.version_info >= (3, 4):
def __init__(self, # type: ignore
host: str, port: Optional[int] = ...,
key_file: Optional[str] = ...,
cert_file: Optional[str] = ...,
timeout: int = ...,
source_address: Optional[Tuple[str, int]] = ...,
*, context: Optional[ssl.SSLContext] = ...,
check_hostname: Optional[bool] = ...) -> None: ...
else:
def __init__(self, # type: ignore
host: str, port: Optional[int] = ...,
key_file: Optional[str] = ...,
cert_file: Optional[str] = ...,
strict: bool = ..., timeout: int = ...,
source_address: Optional[Tuple[str, int]] = ...,
*, context: Optional[ssl.SSLContext] = ...,
check_hostname: Optional[bool] = ...) -> None: ...
class HTTPException(Exception): ...
class NotConnected(HTTPException): ...
class InvalidURL(HTTPException): ...
class UnknownProtocol(HTTPException):
args = ... # type: Any
version = ... # type: Any
def __init__(self, version) -> None: ...
class UnknownProtocol(HTTPException): ...
class UnknownTransferEncoding(HTTPException): ...
class UnimplementedFileMode(HTTPException): ...
class IncompleteRead(HTTPException):
args = ... # type: Any
partial = ... # type: Any
expected = ... # type: Any
def __init__(self, partial, expected=...) -> None: ...
class IncompleteRead(HTTPException): ...
class ImproperConnectionState(HTTPException): ...
class CannotSendRequest(ImproperConnectionState): ...
class CannotSendHeader(ImproperConnectionState): ...
class ResponseNotReady(ImproperConnectionState): ...
class BadStatusLine(HTTPException):
args = ... # type: Any
line = ... # type: Any
def __init__(self, line) -> None: ...
class BadStatusLine(HTTPException): ...
class LineTooLong(HTTPException): ...
class LineTooLong(HTTPException):
def __init__(self, line_type) -> None: ...
error = HTTPException
if sys.version_info >= (3, 5):
class RemoteDisconnected(ConnectionResetError, BadStatusLine): ...

View File

@@ -1,121 +1,114 @@
# Stubs for http.cookiejar (Python 3.4)
#
# NOTE: This dynamically typed stub was automatically generated by stubgen.
from typing import Any
from typing import Iterable, Iterator, Optional, Sequence, Tuple, TypeVar, Union, overload
from http.client import HTTPResponse
import sys
from urllib.request import Request
class Cookie:
version = ... # type: Any
name = ... # type: Any
value = ... # type: Any
port = ... # type: Any
port_specified = ... # type: Any
domain = ... # type: Any
domain_specified = ... # type: Any
domain_initial_dot = ... # type: Any
path = ... # type: Any
path_specified = ... # type: Any
secure = ... # type: Any
expires = ... # type: Any
discard = ... # type: Any
comment = ... # type: Any
comment_url = ... # type: Any
rfc2109 = ... # type: Any
def __init__(self, version, name, value, port, port_specified, domain, domain_specified,
domain_initial_dot, path, path_specified, secure, expires, discard, comment,
comment_url, rest, rfc2109=...): ...
def has_nonstandard_attr(self, name): ...
def get_nonstandard_attr(self, name, default=...): ...
def set_nonstandard_attr(self, name, value): ...
def is_expired(self, now=...): ...
class CookiePolicy:
def set_ok(self, cookie, request): ...
def return_ok(self, cookie, request): ...
def domain_return_ok(self, domain, request): ...
def path_return_ok(self, path, request): ...
class DefaultCookiePolicy(CookiePolicy):
DomainStrictNoDots = ... # type: Any
DomainStrictNonDomain = ... # type: Any
DomainRFC2965Match = ... # type: Any
DomainLiberal = ... # type: Any
DomainStrict = ... # type: Any
netscape = ... # type: Any
rfc2965 = ... # type: Any
rfc2109_as_netscape = ... # type: Any
hide_cookie2 = ... # type: Any
strict_domain = ... # type: Any
strict_rfc2965_unverifiable = ... # type: Any
strict_ns_unverifiable = ... # type: Any
strict_ns_domain = ... # type: Any
strict_ns_set_initial_dollar = ... # type: Any
strict_ns_set_path = ... # type: Any
def __init__(self, blocked_domains=..., allowed_domains=..., netscape=..., rfc2965=...,
rfc2109_as_netscape=..., hide_cookie2=..., strict_domain=...,
strict_rfc2965_unverifiable=..., strict_ns_unverifiable=...,
strict_ns_domain=..., strict_ns_set_initial_dollar=...,
strict_ns_set_path=...): ...
def blocked_domains(self): ...
def set_blocked_domains(self, blocked_domains): ...
def is_blocked(self, domain): ...
def allowed_domains(self): ...
def set_allowed_domains(self, allowed_domains): ...
def is_not_allowed(self, domain): ...
def set_ok(self, cookie, request): ...
def set_ok_version(self, cookie, request): ...
def set_ok_verifiability(self, cookie, request): ...
def set_ok_name(self, cookie, request): ...
def set_ok_path(self, cookie, request): ...
def set_ok_domain(self, cookie, request): ...
def set_ok_port(self, cookie, request): ...
def return_ok(self, cookie, request): ...
def return_ok_version(self, cookie, request): ...
def return_ok_verifiability(self, cookie, request): ...
def return_ok_secure(self, cookie, request): ...
def return_ok_expires(self, cookie, request): ...
def return_ok_port(self, cookie, request): ...
def return_ok_domain(self, cookie, request): ...
def domain_return_ok(self, domain, request): ...
def path_return_ok(self, path, request): ...
class Absent: ...
class CookieJar:
non_word_re = ... # type: Any
quote_re = ... # type: Any
strict_domain_re = ... # type: Any
domain_re = ... # type: Any
dots_re = ... # type: Any
magic_re = ... # type: Any
def __init__(self, policy=...) -> None: ...
def set_policy(self, policy): ...
def add_cookie_header(self, request): ...
def make_cookies(self, response, request): ...
def set_cookie_if_ok(self, cookie, request): ...
def set_cookie(self, cookie): ...
def extract_cookies(self, response, request): ...
def clear(self, domain=..., path=..., name=...): ...
def clear_session_cookies(self): ...
def clear_expired_cookies(self): ...
def __iter__(self): ...
def __len__(self): ...
_T = TypeVar('_T')
# TODO uncomment when mypy handles conditionals
#if sys.version_info >= (3, 3):
# class LoadError(OSError): ...
#else:
# class LoadError(IOError): ...
class LoadError(OSError): ...
class CookieJar(Iterable['Cookie']):
def __init__(self, policy: Optional['CookiePolicy'] = ...) -> None: ...
def add_cookie_header(self, request: Request) -> None: ...
def extract_cookies(self, response: HTTPResponse,
request: Request) -> None: ...
def set_policy(self, policy: 'CookiePolicy') -> None: ...
def make_cookies(self, response: HTTPResponse,
request: Request) -> Sequence['Cookie']: ...
def set_cookie(self, cookie: 'Cookie') -> None: ...
def set_cookie_if_ok(self, cookie: 'Cookie',
request: Request) -> None: ...
def clear(self, domain: str = ..., path: str = ...,
name: str = ...) -> None: ...
def clear_session_cookies(self) -> None: ...
def __iter__(self) -> Iterator['Cookie']: ...
class FileCookieJar(CookieJar):
filename = ... # type: Any
delayload = ... # type: Any
def __init__(self, filename=..., delayload=..., policy=...) -> None: ...
def save(self, filename=..., ignore_discard=..., ignore_expires=...): ...
def load(self, filename=..., ignore_discard=..., ignore_expires=...): ...
def revert(self, filename=..., ignore_discard=..., ignore_expires=...): ...
filename = ... # type: str
delayload = ... # type: bool
def __init__(self, filename: str = ..., delayload: bool = ...,
policy: Optional['CookiePolicy'] = ...) -> None: ...
def save(self, filename: Optional[str] = ..., ignore_discard: bool = ...,
ignore_expires: bool = ...) -> None: ...
def load(self, filename: Optional[str] = ..., ignore_discard: bool = ...,
ignore_expires: bool = ...) -> None: ...
def revert(self, filename: Optional[str] = ..., ignore_discard: bool = ...,
ignore_expires: bool = ...) -> None: ...
class LWPCookieJar(FileCookieJar):
def as_lwp_str(self, ignore_discard=..., ignore_expires=...): ...
def save(self, filename=..., ignore_discard=..., ignore_expires=...): ...
class MozillaCookieJar(FileCookieJar): ...
class LWPCookieJar(FileCookieJar): ...
class MozillaCookieJar(FileCookieJar):
magic_re = ... # type: Any
header = ... # type: Any
def save(self, filename=..., ignore_discard=..., ignore_expires=...): ...
class CookiePolicy:
netscape = ... # type: bool
rfc2965 = ... # type: bool
hide_cookie2 = ... # type: bool
def set_ok(self, cookie: 'Cookie', request: Request) -> bool: ...
def return_ok(self, cookie: 'Cookie', request: Request) -> bool: ...
def domain_return_ok(self, domain: str, request: Request) -> bool: ...
def path_return_ok(self, path: str, request: Request) -> bool: ...
class DefaultCookiePolicy(CookiePolicy):
rfc2109_as_netscape = ... # type: bool
strict_domain = ... # type: bool
strict_rfc2965_unverifiable = ... # type: bool
strict_ns_unverifiable = ... # type: bool
strict_ns_domain = ... # type: int
strict_ns_set_initial_dollar = ... # type: bool
strict_ns_set_path = ... # type: bool
DomainStrictNoDots = ... # type: int
DomainStrictNonDomain = ... # type: int
DomainRFC2965Match = ... # type: int
DomainLiberal = ... # type: int
DomainStrict = ... # type: int
def __init__(self, blocked_domains: Optional[Sequence[str]] = ...,
allowed_domains: Optional[Sequence[str]] = ...,
netscape: bool = ...,
rfc2965: bool = ...,
rfc2109_as_netscape: Optional[bool] = ...,
hide_cookie2: bool = ..., strict_domain: bool = ...,
strict_rfc2965_unverifiable: bool =...,
strict_ns_unverifiable: bool = ...,
strict_ns_domain: int = ...,
strict_ns_set_initial_dollar: bool = ...,
strict_ns_set_path: bool = ...) -> None: ...
def blocked_domains(self) -> Tuple[str, ...]: ...
def set_blocked_domains(self, blocked_domains: Sequence[str]) -> None: ...
def is_blocked(self, domain: str) -> bool: ...
def allowed_domains(self) -> Optional[Tuple[str, ...]]: ...
def set_allowed_domains(self, allowed_domains: Optional[Sequence[str]]) \
-> None: ...
def is_not_allowed(self, domain: str) -> bool: ...
class Cookie:
version = ... # type: Optional[int]
name = ... # type: str
value = ... # type: Optional[str]
port = ... # type: Optional[str]
path = ... # type: str
secure = ... # type: bool
expires = ... # type: Optional[int]
discard = ... # type: bool
comment = ... # type: Optional[str]
comment_url = ... # type: Optional[str]
rfc2109 = ... # type: bool
port_specified = ... # type: bool
domain_specified = ... # type: bool
domain_initial_dot = ... # type: bool
def has_nonstandard_attr(self, name: str) -> bool: ...
@overload
def get_nonstandard_attr(self, name: str) -> Optional[str]: ...
@overload
def get_nonstandard_attr(self, name: str, default: _T = ...) -> Union[str, _T]: ...
def set_nonstandard_attr(self, name: str, value: str) -> None: ...
def is_expired(self, now: int = ...) -> bool: ...

View File

@@ -1,46 +1,31 @@
# Stubs for http.cookies (Python 3.5)
#
# NOTE: This dynamically typed stub was automatically generated by stubgen.
from typing import Any
from typing import Generic, Mapping, MutableMapping, Optional, TypeVar, Union
_DataType = Union[str, Mapping[str, Union[str, 'Morsel']]]
_T = TypeVar('_T')
class CookieError(Exception): ...
class Morsel(dict):
def __init__(self): ...
@property
def key(self): ...
@key.setter
def key(self, key): ...
@property
def value(self): ...
@value.setter
def value(self, value): ...
@property
def coded_value(self): ...
@coded_value.setter
def coded_value(self, coded_value): ...
def __setitem__(self, K, V): ...
def setdefault(self, key, val=None): ...
def __eq__(self, morsel): ...
__ne__ = ... # type: Any
def copy(self): ...
def update(self, values): ...
def isReservedKey(self, K): ...
def set(self, key, val, coded_val, LegalChars=...): ...
def output(self, attrs=None, header=''): ...
def js_output(self, attrs=None): ...
def OutputString(self, attrs=None): ...
class Morsel(Dict[str, str], Generic[_T]):
value = ... # type: str
coded_value = ... # type: _T
key = ... # type: str
def set(self, key: str, val: str, coded_val: _T) -> None: ...
def isReservedKey(self, K: str) -> bool: ...
def output(self, attrs: Optional[List[str]] = ...,
header: str = ...) -> str: ...
def js_output(self, attrs: Optional[List[str]] = ...) -> str: ...
def OutputString(self, attrs: Optional[List[str]] = ...) -> str: ...
class BaseCookie(dict):
def value_decode(self, val): ...
def value_encode(self, val): ...
def __init__(self, input=None): ...
def __setitem__(self, key, value): ...
def output(self, attrs=None, header='', sep=''): ...
def js_output(self, attrs=None): ...
def load(self, rawdata): ...
class BaseCookie(MutableMapping[str, Morsel], Generic[_T]):
def __init__(self, input: Optional[_DataType] = ...) -> None: ...
def value_decode(self, val: str) -> _T: ...
def value_encode(self, val: _T) -> str: ...
def output(self, attrs: Optional[List[str]] = ..., header: str = ...,
sep: str = ...) -> str: ...
def js_output(self, attrs: Optional[List[str]] = ...) -> str: ...
def load(self, rawdata: _DataType) -> None: ...
def __setitem__(self, key: str, value: Union[str, Morsel]) -> None: ...
class SimpleCookie(BaseCookie):
def value_decode(self, val): ...
def value_encode(self, val): ...
class SimpleCookie(BaseCookie): ...

63
stdlib/3/http/server.pyi Normal file
View File

@@ -0,0 +1,63 @@
# Stubs for http.server (Python 3.4)
from typing import Any, BinaryIO, Dict, List, Mapping, Optional, Tuple, Union
import socketserver
import email.message
class HTTPServer(socketserver.TCPServer):
server_name = ... # type: str
server_port = ... # type: int
def __init__(self, server_address: Tuple[str, int],
RequestHandlerClass: type) -> None: ...
class BaseHTTPRequestHandler:
client_address = ... # type: Tuple[str, int]
server = ... # type: socketserver.BaseServer
close_connection = ... # type: bool
requestline = ... # type: str
command = ... # type: str
path = ... # type: str
request_version = ... # type: str
headers = ... # type: email.message.Message
rfile = ... # type: BinaryIO
wfile = ... # type: BinaryIO
server_version = ... # type: str
sys_version = ... # type: str
error_message_format = ... # type: str
error_content_type = ... # type: str
protocol_version = ... # type: str
MessageClass = ... # type: type
responses = ... # type: Mapping[int, Tuple[str, str]]
def __init__(self, request: bytes, client_address: Tuple[str, int],
server: socketserver.BaseServer) -> None: ...
def handle(self) -> None: ...
def handle_one_request(self) -> None: ...
def handle_expect_100(self) -> bool: ...
def send_error(self, code: int, message: Optional[str] = ...,
explain: Optional[str] = ...) -> None: ...
def send_response(self, code: int,
message: Optional[str] = ...) -> None: ...
def send_header(self, keyword: str, value: str) -> None: ...
def send_response_only(self, code: int,
message: Optional[str] = ...) -> None: ...
def end_headers(self) -> None: ...
def flush_headers(self) -> None: ...
def log_request(self, code: Union[int, str] = ...,
size: Union[int, str] = ...) -> None: ...
def log_error(self, format: str, *args: Any) -> None: ...
def log_message(self, format: str, *args: Any) -> None: ...
def version_string(self) -> str: ...
def date_time_string(self, timestamp: Optional[int] = ...) -> str: ...
def log_date_time_string(self) -> str: ...
def address_string(self) -> str: ...
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
extensions_map = ... # type: Dict[str, str]
def __init__(self, request: bytes, client_address: Tuple[str, int],
server: socketserver.BaseServer) -> None: ...
def do_GET(self) -> None: ...
def do_HEAD(self) -> None: ...
class CGIHTTPRequestHandler(SimpleHTTPRequestHandler):
cgi_directories = ... # type: List[str]
def do_POST(self) -> None: ...