[project] name = "central" version = "0.1.0" description = "Home server media management." requires-python = ">=3.10" dependencies = [ "asfquart>=0.1.12", "asyncinotify>=4,<5", "easydict>=1.13", "ezt>=1.1", "quart>=0.20", ] # An application, not a package to build and install. # Prefer the machine's python3 (3.12 here, 3.10 in production) over a # newer interpreter uv happens to have installed. [tool.uv] package = false python-preference = "system" [dependency-groups] dev = ["ruff>=0.15.20"] # Same lint set as ~/src/asf/llmao. target-version stays 3.10 because that # is what production runs. These modules are the application, not an # installed package, so isort would otherwise file them with third parties. [tool.ruff] line-length = 120 target-version = "py310" [tool.ruff.lint] select = [ "I", # isort "E", "W", "F", "ASYNC", # flake8-async: what does not belong in a coroutine "B", # flake8-bugbear: the mistakes that still run "G", # flake8-logging-format: a log message is a format string, its values are arguments "LOG", # flake8-logging: how a logger is obtained and called "N", # pep8-naming "RUF", # ruff-checks "S", # flake8-bandit: the security-shaped mistakes "TID", # flake8-tidy-imports "TC", # flake8-type-checking "UP", # pyupgrade ] ignore = [ # Log calls use f-strings. G004 wants lazy % formatting. "G004", # This process is never run with -O, so these asserts stay. "S101", ] [tool.ruff.lint.isort] known-first-party = ["admin", "disk", "media", "pages", "util", "workqueue"] [tool.ruff.lint.per-file-ignores] # Every command is an absolute path defined in this file. The arguments are # the configured drive and mount, or the title read from the disc. "bin/copydisk.py" = ["S603"]