diff --git a/.changeset/support_const_booleans_and_floats.md b/.changeset/support_const_booleans_and_floats.md new file mode 100644 index 000000000..af00788d1 --- /dev/null +++ b/.changeset/support_const_booleans_and_floats.md @@ -0,0 +1,7 @@ +--- +default: patch +--- + +# Support `const` booleans and floats + +Fixed in PR #1086. Thanks @flxdot! diff --git a/openapi_python_client/parser/properties/const.py b/openapi_python_client/parser/properties/const.py index aec624afd..baccb07a9 100644 --- a/openapi_python_client/parser/properties/const.py +++ b/openapi_python_client/parser/properties/const.py @@ -27,7 +27,7 @@ class ConstProperty(PropertyProtocol): def build( cls, *, - const: str | int, + const: str | int | float | bool, default: Any, name: str, python_name: PythonIdentifier, diff --git a/openapi_python_client/schema/openapi_schema_pydantic/schema.py b/openapi_python_client/schema/openapi_schema_pydantic/schema.py index 54828fe48..9bd6f5cde 100644 --- a/openapi_python_client/schema/openapi_schema_pydantic/schema.py +++ b/openapi_python_client/schema/openapi_schema_pydantic/schema.py @@ -1,6 +1,6 @@ from typing import Any, Dict, List, Optional, Union -from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, model_validator +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr, model_validator from ..data_type import DataType from .discriminator import Discriminator @@ -36,7 +36,7 @@ class Schema(BaseModel): minProperties: Optional[int] = Field(default=None, ge=0) required: Optional[List[str]] = Field(default=None, min_length=1) enum: Union[None, List[Any]] = Field(default=None, min_length=1) - const: Union[None, StrictStr, StrictInt] = None + const: Union[None, StrictStr, StrictInt, StrictFloat, StrictBool] = None type: Union[DataType, List[DataType], None] = Field(default=None) allOf: List[Union[Reference, "Schema"]] = Field(default_factory=list) oneOf: List[Union[Reference, "Schema"]] = Field(default_factory=list) diff --git a/tests/test_schema/test_schema.py b/tests/test_schema/test_schema.py index 3c8c2ecea..0aa892af1 100644 --- a/tests/test_schema/test_schema.py +++ b/tests/test_schema/test_schema.py @@ -12,6 +12,11 @@ def test_nullable_with_allof(): assert schema.allOf == [] +def test_constant_bool(): + schema = Schema.model_validate_json('{"type":"boolean", "enum":[true], "const":true, "default":true}') + assert schema.const is True + + def test_nullable_with_type_list(): schema = Schema.model_validate_json('{"type": ["string", "number"], "nullable": true}') assert schema.type == [DataType.STRING, DataType.NUMBER, DataType.NULL]