libervia-backend/pyproject.toml
Goffi 995200a978 cli (base): Add instance isolation options:
- New ``-i``/``--isolation`` argument is added, it must be used before first positional
  argument (i.e., first comamnd).
- The new `entry.py` module is now the entry point, so it can set the `LIBERVIA_ISOLATION`
  environment variable before the backend read it.
2026-11-03 18:02:05 +01:00

219 lines
5.4 KiB
TOML

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "libervia-backend"
dynamic = ["version"]
description = "Libervia: A feature-rich XMPP client showcasing diverse frontends, uniting instant messaging, blogging, file sharing, and ActivityPub-XMPP interactions seamlessly."
readme = "README.md"
license = "AGPL-3.0-or-later"
requires-python = ">=3.11"
authors = [
{ name = "Libervia Dev Team", email = "contact@goffi.org" },
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Framework :: Twisted",
"Operating System :: POSIX :: Linux",
"Topic :: Communications :: Chat",
"Topic :: Internet :: XMPP"
]
dependencies = [
"aiosqlite",
"alembic",
"babel < 3",
"cryptography >= 41.0.1",
"emoji ~= 2.8",
"html2text < 2020.2",
"jinja2 >= 3.1.2",
"langid < 2",
"lxml",
"lxml_html_clean >= 0.1.1",
"markdown >= 3.0",
"miniupnpc >= 2.3.3",
"mutagen < 2",
"oldmemo >= 1.0.0, < 2",
"omemo >= 1.0.0, < 2",
"pillow >= 11.3.0",
"progressbar2 < 3.54",
"pydantic ~= 2.12",
"pydantic-settings ~= 2.12",
"pygments < 3",
"pyopenssl ~= 24.1",
"python-dateutil >= 2.8.1, < 3",
# currently disabled due to incompatibility, OTR feature may be removed in
# the close future
# "python-potr < 1.1",
"pyyaml < 7.0.0",
"python-xlib ~= 0.33",
"prompt_toolkit ~= 3.0",
"rich ~= 13.5",
"setuptools_scm",
"shortuuid ~= 1.0.11",
"sqlalchemy >= 1.4",
"treq ~= 24.9.0",
"twisted[tls] >= 22.10",
"twomemo >= 1.0.0, < 2",
"txdbus",
"urwid >= 1.2.0, < 3",
"urwid-satext",
"xmlschema < 4.3.1",
"tx-xmpp>=0.15",
]
keywords = [
"XMPP",
"chat",
"instant_messaging",
"blogging",
"photo albums",
"ActivityPub",
"file sharing",
"events"
]
[project.optional-dependencies]
SVG = [
"CairoSVG",
]
GUI = [
"PyQt6"
]
TUI = [
# We have to disable term-image due to bounded pillow constraint, which is
# incompatible with the minimal version required for Python 3.14
# "term-image >= 0.7.1"
]
webrtc = [
"pygobject >= 3.48",
]
# legacy dependency used in `plugin_misc_ip` but not mandatory, and may cause troubles
# during isntallation. Will be removed in future.
netifaces = [
"netifaces < 0.12",
]
remote-control = [
"libervia-backend[webrtc]",
"cbor2"
]
conferences = [
"autobahn ~= 23.6"
]
tor = [
"txtorcon ~= 24.8.0"
]
ox = [
# Use when virtual environment is isolated from system package. Otherwise, official
# GPGME python bidings are used.
"python-gnupg>=0.5.6",
]
serverless = [
"libp2p",
"zeroconf",
]
# Main features for a good experience
main = [
"libervia-backend[tor]",
"libervia-backend[ox]",
"libervia-backend[tui]"
]
# All features
all = [
# Only used by desktop-kivy so far
"libervia-backend[SVG]",
# Needs Qt
"libervia-backend[GUI]",
# Only used for (real) images in terminal.
"libervia-backend[TUI]",
# Necessary for A/V calls and webRTC based file transfer in local frontends
# (i.e.; everything but web).
"libervia-backend[webrtc]",
# Following 2 are experimental
"libervia-backend[remote-control]",
"libervia-backend[conferences]",
# Needs the Tor daémon
"libervia-backend[tor]",
# Used in isolated environment (on system packages, official GPGME Python binding
# should be used).
"libervia-backend[ox]",
"libervia-backend[serverless]"
]
[dependency-groups]
dev = [
{include-group = "debugging"},
{include-group = "tests"},
{include-group = "docs"},
]
debugging = [
"ipdb", "pudb"
]
tests = [
"pytest ~= 9.0",
"pytest-twisted",
"aiosmtpd"
]
docs = [
"sphinx ~= 9.0",
"autodoc_pydantic ~= 2.2"
]
[project.scripts]
# Legacy name, will be removed in future version
jp = "libervia.cli.entry:main"
li = "libervia.cli.entry:main"
libervia-backend = "libervia.backend.core.launcher:Launcher.run"
libervia-cli = "libervia.cli.entry:main"
libervia-tui = "libervia.tui.base:LiberviaTUIApp.run"
# Legacy name, will be removed in future version
primitivus = "libervia.tui.base:LiberviaTUIApp.run"
# Legacy name, will be removed in future version
sat = "libervia.backend.core.launcher:Launcher.run"
[project.urls]
Homepage = "https://libervia.org"
Documentation = "https://libervia.org/documentation"
Repository = "https://repos.goffi.org/libervia-backend/"
Roadmap = "https://libervia.org/roadmap"
[tool.hatch.build.targets.wheel]
packages = ["libervia", "twisted"]
[tool.pytest.ini_options]
# We need to use AsyncIO reactor with pytest-twisted, otherwise AsyncIO calls like for
# memory.sqla can't be done.
addopts = "--reactor asyncio"
[tool.uv.sources]
urwid-satext = { url = "https://repos.goffi.org/urwid-satext/archive/tip.tar.gz" }
[tool.hatch.version]
path = "libervia/backend/__init__.py"
[tool.hatch.build]
artifacts = [
"*.ini",
"*.yaml"
]
[tool.hatch.build.targets.wheel.shared-data]
"i18n/fr/LC_MESSAGES/libervia_backend.mo" = "share/locale/fr/LC_MESSAGES/libervia_backend.mo"
CHANGELOG = "share/doc/libervia-backend/CHANGELOG"
COPYING = "share/doc/libervia-backend/COPYING"
INSTALL = "share/doc/libervia-backend/INSTALL"
README = "share/doc/libervia-backend/README"
README4TRANSLATORS = "share/doc/libervia-backend/README4TRANSLATORS"
"misc/org.libervia.Libervia.service" = "share/dbus-1/services/org.libervia.Libervia.service"
[tool.hatch.metadata]
allow-direct-references = true