summaryrefslogtreecommitdiff
path: root/docs/differences.rst
blob: e6e26d2cc7b9ef6235075ea2208ea7c73c53ec43 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
.. _differences:

Differences from SleekXMPP
==========================

**Python 3.4+ only**
    slixmpp will only work on python 3.4 and above.

**Stanza copies**
    The same stanza object is given through all the handlers; a handler that
    edits the stanza object should make its own copy.

**Replies**
    Because stanzas are not copied anymore,
    :meth:`Stanza.reply() <.StanzaBase.reply>` calls
    (for :class:`IQs <.Iq>`, :class:`Messages <.Message>`, etc)
    now return a new object instead of editing the stanza object
    in-place.

**Block and threaded arguments**
    All the functions that had a ``threaded=`` or ``block=`` argument
    do not have it anymore. Also, :meth:`.Iq.send` **does not block
    anymore**.

**Coroutine facilities**
    **See** :ref:`using_asyncio`

    If an event handler is a coroutine, it will be called asynchronously
    in the event loop instead of inside the event caller.

    A CoroutineCallback class has been added to create coroutine stream
    handlers, which will be also handled in the event loop.

    The :class:`~.slixmpp.stanza.Iq` object’s :meth:`~.slixmpp.stanza.Iq.send`
    method now takes a *coroutine* parameter which, if set to ``True``,
    will return a coroutine which will (asyncio-)block until the reply
    is received.

    Many plugins (WIP) calls which retrieve information also accept this
    ``coroutine`` parameter.

**Architectural differences**
    slixmpp does not have an event queue anymore, and instead processes
    handlers directly after receiving the XML stanza.

.. note::
    If you find something that doesn’t work but should, please report it.