Skip to content

Commit adc5765

Browse files
committed
v20 - boolean additionalProperties
using a wrap validator avoids changing the grammar of Schema.additionalProperties to accept {"not":…} as valid Schema.
1 parent c4394b0 commit adc5765

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

aiopenapi3/v20/schemas.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,23 +40,23 @@ 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, "_Not"]] = Field(default=None)
43+
additionalProperties: Optional[Union["Schema", Reference, bool]] = Field(default=None)
4444

4545
discriminator: Optional[str] = Field(default=None) # 'Discriminator'
4646
readOnly: Optional[bool] = Field(default=None)
4747
xml: Optional[XML] = Field(default=None) # 'XML'
4848
externalDocs: Optional[dict] = Field(default=None) # 'ExternalDocs'
4949
example: Optional[Any] = Field(default=None)
5050

51-
@model_validator(mode="before")
51+
@model_validator(mode="wrap")
5252
@classmethod
53-
def is_boolean_schema(cls, data: Any) -> Any:
53+
def is_boolean_schema(cls, data: Any, handler: "ValidatorFunctionWrapHandler", info: "ValidationInfo") -> Any:
5454
if not isinstance(data, bool):
55-
return data
55+
return handler(data)
5656
if data:
57-
return {}
57+
return handler(cls.model_validate({}))
5858
else:
59-
return {"not": {}}
59+
return handler(_Not.model_validate({"not": {}}))
6060

6161
def __getstate__(self):
6262
return SchemaBase.__getstate__(self)

0 commit comments

Comments
 (0)