slidge


Nameslidge JSON
Version 0.3.0 PyPI version JSON
download
home_pageNone
SummaryXMPP bridging framework
upload_time2025-09-13 06:26:08
maintainerNone
docs_urlNone
authorNone
requires_python>=3.11
licenseNone
keywords xmpp gateway bridge instant messaging
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ![Slidge logo](https://codeberg.org/slidge/slidge/raw/branch/main/dev/assets/slidge-color-small.png)

[![woodpecker CI status](https://ci.codeberg.org/api/badges/14027/status.svg)](https://ci.codeberg.org/repos/14027)
[![coverage](https://slidge.im/coverage/slidge/main/coverage.svg)](https://slidge.im/coverage/slidge/main)
[![Chat](https://conference.nicoco.fr:5281/muc_badge/slidge@conference.nicoco.fr)](https://conference.nicoco.fr:5281/muc_log/slidge/)

Slidge is an XMPP (puppeteer) gateway library in python.
It makes
[writing gateways to other chat networks](https://slidge.im/docs/slidge/main/dev/tutorial.html)
(*legacy modules*) as frictionless as possible.
It supports fancy IM features, such as
[(emoji) reactions](https://xmpp.org/extensions/xep-0444.html),
[replies](https://xmpp.org/extensions/xep-0461.html), and
[retractions](https://xmpp.org/extensions/xep-0424.html).
The full list of supported XEPs in on [xmpp.org](https://xmpp.org/software/slidge/).

Status
------

Slidge is **beta**-grade software. It support groups and 1:1 chats.
Try slidge and give us some
feedback, through the [MUC](xmpp:slidge@conference.nicoco.fr?join) or the
[issue tracker](https://codeberg.org/slidge/slidge/issues).
Don't be shy!

Usage
-----

A minimal (and fictional!) slidge-powered "legacy module" looks like this:

```python
from cool_chat_lib import CoolClient
from slidge import BaseGateway, BaseSession
from slidge.contact import LegacyContact
from slidge.group import LegacyMUC
from slidge.db import GatewayUser


class Gateway(BaseGateway):
    # Various aspects of the gateway component are configured as class
    # attributes of the concrete Gateway class
    COMPONENT_NAME = "Gateway to the super duper chat network"


class Session(BaseSession):
    def __init__(self, user: GatewayUser):
        super().__init__(user)
        self.legacy_client = CoolClient(
            login=user.legacy_module_data["username"],
            password=user.legacy_module_data["password"],
        )

    async def on_text(self, chat: LegacyContact | LegacyMUC, text: str, **kwargs):
        """
        Triggered when the slidge user sends an XMPP message through the gateway
        """
        self.legacy_client.send_message(text=text, destination=chat.legacy_id)
```

There's more in [the tutorial](https://slidge.im/docs/slidge/main/dev/tutorial.html)!

Installation
------------

⚠️  Slidge is a lib for gateway developers, if you are an XMPP server admin and
want to install gateways on your server, you are looking for a
[slidge-based gateway](https://codeberg.org/explore/repos?q=slidge&topic=1).
or the
[slidge-debian](https://git.sr.ht/~nicoco/slidge-debian)
bundle.

[![pypi version](https://badge.fury.io/py/slidge.svg)](https://pypi.org/project/slidge/)

[![Packaging status](https://repology.org/badge/vertical-allrepos/slidge.svg)](https://repology.org/project/slidge/versions)

Slidge is available on
[codeberg](https://codeberg.org/slidge/slidge/releases)
and [pypi](https://pypi.org/project/slidge/).
Refer to [the docs](https://slidge.im/docs/slidge/main/admin/install.html) for details.

About privacy
-------------

Slidge (and most if not all XMPP gateway that I know of) will break
end-to-end encryption, or more precisely one of the 'ends' become the
gateway itself. If privacy is a major concern for you, my advice would
be to:

-   use XMPP + OMEMO
-   self-host your gateways
-   have your gateways hosted by someone you know AFK and trust

Related projects
----------------

-   [Spectrum](https://www.spectrum.im/)
-   [telegabber](https://dev.narayana.im/narayana/telegabber)
-   [biboumi](https://biboumi.louiz.org/)
-   [Bifröst](https://github.com/matrix-org/matrix-bifrost)
-   [Mautrix](https://github.com/mautrix)
-   [matterbridge](https://github.com/42wim/matterbridge)

Thank you, [Trung](https://trung.fun/), for the slidge logo!

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "slidge",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": null,
    "keywords": "xmpp, gateway, bridge, instant messaging",
    "author": null,
    "author_email": "Nicolas Cedilnik <nicoco@nicoco.fr>",
    "download_url": "https://files.pythonhosted.org/packages/ec/42/e64c6d648d4307aa0f5e08d45e981bff329a473ac2508b66064eecd14a9b/slidge-0.3.0.tar.gz",
    "platform": null,
    "description": "![Slidge logo](https://codeberg.org/slidge/slidge/raw/branch/main/dev/assets/slidge-color-small.png)\n\n[![woodpecker CI status](https://ci.codeberg.org/api/badges/14027/status.svg)](https://ci.codeberg.org/repos/14027)\n[![coverage](https://slidge.im/coverage/slidge/main/coverage.svg)](https://slidge.im/coverage/slidge/main)\n[![Chat](https://conference.nicoco.fr:5281/muc_badge/slidge@conference.nicoco.fr)](https://conference.nicoco.fr:5281/muc_log/slidge/)\n\nSlidge is an XMPP (puppeteer) gateway library in python.\nIt makes\n[writing gateways to other chat networks](https://slidge.im/docs/slidge/main/dev/tutorial.html)\n(*legacy modules*) as frictionless as possible.\nIt supports fancy IM features, such as\n[(emoji) reactions](https://xmpp.org/extensions/xep-0444.html),\n[replies](https://xmpp.org/extensions/xep-0461.html), and\n[retractions](https://xmpp.org/extensions/xep-0424.html).\nThe full list of supported XEPs in on [xmpp.org](https://xmpp.org/software/slidge/).\n\nStatus\n------\n\nSlidge is **beta**-grade software. It support groups and 1:1 chats.\nTry slidge and give us some\nfeedback, through the [MUC](xmpp:slidge@conference.nicoco.fr?join) or the\n[issue tracker](https://codeberg.org/slidge/slidge/issues).\nDon't be shy!\n\nUsage\n-----\n\nA minimal (and fictional!) slidge-powered \"legacy module\" looks like this:\n\n```python\nfrom cool_chat_lib import CoolClient\nfrom slidge import BaseGateway, BaseSession\nfrom slidge.contact import LegacyContact\nfrom slidge.group import LegacyMUC\nfrom slidge.db import GatewayUser\n\n\nclass Gateway(BaseGateway):\n    # Various aspects of the gateway component are configured as class\n    # attributes of the concrete Gateway class\n    COMPONENT_NAME = \"Gateway to the super duper chat network\"\n\n\nclass Session(BaseSession):\n    def __init__(self, user: GatewayUser):\n        super().__init__(user)\n        self.legacy_client = CoolClient(\n            login=user.legacy_module_data[\"username\"],\n            password=user.legacy_module_data[\"password\"],\n        )\n\n    async def on_text(self, chat: LegacyContact | LegacyMUC, text: str, **kwargs):\n        \"\"\"\n        Triggered when the slidge user sends an XMPP message through the gateway\n        \"\"\"\n        self.legacy_client.send_message(text=text, destination=chat.legacy_id)\n```\n\nThere's more in [the tutorial](https://slidge.im/docs/slidge/main/dev/tutorial.html)!\n\nInstallation\n------------\n\n\u26a0\ufe0f  Slidge is a lib for gateway developers, if you are an XMPP server admin and\nwant to install gateways on your server, you are looking for a\n[slidge-based gateway](https://codeberg.org/explore/repos?q=slidge&topic=1).\nor the\n[slidge-debian](https://git.sr.ht/~nicoco/slidge-debian)\nbundle.\n\n[![pypi version](https://badge.fury.io/py/slidge.svg)](https://pypi.org/project/slidge/)\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/slidge.svg)](https://repology.org/project/slidge/versions)\n\nSlidge is available on\n[codeberg](https://codeberg.org/slidge/slidge/releases)\nand [pypi](https://pypi.org/project/slidge/).\nRefer to [the docs](https://slidge.im/docs/slidge/main/admin/install.html) for details.\n\nAbout privacy\n-------------\n\nSlidge (and most if not all XMPP gateway that I know of) will break\nend-to-end encryption, or more precisely one of the 'ends' become the\ngateway itself. If privacy is a major concern for you, my advice would\nbe to:\n\n-   use XMPP + OMEMO\n-   self-host your gateways\n-   have your gateways hosted by someone you know AFK and trust\n\nRelated projects\n----------------\n\n-   [Spectrum](https://www.spectrum.im/)\n-   [telegabber](https://dev.narayana.im/narayana/telegabber)\n-   [biboumi](https://biboumi.louiz.org/)\n-   [Bifr\u00f6st](https://github.com/matrix-org/matrix-bifrost)\n-   [Mautrix](https://github.com/mautrix)\n-   [matterbridge](https://github.com/42wim/matterbridge)\n\nThank you, [Trung](https://trung.fun/), for the slidge logo!\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "XMPP bridging framework",
    "version": "0.3.0",
    "project_urls": {
        "Chat room": "https://conference.nicoco.fr:5281/muc_log/slidge/",
        "Documentation": "https://slidge.im/docs/slidge/main",
        "Homepage": "https://codeberg.org/slidge/",
        "Issues": "https://codeberg.org/slidge/slidge/issues",
        "Repository": "https://codeberg.org/slidge/slidge/",
        "changelog": "https://codeberg.org/slidge/slidge/releases"
    },
    "split_keywords": [
        "xmpp",
        " gateway",
        " bridge",
        " instant messaging"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "593d8ed22124ee950c90bb9e545a1428a41836435a193863b6659a617dc610ae",
                "md5": "9d7ce7c081d949f676c5d8cc07cc745a",
                "sha256": "0fdc34b90ce4f49e6408d7ff62470c8dcd22f8f77da2228100538049aa281c9f"
            },
            "downloads": -1,
            "filename": "slidge-0.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9d7ce7c081d949f676c5d8cc07cc745a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11",
            "size": 183059,
            "upload_time": "2025-09-13T06:26:05",
            "upload_time_iso_8601": "2025-09-13T06:26:05.904627Z",
            "url": "https://files.pythonhosted.org/packages/59/3d/8ed22124ee950c90bb9e545a1428a41836435a193863b6659a617dc610ae/slidge-0.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ec42e64c6d648d4307aa0f5e08d45e981bff329a473ac2508b66064eecd14a9b",
                "md5": "dec4c1883a7c5896b468af2ba1f55004",
                "sha256": "164588920930a35240c3270f27157834dd9785856ae5b4b12f9e85325d414050"
            },
            "downloads": -1,
            "filename": "slidge-0.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "dec4c1883a7c5896b468af2ba1f55004",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 2468411,
            "upload_time": "2025-09-13T06:26:08",
            "upload_time_iso_8601": "2025-09-13T06:26:08.183173Z",
            "url": "https://files.pythonhosted.org/packages/ec/42/e64c6d648d4307aa0f5e08d45e981bff329a473ac2508b66064eecd14a9b/slidge-0.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-13 06:26:08",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": true,
    "codeberg_user": "slidge",
    "codeberg_project": "slidge",
    "lcname": "slidge"
}
        
Elapsed time: 1.28207s