Skip to content

Commit cd27ab2

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 cd27ab2

File tree

9 files changed

+9
-14
lines changed

9 files changed

+9
-14
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/v30/servers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class ServerVariable(ObjectExtended):
1717
description: str | None = Field(default=None)
1818

1919
@model_validator(mode="after")
20-
def validate_ServerVariable(cls, s: "ServerVariable"):
20+
def validate_ServerVariable(self, s: "ServerVariable"):
2121
assert isinstance(s.enum, (list, None.__class__))
2222
# default value must be in enum
2323
assert s.default is None or s.default in (s.enum or [s.default])

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/paths.py

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

4040
@model_validator(mode="after")
41-
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]
4242
assert not (
4343
l.operationId != None and l.operationRef != None
4444
), "operationId and operationRef are mutually exclusive, only one of them is allowed"

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

src/aiopenapi3/v31/schemas.py

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

175175
@model_validator(mode="after")
176-
@classmethod
177-
def validate_Schema_number_type(cls, s: "Schema"):
176+
def validate_Schema_number_type(self, s: "Schema"):
178177
if s.type == "integer":
179178
for i in ["minimum", "maximum"]:
180179
if (v := getattr(s, i, None)) is not None and not isinstance(v, int):

src/aiopenapi3/v31/servers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class ServerVariable(ObjectExtended):
1717
description: str | None = Field(default=None)
1818

1919
@model_validator(mode="after")
20-
def validate_ServerVariable(cls, s: "ServerVariable"):
20+
def validate_ServerVariable(self, s: "ServerVariable"):
2121
assert isinstance(s.enum, (list, None.__class__))
2222
# default value must be in enum
2323
assert s.default is None or s.default in (s.enum or [s.default])

0 commit comments

Comments
 (0)