[tool.pytest.ini_options] testpaths = ["tests"] pythonpath = ["."] # Parallel execution via pytest-xdist (v5.2.0). Override with `-n 0` to run # sequentially: `pytest -n 0`. # Note: some tests use shared temp directories — run sequentially for stability. addopts = "-n 0" [tool.ruff] target-version = "py312" line-length = 110 exclude = [".venv", ".venv311", ".pytest_cache", "static/js/vendor"] [tool.ruff.lint] # E/F: pyflakes + pycodestyle errors · I: isort · UP: pyupgrade · B: bugbear # W: whitespace. E501 ignored (line length is enforced by black, not here). select = ["E", "F", "I", "UP", "B", "W"] ignore = ["E501", "UP035"] [tool.ruff.lint.isort] known-first-party = ["app", "tests"]