[build-system]
requires = ["setuptools>=69"]
build-backend = "setuptools.build_meta"

[project]
# The PyPI/wheel DISTRIBUTION name (§12.1) — distinct from the import package name below.
name = "{{ distribution-name }}"
version = "0.1.0"
description = "Describe this project."
requires-python = ">=3.12"
dependencies = []

[project.optional-dependencies]
# Dev tools the default Aviato Python CI invokes (install -e .[dev], pytest --cov,
# python -m build). Keep pytest-cov and build present or the verify/build jobs fail.
# R4-4 (finding 12): EXACTLY pinned, like requirements-dev — CI installs these, so a
# floating floor would silently pull untested tool releases (§11.3); `aviato
# lint-actions` now enforces the exact pins here too. Bump deliberately.
dev = [
  "pytest==9.1.1",
  "pytest-cov==7.1.0",
  "mypy==2.3.0",
  "ruff==0.15.22",
  "build==1.5.0",
]

[tool.setuptools.packages.find]
include = ["{{ import-name }}*"]

# §12.1 test+coverage config (finding 48): measure-only coverage by default —
# thresholds are an opt-in consumer decision, never a scaffolded gate.
[tool.pytest.ini_options]
testpaths = ["tests"]

[tool.coverage.run]
source = ["{{ import-name }}"]
branch = true
