June
05c45fe5e3
Do this for a nicer developer experience in a safer language, which has nice libraries available to e.g. build command line interfaces (e.g. click). Set minimum Python version to 3.10 to support match statements.
160 lines
3.2 KiB
TOML
160 lines
3.2 KiB
TOML
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "infra-rebuild"
|
|
dynamic = ["version"]
|
|
description = "A simple NixOS deployment tool using nixos-rebuild internally, but trying to make infrastructure deployment more convenient."
|
|
readme = "README.md"
|
|
requires-python = ">=3.10"
|
|
keywords = ["nix", "NixOS"]
|
|
authors = [
|
|
{ name = "June", email = "june@jsts.xyz" },
|
|
]
|
|
classifiers = [
|
|
"License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
|
|
"Development Status :: 4 - Beta",
|
|
"Programming Language :: Python",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: Implementation :: CPython",
|
|
"Programming Language :: Python :: Implementation :: PyPy",
|
|
]
|
|
dependencies = [
|
|
"click",
|
|
]
|
|
|
|
[project.urls]
|
|
Documentation = "https://git.hamburg.ccc.de/CCCHH/infra-rebuild#readme"
|
|
Issues = "https://git.hamburg.ccc.de/CCCHH/infra-rebuild/issues"
|
|
Source = "https://git.hamburg.ccc.de/CCCHH/infra-rebuild"
|
|
|
|
[project.scripts]
|
|
infra-rebuild = "infra_rebuild.cli:infra_rebuild"
|
|
|
|
[tool.hatch.version]
|
|
path = "src/infra_rebuild/__about__.py"
|
|
|
|
[tool.hatch.envs.default]
|
|
dependencies = [
|
|
"coverage[toml]>=6.5",
|
|
"pytest",
|
|
]
|
|
[tool.hatch.envs.default.scripts]
|
|
test = "pytest {args:tests}"
|
|
test-cov = "coverage run -m pytest {args:tests}"
|
|
cov-report = [
|
|
"- coverage combine",
|
|
"coverage report",
|
|
]
|
|
cov = [
|
|
"test-cov",
|
|
"cov-report",
|
|
]
|
|
|
|
[[tool.hatch.envs.all.matrix]]
|
|
python = ["3.10", "3.11"]
|
|
|
|
[tool.hatch.envs.lint]
|
|
detached = true
|
|
dependencies = [
|
|
"black>=23.1.0",
|
|
"mypy>=1.0.0",
|
|
"ruff>=0.0.243",
|
|
]
|
|
[tool.hatch.envs.lint.scripts]
|
|
typing = "mypy --install-types --non-interactive {args:src/infra_rebuild tests}"
|
|
style = [
|
|
"ruff {args:.}",
|
|
"black --check --diff {args:.}",
|
|
]
|
|
fmt = [
|
|
"black {args:.}",
|
|
"ruff --fix {args:.}",
|
|
"style",
|
|
]
|
|
all = [
|
|
"style",
|
|
"typing",
|
|
]
|
|
|
|
[tool.black]
|
|
target-version = ["py310"]
|
|
line-length = 120
|
|
skip-string-normalization = true
|
|
|
|
[tool.ruff]
|
|
target-version = "py310"
|
|
line-length = 120
|
|
select = [
|
|
"A",
|
|
"ARG",
|
|
"B",
|
|
"C",
|
|
"DTZ",
|
|
"E",
|
|
"EM",
|
|
"F",
|
|
"FBT",
|
|
"I",
|
|
"ICN",
|
|
"ISC",
|
|
"N",
|
|
"PLC",
|
|
"PLE",
|
|
"PLR",
|
|
"PLW",
|
|
"Q",
|
|
"RUF",
|
|
"S",
|
|
"T",
|
|
"TID",
|
|
"UP",
|
|
"W",
|
|
"YTT",
|
|
]
|
|
ignore = [
|
|
# Allow non-abstract empty methods in abstract base classes
|
|
"B027",
|
|
# Allow boolean positional values in function calls, like `dict.get(... True)`
|
|
"FBT003",
|
|
# Ignore checks for possible passwords
|
|
"S105", "S106", "S107",
|
|
# Ignore complexity
|
|
"C901", "PLR0911", "PLR0912", "PLR0913", "PLR0915",
|
|
]
|
|
unfixable = [
|
|
# Don't touch unused imports
|
|
"F401",
|
|
]
|
|
|
|
[tool.ruff.isort]
|
|
known-first-party = ["infra_rebuild"]
|
|
|
|
[tool.ruff.flake8-tidy-imports]
|
|
ban-relative-imports = "all"
|
|
|
|
[tool.ruff.per-file-ignores]
|
|
# Tests can use magic values, assertions, and relative imports
|
|
"tests/**/*" = ["PLR2004", "S101", "TID252"]
|
|
|
|
[tool.coverage.run]
|
|
source_pkgs = ["infra_rebuild", "tests"]
|
|
branch = true
|
|
parallel = true
|
|
omit = [
|
|
"src/infra_rebuild/__about__.py",
|
|
]
|
|
|
|
[tool.coverage.paths]
|
|
infra_rebuild = ["src/infra_rebuild", "*/infra-rebuild/src/infra_rebuild"]
|
|
tests = ["tests", "*/infra-rebuild/tests"]
|
|
|
|
[tool.coverage.report]
|
|
exclude_lines = [
|
|
"no cov",
|
|
"if __name__ == .__main__.:",
|
|
"if TYPE_CHECKING:",
|
|
]
|