[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", ] [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.*", "pam.*", "pexpect.*", "pgi.*", "plinth.tests.config_local", "pytest_splinter.*", "ruamel.*", "selenium.*", "splinter.*", "stronghold.*", "systemd.*", ] ignore_missing_imports = true