Change namespace inclusion in strings.

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.
This commit is contained in:
Lance Stout 2011-03-18 17:34:07 -04:00
parent 450c313340
commit dbf6780345

View file

@ -991,11 +991,16 @@ class ElementBase(object):
"""
return self.__class__(xml=copy.deepcopy(self.xml), parent=self.parent)
def __str__(self):
def __str__(self, top_level_ns=True):
"""
Return a string serialization of the underlying XML object.
Arguments:
top_level_ns -- Display the top-most namespace.
Defaults to True.
"""
return tostring(self.xml, xmlns='', stanza_ns=self.namespace)
stanza_ns = '' if top_level_ns else self.namespace
return tostring(self.xml, xmlns='', stanza_ns=stanza_ns)
def __repr__(self):
"""
@ -1196,10 +1201,17 @@ class StanzaBase(ElementBase):
return self.__class__(xml=copy.deepcopy(self.xml),
stream=self.stream)
def __str__(self):
"""Serialize the stanza's XML to a string."""
def __str__(self, top_level_ns=False):
"""
Serialize the stanza's XML to a string.
Arguments:
top_level_ns -- Display the top-most namespace.
Defaults to False.
"""
stanza_ns = '' if top_level_ns else self.namespace
return tostring(self.xml, xmlns='',
stanza_ns=self.namespace,
stanza_ns=stanza_ns,
stream=self.stream)