9f6d442df8
Implements story 2-7: full main.py with _make_startup_screen(), _run_one_cycle() with per-phase timing and slow-render warning, and main() connecting config → bounds → fetcher → renderer → display. Adds provision.py early-exit when already provisioned. Adds User=root to both systemd service files. Adds tests/test_main.py (3 new tests, 99 total). Updates scaffold test to allow provisioning.config import from main.py. All quality gates pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
45 lines
1.1 KiB
TOML
45 lines
1.1 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=68", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "planemapper"
|
|
version = "0.1.0"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"Pillow==12.2.0",
|
|
"gpiozero==2.0.1",
|
|
"Flask==3.1.3",
|
|
"requests==2.33.1",
|
|
]
|
|
|
|
[project.scripts]
|
|
planemapper-radar = "planemapper.main:main"
|
|
planemapper-provision = "planemapper.provision:main"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["src"]
|
|
|
|
[tool.setuptools.package-data]
|
|
"planemapper" = ["data/airports.csv"]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py311"
|
|
exclude = [".claude", "_bmad", "_bmad-output"]
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "TID", "UP"]
|
|
|
|
[tool.ruff.lint.flake8-tidy-imports.banned-api]
|
|
"planemapper.provisioning".msg = "main.py must not import from planemapper.provisioning.*"
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
# All non-main modules may import from provisioning freely
|
|
"src/planemapper/main.py" = ["TID251"]
|
|
"src/planemapper/provision.py" = ["TID251"]
|
|
"src/planemapper/provisioning/*.py" = ["TID251"]
|
|
# Tests may import from provisioning to test its public API
|
|
"tests/provisioning/*.py" = ["TID251"]
|
|
"tests/conftest.py" = ["TID251"]
|