from slixmpp.xmlstream import ElementBase class Action(ElementBase): """ A stanza class for XML content of the form: <action xmlns="slixmpp:custom:actions"> <method>X</method> <param>X</param> <status>X</status> </action> """ #: The `name` field refers to the basic XML tag name of the #: stanza. Here, the tag name will be 'action'. name = 'action' #: The namespace of the main XML tag. namespace = 'slixmpp:custom:actions' #: The `plugin_attrib` value is the name that can be used #: with a parent stanza to access this stanza. For example #: from an Iq stanza object, accessing: #: #: iq['action'] #: #: would reference an Action object, and will even create #: an Action object and append it to the Iq stanza if #: one doesn't already exist. plugin_attrib = 'action' #: Stanza objects expose dictionary-like interfaces for #: accessing and manipulating substanzas and other values. #: The set of interfaces defined here are the names of #: these dictionary-like interfaces provided by this stanza #: type. For example, an Action stanza object can use: #: #: action['method'] = 'foo' #: print(action['param']) #: del action['status'] #: #: to set, get, or remove its values. interfaces = {'method', 'param', 'status'} #: By default, values in the `interfaces` set are mapped to #: attribute values. This can be changed such that an interface #: maps to a subelement's text value by adding interfaces to #: the sub_interfaces set. For example, here all interfaces #: are marked as sub_interfaces, and so the XML produced will #: look like: #: #: <action xmlns="slixmpp:custom:actions"> #: <method>foo</method> #: </action> sub_interfaces = interfaces