[project] name = "Sith" version = "3" description = "Le web Sith de l'AE" readme = "README.md" authors = [ { name = "Skia", email = "skia@hya.sk" }, { name = "klmp200", email = "antoine@bartuccio.fr" }, { name = "Krophil", email = "pierre.brunet@krophil.fr" }, { name = "Maréchal", email = "thgirod@hotmail.com" }, { name = "Och", email = "francescowitz68@gmail.com" }, { name = "tleb", email = "tleb@openmailbox.org" }, { name = "Soldat", email = "ryan-68@live.fr" }, { name = "Nabos", email = "gnikwo@hotmail.com" }, { name = "Terre", email = "jbaptiste.lenglet+git@gmail.com" }, { name = "Lo-J", email = "renaudg779@gmail.com" }, { name = "Vial", email = "robin.trioux@utbm.fr" }, ] license = { text = "GPL-3.0-only" } requires-python = "<4.0,>=3.12" dependencies = [ "django>=5.2.8,<6.0.0", "django-ninja>=1.4.5,<2.0.0", "django-ninja-extra>=0.30.2,<1.0.0", "Pillow>=12.0.0,<13.0.0", "mistune>=3.1.4,<4.0.0", "django-jinja<3.0.0,>=2.11.0", "cryptography>=46.0.3,<47.0.0", "django-phonenumber-field>=8.3.0,<9.0.0", "phonenumbers>=9.0.18,<10.0.0", "reportlab>=4.4.4,<5.0.0", "django-haystack<4.0.0,>=3.3.0", "xapian-haystack<4.0.0,>=3.1.0", "libsass<1.0.0,>=0.23.0", "django-ordered-model<4.0.0,>=3.7.4", "django-simple-captcha<1.0.0,>=0.6.2", "python-dateutil<3.0.0.0,>=2.9.0.post0", "sentry-sdk>=2.43.0,<3.0.0", "jinja2<4.0.0,>=3.1.6", "django-countries>=8.0.0,<9.0.0", "dict2xml>=1.7.7,<2.0.0", "Sphinx<6,>=5", "tomli>=2.3.0,<3.0.0", "django-honeypot>=1.3.0,<2", "pydantic-extra-types>=2.10.6,<3.0.0", "ical>=11.1.0,<12", "redis[hiredis]>=5.3.0,<8", "environs[django]>=14.5.0,<15.0.0", "requests>=2.32.5,<3.0.0", "honcho>=2.0.0", "psutil>=7.1.3,<8.0.0", "celery[redis]>=5.5.2", "django-celery-results>=2.5.1", "django-celery-beat>=2.7.0", ] [project.urls] homepage = "https://ae.utbm.fr/" documentation = "https://sith-ae.readthedocs.io/" [dependency-groups] prod = [ "psycopg[c]>=3.2.12,<4.0.0", ] dev = [ "django-debug-toolbar>=6.1.0,<7", "ipython>=9.7.0,<10.0.0", "pre-commit>=4.3.0,<5.0.0", "ruff>=0.14.4,<1.0.0", "djhtml>=3.0.10,<4.0.0", "faker>=37.12.0,<38.0.0", "rjsmin>=1.2.5,<2.0.0", ] tests = [ "freezegun>=1.5.5,<2.0.0", "pytest>=8.4.2,<9.0.0", "pytest-cov>=7.0.0,<8.0.0", "pytest-django<5.0.0,>=4.10.0", "model-bakery<2.0.0,>=1.20.4", "beautifulsoup4>=4.14.2,<5", "lxml>=6.0.2,<7", ] docs = [ "mkdocs<2.0.0,>=1.6.1", "mkdocs-material>=9.6.23,<10.0.0", "mkdocstrings>=0.30.1,<1.0.0", "mkdocstrings-python>=1.18.2,<2.0.0", "mkdocs-include-markdown-plugin>=7.2.0,<8.0.0", ] [tool.uv] default-groups = ["dev", "tests", "docs"] [tool.xapian] version = "1.4.29" [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" [build-system] # A build system is needed to register a pytest plugin requires = ["hatchling"] build-backend = "hatchling.build" [project.entry-points.pytest11] sith = "sith.pytest" [tool.pytest.ini_options] DJANGO_SETTINGS_MODULE = "sith.settings" python_files = ["tests.py", "test_*.py", "*_tests.py"] markers = ["slow"]