[tool.poetry] name = "site" version = "1.0.0" description = "The project responsible for maintaining our website and all of its subdomains." authors = ["Python Discord "] license = "MIT" package-mode = false [tool.poetry.dependencies] python = "3.11.*" django = "5.1.5" django-distill = "3.2.7" django-environ = "0.11.2" django-filter = "24.3" django-prometheus = "2.3.1" django-simple-bulma = "2.6.0" djangorestframework = "3.14.0" gunicorn = "23.0.0" httpx = "0.28.1" markdown = "3.7" psycopg = {extras = ["binary"], version = "3.2.3"} pyjwt = {version = "2.10.1", extras = ["crypto"]} pymdown-extensions = "10.14.3" python-frontmatter = "1.1.0" pyyaml = "6.0.2" sentry-sdk = "2.22.0" whitenoise = "6.9.0" [tool.poetry.group.dev.dependencies] python-dotenv = "1.0.1" taskipy = "1.14.1" ruff = "0.8.0" [tool.poetry.group.lint.dependencies] pre-commit = "4.1.0" [tool.poetry.group.test.dependencies] coverage = "7.6.12" [build-system] requires = ["poetry-core>=1.2.0"] build-backend = "poetry.core.masonry.api" [tool.ruff] target-version = "py311" extend-exclude = [".cache"] line-length = 120 output-format = "concise" unsafe-fixes = true [tool.ruff.lint] ignore = [ "ANN002", "ANN003", "ANN204", "ANN206", "ANN401", "B904", "C401", "C408", "D100", "D104", "D105", "D107", "D203", "D212", "D214", "D215", "D301", "D400", "D401", "D402", "D404", "D405", "D406", "D407", "D408", "D409", "D410", "D411", "D412", "D413", "D414", "D416", "D417", "E731", "DJ001", "DJ008", "RET504", "RUF005", "RUF012", "S101", "S311", "SIM102", "SIM108", ] select = ["ANN", "B", "C4", "D", "DJ", "DTZ", "E", "F", "ISC", "INT", "N", "PGH", "PIE", "RET", "RSE", "RUF", "S", "SIM", "T20", "TID", "UP", "W"] [tool.ruff.lint.per-file-ignores] "pydis_site/apps/**/migrations/*.py" = ["ALL"] "manage.py" = ["T201"] "pydis_site/apps/api/tests/base.py" = ["S106"] "pydis_site/apps/**/tests/test_*.py" = ["ANN", "D"] "static-builds/netlify_build.py" = ["T201"] "pydis_site/apps/api/tests/test_off_topic_channel_names.py" = ["RUF001"] "gunicorn.conf.py" = ["ANN", "D"] "pydis_site/apps/api/models/bot/off_topic_channel_name.py" = ["RUF001"] [tool.taskipy.tasks] start = "python manage.py run" makemigrations = "python manage.py makemigrations" django_shell = "python manage.py shell" test = "coverage run manage.py test" coverage = "coverage run manage.py test --no-input && coverage report -m" report = "coverage report -m" lint = "pre-commit run --all-files" precommit = "pre-commit install" static = "python manage.py distill-local build --traceback --force"