I develop stuff and have opinions on things -
About me/Contact


slixmpp v1.6

slixmpp is an asyncio-based python (3.7+) library for XMPP, started from the SleekXMPP sources.

New plugins:

  • XEP-0353: Jingle Message Initiation
  • XEP-0359: Unique and stable stanza IDs (this was already partially implemented)
  • XEP-0369: MIX-Core
  • XEP-0377: Spam reporting
  • XEP-0403: MIX-Presence
  • XEP-0404: MIX-Anon
  • XEP-0405: MIX-PAM
  • XEP-0421: Anonymous unique occupant identifiers for MUCs (was already present as "protoxep_occupantid" in a different version)
  • XEP-0422: Message Fastening
  • XEP-0424: Message Retraction
  • XEP-0425: Message Moderation
  • XEP-0428: Fallback Indication
  • XEP-0437: Room Activity Indicators
  • XEP-0439: Quick response
  • XEP-0444: Message Reactions (Was already present as "protoxep_reactions" in a different version)

Many of those extensions are experimental and the specification is subject to change, which is to keep in mind when using them. Especially the MIX ones.

Note: A new dependency, "emoji" is required for XEP-0444, and has been added to extras_require, where "aiohttp" (only required for XEP-0363) has been moved too.

Fixes & Improvements:

  • XEP-0045:
    • Split file into its own package, better structure, cleanup, stanza elements… (pep)
    • rewrote broken function as coroutines, more elements (mathieui)
  • XEP-0047: Fix the max sequence number (mathieui)
  • XEP-0115: Add missing "from" attribute to disco for components (aearil)
  • XEP-0333: add missing feature to session (mathieui)
  • XEP-0352: enable the feature only on clientxmpp (Link Mauve)
  • XEP-0363: added missing callback on upload request (cnngimenez)
  • First integration tests (mathieui)
  • Cancel filters on disconnect (ehendrix23)
  • English and Polish custom plugin tutorials (Hoacyn)
  • Removal of unused things due to python3.7 (Link Mauve)
  • Doc improvements with the addition of the plugins (mathieui)

Deprecation notice:

When moving from sleekxmpp to slixmpp, many functions were kept in place but instead returning a future (returned with iq.send()). Going forward, many of those will instead be coroutines. This is necessary in order to provide better return values (instead of leaving it up to the library user to fetch the elements manually from stanzas. Most of the newly added XEPs work this way, and the previously broken functions from XEP-0045 are now also coroutines.

It means calling for example self.xmpp.plugin['xep_0045'].set_role() without awaiting on the result has no effect.

tl;dr: await coroutines

Thanks to all maintainers and contributors for this release!

If you have remarks or suggestions concerning this article, please by all means contact me.