[build-system] # 77+ for PEP 639 SPDX `license = "..."` + `license-files`. requires = ["setuptools>=77"] build-backend = "setuptools.build_meta" [project] name = "linux-image-manager" version = "2.1.0" 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" requires-python = ">=3.10" 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", ] dependencies = ["PyYAML>=6"] [project.scripts] lim = "lim.cli:main" [tool.setuptools.packages.find] include = ["lim*"] [tool.setuptools.package-data] lim = [ "distributions.yml", "configuration/packages/**/*.txt", "configuration/initcpio/*", ] [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 ]