[build-system] requires = ["setuptools>=61.0", "setuptools_scm[toml]>=6.4"] build-backend = "setuptools.build_meta" [project] name = "modoboa" dynamic = ["version"] authors = [ { name="Antoine Nguyen", email="tonio@ngyn.org" }, ] description = "Mail hosting made simple" readme = "README.rst" requires-python = ">=3.10" classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django :: 5.2", "Intended Audience :: System Administrators", "License :: OSI Approved :: ISC License (ISCL)", "Operating System :: OS Independent", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Communications :: Email", "Topic :: Internet :: WWW/HTTP", ] keywords = ["email"] license = {file = "LICENSE"} dependencies = [ "django==5.2.10", "django-phonenumber-field[phonenumbers]==8.4.0", "django-reversion==6.1.0", "django-xforwardedfor-middleware==2.0", "django-otp==1.7.0", "django-filter", "django-rename-app==0.1.7", "django-environ", "dj-database-url", "djangorestframework>=3.16,<3.17", "drf-spectacular", "uritemplate", "django-oauth-toolkit", "django-cors-headers", "libpass>=1.9.3", "bcrypt~=5.0", # Requires libffi-dev and python-dev "asgiref", "dnspython==2.8.0", "feedparser==6.0.12", "fido2==2.1.1", "progressbar33==2.4", "python-dateutil", "cryptography", "pytz", "requests", "lxml_html_clean", "chardet", "ovh", "oath", "packaging", "redis>=7.1.0", "rrdtool-bindings>=0.2.0", "qrcode", "aiosmtplib", # PDF credentials "reportlab", # DMARC "tldextract>=2.0.2", "defusedxml>=0.6.0", "python-magic>=0.4.24", # RQ "rq>=2.4.0", "django-rq", # Sieve "sievelib>=1.4.1", # User "drf-nested-routers", "vobject", "caldav==2.2.3", # Amavis "html2text", "idna", ] [project.optional-dependencies] dev = [ "django-debug-toolbar", "pre-commit", "black", "ruff", "django-extensions", "Werkzeug", "pyOpenSSL" ] mysql = ["mysqlclient<2.2.8"] postgresql = [ "psycopg[binary]>=3.1; platform_system != 'FreeBSD'", "psycopg[c]>=3.1; platform_system == 'FreeBSD'" ] test = [ "argon2-cffi>=16.1.0", "factory-boy<3.4.0", "httmock==1.4.0", "testfixtures==8.3.0", "freezegun", "tox", ] ldap = ["django-auth-ldap<6.0.0"] [project.scripts] modoboa-cli = "modoboa:modoboa_admin" [project.urls] Homepage = "http://modoboa.org/" Documentation = "https://modoboa.readthedocs.io/en/latest/" Repository = "https://github.com/modoboa/modoboa" Changelog = "https://github.com/modoboa/modoboa/blob/master/CHANGELOG.md" Issues = "https://github.com/modoboa/modoboa/issues" [tool.setuptools.dynamic] version = {attr = "modoboa.version.get_version"} [tool.ruff] exclude = ["migrations"] [tool.ruff.lint] select = ["E4", "E7", "E9", "F", "B", "Q", "UP"]