1
0
Fork 0
openapi-pydantic/openapi_pydantic/v3/parser.py
Daniel Baumann 97e6d74bac
Adding upstream version 0.5.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-05-04 22:22:32 +02:00

33 lines
845 B
Python

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__