Skip to content

Commit e0664a6

Browse files
janoshShaneHarvey
authored andcommitted
PYTHON-2364 Replace deprecated dns.resolver.query with dns.resolver.resolve (#598)
Fall back to dns.resolver.query for dns v1 compat. (cherry picked from commit fac0372)
1 parent 88434b6 commit e0664a6

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

pymongo/srv_resolver.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@
1616

1717
try:
1818
from dns import resolver
19+
20+
try:
21+
# dnspython >= 2
22+
from dns.resolver import resolve as _resolve
23+
except ImportError:
24+
# dnspython 1.X
25+
from dns.resolver import query as _resolve
1926
_HAVE_DNSPYTHON = True
2027
except ImportError:
2128
_HAVE_DNSPYTHON = False
@@ -54,8 +61,8 @@ def __init__(self, fqdn, connect_timeout=None):
5461

5562
def get_options(self):
5663
try:
57-
results = resolver.query(self.__fqdn, 'TXT',
58-
lifetime=self.__connect_timeout)
64+
results = _resolve(self.__fqdn, 'TXT',
65+
lifetime=self.__connect_timeout)
5966
except (resolver.NoAnswer, resolver.NXDOMAIN):
6067
# No TXT records
6168
return None
@@ -69,8 +76,8 @@ def get_options(self):
6976

7077
def _resolve_uri(self, encapsulate_errors):
7178
try:
72-
results = resolver.query('_mongodb._tcp.' + self.__fqdn, 'SRV',
73-
lifetime=self.__connect_timeout)
79+
results = _resolve('_mongodb._tcp.' + self.__fqdn, 'SRV',
80+
lifetime=self.__connect_timeout)
7481
except Exception as exc:
7582
if not encapsulate_errors:
7683
# Raise the original error.

test/test_client.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -398,11 +398,11 @@ def test_uri_option_precedence(self):
398398
_HAVE_DNSPYTHON, "DNS-related tests need dnspython to be installed")
399399
def test_connection_timeout_ms_propagates_to_DNS_resolver(self):
400400
# Patch the resolver.
401-
from pymongo.srv_resolver import resolver
402-
patched_resolver = FunctionCallRecorder(resolver.query)
403-
pymongo.srv_resolver.resolver.query = patched_resolver
401+
from pymongo.srv_resolver import _resolve
402+
patched_resolver = FunctionCallRecorder(_resolve)
403+
pymongo.srv_resolver._resolve = patched_resolver
404404
def reset_resolver():
405-
pymongo.srv_resolver.resolver.query = resolver.query
405+
pymongo.srv_resolver._resolve = _resolve
406406
self.addCleanup(reset_resolver)
407407

408408
# Setup.

0 commit comments

Comments
 (0)