diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 734ad79c..690002df 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.13.1" + ".": "1.13.2" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index d70f0f4c..fb18d036 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,2 +1,2 @@ configured_endpoints: 41 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-cf610d4dbb7e3d84161b5783a0861b2e551422eb5cf727dde86a839325d7ef76.yml +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-77520f5037161db86208e3a9d3f36f39e971a8ee10b1d9972a22c084fcf21845.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index acbdc2cb..336b9074 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 1.13.2 (2025-01-10) + +Full Changelog: [v1.13.1...v1.13.2](https://github.com/Finch-API/finch-api-python/compare/v1.13.1...v1.13.2) + +### Bug Fixes + +* correctly handle deserialising `cls` fields ([#569](https://github.com/Finch-API/finch-api-python/issues/569)) ([95dac49](https://github.com/Finch-API/finch-api-python/commit/95dac4927e34c6dd129bab416d890e148bef9b60)) + ## 1.13.1 (2025-01-08) Full Changelog: [v1.13.0...v1.13.1](https://github.com/Finch-API/finch-api-python/compare/v1.13.0...v1.13.1) diff --git a/pyproject.toml b/pyproject.toml index df9d3b28..ede07c4a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "finch-api" -version = "1.13.1" +version = "1.13.2" description = "The official Python library for the Finch API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/finch/_models.py b/src/finch/_models.py index d56ea1d9..9a918aab 100644 --- a/src/finch/_models.py +++ b/src/finch/_models.py @@ -179,14 +179,14 @@ def __str__(self) -> str: @classmethod @override def construct( # pyright: ignore[reportIncompatibleMethodOverride] - cls: Type[ModelT], + __cls: Type[ModelT], _fields_set: set[str] | None = None, **values: object, ) -> ModelT: - m = cls.__new__(cls) + m = __cls.__new__(__cls) fields_values: dict[str, object] = {} - config = get_model_config(cls) + config = get_model_config(__cls) populate_by_name = ( config.allow_population_by_field_name if isinstance(config, _ConfigProtocol) @@ -196,7 +196,7 @@ def construct( # pyright: ignore[reportIncompatibleMethodOverride] if _fields_set is None: _fields_set = set() - model_fields = get_model_fields(cls) + model_fields = get_model_fields(__cls) for name, field in model_fields.items(): key = field.alias if key is None or (key not in values and populate_by_name): diff --git a/src/finch/_version.py b/src/finch/_version.py index 7eba760c..ab1e4b35 100644 --- a/src/finch/_version.py +++ b/src/finch/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "finch" -__version__ = "1.13.1" # x-release-please-version +__version__ = "1.13.2" # x-release-please-version diff --git a/tests/test_models.py b/tests/test_models.py index 3e66ab0e..2def6ec5 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -844,3 +844,13 @@ class Model(BaseModel): assert m.alias == "foo" assert isinstance(m.union, str) assert m.union == "bar" + + +@pytest.mark.skipif(not PYDANTIC_V2, reason="TypeAliasType is not supported in Pydantic v1") +def test_field_named_cls() -> None: + class Model(BaseModel): + cls: str + + m = construct_type(value={"cls": "foo"}, type_=Model) + assert isinstance(m, Model) + assert isinstance(m.cls, str)