diff --git a/stdlib/asyncio/base_events.pyi b/stdlib/asyncio/base_events.pyi index 7742651fea2a..2efe78d3e79a 100644 --- a/stdlib/asyncio/base_events.pyi +++ b/stdlib/asyncio/base_events.pyi @@ -6,10 +6,10 @@ from asyncio.futures import Future from asyncio.protocols import BaseProtocol from asyncio.tasks import Task from asyncio.transports import BaseTransport, ReadTransport, SubprocessTransport, WriteTransport -from collections.abc import Awaitable, Callable, Coroutine, Generator, Iterable, Sequence +from collections.abc import AsyncGenerator, Awaitable, Callable, Coroutine, Generator, Iterable, Sequence from socket import AddressFamily, SocketKind, _Address, _RetAddress, socket from typing import IO, Any, TypeVar, overload -from typing_extensions import Literal, TypeAlias +from typing_extensions import Literal, TypeAlias, TypedDict if sys.version_info >= (3, 7): from contextvars import Context @@ -23,7 +23,20 @@ else: _T = TypeVar("_T") _ProtocolT = TypeVar("_ProtocolT", bound=BaseProtocol) -_Context: TypeAlias = dict[str, Any] + +class _BaseContext(TypedDict): + message: str + +class _Context(_BaseContext, total=False): + exception: BaseException + future: Future[Any] + task: Task[Any] + handle: Handle + protocol: BaseProtocol + transport: BaseTransport + socket: socket + asyncgen: AsyncGenerator[Any, Any] + _ExceptionHandler: TypeAlias = Callable[[AbstractEventLoop, _Context], Any] _ProtocolFactory: TypeAlias = Callable[[], BaseProtocol] _SSLContext: TypeAlias = bool | None | ssl.SSLContext diff --git a/stdlib/asyncio/events.pyi b/stdlib/asyncio/events.pyi index ae566234160b..a679bc9dbfbc 100644 --- a/stdlib/asyncio/events.pyi +++ b/stdlib/asyncio/events.pyi @@ -7,7 +7,7 @@ from socket import AddressFamily, SocketKind, _Address, _RetAddress, socket from typing import IO, Any, TypeVar, overload from typing_extensions import Literal, TypeAlias -from .base_events import Server +from .base_events import Server, _Context from .futures import Future from .protocols import BaseProtocol from .tasks import Task @@ -76,7 +76,6 @@ else: _T = TypeVar("_T") _ProtocolT = TypeVar("_ProtocolT", bound=BaseProtocol) -_Context: TypeAlias = dict[str, Any] _ExceptionHandler: TypeAlias = Callable[[AbstractEventLoop, _Context], Any] _ProtocolFactory: TypeAlias = Callable[[], BaseProtocol] _SSLContext: TypeAlias = bool | None | ssl.SSLContext