[tool.poetry] name = "Sith" version = "3" description = "Le web Sith de l'AE" authors = [ "Skia ", "klmp200 ", "Krophil ", "Maréchal ", "Och ", "tleb ", "Soldat ", "Nabos ", "Terre ", "Lo-J ", "Vial " ] documentation = "https://sith-ae.readthedocs.io/" homepage = "https://ae.utbm.fr/" license = "GPL-3.0-only" [tool.poetry.dependencies] python = "^3.12" Django = "^4.2.14" django-ninja = "^1.3.0" django-ninja-extra = "^0.21.8" Pillow = "^11.0.0" mistune = "^3.0.2" django-jinja = "^2.11.0" cryptography = "^44.0.0" django-phonenumber-field = "^8.0.0" phonenumbers = "^8.13.51" reportlab = "^4.2.5" django-haystack = "^3.3.0" xapian-haystack = "^3.1.0" libsass = "^0.23.0" django-ordered-model = "^3.7.4" django-simple-captcha = "^0.6.0" python-dateutil = "^2.9.0.post0" sentry-sdk = "^2.19.2" Jinja2 = "^3.1.4" django-countries = "^7.6.1" dict2xml = "^1.7.6" Sphinx = "^5" # Needed for building xapian tomli = "^2.2.1" django-honeypot = "^1.2.1" pydantic-extra-types = "^2.10.1" [tool.poetry.group.prod.dependencies] # deps used in prod, but unnecessary for development # The C extra triggers compilation against sytem libs during install. # Removing it would switch psycopg to a slower full-python implementation psycopg = {extras = ["c"], version = "^3.2.3"} redis = {extras = ["hiredis"], version = "^5.2.0"} [tool.poetry.group.prod] optional = true [tool.poetry.group.dev.dependencies] # deps used for development purposes, but unneeded in prod django-debug-toolbar = "^4.4.6" ipython = "^8.30.0" pre-commit = "^4.0.1" ruff = "^0.8.2" # Version used in pipeline is controlled by pre-commit hooks in .pre-commit.config.yaml djhtml = "^3.0.7" faker = "^33.1.0" rjsmin = "^1.2.3" [tool.poetry.group.tests.dependencies] # deps used for testing purposes freezegun = "^1.5.1" # used to test time-dependent code pytest = "^8.3.4" pytest-cov = "^6.0.0" pytest-django = "^4.9.0" model-bakery = "^1.20.0" [tool.poetry.group.docs.dependencies] # deps used to work on the documentation mkdocs = "^1.6.1" mkdocs-material = "^9.5.47" mkdocstrings = "^0.27.0" mkdocstrings-python = "^1.12.2" mkdocs-include-markdown-plugin = "^7.1.2" [tool.poetry.group.docs] optional = true [tool.xapian] version = "1.4.25" [tool.ruff] output-format = "concise" # makes ruff error logs easier to read [tool.ruff.lint] select = [ "A", # shadowing of Python builtins "B", "C4", # use comprehensions when possible "DJ", # django-specific rules, "E", # pycodestyle (https://docs.astral.sh/ruff/rules/#pycodestyle-e-w) "ERA", # commented code "F", # pyflakes (https://docs.astral.sh/ruff/rules/#pyflakes-f) "FBT", # boolean trap "FLY", # f-string instead of str.join "FURB", # https://docs.astral.sh/ruff/rules/#refurb-furb "I", # isort "INT", # gettext "PERF", # performance "PLW", # pylint warnings (https://docs.astral.sh/ruff/rules/#pylint-pl) "RUF", # Ruff specific rules "SIM", # simplify (https://docs.astral.sh/ruff/rules/#flake8-simplify-sim) "T100", # breakpoint() "T2", # print statements "TCH", # type-checking block "UP008", # Use super() instead of super(__class__, self) "UP009", # utf-8 encoding declaration is unnecessary ] ignore = [ "DJ001", # null=True in CharField/TextField. this one would require a migration "E501", # line too long. The rule is too harsh, and the formatter deals with it in most cases "RUF012" # mutable class attributes. This rule doesn't integrate well with django ] [tool.ruff.lint.pydocstyle] convention = "google" [tool.pytest.ini_options] DJANGO_SETTINGS_MODULE = "sith.settings" python_files = ["tests.py", "test_*.py", "*_tests.py"] markers = ["slow"] [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"