Files
google--adk-python/pyproject.toml
T
Sasha Sobran 5f91a9db03 fix: lazy-import GCS evaluation managers in evals utility
Fixes https://github.com/google/adk-python/issues/5787

Change-Id: I0aadfb11fedc49c1d45d4fcd9f89087c27a0e6ea
2026-05-22 09:50:10 -07:00

287 lines
8.7 KiB
TOML

[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",
"authlib>=1.6.6,<2",
"click>=8.1.8,<9",
"fastapi>=0.124.1,<1",
"google-auth[pyopenssl]>=2.47",
"google-genai>=1.72,<2",
"graphviz>=0.20.2,<1",
"httpx>=0.27,<1",
"jsonschema>=4.23,<5",
"opentelemetry-api>=1.36,<=1.41.1",
"opentelemetry-sdk>=1.36,<=1.41.1",
"packaging>=21",
"pydantic>=2.12,<3",
"python-dotenv>=1,<2",
"python-multipart>=0.0.9,<1",
# go/keep-sorted start
"pyyaml>=6.0.2,<7",
"requests>=2.32.4,<3",
"starlette>=0.49.1,<1",
"tenacity>=9,<10",
"typing-extensions>=4.5,<5",
"tzlocal>=5.3,<6",
"uvicorn>=0.34,<1",
"watchdog>=6,<7",
"websockets>=15.0.1,<16",
# go/keep-sorted end
]
optional-dependencies.a2a = [
"a2a-sdk>=0.3.4,<0.4",
]
optional-dependencies.agent-identity = [
"google-cloud-iamconnectorcredentials>=0.1,<0.2",
]
optional-dependencies.all = [
"anyio>=4.9,<5",
"google-api-python-client>=2.157,<3",
"google-cloud-aiplatform[agent-engines]>=1.148.1,<2",
"google-cloud-bigquery>=2.2",
"google-cloud-bigquery-storage>=2",
"google-cloud-bigtable>=2.32",
"google-cloud-dataplex>=1.7,<3",
"google-cloud-discoveryengine>=0.13.12,<0.14",
"google-cloud-pubsub>=2,<3",
"google-cloud-resource-manager>=1.12,<2",
"google-cloud-secret-manager>=2.22,<3",
"google-cloud-spanner>=3.56,<4",
"google-cloud-speech>=2.30,<3",
"google-cloud-storage>=2.18,<4",
"mcp>=1.24,<2",
"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",
"pyarrow>=14",
"python-dateutil>=2.9.0.post0,<3",
"sqlalchemy>=2,<3",
"sqlalchemy-spanner>=1.14",
]
optional-dependencies.community = [
"google-adk-community",
]
optional-dependencies.db = [
"sqlalchemy>=2,<3",
"sqlalchemy-spanner>=1.14",
]
optional-dependencies.dev = [
"flit>=3.10",
"mypy>=1.15",
"pre-commit>=4",
"pyink>=25.12",
"pylint>=2.6",
"tox>=4.23.2",
"tox-uv>=1.33.2",
]
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
"pandas>=2.2.3",
"rouge-score>=0.1.2",
"tabulate>=0.9",
]
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",
"kubernetes>=29",
"langgraph>=0.2.60,<0.4.8",
"litellm>=1.83.7,<=1.83.14",
"llama-index-embeddings-google-genai>=0.3",
"llama-index-readers-file>=0.4",
"lxml>=5.3",
"pypika>=0.50",
"toolbox-adk>=1,<2",
]
optional-dependencies.gcp = [
"google-cloud-aiplatform[agent-engines]>=1.148.1,<2",
"google-cloud-bigquery>=2.2",
"google-cloud-bigquery-storage>=2",
"google-cloud-bigtable>=2.32",
"google-cloud-dataplex>=1.7,<3",
"google-cloud-discoveryengine>=0.13.12,<0.14",
"google-cloud-pubsub>=2,<3",
"google-cloud-resource-manager>=1.12,<2",
"google-cloud-secret-manager>=2.22,<3",
"google-cloud-spanner>=3.56,<4",
"google-cloud-speech>=2.30,<3",
"google-cloud-storage>=2.18,<4",
"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",
"pyarrow>=14",
"python-dateutil>=2.9.0.post0,<3",
]
optional-dependencies.mcp = [
"anyio>=4.9,<5",
"mcp>=1.24,<2",
]
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).
"anyio>=4.9,<5",
"crewai[tools]; python_version>='3.11' and python_version<'3.12'", # For CrewaiTool tests; chromadb/pypika fail on 3.12+
"gepa>=0.1",
"google-api-python-client>=2.157,<3",
"google-cloud-aiplatform[agent-engines,evaluation]>=1.148.1,<2",
"google-cloud-bigquery>=2.2",
"google-cloud-bigquery-storage>=2",
"google-cloud-bigtable>=2.32",
"google-cloud-dataplex>=1.7,<3",
"google-cloud-discoveryengine>=0.13.12,<0.14",
"google-cloud-firestore>=2.11,<3",
"google-cloud-iamconnectorcredentials>=0.1,<0.2",
"google-cloud-parametermanager>=0.4,<1",
"google-cloud-pubsub>=2,<3",
"google-cloud-resource-manager>=1.12,<2",
"google-cloud-secret-manager>=2.22,<3",
"google-cloud-spanner>=3.56,<4",
"google-cloud-speech>=2.30,<3",
"google-cloud-storage>=2.18,<4",
"jinja2>=3.1.4,<4",
"kubernetes>=29",
"langchain-community>=0.3.17",
"langgraph>=0.2.60,<0.4.8",
"litellm>=1.83.7,<=1.83.14",
"llama-index-readers-file>=0.4",
"mcp>=1.24,<2",
"openai>=1.100.2",
"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-instrumentation-google-genai>=0.3b0,<1",
"opentelemetry-resourcedetector-gcp>=1.9.0a0,<2",
"pandas>=2.2.3",
"pyarrow>=14",
"pypika>=0.50",
"pytest>=9,<10",
"pytest-asyncio>=0.25",
"pytest-mock>=3.14",
"pytest-xdist>=3.6.1",
"python-dateutil>=2.9.0.post0,<3",
"python-multipart>=0.0.9",
"rouge-score>=0.1.2",
"slack-bolt>=1.22",
"sqlalchemy>=2,<3",
"sqlalchemy-spanner>=1.14",
"tabulate>=0.9",
"tomli>=2,<3; python_version<'3.11'",
]
optional-dependencies.toolbox = [ "toolbox-adk>=1,<2" ]
optional-dependencies.tools = [
"google-api-python-client>=2.157,<3",
]
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
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.11"
exclude = [ "tests/", "contributing/samples/" ]
plugins = [ "pydantic.mypy" ]
strict = true
disable_error_code = [ "import-not-found", "import-untyped", "unused-ignore" ]
follow_imports = "skip"
[tool.pyink]
line-length = 80
unstable = true
pyink-indentation = 2
pyink-use-majority-quotes = true
pyink-annotation-pragmas = [
"noqa",
"pylint:",
"type: ignore",
"pytype:",
"mypy:",
"pyright:",
"pyre-",
]