Modern python XMPP library using asyncio.
![]() A stanza object may add is_extension = True to its class definition to provide a single new interface to a parent stanza. For example: import sleekxmpp from sleekxmpp import Iq from sleekxmpp.xmlstream import ElementBase, register_stanza_plugin, ET class Foo(ElementBase): """ Test adding just an attribute to a parent stanza. Adding subelements works as expected. """ is_extension = True interfaces = set(('foo',)) plugin_attrib = 'foo' def setup(self, xml): # Don't include an XML element in the parent stanza # since we're adding just an attribute. # If adding a regular subelement, no need to do this. self.xml = ET.Element('') def set_foo(self, val): self.parent()._set_attr('foo', val) def get_foo(self): return self.parent()._get_attr('foo') def del_foo(self): self.parent()._del_attr('foo') register_stanza_plugin(Iq, Foo) i1 = Iq() i2 = Iq(xml=ET.fromstring("<iq xmlns='jabber:client' foo='bar' />")) >>> i1['foo'] = '3' >>> i1 '3' >>> i1 '<iq id="0" foo="3" />' >>> i2 '<iq id="0" foo="bar" />' >>> i2['foo'] 'bar' >>> del i2['foo'] >>> i2 '<iq id="0" />' |
||
---|---|---|
conn_tests | ||
examples | ||
sleekxmpp | ||
tests | ||
.gitignore | ||
ez_setup.py | ||
INSTALL | ||
LICENSE | ||
README | ||
setup.py | ||
testall.py | ||
todo1.0 |
SleekXMPP is an XMPP library written for Python 3.1+ (with 2.6 compatibility). Hosted at http://wiki.github.com/fritzy/SleekXMPP/ Featured in examples in XMPP: The Definitive Guide by Kevin Smith, Remko Tronçon, and Peter Saint-Andre If you're coming here from The Definitive Guide, please read http://wiki.github.com/fritzy/SleekXMPP/xmpp-the-definitive-guide Requirements: We try to keep requirements to a minimum, but we suggest that you install http://dnspython.org although it isn't strictly required. If you do not install this library, you may need to specify the server/port for services that use SRV records (like GTalk). "sudo pip install dnspython" on a *nix system with pip installed. SleekXMPP has several design goals/philosophies: - Low number of dependencies. - Every XEP as a plugin. - Rewarding to work with. The goals for 1.0 include (and we're getting close): - Nearly Full test coverage of stanzas. - Wide range of functional tests. - Stanza objects for all interaction with the stream - Documentation on using and extending SleekXMPP. - Complete documentation on all implemented stanza objects - Documentation on all examples used in XMPP: The Definitive Guide 1.1 will include: - More functional and unit tests - PEP-8 compliance - XEP-225 support Since 0.2, here's the Changelog: - MANY bugfixes - Re-implementation of handlers/threading to greatly simplify and remove bugs (no more spawning threads in handlers) - Stanza objects for jabber:client and all implemented XEPs - Raising XMPPError for jabber:client and extended errors in handlers - Robust error handling and better insurance of iq responses - Stanza objects have made life a lot easier! - Massive audit/cleanup. Credits ---------------- Main Author: Nathan Fritz fritz@netflint.net Contributors: Kevin Smith & Lance Stout Patches: Remko Tronçon Feel free to add fritzy@netflint.net to your roster for direct support and comments. Join sleekxmpp-discussion@googlegroups.com / http://groups.google.com/group/sleekxmpp-discussion for email discussion. Join sleek@conference.jabber.org for groupchat discussion.