(
routes: Sequence[BaseRoute | routing.RouteContext],
)
| 487 | |
| 488 | |
| 489 | def get_fields_from_routes( |
| 490 | routes: Sequence[BaseRoute | routing.RouteContext], |
| 491 | ) -> list[ModelField]: |
| 492 | body_fields_from_routes: list[ModelField] = [] |
| 493 | responses_from_routes: list[ModelField] = [] |
| 494 | request_fields_from_routes: list[ModelField] = [] |
| 495 | callback_flat_models: list[ModelField] = [] |
| 496 | for route_context in routing.iter_route_contexts(routes): |
| 497 | api_route = _get_api_route_for_openapi(route_context) |
| 498 | if api_route is None: |
| 499 | continue |
| 500 | if api_route.include_in_schema: |
| 501 | if api_route.body_field: |
| 502 | assert isinstance(api_route.body_field, ModelField), ( |
| 503 | "A request body must be a Pydantic Field" |
| 504 | ) |
| 505 | body_fields_from_routes.append(api_route.body_field) |
| 506 | if api_route.response_field: |
| 507 | responses_from_routes.append(api_route.response_field) |
| 508 | if api_route.response_fields: |
| 509 | responses_from_routes.extend(api_route.response_fields.values()) |
| 510 | if api_route.stream_item_field: |
| 511 | responses_from_routes.append(api_route.stream_item_field) |
| 512 | if api_route.callbacks: |
| 513 | callback_flat_models.extend(get_fields_from_routes(api_route.callbacks)) |
| 514 | params = get_flat_params(api_route.dependant) |
| 515 | request_fields_from_routes.extend(params) |
| 516 | |
| 517 | flat_models = callback_flat_models + list( |
| 518 | body_fields_from_routes + responses_from_routes + request_fields_from_routes |
| 519 | ) |
| 520 | return flat_models |
| 521 | |
| 522 | |
| 523 | def get_openapi( |
no test coverage detected
searching dependent graphs…