From ca256b85b989f9719a8c2ad8879c2cb6f1d1548d Mon Sep 17 00:00:00 2001 From: Sebastian Rittau Date: Thu, 27 May 2021 16:14:36 +0200 Subject: [PATCH] asyncio.Server.socket fixes (#5538) * Move socket from AbstractServer to Server. * Fix Server.socket type on Python 3.7+. * Use Iterable instead of list for socket argument. Closes: #5535 --- stdlib/asyncio/base_events.pyi | 13 +++++++++++-- stdlib/asyncio/events.pyi | 1 - 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/stdlib/asyncio/base_events.pyi b/stdlib/asyncio/base_events.pyi index 4c171f0ce..a0848da5b 100644 --- a/stdlib/asyncio/base_events.pyi +++ b/stdlib/asyncio/base_events.pyi @@ -7,6 +7,7 @@ from asyncio.futures import Future from asyncio.protocols import BaseProtocol from asyncio.tasks import Task from asyncio.transports import BaseTransport +from collections.abc import Iterable from socket import AddressFamily, SocketKind, _Address, _RetAddress, socket from typing import IO, Any, Awaitable, Callable, Dict, Generator, List, Optional, Sequence, Tuple, TypeVar, Union, overload from typing_extensions import Literal @@ -26,14 +27,22 @@ class Server(AbstractServer): def __init__( self, loop: AbstractEventLoop, - sockets: List[socket], + sockets: Iterable[socket], protocol_factory: _ProtocolFactory, ssl_context: _SSLContext, backlog: int, ssl_handshake_timeout: Optional[float], ) -> None: ... else: - def __init__(self, loop: AbstractEventLoop, sockets: List[socket]) -> None: ... + def __init__(self, loop: AbstractEventLoop, sockets: list[socket]) -> None: ... + if sys.version_info >= (3, 8): + @property + def sockets(self) -> Tuple[socket, ...]: ... + elif sys.version_info >= (3, 7): + @property + def sockets(self) -> list[socket]: ... + else: + sockets: Optional[list[socket]] class BaseEventLoop(AbstractEventLoop, metaclass=ABCMeta): def run_forever(self) -> None: ... diff --git a/stdlib/asyncio/events.pyi b/stdlib/asyncio/events.pyi index 9159af4eb..98bae9f40 100644 --- a/stdlib/asyncio/events.pyi +++ b/stdlib/asyncio/events.pyi @@ -53,7 +53,6 @@ class TimerHandle(Handle): def when(self) -> float: ... class AbstractServer: - sockets: Optional[List[socket]] def close(self) -> None: ... if sys.version_info >= (3, 7): async def __aenter__(self: _T) -> _T: ...