[tool.poetry]
name = "AlekSIS-Core"
version = "4.0.0.dev0"
packages = [
    { include = "aleksis" }
]
readme = "README.rst"
include = [
    { path = "aleksis/**/*.mo", format = ["sdist", "wheel"] },
    { path = "*.rst", format = "sdist" },
    { path = "docs/*", format = "sdist" },
    { path = "docs/**/*", format = "sdist" },
    { path = "conftest.py", format = "sdist" },
    { path = "tox.ini", format = "sdist" }
]

description = "AlekSIS (School Information System) — Core"
authors = [
    "Dominik George <dominik.george@teckids.org>",
    "Julian Leucker <leuckeju@katharineum.de>",
    "mirabilos <thorsten.glaser@teckids.org>",
    "Frank Poetzsch-Heffter <p-h@katharineum.de>",
    "Tom Teichler <tom.teichler@teckids.org>",
    "Jonathan Weth <dev@jonathanweth.de>",
    "Hangzhi Yu <yuha@katharineum.de>",
    "Lloyd Meins <meinsll@katharineum.de>",
    "magicfelix <felix@felix-zauberer.de>",
    "Benedict Suska <benedict.suska@teckids.de>",
    "Lukas Weichelt <lukas.weichelt@teckids.de>"
]
maintainers = ["Jonathan Weth <dev@jonathanweth.de>", "Dominik George <dominik.george@teckids.org>"]
license = "EUPL-1.2-or-later"
homepage = "https://aleksis.org"
repository = "https://edugit.org/AlekSIS/official/AlekSIS-Core"
documentation = "https://aleksis.org/AlekSIS-Core/docs/html/"
keywords = ["SIS", "education", "school", "digitisation", "school apps"]
classifiers = [
    "Development Status :: 5 - Production/Stable",
    "Environment :: Web Environment",
    "Framework :: Django :: 4.1",
    "Intended Audience :: Developers",
    "Intended Audience :: Education",
    "Topic :: Education",
    "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
    "Topic :: Software Development :: Libraries :: Application Frameworks",
    "Typing :: Typed",
]

[[tool.poetry.source]]
name = "PyPI"
priority = "primary"

[[tool.poetry.source]]
name = "gitlab"
url = "https://edugit.org/api/v4/projects/461/packages/pypi/simple"
priority = "supplemental"

[tool.poetry.dependencies]
python = "^3.9"
Django = "^4.1"
django-any-js = "^1.1"
django-tables2 = "^2.1"
django-phonenumber-field = {version = "^6.1", extras = ["phonenumbers"]}
django-sass-processor = "1.2.2"
libsass = "^0.22.0"
colour = "^0.1.5"
dynaconf = {version = "^3.1", extras = ["yaml", "toml", "ini"]}
django-auth-ldap = { version = "^4.0", optional = true }
django-maintenance-mode = "^0.18.0"
django-ipware = "^5.0"
django-impersonate = "^1.4"
psycopg2 = "^2.8"
django_select2 = "^8.0"
django-two-factor-auth = { version = "^1.15.1", extras = [ "yubikey", "phonenumbers", "call", "sms", "webauthn" ] }
django-yarnpkg = "^6.0"
django-material = "^1.6.0"
django-dynamic-preferences = "^1.11"
django_widget_tweaks = "^1.4.5"
django-filter = "^2.2.0"
django-templated-email = "^3.0.0"
html2text = "^2020.0.0"
django-ckeditor = "^6.0.0"
calendarweek = "^0.5.0"
Celery = {version="^5.2", extras=["django", "redis"]}
django-celery-results = "^2.5.1"
django-celery-beat = "^2.2.0"
django-celery-email = "^3.0.0"
django-jsonstore = "^0.5.0"
django-polymorphic = "^3.0.0"
django-colorfield = "^0.9.0"
django-bleach = "^3.0.0"
django-guardian = "^2.2.0"
rules = "^3.0"
django-cache-memoize = "^0.1.6"
django-haystack = "^3.1"
celery-haystack-ng = "^2.0"
django-dbbackup = "^4.0.0"
license-expression = "^30.0"
django-reversion = "^5.0.0"
django-favicon-plus-reloaded = "^1.1.5"
django-health-check = "^3.12.1"
psutil = "^5.7.0"
celery-progress = "^0.1.0"
django-cachalot = "^2.5.3"
django-prometheus = "^2.1.0"
django-model-utils = "^4.0.0"
bs4 = "^0.0.1"
django-invitations = "^2.0.0"
django-cleavejs = "^0.1.0"
django-allauth = "^0.54.0"
django-uwsgi-ng = "^2.0"
django-extensions = "^3.1.1"
ipython = "^8.0.0"
django-oauth-toolkit = "^2.0.0"
django-storages = {version = "^1.13.2", optional = true}
boto3 = {version = "^1.26.142", optional = true}
django-cleanup = "^8.0.0"
djangorestframework = "^3.12.4"
Whoosh = "^2.7.4"
django-titofisto = "^1.0.0"
haystack-redis = "^0.0.1"
python-gnupg = "^0.5.0"
sentry-sdk = {version = "^1.4.3", optional = true}
django-cte = "^1.1.5"
pycountry = "^22.0.0"
django-iconify = "^0.3"
customidenticon = "^0.1.5"
graphene-django = ">=3.0.0, <=3.1.3"
selenium = "^4.4.3"
django-vite = "^2.0.2"
graphene-django-cud = "^0.11.0"
django-ical = "^1.9.2"
django-recurrence = "^1.11.1"
recurring-ical-events = "^2.0.2"
django-timezone-field = "^5.0"
uwsgi = "^2.0.21"

[tool.poetry.extras]
ldap = ["django-auth-ldap"]
s3 = ["boto3", "django-storages"]
sentry = ["sentry-sdk"]

[tool.poetry.scripts]
aleksis-admin = 'aleksis.core.__main__:aleksis_cmd'

[tool.poetry.group.dev.dependencies]
django-stubs = "^4.2"

safety = "^2.3.5"

flake8 = "^6.0.0"
flake8-django = "^1.0.0"
flake8-fixme = "^1.1.1"
flake8-mypy = "^17.8.0"
flake8-bandit = "^4.1.1"
flake8-builtins = "^2.0.0"
flake8-docstrings = "^1.5.0"
flake8-rst-docstrings = "^0.3.0"

black = ">=21.0"
flake8-black = "^0.3.0"

isort = "^5.0.0"
flake8-isort = "^6.0.0"

curlylint = "^0.13.0"

[tool.poetry.group.test.dependencies]
pytest = "^7.2"
pytest-django = "^4.1"
pytest-django-testing-postgresql = "^0.2"
pytest-cov = "^4.0.0"
pytest-sugar = "^0.9.2"
selenium = "<4.10.0"
freezegun = "^1.1.0"

[tool.poetry.group.docs]
optional = true

[tool.poetry.group.docs.dependencies]
sphinx = "^7.0"
sphinxcontrib-django = "^2.3.0"
sphinxcontrib-svg2pdfconverter = "^1.1.1"
sphinx-autodoc-typehints = "^1.7"
sphinx_material = "^0.0.35"

[tool.black]
line-length = 100
exclude = "/migrations/"

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"