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

Skip to content

Commit b2b08cc

Browse files
committed
Get lxml treewalker outputting attrs in source order again
Mostly so we have test coverage here on < 3.7
1 parent 38ec086 commit b2b08cc

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

html5lib/tests/test_treewalkers.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,9 @@ def test_lxml_xml():
141141

142142
@pytest.mark.parametrize("treeName",
143143
[pytest.param(treeName, marks=[getattr(pytest.mark, treeName),
144-
pytest.mark.skipif(sys.version_info < (3, 7), reason="dict order undef")])
144+
pytest.mark.skipif(
145+
treeName != "lxml" or
146+
sys.version_info < (3, 7), reason="dict order undef")])
145147
for treeName in sorted(treeTypes.keys())])
146148
def test_maintain_attribute_order(treeName):
147149
treeAPIs = treeTypes[treeName]
@@ -172,7 +174,9 @@ def test_maintain_attribute_order(treeName):
172174

173175
@pytest.mark.parametrize("treeName",
174176
[pytest.param(treeName, marks=[getattr(pytest.mark, treeName),
175-
pytest.mark.skipif(sys.version_info < (3, 7), reason="dict order undef")])
177+
pytest.mark.skipif(
178+
treeName != "lxml" or
179+
sys.version_info < (3, 7), reason="dict order undef")])
176180
for treeName in sorted(treeTypes.keys())])
177181
def test_maintain_attribute_order_adjusted(treeName):
178182
treeAPIs = treeTypes[treeName]

html5lib/treewalkers/etree_lxml.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from __future__ import absolute_import, division, unicode_literals
22
from six import text_type
33

4+
from collections import OrderedDict
5+
46
from lxml import etree
57
from ..treebuilders.etree import tag_regexp
68

@@ -163,7 +165,7 @@ def getNodeDetails(self, node):
163165
else:
164166
namespace = None
165167
tag = ensure_str(node.tag)
166-
attrs = {}
168+
attrs = OrderedDict()
167169
for name, value in list(node.attrib.items()):
168170
name = ensure_str(name)
169171
value = ensure_str(value)

0 commit comments

Comments
 (0)