Closed
Description
In SVG 1.1, you could have something like this:
<svg><pattern id="patt1" xlink:href="http://example.com/#whatever" /></svg>
In Python 3, that creates the following attributes:
dict_items([((None, 'id'), 'patt1'), (('http://www.w3.org/1999/xlink', 'href'), '#patt2')])
The problem is that this means we're comparing None
with a str here:
That kicks up a TypeError.
Script:
import html5lib
from html5lib.serializer import HTMLSerializer
text = '<svg><pattern id="patt1" xlink:href="http://example.com/#foo" /></svg>'
parser = html5lib.HTMLParser()
dom = parser.parseFragment(text)
walker = html5lib.getTreeWalker('etree')
ser = HTMLSerializer(alphabetical_attributes=True)
ser.render(walker(dom))
Traceback:
Traceback (most recent call last):
File "foo.py", line 12, in <module>
ser.render(walker(dom))
File "/home/willkg/mozilla/bleach/.tox/py34-html5lib99999999/lib/python3.4/site-packages/html5lib/serializer.py", line 323, in render
return "".join(list(self.serialize(treewalker)))
File "/home/willkg/mozilla/bleach/.tox/py34-html5lib99999999/lib/python3.4/site-packages/html5lib/serializer.py", line 209, in serialize
for token in treewalker:
File "/home/willkg/mozilla/bleach/.tox/py34-html5lib99999999/lib/python3.4/site-packages/html5lib/filters/optionaltags.py", line 18, in __iter__
for previous, token, next in self.slider():
File "/home/willkg/mozilla/bleach/.tox/py34-html5lib99999999/lib/python3.4/site-packages/html5lib/filters/optionaltags.py", line 9, in slider
for token in self.source:
File "/home/willkg/mozilla/bleach/.tox/py34-html5lib99999999/lib/python3.4/site-packages/html5lib/filters/alphabeticalattributes.py", line 17, in __iter__
key=lambda x: x[0]):
TypeError: unorderable types: str() < NoneType()
This is true of html5lib 0.99999999 (8 9s) and 0.999999999 (9 9s).
Metadata
Metadata
Assignees
Labels
No labels