FreedomBox/pyproject.toml
Sunil Mohan Adapa c5f9606f43
pyproject: Declare support for Django 6.0
Explicitly noting down the version of Django helps us keep better track of our
upgrade progress. Due to the nature of changes to Django in recent versions,
FreedomBox does not need any changes to support newer versions. So, work done on
analyzing support for newer versions needs to tracked separate from git log
message.

Tests:

- Building FreedomBox Debian package works.

Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2026-08-08 10:03:49 -04:00

194 lines
5.5 KiB
TOML

[project]
name = "plinth"
description = "A web front end for administering FreedomBox"
license = "AGPL-3.0-or-later"
license-files = ["COPYING.md"]
dynamic = ["version"]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: No Input/Output (Daemon)",
"Environment :: Web Environment",
"Framework :: Django",
"Framework :: Django :: 5",
"Framework :: Django :: 5.0",
"Framework :: Django :: 5.1",
"Framework :: Django :: 5.2",
"Framework :: Django :: 6",
"Framework :: Django :: 6.0",
"Intended Audience :: End Users/Desktop",
"Natural Language :: English",
"Operating System :: POSIX :: Linux",
"Programming Language :: JavaScript",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Topic :: Communications",
"Topic :: Communications :: Chat",
"Topic :: Communications :: Chat :: Internet Relay Chat",
"Topic :: Communications :: Conferencing",
"Topic :: Communications :: Email",
"Topic :: Communications :: Email :: Filters",
"Topic :: Communications :: Email :: Mail Transport Agents",
"Topic :: Communications :: Email :: Post-Office",
"Topic :: Communications :: Email :: Post-Office :: IMAP",
"Topic :: Communications :: Email :: Post-Office :: POP3",
"Topic :: Communications :: File Sharing",
"Topic :: Internet",
"Topic :: Internet :: Name Service (DNS)",
"Topic :: Internet :: Proxy Servers",
"Topic :: Internet :: WWW/HTTP",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content :: News/Diary",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Wiki",
"Topic :: Internet :: WWW/HTTP :: HTTP Servers",
"Topic :: Internet :: WWW/HTTP :: Indexing/Search",
"Topic :: Internet :: WWW/HTTP :: WSGI",
"Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
"Topic :: Internet :: XMPP",
"Topic :: Office/Business",
"Topic :: Office/Business :: Scheduling",
"Topic :: Security",
"Topic :: Software Development :: Version Control",
"Topic :: Software Development :: Version Control :: Git",
"Topic :: System",
"Topic :: System :: Archiving",
"Topic :: System :: Archiving :: Backup",
"Topic :: System :: Distributed Computing",
"Topic :: System :: Filesystems",
"Topic :: System :: Installation/Setup",
"Topic :: System :: Networking",
"Topic :: System :: Networking :: Firewalls",
"Topic :: System :: Networking :: Time Synchronization",
"Topic :: System :: Operating System",
"Topic :: System :: Software Distribution",
"Topic :: System :: Systems Administration",
"Topic :: System :: Systems Administration :: Authentication/Directory",
"Topic :: System :: Systems Administration :: Authentication/Directory :: LDAP",
"Topic :: System :: System Shells",
]
dependencies = [
"cherrypy >= 3.0",
"configobj",
"django >= 1.11.0",
"django-bootstrap-form",
"django-simple-captcha",
"django-stronghold >= 0.3.0",
"fido2 >= 1.2.0",
"psutil",
"python-apt",
"python-augeas",
"requests",
"ruamel.yaml",
]
[[project.authors]]
name = "FreedomBox Authors"
email = "freedombox-discuss@lists.alioth.debian.org"
[project.optional-dependencies]
test = [
"pytest",
"pytest-cov",
"pytest-django",
"flake8",
"requests",
]
[project.urls]
homepage = "https://freedombox.org"
projectpage = "https://salsa.debian.org/freedombox-team/freedombox"
manual = "https://wiki.debian.org/FreedomBox/Manual/"
documentation = "https://docs.freedombox.org/"
changelog = "https://salsa.debian.org/freedombox-team/freedombox/-/blob/main/debian/changelog"
readme = "https://salsa.debian.org/freedombox-team/freedombox/-/blob/main/README.md"
support = "https://freedombox.org/#community"
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[project.scripts]
plinth = "plinth.__main__:main"
freedombox-privileged = "plinth.privileged_daemon:main"
freedombox-cmd = "plinth.privileged_daemon:client_main"
[tool.setuptools.dynamic]
version = {attr = "plinth.__version__"}
[tool.setuptools.packages.find]
include = ["plinth", "plinth.*"]
[tool.setuptools.package-data]
"*" = [
"templates/*",
"static/**",
"locale/*/LC_MESSAGES/*.mo",
"tests/functional/config.ini"
]
[tool.setuptools.exclude-package-data]
"*" = ["*/data/*"]
[tool.isort]
known_first_party = ["plinth"]
[tool.coverage.run]
branch = true
omit = ["*/tests/*"]
[tool.coverage.report]
precision = 2
omit = ["*/tests/*"]
[tool.pytest.ini_options]
addopts = "--ds=plinth.tests.data.django_test_settings"
markers = [
"essential",
"functional",
"skip",
"heavy",
"apps",
"domain",
"system",
"tags",
]
# Useful when pylint is invoked separately instead of flake8
[tool.pylint.'MESSAGES CONTROL']
disable = [
"too-many-arguments", # Has not resulted in a refactoring
"too-many-ancestors", # Easy to hit when using Django
]
[tool.mypy]
exclude = "build/"
# Ignore missing type stubs for some libraries. Try to keep this list minimal
# and use type annotations where available.
[[tool.mypy.overrides]]
module = [
"aptsources.*",
"augeas.*",
"axes.*",
"captcha.*",
"cherrypy.*",
"configobj.*",
"dbus.*",
"django.*",
"gi.*",
"numpy.*",
"oauth2_provider.*",
"pam.*",
"pexpect.*",
"pgi.*",
"plinth.tests.config_local",
"pytest_splinter.*",
"ruamel.*",
"segno.*",
"selenium.*",
"splinter.*",
"stronghold.*",
"systemd.*",
]
ignore_missing_imports = true