1 # NB: SocketServer.pyi and socketserver.pyi must remain consistent!
\r
2 # Stubs for socketserver
\r
4 from typing import Any, BinaryIO, Optional, Tuple, Type
\r
5 from socket import SocketType
\r
10 address_family = ... # type: int
\r
11 RequestHandlerClass = ... # type: type
\r
12 server_address = ... # type: Tuple[str, int]
\r
13 socket = ... # type: SocketType
\r
14 allow_reuse_address = ... # type: bool
\r
15 request_queue_size = ... # type: int
\r
16 socket_type = ... # type: int
\r
17 timeout = ... # type: Optional[float]
\r
18 def __init__(self, server_address: Tuple[str, int],
\r
19 RequestHandlerClass: type) -> None: ...
\r
20 def fileno(self) -> int: ...
\r
21 def handle_request(self) -> None: ...
\r
22 def serve_forever(self, poll_interval: float = ...) -> None: ...
\r
23 def shutdown(self) -> None: ...
\r
24 def server_close(self) -> None: ...
\r
25 def finish_request(self, request: bytes,
\r
26 client_address: Tuple[str, int]) -> None: ...
\r
27 def get_request(self) -> None: ...
\r
28 def handle_error(self, request: bytes,
\r
29 client_address: Tuple[str, int]) -> None: ...
\r
30 def handle_timeout(self) -> None: ...
\r
31 def process_request(self, request: bytes,
\r
32 client_address: Tuple[str, int]) -> None: ...
\r
33 def server_activate(self) -> None: ...
\r
34 def server_bind(self) -> None: ...
\r
35 def verify_request(self, request: bytes,
\r
36 client_address: Tuple[str, int]) -> bool: ...
\r
37 if sys.version_info >= (3, 6):
\r
38 def __enter__(self) -> 'BaseServer': ...
\r
39 def __exit__(self, exc_type: Optional[Type[BaseException]],
\r
40 exc_val: Optional[BaseException],
\r
41 exc_tb: Optional[types.TracebackType]) -> bool: ...
\r
42 if sys.version_info >= (3, 3):
\r
43 def service_actions(self) -> None: ...
\r
45 class TCPServer(BaseServer):
\r
46 def __init__(self, server_address: Tuple[str, int],
\r
47 RequestHandlerClass: type,
\r
48 bind_and_activate: bool = ...) -> None: ...
\r
50 class UDPServer(BaseServer):
\r
51 def __init__(self, server_address: Tuple[str, int],
\r
52 RequestHandlerClass: type,
\r
53 bind_and_activate: bool = ...) -> None: ...
\r
55 if sys.platform != 'win32':
\r
56 class UnixStreamServer(BaseServer):
\r
57 def __init__(self, server_address: Tuple[str, int],
\r
58 RequestHandlerClass: type,
\r
59 bind_and_activate: bool = ...) -> None: ...
\r
61 class UnixDatagramServer(BaseServer):
\r
62 def __init__(self, server_address: Tuple[str, int],
\r
63 RequestHandlerClass: type,
\r
64 bind_and_activate: bool = ...) -> None: ...
\r
66 class ForkingMixIn: ...
\r
67 class ThreadingMixIn: ...
\r
69 class ForkingTCPServer(ForkingMixIn, TCPServer): ...
\r
70 class ForkingUDPServer(ForkingMixIn, UDPServer): ...
\r
71 class ThreadingTCPServer(ThreadingMixIn, TCPServer): ...
\r
72 class ThreadingUDPServer(ThreadingMixIn, UDPServer): ...
\r
73 if sys.platform != 'win32':
\r
74 class ThreadingUnixStreamServer(ThreadingMixIn, UnixStreamServer): ...
\r
75 class ThreadingUnixDatagramServer(ThreadingMixIn, UnixDatagramServer): ...
\r
78 class BaseRequestHandler:
\r
79 # Those are technically of types, respectively:
\r
80 # * Union[SocketType, Tuple[bytes, SocketType]]
\r
81 # * Union[Tuple[str, int], str]
\r
82 # But there are some concerns that having unions here would cause
\r
83 # too much inconvenience to people using it (see
\r
84 # https://github.com/python/typeshed/pull/384#issuecomment-234649696)
\r
85 request = ... # type: Any
\r
86 client_address = ... # type: Any
\r
88 server = ... # type: BaseServer
\r
89 def setup(self) -> None: ...
\r
90 def handle(self) -> None: ...
\r
91 def finish(self) -> None: ...
\r
93 class StreamRequestHandler(BaseRequestHandler):
\r
94 rfile = ... # type: BinaryIO
\r
95 wfile = ... # type: BinaryIO
\r
97 class DatagramRequestHandler(BaseRequestHandler):
\r
98 rfile = ... # type: BinaryIO
\r
99 wfile = ... # type: BinaryIO
\r