2026-07-14 12:05:08 +02:00
[ build-system ]
# 77+ for PEP 639 SPDX `license = "..."` + `license-files`.
requires = [ "setuptools>=77" ]
build-backend = "setuptools.build_meta"
2026-07-14 11:27:49 +02:00
[ project ]
2026-07-14 11:56:29 +02:00
name = "linux-image-manager"
2026-07-21 19:09:25 +02:00
version = "2.2.0"
2026-07-14 12:05:08 +02:00
description = "CLI (`lim`) for downloading, verifying and flashing Linux images, LUKS/Btrfs encrypted storage (single drive and RAID1), image backups and chroot maintenance"
readme = "README.md"
2026-07-14 11:27:49 +02:00
requires-python = ">=3.10"
2026-07-14 12:05:08 +02:00
authors = [ { name = "Kevin Veen-Birkenbach" , email = "kevin@veen.world" } ]
maintainers = [ { name = "Kevin Veen-Birkenbach" , email = "kevin@veen.world" } ]
license = "GPL-3.0-only"
license-files = [ "LICENSE.txt" ]
urls = { Homepage = "https://veen.world" , Repository = "https://github.com/kevinveenbirkenbach/linux-image-manager" }
classifiers = [
"Environment :: Console" ,
"Operating System :: POSIX :: Linux" ,
"Programming Language :: Python :: 3" ,
]
2026-07-14 11:27:49 +02:00
dependencies = [ "PyYAML>=6" ]
2026-07-14 12:05:08 +02:00
[ project . scripts ]
lim = "lim.cli:main"
[ tool . setuptools . packages . find ]
include = [ "lim*" ]
[ tool . setuptools . package-data ]
2026-07-21 18:48:56 +02:00
lim = [
"distributions.yml" ,
"configuration/packages/**/*.txt" ,
"configuration/initcpio/*" ,
]
2026-07-14 12:05:08 +02:00
2026-07-14 11:27:49 +02:00
[ tool . pytest . ini_options ]
testpaths = [ "tests" ]
[ tool . ruff ]
target-version = "py310"
line-length = 100
[ tool . ruff . lint ]
select = [ "ALL" ]
ignore = [
# This tool's UI is print/prompt based and its purpose is orchestrating
# system commands — these rules contradict the design:
"T201" , # print used as console UI
"S603" , # subprocess without shell is exactly what runner.py wraps
"S607" , # system tools are resolved via PATH on purpose
# Style choices:
"D203" , # conflicts with D211 (blank line before class docstring)
"D213" , # conflicts with D212 (multi-line docstring summary position)
"D1" , # docstrings are not required on every symbol
"COM812" , # trailing commas are handled by the formatter
"TRY003" , # exception messages are written inline
"EM101" , # literal exception messages are fine
"EM102" , # f-string exception messages are fine
]
[ tool . ruff . lint . per-file-ignores ]
"tests/*" = [
"S101" , # pytest asserts
"ANN" , # test signatures need no annotations
"PLR2004" , # literal expectations in assertions
"ARG" , # fixtures are injected even when unused
"SLF001" , # tests may exercise internal helpers directly
]