From f3b6cbd1084eaceea5b015bd9fce6b4ce3524145 Mon Sep 17 00:00:00 2001 From: Thomas Grainger Date: Sat, 16 Jul 2022 22:46:18 +0100 Subject: [PATCH 1/2] Revert "_TransProtPair is no longer defined in asyncio.events" This reverts commit fae5f7fb78feed5dbf6342aa1f01828f37e072bd. --- uvloop/loop.pyi | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/uvloop/loop.pyi b/uvloop/loop.pyi index 83e51755..39285fc7 100644 --- a/uvloop/loop.pyi +++ b/uvloop/loop.pyi @@ -21,7 +21,6 @@ _T = TypeVar('_T') _Context = Dict[str, Any] _ExceptionHandler = Callable[[asyncio.AbstractEventLoop, _Context], Any] _SSLContext = Union[bool, None, ssl.SSLContext] -_TransProtPair = Tuple[asyncio.transports.BaseTransport, asyncio.protocols.BaseProtocol] class Loop: def call_soon( @@ -156,7 +155,7 @@ class Loop: server_hostname: Optional[str] = ..., ssl_handshake_timeout: Optional[float] = ..., ssl_shutdown_timeout: Optional[float] = ..., - ) -> _TransProtPair: ... + ) -> asyncio.events._TransProtPair: ... @overload async def create_connection( self, @@ -173,7 +172,7 @@ class Loop: server_hostname: Optional[str] = ..., ssl_handshake_timeout: Optional[float] = ..., ssl_shutdown_timeout: Optional[float] = ..., - ) -> _TransProtPair: ... + ) -> asyncio.events._TransProtPair: ... async def create_unix_server( self, protocol_factory: asyncio.events._ProtocolFactory, @@ -196,7 +195,7 @@ class Loop: server_hostname: Optional[str] = ..., ssl_handshake_timeout: Optional[float] = ..., ssl_shutdown_timeout: Optional[float] = ..., - ) -> _TransProtPair: ... + ) -> asyncio.events._TransProtPair: ... def default_exception_handler(self, context: _Context) -> None: ... def get_exception_handler(self) -> Optional[_ExceptionHandler]: ... def set_exception_handler(self, handler: Optional[_ExceptionHandler]) -> None: ... @@ -218,7 +217,7 @@ class Loop: ssl: _SSLContext = ..., ssl_handshake_timeout: Optional[float] = ..., ssl_shutdown_timeout: Optional[float] = ..., - ) -> _TransProtPair: ... + ) -> asyncio.events._TransProtPair: ... async def run_in_executor( self, executor: Any, func: Callable[..., _T], *args: Any ) -> _T: ... @@ -232,7 +231,7 @@ class Loop: stdout: Any = ..., stderr: Any = ..., **kwargs: Any, - ) -> _TransProtPair: ... + ) -> asyncio.events._TransProtPair: ... async def subprocess_exec( self, protocol_factory: asyncio.events._ProtocolFactory, @@ -241,13 +240,13 @@ class Loop: stdout: Any = ..., stderr: Any = ..., **kwargs: Any, - ) -> _TransProtPair: ... + ) -> asyncio.events._TransProtPair: ... async def connect_read_pipe( self, protocol_factory: asyncio.events._ProtocolFactory, pipe: Any - ) -> _TransProtPair: ... + ) -> asyncio.events._TransProtPair: ... async def connect_write_pipe( self, protocol_factory: asyncio.events._ProtocolFactory, pipe: Any - ) -> _TransProtPair: ... + ) -> asyncio.events._TransProtPair: ... def add_signal_handler( self, sig: int, callback: Callable[..., Any], *args: Any ) -> None: ... @@ -265,7 +264,7 @@ class Loop: reuse_port: Optional[bool] = ..., allow_broadcast: Optional[bool] = ..., sock: Optional[socket] = ..., - ) -> _TransProtPair: ... + ) -> asyncio.events._TransProtPair: ... async def shutdown_asyncgens(self) -> None: ... async def shutdown_default_executor(self) -> None: ... # Loop doesn't implement these, but since they are marked as abstract in typeshed, From 96aa732027308f9c06618f29e3d009a1abc8df63 Mon Sep 17 00:00:00 2001 From: Thomas Grainger Date: Wed, 11 May 2022 11:02:53 +0100 Subject: [PATCH 2/2] fix mypy --- uvloop/loop.pyi | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/uvloop/loop.pyi b/uvloop/loop.pyi index 39285fc7..8a799cca 100644 --- a/uvloop/loop.pyi +++ b/uvloop/loop.pyi @@ -21,6 +21,7 @@ _T = TypeVar('_T') _Context = Dict[str, Any] _ExceptionHandler = Callable[[asyncio.AbstractEventLoop, _Context], Any] _SSLContext = Union[bool, None, ssl.SSLContext] +_ProtocolT = TypeVar("_ProtocolT", bound=asyncio.BaseProtocol) class Loop: def call_soon( @@ -142,7 +143,7 @@ class Loop: @overload async def create_connection( self, - protocol_factory: asyncio.events._ProtocolFactory, + protocol_factory: Callable[[], _ProtocolT], host: str = ..., port: int = ..., *, @@ -155,11 +156,11 @@ class Loop: server_hostname: Optional[str] = ..., ssl_handshake_timeout: Optional[float] = ..., ssl_shutdown_timeout: Optional[float] = ..., - ) -> asyncio.events._TransProtPair: ... + ) -> tuple[asyncio.BaseProtocol, _ProtocolT]: ... @overload async def create_connection( self, - protocol_factory: asyncio.events._ProtocolFactory, + protocol_factory: Callable[[], _ProtocolT], host: None = ..., port: None = ..., *, @@ -172,7 +173,7 @@ class Loop: server_hostname: Optional[str] = ..., ssl_handshake_timeout: Optional[float] = ..., ssl_shutdown_timeout: Optional[float] = ..., - ) -> asyncio.events._TransProtPair: ... + ) -> tuple[asyncio.BaseProtocol, _ProtocolT]: ... async def create_unix_server( self, protocol_factory: asyncio.events._ProtocolFactory, @@ -187,7 +188,7 @@ class Loop: ) -> asyncio.AbstractServer: ... async def create_unix_connection( self, - protocol_factory: asyncio.events._ProtocolFactory, + protocol_factory: Callable[[], _ProtocolT], path: Optional[str] = ..., *, ssl: _SSLContext = ..., @@ -195,7 +196,7 @@ class Loop: server_hostname: Optional[str] = ..., ssl_handshake_timeout: Optional[float] = ..., ssl_shutdown_timeout: Optional[float] = ..., - ) -> asyncio.events._TransProtPair: ... + ) -> tuple[asyncio.BaseProtocol, _ProtocolT]: ... def default_exception_handler(self, context: _Context) -> None: ... def get_exception_handler(self) -> Optional[_ExceptionHandler]: ... def set_exception_handler(self, handler: Optional[_ExceptionHandler]) -> None: ... @@ -211,49 +212,49 @@ class Loop: async def sock_connect(self, sock: socket, address: _Address) -> None: ... async def connect_accepted_socket( self, - protocol_factory: asyncio.events._ProtocolFactory, + protocol_factory: Callable[[], _ProtocolT], sock: socket, *, ssl: _SSLContext = ..., ssl_handshake_timeout: Optional[float] = ..., ssl_shutdown_timeout: Optional[float] = ..., - ) -> asyncio.events._TransProtPair: ... + ) -> tuple[asyncio.BaseProtocol, _ProtocolT]: ... async def run_in_executor( self, executor: Any, func: Callable[..., _T], *args: Any ) -> _T: ... def set_default_executor(self, executor: Any) -> None: ... async def subprocess_shell( self, - protocol_factory: asyncio.events._ProtocolFactory, + protocol_factory: Callable[[], _ProtocolT], cmd: Union[bytes, str], *, stdin: Any = ..., stdout: Any = ..., stderr: Any = ..., **kwargs: Any, - ) -> asyncio.events._TransProtPair: ... + ) -> tuple[asyncio.BaseProtocol, _ProtocolT]: ... async def subprocess_exec( self, - protocol_factory: asyncio.events._ProtocolFactory, + protocol_factory: Callable[[], _ProtocolT], *args: Any, stdin: Any = ..., stdout: Any = ..., stderr: Any = ..., **kwargs: Any, - ) -> asyncio.events._TransProtPair: ... + ) -> tuple[asyncio.BaseProtocol, _ProtocolT]: ... async def connect_read_pipe( - self, protocol_factory: asyncio.events._ProtocolFactory, pipe: Any - ) -> asyncio.events._TransProtPair: ... + self, protocol_factory: Callable[[], _ProtocolT], pipe: Any + ) -> tuple[asyncio.BaseProtocol, _ProtocolT]: ... async def connect_write_pipe( - self, protocol_factory: asyncio.events._ProtocolFactory, pipe: Any - ) -> asyncio.events._TransProtPair: ... + self, protocol_factory: Callable[[], _ProtocolT], pipe: Any + ) -> tuple[asyncio.BaseProtocol, _ProtocolT]: ... def add_signal_handler( self, sig: int, callback: Callable[..., Any], *args: Any ) -> None: ... def remove_signal_handler(self, sig: int) -> bool: ... async def create_datagram_endpoint( self, - protocol_factory: asyncio.events._ProtocolFactory, + protocol_factory: Callable[[], _ProtocolT], local_addr: Optional[Tuple[str, int]] = ..., remote_addr: Optional[Tuple[str, int]] = ..., *, @@ -264,7 +265,7 @@ class Loop: reuse_port: Optional[bool] = ..., allow_broadcast: Optional[bool] = ..., sock: Optional[socket] = ..., - ) -> asyncio.events._TransProtPair: ... + ) -> tuple[asyncio.BaseProtocol, _ProtocolT]: ... async def shutdown_asyncgens(self) -> None: ... async def shutdown_default_executor(self) -> None: ... # Loop doesn't implement these, but since they are marked as abstract in typeshed,