bpo-32424: Deprecate xml.etree.ElementTree.Element.copy() in favor of copy.copy() (GH-12995)
This commit is contained in:
parent
a9b6033179
commit
7d952ded68
|
@ -2211,6 +2211,35 @@ class BasicElementTest(ElementTestCase, unittest.TestCase):
|
|||
self.assertIsNot(element_foo.attrib, attrib)
|
||||
self.assertNotEqual(element_foo.attrib, attrib)
|
||||
|
||||
def test_copy(self):
|
||||
# Only run this test if Element.copy() is defined.
|
||||
if "copy" not in dir(ET.Element):
|
||||
raise unittest.SkipTest("Element.copy() not present")
|
||||
|
||||
element_foo = ET.Element("foo", { "zix": "wyp" })
|
||||
element_foo.append(ET.Element("bar", { "baz": "qix" }))
|
||||
|
||||
with self.assertWarns(DeprecationWarning):
|
||||
element_foo2 = element_foo.copy()
|
||||
|
||||
# elements are not the same
|
||||
self.assertIsNot(element_foo2, element_foo)
|
||||
|
||||
# string attributes are equal
|
||||
self.assertEqual(element_foo2.tag, element_foo.tag)
|
||||
self.assertEqual(element_foo2.text, element_foo.text)
|
||||
self.assertEqual(element_foo2.tail, element_foo.tail)
|
||||
|
||||
# number of children is the same
|
||||
self.assertEqual(len(element_foo2), len(element_foo))
|
||||
|
||||
# children are the same
|
||||
for (child1, child2) in itertools.zip_longest(element_foo, element_foo2):
|
||||
self.assertIs(child1, child2)
|
||||
|
||||
# attrib is a copy
|
||||
self.assertEqual(element_foo2.attrib, element_foo.attrib)
|
||||
|
||||
def test___copy__(self):
|
||||
element_foo = ET.Element("foo", { "zix": "wyp" })
|
||||
element_foo.append(ET.Element("bar", { "baz": "qix" }))
|
||||
|
|
|
@ -195,6 +195,13 @@ class Element:
|
|||
original tree.
|
||||
|
||||
"""
|
||||
warnings.warn(
|
||||
"elem.copy() is deprecated. Use copy.copy(elem) instead.",
|
||||
DeprecationWarning
|
||||
)
|
||||
return self.__copy__()
|
||||
|
||||
def __copy__(self):
|
||||
elem = self.makeelement(self.tag, self.attrib)
|
||||
elem.text = self.text
|
||||
elem.tail = self.tail
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Deprecate xml.etree.ElementTree.Element.copy() in favor of copy.copy().
|
||||
|
||||
Patch by Gordon P. Hemsley
|
Loading…
Reference in New Issue