Skip to content

Commit 175e700

Browse files
authored
Push items down from socketserver.BaseServer to TCPServer (#13082)
Cf. python/cpython#127209
1 parent 336140b commit 175e700

File tree

2 files changed

+9
-11
lines changed

2 files changed

+9
-11
lines changed

stdlib/@tests/stubtest_allowlists/common.txt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ http.client.HTTPConnection.response_class # the actual type at runtime is abc.A
1010
importlib.abc.Loader.exec_module # See Lib/importlib/_abc.py. Might be defined for backwards compatibility
1111
importlib.abc.MetaPathFinder.find_spec # Not defined on the actual class, but expected to exist.
1212
importlib.abc.PathEntryFinder.find_spec # Not defined on the actual class, but expected to exist.
13-
socketserver.BaseServer.fileno # implemented in derived classes
14-
socketserver.BaseServer.get_request # implemented in derived classes
15-
socketserver.BaseServer.server_bind # implemented in derived classes
1613
tkinter.simpledialog.[A-Z_]+
1714
tkinter.simpledialog.TclVersion
1815
tkinter.simpledialog.TkVersion
@@ -411,6 +408,7 @@ pickle._Pickler\..* # Best effort typing for undocumented internals
411408
pickle._Unpickler\..* # Best effort typing for undocumented internals
412409
_?queue.SimpleQueue.__init__ # C signature is broader than what is actually accepted
413410
shutil.rmtree # function with attributes, which we approximate with a callable protocol
411+
socketserver.BaseServer.get_request # Not implemented, but expected to exist on subclasses.
414412
ssl.PROTOCOL_SSLv2 # Depends on the existence and flags of SSL
415413
ssl.PROTOCOL_SSLv3 # Depends on the existence and flags of SSL
416414
sys.implementation # Actually SimpleNamespace but then you wouldn't have convenient attributes

stdlib/socketserver.pyi

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,29 +38,22 @@ _AfInetAddress: TypeAlias = tuple[str | bytes | bytearray, int] # address accep
3838

3939
# This can possibly be generic at some point:
4040
class BaseServer:
41-
address_family: int
4241
server_address: _Address
43-
socket: _socket
44-
allow_reuse_address: bool
45-
request_queue_size: int
46-
socket_type: int
4742
timeout: float | None
4843
RequestHandlerClass: Callable[[Any, _RetAddress, Self], BaseRequestHandler]
4944
def __init__(
5045
self, server_address: _Address, RequestHandlerClass: Callable[[Any, _RetAddress, Self], BaseRequestHandler]
5146
) -> None: ...
52-
def fileno(self) -> int: ...
5347
def handle_request(self) -> None: ...
5448
def serve_forever(self, poll_interval: float = 0.5) -> None: ...
5549
def shutdown(self) -> None: ...
5650
def server_close(self) -> None: ...
5751
def finish_request(self, request: _RequestType, client_address: _RetAddress) -> None: ...
58-
def get_request(self) -> tuple[Any, Any]: ...
52+
def get_request(self) -> tuple[Any, Any]: ... # Not implemented here, but expected to exist on subclasses
5953
def handle_error(self, request: _RequestType, client_address: _RetAddress) -> None: ...
6054
def handle_timeout(self) -> None: ...
6155
def process_request(self, request: _RequestType, client_address: _RetAddress) -> None: ...
6256
def server_activate(self) -> None: ...
63-
def server_bind(self) -> None: ...
6457
def verify_request(self, request: _RequestType, client_address: _RetAddress) -> bool: ...
6558
def __enter__(self) -> Self: ...
6659
def __exit__(
@@ -71,6 +64,11 @@ class BaseServer:
7164
def close_request(self, request: _RequestType) -> None: ... # undocumented
7265

7366
class TCPServer(BaseServer):
67+
address_family: int
68+
socket: _socket
69+
allow_reuse_address: bool
70+
request_queue_size: int
71+
socket_type: int
7472
if sys.version_info >= (3, 11):
7573
allow_reuse_port: bool
7674
server_address: _AfInetAddress
@@ -80,7 +78,9 @@ class TCPServer(BaseServer):
8078
RequestHandlerClass: Callable[[Any, _RetAddress, Self], BaseRequestHandler],
8179
bind_and_activate: bool = True,
8280
) -> None: ...
81+
def fileno(self) -> int: ...
8382
def get_request(self) -> tuple[_socket, _RetAddress]: ...
83+
def server_bind(self) -> None: ...
8484

8585
class UDPServer(TCPServer):
8686
max_packet_size: ClassVar[int]

0 commit comments

Comments
 (0)