From 1e599cb522d3a6c2b26b6f68adaf24590a3a8900 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jeremy=20Lain=C3=A9?= Date: Wed, 27 Oct 2021 18:45:44 +0200 Subject: [PATCH] [asyncio] remove shim for asynccontextmanager We now require Python >= 3.7. --- src/aioquic/asyncio/client.py | 2 +- src/aioquic/asyncio/compat.py | 33 ------------------------------ tests/test_asyncio_compat.py | 38 ----------------------------------- 3 files changed, 1 insertion(+), 72 deletions(-) delete mode 100644 src/aioquic/asyncio/compat.py delete mode 100644 tests/test_asyncio_compat.py diff --git a/src/aioquic/asyncio/client.py b/src/aioquic/asyncio/client.py index 82983654d..ca53e6a91 100644 --- a/src/aioquic/asyncio/client.py +++ b/src/aioquic/asyncio/client.py @@ -2,12 +2,12 @@ import ipaddress import socket import sys +from contextlib import asynccontextmanager from typing import AsyncGenerator, Callable, Optional, cast from ..quic.configuration import QuicConfiguration from ..quic.connection import QuicConnection from ..tls import SessionTicketHandler -from .compat import asynccontextmanager from .protocol import QuicConnectionProtocol, QuicStreamHandler __all__ = ["connect"] diff --git a/src/aioquic/asyncio/compat.py b/src/aioquic/asyncio/compat.py deleted file mode 100644 index 201e62f6d..000000000 --- a/src/aioquic/asyncio/compat.py +++ /dev/null @@ -1,33 +0,0 @@ -from contextlib import ContextDecorator -from functools import wraps - -try: - from contextlib import asynccontextmanager -except ImportError: - asynccontextmanager = None - - -class _AsyncGeneratorContextManager(ContextDecorator): - def __init__(self, func, args, kwds): - self.gen = func(*args, **kwds) - self.func, self.args, self.kwds = func, args, kwds - self.__doc__ = func.__doc__ - - async def __aenter__(self): - return await self.gen.__anext__() - - async def __aexit__(self, typ, value, traceback): - if typ is not None: - await self.gen.athrow(typ, value, traceback) - - -def _asynccontextmanager(func): - @wraps(func) - def helper(*args, **kwds): - return _AsyncGeneratorContextManager(func, args, kwds) - - return helper - - -if asynccontextmanager is None: - asynccontextmanager = _asynccontextmanager diff --git a/tests/test_asyncio_compat.py b/tests/test_asyncio_compat.py deleted file mode 100644 index 906dbf511..000000000 --- a/tests/test_asyncio_compat.py +++ /dev/null @@ -1,38 +0,0 @@ -import asyncio -from unittest import TestCase - -from aioquic.asyncio.compat import _asynccontextmanager - -from .utils import run - - -@_asynccontextmanager -async def some_context(): - await asyncio.sleep(0) - yield - await asyncio.sleep(0) - - -class AsyncioCompatTest(TestCase): - def test_ok(self): - async def test(): - async with some_context(): - pass - - run(test()) - - def test_raise_exception(self): - async def test(): - async with some_context(): - raise RuntimeError("some reason") - - with self.assertRaises(RuntimeError): - run(test()) - - def test_raise_exception_type(self): - async def test(): - async with some_context(): - raise RuntimeError - - with self.assertRaises(RuntimeError): - run(test())