FreedomBox/pyproject.toml
Sunil Mohan Adapa 812ed5d60d
*: Introduce make file based build, eliminate setup.py
- setuptools aims to a build library instead of being invoked by setup.py.
Launching setup tools using ./setup.py is deprecated. Launching it using
generic build tools that use pyproject.toml is recommended.

- With the new approach customizing the build is not possible to the earlier
extent. So, introduce is a simple and sufficient build system using 'make'.

Tests:

- Check the pyproject.toml using validate-pyproject tool.

- Run diffoscope on old and new packages and verify that no unexpected changes
were introduced by the build system change.

- None of the files part of .deb package have different file permissions
compared to before.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2024-02-12 19:17:09 -05:00

227 lines
5.9 KiB
TOML

[project]
name = "plinth"
description = "A web front end for administering FreedomBox"
license = {file = "COPYING.md"}
dynamic = ["version"]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: No Input/Output (Daemon)",
"Environment :: Web Environment",
"Framework :: Django",
"Intended Audience :: End Users/Desktop",
"License :: DFSG approved",
"License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
"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",
"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",
"tomli",
]
[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/master/debian/changelog"
readme = "https://salsa.debian.org/freedombox-team/freedombox/-/blob/master/README.md"
support = "https://freedombox.org/#community"
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[project.scripts]
plinth = "plinth.__main__: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"]
[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",
"avahi",
"backups",
"bepasty",
"bind",
"calibre",
"cockpit",
"config",
"coturn",
"datetime",
"deluge",
"domain",
"dynamicdns",
"ejabberd",
"email",
"gitweb",
"help",
"i2p",
"ikiwiki",
"infinoted",
"janus",
"jsxc",
"matrixsynapse",
"mediawiki",
"minetest",
"minidlna",
"mumble",
"openvpn",
"pagekite",
"performance",
"privacy",
"privoxy",
"quassel",
"radicale",
"roundcube",
"rssbridge",
"samba",
"searx",
"security",
"shaarli",
"shadowsocks",
"shadowsocksserver",
"sharing",
"snapshot",
"ssh",
"sso",
"storage",
"syncthing",
"system",
"tor",
"transmission",
"ttrss",
"upgrades",
"users",
"wireguard",
"wordpress",
"zoph",
]
# 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
]
# 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.*",
"pam.*",
"pgi.*",
"plinth.tests.config_local",
"pytest_splinter.*",
"ruamel.*",
"selenium.*",
"splinter.*",
"stronghold.*",
]
ignore_missing_imports = true