From 212ef9fb19e752797a637d9367d5a1ca11e4d05f Mon Sep 17 00:00:00 2001 From: Sam Gross Date: Tue, 30 Jan 2024 18:07:28 +0000 Subject: [PATCH 1/3] gh-114737: Revert change to ElementTree.iterparse "root" attribute Prior to gh-114269, the iterator returned by ElementTree.iterparse was initialized with the root attribute as None. This restores the previous behavior. --- Lib/test/test_xml_etree.py | 1 + Lib/xml/etree/ElementTree.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py index b9e7937b0bbc00..7496b6fc93a3a7 100644 --- a/Lib/test/test_xml_etree.py +++ b/Lib/test/test_xml_etree.py @@ -536,6 +536,7 @@ def test_iterparse(self): iterparse = ET.iterparse context = iterparse(SIMPLE_XMLFILE) + self.assertIsNone(context.root) action, elem = next(context) self.assertEqual((action, elem.tag), ('end', 'element')) self.assertEqual([(action, elem.tag) for action, elem in context], [ diff --git a/Lib/xml/etree/ElementTree.py b/Lib/xml/etree/ElementTree.py index ae6575028be11c..eb2d80e625d821 100644 --- a/Lib/xml/etree/ElementTree.py +++ b/Lib/xml/etree/ElementTree.py @@ -1256,8 +1256,9 @@ def __del__(self): source.close() it = IterParseIterator() + it.root = None wr = weakref.ref(it) - del IterParseIterator + del iterator, IterParseIterator return it From 8d4f5b37c2ef9026dde8f78c9c8c4077d0e0d149 Mon Sep 17 00:00:00 2001 From: Sam Gross Date: Tue, 30 Jan 2024 14:18:48 -0500 Subject: [PATCH 2/3] Update Lib/test/test_xml_etree.py Co-authored-by: Serhiy Storchaka --- Lib/test/test_xml_etree.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py index 7496b6fc93a3a7..221545b315fa44 100644 --- a/Lib/test/test_xml_etree.py +++ b/Lib/test/test_xml_etree.py @@ -538,6 +538,7 @@ def test_iterparse(self): context = iterparse(SIMPLE_XMLFILE) self.assertIsNone(context.root) action, elem = next(context) + self.assertIsNone(context.root) self.assertEqual((action, elem.tag), ('end', 'element')) self.assertEqual([(action, elem.tag) for action, elem in context], [ ('end', 'element'), From a2ebd83efa93367b8385cf5ac998033f7d133b5c Mon Sep 17 00:00:00 2001 From: Sam Gross Date: Tue, 30 Jan 2024 19:37:37 +0000 Subject: [PATCH 3/3] Remove del statement --- Lib/xml/etree/ElementTree.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Lib/xml/etree/ElementTree.py b/Lib/xml/etree/ElementTree.py index eb2d80e625d821..bb7362d1634a72 100644 --- a/Lib/xml/etree/ElementTree.py +++ b/Lib/xml/etree/ElementTree.py @@ -1258,7 +1258,6 @@ def __del__(self): it = IterParseIterator() it.root = None wr = weakref.ref(it) - del iterator, IterParseIterator return it