-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
78 lines (69 loc) · 3.07 KB
/
Copy pathpyproject.toml
File metadata and controls
78 lines (69 loc) · 3.07 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
[project]
name = "foretop-ebb"
version = "0.3.0"
description = "Tells an engineering team which repos, jobs, prompts and owners break when an AI provider retires a model — before the deadline becomes an outage."
readme = "README.md"
requires-python = ">=3.12"
license = "Apache-2.0"
license-files = ["LICENSE"]
dependencies = [
"typer>=0.15",
"rich>=13.9",
"pathspec>=0.12",
"pydantic>=2.9",
"pyyaml>=6.0",
# keel.report's/keel.gate's own dependency (--report, --gate) — a real gap found
# consolidating the four sync scripts into scripts/sync-mirror.sh: neither module had ever
# been vendored before, despite apps/ebb/src/ebb/cli.py importing both since H1/H6/H8.
"httpx>=0.28",
]
[project.scripts]
ebb = "ebb.__main__:app"
# uv's `uvx <name>` runs the entry point matching the distribution name by default (no `--from`
# needed) — specs/ebb.md §9's definition of done promises exactly `uvx foretop-ebb scan .`, so
# that name needs its own script pointing at the same app, not just `ebb`.
foretop-ebb = "ebb.__main__:app"
[dependency-groups]
dev = [
"pytest>=8.3",
"types-pyyaml>=6.0",
"hypothesis>=6.115",
"jsonschema>=4.23",
"mypy>=2.3.0",
"ruff>=0.16.2",
]
# No [tool.uv.sources]/foretop-keel here, unlike the monorepo's own copy of this file — this is
# the mirror-specific pyproject.toml (scripts/sync-mirror.sh copies this file instead of
# apps/ebb/pyproject.toml). keel.collect.walk is vendored as a real sibling package at src/
# keel/ instead — no published foretop-keel PyPI package exists yet (NEXT_STEPS.md Track A
# item 6 reserves that name for later). module-name as a list is real, supported uv_build
# syntax for a project whose wheel contains more than one top-level package — verified live
# against uv's own build-backend docs this session, not guessed.
[tool.uv.build-backend]
module-name = ["ebb", "keel"]
[build-system]
requires = ["uv_build>=0.11.32,<0.12.0"]
build-backend = "uv_build"
[tool.ruff]
line-length = 100
target-version = "py312"
extend-exclude = ["tests/fixtures", "tests/golden", "tests/usage_role_fixtures"]
[tool.ruff.lint]
select = ["E", "F", "I", "N", "UP", "B", "A", "C4", "SIM", "TCH", "RUF"]
[tool.ruff.lint.isort]
# Explicit, not left to auto-detection: from the monorepo root, ruff's src-layout heuristic
# finds apps/ebb/src/ebb as first-party on its own; from *this* file, standalone (the public
# mirror), it doesn't reliably do the same, silently reclassifying `from ebb...` imports as
# third-party and reordering them. Pin it so linting behaves identically in both places.
# keel is pinned to known-third-party for the same reason apps/telltale's/charter's/lading's
# own mirror pyproject.toml templates do: it's vendored as a sibling package under the same
# src/ root as ebb itself, which ruff would otherwise auto-detect as first-party regardless of
# known-first-party, demanding a reorder the sync script doesn't perform on the verbatim-copied
# files.
known-first-party = ["ebb"]
known-third-party = ["keel"]
[tool.mypy]
strict = true
python_version = "3.12"
[tool.pytest.ini_options]
addopts = "-ra"