Source: python-bleach Version: 3.1.5-2 Severity: serious Justification: FTBFS on amd64 Tags: bullseye sid ftbfs Usertags: ftbfs-20200802 ftbfs-bullseye
Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > make[1]: Entering directory '/<<PKGBUILDDIR>>' > dh_auto_build -O--buildsystem=pybuild > I: pybuild base:217: /usr/bin/python3 setup.py build > running build > running build_py > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach > copying bleach/callbacks.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach > copying bleach/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach > copying bleach/html5lib_shim.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach > copying bleach/linkifier.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach > copying bleach/sanitizer.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach > copying bleach/utils.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach > creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor > copying bleach/_vendor/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib > copying bleach/_vendor/html5lib/_inputstream.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib > copying bleach/_vendor/html5lib/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib > copying bleach/_vendor/html5lib/_utils.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib > copying bleach/_vendor/html5lib/_tokenizer.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib > copying bleach/_vendor/html5lib/constants.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib > copying bleach/_vendor/html5lib/html5parser.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib > copying bleach/_vendor/html5lib/serializer.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib > copying bleach/_vendor/html5lib/_ihatexml.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/filters > copying bleach/_vendor/html5lib/filters/lint.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/filters > copying bleach/_vendor/html5lib/filters/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/filters > copying bleach/_vendor/html5lib/filters/alphabeticalattributes.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/filters > copying bleach/_vendor/html5lib/filters/whitespace.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/filters > copying bleach/_vendor/html5lib/filters/inject_meta_charset.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/filters > copying bleach/_vendor/html5lib/filters/optionaltags.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/filters > copying bleach/_vendor/html5lib/filters/base.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/filters > copying bleach/_vendor/html5lib/filters/sanitizer.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/filters > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treewalkers > copying bleach/_vendor/html5lib/treewalkers/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treewalkers > copying bleach/_vendor/html5lib/treewalkers/etree.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treewalkers > copying bleach/_vendor/html5lib/treewalkers/genshi.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treewalkers > copying bleach/_vendor/html5lib/treewalkers/etree_lxml.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treewalkers > copying bleach/_vendor/html5lib/treewalkers/dom.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treewalkers > copying bleach/_vendor/html5lib/treewalkers/base.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treewalkers > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/_trie > copying bleach/_vendor/html5lib/_trie/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/_trie > copying bleach/_vendor/html5lib/_trie/_base.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/_trie > copying bleach/_vendor/html5lib/_trie/datrie.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/_trie > copying bleach/_vendor/html5lib/_trie/py.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/_trie > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treeadapters > copying bleach/_vendor/html5lib/treeadapters/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treeadapters > copying bleach/_vendor/html5lib/treeadapters/genshi.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treeadapters > copying bleach/_vendor/html5lib/treeadapters/sax.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treeadapters > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treebuilders > copying bleach/_vendor/html5lib/treebuilders/__init__.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treebuilders > copying bleach/_vendor/html5lib/treebuilders/etree.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treebuilders > copying bleach/_vendor/html5lib/treebuilders/etree_lxml.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treebuilders > copying bleach/_vendor/html5lib/treebuilders/dom.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treebuilders > copying bleach/_vendor/html5lib/treebuilders/base.py -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib/treebuilders > running egg_info > creating bleach.egg-info > writing bleach.egg-info/PKG-INFO > writing dependency_links to bleach.egg-info/dependency_links.txt > writing requirements to bleach.egg-info/requires.txt > writing top-level names to bleach.egg-info/top_level.txt > writing manifest file 'bleach.egg-info/SOURCES.txt' > reading manifest file 'bleach.egg-info/SOURCES.txt' > reading manifest template 'MANIFEST.in' > writing manifest file 'bleach.egg-info/SOURCES.txt' > copying bleach/_vendor/README.rst -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor > copying bleach/_vendor/pip_install_vendor.sh -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor > copying bleach/_vendor/vendor.txt -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor > creating > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib-1.0.1.dist-info > copying bleach/_vendor/html5lib-1.0.1.dist-info/DESCRIPTION.rst -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib-1.0.1.dist-info > copying bleach/_vendor/html5lib-1.0.1.dist-info/INSTALLER -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib-1.0.1.dist-info > copying bleach/_vendor/html5lib-1.0.1.dist-info/LICENSE.txt -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib-1.0.1.dist-info > copying bleach/_vendor/html5lib-1.0.1.dist-info/METADATA -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib-1.0.1.dist-info > copying bleach/_vendor/html5lib-1.0.1.dist-info/RECORD -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib-1.0.1.dist-info > copying bleach/_vendor/html5lib-1.0.1.dist-info/WHEEL -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib-1.0.1.dist-info > copying bleach/_vendor/html5lib-1.0.1.dist-info/metadata.json -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib-1.0.1.dist-info > copying bleach/_vendor/html5lib-1.0.1.dist-info/top_level.txt -> > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build/bleach/_vendor/html5lib-1.0.1.dist-info > PYTHONPATH=. http_proxy='localhost' python3 -m sphinx -N -bhtml docs/ > build/html > Running Sphinx v2.4.3 > making output directory... done > WARNING: html_static_path entry '_static' does not exist > building [mo]: targets for 0 po files that are out of date > building [html]: targets for 6 source files that are out of date > updating environment: [new config] 6 added, 0 changed, 0 removed > reading sources... [ 16%] changes > reading sources... [ 33%] clean > reading sources... [ 50%] dev > reading sources... [ 66%] goals > reading sources... [ 83%] index > reading sources... [100%] linkify > > looking for now-outdated files... none found > pickling environment... done > checking consistency... done > preparing documents... done > writing output... [ 16%] changes > writing output... [ 33%] clean > writing output... [ 50%] dev > writing output... [ 66%] goals > writing output... [ 83%] index > writing output... [100%] linkify > > generating indices... genindexdone > highlighting module code... [ 33%] bleach > highlighting module code... [ 66%] bleach.linkifier > highlighting module code... [100%] bleach.sanitizer > > writing additional pages... searchdone > copying static files... ... done > copying extra files... done > dumping search index in English (code: en)... done > dumping object inventory... done > build succeeded, 1 warning. > > The HTML pages are in build/html. > make[1]: Leaving directory '/<<PKGBUILDDIR>>' > dh_auto_test -O--buildsystem=pybuild > I: pybuild base:217: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build; > python3.8 -m pytest tests > ============================= test session starts > ============================== > platform linux -- Python 3.8.5, pytest-4.6.11, py-1.8.1, pluggy-0.13.0 > rootdir: /<<PKGBUILDDIR>> > collected 338 items > > tests/test_callbacks.py .......... [ > 2%] > tests/test_clean.py .................................................... [ > 18%] > ........................................................................ [ > 39%] > ............................................ [ > 52%] > tests/test_css.py .....x..xx................F. [ > 60%] > tests/test_html5lib_shim.py .................FF. [ > 66%] > tests/test_linkify.py .................................................. [ > 81%] > .................................................. [ > 96%] > tests/test_unicode.py ......... [ > 99%] > tests/test_utils.py ... > [100%] > > =================================== FAILURES > =================================== > _______________ test_css_parsing_gauntlet_regex_backtracking['] > ________________ > > overlap_test_char = "'" > > @pytest.mark.parametrize('overlap_test_char', ["\"", "'", "-"]) > def test_css_parsing_gauntlet_regex_backtracking(overlap_test_char): > """The sanitizer gauntlet regex should not catastrophically > backtrack""" > # refs: https://bugzilla.mozilla.org/show_bug.cgi?id=1623633 > > def time_clean(test_char, size): > style_attr_value = (test_char + 'a' + test_char) * size + '^' > stmt = """clean('''<a style='%s'></a>''', attributes={'a': > ['style']})""" % style_attr_value > return timeit(stmt=stmt, setup='from bleach import clean', > number=1) > > # should complete in less than one second > > assert time_clean(overlap_test_char, 22) < 1.0 > > tests/test_css.py:246: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > tests/test_css.py:243: in time_clean > return timeit(stmt=stmt, setup='from bleach import clean', number=1) > /usr/lib/python3.8/timeit.py:233: in timeit > return Timer(stmt, setup, timer, globals).timeit(number) > /usr/lib/python3.8/timeit.py:177: in timeit > timing = self.inner(it, self.timer) > <timeit-src>:6: in inner > ??? > bleach/__init__.py:84: in clean > return cleaner.clean(text) > bleach/sanitizer.py:169: in clean > dom = self.parser.parseFragment(text) > /usr/lib/python3/dist-packages/html5lib/html5parser.py:312: in parseFragment > self._parse(stream, True, *args, **kwargs) > bleach/html5lib_shim.py:399: in _parse > self.mainLoop() > /usr/lib/python3/dist-packages/html5lib/html5parser.py:240: in mainLoop > new_token = phase.processStartTag(new_token) > /usr/lib/python3/dist-packages/html5lib/html5parser.py:469: in processStartTag > return func(token) > /usr/lib/python3/dist-packages/html5lib/html5parser.py:1109: in startTagA > self.addFormattingElement(token) > /usr/lib/python3/dist-packages/html5lib/html5parser.py:958: in > addFormattingElement > self.tree.insertElement(token) > /usr/lib/python3/dist-packages/html5lib/treebuilders/base.py:328: in > insertElementNormal > element.attributes = token["data"] > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <a> > attributes = ['style', > "a''a''a''a''a''a''a''a''a''a''a''a''a''a''a''a''a''a''a''a''a''a'^'"] > > def _setAttributes(self, attributes): > el_attrib = self._element.attrib > el_attrib.clear() > if attributes: > # calling .items _always_ allocates, and the above truthy check > is cheaper than the > # allocation on average > > for key, value in attributes.items(): > E AttributeError: 'list' object has no attribute 'items' > > /usr/lib/python3/dist-packages/html5lib/treebuilders/etree.py:71: > AttributeError > _ test_bleach_html_parser[parser_args3-<a href="http://example.com"">-<a > href="http://example.com"></a>] _ > > parser_args = {}, data = '<a href="http://example.com"">' > expected = '<a href="http://example.com"></a>' > > @pytest.mark.parametrize('parser_args, data, expected', [ > # Make sure InputStreamWithMemory has charEncoding and changeEncoding > ( > {}, > '<meta charset="utf-8">', > '<meta charset="utf-8">' > ), > # Handle consume entities False--all entities are passed along and > then > # escaped when serialized > ( > {'consume_entities': False}, > 'text &>"', > 'text &amp;&gt;&quot;' > ), > # Handle consume entities True--all entities are consumed and > converted > # to their character equivalents and then &, <, and > are escaped when > # serialized > ( > {'consume_entities': True}, > 'text &>"', > 'text &>"' > ), > # Test that "invalid-character-in-attribute-name" errors in tokenizing > # result in attributes with invalid names getting dropped > ( > {}, > '<a href="http://example.com"">', > '<a href="http://example.com"></a>' > ), > ( > {}, > '<a href=\'http://example.com\'\'>', > '<a href="http://example.com"></a>' > ), > # Test that "expected-closing-tag-but-got-char" works when tags is > None > ( > {}, > '</ chars', > '<!-- chars-->', > ) > ]) > def test_bleach_html_parser(parser_args, data, expected): > args = { > 'tags': None, > 'strip': True, > 'consume_entities': True > } > args.update(parser_args) > > # Build a parser, walker, and serializer just like we do in clean() > parser = html5lib_shim.BleachHTMLParser(**args) > walker = html5lib_shim.getTreeWalker('etree') > serializer = html5lib_shim.BleachHTMLSerializer( > quote_attr_values='always', > omit_optional_tags=False, > escape_lt_in_attrs=True, > resolve_entities=False, > sanitize=False, > alphabetical_attributes=False, > ) > > # Parse, walk, and then serialize the output > > dom = parser.parseFragment(data) > > tests/test_html5lib_shim.py:149: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3/dist-packages/html5lib/html5parser.py:312: in parseFragment > self._parse(stream, True, *args, **kwargs) > bleach/html5lib_shim.py:399: in _parse > self.mainLoop() > /usr/lib/python3/dist-packages/html5lib/html5parser.py:240: in mainLoop > new_token = phase.processStartTag(new_token) > /usr/lib/python3/dist-packages/html5lib/html5parser.py:469: in processStartTag > return func(token) > /usr/lib/python3/dist-packages/html5lib/html5parser.py:1109: in startTagA > self.addFormattingElement(token) > /usr/lib/python3/dist-packages/html5lib/html5parser.py:958: in > addFormattingElement > self.tree.insertElement(token) > /usr/lib/python3/dist-packages/html5lib/treebuilders/base.py:328: in > insertElementNormal > element.attributes = token["data"] > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <a>, attributes = ['href'] > > def _setAttributes(self, attributes): > el_attrib = self._element.attrib > el_attrib.clear() > if attributes: > # calling .items _always_ allocates, and the above truthy check > is cheaper than the > # allocation on average > > for key, value in attributes.items(): > E AttributeError: 'list' object has no attribute 'items' > > /usr/lib/python3/dist-packages/html5lib/treebuilders/etree.py:71: > AttributeError > _ test_bleach_html_parser[parser_args4-<a href='http://example.com''>-<a > href="http://example.com"></a>] _ > > parser_args = {}, data = "<a href='http://example.com''>" > expected = '<a href="http://example.com"></a>' > > @pytest.mark.parametrize('parser_args, data, expected', [ > # Make sure InputStreamWithMemory has charEncoding and changeEncoding > ( > {}, > '<meta charset="utf-8">', > '<meta charset="utf-8">' > ), > # Handle consume entities False--all entities are passed along and > then > # escaped when serialized > ( > {'consume_entities': False}, > 'text &>"', > 'text &amp;&gt;&quot;' > ), > # Handle consume entities True--all entities are consumed and > converted > # to their character equivalents and then &, <, and > are escaped when > # serialized > ( > {'consume_entities': True}, > 'text &>"', > 'text &>"' > ), > # Test that "invalid-character-in-attribute-name" errors in tokenizing > # result in attributes with invalid names getting dropped > ( > {}, > '<a href="http://example.com"">', > '<a href="http://example.com"></a>' > ), > ( > {}, > '<a href=\'http://example.com\'\'>', > '<a href="http://example.com"></a>' > ), > # Test that "expected-closing-tag-but-got-char" works when tags is > None > ( > {}, > '</ chars', > '<!-- chars-->', > ) > ]) > def test_bleach_html_parser(parser_args, data, expected): > args = { > 'tags': None, > 'strip': True, > 'consume_entities': True > } > args.update(parser_args) > > # Build a parser, walker, and serializer just like we do in clean() > parser = html5lib_shim.BleachHTMLParser(**args) > walker = html5lib_shim.getTreeWalker('etree') > serializer = html5lib_shim.BleachHTMLSerializer( > quote_attr_values='always', > omit_optional_tags=False, > escape_lt_in_attrs=True, > resolve_entities=False, > sanitize=False, > alphabetical_attributes=False, > ) > > # Parse, walk, and then serialize the output > > dom = parser.parseFragment(data) > > tests/test_html5lib_shim.py:149: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3/dist-packages/html5lib/html5parser.py:312: in parseFragment > self._parse(stream, True, *args, **kwargs) > bleach/html5lib_shim.py:399: in _parse > self.mainLoop() > /usr/lib/python3/dist-packages/html5lib/html5parser.py:240: in mainLoop > new_token = phase.processStartTag(new_token) > /usr/lib/python3/dist-packages/html5lib/html5parser.py:469: in processStartTag > return func(token) > /usr/lib/python3/dist-packages/html5lib/html5parser.py:1109: in startTagA > self.addFormattingElement(token) > /usr/lib/python3/dist-packages/html5lib/html5parser.py:958: in > addFormattingElement > self.tree.insertElement(token) > /usr/lib/python3/dist-packages/html5lib/treebuilders/base.py:328: in > insertElementNormal > element.attributes = token["data"] > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <a>, attributes = ['href'] > > def _setAttributes(self, attributes): > el_attrib = self._element.attrib > el_attrib.clear() > if attributes: > # calling .items _always_ allocates, and the above truthy check > is cheaper than the > # allocation on average > > for key, value in attributes.items(): > E AttributeError: 'list' object has no attribute 'items' > > /usr/lib/python3/dist-packages/html5lib/treebuilders/etree.py:71: > AttributeError > =============================== warnings summary > =============================== > /usr/lib/python3/dist-packages/html5lib/filters/sanitizer.py:29 > /usr/lib/python3/dist-packages/html5lib/filters/sanitizer.py:29: > DeprecationWarning: html5lib's sanitizer is deprecated; see > https://github.com/html5lib/html5lib-python/issues/443 and please let us know > if Bleach is unsuitable for your needs > warnings.warn(_deprecation_msg, DeprecationWarning) > > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_clean_idempotent > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_clean_idempotent > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_clean_idempotent > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_only_text_is_cleaned > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_content_has_no_html > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_content_has_allowed_html[an > <strong>allowed</strong> tag-an <strong>allowed</strong> tag] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_content_has_allowed_html[another > <em>good</em> tag-another <em>good</em> tag] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_html_is_lowercased > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_invalid_uri_does_not_raise_error > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_comments[<!-- > this is a comment -->-True-] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_comments[<!-- > open comment-True-] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_comments[<!--open > comment-True-] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_comments[<!-- > open comment-False-<!-- open comment-->] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_comments[<!--open > comment-False-<!--open comment-->] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_comments[<!-- > comment -->text-True-text] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_comments[<!--comment-->text-True-text] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_comments[<!-- > comment -->text-False-<!-- comment -->text] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_comments[<!--comment-->text-False-<!--comment-->text] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_comments[text<!-- > comment -->-True-text] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_comments[text<!--comment-->-True-text] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_comments[text<!-- > comment -->-False-text<!-- comment -->] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_comments[text<!--comment-->-False-text<!--comment-->] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_invalid_char_in_tag > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_invalid_char_in_tag > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_unclosed_tag > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_unclosed_tag > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_unclosed_tag > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_unclosed_tag > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_nested_script_tag > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_nested_script_tag > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_nested_script_tag > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_bare_entities_get_escaped_correctly[an > & entity-an & entity] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_bare_entities_get_escaped_correctly[an > < entity-an < entity] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_bare_entities_get_escaped_correctly[tag > < <em>and</em> entity-tag < <em>and</em> entity] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[&-&] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[ - ] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[ > test string - test string ] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[<em>strong</em>-<em>strong</em>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[&is > cool-&is cool] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[cool > &-cool &] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[&& > is cool-&& is cool] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[& > is cool &&-& is cool &&] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[this > & that-this &amp that] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[http://example.com?active=true¤t=true-http://example.com?active=true&current=true] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[<a > href="?art&copy">foo</a>-<a href="?art&copy">foo</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[<a > href="?this=>that">foo</a>-<a href="?this=>that">foo</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[<a > href="http://example.com/&xx;">foo</a>-<a > href="http://example.com/&xx;">foo</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[<a > href="http://example.com?active=true¤t=true">foo</a>-<a > href="http://example.com?active=true&current=true">foo</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[&xx;-&xx;] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling['-'] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling["-"] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[{-{] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[{-{] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[{-{] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[&#-&#] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling[&#<-&#<] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_character_entities_handling['"-'"] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[a > test <em>with</em> <b>html</b> tags-kwargs0-a test <em>with</em> <b>html</b> > tags] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[a > test <em>with</em> <b>html</b> tags-kwargs0-a test <em>with</em> <b>html</b> > tags] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[a > test <em>with</em> <b>html</b> tags-kwargs0-a test <em>with</em> <b>html</b> > tags] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[a > test <em>with</em> <img src="http://example.com/"> <b>html</b> tags-kwargs1-a > test <em>with</em> <b>html</b> tags] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[a > test <em>with</em> <img src="http://example.com/"> <b>html</b> tags-kwargs1-a > test <em>with</em> <b>html</b> tags] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[a > test <em>with</em> <img src="http://example.com/"> <b>html</b> tags-kwargs1-a > test <em>with</em> <b>html</b> tags] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<p><a > href="http://example.com/">link text</a></p>-kwargs2-<p>link text</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<p><a > href="http://example.com/">link text</a></p>-kwargs2-<p>link text</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<p><a > href="http://example.com/">link text</a></p>-kwargs2-<p>link text</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<p><span>multiply > <span>nested <span>text</span></span></span></p>-kwargs3-<p>multiply nested > text</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<p><span>multiply > <span>nested <span>text</span></span></span></p>-kwargs3-<p>multiply nested > text</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<p><span>multiply > <span>nested <span>text</span></span></span></p>-kwargs3-<p>multiply nested > text</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<ul><li><script></li></ul>-kwargs4-<ul><li></li></ul>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<ul><li><script></li></ul>-kwargs4-<ul><li></li></ul>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<ul><li><script></li></ul>-kwargs4-<ul><li></li></ul>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<p><a > href="http://example.com/"><img > src="http://example.com/"></a></p>-kwargs5-<p><a > href="http://example.com/"></a></p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<p><a > href="http://example.com/"><img > src="http://example.com/"></a></p>-kwargs5-<p><a > href="http://example.com/"></a></p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<p><a > href="http://example.com/"><img > src="http://example.com/"></a></p>-kwargs5-<p><a > href="http://example.com/"></a></p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<isindex>-kwargs6-] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<isindex>-kwargs6-] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<isindex>-kwargs6-] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[Yeah > right <sarcasm/>-kwargs7-Yeah right ] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[Yeah > right <sarcasm/>-kwargs7-Yeah right ] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[Yeah > right <sarcasm/>-kwargs7-Yeah right ] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<sarcasm>-kwargs8-] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<sarcasm>-kwargs8-] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[<sarcasm>-kwargs8-] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[</sarcasm>-kwargs9-] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[</sarcasm>-kwargs9-] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[</sarcasm>-kwargs9-] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[</ > sarcasm>-kwargs10-</ sarcasm>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[</ > sarcasm>-kwargs10-</ sarcasm>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[</ > sarcasm>-kwargs10-</ sarcasm>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[</ > sarcasm >-kwargs11-</ sarcasm >] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[</ > sarcasm >-kwargs11-</ sarcasm >] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[</ > sarcasm >-kwargs11-</ sarcasm >] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[Foo > <b...@example.com>-kwargs12-Foo ] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[Foo > <b...@example.com>-kwargs12-Foo ] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[Foo > <b...@example.com>-kwargs12-Foo ] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[Favorite > movie: <name of movie>-kwargs13-Favorite movie: ] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[Favorite > movie: <name of movie>-kwargs13-Favorite movie: ] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[Favorite > movie: <name of movie>-kwargs13-Favorite movie: ] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[</3-kwargs14-</3] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[</3-kwargs14-</3] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags[</3-kwargs14-</3] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<img > src="javascript:alert('XSS');">-<img src="javascript:alert('XSS');">] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<img > src="javascript:alert('XSS');">-<img src="javascript:alert('XSS');">] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<img > src="javascript:alert('XSS');">-<img src="javascript:alert('XSS');">] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<script>safe()</script>-<script>safe()</script>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<script>safe()</script>-<script>safe()</script>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<script>safe()</script>-<script>safe()</script>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<style>body{}</style>-<style>body{}</style>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<style>body{}</style>-<style>body{}</style>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<style>body{}</style>-<style>body{}</style>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<ul><li><script></li></ul>-<ul><li><script></li></ul>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<ul><li><script></li></ul>-<ul><li><script></li></ul>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<ul><li><script></li></ul>-<ul><li><script></li></ul>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<isindex>-<isindex>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<isindex>-<isindex>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<isindex>-<isindex>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<sarcasm/>-<sarcasm/>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<sarcasm/>-<sarcasm/>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<sarcasm/>-<sarcasm/>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<sarcasm>-<sarcasm>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<sarcasm>-<sarcasm>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<sarcasm>-<sarcasm>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[</sarcasm>-</sarcasm>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[</sarcasm>-</sarcasm>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[</sarcasm>-</sarcasm>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[</ > sarcasm>-</ sarcasm>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[</ > sarcasm>-</ sarcasm>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[</ > sarcasm>-</ sarcasm>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[</ > sarcasm >-</ sarcasm >] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[</ > sarcasm >-</ sarcasm >] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[</ > sarcasm >-</ sarcasm >] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[</3-</3] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[</3-</3] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[</3-</3] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<b...@example.com>-<b...@example.com>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<b...@example.com>-<b...@example.com>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[<b...@example.com>-<b...@example.com>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[Favorite > movie: <name of movie>-Favorite movie: <name of movie>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[Favorite > movie: <name of movie>-Favorite movie: <name of movie>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_escaping_tags[Favorite > movie: <name of movie>-Favorite movie: <name of movie>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags_is_safe[<scri<script>pt>alert(1)</scr</script>ipt>-pt>alert(1)ipt>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_stripping_tags_is_safe[<scri<scri<script>pt>pt>alert(1)</script>-pt>pt>alert(1)] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_allowed_styles > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_allowed_styles > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_allowed_styles > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_href_with_wrong_tag > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_disallowed_attr > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_disallowed_attr > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_disallowed_attr > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_unquoted_attr_values_are_quoted > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_unquoted_event_handler_attr_value > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_invalid_filter_attr > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_invalid_filter_attr > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_poster_attribute > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_poster_attribute > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_attributes_callable > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_attributes_wildcard > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_attributes_wildcard_callable > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_attributes_tag_callable > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_attributes_tag_callable > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_attributes_tag_list > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_attributes_list > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="javascript:alert('XSS')">xss</a>-kwargs0-<a>xss</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="file:///tmp/foo">foo</a>-kwargs1-<a>foo</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="myprotocol://more_text">allowed href</a>-kwargs2-<a > href="myprotocol://more_text">allowed href</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="http://example.com">invalid href</a>-kwargs3-<a>invalid href</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="#example.com">foo</a>-kwargs4-<a href="#example.com">foo</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="example.com">valid</a>-kwargs5-<a href="example.com">valid</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="example.com:8000">valid</a>-kwargs6-<a > href="example.com:8000">valid</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="localhost">valid</a>-kwargs7-<a href="localhost">valid</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="localhost:8000">valid</a>-kwargs8-<a href="localhost:8000">valid</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="192.168.100.100">valid</a>-kwargs9-<a href="192.168.100.100">valid</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="192.168.100.100:8000">valid</a>-kwargs10-<a > href="192.168.100.100:8000">valid</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="example.com">foo</a>-kwargs11-<a>foo</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="example.com:8000">foo</a>-kwargs12-<a>foo</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="localhost">foo</a>-kwargs13-<a>foo</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="localhost:8000">foo</a>-kwargs14-<a>foo</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="192.168.100.100">foo</a>-kwargs15-<a>foo</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="192.168.100.100:8000">foo</a>-kwargs16-<a>foo</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="javas	cript:alert(1)">alert</a>-kwargs17-<a>alert</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="javascript:alert(1)">alert</a>-kwargs18-<a>alert</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_uri_value_allowed_protocols[<a > href="http://example.com/?foo bar">foo</a>-kwargs19-<a > href="http://example.com/?foo bar">foo</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_svg_attr_val_allows_ref > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_svg_attr_val_allows_ref > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_svg_allow_local_href[<svg><pattern > id="patt1" href="#patt2"></pattern></svg>-<svg><pattern href="#patt2" > id="patt1"></pattern></svg>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_svg_allow_local_href[<svg><pattern > id="patt1" xlink:href="#patt2"></pattern></svg>-<svg><pattern id="patt1" > href="#patt2"></pattern></svg>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_svg_allow_local_href_nonlocal[<svg><pattern > id="patt1" href="https://example.com/patt"></pattern></svg>-<svg><pattern > id="patt1"></pattern></svg>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_svg_allow_local_href_nonlocal[<svg><pattern > id="patt1" > xlink:href="https://example.com/patt"></pattern></svg>-<svg><pattern > id="patt1"></pattern></svg>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_invisible_characters[1\x0723-1?23] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_invisible_characters[1\x0823-1?23] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_invisible_characters[1\x0b23-1?23] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_invisible_characters[1\x0c23-1?23] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_invisible_characters[import > y\x08ose\x08m\x08i\x08t\x08e\x08-import y?ose?m?i?t?e?] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_nonexistent_namespace > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_noscript_rawtag_[title-<noscript><title></noscript><img > src=x onerror=alert(1) />-<noscript><title></noscript><img src=x > onerror=alert(1) />] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_noscript_rawtag_[textarea-<noscript><textarea></noscript><img > src=x onerror=alert(1) />-<noscript><textarea></noscript><img src=x > onerror=alert(1) />] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_noscript_rawtag_[script-<noscript><script></noscript><img > src=x onerror=alert(1) />-<noscript><script></noscript><img src=x > onerror=alert(1) />] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_noscript_rawtag_[style-<noscript><style></noscript><img > src=x onerror=alert(1) />-<noscript><style></noscript><img src=x > onerror=alert(1) />] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_noscript_rawtag_[noembed-<noscript><noembed></noscript><img > src=x onerror=alert(1) />-<noscript><noembed></noscript><img src=x > onerror=alert(1) />] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_noscript_rawtag_[noframes-<noscript><noframes></noscript><img > src=x onerror=alert(1) />-<noscript><noframes></noscript><img src=x > onerror=alert(1) />] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_noscript_rawtag_[iframe-<noscript><iframe></noscript><img > src=x onerror=alert(1) />-<noscript><iframe></noscript><img src=x > onerror=alert(1) />] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_noscript_rawtag_[xmp-<noscript><xmp></noscript><img > src=x onerror=alert(1) />-<noscript><xmp></noscript><img src=x > onerror=alert(1) />] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_namespace_rc_data_element_strip_false[math-iframe-<math><iframe><img > src=x onerror=alert(1)>-<math><iframe><img src=x > onerror=alert(1)></iframe></math>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_namespace_rc_data_element_strip_false[math-script-<math><script><img > src=x onerror=alert(1)>-<math><script><img src=x > onerror=alert(1)></script></math>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_namespace_rc_data_element_strip_false[math-noembed-<math><noembed><img > src=x onerror=alert(1)>-<math><noembed><img src=x > onerror=alert(1)></noembed></math>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_namespace_rc_data_element_strip_false[math-style-<math><style><img > src=x onerror=alert(1)>-<math><style><img src=x > onerror=alert(1)></style></math>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_namespace_rc_data_element_strip_false[math-noframes-<math><noframes><img > src=x onerror=alert(1)>-<math><noframes><img src=x > onerror=alert(1)></noframes></math>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_namespace_rc_data_element_strip_false[math-noscript-<math><noscript><img > src=x onerror=alert(1)>-<math><noscript><img src=x > onerror=alert(1)></noscript></math>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_namespace_rc_data_element_strip_false[math-xmp-<math><xmp><img > src=x onerror=alert(1)>-<math><xmp><img src=x > onerror=alert(1)></xmp></math>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_namespace_rc_data_element_strip_false[svg-iframe-<svg><iframe><img > src=x onerror=alert(1)>-<svg><iframe><img src=x > onerror=alert(1)></iframe></svg>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_namespace_rc_data_element_strip_false[svg-script-<svg><script><img > src=x onerror=alert(1)>-<svg><script><img src=x > onerror=alert(1)></script></svg>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_namespace_rc_data_element_strip_false[svg-noembed-<svg><noembed><img > src=x onerror=alert(1)>-<svg><noembed><img src=x > onerror=alert(1)></noembed></svg>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_namespace_rc_data_element_strip_false[svg-style-<svg><style><img > src=x onerror=alert(1)>-<svg><style><img src=x > onerror=alert(1)></style></svg>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_namespace_rc_data_element_strip_false[svg-noframes-<svg><noframes><img > src=x onerror=alert(1)>-<svg><noframes><img src=x > onerror=alert(1)></noframes></svg>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_namespace_rc_data_element_strip_false[svg-noscript-<svg><noscript><img > src=x onerror=alert(1)>-<svg><noscript><img src=x > onerror=alert(1)></noscript></svg>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_namespace_rc_data_element_strip_false[svg-xmp-<svg><xmp><img > src=x onerror=alert(1)>-<svg><xmp><img src=x > onerror=alert(1)></xmp></svg>] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[1.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[2.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[3.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[4.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[5.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[6.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[7.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[8.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[9.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[10.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[11.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[12.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[13.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[14.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[15.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[16.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[17.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[18.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[19.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::test_regressions[20.test] > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::TestCleaner::test_basics > .pybuild/cpython3_3.8_bleach/build/tests/test_clean.py::TestCleaner::test_filters > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_allowed_css[<p > style="font-family: Arial; color: red; float: left; background-color: > red;">bar</p>-styles0-<p style="color: red;">bar</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_allowed_css[<p > style="border: 1px solid blue; color: red; float: left;">bar</p>-styles1-<p > style="color: red;">bar</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_allowed_css[<p > style="border: 1px solid blue; color: red; float: left;">bar</p>-styles2-<p > style="color: red; float: left;">bar</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_allowed_css[<p > style="color: red; float: left; padding: 1em;">bar</p>-styles3-<p > style="color: red; float: left;">bar</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_allowed_css[<p > style="color: red; float: left; padding: 1em;">bar</p>-styles4-<p > style="color: red;">bar</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_allowed_css[<p > style="cursor: -moz-grab;">bar</p>-styles5-<p style="cursor: > -moz-grab;">bar</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_allowed_css[<p > style="color: hsl(30,100%,50%);">bar</p>-styles6-<p style="color: > hsl(30,100%,50%);">bar</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_allowed_css[<p > style="color: rgba(255,0,0,0.4);">bar</p>-styles7-<p style="color: > rgba(255,0,0,0.4);">bar</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_allowed_css[<p > style="text-overflow: ',' ellipsis;">bar</p>-styles8-<p style="text-overflow: > ',' ellipsis;">bar</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_allowed_css[<p > style='text-overflow: "," ellipsis;'>bar</p>-styles9-<p style='text-overflow: > "," ellipsis;'>bar</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_allowed_css[<p > style='font-family: "Arial";'>bar</p>-styles10-<p style='font-family: > "Arial";'>bar</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_allowed_css[<p > style="font-family: \u30e1\u30a4\u30ea\u30aa; color: > blue;">bar</p>-styles11-<p style="color: blue;">bar</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_valid_css > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_valid_css > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_urls[<p > style="background: #00D;">foo</p>-<p style="background: #00D;">foo</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_urls[<p > style="background: url(topbanner.png) #00D;">foo</p>-<p style="background: > #00D;">foo</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_urls[<p > style="background: url('topbanner.png') #00D;">foo</p>-<p style="background: > #00D;">foo</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_urls[<p > style='background: url("topbanner.png") #00D;'>foo</p>-<p style="background: > #00D;">foo</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_urls[<p > style="background: url( 'topbanner.png') #00D;">foo</p>-<p > style="background: #00D;">foo</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_urls[<p > style="background: url('topbanner.png' ) #00D;">foo</p>-<p > style="background: #00D;">foo</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_urls[<p > style="background: url( 'topbanner.png' ) #00D;">foo</p>-<p > style="background: #00D;">foo</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_urls[<p > style="background: url ( 'topbanner.png' ) #00D;">foo</p>-<p > style="background: #00D;">foo</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_urls[<p > style="background: url	('topbanner.png') #00D;">foo</p>-<p > style="background: #00D;">foo</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_style_hang > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_css_parsing_with_entities[<p > style="font-family: Droid Sans, serif; white-space: > pre-wrap;">text</p>-styles0-<p style="font-family: Droid Sans, serif; > white-space: pre-wrap;">text</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_css_parsing_with_entities[<p > style="font-family: "Droid Sans", serif; white-space: > pre-wrap;">text</p>-styles1-<p style='font-family: "Droid Sans", serif; > white-space: pre-wrap;'>text</p>] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_css_parsing_gauntlet_regex_backtracking["] > .pybuild/cpython3_3.8_bleach/build/tests/test_css.py::test_css_parsing_gauntlet_regex_backtracking[-] > .pybuild/cpython3_3.8_bleach/build/tests/test_linkify.py::test_linkify_filter[abc-abc] > .pybuild/cpython3_3.8_bleach/build/tests/test_linkify.py::test_linkify_filter[example.com-<a > href="http://example.com">example.com</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_linkify.py::test_linkify_filter[http://example.com?b=1&c=2-<a > href="http://example.com?b=1&c=2">http://example.com?b=1&c=2</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_linkify.py::test_linkify_filter[http://example.com?b=1&c=2-<a > href="http://example.com?b=1&c=2">http://example.com?b=1&c=2</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_linkify.py::test_linkify_filter[link: > https://example.com/watch#anchor-link: <a > href="https://example.com/watch#anchor">https://example.com/watch#anchor</a>] > .pybuild/cpython3_3.8_bleach/build/tests/test_unicode.py::test_japanese_safe_simple > .pybuild/cpython3_3.8_bleach/build/tests/test_unicode.py::test_japanese_strip > .pybuild/cpython3_3.8_bleach/build/tests/test_unicode.py::test_japanese_strip > .pybuild/cpython3_3.8_bleach/build/tests/test_unicode.py::test_russian_simple > .pybuild/cpython3_3.8_bleach/build/tests/test_unicode.py::test_mixed > /usr/lib/python3/dist-packages/html5lib/filters/sanitizer.py:771: > DeprecationWarning: html5lib's sanitizer is deprecated; see > https://github.com/html5lib/html5lib-python/issues/443 and please let us know > if Bleach is unsuitable for your needs > warnings.warn(_deprecation_msg, DeprecationWarning) > > -- Docs: https://docs.pytest.org/en/latest/warnings.html > ======== 3 failed, 332 passed, 3 xfailed, 278 warnings in 1.10 seconds > ========= > E: pybuild pybuild:352: test: plugin distutils failed with: exit code=1: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_bleach/build; python3.8 -m pytest tests > dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.8 > returned exit code 13 The full build log is available from: http://qa-logs.debian.net/2020/08/02/python-bleach_3.1.5-2_unstable.log A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute! About the archive rebuild: The rebuild was done on EC2 VM instances from Amazon Web Services, using a clean, minimal and up-to-date chroot. Every failed build was retried once to eliminate random failures.