Skip to content

Commit a2f0675

Browse files
committed
v20 - boolean schemas, false
1 parent 176d869 commit a2f0675

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

aiopenapi3/v20/schemas.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class Schema(ObjectExtended, SchemaBase):
4040
items: Optional[Union[list[Union["Schema", Reference]], Union["Schema", Reference]]] = Field(default=None)
4141
allOf: list[Union["Schema", Reference]] = Field(default_factory=list)
4242
properties: dict[str, Union["Schema", Reference]] = Field(default_factory=dict)
43-
additionalProperties: Optional[Union["Schema", Reference]] = Field(default=None)
43+
additionalProperties: Optional[Union["Schema", Reference, "_Not"]] = Field(default=None)
4444

4545
discriminator: Optional[str] = Field(default=None) # 'Discriminator'
4646
readOnly: Optional[bool] = Field(default=None)
@@ -60,3 +60,7 @@ def is_boolean_schema(cls, data: Any) -> Any:
6060

6161
def __getstate__(self):
6262
return SchemaBase.__getstate__(self)
63+
64+
65+
class _Not(Schema):
66+
not_: Optional["Schema"] = Field(alias="not")

tests/fixtures/schema-boolean-v20.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,7 @@ definitions:
1515
A:
1616
type: object
1717
additionalProperties: true
18+
19+
B:
20+
type: object
21+
additionalProperties: false

tests/schema_test.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -757,4 +757,12 @@ def test_schema_boolean(with_schema_boolean):
757757

758758

759759
def test_schema_boolean_v20(with_schema_boolean_v20):
760-
OpenAPI("/", with_schema_boolean_v20)
760+
api = OpenAPI("/", with_schema_boolean_v20)
761+
762+
A = api._root.definitions["A"].get_type()
763+
B = api._root.definitions["B"].get_type()
764+
765+
A.model_validate({"a": 1})
766+
767+
with pytest.raises(ValidationError):
768+
B.model_validate({"b": 1})

0 commit comments

Comments
 (0)