From 4ea8fcbb3b8876923e92f4c98324a16249f00ab7 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 26 Apr 2024 09:15:02 -0500 Subject: [PATCH 1/2] PYTHON-4407 Eagerly import dnspython (#1622) --- pymongo/srv_resolver.py | 14 ++++---------- test/test_srv_polling.py | 6 ++++++ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pymongo/srv_resolver.py b/pymongo/srv_resolver.py index fa880f031..4ee1b1f5b 100644 --- a/pymongo/srv_resolver.py +++ b/pymongo/srv_resolver.py @@ -17,23 +17,17 @@ from __future__ import annotations import ipaddress import random -from typing import TYPE_CHECKING, Any, Optional, Union +from typing import Any, Optional, Union -from pymongo._lazy_import import lazy_import from pymongo.common import CONNECT_TIMEOUT from pymongo.errors import ConfigurationError -if TYPE_CHECKING: +try: from dns import resolver _HAVE_DNSPYTHON = True -else: - try: - resolver = lazy_import("dns.resolver") - - _HAVE_DNSPYTHON = True - except ImportError: - _HAVE_DNSPYTHON = False +except ImportError: + _HAVE_DNSPYTHON = False # dnspython can return bytes or str from various parts diff --git a/test/test_srv_polling.py b/test/test_srv_polling.py index 18de261da..32646b994 100644 --- a/test/test_srv_polling.py +++ b/test/test_srv_polling.py @@ -345,6 +345,12 @@ class TestSrvPolling(unittest.TestCase): AssertionError, self.assert_nodelist_change, modified, client, timeout=WAIT_TIME / 2 ) + def test_import_dns_resolver(self): + # Regression test for PYTHON-4407 + import dns.resolver + + self.assertTrue(hasattr(dns.resolver, "resolve")) + if __name__ == "__main__": unittest.main() From 21461ace4fe6ed1eb26626d5c84ebb77202faccd Mon Sep 17 00:00:00 2001 From: Subin Kim Date: Mon, 29 Apr 2024 19:19:28 +0900 Subject: [PATCH 2/2] fix: update `pyproject.toml` project source url (#1623) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a48baa09a..4520ba08c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,7 +43,7 @@ classifiers = [ [project.urls] Homepage = "https://www.mongodb.org" Documentation = "https://pymongo.readthedocs.io" -Source = "https://github.com/mongodb/pymongo" +Source = "https://github.com/mongodb/mongo-python-driver" Tracker = "https://jira.mongodb.org/projects/PYTHON/issues" [tool.setuptools.dynamic]