Issue #13782: streamline argument type-checking in ET.Element

append, extend and insert now consistently type-check their argument in both
the C and Python implementations, and raise TypeError for non-Element
argument.

Added tests
This commit is contained in:
Eli Bendersky 2012-03-23 14:24:20 +02:00
parent 42243c4dca
commit 396e8fcf36
4 changed files with 33 additions and 12 deletions

View file

@ -298,7 +298,7 @@ class Element:
# @param element The element to add.
def append(self, element):
# assert iselement(element)
self._assert_is_element(element)
self._children.append(element)
##
@ -308,8 +308,8 @@ class Element:
# @since 1.3
def extend(self, elements):
# for element in elements:
# assert iselement(element)
for element in elements:
self._assert_is_element(element)
self._children.extend(elements)
##
@ -318,9 +318,13 @@ class Element:
# @param index Where to insert the new subelement.
def insert(self, index, element):
# assert iselement(element)
self._assert_is_element(element)
self._children.insert(index, element)
def _assert_is_element(self, e):
if not isinstance(e, Element):
raise TypeError('expected an Element, not %s' % type(e).__name__)
##
# Removes a matching subelement. Unlike the <b>find</b> methods,
# this method compares elements based on identity, not on tag