Skip to content

Work with optional schema and route parametersΒ #63

@aptypr

Description

@aptypr

Hello!
I'm trying to move my project to Pydantic 2, but still keep OpenAPI 3.0 swagger

I generate swagger with code like

raw = get_openapi(
      title=app.title,
      version=app.version,
      routes=app.routes,
  )
raw.pop("openapi", None)
raw_schema = raw


openapi_obj = raw_schema
openapi_obj = OpenAPI.model_validate(openapi_obj, strict=False)
openapi_obj = construct_open_api_with_schema_class(openapi_obj)
openapi_obj.model_dump_json(by_alias=True, exclude_none=True, indent=2)

and I get a lot of errors for optional field in schemas and routes
for example for something like

class A(BaseModel):
    start: Optional[float] = Field(default=None, title="start")
    stop: Optional[float] = Field(default=None, title="end")

I get error like

components.schemas.A.Schema.properties.stop.Schema.anyOf.1.Schema.type
Input should be 'string', 'number', 'integer', 'boolean', 'array' or 'object' [type=enum, input_value='null', input_type=str]

and similar error for handlers, for optional parameters.
I can make there errors disappear, replacing Optional[T] with Union[T, SkipJsonSchema[None]], but I have a lot of schemas and routes to change.

Maybe I do something wrong?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions