| --- 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] |
| |
| |
| # |