Skip to main content

Slixmpp is an elegant Python library for XMPP (aka Jabber, Google Talk, etc).

Project description

Slixmpp is an MIT licensed XMPP library for Python 3.5+. 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 can make use of cython to improve performance on critical modules. To do that, cython3 is necessary along with libidn headers. Otherwise, no compilation is needed. Building is done by running setup.py:

python3 setup.py build_ext --inplace

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

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 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()
    xmpp.process(forever=True)

Slixmpp Credits

Maintainers:
Contributors:

Credits (SleekXMPP)

Main Author: Nathan Fritz

fritzy@netflint.net, @fritzy

Nathan is also the author of XMPPHP and Seesmic-AS3-XMPP, and a former member of the XMPP Council.

Co-Author: Lance Stout

lancestout@gmail.com, @lancestout

Contributors:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

slixmpp-1.4.0.tar.gz (862.8 kB view details)

Uploaded Source

Built Distribution

slixmpp-1.4.0-py3-none-any.whl (427.6 kB view details)

Uploaded Python 3

File details

Details for the file slixmpp-1.4.0.tar.gz.

File metadata

  • Download URL: slixmpp-1.4.0.tar.gz
  • Upload date:
  • Size: 862.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.7.0

File hashes

Hashes for slixmpp-1.4.0.tar.gz
Algorithm Hash digest
SHA256 c24a3effb2434e62c0f9e04d25ea889dc42aa2b60930782159724eda49efb894
MD5 6ab1df04b0c4dd3177545f4e07edb386
BLAKE2b-256 0a5076a06d929668252244a1cef515c48c21403a72988c20cab2f74ef0b4ecbd

See more details on using hashes here.

File details

Details for the file slixmpp-1.4.0-py3-none-any.whl.

File metadata

  • Download URL: slixmpp-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 427.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.7.0

File hashes

Hashes for slixmpp-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0e813244b3f101179b5990321c8ff09740662d1259e6d90164defe6b35f8c35f
MD5 0aa138df988770c9d285add6bd3236ed
BLAKE2b-256 cd9a16f35a4f180e276a4ccd48cd539d8a477f3f388e165ea86e0f7a1eb4b581

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page