From 94c863a2040fb04302cc86eb7b600e914e11f224 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sun, 21 Jul 2024 10:26:04 -0500 Subject: [PATCH] Restore AsyncResolver to be the default resolver (#8522) (cherry picked from commit 5a9e500633a06648d3ea1627b5056b15b9e7db26) --- CHANGES/8522.misc.rst | 5 +++++ aiohttp/resolver.py | 6 +++--- tests/test_resolver.py | 12 +++++++----- 3 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 CHANGES/8522.misc.rst diff --git a/CHANGES/8522.misc.rst b/CHANGES/8522.misc.rst new file mode 100644 index 00000000000..04f7edcc92d --- /dev/null +++ b/CHANGES/8522.misc.rst @@ -0,0 +1,5 @@ +Restore :py:class:`~aiohttp.resolver.AsyncResolver` to be the default resolver. -- by :user:`bdraco`. + +:py:class:`~aiohttp.resolver.AsyncResolver` was disabled by default because +of IPv6 compatibility issues. These issues have been resolved and +:py:class:`~aiohttp.resolver.AsyncResolver` is again now the default resolver. diff --git a/aiohttp/resolver.py b/aiohttp/resolver.py index 3d14d2fcb16..10e36266abe 100644 --- a/aiohttp/resolver.py +++ b/aiohttp/resolver.py @@ -7,16 +7,16 @@ __all__ = ("ThreadedResolver", "AsyncResolver", "DefaultResolver") + try: import aiodns - # aiodns_default = hasattr(aiodns.DNSResolver, 'getaddrinfo') + aiodns_default = hasattr(aiodns.DNSResolver, "getaddrinfo") except ImportError: # pragma: no cover aiodns = None # type: ignore[assignment] + aiodns_default = False -aiodns_default = False - _NUMERIC_SOCKET_FLAGS = socket.AI_NUMERICHOST | socket.AI_NUMERICSERV _SUPPORTS_SCOPE_ID = sys.version_info >= (3, 9, 0) diff --git a/tests/test_resolver.py b/tests/test_resolver.py index fe1902180dd..f51506a6999 100644 --- a/tests/test_resolver.py +++ b/tests/test_resolver.py @@ -328,9 +328,11 @@ async def test_async_resolver_aiodns_not_present(loop, monkeypatch) -> None: AsyncResolver(loop=loop) -def test_default_resolver() -> None: - # if getaddrinfo: - # assert DefaultResolver is AsyncResolver - # else: - # assert DefaultResolver is ThreadedResolver +@pytest.mark.skipif(not getaddrinfo, reason="aiodns >=3.2.0 required") +def test_aio_dns_is_default() -> None: + assert DefaultResolver is AsyncResolver + + +@pytest.mark.skipif(getaddrinfo, reason="aiodns <3.2.0 required") +def test_threaded_resolver_is_default() -> None: assert DefaultResolver is ThreadedResolver