[tool.black]
line-length = 150
extend-exclude = ""

[tool.isort]
# When imports are broken into multi-line, use the "Vertical Hanging Indent" layout.
multi_line_output = 3

# Always add a trailing comma to import lists (default: False).
include_trailing_comma = true

# Always put imports lists into vertical mode (0 = none allowed on first line)
force_grid_wrap = 0

# When multi-lining imports, use parentheses for line-continuation instead of default \.
use_parentheses = true

# Max import line length.
line_length = 150

# Put the django package into its own named section so we can rearrange it.
known_django = "django"

# All apps from this project
known_first_party = [
    "main",
    "items",
    "users",
]

# projects have Django as the first imports.
sections = ["FUTURE","DJANGO","FIRSTPARTY","LOCALFOLDER","STDLIB","THIRDPARTY"]

# projects treat STDLIB the same as THIRDPARTY, so remove the blank line between them.
# projects want FIRSTPARTY and LOCALFOLDER in the same section.
no_lines_before = ["THIRDPARTY", "LOCALFOLDER"]

# Regardless of what follows the imports, force 2 blank lines after the import list
lines_after_imports = 2

# Insert 2 blank lines between each section
lines_between_sections = 2

# Alphabetical sort in sections (inside a line or in ())
force_alphabetical_sort_within_sections = true

# Sort by lexicographical
lexicographical = true

# Put all from before import
from_first = true

ensure_newline_before_comments = true

[tool.poetry]
name = "k356"
version = "1.0.0"
description = ""
authors = []

[tool.poetry.dependencies]
python = "^3.11"
Django = "^5.0"
django-bower = {git = "https://github.com/ArcaniteSolutions/django-bower.git"}
django-simple-history = "^3.7"
social-auth-app-django = "^5.4"

[tool.poetry.dev-dependencies]
black = "^24.4.0"
isort = "^5.10.1"


[tool.poetry.group.dev.dependencies]
pre-commit = "^3.8.0"

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"


[tool.coverage.run]
include = "*/k356/*"
omit = [
    "*env*",
    "*migrations*",
    "*test*",
    "admin.py",
    "*settings*",
    "*wsgi.py",
    "*manage.py"
]

[tool.coverage.report]
# Regexes for lines to exclude from consideration
exclude_lines = [
    # Have to re-enable the standard pragma
    "pragma: no cover",

    # Don't complain about missing debug-only code:
    "def __repr__",
    "if self.debug",

    # Don't complain if tests don't hit defensive assertion code:
    "raise AssertionError",
    "raise NotImplementedError",

    # Don't complain if non-runnable code isn't run:
    "if 0:",
    "if __name__ == .__main__.:"
]

