a C implementation of :func:`~hashlib.pbkdf2_hmac()` which is faster.
(Contributed by Victor Stinner in :gh:`94199`.)
+* :mod:`xml.etree`: Remove the ``ElementTree.Element.copy()`` method of the
+ pure Python implementation, deprecated in Python 3.10, use the
+ :func:`copy.copy` function instead. The C implementation of :mod:`xml.etree`
+ has no ``copy()`` method, only a ``__copy__()`` method.
+ (Contributed by Victor Stinner in :gh:`94383`.)
+
Porting to Python 3.12
======================
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" }))
"""
return self.__class__(tag, attrib)
- def copy(self):
- """Return copy of current element.
-
- This creates a shallow copy. Subelements will be shared with the
- 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
--- /dev/null
+:mod:`xml.etree`: Remove the ``ElementTree.Element.copy()`` method of the
+pure Python implementation, deprecated in Python 3.10, use the
+:func:`copy.copy` function instead. The C implementation of :mod:`xml.etree`
+has no ``copy()`` method, only a ``__copy__()`` method. Patch by Victor
+Stinner.