diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2018-10-29 17:31:04 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-29 17:31:04 (GMT) |
commit | 3b05ad7be09af1d4510eb698b0a70d36387f296e (patch) | |
tree | 7d4a5ca447ea28c1993ae2a1cdbaa3b4f62a26bb | |
parent | c93c58b5d560cfe44d9884ff02c9b18e06333360 (diff) | |
download | cpython-3b05ad7be09af1d4510eb698b0a70d36387f296e.zip cpython-3b05ad7be09af1d4510eb698b0a70d36387f296e.tar.gz cpython-3b05ad7be09af1d4510eb698b0a70d36387f296e.tar.bz2 |
bpo-34160: Preserve user specified order of Element attributes in html. (GH-10190)
-rw-r--r-- | Lib/test/test_xml_etree.py | 12 | ||||
-rw-r--r-- | Lib/xml/etree/ElementTree.py | 2 |
2 files changed, 5 insertions, 9 deletions
diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py index 9988dad..8a7ec00 100644 --- a/Lib/test/test_xml_etree.py +++ b/Lib/test/test_xml_etree.py @@ -5,7 +5,6 @@ # For this purpose, the module-level "ET" symbol is temporarily # monkey-patched when running the "test_xml_etree_c" test suite. -import contextlib import copy import functools import html @@ -1056,13 +1055,10 @@ class ElementTreeTest(unittest.TestCase): def test_tree_write_attribute_order(self): # See BPO 34160 root = ET.Element('cirriculum', status='public', company='example') - tree = ET.ElementTree(root) - f = io.BytesIO() - with contextlib.redirect_stdout(f): - tree.write(f, encoding='utf-8', xml_declaration=True) - self.assertEqual(f.getvalue(), - b"<?xml version='1.0' encoding='utf-8'?>\n" - b'<cirriculum status="public" company="example" />') + self.assertEqual(serialize(root), + '<cirriculum status="public" company="example" />') + self.assertEqual(serialize(root, method='html'), + '<cirriculum status="public" company="example"></cirriculum>') class XMLPullParserTest(unittest.TestCase): diff --git a/Lib/xml/etree/ElementTree.py b/Lib/xml/etree/ElementTree.py index d4df83f..c1cf483 100644 --- a/Lib/xml/etree/ElementTree.py +++ b/Lib/xml/etree/ElementTree.py @@ -979,7 +979,7 @@ def _serialize_html(write, elem, qnames, namespaces, **kwargs): k, _escape_attrib(v) )) - for k, v in sorted(items): # lexical order + for k, v in items: if isinstance(k, QName): k = k.text if isinstance(v, QName): |