[project] name = "backend" version = "0.1.0" description = "" readme = "README.md" requires-python = ">=3.13" license = { text = "MIT" } dependencies = [ "django>=6.0.6", "django-environ>=0.14.0", "django-jazzmin==3.0.2", "djangorestframework>=3.17.1", "djangorestframework-simplejwt>=5.5.1", "drf-yasg>=1.21.15", "django-cors-headers>=4.9.0", "whitenoise>=6.12.0", "mysqlclient>=2.2.8", "django-tailwind-cli>=4.6.2", "django-htmx>=1.27.0", "gunicorn>=26.0.0", "django-q2>=1.10.0", "openpyxl>=3.1.5", "requests>=2.34.2", "django-import-export>=4.4.1", "django-filter>=25.2", "drf-spectacular>=0.29.0", "django-browser-reload>=1.21.0", "pillow>=12.2.0", "pywebpush>=2.3.0", ] [dependency-groups] dev = [ "ruff>=0.15.20", "pytest>=9.1.1", "pytest-django>=4.12.0", ] [tool.ruff] line-length = 88 target-version = "py313" [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade ] ignore = [ "E501", # line too long, handled by formatter "B008", # do not perform function calls in argument defaults ] [tool.ruff.lint.per-file-ignores] "**/__init__.py" = ["F401", "F403", "F405"] "config/settings/*.py" = ["F401", "F403", "F405"] [tool.ruff.lint.isort] known-first-party = ["config", "src"]