[project]
name = "cookiecutter-django"
version = "2025.04.03"
description = "A Cookiecutter template for creating production-ready Django projects quickly."
readme = "README.md"
keywords = [
  "cookiecutter",
  "django",
  "project template",
  "scaffolding",
  "skeleton",
]
license = { text = "BSD" }
authors = [
  { name = "Daniel Roy Greenfeld", email = "pydanny@gmail.com" },
]
requires-python = ">=3.12,<3.13"
classifiers = [
  "Development Status :: 4 - Beta",
  "Environment :: Console",
  "Framework :: Django :: 5.0",
  "Intended Audience :: Developers",
  "License :: OSI Approved :: BSD License",
  "Natural Language :: English",
  "Programming Language :: Python",
  "Programming Language :: Python :: 3 :: Only",
  "Programming Language :: Python :: 3.12",
  "Programming Language :: Python :: Implementation :: CPython",
  "Topic :: Software Development",
]
dependencies = [
  "binaryornot==0.4.4",
  "cookiecutter==2.6",
  "django-upgrade==1.22.2",
  "djlint==1.36.4",
  "gitpython==3.1.43",
  "jinja2==3.1.5",
  "pre-commit==4.1.0",
  "pygithub==2.5",
  "pytest==8.3.4",
  "pytest-cookies==0.7",
  "pytest-instafail==0.5",
  "pytest-xdist==3.6.1",
  "pyyaml==6.0.2",
  "requests==2.32.3",
  "ruff==0.11.3",
  "sh==2.1; sys_platform!='win23'",
  "tox==4.23.2",
  "tox-uv>=1.17",
]
urls = { Repository = "https://github.com/cookiecutter/cookiecutter-django" }

[dependency-groups]
docs = [
  "myst-parser>=4",
  "sphinx>=8.0.2",
  "sphinx-autobuild>=2024.10.3",
  "sphinx-rtd-theme>=3",
]

[tool.black]
line-length = 119
target-version = [
  'py312',
]

# ==== isort ====

[tool.isort]
profile = "black"
line_length = 119
known_first_party = [
  "tests",
  "scripts",
  "hooks",
]

[tool.pyproject-fmt]
keep_full_version = true

# ==== pytest ====

[tool.pytest.ini_options]
addopts = "-v --tb=short"
norecursedirs = [
  ".tox",
  ".git",
  "*/migrations/*",
  "*/static/*",
  "docs",
  "venv",
  "*/{{cookiecutter.project_slug}}/*",
]

# ==== 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,T028"
ignore_blocks = "raw"
include = "H017,H035"
indent = 2
max_line_length = 119
profile = "jinja"

[tool.djlint.css]
indent_size = 2

[tool.djlint.js]
indent_size = 2