Skip to content

Commit c369968

Browse files
authored
Merge pull request #5 from channel3-ai/release-please--branches--main--changes--next
release: 2.2.1
2 parents dd6ab66 + f78ebbf commit c369968

21 files changed

+150
-98
lines changed

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "2.2.0"
2+
".": "2.2.1"
33
}

.stats.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 6
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/channel3%2Fpublic-sdk-c870f6f12fcf671675af9dfddb9b6e4fd968bc75717a50d53d5626180ecbdcaf.yml
33
openapi_spec_hash: 3ac13f44aeb96508ab9073b88a9f633d
4-
config_hash: 1a71e5acc94d5679abff73aafac92746
4+
config_hash: 29a945af4ecd9ca76b811b15cc7b5daa

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
# Changelog
22

3+
## 2.2.1 (2025-10-21)
4+
5+
Full Changelog: [v2.2.0...v2.2.1](https://github.com/channel3-ai/sdk-python/compare/v2.2.0...v2.2.1)
6+
7+
### Chores
8+
9+
* bump `httpx-aiohttp` version to 0.1.9 ([9fce17d](https://github.com/channel3-ai/sdk-python/commit/9fce17d430d871ec313c00be59baa4cc674405a6))
10+
* do not install brew dependencies in ./scripts/bootstrap by default ([4195b56](https://github.com/channel3-ai/sdk-python/commit/4195b56c72109be10c6444cc66b262e405562f02))
11+
* **internal:** detect missing future annotations with ruff ([ee0fee8](https://github.com/channel3-ai/sdk-python/commit/ee0fee8c45a79bbc7436bbdc9216fed4c4f8549f))
12+
* **internal:** update pydantic dependency ([748c67f](https://github.com/channel3-ai/sdk-python/commit/748c67f3e609d241af1ee9342ef3755589d3534c))
13+
* **types:** change optional parameter type from NotGiven to Omit ([61aab9b](https://github.com/channel3-ai/sdk-python/commit/61aab9bec310efab0ce7a4b13440f1207bcbef8a))
14+
315
## 2.2.0 (2025-09-16)
416

517
Full Changelog: [v2.1.0...v2.2.0](https://github.com/channel3-ai/sdk-python/compare/v2.1.0...v2.2.0)

pyproject.toml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "channel3_sdk"
3-
version = "2.2.0"
3+
version = "2.2.1"
44
description = "The official Python library for the channel3 API"
55
dynamic = ["readme"]
66
license = "Apache-2.0"
@@ -39,7 +39,7 @@ Homepage = "https://github.com/channel3-ai/sdk-python"
3939
Repository = "https://github.com/channel3-ai/sdk-python"
4040

4141
[project.optional-dependencies]
42-
aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.8"]
42+
aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.9"]
4343

4444
[tool.rye]
4545
managed = true
@@ -224,6 +224,8 @@ select = [
224224
"B",
225225
# remove unused imports
226226
"F401",
227+
# check for missing future annotations
228+
"FA102",
227229
# bare except statements
228230
"E722",
229231
# unused arguments
@@ -246,6 +248,8 @@ unfixable = [
246248
"T203",
247249
]
248250

251+
extend-safe-fixes = ["FA102"]
252+
249253
[tool.ruff.lint.flake8-tidy-imports.banned-api]
250254
"functools.lru_cache".msg = "This function does not retain type information for the wrapped function's arguments; The `lru_cache` function from `_utils` should be used instead"
251255

requirements-dev.lock

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ httpx==0.28.1
5656
# via channel3-sdk
5757
# via httpx-aiohttp
5858
# via respx
59-
httpx-aiohttp==0.1.8
59+
httpx-aiohttp==0.1.9
6060
# via channel3-sdk
6161
idna==3.4
6262
# via anyio
@@ -88,9 +88,9 @@ pluggy==1.5.0
8888
propcache==0.3.1
8989
# via aiohttp
9090
# via yarl
91-
pydantic==2.10.3
91+
pydantic==2.11.9
9292
# via channel3-sdk
93-
pydantic-core==2.27.1
93+
pydantic-core==2.33.2
9494
# via pydantic
9595
pygments==2.18.0
9696
# via rich
@@ -126,6 +126,9 @@ typing-extensions==4.12.2
126126
# via pydantic
127127
# via pydantic-core
128128
# via pyright
129+
# via typing-inspection
130+
typing-inspection==0.4.1
131+
# via pydantic
129132
virtualenv==20.24.5
130133
# via nox
131134
yarl==1.20.0

requirements.lock

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ httpcore==1.0.9
4343
httpx==0.28.1
4444
# via channel3-sdk
4545
# via httpx-aiohttp
46-
httpx-aiohttp==0.1.8
46+
httpx-aiohttp==0.1.9
4747
# via channel3-sdk
4848
idna==3.4
4949
# via anyio
@@ -55,9 +55,9 @@ multidict==6.4.4
5555
propcache==0.3.1
5656
# via aiohttp
5757
# via yarl
58-
pydantic==2.10.3
58+
pydantic==2.11.9
5959
# via channel3-sdk
60-
pydantic-core==2.27.1
60+
pydantic-core==2.33.2
6161
# via pydantic
6262
sniffio==1.3.0
6363
# via anyio
@@ -68,5 +68,8 @@ typing-extensions==4.12.2
6868
# via multidict
6969
# via pydantic
7070
# via pydantic-core
71+
# via typing-inspection
72+
typing-inspection==0.4.1
73+
# via pydantic
7174
yarl==1.20.0
7275
# via aiohttp

scripts/bootstrap

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,18 @@ set -e
44

55
cd "$(dirname "$0")/.."
66

7-
if ! command -v rye >/dev/null 2>&1 && [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ]; then
7+
if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "$SKIP_BREW" != "1" ] && [ -t 0 ]; then
88
brew bundle check >/dev/null 2>&1 || {
9-
echo "==> Installing Homebrew dependencies…"
10-
brew bundle
9+
echo -n "==> Install Homebrew dependencies? (y/N): "
10+
read -r response
11+
case "$response" in
12+
[yY][eE][sS]|[yY])
13+
brew bundle
14+
;;
15+
*)
16+
;;
17+
esac
18+
echo
1119
}
1220
fi
1321

src/channel3_sdk/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import typing as _t
44

55
from . import types
6-
from ._types import NOT_GIVEN, Omit, NoneType, NotGiven, Transport, ProxiesTypes
6+
from ._types import NOT_GIVEN, Omit, NoneType, NotGiven, Transport, ProxiesTypes, omit, not_given
77
from ._utils import file_from_path
88
from ._client import (
99
Client,
@@ -48,7 +48,9 @@
4848
"ProxiesTypes",
4949
"NotGiven",
5050
"NOT_GIVEN",
51+
"not_given",
5152
"Omit",
53+
"omit",
5254
"Channel3Error",
5355
"APIError",
5456
"APIStatusError",

src/channel3_sdk/_base_client.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
from ._qs import Querystring
4343
from ._files import to_httpx_files, async_to_httpx_files
4444
from ._types import (
45-
NOT_GIVEN,
4645
Body,
4746
Omit,
4847
Query,
@@ -57,6 +56,7 @@
5756
RequestOptions,
5857
HttpxRequestFiles,
5958
ModelBuilderProtocol,
59+
not_given,
6060
)
6161
from ._utils import is_dict, is_list, asyncify, is_given, lru_cache, is_mapping
6262
from ._compat import PYDANTIC_V1, model_copy, model_dump
@@ -145,9 +145,9 @@ def __init__(
145145
def __init__(
146146
self,
147147
*,
148-
url: URL | NotGiven = NOT_GIVEN,
149-
json: Body | NotGiven = NOT_GIVEN,
150-
params: Query | NotGiven = NOT_GIVEN,
148+
url: URL | NotGiven = not_given,
149+
json: Body | NotGiven = not_given,
150+
params: Query | NotGiven = not_given,
151151
) -> None:
152152
self.url = url
153153
self.json = json
@@ -595,7 +595,7 @@ def _maybe_override_cast_to(self, cast_to: type[ResponseT], options: FinalReques
595595
# we internally support defining a temporary header to override the
596596
# default `cast_to` type for use with `.with_raw_response` and `.with_streaming_response`
597597
# see _response.py for implementation details
598-
override_cast_to = headers.pop(OVERRIDE_CAST_TO_HEADER, NOT_GIVEN)
598+
override_cast_to = headers.pop(OVERRIDE_CAST_TO_HEADER, not_given)
599599
if is_given(override_cast_to):
600600
options.headers = headers
601601
return cast(Type[ResponseT], override_cast_to)
@@ -825,7 +825,7 @@ def __init__(
825825
version: str,
826826
base_url: str | URL,
827827
max_retries: int = DEFAULT_MAX_RETRIES,
828-
timeout: float | Timeout | None | NotGiven = NOT_GIVEN,
828+
timeout: float | Timeout | None | NotGiven = not_given,
829829
http_client: httpx.Client | None = None,
830830
custom_headers: Mapping[str, str] | None = None,
831831
custom_query: Mapping[str, object] | None = None,
@@ -1356,7 +1356,7 @@ def __init__(
13561356
base_url: str | URL,
13571357
_strict_response_validation: bool,
13581358
max_retries: int = DEFAULT_MAX_RETRIES,
1359-
timeout: float | Timeout | None | NotGiven = NOT_GIVEN,
1359+
timeout: float | Timeout | None | NotGiven = not_given,
13601360
http_client: httpx.AsyncClient | None = None,
13611361
custom_headers: Mapping[str, str] | None = None,
13621362
custom_query: Mapping[str, object] | None = None,
@@ -1818,8 +1818,8 @@ def make_request_options(
18181818
extra_query: Query | None = None,
18191819
extra_body: Body | None = None,
18201820
idempotency_key: str | None = None,
1821-
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
1822-
post_parser: PostParser | NotGiven = NOT_GIVEN,
1821+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
1822+
post_parser: PostParser | NotGiven = not_given,
18231823
) -> RequestOptions:
18241824
"""Create a dict of type RequestOptions without keys of NotGiven values."""
18251825
options: RequestOptions = {}

src/channel3_sdk/_client.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@
33
from __future__ import annotations
44

55
import os
6-
from typing import Any, Union, Mapping
6+
from typing import Any, Mapping
77
from typing_extensions import Self, override
88

99
import httpx
1010

1111
from . import _exceptions
1212
from ._qs import Querystring
1313
from ._types import (
14-
NOT_GIVEN,
1514
Body,
1615
Omit,
1716
Query,
@@ -21,6 +20,7 @@
2120
Transport,
2221
ProxiesTypes,
2322
RequestOptions,
23+
not_given,
2424
)
2525
from ._utils import is_given, get_async_library
2626
from ._version import __version__
@@ -68,7 +68,7 @@ def __init__(
6868
*,
6969
api_key: str | None = None,
7070
base_url: str | httpx.URL | None = None,
71-
timeout: Union[float, Timeout, None, NotGiven] = NOT_GIVEN,
71+
timeout: float | Timeout | None | NotGiven = not_given,
7272
max_retries: int = DEFAULT_MAX_RETRIES,
7373
default_headers: Mapping[str, str] | None = None,
7474
default_query: Mapping[str, object] | None = None,
@@ -146,9 +146,9 @@ def copy(
146146
*,
147147
api_key: str | None = None,
148148
base_url: str | httpx.URL | None = None,
149-
timeout: float | Timeout | None | NotGiven = NOT_GIVEN,
149+
timeout: float | Timeout | None | NotGiven = not_given,
150150
http_client: httpx.Client | None = None,
151-
max_retries: int | NotGiven = NOT_GIVEN,
151+
max_retries: int | NotGiven = not_given,
152152
default_headers: Mapping[str, str] | None = None,
153153
set_default_headers: Mapping[str, str] | None = None,
154154
default_query: Mapping[str, object] | None = None,
@@ -200,7 +200,7 @@ def retrieve(
200200
extra_headers: Headers | None = None,
201201
extra_query: Query | None = None,
202202
extra_body: Body | None = None,
203-
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
203+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
204204
) -> object:
205205
"""Root"""
206206
return self.get(
@@ -261,7 +261,7 @@ def __init__(
261261
*,
262262
api_key: str | None = None,
263263
base_url: str | httpx.URL | None = None,
264-
timeout: Union[float, Timeout, None, NotGiven] = NOT_GIVEN,
264+
timeout: float | Timeout | None | NotGiven = not_given,
265265
max_retries: int = DEFAULT_MAX_RETRIES,
266266
default_headers: Mapping[str, str] | None = None,
267267
default_query: Mapping[str, object] | None = None,
@@ -339,9 +339,9 @@ def copy(
339339
*,
340340
api_key: str | None = None,
341341
base_url: str | httpx.URL | None = None,
342-
timeout: float | Timeout | None | NotGiven = NOT_GIVEN,
342+
timeout: float | Timeout | None | NotGiven = not_given,
343343
http_client: httpx.AsyncClient | None = None,
344-
max_retries: int | NotGiven = NOT_GIVEN,
344+
max_retries: int | NotGiven = not_given,
345345
default_headers: Mapping[str, str] | None = None,
346346
set_default_headers: Mapping[str, str] | None = None,
347347
default_query: Mapping[str, object] | None = None,
@@ -393,7 +393,7 @@ async def retrieve(
393393
extra_headers: Headers | None = None,
394394
extra_query: Query | None = None,
395395
extra_body: Body | None = None,
396-
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
396+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
397397
) -> object:
398398
"""Root"""
399399
return await self.get(

0 commit comments

Comments
 (0)