--- a/docutils/writers/odf_odt/__init__.py +++ b/docutils/writers/odf_odt/__init__.py @@ -88,16 +88,20 @@ # that support for the ability to get the parent of an element. # if WhichElementTree == 'elementtree': - class _ElementInterfaceWrapper(etree._ElementInterface): + import weakref + _parents = weakref.WeakKeyDictionary() + if isinstance(etree.Element, type): + _ElementInterface = etree.Element + else: + _ElementInterface = etree._ElementInterface + class _ElementInterfaceWrapper(_ElementInterface): def __init__(self, tag, attrib=None): - etree._ElementInterface.__init__(self, tag, attrib) - if attrib is None: - attrib = {} - self.parent = None + _ElementInterface.__init__(self, tag, attrib) + _parents[self] = None def setparent(self, parent): - self.parent = parent + _parents[self] = parent def getparent(self): - return self.parent + return _parents[self] #