File tree Expand file tree Collapse file tree 2 files changed +26
-2
lines changed Expand file tree Collapse file tree 2 files changed +26
-2
lines changed Original file line number Diff line number Diff line change 1717
1818import ipaddress
1919import random
20+ from importlib .metadata import version
2021from typing import TYPE_CHECKING , Any , Optional , Union
2122
22- from pymongo .common import CONNECT_TIMEOUT
23+ from pymongo .common import CONNECT_TIMEOUT , check_for_min_version
2324from pymongo .errors import ConfigurationError
2425
2526if TYPE_CHECKING :
@@ -32,6 +33,15 @@ def _have_dnspython() -> bool:
3233 try :
3334 import dns # noqa: F401
3435
36+ dns_version = version ("dnspython" )
37+ required_version , is_valid = check_for_min_version (dns_version , "dnspython" )
38+ if not is_valid :
39+ raise RuntimeError (
40+ f"pymongo requires dnspython>={ required_version } , "
41+ f"found version { dns_version } . "
42+ "Install a compatible version with pip"
43+ )
44+
3545 return True
3646 except ImportError :
3747 return False
@@ -80,6 +90,8 @@ def __init__(
8090 srv_service_name : str ,
8191 srv_max_hosts : int = 0 ,
8292 ):
93+ # Ensure the version of dnspython is compatible.
94+ _have_dnspython ()
8395 self .__fqdn = fqdn
8496 self .__srv = srv_service_name
8597 self .__connect_timeout = connect_timeout or CONNECT_TIMEOUT
Original file line number Diff line number Diff line change 1717
1818import ipaddress
1919import random
20+ from importlib .metadata import version
2021from typing import TYPE_CHECKING , Any , Optional , Union
2122
22- from pymongo .common import CONNECT_TIMEOUT
23+ from pymongo .common import CONNECT_TIMEOUT , check_for_min_version
2324from pymongo .errors import ConfigurationError
2425
2526if TYPE_CHECKING :
@@ -32,6 +33,15 @@ def _have_dnspython() -> bool:
3233 try :
3334 import dns # noqa: F401
3435
36+ dns_version = version ("dnspython" )
37+ required_version , is_valid = check_for_min_version (dns_version , "dnspython" )
38+ if not is_valid :
39+ raise RuntimeError (
40+ f"pymongo requires dnspython>={ required_version } , "
41+ f"found version { dns_version } . "
42+ "Install a compatible version with pip"
43+ )
44+
3545 return True
3646 except ImportError :
3747 return False
@@ -80,6 +90,8 @@ def __init__(
8090 srv_service_name : str ,
8191 srv_max_hosts : int = 0 ,
8292 ):
93+ # Ensure the version of dnspython is compatible.
94+ _have_dnspython ()
8395 self .__fqdn = fqdn
8496 self .__srv = srv_service_name
8597 self .__connect_timeout = connect_timeout or CONNECT_TIMEOUT
You can’t perform that action at this time.
0 commit comments