Skip to content

Commit

Permalink
Add explicit Python 3.13 support (#188)
Browse files Browse the repository at this point in the history
(cherry picked from commit 6c27e2c)
  • Loading branch information
pquentin authored and github-actions[bot] committed Oct 2, 2024
1 parent 71a12b8 commit d197551
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 20 deletions.
14 changes: 5 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v1
- name: Set up Python 3.x
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Install dependencies
Expand All @@ -24,7 +24,7 @@ jobs:
- name: Checkout Repository
uses: actions/checkout@v1
- name: Set up Python 3.x
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Install dependencies
Expand All @@ -40,7 +40,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
os: ["ubuntu-latest"]
experimental: [false]
nox-session: ['']
Expand All @@ -58,14 +58,10 @@ jobs:
uses: actions/checkout@v2

- name: Set up Python - ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Set up Python 3.x to run nox
uses: actions/setup-python@v2
with:
python-version: 3.x
allow-prereleases: true

- name: Install Dependencies
run: python -m pip install --upgrade nox
Expand Down
2 changes: 1 addition & 1 deletion elastic_transport/_node/_http_aiohttp.py
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ async def perform_request( # type: ignore[override]
data=body_to_send,
headers=request_headers,
timeout=aiohttp_timeout,
**kwargs,
**kwargs, # type: ignore[arg-type]
) as response:
if is_head: # We actually called 'GET' so throw away the data.
await response.release()
Expand Down
2 changes: 1 addition & 1 deletion elastic_transport/_node/_http_urllib3.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ def perform_request(
body=body,
exception=err,
)
raise err from None
raise err from e

meta = ApiResponseMeta(
node=self.config,
Expand Down
22 changes: 14 additions & 8 deletions elastic_transport/_node/_urllib3_chain_certs.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,14 +105,20 @@ def _validate_conn(self, conn: HTTPSConnection) -> None: # type: ignore[overrid

fingerprints: List[bytes]
try:
# 'get_verified_chain()' and 'Certificate.public_bytes()' are private APIs
# in CPython 3.10. They're not documented anywhere yet but seem to work
# and we need them for Security on by Default so... onwards we go!
# See: https://github.com/python/cpython/pull/25467
fingerprints = [
hash_func(cert.public_bytes(_ENCODING_DER)).digest()
for cert in conn.sock._sslobj.get_verified_chain() # type: ignore[union-attr]
]
if sys.version_info >= (3, 13):
fingerprints = [
hash_func(cert).digest()
for cert in conn.sock.get_verified_chain()
]
else:
# 'get_verified_chain()' and 'Certificate.public_bytes()' are private APIs
# in CPython 3.10. They're not documented anywhere yet but seem to work
# and we need them for Security on by Default so... onwards we go!
# See: https://github.com/python/cpython/pull/25467
fingerprints = [
hash_func(cert.public_bytes(_ENCODING_DER)).digest()
for cert in conn.sock._sslobj.get_verified_chain() # type: ignore[union-attr]
]
except RERAISE_EXCEPTIONS: # pragma: nocover
raise
# Because these are private APIs we are super careful here
Expand Down
2 changes: 1 addition & 1 deletion noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def lint(session):
session.run("mypy", "--strict", "--show-error-codes", "elastic_transport/")


@nox.session(python=["3.8", "3.9", "3.10", "3.11", "3.12"])
@nox.session(python=["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"])
def test(session):
session.install(".[develop]")
session.run(
Expand Down
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
],
Expand Down

0 comments on commit d197551

Please sign in to comment.