From: Bob Halley Date: Fri, 7 Jul 2023 14:25:22 +0000 (-0700) Subject: Cope with recent versions of httpcore. X-Git-Tag: v2.5.0rc1~82 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=906a5ef63599fb39dbc3a25b772a3b947efb2cb2;p=thirdparty%2Fdnspython.git Cope with recent versions of httpcore. --- diff --git a/dns/_asyncio_backend.py b/dns/_asyncio_backend.py index e55b73a9..c3aff2ba 100644 --- a/dns/_asyncio_backend.py +++ b/dns/_asyncio_backend.py @@ -121,13 +121,20 @@ class StreamSocket(dns._asyncbackend.StreamSocket): try: import anyio import httpcore - import httpcore.backends.asyncio - import httpcore.backends.base + + try: + _CoreAsyncNetworkBackend = httpcore.AsyncNetworkBackend + from httpcore._backends.anyio import AnyIOStream as _CoreAnyIOStream + except ImportError: + from httpcore.backends.base import ( + AsyncNetworkBackend as _CoreAsyncNetworkBackend, + ) + from httpcore.backends.asyncio import AsyncIOStream as _CoreAnyIOStream import httpx from dns.query import _compute_times, _expiration_for_this_attempt, _remaining - class _NetworkBackend(httpcore.backends.base.AsyncNetworkBackend): + class _NetworkBackend(_CoreAsyncNetworkBackend): def __init__(self, resolver, local_port, bootstrap_address, family): super().__init__() self._local_port = local_port @@ -167,7 +174,7 @@ try: remote_port=port, local_host=local_address, ) - return httpcore.backends.asyncio.AsyncIOStream(stream) + return _CoreAnyIOStream(stream) except Exception: pass raise httpcore.ConnectError diff --git a/dns/_trio_backend.py b/dns/_trio_backend.py index 81544832..bcfba680 100644 --- a/dns/_trio_backend.py +++ b/dns/_trio_backend.py @@ -97,13 +97,20 @@ class StreamSocket(dns._asyncbackend.StreamSocket): try: import httpcore - import httpcore.backends.base - import httpcore.backends.trio + + try: + _CoreAsyncNetworkBackend = httpcore.AsyncNetworkBackend + from httpcore._backends.trio import TrioStream as _CoreTrioStream + except ImportError: + from httpcore.backends.base import ( + AsyncNetworkBackend as _CoreAsyncNetworkBackend, + ) + from httpcore.backends.trio import TrioStream as _CoreTrioStream import httpx from dns.query import _compute_times, _expiration_for_this_attempt, _remaining - class _NetworkBackend(httpcore.backends.base.AsyncNetworkBackend): + class _NetworkBackend(_CoreAsyncNetworkBackend): def __init__(self, resolver, local_port, bootstrap_address, family): super().__init__() self._local_port = local_port @@ -142,7 +149,7 @@ try: sock = await Backend().make_socket( af, socket.SOCK_STREAM, 0, source, destination, timeout ) - return httpcore.backends.trio.TrioStream(sock.stream) + return _CoreTrioStream(sock.stream) except Exception: continue raise httpcore.ConnectError diff --git a/dns/query.py b/dns/query.py index 55476c17..778adfa1 100644 --- a/dns/query.py +++ b/dns/query.py @@ -71,10 +71,15 @@ try: pass import httpcore - import httpcore.backends.base - import httpcore.backends.sync - class _NetworkBackend(httpcore.backends.base.NetworkBackend): + try: + _CoreNetworkBackend = httpcore.NetworkBackend + from httpcore._backends.sync import SyncStream as _CoreSyncStream + except ImportError: + from httpcore.backends.base import NetworkBackend as _CoreNetworkBackend + from httpcore.backends.sync import SyncStream as _CoreSyncStream + + class _NetworkBackend(_CoreNetworkBackend): def __init__(self, resolver, local_port, bootstrap_address, family): super().__init__() self._local_port = local_port @@ -116,7 +121,7 @@ try: dns.inet.low_level_address_tuple((address, port), af), attempt_expiration, ) - return httpcore.backends.sync.SyncStream(sock) + return _CoreSyncStream(sock) except Exception: pass raise httpcore.ConnectError