Open dthung1602 opened 2 months ago
Describe the bug
The const property validation introduced in #1024 is not correct when there are >= 2 non-none values.
const
In particular, the validation accepts only the first value
OpenAPI Spec File
--> Please focus on the Foo schema at the end
Foo
{ "openapi": "3.1.0", "info": { "title": "Test Service", "version": "0.1.0" }, "paths": { "/test": { "post": { "summary": "Test", "operationId": "test", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TestModel" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } } } } } }, "components": { "schemas": { "TestModel": { "properties": { "foo": { "$ref": "#/components/schemas/Foo" } }, "type": "object", "required": [ "foo" ], "title": "TestModel" }, "Foo": { "oneOf": [ { "const": 1 }, { "const": 2 } ], "title": "FooType" } } } }
Desktop (please complete the following information):
Additional context
The above schema generates the file test-service-client/test_service_client/models/test_model.py as follows:
test-service-client/test_service_client/models/test_model.py
class TestModel: def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: d = src_dict.copy() def _parse_foo(data: object) -> Union[Literal[1], Literal[2]]: componentsschemas_foo_type_0 = cast(Literal[1], data) if componentsschemas_foo_type_0 != 1: raise ValueError( f"/components/schemas/Foo_type_0 must match const 1, got '{componentsschemas_foo_type_0}'" ) return componentsschemas_foo_type_0 # -----> ERROR HERE: the code below this line is never reached<------ componentsschemas_foo_type_1 = cast(Literal[2], data) if componentsschemas_foo_type_1 != 2: raise ValueError( f"/components/schemas/Foo_type_1 must match const 2, got '{componentsschemas_foo_type_1}'" ) return componentsschemas_foo_type_1 foo = _parse_foo(d.pop("foo")) test_model = cls( foo=foo, ) test_model.additional_properties = d return test_model
I can open a PR to fix this bug if you like
Describe the bug
The
const
property validation introduced in #1024 is not correct when there are >= 2 non-none values.In particular, the validation accepts only the first value
OpenAPI Spec File
--> Please focus on the
Foo
schema at the endDesktop (please complete the following information):
Additional context
The above schema generates the file
test-service-client/test_service_client/models/test_model.py
as follows: