Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
110 lines (93 loc) · 3.34 KB
/
Copy pathpyproject.toml
File metadata and controls
110 lines (93 loc) · 3.34 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
[project]
name = "eco-app"
version = "0.1.0"
description = "The Eco application monorepo: MCP/web service, jobs tracker, replay viewer, and their in-game C# plugins."
readme = "README.md"
requires-python = ">=3.13"
license = { text = "MIT" }
authors = [{ name = "Kai Ase Siren" }]
# eco_mcp_app's dependency list was already a superset of eco_spec_tracker's
# and eco_replay's, so the union is just this list.
dependencies = [
"mcp>=1.14.0",
"httpx>=0.28.0",
"fastapi>=0.115.0",
"pydantic>=2.11.0",
"uvicorn[standard]>=0.30.0",
# Already pulled in transitively by uvicorn[standard]; listed explicitly
# because livereload.py imports it directly.
"watchfiles>=1.0",
"opentelemetry-api>=1.39.0,<2.0.0",
"opentelemetry-exporter-otlp-proto-http>=1.39.0,<2.0.0",
"opentelemetry-instrumentation-asgi>=0.60b0,<1.0.0",
"opentelemetry-sdk>=1.39.0,<2.0.0",
"cachetools>=5.3.0",
"aiolimiter>=1.1.0",
"sentry-sdk>=2.0,<3",
]
[project.scripts]
# Keeps the name Claude Desktop configs already point at.
eco-mcp-app = "eco_mcp_app.__main__:main"
[tool.uv]
managed = true
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/eco_mcp_app", "src/eco_spec_tracker", "src/eco_replay", "src/eco_snapshot"]
[tool.hatch.build.targets.wheel.force-include]
"data/ecoregions.json" = "eco_mcp_app/data/ecoregions.json"
"data/eco_gnome_data.json" = "eco_mcp_app/data/eco_gnome_data.json"
"data/eco_autogen_data.json.gz" = "eco_mcp_app/data/eco_autogen_data.json.gz"
[tool.ruff]
line-length = 100
target-version = "py313"
[tool.ruff.lint]
select = ["E", "F", "I", "N", "UP", "B", "A", "RUF"]
[tool.mypy]
python_version = "3.13"
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = "eco_mcp_app.server"
# mcp SDK's low-level Server exposes untyped decorators and accepts `_meta`
# via kwarg-spread, which strict mode can't model. Revisit after migrating
# to FastMCP / FastAPI transport.
disallow_untyped_decorators = false
disable_error_code = ["arg-type", "no-any-return", "no-untyped-call"]
[[tool.mypy.overrides]]
module = "tests.*"
# Tests drive the MCP Server handlers directly and narrow through its
# union-typed request/response envelopes; full narrowing for every branch
# is noise, not signal.
disable_error_code = ["union-attr"]
[dependency-groups]
dev = [
"mypy>=1.20.0",
"pre-commit>=4.5.1",
"ruff>=0.15.10",
"pytest>=8.0.0",
"pytest-asyncio>=0.24.0",
"respx>=0.22.0",
"httpx>=0.28.0",
"types-cachetools>=5.3.0",
]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
[tool.pyright]
venvPath = "."
venv = ".venv"
# Per-repo opt-outs for agentic-os pre-commit hooks (agentic_os/config.py).
[tool.agentic-os.documentation-layout]
band = "small"
# Placement only, no size exemption: investigation/ (a preserved post-mortem, AGENTS.md),
# docs/ and mods/ (module READMEs and listing copy) all sit under the small-band size caps.
# Trimmed originals are in git history at b012073 (COI-2629).
excludes = ["investigation/", "docs/", "mods/"]
[tool.agentic-os.code-comments]
# Generated build output (.NET obj/bin) is not hand-written source.
excludes = ["**/obj/**", "**/bin/**"]
[tool.agentic-os.repo-pointer-skills]
# This repo lives under the coilyco-gaming org dir, so its repo-pointer
# skill points at ~/projects/coilyco-gaming/. Needs agentic-os >= v0.18.0.
org = "coilyco"