# ==== pytest ==== [tool.pytest.ini_options] minversion = "6.0" addopts = "--ds=config.settings.test --reuse-db" python_files = [ "tests.py", "test_*.py", ] {%- if cookiecutter.frontend_pipeline == 'Gulp' %} norecursedirs = ["node_modules"] {%- endif %} # ==== Coverage ==== [tool.coverage.run] include = ["{{cookiecutter.project_slug}}/**"] omit = ["*/migrations/*", "*/tests/*"] plugins = ["django_coverage_plugin"] # ==== mypy ==== [tool.mypy] python_version = "3.12" check_untyped_defs = true ignore_missing_imports = true warn_unused_ignores = true warn_redundant_casts = true warn_unused_configs = true plugins = [ "mypy_django_plugin.main", {%- if cookiecutter.use_drf == "y" %} "mypy_drf_plugin.main", {%- endif %} ] [[tool.mypy.overrides]] # Django migrations should not produce any errors: module = "*.migrations.*" ignore_errors = true [tool.django-stubs] django_settings_module = "config.settings.test" # ==== djLint ==== [tool.djlint] blank_line_after_tag = "load,extends" close_void_tags = true format_css = true format_js = true # TODO: remove T002 when fixed https://github.com/Riverside-Healthcare/djLint/issues/687 ignore = "H006,H030,H031,T002" include = "H017,H035" indent = 2 max_line_length = 119 profile = "django" [tool.djlint.css] indent_size = 2 [tool.djlint.js] indent_size = 2 [tool.ruff] # Exclude a variety of commonly ignored directories. exclude = [ ".bzr", ".direnv", ".eggs", ".git", ".git-rewrite", ".hg", ".mypy_cache", ".nox", ".pants.d", ".pytype", ".ruff_cache", ".svn", ".tox", ".venv", "__pypackages__", "_build", "buck-out", "build", "dist", "node_modules", "venv", "*/migrations/*.py", "staticfiles/*" ] # Same as Django: https://github.com/cookiecutter/cookiecutter-django/issues/4792. line-length = 88 indent-width = 4 target-version = "py312" [tool.ruff.lint] select = [ "F", "E", "W", "C90", "I", "N", "UP", "YTT", # "ANN", # flake8-annotations: we should support this in the future but 100+ errors atm "ASYNC", "S", "BLE", "FBT", "B", "A", "COM", "C4", "DTZ", "T10", "DJ", "EM", "EXE", "FA", 'ISC', "ICN", "G", 'INP', 'PIE', "T20", 'PYI', 'PT', "Q", "RSE", "RET", "SLF", "SLOT", "SIM", "TID", "TCH", "INT", # "ARG", # Unused function argument "PTH", "ERA", "PD", "PGH", "PL", "TRY", "FLY", # "NPY", # "AIR", "PERF", # "FURB", # "LOG", "RUF" ] ignore = [ "S101", # Use of assert detected https://docs.astral.sh/ruff/rules/assert/ "RUF012", # Mutable class attributes should be annotated with `typing.ClassVar` "SIM102" # sometimes it's better to nest ] # Allow fix for all enabled rules (when `--fix`) is provided. fixable = ["ALL"] unfixable = [] # Allow unused variables when underscore-prefixed. dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" [tool.ruff.format] quote-style = "double" indent-style = "space" skip-magic-trailing-comma = false line-ending = "auto" [tool.ruff.lint.isort] force-single-line = true