summaryrefslogtreecommitdiff
path: root/sleekxmpp/xmlstream/stanzabase.py
AgeCommit message (Collapse)Author
2011-05-27Don't use the send queue for stream initialization.Lance Stout
Use the parameter now=True to skip the queue when sending Iq stanzas, or using xmpp.send().
2011-03-24Allow a stanza plugin to override a parent's interfaces.Lance Stout
Each interface, say foo, may be overridden in three ways: set_foo get_foo del_foo To declare an override in a plugin, add the class field overrides as so: overrides = ['set_foo', 'del_foo'] Each override must have a matching set_foo(), etc method for implementing the new behaviour. To enable the overrides for a particular parent stanza, pass the option overrides=True to register_stanza_plugin. register_stanza_plugin(Stanza, Plugin, overrides=True) Example code: class Test(ElementBase): name = 'test' namespace = 'testing' interfaces = set(('foo', 'bar')) sub_interfaces = set(('bar',)) class TestOverride(ElementBase): name = 'test-override' namespace = 'testing' plugin_attrib = 'override' interfaces = set(('foo',)) overrides = ['set_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, value): print("overrides!") self.parent()._set_attr('foo', 'override-%s' % value) register_stanza_plugin(Test, TestOverride, overrides=True) Example usage: >>> t = TestStanza() >>> t['foo'] = 'bar' >>> t['foo'] 'override-bar'
2011-03-22Updated XEP-0128 plugin to work with the new XEP-0030 plugin.Lance Stout
Required fixing a few bugs in StanzaBase related to iterable substanzas.
2011-03-18Change namespace inclusion in strings.Lance Stout
ElementBase instances will display the top-most namespace by default. StanzaBase instances will NOT display the top-most namespace by default. May pass True or False to __str__ to override.
2011-02-14Remap old method names in a better way.Lance Stout
This should prevent some reference cycles that will cause garbage collection issues.
2011-02-11XMPPError exceptions can keep a stanza's contents.Lance Stout
This allows exceptions to include the original content of a stanza in the error response by including the parameter clear=False when raising the exception.
2011-01-27Make stanza.plugins an OrderedDict.Lance Stout
This allows you to determine the order in which substanzas were added in the original XML.
2011-01-26Cleanup for stanzabase.Lance Stout
Use stanza.values instead of _get/set_stanza_values where used. ElementBase stanzas can now use .tag May use class method tag_name() for stanza classes. ElementBase now has .clear() method.
2011-01-26Upgraded how subitem works.Lance Stout
May now use register_stanza_plugin(Foo, Bar, iterable=True) to add to the set of stanza classes used for iterable substanzas. It is no longer necessary to manually specify the contents of subitem if the new method is used.
2011-01-19Make extending stanza objects nicer.Lance Stout
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" />'
2010-12-07Add support for using xml:lang values.Lance Stout
Support is only for adding literal XML content to stanzas. Full support for things like multiple message bodies with different xml:lang values is still in the works.
2010-11-06Logging no longer uses root logger.Lance Stout
Each module should now log into its own logger.
2010-10-17Underscore names by default.Lance Stout
Stanza objects now accept the use of underscored names. The CamelCase versions are still available for backwards compatibility, but are discouraged. The property stanza.values now maps to the old getStanzaValues and setStanzaValues, in addition to _set_stanza_values and _get_stanza_values.
2010-10-07Corrected test errors.Lance Stout
There was a bug in the XML compare method.
2010-10-06More PEP8 compliance cleanups.Lance Stout
Cleaned up the atom entry stanza.
2010-09-01A few cleanups to make things simpler.Lance Stout
2010-08-30Fixed ElementBase.match to match using sub_interface elements.Lance Stout
2010-08-30Fixed typos in ElementBase._fix_nsLance Stout
2010-08-30Updated ElementBase.match to respect namespaces with slashes.Lance Stout
Required adding option to _fix_ns to not propagate namespaces to child elements.
2010-08-27Added unit tests for StanzaBase.Lance Stout
2010-08-27Updated StanzaBase with documentation.Lance Stout
2010-08-26Added comments to _fix_ns to clarify the cleaning procedure.Lance Stout
2010-08-26Fixed ElementBase._fix_ns and related methods to respect namespaces which ↵Lance Stout
contain forward slashes.
2010-08-26Fixed indentation in StanzaBase.Lance Stout
2010-08-26Clarify ElementBase documentation.Lance Stout
2010-08-26Fixed line lengths in ElementBase to comply with PEP8.Lance Stout
2010-08-26Finished the update of ElementBase with docs and unit tests.Lance Stout
Corrected bugs in equality comparisons between stanzas.
2010-08-26Updated the remaining ElementBase methods.Lance Stout
Remaining ElementBase todos: Write the class documentation for ElementBase. Write unit tests for the __magic__ methods.
2010-08-25Fixed ElementBase.match to respect namespaces.Lance Stout
2010-08-25Updated ElementBase.match and added unit tests.Lance Stout
2010-08-25Updated ElementBase._delSub and added unit tests.Lance Stout
_delSub can now accept a path and will optionally remove any empty parent elements after deleting the target elements.
2010-08-24Fixed indenting issue.Lance Stout
2010-08-24Updated ElementBase._setSubText and added unit tests.Lance Stout
_setSubText can now handle elements specified by an XPath expression, and will build up the element tree as needed, reusing an existing elements in the path.
2010-08-24Updated ElementBase._getSubText and added unit tests.Lance Stout
Also added ElementBase._fix_ns() to apply the stanza namespace to elements that don't have a namespace.
2010-08-21added form compatibility with old api, stanzas now bool() to True on 2.x, ↵fritzy
jid attributes will return '' if not set
2010-08-19Updated ElementBase methods _getAttr, _setAttr, and _delAttr with docs and ↵Lance Stout
tests.
2010-08-19Small cleanup in ElementBase.__setitem__Lance Stout
2010-08-19Updated ElementBase.__delitem__ and added unit tests.Lance Stout
2010-08-19Updated ElementBase.__setitem__ and added unit tests.Lance Stout
2010-08-13Updated ElementBase.__getitem__ with docs and unit tests.Lance Stout
2010-08-13Updated getStanzaValues and setStanzaValues with docs and unit tests.Lance Stout
2010-08-13Updated ElementBase.enable and ElementBase.initPluginLance Stout
2010-08-13Updated ElementBase.setup, and added unit tests.Lance Stout
2010-08-13Updated ElementBase.__init__Lance Stout
2010-08-13Adjust first level indenting in ElementBase to prepare for cleanup.Lance Stout
2010-08-13Updated registerStanzaPlugin and the XML test type.Lance Stout
2010-08-12Cleaned stanzabase imports.Lance Stout
2010-08-05Replaced the ToString class with a tostring function.Lance Stout
The sleekxmpp.xmlstream.tostring and sleekxmpp.xmlstream.tostring26 packages have been merged to sleekxmpp.xmlstream.tostring. The __init__.py file will import the appropriate tostring function depending on the Python version. The setup.py file has been updated with the package changes. ElementBase is now a direct descendent of object and does not subclass ToString. Stanza objects now return their XML contents for __repr__.
2010-07-30Added optional default value to _getAttr.Lance Stout
2010-07-29Modified ElementBase _getSubText, _setSubText, and _delSubText toLance Stout
use the namespace in a tag name if one is given and to use self.namespace otherwise.