Name | slixmpp JSON |
Version |
1.9.0
JSON |
| download |
home_page | None |
Summary | Slixmpp is an elegant Python library for XMPP (aka Jabber). |
upload_time | 2025-02-27 22:41:54 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.9 |
license | None |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
Slixmpp
#########
Slixmpp is an MIT licensed XMPP library for Python 3.7+. It is a fork of
SleekXMPP.
Slixmpp's goals is to only rewrite the core of the library (the low level
socket handling, the timers, the events dispatching) in order to remove all
threads.
Building
--------
Slixmpp uses rust to improve performance on critical modules.
Binaries may already be available for your platform in the form of
`wheels <https://peps.python.org/pep-0491/>`_ provided on PyPI or packages
for your linux distribution. If that is not the case,
`cargo <https://doc.rust-lang.org/cargo>`_
must be available in your path to build the
`extension module <https://docs.python.org/3/extending/extending.html>`_.
Documentation and Testing
-------------------------
Documentation can be found both inline in the code, and as a Sphinx project in ``/docs``.
To generate the Sphinx documentation, follow the commands below. The HTML output will
be in ``docs/_build/html``::
cd docs
make html
open _build/html/index.html
To run the test suite for Slixmpp::
python run_tests.py
Integration tests require the following environment variables to be set:::
$CI_ACCOUNT1
$CI_ACCOUNT1_PASSWORD
$CI_ACCOUNT2
$CI_ACCOUNT2_PASSWORD
$CI_MUC_SERVER
where the account variables are JIDs of valid, existing accounts, and
the passwords are the account passwords. The MUC server must allow room
creation from those JIDs.
To run the integration test suite for Slixmpp::
python run_integration_tests.py
The Slixmpp Boilerplate
-------------------------
Projects using Slixmpp tend to follow a basic pattern for setting up client/component
connections and configuration. Here is the gist of the boilerplate needed for a Slixmpp
based project. See the documentation or examples directory for more detailed archetypes for
Slixmpp projects::
import asyncio
import logging
from slixmpp import ClientXMPP
from slixmpp.exceptions import IqError, IqTimeout
class EchoBot(ClientXMPP):
def __init__(self, jid, password):
ClientXMPP.__init__(self, jid, password)
self.add_event_handler("session_start", self.session_start)
self.add_event_handler("message", self.message)
# If you wanted more functionality, here's how to register plugins:
# self.register_plugin('xep_0030') # Service Discovery
# self.register_plugin('xep_0199') # XMPP Ping
# Here's how to access plugins once you've registered them:
# self['xep_0030'].add_feature('echo_demo')
# If you are working with an OpenFire server, you will
# need to use a different SSL version:
# import ssl
# self.ssl_version = ssl.PROTOCOL_SSLv3
def session_start(self, event):
self.send_presence()
self.get_roster()
# Most get_*/set_* methods from plugins use Iq stanzas, which
# can generate IqError and IqTimeout exceptions
#
# try:
# self.get_roster()
# except IqError as err:
# logging.error('There was an error getting the roster')
# logging.error(err.iq['error']['condition'])
# self.disconnect()
# except IqTimeout:
# logging.error('Server is taking too long to respond')
# self.disconnect()
def message(self, msg):
if msg['type'] in ('chat', 'normal'):
msg.reply("Thanks for sending\n%(body)s" % msg).send()
if __name__ == '__main__':
# Ideally use optparse or argparse to get JID,
# password, and log level.
logging.basicConfig(level=logging.DEBUG,
format='%(levelname)-8s %(message)s')
xmpp = EchoBot('somejid@example.com', 'use_getpass')
xmpp.connect()
asyncio.get_event_loop().run_forever()
Slixmpp Credits
---------------
**Maintainers:**
- Florent Le Coz (`louiz@louiz.org <xmpp:louiz@louiz.org?message>`_),
- Mathieu Pasquet (`mathieui@mathieui.net <xmpp:mathieui@mathieui.net?message>`_),
**Contributors:**
- Emmanuel Gil Peyrot (`Link mauve <xmpp:linkmauve@linkmauve.fr?message>`_)
- Sam Whited (`Sam Whited <mailto:sam@samwhited.com>`_)
- Dan Sully (`Dan Sully <mailto:daniel@electricalrain.com>`_)
- Gasper Zejn (`Gasper Zejn <mailto:zejn@kiberpipa.org>`_)
- Krzysztof Kotlenga (`Krzysztof Kotlenga <mailto:pocek@users.sf.net>`_)
- Tsukasa Hiiragi (`Tsukasa Hiiragi <mailto:bakalolka@gmail.com>`_)
- Maxime Buquet (`pep <xmpp:pep@bouah.net?message>`_)
Credits (SleekXMPP)
-------------------
**Main Author:** Nathan Fritz
`fritzy@netflint.net <xmpp:fritzy@netflint.net?message>`_,
`@fritzy <http://twitter.com/fritzy>`_
Nathan is also the author of XMPPHP and `Seesmic-AS3-XMPP
<http://code.google.com/p/seesmic-as3-xmpp/>`_, and a former member of
the XMPP Council.
**Co-Author:** Lance Stout
`lancestout@gmail.com <xmpp:lancestout@gmail.com?message>`_,
`@lancestout <http://twitter.com/lancestout>`_
**Contributors:**
- Brian Beggs (`macdiesel <http://github.com/macdiesel>`_)
- Dann Martens (`dannmartens <http://github.com/dannmartens>`_)
- Florent Le Coz (`louiz <http://github.com/louiz>`_)
- Kevin Smith (`Kev <http://github.com/Kev>`_, http://kismith.co.uk)
- Remko Tronçon (`remko <http://github.com/remko>`_, http://el-tramo.be)
- Te-jé Rogers (`te-je <http://github.com/te-je>`_)
- Thom Nichols (`tomstrummer <http://github.com/tomstrummer>`_)
Raw data
{
"_id": null,
"home_page": null,
"name": "slixmpp",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": null,
"author": null,
"author_email": "Florent Le Coz <louiz@louiz.org>",
"download_url": "https://files.pythonhosted.org/packages/53/81/43c9f0a4b78f428c19344a35d5b1ff68b72c5c4a093c0b8cc67a48dd9730/slixmpp-1.9.0.tar.gz",
"platform": null,
"description": "Slixmpp\n#########\n\nSlixmpp is an MIT licensed XMPP library for Python 3.7+. It is a fork of\nSleekXMPP.\n\nSlixmpp's goals is to only rewrite the core of the library (the low level\nsocket handling, the timers, the events dispatching) in order to remove all\nthreads.\n\nBuilding\n--------\n\nSlixmpp uses rust to improve performance on critical modules.\nBinaries may already be available for your platform in the form of\n`wheels <https://peps.python.org/pep-0491/>`_ provided on PyPI or packages\nfor your linux distribution. If that is not the case,\n`cargo <https://doc.rust-lang.org/cargo>`_\nmust be available in your path to build the\n`extension module <https://docs.python.org/3/extending/extending.html>`_.\n\nDocumentation and Testing\n-------------------------\nDocumentation can be found both inline in the code, and as a Sphinx project in ``/docs``.\nTo generate the Sphinx documentation, follow the commands below. The HTML output will\nbe in ``docs/_build/html``::\n\n cd docs\n make html\n open _build/html/index.html\n\nTo run the test suite for Slixmpp::\n\n python run_tests.py\n\nIntegration tests require the following environment variables to be set:::\n\n $CI_ACCOUNT1\n $CI_ACCOUNT1_PASSWORD\n $CI_ACCOUNT2\n $CI_ACCOUNT2_PASSWORD\n $CI_MUC_SERVER\n\nwhere the account variables are JIDs of valid, existing accounts, and\nthe passwords are the account passwords. The MUC server must allow room\ncreation from those JIDs.\n\nTo run the integration test suite for Slixmpp::\n\n python run_integration_tests.py\n\nThe Slixmpp Boilerplate\n-------------------------\nProjects using Slixmpp tend to follow a basic pattern for setting up client/component\nconnections and configuration. Here is the gist of the boilerplate needed for a Slixmpp\nbased project. See the documentation or examples directory for more detailed archetypes for\nSlixmpp projects::\n\n import asyncio\n import logging\n\n from slixmpp import ClientXMPP\n from slixmpp.exceptions import IqError, IqTimeout\n\n\n class EchoBot(ClientXMPP):\n\n def __init__(self, jid, password):\n ClientXMPP.__init__(self, jid, password)\n\n self.add_event_handler(\"session_start\", self.session_start)\n self.add_event_handler(\"message\", self.message)\n\n # If you wanted more functionality, here's how to register plugins:\n # self.register_plugin('xep_0030') # Service Discovery\n # self.register_plugin('xep_0199') # XMPP Ping\n\n # Here's how to access plugins once you've registered them:\n # self['xep_0030'].add_feature('echo_demo')\n\n # If you are working with an OpenFire server, you will\n # need to use a different SSL version:\n # import ssl\n # self.ssl_version = ssl.PROTOCOL_SSLv3\n\n def session_start(self, event):\n self.send_presence()\n self.get_roster()\n\n # Most get_*/set_* methods from plugins use Iq stanzas, which\n # can generate IqError and IqTimeout exceptions\n #\n # try:\n # self.get_roster()\n # except IqError as err:\n # logging.error('There was an error getting the roster')\n # logging.error(err.iq['error']['condition'])\n # self.disconnect()\n # except IqTimeout:\n # logging.error('Server is taking too long to respond')\n # self.disconnect()\n\n def message(self, msg):\n if msg['type'] in ('chat', 'normal'):\n msg.reply(\"Thanks for sending\\n%(body)s\" % msg).send()\n\n\n if __name__ == '__main__':\n # Ideally use optparse or argparse to get JID,\n # password, and log level.\n\n logging.basicConfig(level=logging.DEBUG,\n format='%(levelname)-8s %(message)s')\n\n xmpp = EchoBot('somejid@example.com', 'use_getpass')\n xmpp.connect()\n asyncio.get_event_loop().run_forever()\n\n\nSlixmpp Credits\n---------------\n\n**Maintainers:**\n - Florent Le Coz (`louiz@louiz.org <xmpp:louiz@louiz.org?message>`_),\n - Mathieu Pasquet (`mathieui@mathieui.net <xmpp:mathieui@mathieui.net?message>`_),\n\n**Contributors:**\n - Emmanuel Gil Peyrot (`Link mauve <xmpp:linkmauve@linkmauve.fr?message>`_)\n - Sam Whited (`Sam Whited <mailto:sam@samwhited.com>`_)\n - Dan Sully (`Dan Sully <mailto:daniel@electricalrain.com>`_)\n - Gasper Zejn (`Gasper Zejn <mailto:zejn@kiberpipa.org>`_)\n - Krzysztof Kotlenga (`Krzysztof Kotlenga <mailto:pocek@users.sf.net>`_)\n - Tsukasa Hiiragi (`Tsukasa Hiiragi <mailto:bakalolka@gmail.com>`_)\n - Maxime Buquet (`pep <xmpp:pep@bouah.net?message>`_)\n\nCredits (SleekXMPP)\n-------------------\n\n**Main Author:** Nathan Fritz\n `fritzy@netflint.net <xmpp:fritzy@netflint.net?message>`_,\n `@fritzy <http://twitter.com/fritzy>`_\n\n Nathan is also the author of XMPPHP and `Seesmic-AS3-XMPP\n <http://code.google.com/p/seesmic-as3-xmpp/>`_, and a former member of\n the XMPP Council.\n\n**Co-Author:** Lance Stout\n `lancestout@gmail.com <xmpp:lancestout@gmail.com?message>`_,\n `@lancestout <http://twitter.com/lancestout>`_\n\n**Contributors:**\n - Brian Beggs (`macdiesel <http://github.com/macdiesel>`_)\n - Dann Martens (`dannmartens <http://github.com/dannmartens>`_)\n - Florent Le Coz (`louiz <http://github.com/louiz>`_)\n - Kevin Smith (`Kev <http://github.com/Kev>`_, http://kismith.co.uk)\n - Remko Tron\u00e7on (`remko <http://github.com/remko>`_, http://el-tramo.be)\n - Te-j\u00e9 Rogers (`te-je <http://github.com/te-je>`_)\n - Thom Nichols (`tomstrummer <http://github.com/tomstrummer>`_)\n\n",
"bugtrack_url": null,
"license": null,
"summary": "Slixmpp is an elegant Python library for XMPP (aka Jabber).",
"version": "1.9.0",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "538143c9f0a4b78f428c19344a35d5b1ff68b72c5c4a093c0b8cc67a48dd9730",
"md5": "ce6995ff3817a475fff1d8024707c567",
"sha256": "a89dfbb9b07a5eb16fadae71e56205a0e52a6133941d78fe514d046c58ac1b0a"
},
"downloads": -1,
"filename": "slixmpp-1.9.0.tar.gz",
"has_sig": false,
"md5_digest": "ce6995ff3817a475fff1d8024707c567",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 709614,
"upload_time": "2025-02-27T22:41:54",
"upload_time_iso_8601": "2025-02-27T22:41:54.122042Z",
"url": "https://files.pythonhosted.org/packages/53/81/43c9f0a4b78f428c19344a35d5b1ff68b72c5c4a093c0b8cc67a48dd9730/slixmpp-1.9.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-27 22:41:54",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "slixmpp"
}