diff --git a/requests/__init__.py b/requests/__init__.py index 90a0d11a17..d4461ec94b 100644 --- a/requests/__init__.py +++ b/requests/__init__.py @@ -40,44 +40,34 @@ :license: Apache 2.0, see LICENSE for more details. """ +# Check urllib3 for compatibility. import urllib3 -import chardet -import warnings -from .exceptions import RequestsDependencyWarning - - -def check_compatibility(urllib3_version, chardet_version): - urllib3_version = urllib3_version.split('.') - assert urllib3_version != ['dev'] # Verify urllib3 isn't installed from git. - - # Sometimes, urllib3 only reports its version as 16.1. - if len(urllib3_version) == 2: - urllib3_version.append('0') - - # Check urllib3 for compatibility. - major, minor, patch = urllib3_version # noqa: F811 - major, minor, patch = int(major), int(minor), int(patch) - # urllib3 >= 1.21.1, < 1.22 +urllib3_version = urllib3.__version__.split('.') +# Sometimes, urllib3 only reports its version as 16.1. +if len(urllib3_version) == 2: + urllib3_version.append('0') +major, minor, patch = urllib3_version +major, minor, patch = int(major), int(minor), int(patch) +# urllib3 >= 1.21.1, < 1.22 +try: assert major == 1 assert minor >= 21 assert minor <= 22 +except AssertionError: + raise RuntimeError('Requests dependency \'urllib3\' must be version >= 1.21.1, < 1.22!') + - # Check chardet for compatibility. - major, minor, patch = chardet_version.split('.')[:3] - major, minor, patch = int(major), int(minor), int(patch) - # chardet >= 3.0.2, < 3.1.0 +# Check chardet for compatibility. +import chardet +major, minor, patch = chardet.__version__.split('.')[:3] +major, minor, patch = int(major), int(minor), int(patch) +# chardet >= 3.0.2, < 3.1.0 +try: assert major == 3 assert minor < 1 assert patch >= 2 - - -# Check imported dependencies for compatibility. -try: - check_compatibility(urllib3.__version__, chardet.__version__) -except (AssertionError, ValueError): - warnings.warn("urllib3 ({0}) or chardet ({1}) doesn't match a supported " - "version!".format(urllib3.__version__, chardet.__version__), - RequestsDependencyWarning) +except AssertionError: + raise RuntimeError('Requests dependency \'chardet\' must be version >= 3.0.2, < 3.1.0!') # Attempt to enable urllib3's SNI support, if possible try: @@ -86,6 +76,8 @@ def check_compatibility(urllib3_version, chardet_version): except ImportError: pass +import warnings + # urllib3's DependencyWarnings should be silenced. from urllib3.exceptions import DependencyWarning warnings.simplefilter('ignore', DependencyWarning) diff --git a/requests/exceptions.py b/requests/exceptions.py index be7eaed6b9..da5af10bfd 100644 --- a/requests/exceptions.py +++ b/requests/exceptions.py @@ -115,8 +115,3 @@ class RequestsWarning(Warning): class FileModeWarning(RequestsWarning, DeprecationWarning): """A file was opened in text mode, but Requests determined its binary length.""" pass - - -class RequestsDependencyWarning(RequestsWarning): - """An imported dependency doesn't match the expected version range.""" - pass