[build-system] build-backend = "flit_core.buildapi" # 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" ] [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" license = { file = "LICENSE" } authors = [ { name = "Google LLC", email = "googleapis-packages@google.com" } ] requires-python = ">=3.10" classifiers = [ "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Software Development :: Libraries :: Python Modules", # List of https://pypi.org/classifiers/ "Typing :: Typed", ] dynamic = [ "version" ] dependencies = [ "aiosqlite>=0.21", # For SQLite database "anyio>=4.9,<5", # For MCP Session Manager "authlib>=1.6.6,<2", # For RestAPI Tool "click>=8.1.8,<9", # For CLI tools "fastapi>=0.133,<1", # FastAPI framework "google-api-python-client>=2.157,<3", # Google API client discovery "google-auth[pyopenssl]>=2.47", # Google Auth library "google-cloud-aiplatform[agent-engines]>=1.148.1,<2", # For VertexAI integrations, e.g. example store. "google-cloud-bigquery>=2.2", "google-cloud-bigquery-storage>=2", "google-cloud-bigtable>=2.32", # For Bigtable database "google-cloud-dataplex>=1.7,<3", # For Dataplex Catalog Search tool "google-cloud-discoveryengine>=0.13.12,<0.14", # For Discovery Engine Search Tool "google-cloud-pubsub>=2,<3", # For Pub/Sub Tool "google-cloud-secret-manager>=2.22,<3", # Fetching secrets in RestAPI Tool "google-cloud-spanner>=3.56,<4", # For Spanner database "google-cloud-speech>=2.30,<3", # For Audio Transcription "google-cloud-storage>=2.18,<4", # For GCS Artifact service "google-genai>=2.9,<3", # Google GenAI SDK "graphviz>=0.20.2,<1", # Graphviz for graph rendering "httpx>=0.27,<1", # HTTP client library "jsonschema>=4.23,<5", # Agent Builder config validation "mcp>=1.24,<2", # For MCP Toolset "opentelemetry-api>=1.36,<=1.41.1", # OpenTelemetry - allow 1.39+ up to latest published at time of resolution. "opentelemetry-exporter-gcp-logging>=1.9.0a0,<=1.12.0a0", "opentelemetry-exporter-gcp-monitoring>=1.9.0a0,<2", "opentelemetry-exporter-gcp-trace>=1.9,<2", "opentelemetry-exporter-otlp-proto-http>=1.36", "opentelemetry-resourcedetector-gcp>=1.9.0a0,<2", "opentelemetry-sdk>=1.36,<=1.41.1", "pyarrow>=14", "pydantic>=2.12,<3", # For data validation/models "python-dateutil>=2.9.0.post0,<3", # For Vertext AI Session Service "python-dotenv>=1,<2", # To manage environment variables "pyyaml>=6.0.2,<7", # For APIHubToolset. "requests>=2.32.4,<3", "sqlalchemy>=2,<3", # SQL database ORM "sqlalchemy-spanner>=1.14", # Spanner database session service "starlette>=1.3.1,<2", # For FastAPI CLI "tenacity>=9,<10", # For Retry management "typing-extensions>=4.5,<5", "tzlocal>=5.3,<6", # Time zone utilities "uvicorn>=0.34,<1", # ASGI server for FastAPI "watchdog>=6,<7", # For file change detection and hot reload "websockets>=15.0.1,<16", # For BaseLlmFlow ] optional-dependencies.a2a = [ "a2a-sdk>=0.3.4,<0.4", ] optional-dependencies.agent-identity = [ "google-cloud-iamconnectorcredentials>=0.1,<0.2", ] optional-dependencies.community = [ "google-adk-community", ] optional-dependencies.dev = [ "flit>=3.10", "isort>=6", "mypy>=1.15", "pre-commit>=4", "pyink>=25.12", "pylint>=2.6", ] optional-dependencies.docs = [ "autodoc-pydantic", "furo", "myst-parser", "sphinx<9", "sphinx-autodoc-typehints", "sphinx-click", "sphinx-rtd-theme", ] optional-dependencies.eval = [ "gepa>=0.1", "google-cloud-aiplatform[evaluation]>=1.148", "jinja2>=3.1.4,<4", # For eval template rendering "nltk!=3.10.1", # Transitive via rouge-score; 3.10.1's import hook breaks any venv living inside the working directory (reverted upstream in nltk/nltk#3732). "pandas>=2.2.3", "rouge-score>=0.1.2", "tabulate>=0.9", ] # Optional extensions optional-dependencies.extensions = [ "anthropic>=0.78", # For anthropic model support; 0.78 introduced ThinkingConfigAdaptiveParam (required for Claude Opus 4.7). "beautifulsoup4>=3.2.2", # For load_web_page tool. "crewai[tools]; python_version>='3.11' and python_version<'3.12'", # For CrewaiTool; chromadb/pypika fail on 3.12+ "docker>=7", # For ContainerCodeExecutor "google-cloud-firestore>=2.11,<3", # For Firestore services "google-cloud-parametermanager>=0.4,<1", "k8s-agent-sandbox>=0.1.1.post3", # For GkeCodeExecutor sandbox mode "kubernetes>=29", # For GkeCodeExecutor "langgraph>=0.2.60,<0.4.8", # For LangGraphAgent "litellm>=1.83.7,<=1.83.14", # For LiteLlm class. Lower bound: 5 CVE patches (2026-04). Upper bound pinned to current latest; bump deliberately. See #5488. "llama-index-embeddings-google-genai>=0.3", # For files retrieval using LlamaIndex. "llama-index-readers-file>=0.4", # For retrieval using LlamaIndex. "lxml>=5.3", # For load_web_page tool. "nltk!=3.10.1", # Transitive via llama-index-core; 3.10.1's import hook breaks any venv living inside the working directory (reverted upstream in nltk/nltk#3732). "pypika>=0.50", # For crewai->chromadb dependency "toolbox-adk>=1,<2", # For tools.toolbox_toolset.ToolboxToolset ] optional-dependencies.otel-gcp = [ "opentelemetry-instrumentation-google-genai>=0.6b0,<1" ] optional-dependencies.slack = [ "slack-bolt>=1.22" ] optional-dependencies.test = [ "a2a-sdk>=0.3,<0.4", "anthropic>=0.78", # For anthropic model tests; 0.78 introduced ThinkingConfigAdaptiveParam (required for Claude Opus 4.7). "crewai[tools]; python_version>='3.11' and python_version<'3.12'", # For CrewaiTool tests; chromadb/pypika fail on 3.12+ "docker>=7", # For ContainerCodeExecutor tests "google-cloud-firestore>=2.11,<3", "google-cloud-iamconnectorcredentials>=0.1,<0.2", "google-cloud-parametermanager>=0.4,<1", "kubernetes>=29", # For GkeCodeExecutor "langchain-community>=0.3.17", "langgraph>=0.2.60,<0.4.8", # For LangGraphAgent "litellm>=1.83.7,<=1.83.14", # For LiteLLM tests. Lower bound: 5 CVE patches (2026-04). Upper bound pinned to current latest; bump deliberately. See #5488. "llama-index-readers-file>=0.4", # For retrieval tests "nltk!=3.10.1", # Transitive via rouge-score and llama-index-core; 3.10.1's import hook breaks any venv living inside the working directory (reverted upstream in nltk/nltk#3732). "openai>=1.100.2", # For LiteLLM "opentelemetry-instrumentation-google-genai>=0.3b0,<1", "pypika>=0.50", # For crewai->chromadb dependency "pytest>=9,<10", "pytest-asyncio>=0.25", "pytest-mock>=3.14", "pytest-xdist>=3.6.1", "python-multipart>=0.0.9", "rouge-score>=0.1.2", "slack-bolt>=1.22", "tabulate>=0.9", ] optional-dependencies.toolbox = [ "toolbox-adk>=1,<2" ] urls.changelog = "https://github.com/google/adk-python/blob/main/CHANGELOG.md" urls.documentation = "https://google.github.io/adk-docs/" urls.homepage = "https://google.github.io/adk-docs/" urls.repository = "https://github.com/google/adk-python" scripts.adk = "google.adk.cli:main" [tool.flit.sdist] include = [ 'src/**/*', 'README.md', 'pyproject.toml', 'LICENSE' ] exclude = [ 'src/**/*.sh', 'src/**/README.md' ] [tool.flit.module] name = "google.adk" include = [ "py.typed" ] [tool.isort] profile = "google" single_line_exclusions = [ ] line_length = 200 # Prevent line wrap flickering. known_third_party = [ "google.adk", "a2a" ] [tool.pytest.ini_options] testpaths = [ "tests" ] asyncio_default_fixture_loop_scope = "function" asyncio_mode = "auto" [tool.mypy] python_version = "3.10" exclude = [ "tests/", "contributing/samples/" ] plugins = [ "pydantic.mypy" ] strict = true disable_error_code = [ "import-not-found", "import-untyped", "unused-ignore" ] follow_imports = "skip" [tool.pyink] # Format py files following Google style-guide line-length = 80 unstable = true pyink-indentation = 2 pyink-use-majority-quotes = true pyink-annotation-pragmas = [ "noqa", "pylint:", "type: ignore", "pytype:", "mypy:", "pyright:", "pyre-", ]