PYTHON-2364 Replace deprecated dns.resolver.query with dns.resolver.resolve (#598)

Fall back to dns.resolver.query for dns v1 compat.
This commit is contained in:
Janosh Riebesell 2021-04-23 21:48:09 +02:00 committed by GitHub
parent 1818553fc9
commit fac0372ba0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 8 deletions

View File

@ -16,6 +16,13 @@
try:
from dns import resolver
try:
# dnspython >= 2
from dns.resolver import resolve as _resolve
except ImportError:
# dnspython 1.X
from dns.resolver import query as _resolve
_HAVE_DNSPYTHON = True
except ImportError:
_HAVE_DNSPYTHON = False
@ -48,8 +55,8 @@ class _SrvResolver(object):
def get_options(self):
try:
results = resolver.query(self.__fqdn, 'TXT',
lifetime=self.__connect_timeout)
results = _resolve(self.__fqdn, 'TXT',
lifetime=self.__connect_timeout)
except (resolver.NoAnswer, resolver.NXDOMAIN):
# No TXT records
return None
@ -63,8 +70,8 @@ class _SrvResolver(object):
def _resolve_uri(self, encapsulate_errors):
try:
results = resolver.query('_mongodb._tcp.' + self.__fqdn, 'SRV',
lifetime=self.__connect_timeout)
results = _resolve('_mongodb._tcp.' + self.__fqdn, 'SRV',
lifetime=self.__connect_timeout)
except Exception as exc:
if not encapsulate_errors:
# Raise the original error.

View File

@ -392,11 +392,11 @@ class ClientUnitTest(unittest.TestCase):
_HAVE_DNSPYTHON, "DNS-related tests need dnspython to be installed")
def test_connection_timeout_ms_propagates_to_DNS_resolver(self):
# Patch the resolver.
from pymongo.srv_resolver import resolver
patched_resolver = FunctionCallRecorder(resolver.query)
pymongo.srv_resolver.resolver.query = patched_resolver
from pymongo.srv_resolver import _resolve
patched_resolver = FunctionCallRecorder(_resolve)
pymongo.srv_resolver._resolve = patched_resolver
def reset_resolver():
pymongo.srv_resolver.resolver.query = resolver.query
pymongo.srv_resolver._resolve = _resolve
self.addCleanup(reset_resolver)
# Setup.