-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
128 lines (111 loc) · 5.2 KB
/
pyproject.toml
File metadata and controls
128 lines (111 loc) · 5.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# ── Build system ───────────────────────────────────────────────────────────────
[build-system]
requires = ["setuptools>=70", "wheel"]
build-backend = "setuptools.build_meta"
# ── Project metadata ───────────────────────────────────────────────────────────
[project]
name = "adk-tools"
version = "0.1.0"
description = "YAML-driven, config-validated tool loader for Google ADK agents"
readme = "README.md"
license = { text = "Apache-2.0" }
requires-python = ">=3.10"
authors = [{ name = "CloudSufi", email = "sumit.sharma@cloudsufi.com" }]
keywords = [
"adk", "google-adk", "agents", "tools",
"yaml", "gemini", "llm", "openapi", "mcp",
]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"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",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Typing :: Typed",
]
# ── Core dependencies (always installed) ──────────────────────────────────────
# These are the minimum required to use OpenAPI and Function tools.
# MCP, GCP auth, OAuth2, and schema validation are opt-in via extras.
dependencies = [
"pyyaml>=6.0",
"pydantic>=2.5", # discriminated unions, model_validator, extra=forbid
"google-adk>=0.4", # OpenAPIToolset, FunctionTool; MCPToolset via [mcp] extra
]
# ── Optional extras ────────────────────────────────────────────────────────────
[project.optional-dependencies]
# MCP tool support (SSE + stdio transports via google-adk MCP extra)
mcp = [
"google-adk[mcp]>=0.4",
]
# GCP auth — service_account tokens + reading credentials from Secret Manager
gcp = [
"google-auth>=2.30",
"google-cloud-secret-manager>=2.0",
]
# OAuth2 client-credentials token fetch (used by oauth2 auth type)
oauth2 = [
"httpx>=0.27",
]
# JSON Schema meta-validation for input.yaml / output.yaml at load time
validation = [
"jsonschema>=4.17",
]
# Install everything
all = [
"adk-tools[mcp,gcp,oauth2,validation]",
]
# Development toolchain
dev = [
"pytest>=8.0",
"pytest-asyncio>=0.23",
"pytest-mock>=3.14",
"respx>=0.21", # httpx mock for OAuth2 tests
"ruff>=0.6",
"mypy>=1.10",
"build>=1.2", # python -m build
"twine>=5.0", # twine upload dist/*
]
# ── Project URLs ───────────────────────────────────────────────────────────────
[project.urls]
Homepage = "https://github.com/cloudsufi/adk-tools"
Repository = "https://github.com/cloudsufi/adk-tools"
Issues = "https://github.com/cloudsufi/adk-tools/issues"
# ── Package discovery ──────────────────────────────────────────────────────────
# Only the adk_tools/ package is installed.
# tools/ (example tool directories) and example_agent.py are NOT shipped —
# they live in the repo for reference but are excluded from the wheel.
[tool.setuptools.packages.find]
where = ["."]
include = ["adk_tools*"]
exclude = ["tests*", "tools*", "examples*"]
# Ship the py.typed marker so type checkers (mypy, pyright) know this
# package ships inline types (PEP 561).
[tool.setuptools.package-data]
adk_tools = ["py.typed"]
# ── pytest ─────────────────────────────────────────────────────────────────────
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
addopts = "-v --tb=short"
# ── ruff (lint + format) ───────────────────────────────────────────────────────
[tool.ruff]
line-length = 100
target-version = "py311"
src = ["adk_tools", "tests"]
[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B", "SIM"]
ignore = ["E501"]
[tool.ruff.lint.isort]
known-first-party = ["adk_tools"]
# ── mypy ───────────────────────────────────────────────────────────────────────
[tool.mypy]
python_version = "3.11"
strict = false
ignore_missing_imports = true
# Packages that ship py.typed get full type-checking; others are silenced above.