mirror of
https://github.com/python/cpython
synced 2026-09-29 12:10:30 +03:00
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:
parent
42243c4dca
commit
396e8fcf36
4 changed files with 33 additions and 12 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue