[project] name = "django-postfix-dovecot-api" version = "0.1.0" description = "REST API for managing Postfix/Dovecot virtual domains, users and aliases" readme = "README.md" requires-python = "~=3.14.0" dependencies = [ "django>=5.2,<6", "django-extensions>=4.1", "django-ninja>=1.7.3", "libpass>=1.9.4", "sentry-sdk>=2.73.0", "whitenoise>=6.12.0", ] [dependency-groups] dev = [ "pytest>=9.2.0", "pytest-cov>=7.1.0", "pytest-django>=4.14.0", "ruff>=0.17.3", ] prod = [ "gunicorn>=26.2.0", "mysqlclient>=2.3.0", ] [tool.uv] package = false [tool.pytest.ini_options] DJANGO_SETTINGS_MODULE = "dpdapisite.settings" testpaths = ["tests"] pythonpath = ["."] filterwarnings = ["error"] addopts = "--cov --cov-report=term-missing" [tool.coverage.run] source = ["dpdapi", "dpdapisite"] omit = ["*/migrations/*", "dpdapisite/settings.py", "dpdapisite/settings_prod.py"] branch = true [tool.coverage.report] fail_under = 100 show_missing = true [tool.ruff] line-length = 120 target-version = "py314" extend-exclude = ["*/migrations/*"] force-exclude = true [tool.ruff.lint] select = [ "E", "W", "F", "I", "UP", "B", "A", "C4", "DJ", "S", "SIM", "PT", "PTH", "RET", "RUF", "N", "LOG", "G", ] [tool.ruff.lint.per-file-ignores] "tests/*" = ["S101", "S105", "S106"]