2025-04-08 17:22:09 +00:00
[ project ]
# Project metadata. Available keys are documented at:
# https://packaging.python.org/en/latest/specifications/declaring-project-metadata
name = "google-adk"
description = "Agent Development Kit"
readme = "README.md"
requires-python = ">=3.9"
license = { file = "LICENSE" }
authors = [{ name = "Google LLC" , email = "googleapis-packages@google.com" }]
classifiers = [ # List of https://pypi.org/classifiers/
"Typing :: Typed" ,
"Intended Audience :: Developers" ,
"Intended Audience :: Science/Research" ,
"Programming Language :: Python" ,
"Programming Language :: Python :: 3" ,
"Programming Language :: Python :: 3.9" ,
"Programming Language :: Python :: 3.10" ,
2025-05-10 22:52:43 -07:00
"Programming Language :: Python :: 3.11" ,
"Programming Language :: Python :: 3.12" ,
"Programming Language :: Python :: 3.13" ,
2025-04-08 17:22:09 +00:00
"Operating System :: OS Independent" ,
"Topic :: Software Development :: Libraries :: Python Modules" ,
"License :: OSI Approved :: Apache Software License" ,
]
dependencies = [
# go/keep-sorted start
2025-10-26 16:43:52 -07:00
"PyYAML>=6.0.2, <7.0.0" , # For APIHubToolset.
"anyio>=4.9.0, <5.0.0;python_version>='3.10'" , # For MCP Session Manager
"authlib>=1.5.1, <2.0.0" , # For RestAPI Tool
"click>=8.1.8, <9.0.0" , # For CLI tools
"fastapi>=0.115.0, <1.119.0" , # FastAPI framework
"google-api-python-client>=2.157.0, <3.0.0" , # Google API client discovery
2025-11-04 16:23:36 -08:00
"google-cloud-aiplatform[agent_engines] @ git+https://github.com/googleapis/python-aiplatform.git@bf1851e59cb34e63b509a2a610e72691e1c4ca28" , # For VertexAI integrations, e.g. example store.
2025-10-26 16:43:52 -07:00
"google-cloud-bigtable>=2.32.0" , # For Bigtable database
"google-cloud-discoveryengine>=0.13.12, <0.14.0" , # For Discovery Engine Search Tool
"google-cloud-secret-manager>=2.22.0, <3.0.0" , # Fetching secrets in RestAPI Tool
"google-cloud-spanner>=3.56.0, <4.0.0" , # For Spanner database
"google-cloud-speech>=2.30.0, <3.0.0" , # For Audio Transcription
2025-10-30 15:21:12 -07:00
"google-cloud-storage>=3.0.0, <4.0.0" , # For GCS Artifact service
2025-10-27 13:43:02 -07:00
"google-genai>=1.45.0, <2.0.0" , # Google GenAI SDK
2025-10-26 16:43:52 -07:00
"graphviz>=0.20.2, <1.0.0" , # Graphviz for graph rendering
"mcp>=1.8.0, <2.0.0;python_version>='3.10'" , # For MCP Toolset
"opentelemetry-api>=1.37.0, <=1.37.0" , # OpenTelemetry - limit upper version for sdk and api to not risk breaking changes from unstable _logs package.
2025-09-15 14:31:50 -07:00
"opentelemetry-exporter-gcp-logging>=1.9.0a0, <2.0.0" ,
"opentelemetry-exporter-gcp-monitoring>=1.9.0a0, <2.0.0" ,
2025-08-13 12:02:25 -07:00
"opentelemetry-exporter-gcp-trace>=1.9.0, <2.0.0" ,
2025-09-19 09:59:27 -07:00
"opentelemetry-exporter-otlp-proto-http>=1.36.0" ,
2025-09-15 14:31:50 -07:00
"opentelemetry-resourcedetector-gcp>=1.9.0a0, <2.0.0" ,
2025-09-25 09:24:43 -07:00
"opentelemetry-sdk>=1.37.0, <=1.37.0" ,
2025-10-26 16:43:52 -07:00
"pydantic>=2.0, <3.0.0" , # For data validation/models
"python-dateutil>=2.9.0.post0, <3.0.0" , # For Vertext AI Session Service
"python-dotenv>=1.0.0, <2.0.0" , # To manage environment variables
2025-08-13 12:02:25 -07:00
"requests>=2.32.4, <3.0.0" ,
2025-10-26 16:43:52 -07:00
"sqlalchemy-spanner>=1.14.0" , # Spanner database session service
"sqlalchemy>=2.0, <3.0.0" , # SQL database ORM
"starlette>=0.46.2, <1.0.0" , # For FastAPI CLI
2025-10-28 17:11:26 -07:00
"tenacity>=9.0.0, <10.0.0" , # For Retry management
2025-06-04 15:51:00 -07:00
"typing-extensions>=4.5, <5" ,
2025-10-26 16:43:52 -07:00
"tzlocal>=5.3, <6.0" , # Time zone utilities
"uvicorn>=0.34.0, <1.0.0" , # ASGI server for FastAPI
"watchdog>=6.0.0, <7.0.0" , # For file change detection and hot reload
"websockets>=15.0.1, <16.0.0" , # For BaseLlmFlow
2025-04-08 17:22:09 +00:00
# go/keep-sorted end
]
dynamic = [ "version" ]
[ project . urls ]
homepage = "https://google.github.io/adk-docs/"
repository = "https://github.com/google/adk-python"
changelog = "https://github.com/google/adk-python/blob/main/CHANGELOG.md"
documentation = "https://google.github.io/adk-docs/"
[ project . scripts ]
adk = "google.adk.cli:main"
[ project . optional-dependencies ]
dev = [
# go/keep-sorted start
"flit>=3.10.0" ,
"isort>=6.0.0" ,
2025-06-24 14:57:11 -07:00
"mypy>=1.15.0" ,
2025-04-08 17:22:09 +00:00
"pyink>=24.10.0" ,
"pylint>=2.6.0" ,
# go/keep-sorted end
]
2025-06-12 20:29:36 -07:00
a2a = [
# go/keep-sorted start
2025-09-08 21:02:49 -07:00
"a2a-sdk>=0.3.4,<0.4.0;python_version>='3.10'" ,
2025-06-12 20:29:36 -07:00
# go/keep-sorted end
2025-09-04 15:10:26 -07:00
]
community = [
# go/keep-sorted start
"google-adk-community" ,
# go/keep-sorted end
2025-06-12 20:29:36 -07:00
]
2025-04-08 17:22:09 +00:00
eval = [
# go/keep-sorted start
2025-07-02 10:59:35 -07:00
"google-cloud-aiplatform[evaluation]>=1.100.0" ,
2025-04-08 17:22:09 +00:00
"pandas>=2.2.3" ,
2025-06-23 15:30:16 -07:00
"rouge-score>=0.1.2" ,
2025-09-08 13:18:07 -07:00
"tabulate>=0.9.0" ,
2025-04-08 17:22:09 +00:00
# go/keep-sorted end
]
test = [
# go/keep-sorted start
2025-08-20 16:24:33 -07:00
"a2a-sdk>=0.3.0,<0.4.0;python_version>='3.10'" ,
2025-10-26 16:43:52 -07:00
"anthropic>=0.43.0" , # For anthropic model tests
2025-10-28 13:48:23 -07:00
"crewai[tools];python_version>='3.10'" , # For CrewaiTool tests
2025-10-26 16:43:52 -07:00
"kubernetes>=29.0.0" , # For GkeCodeExecutor
2025-04-08 17:22:09 +00:00
"langchain-community>=0.3.17" ,
2025-10-26 16:43:52 -07:00
"langgraph>=0.2.60, <0.4.8" , # For LangGraphAgent
"litellm>=1.75.5, <2.0.0" , # For LiteLLM tests
"llama-index-readers-file>=0.4.0" , # For retrieval tests
"openai>=1.100.2" , # For LiteLLM
2025-04-08 17:22:09 +00:00
"pytest-asyncio>=0.25.0" ,
"pytest-mock>=3.14.0" ,
"pytest-xdist>=3.6.1" ,
2025-10-28 13:48:23 -07:00
"pytest>=8.3.4" ,
2025-07-16 17:55:23 -07:00
"python-multipart>=0.0.9" ,
2025-08-20 16:24:33 -07:00
"rouge-score>=0.1.2" ,
"tabulate>=0.9.0" ,
2025-04-08 17:22:09 +00:00
# go/keep-sorted end
]
docs = [
"autodoc_pydantic" ,
"furo" ,
"myst-parser" ,
"sphinx" ,
"sphinx-autodoc-typehints" ,
"sphinx-rtd-theme" ,
]
# Optional extensions
extensions = [
2025-10-26 16:43:52 -07:00
"anthropic>=0.43.0" , # For anthropic model support
"beautifulsoup4>=3.2.2" , # For load_web_page tool.
"crewai[tools];python_version>='3.10'" , # For CrewaiTool
"docker>=7.0.0" , # For ContainerCodeExecutor
"kubernetes>=29.0.0" , # For GkeCodeExecutor
"langgraph>=0.2.60, <0.4.8" , # For LangGraphAgent
"litellm>=1.75.5" , # For LiteLlm class. Currently has OpenAI limitations. TODO: once LiteLlm fix it
"llama-index-readers-file>=0.4.0" , # For retrieval using LlamaIndex.
"llama-index-embeddings-google-genai>=0.3.0" , # For files retrieval using LlamaIndex.
"lxml>=5.3.0" , # For load_web_page tool.
"toolbox-core>=0.1.0" , # For tools.toolbox_toolset.ToolboxToolset
2025-04-08 17:22:09 +00:00
]
2025-10-26 16:43:52 -07:00
otel-gcp = [ "opentelemetry-instrumentation-google-genai>=0.3b0, <1.0.0" ]
2025-09-15 14:31:50 -07:00
2025-04-08 17:22:09 +00:00
[ tool . pyink ]
# Format py files following Google style-guide
line-length = 80
unstable = true
pyink-indentation = 2
pyink-use-majority-quotes = true
2025-05-01 16:49:59 -07:00
pyink-annotation-pragmas = [
"noqa" ,
"pylint:" ,
"type: ignore" ,
"pytype:" ,
"mypy:" ,
"pyright:" ,
"pyre-" ,
]
2025-04-08 17:22:09 +00:00
[ build-system ]
# Build system specify which backend is used to build/install the project (flit,
# poetry, setuptools,...). All backends are supported by `pip install`
requires = [ "flit_core >=3.8,<4" ]
build-backend = "flit_core.buildapi"
2025-06-11 18:24:10 -07:00
2025-04-08 17:22:09 +00:00
[ tool . flit . sdist ]
2025-04-09 04:24:34 +00:00
include = [ 'src/**/*' , 'README.md' , 'pyproject.toml' , 'LICENSE' ]
2025-04-08 17:22:09 +00:00
exclude = [ 'src/**/*.sh' ]
2025-06-11 18:24:10 -07:00
2025-04-08 17:22:09 +00:00
[ tool . flit . module ]
name = "google.adk"
2025-05-29 00:29:16 -07:00
include = [ "py.typed" ]
2025-04-08 17:22:09 +00:00
2025-06-11 18:24:10 -07:00
2025-04-08 17:22:09 +00:00
[ tool . isort ]
2025-05-01 09:29:42 -07:00
profile = "google"
2025-05-05 09:55:37 -07:00
single_line_exclusions = []
2025-06-11 18:24:10 -07:00
line_length = 200 # Prevent line wrap flickering.
2025-05-13 17:06:14 -07:00
known_third_party = [ "google.adk" ]
2025-05-01 09:29:42 -07:00
2025-06-11 18:24:10 -07:00
2025-04-08 17:22:09 +00:00
[ tool . pytest . ini_options ]
testpaths = [ "tests" ]
asyncio_default_fixture_loop_scope = "function"
2025-04-29 21:40:05 -07:00
asyncio_mode = "auto"
2025-05-15 22:57:20 -07:00
2025-06-11 18:24:10 -07:00
2025-05-15 22:57:20 -07:00
[ tool . mypy ]
2025-05-26 17:25:08 -07:00
python_version = "3.9"
2025-05-15 22:57:20 -07:00
exclude = "tests/"
plugins = [ "pydantic.mypy" ]
2025-11-04 18:29:43 -08:00
# Start with non-strict mode, and switch to strict mode later.
2025-05-26 17:25:08 -07:00
# strict = true
2025-05-15 22:57:20 -07:00
disable_error_code = [ "import-not-found" , "import-untyped" , "unused-ignore" ]
2025-05-26 17:25:08 -07:00
follow_imports = "skip"