Skip to content

Commit d89e9f0

Browse files
authored
Adopt requests new get_connection API (#164)
* Fix requests 2.32 compatibility * Test minimum dependencies in CI
1 parent b5157dd commit d89e9f0

File tree

4 files changed

+37
-3
lines changed

4 files changed

+37
-3
lines changed

.github/workflows/ci.yml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,15 @@ jobs:
4343
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
4444
os: ["ubuntu-latest"]
4545
experimental: [false]
46+
nox-session: ['']
47+
include:
48+
- python-version: "3.8"
49+
os: "ubuntu-latest"
50+
experimental: false
51+
nox-session: "test-min-deps"
4652

4753
runs-on: ${{ matrix.os }}
48-
name: test-${{ matrix.python-version }}
54+
name: test-${{ matrix.python-version }} ${{ matrix.nox-session }}
4955
continue-on-error: ${{ matrix.experimental }}
5056
steps:
5157
- name: Checkout repository
@@ -65,9 +71,10 @@ jobs:
6571
run: python -m pip install --upgrade nox
6672

6773
- name: Run tests
68-
run: "nox -rs test-${PYTHON_VERSION%-dev}"
74+
run: nox -s ${NOX_SESSION:-test-$PYTHON_VERSION}
6975
env:
7076
PYTHON_VERSION: ${{ matrix.python-version }}
77+
NOX_SESSION: ${{ matrix.nox-session }}
7178
# Required for development versions of Python
7279
AIOHTTP_NO_EXTENSIONS: 1
7380
FROZENLIST_NO_EXTENSIONS: 1

elastic_transport/_node/_http_requests.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,18 @@ def __init__(self, config: NodeConfig):
169169
)
170170
# Preload the HTTPConnectionPool so initialization issues
171171
# are raised here instead of in perform_request()
172-
adapter.get_connection(self.base_url) # type: ignore[no-untyped-call]
172+
if hasattr(adapter, "get_connection_with_tls_context"):
173+
request = requests.Request(method="GET", url=self.base_url)
174+
prepared_request = self.session.prepare_request(request)
175+
adapter.get_connection_with_tls_context(
176+
prepared_request, verify=self.session.verify
177+
)
178+
else:
179+
# elastic-transport is not vulnerable to CVE-2024-35195 because it uses
180+
# requests.Session and an SSLContext without using the verify parameter.
181+
# We should remove this branch when requiring requests 2.32 or later.
182+
adapter.get_connection(self.base_url)
183+
173184
self.session.mount(prefix=f"{self.scheme}://", adapter=adapter)
174185

175186
def perform_request(

noxfile.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,18 @@ def test(session):
7171
session.run("coverage", "report", "-m")
7272

7373

74+
@nox.session(name="test-min-deps", python="3.8")
75+
def test_min_deps(session):
76+
session.install("-r", "requirements-min.txt", ".[develop]", silent=False)
77+
session.run(
78+
"pytest",
79+
"--cov=elastic_transport",
80+
*(session.posargs or ("tests/",)),
81+
env={"PYTHONWARNINGS": "always::DeprecationWarning"},
82+
)
83+
session.run("coverage", "report", "-m")
84+
85+
7486
@nox.session(python="3")
7587
def docs(session):
7688
session.install(".[develop]")

requirements-min.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
requests==2.26.0
2+
urllib3==1.26.2
3+
aiohttp==3.8.0
4+
httpx==0.27.0

0 commit comments

Comments
 (0)