Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into backport-200-to-8.x
Browse files Browse the repository at this point in the history
  • Loading branch information
pquentin committed Jan 6, 2025
2 parents 06e5d76 + 6167370 commit f493844
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 23 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
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# Changelog

## 8.15.1 (2024-10-09)

* Add explicit Python 3.13 support ([#189](https://github.com/elastic/elastic-transport-python/pull/189))

## 8.15.0 (2024-08-09)

* Removed call to `raise_for_status()` when using `HttpxAsyncHttpNode` to prevent exceptions being raised for 404 responses ([#182](https://github.com/elastic/elastic-transport-python/pull/182))
* Documented response classes ([#175](https://github.com/elastic/elastic-transport-python/pull/175))
* Dropped support for Python 3.7 ([#179](https://github.com/elastic/elastic-transport-python/pull/179))

## 8.13.1 (2024-04-28)

- Fixed requests 2.32 compatibility (#164)
Expand Down
8 changes: 6 additions & 2 deletions elastic_transport/_node/_http_aiohttp.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import ssl
import sys
import warnings
from typing import Optional, Union
from typing import Optional, TypedDict, Union

from .._compat import warn_stacklevel
from .._exceptions import ConnectionError, ConnectionTimeout, SecurityWarning, TlsError
Expand Down Expand Up @@ -56,6 +56,10 @@

# See aio-libs/aiohttp#1769 and #5012
_AIOHTTP_FIXED_HEAD_BUG = _AIOHTTP_SEMVER_VERSION >= (3, 7, 0)

class RequestKwarg(TypedDict, total=False):
ssl: aiohttp.Fingerprint

except ImportError: # pragma: nocover
_AIOHTTP_AVAILABLE = False
_AIOHTTP_META_VERSION = ""
Expand Down Expand Up @@ -176,7 +180,7 @@ async def perform_request( # type: ignore[override]
else:
body_to_send = None

kwargs = {}
kwargs: RequestKwarg = {}
if self._ssl_assert_fingerprint:
kwargs["ssl"] = aiohttp_fingerprint(self._ssl_assert_fingerprint)

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 elastic_transport/_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@
# specific language governing permissions and limitations
# under the License.

__version__ = "8.13.1"
__version__ = "8.15.1"
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
4 changes: 3 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@
install_requires=[
"urllib3>=1.26.2, <3",
"certifi",
"importlib-metadata; python_version<'3.8'",
],
python_requires=">=3.8",
extras_require={
Expand All @@ -66,6 +65,8 @@
"requests",
"aiohttp",
"httpx",
# https://github.com/encode/httpx/discussions/3214#discussioncomment-10830925
"httpcore<1.0.6",
"respx",
"opentelemetry-api",
"opentelemetry-sdk",
Expand All @@ -88,6 +89,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 f493844

Please sign in to comment.