content: [build-system]
  requires = ["setuptools>=48", "setuptools_scm[toml]>=6.3.1"]
  build-backend = "setuptools.build_meta"
  
  [project]
  name = "any-agent"
  readme = "README.md"
  license = {text = "Apache-2.0"}
  requires-python = ">=3.11"
  dynamic = ["version"]
  dependencies = [
    "any-llm-sdk>=0.20.3,<1",
    "litellm>=1.75.8",
    "mcp>=1.5.0",
    "opentelemetry-sdk",
    "pydantic",
    "requests",
    "rich",
    "tavily-python",
  ]
  
  [project.optional-dependencies]
  agno = [
    "agno>=1.7.0,<2",
  ]
  
  google = [
    "google-adk>=1.14.0"
  ]
  
  langchain = [
    "langchain",
    "langchain-mcp-adapters>=0.0.3",
    "langgraph",
  ]
  
  llama_index = [
    "llama-index>=0.12.52, <1",
    "llama-index-llms-litellm",
    "llama-index-tools-mcp>=0.2.5",
    "platformdirs>=4.3.7",
  ]
  
  openai = [
    "openai-agents>=0.2.6, <1",
  ]
  
  smolagents = [
    "smolagents[mcp]>=1.20.0",
  ]
  
  a2a = [
    "a2a-sdk>=0.3.0",
    "httpx",
  ]
  
  composio = [
    "composio>=0.8.14"
  ]
  
  all = [
    "any-agent[agno,google,langchain,llama_index,openai,smolagents]",
  ]
  
  [project.urls]
  Documentation = "https://mozilla-ai.github.io/any-agent/"
  Issues = "https://github.com/mozilla-ai/any-agent/issues"
  Source = "https://github.com/mozilla-ai/any-agent"
  
  [project.scripts]
  any-agent-evaluate = "any_agent.evaluation.cli:main"
  
  [tool.setuptools.package-data]
  "*" = ["py.typed"]
  
  [tool.setuptools.packages.find]
  exclude = ["tests", "tests.*"]
  where = ["src"]
  namespaces = false
  
  [tool.setuptools_scm]
  
  
  [tool.pylint.messages_control]
  disable = [
      "import-outside-toplevel",
  ]
  
  [tool.ruff.lint]
  ignore = [
    "TD",
    "FIX",
    "D100",  # We don't use module docstrings
    "D104",  # We don't use package docstrings
    "D203",  # <- disable to resolve conflict with D211
    "D213",  # <- disable to resolve conflict with D212
    "FBT",
    "COM",
    "ANN",
    "ARG",
    "S101",
    "E501",
    "INP001",
    "PERF",
    "PLR",
    "SIM",
    "PTH",
    "DTZ005",
    "BLE001",
    "TRY004",
    "S113",
    "PLW2901",
    "C901",
    "ERA001",
    "SLF001",
    "PLC0415", # We use lazy imports in several places
    "PLR0912",
    "PLR0913",
    "N999",
    "B024",
  ]
  extend-select = ["ALL"]
  
  [tool.ruff.lint.per-file-ignores]
  "src/any_agent/config.py" = ["D101", "D102"]
  "src/any_agent/evaluation/*" = ["D101", "D103", "D107"]  # TODO: Revisit when working on evaluation
  "src/any_agent/callbacks/*" = ["D102"]
  "docs/cookbook/*" = ["D"]
  "src/any_agent/evaluation/evaluators/*" = ["D103", "D107"]
  "src/any_agent/frameworks/*" = ["D107", "D102"]
  "src/any_agent/serving/a2a/agent_executor.py" = ["E402", "D102"]  # Due to Python 3.11 compatibility
  "src/any_agent/tools/mcp/*" = ["D101"]
  "src/any_agent/tools/a2a.py" = ["UP045"]  # Use `X | Y` for type unions - disabled for Google ADK compatibility
  "tests/**" = ["D", "F401", "I001"]
  "*.ipynb" = ["T201"]
  "scripts/**" = ["D", "T201"]
  
  [tool.mypy]
  strict = true
  disallow_untyped_calls = true
  disallow_untyped_defs = true
  follow_untyped_imports = true
  
  [[tool.mypy.overrides]]
  module = "tests.*"
  disallow_untyped_decorators = false # mypy gets confused by pytest decorators
  
  [[tool.mypy.overrides]]
  module = ["pytest", "mktestdocs", "pytest_lazy_fixtures", "syrupy.assertion"]
  ignore_missing_imports = true # pytest related modules are not found
  
  [tool.pytest.ini_options]
  asyncio_mode = "auto"
  asyncio_default_fixture_loop_scope = "session"
  timeout = 180
  
  [tool.coverage.run]
  branch = true
  omit = [
    "src/any_agent/vendor/*",
    "tests/"
  ]
  
  [dependency-groups]
  dev = [
    { include-group = "docs" },
    { include-group = "lint" },
    { include-group = "tests" },
  ]
  
  docs = [
    "mkdocs",
    "mkdocs-material",
    "mkdocstrings-python",
    "mkdocs-include-markdown-plugin>=7.1.5",
    "mkdocs-jupyter>=0.25.1",
  ]
  
  lint = [
    "pre-commit==4.3.0",
    "pre-commit-uv==4.1.5",
  ]
  
  tests = [
    "pytest>=8,<9",
    "pytest-cov>=6.2.1,<7",
    "pytest-sugar>=0.9.6",
    "pytest-asyncio>=0.26.0",
    "pytest-lazy-fixtures>=1.1.2",
    "pytest-timeout>=2.4.0",
    "pytest-xdist>=3.6.1",
    "debugpy>=1.8.13",
    "mktestdocs>=0.2.4",
    "syrupy>=4.9.1",
    "any-llm-sdk[anthropic,gemini,huggingface,mistral,xai]>=0.20.3,<1",
    "opentelemetry-exporter-otlp-proto-http",
  ]
  
  # For completeness, but 'uv sync --group dev' currently installs the others too.
  all = [
    { include-group = "dev" },
    { include-group = "docs" },
    { include-group = "lint" },
    { include-group = "tests" },
  ]
  