Skip to content

Commit 5c3ad4f

Browse files
committed
fix - pydantic model_validator("after")/classmethod deprecation
pydantic.warnings.PydanticDeprecatedSince212: Using `@model_validator` with mode='after' on a classmethod is deprecated. Instead, use an instance method. See the documentation at https://docs.pydantic.dev/2.12/concepts/validators/#model-after-validator. Deprecated in Pydantic V2.12 to be removed in V3.0.
1 parent b5b9280 commit 5c3ad4f

File tree

5 files changed

+5
-9
lines changed

5 files changed

+5
-9
lines changed

src/aiopenapi3/v30/parameter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ class Parameter(ParameterBase, _ParameterCodec):
316316
in_: _In = Field(alias="in") # TODO must be one of ["query","header","path","cookie"]
317317

318318
@model_validator(mode="after")
319-
def validate_Parameter(cls, p: "ParameterBase"):
319+
def validate_Parameter(self, p: "ParameterBase"):
320320
assert p.in_ != "path" or p.required is True, "Parameter '%s' must be required since it is in the path" % p.name
321321
return p
322322

src/aiopenapi3/v30/paths.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ class Link(ObjectExtended):
3838
server: Server | None = Field(default=None)
3939

4040
@model_validator(mode="after")
41-
@classmethod
42-
def validate_Link_operation(cls, l: '__types["Link"]'): # type: ignore[name-defined]
41+
def validate_Link_operation(self, l: '__types["Link"]'): # type: ignore[name-defined]
4342
assert not (
4443
l.operationId != None and l.operationRef != None
4544
), "operationId and operationRef are mutually exclusive, only one of them is allowed"

src/aiopenapi3/v30/schemas.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ def is_boolean_schema(cls, data: Any) -> Any:
7474
return {"not": {}}
7575

7676
@model_validator(mode="after")
77-
@classmethod
78-
def validate_Schema_number_type(cls, s: "Schema"):
77+
def validate_Schema_number_type(self, s: "Schema"):
7978
if s.type == "integer":
8079
for i in ["minimum", "maximum"]:
8180
if (v := getattr(s, i, None)) is not None and not isinstance(v, int):

src/aiopenapi3/v31/info.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ class License(ObjectExtended):
2727
url: str | None = Field(default=None)
2828

2929
@model_validator(mode="after")
30-
@classmethod
31-
def validate_License(cls, l: "License"):
30+
def validate_License(self, l: "License"):
3231
"""
3332
A URL to the license used for the API. This MUST be in the form of a URL. The url field is mutually exclusive of the identifier field.
3433
"""

src/aiopenapi3/v31/root.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,7 @@ class Root(ObjectExtended, RootBase):
3535
externalDocs: dict[Any, Any] = Field(default_factory=dict)
3636

3737
@model_validator(mode="after")
38-
@classmethod
39-
def validate_Root(cls, r: "Root") -> "Self":
38+
def validate_Root(self, r: "Root") -> "Self":
4039
assert r.paths or r.components or r.webhooks
4140
return r
4241

0 commit comments

Comments
 (0)