adk-docs icon indicating copy to clipboard operation
adk-docs copied to clipboard

Adk Swagger Docs not working

Open amal-sajeev opened this issue 1 week ago • 1 comments

Describe the bug

The /docs endpoint, which according to the documentation here, should bring up a Swagger documentation of google ADK's API, now just generates a Pydantic error.

Here is the full error traceback:

INFO:     127.0.0.1:50666 - "GET /openapi.json HTTP/1.1" 500 Internal Server Error
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\type_adapter.py", line 287, in _init_core_attrs
    self.core_schema = _getattr_no_parents(self._type, '__pydantic_core_schema__')
                       ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\type_adapter.py", line 56, in _getattr_no_parents
    raise AttributeError(attribute)
AttributeError: __pydantic_core_schema__

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        self.scope, self.receive, self.send
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__
    return await self.app(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\applications.py", line 1134, in __call__
    await super().__call__(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\middleware\errors.py", line 186, in __call__
    raise exc
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\middleware\errors.py", line 164, in __call__
    await self.app(scope, receive, _send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 63, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\routing.py", line 716, in __call__
    await self.middleware_stack(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\routing.py", line 736, in app
    await route.handle(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\routing.py", line 290, in handle
    await self.app(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\routing.py", line 78, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\starlette\routing.py", line 75, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\applications.py", line 1089, in openapi
    return JSONResponse(self.openapi())
                        ~~~~~~~~~~~~^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\applications.py", line 1060, in openapi
    self.openapi_schema = get_openapi(
                          ~~~~~~~~~~~^
        title=self.title,
        ^^^^^^^^^^^^^^^^^
    ...<12 lines>...
        external_docs=self.openapi_external_docs,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\openapi\utils.py", line 503, in get_openapi
    model_name_map = get_compat_model_name_map(all_fields)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\main.py", line 254, in get_compat_model_name_map
    v2_flat_models = v2.get_flat_models_from_fields(
        v2_model_fields, known_models=set()
    )
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 474, in get_flat_models_from_fields
    get_flat_models_from_field(field, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 462, in get_flat_models_from_field
    get_flat_models_from_model(field_type, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 435, in get_flat_models_from_model
    get_flat_models_from_fields(fields, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 474, in get_flat_models_from_fields
    get_flat_models_from_field(field, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 462, in get_flat_models_from_field
    get_flat_models_from_model(field_type, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 435, in get_flat_models_from_model
    get_flat_models_from_fields(fields, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 474, in get_flat_models_from_fields
    get_flat_models_from_field(field, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 466, in get_flat_models_from_field
    get_flat_models_from_annotation(field_type, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 448, in get_flat_models_from_annotation
    get_flat_models_from_model(arg, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 435, in get_flat_models_from_model
    get_flat_models_from_fields(fields, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 474, in get_flat_models_from_fields
    get_flat_models_from_field(field, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 466, in get_flat_models_from_field
    get_flat_models_from_annotation(field_type, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 450, in get_flat_models_from_annotation
    get_flat_models_from_annotation(arg, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 448, in get_flat_models_from_annotation
    get_flat_models_from_model(arg, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 435, in get_flat_models_from_model
    get_flat_models_from_fields(fields, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 474, in get_flat_models_from_fields
    get_flat_models_from_field(field, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 466, in get_flat_models_from_field
    get_flat_models_from_annotation(field_type, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 448, in get_flat_models_from_annotation
    get_flat_models_from_model(arg, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 435, in get_flat_models_from_model
    get_flat_models_from_fields(fields, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 474, in get_flat_models_from_fields
    get_flat_models_from_field(field, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 466, in get_flat_models_from_field
    get_flat_models_from_annotation(field_type, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 448, in get_flat_models_from_annotation
    get_flat_models_from_model(arg, known_models=known_models)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 434, in get_flat_models_from_model
    fields = get_model_fields(model)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 396, in get_model_fields
    ModelField(field_info=field_info, name=name)
    ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 6, in __init__
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\fastapi\_compat\v2.py", line 97, in __post_init__
    self._type_adapter: TypeAdapter[Any] = TypeAdapter(
                                           ~~~~~~~~~~~^
        Annotated[self.field_info.annotation, self.field_info]
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\type_adapter.py", line 244, in __init__
    self._init_core_attrs(
    ~~~~~~~~~~~~~~~~~~~~~^
        ns_resolver=_namespace_utils.NsResolver(
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<3 lines>...
        force=False,
        ^^^^^^^^^^^^
    )
    ^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\type_adapter.py", line 306, in _init_core_attrs
    core_schema = schema_generator.generate_schema(self._type)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 729, in generate_schema
    schema = self._generate_schema_inner(obj)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1007, in _generate_schema_inner
    return self._annotated_schema(obj)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 2177, in _annotated_schema
    schema = self._apply_annotations(source_type, annotations)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 2227, in _apply_annotations
    schema = get_inner_schema(source_type)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_schema_generation_shared.py", line 83, in __call__
    schema = self._handler(source_type)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 2358, in new_handler
    schema = get_inner_schema(source)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_schema_generation_shared.py", line 83, in __call__
    schema = self._handler(source_type)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 2206, in inner_handler
    schema = self._generate_schema_inner(obj)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1028, in _generate_schema_inner
    return self.match_type(obj)
           ~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1144, in match_type
    return self._match_generic_type(obj, origin)
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1171, in _match_generic_type
    return self._list_schema(self._get_first_arg_or_any(obj))
           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 384, in _list_schema
    return core_schema.list_schema(self.generate_schema(items_type))
                                   ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 729, in generate_schema
    schema = self._generate_schema_inner(obj)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1028, in _generate_schema_inner
    return self.match_type(obj)
           ~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1144, in match_type
    return self._match_generic_type(obj, origin)
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1167, in _match_generic_type
    return self._union_schema(obj)
           ~~~~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1327, in _union_schema
    choices.append(self.generate_schema(arg))
                   ~~~~~~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 729, in generate_schema
    schema = self._generate_schema_inner(obj)
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1028, in _generate_schema_inner
    return self.match_type(obj)
           ~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 1148, in match_type
    return self._unknown_type_schema(obj)
           ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
  File "C:\Users\User 3\Documents\pytho\brainstorm\.venv\Lib\site-packages\pydantic\_internal\_generate_schema.py", line 659, in _unknown_type_schema
    raise PydanticSchemaGenerationError(
    ...<7 lines>...
    )
pydantic.errors.PydanticSchemaGenerationError: Unable to generate pydantic-core schema for <class 'mcp.client.session.ClientSession'>. Set `arbitrary_types_allowed=True` in the model_config to ignore this error or implement `__get_pydantic_core_schema__` on your type to fully support it.

If you got this error by calling handler(<some type>) within `__get_pydantic_core_schema__` then you likely need to call `handler.generate_schema(<some type>)` since we do not call `__get_pydantic_core_schema__` on `<some type>` otherwise to avoid infinite recursion.

For further information visit https://errors.pydantic.dev/2.12/u/schema-for-unknown-type

The docs page is extremely useful as a quick reference when ADK projects need to be integrated with UI elements and similar, and I hope this issue either has a quick fix that I've overlooked, or will be fixed soon.

To Reproduce

Steps to reproduce the behavior:

  1. Create a fresh ADK project with adk create
  2. Run with adk web or adk api_server
  3. Open http://127.0.0.1:8000/docs
  4. Error is generated in console.

Expected behavior

I expected the Swagger API docs to be shown.

Screenshots

Image

Versions

  • OS: Windows 11
  • ADK version: 1.19.0
  • Python version: Python 3.13

amal-sajeev avatar Nov 24 '25 11:11 amal-sajeev