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.assertIsNot(element_foo.attrib, attrib)
|
||||||
self.assertNotEqual(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):
|
def test___copy__(self):
|
||||||
element_foo = ET.Element("foo", { "zix": "wyp" })
|
element_foo = ET.Element("foo", { "zix": "wyp" })
|
||||||
element_foo.append(ET.Element("bar", { "baz": "qix" }))
|
element_foo.append(ET.Element("bar", { "baz": "qix" }))
|
||||||
|
|
|
@ -195,6 +195,13 @@ class Element:
|
||||||
original tree.
|
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 = self.makeelement(self.tag, self.attrib)
|
||||||
elem.text = self.text
|
elem.text = self.text
|
||||||
elem.tail = self.tail
|
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