41
41
"""
42
42
43
43
import urllib3
44
- import charset_normalizer
45
44
import warnings
46
45
from .exceptions import RequestsDependencyWarning
47
46
47
+ try :
48
+ from charset_normalizer import __version__ as charset_normalizer_version
49
+ except ImportError :
50
+ charset_normalizer_version = None
51
+
52
+ try :
53
+ from chardet import __version__ as chardet_version
54
+ except ImportError :
55
+ chardet_version = None
48
56
49
- def check_compatibility (urllib3_version , charset_normalizer_version ):
57
+ def check_compatibility (urllib3_version , chardet_version , charset_normalizer_version ):
50
58
urllib3_version = urllib3_version .split ('.' )
51
59
assert urllib3_version != ['dev' ] # Verify urllib3 isn't installed from git.
52
60
@@ -63,10 +71,16 @@ def check_compatibility(urllib3_version, charset_normalizer_version):
63
71
assert minor <= 26
64
72
65
73
# Check charset_normalizer for compatibility.
66
- major , minor , patch = charset_normalizer_version .split ('.' )[:3 ]
67
- major , minor , patch = int (major ), int (minor ), int (patch )
68
- # charset_normalizer >= 3.0.2, < 5.0.0
69
- assert (1 , 3 , 5 ) <= (major , minor , patch ) < (2 , 0 , 0 )
74
+ if chardet_version :
75
+ major , minor , patch = chardet_version .split ('.' )[:3 ]
76
+ major , minor , patch = int (major ), int (minor ), int (patch )
77
+ # chardet_version >= 3.0.2, < 5.0.0
78
+ assert (3 , 0 , 2 ) <= (major , minor , patch ) < (5 , 0 , 0 )
79
+ else :
80
+ major , minor , patch = charset_normalizer_version .split ('.' )[:3 ]
81
+ major , minor , patch = int (major ), int (minor ), int (patch )
82
+ # charset_normalizer >= 1.3.5, < 2.0.0
83
+ assert (1 , 3 , 5 ) <= (major , minor , patch ) < (2 , 0 , 0 )
70
84
71
85
72
86
def _check_cryptography (cryptography_version ):
@@ -82,10 +96,10 @@ def _check_cryptography(cryptography_version):
82
96
83
97
# Check imported dependencies for compatibility.
84
98
try :
85
- check_compatibility (urllib3 .__version__ , charset_normalizer . __version__ )
99
+ check_compatibility (urllib3 .__version__ , chardet_version , charset_normalizer_version )
86
100
except (AssertionError , ValueError ):
87
- warnings .warn ("urllib3 ({}) or charset_normalizer ({}) doesn't match a supported "
88
- "version!" .format (urllib3 .__version__ , charset_normalizer . __version__ ),
101
+ warnings .warn ("urllib3 ({}) or chardet ({})/ charset_normalizer ({}) doesn't match a supported "
102
+ "version!" .format (urllib3 .__version__ , chardet_version , charset_normalizer_version ),
89
103
RequestsDependencyWarning )
90
104
91
105
# Attempt to enable urllib3's fallback for SNI support
0 commit comments