# CrownCode Backend - Linting and Formatting Configuration [project] name = "crowncode-backend" requires-python = ">=3.11" [tool.black] line-length = 100 target-version = ['py311'] include = '\.pyi?$' extend-exclude = ''' /( # directories \.eggs | \.git | \.hg | \.mypy_cache | \.tox | \.venv | build | dist )/ ''' [tool.ruff] line-length = 100 target-version = "py311" select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "C", # flake8-comprehensions "B", # flake8-bugbear "UP", # pyupgrade "N", # pep8-naming "S", # bandit security "A", # flake8-builtins "T20", # flake8-print ] ignore = [ "E501", # line too long (handled by black) "B008", # do not perform function calls in argument defaults "C901", # too complex "S101", # use of assert "T201", # print found (allowed in scripts) ] [tool.ruff.per-file-ignores] "__init__.py" = ["F401"] # unused imports "tests/*" = ["S101"] # assert allowed in tests [tool.mypy] python_version = "3.11" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true disallow_incomplete_defs = true check_untyped_defs = true no_implicit_optional = true warn_redundant_casts = true warn_unused_ignores = true warn_no_return = true warn_unreachable = true strict_equality = true [[tool.mypy.overrides]] module = "yt_dlp.*" ignore_missing_imports = true [[tool.mypy.overrides]] module = "httpx.*" ignore_missing_imports = true [tool.pytest.ini_options] minversion = "7.0" addopts = "-ra -q --strict-markers --cov=app --cov-report=term-missing" testpaths = [ "tests", ] python_files = "test_*.py" python_functions = "test_*" filterwarnings = [ "ignore::FutureWarning:google", "ignore::DeprecationWarning:httpx", "ignore::PendingDeprecationWarning:starlette", ] [tool.coverage.run] source = ["app"] omit = [ "*/tests/*", "*/test_*.py", ] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "raise AssertionError", "raise NotImplementedError", "if __name__ == .__main__.:", "if TYPE_CHECKING:", "@abstractmethod", ]