Skip to content

fix: interactive api docs broken #174

@vonmoltke

Description

@vonmoltke

All five of the interactive documentation endpoints are currently broken. They all throw basically the same exception (attached one from the Swagger endpoint below). I tried this with both latest container images, as well as the current repository HEAD. Same results in all cases. It isn't clear to me where in the project this error is originating, or if the problem is even in this project and not in litestar.

Traceback (most recent call last):
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/middleware/_internal/exceptions/middleware.py", line 158, in __call__
    await self.app(scope, receive, capture_response_started)
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_asgi/asgi_router.py", line 100, in __call__
    await asgi_app(scope, receive, send)
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/routes/http.py", line 81, in handle
    response = await self._get_response_for_request(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        scope=scope, request=request, route_handler=route_handler, parameter_model=parameter_model
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/routes/http.py", line 133, in _get_response_for_request
    return await self._call_handler_function(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        scope=scope, request=request, parameter_model=parameter_model, route_handler=route_handler
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/routes/http.py", line 179, in _call_handler_function
    route_handler.fn(**parsed_kwargs)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/plugin.py", line 161, in _handler
    return plugin_.render(request, self.provide_openapi_schema())
                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/plugin.py", line 99, in provide_openapi_schema
    self._openapi_schema = self.provide_openapi().to_schema()
                           ~~~~~~~~~~~~~~~~~~~~^^
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/plugin.py", line 94, in provide_openapi
    self._openapi = self._build_openapi()
                    ~~~~~~~~~~~~~~~~~~~^^
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/plugin.py", line 83, in _build_openapi
    path_item = create_path_item_for_route(context, route)
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/path_item.py", line 139, in create_path_item_for_route
    return path_item_factory.create_path_item()
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/path_item.py", line 44, in create_path_item
    operation = self.create_operation_for_handler_method(route_handler, HttpMethod(http_method))
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/path_item.py", line 73, in create_operation_for_handler_method
    responses = create_responses_for_handler(
        self.context, route_handler, raises_validation_error=raises_validation_error
    )
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/responses.py", line 340, in create_responses_for_handler
    return ResponseFactory(context, route_handler).create_responses(raises_validation_error=raises_validation_error)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/responses.py", line 91, in create_responses
    str(self.route_handler.status_code): self.create_success_response(),
                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/responses.py", line 150, in create_success_response
    result = self.schema_creator.for_field_definition(field_def)
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/schema_generation/schema.py", line 333, in for_field_definition
    result = self.for_union_field(field_definition)
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/schema_generation/schema.py", line 446, in for_union_field
    values = list(map(self.for_field_definition, inner_types))
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/schema_generation/schema.py", line 341, in for_field_definition
    result = self.for_object_type(field_definition)
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/schema_generation/schema.py", line 483, in for_object_type
    items = list(map(self.for_field_definition, inner_types))
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/schema_generation/schema.py", line 317, in for_field_definition
    result = self.for_plugin(field_definition, plugin_for_annotation)
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/schema_generation/schema.py", line 510, in for_plugin
    schema = plugin.to_openapi_schema(field_definition=field_definition, schema_creator=self)
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/_openapi/schema_generation/plugins/dataclass.py", line 22, in to_openapi_schema
    type_hints = field_definition.get_type_hints(include_extras=True, resolve_generics=True)
  File "/home/fritz/src/kreuzberg/.venv/lib/python3.13/site-packages/litestar/typing.py", line 412, in get_type_hints
    return get_type_hints(self.annotation, include_extras=include_extras)
  File "/home/fritz/.pyenv/versions/3.13.5/lib/python3.13/typing.py", line 2461, in get_type_hints
    value = _eval_type(value, base_globals, base_locals, base.__type_params__)
  File "/home/fritz/.pyenv/versions/3.13.5/lib/python3.13/typing.py", line 474, in _eval_type
    return t._evaluate(globalns, localns, type_params, recursive_guard=recursive_guard)
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/fritz/.pyenv/versions/3.13.5/lib/python3.13/typing.py", line 1081, in _evaluate
    eval(self.__forward_code__, globalns, localns),
    ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 1, in <module>
NameError: name \'DataFrame\' is not defined

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions