Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 90b2067

Browse files
committed
#10777: fix iteration over dict keys while mutating the dict.
1 parent ff52f76 commit 90b2067

3 files changed

Lines changed: 13 additions & 1 deletion

File tree

Lib/test/test_xml_etree.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1841,6 +1841,15 @@ def check_issue6565():
18411841
18421842
"""
18431843

1844+
def check_issue10777():
1845+
"""
1846+
Registering a namespace twice caused a "dictionary changed size during
1847+
iteration" bug.
1848+
1849+
>>> ET.register_namespace('test10777', 'http://myuri/')
1850+
>>> ET.register_namespace('test10777', 'http://myuri/')
1851+
"""
1852+
18441853
# --------------------------------------------------------------------
18451854

18461855

Lib/xml/etree/ElementTree.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1068,7 +1068,7 @@ def _serialize_text(write, elem):
10681068
def register_namespace(prefix, uri):
10691069
if re.match("ns\d+$", prefix):
10701070
raise ValueError("Prefix format reserved for internal use")
1071-
for k, v in _namespace_map.items():
1071+
for k, v in list(_namespace_map.items()):
10721072
if k == uri or v == prefix:
10731073
del _namespace_map[k]
10741074
_namespace_map[uri] = prefix

Misc/NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ Core and Builtins
1818
Library
1919
-------
2020

21+
- Issue #10777: Fix "dictionary changed size during iteration" bug in
22+
ElementTree register_namespace().
23+
2124
- Issue #10626: test_logging now preserves logger disabled states.
2225

2326
- Issue #10774: test_logging now removes temp files created during tests.

0 commit comments

Comments
 (0)