]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
Cope with recent versions of httpcore.
authorBob Halley <halley@dnspython.org>
Fri, 7 Jul 2023 14:25:22 +0000 (07:25 -0700)
committerBob Halley <halley@dnspython.org>
Fri, 7 Jul 2023 14:25:22 +0000 (07:25 -0700)
dns/_asyncio_backend.py
dns/_trio_backend.py
dns/query.py

index e55b73a95029cd10558a1082c6d9fc3556394bd9..c3aff2baf3ee96348a89cb87d79990639247589b 100644 (file)
@@ -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
index 81544832637a1999d2de909f9abf625af20fb3f9..bcfba680b7ab8d50f187d0429bee75fa195458b7 100644 (file)
@@ -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
index 55476c17ea848afa0f28cdf73d2da045cdbe8a98..778adfa131746526e76f9176f8ac8a7bd6eebd31 100644 (file)
@@ -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