diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d1328ca9..0a163d74 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "2.7.0" + ".": "2.7.1" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index a673c706..d310b78e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 2.7.1 (2026-08-04) + +Full Changelog: [v2.7.0...v2.7.1](https://github.com/turbopuffer/turbopuffer-python/compare/v2.7.0...v2.7.1) + +### Bug Fixes + +* **client:** thread connection limits into the sync transport ([#252](https://github.com/turbopuffer/turbopuffer-python/issues/252)) ([05dd0a2](https://github.com/turbopuffer/turbopuffer-python/commit/05dd0a2ce3bc5c474fc5c33bdf5125f36443a608)) + ## 2.7.0 (2026-07-30) Full Changelog: [v2.6.0...v2.7.0](https://github.com/turbopuffer/turbopuffer-python/compare/v2.6.0...v2.7.0) diff --git a/pyproject.toml b/pyproject.toml index acb85b5e..94cd87c5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "turbopuffer" -version = "2.7.0" +version = "2.7.1" description = "The official Python library for the turbopuffer API" dynamic = ["readme"] license = "MIT" diff --git a/src/turbopuffer/_base_client.py b/src/turbopuffer/_base_client.py index ae0689c5..65e13a2a 100644 --- a/src/turbopuffer/_base_client.py +++ b/src/turbopuffer/_base_client.py @@ -830,7 +830,7 @@ def __init__(self, **kwargs: Any) -> None: kwargs.setdefault("timeout", DEFAULT_TIMEOUT) kwargs.setdefault("limits", DEFAULT_CONNECTION_LIMITS) kwargs.setdefault("follow_redirects", True) - kwargs.setdefault("transport", HttpxTransport()) + kwargs.setdefault("transport", HttpxTransport(limits=kwargs["limits"])) super().__init__(**kwargs) diff --git a/src/turbopuffer/_version.py b/src/turbopuffer/_version.py index cf15fe02..90b79c12 100644 --- a/src/turbopuffer/_version.py +++ b/src/turbopuffer/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "turbopuffer" -__version__ = "2.7.0" # x-release-please-version +__version__ = "2.7.1" # x-release-please-version diff --git a/tests/test_client.py b/tests/test_client.py index 2412b01c..73e3c109 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -32,6 +32,7 @@ DEFAULT_TIMEOUT, HTTPX_DEFAULT_TIMEOUT, RETRY_AFTER_LIMIT_SECS, + DEFAULT_CONNECTION_LIMITS, BaseClient, OtherPlatform, DefaultHttpxClient, @@ -1031,6 +1032,20 @@ def test_default_client_creation(self) -> None: limits=httpx.Limits(max_connections=100, max_keepalive_connections=20), ) + def test_default_client_honors_connection_limits(self) -> None: + limits = DEFAULT_CONNECTION_LIMITS + pool = DefaultHttpxClient()._transport._pool # type: ignore[attr-defined] + assert (pool._max_connections, pool._max_keepalive_connections, pool._keepalive_expiry) == ( # pyright: ignore[reportUnknownMemberType] + limits.max_connections, + limits.max_keepalive_connections, + limits.keepalive_expiry, + ) + + def test_default_client_honors_custom_connection_limits(self) -> None: + limits = httpx.Limits(max_connections=7, max_keepalive_connections=3, keepalive_expiry=1.0) + pool = DefaultHttpxClient(limits=limits)._transport._pool # type: ignore[attr-defined] + assert (pool._max_connections, pool._max_keepalive_connections, pool._keepalive_expiry) == (7, 3, 1.0) # pyright: ignore[reportUnknownMemberType] + @pytest.mark.respx(base_url=base_url) def test_follow_redirects(self, respx_mock: MockRouter, client: Turbopuffer) -> None: # Test that the default follow_redirects=True allows following redirects