Skip to content

Commit aef37f1

Browse files
Fix: Compatibility with urllib3>=2 (#40)
* Build: Pin urllib3<2 * Fix: Actually fix the issue properly
1 parent 632e9e4 commit aef37f1

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

morphapi/utils/webqueries.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,22 @@
11
import time
22

33
import requests
4+
from requests.adapters import HTTPAdapter
5+
from requests.packages.urllib3.util.ssl_ import create_urllib3_context
46

57
from morphapi.utils.data_io import connected_to_internet
68

79
mouselight_base_url = "https://ml-neuronbrowser.janelia.org/"
10+
CIPHERS = ":HIGH:!DH:!aNULL"
11+
12+
13+
class NoDhAdapter(HTTPAdapter):
14+
"""A TransportAdapter that disables DH cipher in Requests."""
15+
16+
def init_poolmanager(self, *args, **kwargs):
17+
context = create_urllib3_context(ciphers=CIPHERS)
18+
kwargs["ssl_context"] = context
19+
return super(NoDhAdapter, self).init_poolmanager(*args, **kwargs)
820

921

1022
def request(url, verify=True):
@@ -19,14 +31,9 @@ def request(url, verify=True):
1931
"You need to have an internet connection to send requests."
2032
)
2133

22-
try:
23-
_DEFAULT_CIPHERS = requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS
24-
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = (
25-
_DEFAULT_CIPHERS + ":HIGH:!DH:!aNULL"
26-
)
27-
response = requests.get(url, verify=verify)
28-
finally:
29-
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = _DEFAULT_CIPHERS
34+
session = requests.Session()
35+
session.mount("https://", NoDhAdapter())
36+
response = session.get(url)
3037

3138
if response.ok:
3239
return response

0 commit comments

Comments
 (0)