adk-docs
adk-docs copied to clipboard
Adk Swagger Docs not working
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:
- Create a fresh ADK project with
adk create - Run with
adk weboradk api_server - Open http://127.0.0.1:8000/docs
- Error is generated in console.
Expected behavior
I expected the Swagger API docs to be shown.
Screenshots
Versions
- OS: Windows 11
- ADK version: 1.19.0
- Python version: Python 3.13