-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathparser.py
33 lines (21 loc) · 845 Bytes
/
parser.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from typing import TYPE_CHECKING, Any, Union
from pydantic import BaseModel, Field
from openapi_pydantic.compat import PYDANTIC_V2
from .v3_0 import OpenAPI as OpenAPIv3_0
from .v3_1 import OpenAPI as OpenAPIv3_1
OpenAPIv3 = Union[OpenAPIv3_1, OpenAPIv3_0]
if TYPE_CHECKING:
def parse_obj(data: Any) -> OpenAPIv3:
"""Parse a raw object into an OpenAPI model with version inference."""
...
elif PYDANTIC_V2:
from pydantic import RootModel
class _OpenAPI(RootModel):
root: OpenAPIv3 = Field(discriminator="openapi")
def parse_obj(data: Any) -> OpenAPIv3:
return _OpenAPI.model_validate(data).root
else:
class _OpenAPI(BaseModel):
__root__: OpenAPIv3 = Field(discriminator="openapi")
def parse_obj(data: Any) -> OpenAPIv3:
return _OpenAPI.parse_obj(data).__root__