# One uv-managed environment (.venv in the repo root, Python 3.14) runs the whole stack: cron, # the systemd watcher, the shell entry points and the tests. The repo runs in place and is NOT an # installable package (package = false), so this table only declares dependencies for `uv sync`. # Also gives ruff / mypy / pytest a shared, conservative baseline so regressions are catchable # before runtime. [project] name = "wangflix" version = "0" description = "Self-hosted Linux DVR + media normalization pipeline" requires-python = ">=3.14" dependencies = [ "requests>=2.31", "pysubs2>=1.7", "srt>=3.5", "faster-whisper>=1.2", "subliminal>=2.8", "ffsubsync>=0.5", ] [dependency-groups] dev = [ "ruff>=0.15", "mypy>=1.11", "pytest>=7.4", ] [tool.uv] package = false [tool.ruff] line-length = 100 target-version = "py314" [tool.ruff.lint] # Conservative baseline: pyflakes (F — real bugs: unused/undefined names) # plus pycodestyle errors/warnings (E, W). Style-only rules that the # existing code intentionally trips are ignored rather than mass-reformatted # — the point is a green baseline to ratchet from, not a reformat pass. select = ["E", "F", "W"] ignore = [ "E501", # line length — long descriptive lines / comments are intentional "E402", # import not at top — entry scripts set sys.path / load env first "E401", # multiple imports on one line — a few `import os, sys` "E701", # multiple statements per line — terse guard clauses "E741", # ambiguous single-char name — a couple of legacy loop vars ] [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-q" [tool.mypy] # Permissive baseline scoped to the package first (codex: "ratchet # media_stack/ first"). No disallow_untyped_defs / strict yet. python_version = "3.14" files = ["media_stack"] ignore_missing_imports = true warn_unused_ignores = true