pass
-# This is handy, but should probably move somewhere else!
-
-def low_level_address_tuple(af, high_level_address_tuple):
- address, port = high_level_address_tuple
- if af == dns.inet.AF_INET:
- return (address, port)
- elif af == dns.inet.AF_INET6:
- ai_flags = socket.AI_NUMERICHOST
- ((*_, tup), *_) = socket.getaddrinfo(address, port, flags=ai_flags)
- return tup
- else:
- raise NotImplementedError(f'unknown address family {af}')
-
-
# These are declared here so backends can import them without creating
# circular dependencies with dns.asyncbackend.
-class Socket:
+class Socket: # pragma: no cover
async def close(self):
pass
await self.close()
-class DatagramSocket(Socket):
+class DatagramSocket(Socket): # pragma: no cover
async def sendto(self, what, destination, timeout):
pass
pass
-class StreamSocket(Socket):
+class StreamSocket(Socket): # pragma: no cover
async def sendall(self, what, destination, timeout):
pass
pass
-class Backend:
+class Backend: # pragma: no cover
def name(self):
return 'unknown'
import dns._asyncbackend
import dns.exception
+import dns.inet
def _maybe_timeout(timeout):
# for brevity
-_lltuple = dns._asyncbackend.low_level_address_tuple
+_lltuple = dns.inet.low_level_address_tuple
class DatagramSocket(dns._asyncbackend.DatagramSocket):
import dns._asyncbackend
import dns.exception
+import dns.inet
def _maybe_timeout(timeout):
# for brevity
-_lltuple = dns._asyncbackend.low_level_address_tuple
+_lltuple = dns.inet.low_level_address_tuple
class DatagramSocket(dns._asyncbackend.DatagramSocket):
import dns.exception
from dns._asyncbackend import Socket, DatagramSocket, \
- StreamSocket, Backend, low_level_address_tuple # noqa:
+ StreamSocket, Backend # noqa:
_default_backend = None
# for brevity
-_lltuple = dns.asyncbackend.low_level_address_tuple
+_lltuple = dns.inet.low_level_address_tuple
def _source_tuple(af, address, port):
return True
except Exception:
return False
+
+
+def low_level_address_tuple(af, high_tuple):
+ """Given an address family and a "high-level" address tuple, i.e.
+ an (address, port) return the appropriate "low-level" address tuple
+ suitable for use in socket calls.
+ """
+ address, port = high_tuple
+ if af == dns.inet.AF_INET:
+ return (address, port)
+ elif af == dns.inet.AF_INET6:
+ ai_flags = socket.AI_NUMERICHOST
+ ((*_, tup), *_) = socket.getaddrinfo(address, port, flags=ai_flags)
+ return tup
+ else:
+ raise NotImplementedError(f'unknown address family {af}')