[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.14", ] 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", ] # 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]" ] [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.base:LiberviaCli.run" li = "libervia.cli.base:LiberviaCli.run" libervia-backend = "libervia.backend.core.launcher:Launcher.run" libervia-cli = "libervia.cli.base:LiberviaCli.run" 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.bz2" } [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