86>Sep 14 10:21:52 userdel[1752879]: delete user 'rooter'
<86>Sep 14 10:21:52 userdel[1752879]: removed group 'rooter' owned by 'rooter'
<86>Sep 14 10:21:52 userdel[1752879]: removed shadow group 'rooter' owned by 'rooter'
<86>Sep 14 10:21:52 groupadd[1752908]: group added to /etc/group: name=rooter, GID=681
<86>Sep 14 10:21:52 groupadd[1752908]: group added to /etc/gshadow: name=rooter
<86>Sep 14 10:21:52 groupadd[1752908]: new group: name=rooter, GID=681
<86>Sep 14 10:21:52 useradd[1752928]: new user: name=rooter, UID=681, GID=681, home=/root, shell=/bin/bash
<86>Sep 14 10:21:52 userdel[1752940]: delete user 'builder'
<86>Sep 14 10:21:52 userdel[1752940]: removed group 'builder' owned by 'builder'
<86>Sep 14 10:21:52 userdel[1752940]: removed shadow group 'builder' owned by 'builder'
<86>Sep 14 10:21:52 groupadd[1752954]: group added to /etc/group: name=builder, GID=682
<86>Sep 14 10:21:52 groupadd[1752954]: group added to /etc/gshadow: name=builder
<86>Sep 14 10:21:52 groupadd[1752954]: new group: name=builder, GID=682
<86>Sep 14 10:21:52 useradd[1752965]: new user: name=builder, UID=682, GID=682, home=/usr/src, shell=/bin/bash
<13>Sep 14 10:21:54 rpmi: libgdbm-1.8.3-alt10 sisyphus+278100.1600.1.1 1626059138 installed
<13>Sep 14 10:21:54 rpmi: libexpat-2.2.10-alt1 sisyphus+276608.100.1.2 1625153360 installed
<13>Sep 14 10:21:54 rpmi: libp11-kit-0.23.15-alt2 sisyphus+278382.100.1.2 1626190687 installed
<13>Sep 14 10:21:54 rpmi: libtasn1-4.17.0-alt1 sisyphus+276722.100.1.1 1625211286 installed
<13>Sep 14 10:21:54 rpmi: rpm-macros-alternatives-0.5.1-alt1 sisyphus+278157.100.2.1 1626055790 installed
<13>Sep 14 10:21:54 rpmi: alternatives-0.5.1-alt1 sisyphus+278157.100.2.1 1626055790 installed
<13>Sep 14 10:21:54 rpmi: ca-certificates-2021.06.03-alt1 sisyphus+273509.400.1.1 1622736045 installed
<13>Sep 14 10:21:54 rpmi: ca-trust-0.1.2-alt1 sisyphus+233348.100.1.1 1561653823 installed
<13>Sep 14 10:21:54 rpmi: p11-kit-trust-0.23.15-alt2 sisyphus+278382.100.1.2 1626190687 installed
<13>Sep 14 10:21:54 rpmi: libcrypto1.1-1.1.1l-alt1 sisyphus+283685.100.1.1 1629816097 installed
<13>Sep 14 10:21:54 rpmi: libssl1.1-1.1.1l-alt1 sisyphus+283685.100.1.1 1629816097 installed
<13>Sep 14 10:21:54 rpmi: python3-3.9.6-alt2 sisyphus+283178.100.2.1 1629243244 installed
<13>Sep 14 10:21:55 rpmi: python3-base-3.9.6-alt2 sisyphus+283178.100.2.1 1629243244 installed
<13>Sep 14 10:21:55 rpmi: libpython3-3.9.6-alt2 sisyphus+283178.100.2.1 1629243244 installed
<13>Sep 14 10:21:55 rpmi: tests-for-installed-python3-pkgs-0.1.17-alt1 sisyphus+271082.100.1.1 1619820927 installed
<13>Sep 14 10:21:55 rpmi: rpm-build-python3-0.1.17-alt1 sisyphus+271082.100.1.1 1619820927 installed
<13>Sep 14 10:21:57 rpmi: python3-module-six-1.16.0-alt1 sisyphus+283489.100.2.1 1629527308 installed
<13>Sep 14 10:21:57 rpmi: python3-module-genshi-0.7.4-alt2 sisyphus+275930.100.2.1 1624873830 installed
<13>Sep 14 10:21:57 rpmi: python3-module-webencodings-0.5.1-alt2 sisyphus+276020.100.1.1 1624812421 installed
<13>Sep 14 10:21:57 rpmi: libxslt-1.1.34-alt3 sisyphus+275636.100.1.1 1624616871 installed
<13>Sep 14 10:21:57 rpmi: python3-module-html5lib-1:1.1-alt1 sisyphus+278096.120.5.1 1626086978 installed
<13>Sep 14 10:21:57 rpmi: python3-module-cssselect-0.9.1-alt3 sisyphus+270533.2600.6.1 1619684675 installed
<13>Sep 14 10:21:58 rpmi: python3-module-lxml-4.6.3.0.16.git5ecb40bc-alt1 sisyphus+279721.1500.1.1 1626648645 installed
<13>Sep 14 10:21:58 rpmi: libpython-2.7.18-alt7 sisyphus+284067.100.1.1 1630124815 installed
<13>Sep 14 10:21:58 rpmi: python2-base-2.7.18-alt7 sisyphus+284067.100.1.1 1630124815 installed
<13>Sep 14 10:21:58 rpmi: python-modules-encodings-2.7.18-alt7 sisyphus+284067.100.1.1 1630124815 installed
<13>Sep 14 10:21:58 rpmi: python-modules-compiler-2.7.18-alt7 sisyphus+284067.100.1.1 1630124815 installed
<13>Sep 14 10:21:58 rpmi: python-modules-email-2.7.18-alt7 sisyphus+284067.100.1.1 1630124815 installed
<13>Sep 14 10:21:58 rpmi: python-modules-unittest-2.7.18-alt7 sisyphus+284067.100.1.1 1630124815 installed
<13>Sep 14 10:21:58 rpmi: python-modules-2.7.18-alt7 sisyphus+284067.100.1.1 1630124815 installed
<13>Sep 14 10:21:58 rpmi: python-modules-ctypes-2.7.18-alt7 sisyphus+284067.100.1.1 1630124815 installed
<13>Sep 14 10:21:58 rpmi: python-modules-multiprocessing-2.7.18-alt7 sisyphus+284067.100.1.1 1630124815 installed
<13>Sep 14 10:21:58 rpmi: python-modules-logging-2.7.18-alt7 sisyphus+284067.100.1.1 1630124815 installed
<13>Sep 14 10:21:58 rpmi: python-tools-2to3-2.7.18-alt7 sisyphus+284067.100.1.1 1630124815 installed
<13>Sep 14 10:21:58 rpmi: python3-module-simplejson-3.17.2-alt1 sisyphus+277069.20.5.1 1625400722 installed
<13>Sep 14 10:21:58 rpmi: python3-module-nose-1:1.3.7-alt8.git20160316 sisyphus+281251.200.1.1 1627478276 installed
Building target platforms: i586
Building for target i586
Wrote: /usr/src/in/nosrpm/python3-module-strainer-0.1.4-alt3.nosrc.rpm (w1.gzdio)
<13>Sep 14 10:22:00 rpmi: python3-module-pkg_resources-1:57.4.0-alt1 sisyphus+280768.100.2.1 1627367207 installed
<13>Sep 14 10:22:00 rpmi: libncurses-6.2.20210123-alt2 sisyphus+283886.200.2.1 1630022624 installed
<13>Sep 14 10:22:00 rpmi: libtinfo-devel-6.2.20210123-alt2 sisyphus+283886.200.2.1 1630022624 installed
<13>Sep 14 10:22:00 rpmi: libncurses-devel-6.2.20210123-alt2 sisyphus+283886.200.2.1 1630022624 installed
<13>Sep 14 10:22:00 rpmi: python3-dev-3.9.6-alt2 sisyphus+283178.100.2.1 1629243244 installed
<13>Sep 14 10:22:00 rpmi: python3-module-setuptools-1:57.4.0-alt1 sisyphus+280768.100.2.1 1627367207 installed
Installing python3-module-strainer-0.1.4-alt3.src.rpm
Building target platforms: i586
Building for target i586
Executing(%prep): /bin/sh -e /usr/src/tmp/rpm-tmp.1380
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ rm -rf python3-module-strainer-0.1.4
+ echo 'Source #0 (python3-module-strainer-0.1.4.tar):'
Source #0 (python3-module-strainer-0.1.4.tar):
+ /bin/tar -xf /usr/src/RPM/SOURCES/python3-module-strainer-0.1.4.tar
+ cd python3-module-strainer-0.1.4
+ /bin/chmod -c -Rf u+rwX,go-w .
+ find ./ -type f -name '*.py' -exec 2to3 -w -n '{}' +
RefactoringTool: Skipping optional fixer: buffer
RefactoringTool: Skipping optional fixer: idioms
RefactoringTool: Skipping optional fixer: set_literal
RefactoringTool: Skipping optional fixer: ws_comma
RefactoringTool: Refactored ./strainer/xhtmlify.py
--- ./strainer/xhtmlify.py (original)
+++ ./strainer/xhtmlify.py (refactored)
@@ -1,6 +1,6 @@
#!/usr/bin/env python
"""An HTML to XHTML converter."""
-import re, htmlentitydefs, codecs
+import re, html.entities, codecs
import encodings.aliases
@@ -67,9 +67,9 @@
# character reference
try:
if text[:3] in ("", ""):
- c = unichr(int(text[3:-1], 16))
+ c = chr(int(text[3:-1], 16))
else:
- c = unichr(int(text[2:-1], 10))
+ c = chr(int(text[2:-1], 10))
except ValueError:
pass
else:
@@ -88,7 +88,7 @@
if name in ['amp', 'lt', 'gt', 'quot', 'apos']:
return text
else:
- cp = htmlentitydefs.name2codepoint.get(name)
+ cp = html.entities.name2codepoint.get(name)
if cp:
return '%x;' % cp
else:
@@ -250,7 +250,7 @@
encodingdecl = ''
if encoding is not None:
EncName_re = re.compile(r'[A-Za-z][A-Za-z0-9._-]*\Z') # from XML spec
- if isinstance(encoding, basestring) and EncName_re.match(encoding):
+ if isinstance(encoding, str) and EncName_re.match(encoding):
encodingdecl = ' encoding="%s"' % encoding
else:
# Don't tell them expected format, guessing won't help
@@ -277,7 +277,7 @@
EOS = r'\Z' # end of string regexp
starts_utf16_re = re.compile('utf[_-]?16', re.IGNORECASE)
bomless_utf16_re = re.compile('utf[_-]?16[_-]?[bl]e\Z', re.IGNORECASE)
- unicode_input = isinstance(xml, unicode)
+ unicode_input = isinstance(xml, str)
if not re.match(r'1\.[0-9]+' + EOS, default_version):
raise ValueError("Bad default XML declaration version")
if encoding is not None:
@@ -292,9 +292,9 @@
# begin with the Byte Order Mark".
if not unicode_input and not (xml.startswith(codecs.BOM_UTF16_LE) or
xml.startswith(codecs.BOM_UTF16_BE)):
- xml = u'\ufeff'.encode(encoding) + xml
+ xml = '\ufeff'.encode(encoding) + xml
elif unicode_input and bomless_utf16_re.match(encoding):
- xml = u'\ufeff' + xml
+ xml = '\ufeff' + xml
# "else: pass"; Python adds the BOM when encoding unicode as UTF-16
if unicode_input:
if encoding:
@@ -314,7 +314,7 @@
if bomless_utf16_re.match(enc):
# These need a BOM prefix according to the spec but the default
# Python encodings of that name don't provide one.
- prefix = encode(u'\ufeff')
+ prefix = encode('\ufeff')
else:
prefix = encode('')
chars_we_need = ('''abcdefghijklmnopqrstuvwxyz'''
@@ -456,12 +456,12 @@
any = lambda *args: '(?:%s)*' % '|'.join(args)
some = lambda *args: '(?:%s)+' % '|'.join(args)
named = lambda name, regexp: '(?P<%s>%s)' % (name, regexp)
- NameStartChar = (u'[:A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D'
- u'\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF'
- u'\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]')
- if len(u'\U00010000')==1:
- NameStartChar = NameStartChar[:-1] + u'\U00010000-\U000EFFFF]'
- NameChar = NameStartChar[:-1] + u"0-9\xB7\u0300-\u036F\u203F-\u2040\-]"
+ NameStartChar = ('[:A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D'
+ '\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF'
+ '\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]')
+ if len('\U00010000')==1:
+ NameStartChar = NameStartChar[:-1] + '\U00010000-\U000EFFFF]'
+ NameChar = NameStartChar[:-1] + "0-9\xB7\u0300-\u036F\u203F-\u2040\-]"
Name = NameStartChar + any(NameChar)
Nmtoken = some(NameChar)
quoted = oneof('"[^<>"]*"', "'[^<>']*'")
@@ -578,25 +578,25 @@
html = fix_xmldecl(html, encoding=encoding, add_encoding=False)
if not encoding:
encoding = sniff_encoding(html)
- unicode_input = isinstance(html, unicode)
+ unicode_input = isinstance(html, str)
if unicode_input:
html = html.encode(encoding, 'strict')
if not isinstance(html, str):
raise TypeError("Expected string, got %s" % type(html))
html = html.decode(encoding, 'replace')
# "in HTML, the Formfeed character (U+000C) is treated as white space"
- html = html.replace(u'\u000C', u' ')
+ html = html.replace('\u000C', ' ')
# Replace disallowed characters with U+FFFD (unicode replacement char)
- if len(u'\U00010000')==1:
+ if len('\U00010000')==1:
html = re.sub( # XML 1.0 section 2.2, "Char" production
- u'[^\x09\x0A\x0D\u0020-\uD7FF\uE000-\uFFFD'
- u'\U00010000-\U0010FFFF]', # <-- 32 bit characters
- u'\N{replacement character}', html)
+ '[^\x09\x0A\x0D\u0020-\uD7FF\uE000-\uFFFD'
+ '\U00010000-\U0010FFFF]', # <-- 32 bit characters
+ '\N{replacement character}', html)
else:
# Replace 32-bit characters, this Python build doesn't support them
html = re.sub( # XML 1.0 section 2.2, "Char" production
- u'[^\x09\x0A\x0D\u0020-\uD7FF\uE000-\uFFFD]',
- u'\N{replacement character}', html)
+ '[^\x09\x0A\x0D\u0020-\uD7FF\uE000-\uFFFD]',
+ '\N{replacement character}', html)
def ERROR(message, charpos=None):
if charpos is None:
@@ -616,7 +616,7 @@
# Output the XML declaration and doctype, if they exist.
doctype, lastpos = fix_doctype(html)
output(doctype)
- if html.startswith('')+1
if not doctype:
output(html[:pos])
@@ -780,7 +780,7 @@
try:
assert xhtml==xhtmlify(xhtml)
except ValidationError:
- print xhtml
+ print(xhtml)
raise
xmlparse(re.sub('(?s)', '', xhtml)) # ET can't handle
if len(sys.argv)==2:
@@ -790,13 +790,13 @@
def xmlparse(snippet, encoding=None, wrap=None):
"""Parse snippet as XML with ElementTree/expat. By default it wraps the
snippet in an outer element before parsing (unless the
- snippet starts "\n%s\n' % snippet
else:
input = snippet
- if isinstance(snippet, unicode):
+ if isinstance(snippet, str):
if not encoding:
encoding = sniff_encoding(snippet)
input = input.encode(encoding)
parser.feed(input)
parser.close()
- except xml.parsers.expat.ExpatError, e:
+ except xml.parsers.expat.ExpatError as e:
lineno, offset = e.lineno, e.offset
lineno -= 1
if lineno==input.count('\n'): # last line =>
@@ -835,7 +835,7 @@
"""Detects the XML encoding as per XML 1.0 section F.1."""
if isinstance(xml, str):
xmlstr = xml
- elif isinstance(xml, basestring):
+ elif isinstance(xml, str):
xmlstr = xml.encode('utf-8')
else:
raise TypeError('Expected a string, got %r' % type(xml))
@@ -845,7 +845,7 @@
encode = codecs.lookup(enc).incrementalencoder().encode
prefix = encode('') # any header such as a UTF-8 BOM
if enc in ('utf_16_le', 'utf_16_be'):
- prefix = u'\ufeff'.encode(enc) # the standard approach fails
+ prefix = '\ufeff'.encode(enRefactoringTool: Refactored ./strainer/wellformed.py
RefactoringTool: Refactored ./strainer/validate.py
RefactoringTool: Refactored ./strainer/operators.py
c) # the standard approach fails
L = lambda s: re.escape(encode(s)) # encoded form of literal s
optional = lambda s: '(?:%s)?' % s
oneof = lambda opts: '(?:%s)' % '|'.join(opts)
--- ./strainer/wellformed.py (original)
+++ ./strainer/wellformed.py (refactored)
@@ -1,7 +1,7 @@
"""Performs basic XHTML wellformedness checks."""
import xml.sax
import xml.sax.handler
-import htmlentitydefs
+import html.entities
from xml.sax._exceptions import SAXParseException
@@ -17,7 +17,7 @@
"""Calls is_wellformed_xml with doctype=DOCTYPE_XHTML1_STRICT
and entitydefs=htmlentitydefs.entitydefs."""
return is_wellformed_xml(docpart, doctype=DOCTYPE_XHTML1_STRICT,
- entitydefs=htmlentitydefs.entitydefs,
+ entitydefs=html.entities.entitydefs,
record_error=record_error)
def is_wellformed_xml(docpart, doctype='', entitydefs={}, record_error=None):
@@ -47,7 +47,7 @@
parser.feed(doc)
parser.close()
return True
- except SAXParseException, e: # catches our exception and other parse errors
+ except SAXParseException as e: # catches our exception and other parse errors
if record_error is not None:
line, column = e.getLineNumber(), e.getColumnNumber()
# Correct location to account for our adding a doctype prefix.
--- ./strainer/validate.py (original)
+++ ./strainer/validate.py (refactored)
@@ -2,7 +2,7 @@
import lxml.etree # the stdlib's expat parser can't do validation
import os
import re
-import urlparse
+import urllib.parse
try:
import demjson as json # most accurate JSON validator AFAIK
@@ -60,7 +60,7 @@
DOCTYPE_XHTML1_TRANSITIONAL or DOCTYPE_XHTML1_FRAMESET."""
try:
lxml.etree.fromstring(doctype + xhtml, parser=_get_parser())
- except lxml.etree.XMLSyntaxError, e:
+ except lxml.etree.XMLSyntaxError as e:
# Try to fix up the error message so line numbers are
# relative to xhtml.
tline = doctype.count('\n')
@@ -85,7 +85,7 @@
xhtml = doctype + (template % xhtml_fragment)
try:
lxml.etree.fromstring(xhtml, parser=_get_parser())
- except lxml.etree.XMLSyntaxError, e:
+ except lxml.etree.XMLSyntaxError as e:
# Try to fix up the error message so line numbers are
# relative to the fragment.
message = re.sub(r'line (\d+)',
@@ -97,5 +97,5 @@
"""Validates that json is a valid JSON string (by loading it)."""
try:
json.loads(jsonstr)
- except ValueError, e:
+ except ValueError as e:
raise JSONSyntaxError(str(e))
--- ./strainer/operators.py (original)
+++ ./strainer/operators.py (refactored)
@@ -1,11 +1,11 @@
-from xhtmlify import xhtmlify, XMLParsingError, ValidationError
+from .xhtmlify import xhtmlify, XMLParsingError, ValidationError
from xml.etree import ElementTree as etree
from xml.parsers.expat import ExpatError
import copy, re
from pprint import pformat, pprint
from simplejson import loads
from nose.tools import *
-from almostequal import approx_equal
+from .almostequal import approx_equal
import strainer.log as log
log = log.log
@@ -32,7 +32,7 @@
def replace_escape_chars(needle):
needle = needle.replace(' ', ' ')
- needle = needle.replace(u'\xa0', ' ')
+ needle = needle.replace('\xa0', ' ')
return needle
def normalize_to_xhtml(needle):
@@ -42,7 +42,7 @@
needle = xhtmlify(needle)
try:
needle_node = etree.fromstring(needle)
- except ExpatError, e:
+ except ExpatError as e:
raise XMLParsingError('Could not parse %s into xml. %s'%(needle, e.args[0]))
needle_node = remove_whitespace_nodes(needle_node)
remove_namespace(needle_node)
@@ -52,11 +52,11 @@
def in_xhtml(needle, haystack):
try:
needle_s = normalize_to_xhtml(needle)
- except ValidationError, e:
+ except ValidationError as e:
raise XMLParsingError('Could not parse needle: %s into xml. %s'%(needle, e.message))
try:
haystack_s = norRefactoringTool: Refactored ./strainer/middleware.py
malize_to_xhtml(haystack)
- except ValidationError, e:
+ except ValidationError as e:
raise XMLParsingError('Could not parse haystack: %s into xml. %s'%(haystack, e.message))
return needle_s in haystack_s
@@ -66,11 +66,11 @@
haystack = '
%s
'
try:
needle_s = normalize_to_xhtml(needle)
- except ValidationError, e:
+ except ValidationError as e:
raise XMLParsingError('Could not parse needle: %s into xml. %s'%(needle, e.message))
try:
haystack_s = normalize_to_xhtml(haystack)
- except ValidationError, e:
+ except ValidationError as e:
raise XMLParsingError('Could not parse haystack: %s into xml. %s'%(haystack, e.message))
return needle_s == haystack_s
@@ -89,7 +89,7 @@
def assert_raises(exc, method, *args, **kw):
try:
method(*args, **kw)
- except exc, e:
+ except exc as e:
return e
else:
raise AssertionError('%s() did not raise %s' % (method.__name__, exc.__name__))
@@ -135,7 +135,7 @@
del cb[key]
#this needs to be recursive so we can '&ignore'-out ids anywhere in a json stream
- for key in set(ca.keys() + cb.keys()):
+ for key in set(list(ca.keys()) + list(cb.keys())):
if key not in ca:
log.error('%s!= %s\n key "%s" not in first argument' %(ca, cb, key))
return False
@@ -149,7 +149,7 @@
if v1 == '&ignore' or v2 == '&ignore':
log.info('Ignored comparison for key: %s', key)
continue
- if not isinstance(v2, basestring) and isinstance(v1, basestring):
+ if not isinstance(v2, str) and isinstance(v1, str):
if not eq_pprint(type(v1), type(v2)):
log.error('The types of values for "%s" do not match (%s vs. %s)' %(key, v1, v2))
return False
@@ -177,9 +177,9 @@
return _eq_dict(ca, cb, ignore=ignore)
def eq_json(a, b):
- if isinstance(a, basestring):
+ if isinstance(a, str):
a = loads(a)
- if isinstance(b, basestring):
+ if isinstance(b, str):
b = loads(b)
eq_dict(a, b)
@@ -187,5 +187,5 @@
return True
-__all__ = [_key for _key in locals().keys() if not _key.startswith('_')]
+__all__ = [_key for _key in list(locals().keys()) if not _key.startswith('_')]
--- ./strainer/middleware.py (original)
+++ ./strainer/middleware.py (refactored)
@@ -1,11 +1,11 @@
"""Provides WSGI middleware for validating and tidying HTML output."""
import re
-import xhtmlify
+from . import xhtmlify
import logging
try:
- from cStringIO import StringIO
+ from io import StringIO
except ImportError:
- from StringIO import StringIO
+ from io import StringIO
__all__ = ['XHTMLValidatorMiddleware', 'XHTMLifyMiddleware',
@@ -50,7 +50,7 @@
return response
try:
- from validate import validate_xhtml, XHTMLSyntaxError
+ from .validate import validate_xhtml, XHTMLSyntaxError
class XHTMLValidatorMiddleware(BufferingMiddleware):
def __init__(self, app, doctype='', record_error=LOG.error):
@@ -66,7 +66,7 @@
if content_type in ('text/html', 'application/xml+html'):
try:
validate_xhtml(response, doctype=self.doctype)
- except XHTMLSyntaxError, e:
+ except XHTMLSyntaxError as e:
self.record_error(str(e))
return response
except ImportError:
@@ -92,7 +92,7 @@
return response
-from wellformed import is_wellformed_xhtml, is_wellformed_xml
+from .wellformed import is_wellformed_xhtml, is_wellformed_xml
class WellformednessCheckerMiddleware(BufferingMiddleware):
"""Checks that served webpages are well-formed HTML/XHTML/XML,
@@ -119,7 +119,7 @@
is_wellformed_xml(response, record_error=self.record_error)
return response
-from validate import validate_json, JSONSyntaxError
+from .validate import validate_json, JSONSyntaxError
class JSONValidatorMiddleware(BufferingMiddleware):
def __init__(sRefactoringTool: No changes to ./strainer/log.py
RefactoringTool: No changes to ./strainer/doctypes.py
RefactoringTool: Refactored ./strainer/case.py
RefactoringTool: No changes to ./strainer/almostequal.py
RefactoringTool: No changes to ./setup.py
RefactoringTool: Files that were modified:
RefactoringTool: ./strainer/xhtmlify.py
RefactoringTool: ./strainer/wellformed.py
RefactoringTool: ./strainer/validate.py
RefactoringTool: ./strainer/operators.py
RefactoringTool: ./strainer/middleware.py
RefactoringTool: ./strainer/log.py
RefactoringTool: ./strainer/doctypes.py
RefactoringTool: ./strainer/case.py
RefactoringTool: ./strainer/almostequal.py
RefactoringTool: ./setup.py
elf, app, doctype='', record_error=LOG.error):
@@ -134,6 +134,6 @@
if content_type=='text/json':
try:
validate_json(response)
- except JSONSyntaxError, e:
+ except JSONSyntaxError as e:
self.record_error(str(e))
return response
--- ./strainer/case.py (original)
+++ ./strainer/case.py (refactored)
@@ -1,5 +1,5 @@
import sys
-from cStringIO import StringIO
+from io import StringIO
import inspect
import traceback
@@ -81,7 +81,7 @@
klass = cls
break
else:
- raise AttributeError('%s not found on %s' % (func.__name__, func.im_class.__name__))
+ raise AttributeError('%s not found on %s' % (func.__name__, func.__self__.__class__.__name__))
superfunc = getattr(super(klass, self), func.__name__)
#superfunc is bound, so "self" is implied
#Args and KW needed?
@@ -90,7 +90,7 @@
superfunc(klass.__base__)
else:
superfunc()
- except Exception, e:
+ except Exception as e:
if delay:
append_delayed_and_print_traceback(e)
else:
@@ -101,7 +101,7 @@
#During
try:
ret = func(self)
- except Exception, e:
+ except Exception as e:
if delay:
append_delayed_and_print_traceback(e)
else:
@@ -122,7 +122,7 @@
'''Like the nose tool of the same name, but returns the exception raised so that args can be checked'''
try:
ret = method(*args, **kwargs)
- except exc, e:
+ except exc as e:
return e
else:
raise AssertionError('The expected exception (%s) was not raised' % exc.__name__)
++ find ./ -name '*.py'
+ sed -i 's|#!/usr/bin/env python|#!/usr/bin/env python3|' ./strainer/xhtmlify.py ./strainer/wellformed.py ./strainer/validate.py ./strainer/operators.py ./strainer/middleware.py ./strainer/log.py ./strainer/doctypes.py ./strainer/case.py ./strainer/almostequal.py ./strainer/__init__.py ./setup.py
+ exit 0
Executing(%build): /bin/sh -e /usr/src/tmp/rpm-tmp.82741
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ cd python3-module-strainer-0.1.4
+ CFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic'
+ export CFLAGS
+ CXXFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic'
+ export CXXFLAGS
+ FFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic'
+ export FFLAGS
+ /usr/bin/python3 setup.py build --debug
running build
running build_py
creating build
creating build/lib
creating build/lib/strainer
copying strainer/__init__.py -> build/lib/strainer
copying strainer/almostequal.py -> build/lib/strainer
copying strainer/case.py -> build/lib/strainer
copying strainer/doctypes.py -> build/lib/strainer
copying strainer/log.py -> build/lib/strainer
copying strainer/middleware.py -> build/lib/strainer
copying strainer/operators.py -> build/lib/strainer
copying strainer/validate.py -> build/lib/strainer
copying strainer/wellformed.py -> build/lib/strainer
copying strainer/xhtmlify.py -> build/lib/strainer
running egg_info
writing strainer.egg-info/PKG-INFO
writing dependency_links to strainer.egg-info/dependency_links.txt
writing entry points to strainer.egg-info/entry_points.txt
writing top-level names to strainer.egg-info/top_level.txt
reading manifest file 'strainer.egg-info/SOURCES.txt'
writing manifest file 'strainer.egg-info/SOURCES.txt'
+ exit 0
Executing(%install): /bin/sh -e /usr/src/tmp/rpm-tmp.77951
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ /bin/chmod -Rf u+rwX -- /usr/src/tmp/python3-module-strainer-buildroot
+ :
+ /bin/rm -rf -- /usr/src/tmp/python3-module-strainer-buildroot
+ PATH=/usr/libexec/rpm-build:/usr/src/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games
+ cd python3-module-strainer-0.1.4
+ CFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic'
+ export CFLAGS
+ CXXFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic'
+ export CXXFLAGS
+ FFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -flto=auto -march=i586 -mtune=generic'
+ export FFLAGS
+ /usr/bin/python3 setup.py install --skip-build --root=/usr/src/tmp/python3-module-strainer-buildroot --force
running install
running install_lib
creating /usr/src/tmp/python3-module-strainer-buildroot
creating /usr/src/tmp/python3-module-strainer-buildroot/usr
creating /usr/src/tmp/python3-module-strainer-buildroot/usr/lib
creating /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3
creating /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages
creating /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer
copying build/lib/strainer/xhtmlify.py -> /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer
copying build/lib/strainer/wellformed.py -> /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer
copying build/lib/strainer/validate.py -> /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer
copying build/lib/strainer/operators.py -> /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer
copying build/lib/strainer/middleware.py -> /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer
copying build/lib/strainer/log.py -> /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer
copying build/lib/strainer/doctypes.py -> /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer
copying build/lib/strainer/case.py -> /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer
copying build/lib/strainer/almostequal.py -> /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer
copying build/lib/strainer/__init__.py -> /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer
byte-compiling /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/xhtmlify.py to xhtmlify.cpython-39.pyc
byte-compiling /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/wellformed.py to wellformed.cpython-39.pyc
byte-compiling /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/validate.py to validate.cpython-39.pyc
byte-compiling /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/operators.py to operators.cpython-39.pyc
byte-compiling /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/middleware.py to middleware.cpython-39.pyc
byte-compiling /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/log.py to log.cpython-39.pyc
byte-compiling /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/doctypes.py to doctypes.cpython-39.pyc
byte-compiling /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/case.py to case.cpython-39.pyc
byte-compiling /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/almostequal.py to almostequal.cpython-39.pyc
byte-compiling /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/__init__.py to __init__.cpython-39.pyc
running install_egg_info
running egg_info
writing strainer.egg-info/PKG-INFO
writing dependency_links to strainer.egg-info/dependency_links.txt
writing entry points to strainer.egg-info/entry_points.txt
writing top-level names to strainer.egg-info/top_level.txt
reading manifest file 'strainer.egg-info/SOURCES.txt'
writing manifest file 'strainer.egg-info/SOURCES.txt'
Copying strainer.egg-info to /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer-0.1.4-py3.9.egg-info
running install_scripts
+ /usr/lib/rpm/brp-alt
Cleaning files in /usr/src/tmp/python3-module-strainer-buildroot (auto)
Verifying and fixing files in /usr/src/tmp/python3-module-strainer-buildroot (binconfig,pkgconfig,libtool,desktop,gnuconfig)
Checking contents of files in /usr/src/tmp/python3-module-strainer-buildroot/ (default)
Compressing files in /usr/src/tmp/python3-module-strainer-buildroot (auto)
Adjusting library links in /usr/src/tmp/python3-module-strainer-buildroot
./usr/lib: (from :0)
Verifying ELF objects in /usr/src/tmp/python3-module-strainer-buildroot (arch=normal,fhs=normal,lfs=relaxed,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal)
Bytecompiling python3 modules in /usr/src/tmp/python3-module-strainer-buildroot using /usr/bin/python3
unlink /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-39.pyc
unlink /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/__pycache__/almostequal.cpython-39.pyc
unlink /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/__pycache__/case.cpython-39.pyc
unlink /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-39.pyc
unlink /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-39.pyc
unlink /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/__pycache__/middleware.cpython-39.pyc
unlink /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/__pycache__/operators.cpython-39.pyc
unlink /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/__pycache__/validate.cpython-39.pyc
unlink /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/__pycache__/wellformed.cpython-39.pyc
unlink /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/__pycache__/xhtmlify.cpython-39.pyc
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/__init__.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/almostequal.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/case.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/doctypes.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/log.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/middleware.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/operators.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/validate.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/wellformed.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/xhtmlify.py
Bytecompiling python3 modules with optimization in /usr/src/tmp/python3-module-strainer-buildroot using /usr/bin/python3 -O
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/__init__.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/almostequal.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/case.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/doctypes.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/log.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/middleware.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/operators.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/validate.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/wellformed.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/xhtmlify.py
Bytecompiling python3 modules with optimization-2 in /usr/src/tmp/python3-module-strainer-buildroot using /usr/bin/python3 -OO
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/__init__.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/almostequal.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/case.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/doctypes.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/log.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/middleware.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/operators.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/validate.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/wellformed.py
compile /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/xhtmlify.py
Hardlinking identical .pyc and .opt-?.pyc files
'./usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-39.opt-1.pyc' => './usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-39.pyc'
'./usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-39.opt-2.pyc' => './usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-39.opt-1.pyc'
'./usr/lib/python3/site-packages/strainer/__pycache__/case.cpython-39.opt-1.pyc' => './usr/lib/python3/site-packages/strainer/__pycache__/case.cpython-39.pyc'
'./usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-39.opt-1.pyc' => './usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-39.pyc'
'./usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-39.opt-2.pyc' => './usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-39.opt-1.pyc'
'./usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-39.opt-1.pyc' => './usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-39.pyc'
'./usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-39.opt-2.pyc' => './usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-39.opt-1.pyc'
'./usr/lib/python3/site-packages/strainer/__pycache__/middleware.cpython-39.opt-1.pyc' => './usr/lib/python3/site-packages/strainer/__pycache__/middleware.cpython-39.pyc'
'./usr/lib/python3/site-packages/strainer/__pycache__/validate.cpython-39.opt-1.pyc' => './usr/lib/python3/site-packages/strainer/__pycache__/validate.cpython-39.pyc'
Executing(%check): /bin/sh -e /usr/src/tmp/rpm-tmp.68462
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ cd python3-module-strainer-0.1.4
+ /usr/bin/python3 setup.py test
running test
WARNING: Testing via this command is deprecated and will be removed in a future version. Users looking for a generic test entry point independent of test runner are encouraged to use tox.
running egg_info
writing strainer.egg-info/PKG-INFO
writing dependency_links to strainer.egg-info/dependency_links.txt
writing entry points to strainer.egg-info/entry_points.txt
writing top-level names to strainer.egg-info/top_level.txt
reading manifest file 'strainer.egg-info/SOURCES.txt'
writing manifest file 'strainer.egg-info/SOURCES.txt'
running build_ext
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
+ exit 0
Processing files: python3-module-strainer-0.1.4-alt3
Finding Provides (using /usr/lib/rpm/find-provides)
Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.BOgzPl
find-provides: running scripts (alternatives,debuginfo,lib,pam,perl,pkgconfig,python,python3,shell)
Finding Requires (using /usr/lib/rpm/find-requires)
Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.3ftUZn
find-requires: running scripts (cpp,debuginfo,files,lib,pam,perl,pkgconfig,pkgconfiglib,python,python3,rpmlib,shebang,shell,static,symlinks,systemd-services)
/usr/lib/rpm/python3.req.py:6: DeprecationWarning: The parser module is deprecated and will be removed in future versions of Python
import parser, symbol, token, types
/usr/lib/rpm/python3.req.py:6: DeprecationWarning: The symbol module is deprecated and will be removed in future versions of Python
import parser, symbol, token, types
python3.req: /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/case.py: skipping sys
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/middleware.py: line=3 possible relative import from ., UNIMPLEMENTED
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/middleware.py: line=6 IGNORE (for REQ=slight and deep=8) module=io
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/middleware.py: line=8 IGNORE (for REQ=slight and deep=8) module=io
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/middleware.py: line=53 possible relative import from ., UNIMPLEMENTED
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/middleware.py: line=95 possible relative import from ., UNIMPLEMENTED
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/middleware.py: line=122 possible relative import from ., UNIMPLEMENTED
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/operators.py: line=1 possible relative import from ., UNIMPLEMENTED
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/operators.py: line=8 possible relative import from ., UNIMPLEMENTED
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/validate.py: line=8 IGNORE (for REQ=slight and deep=8) module=demjson
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/validate.py: line=11 IGNORE (for REQ=slight and deep=12) module=simplejson
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/validate.py: line=13 IGNORE (for REQ=slight and deep=12) module=json
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/xhtmlify.py: line=771 IGNORE (for REQ=slight and deep=12) module=sys
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/xhtmlify.py: line=795 IGNORE (for REQ=slight and deep=8) module=xml.parsers.expat
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/xhtmlify.py: line=796 IGNORE (for REQ=slight and deep=8) module=xml.etree
shebang.req.files: executable script /usr/src/tmp/python3-module-strainer-buildroot/usr/lib/python3/site-packages/strainer/xhtmlify.py is not executable
Provides: python3(strainer), python3(strainer.almostequal), python3(strainer.case), python3(strainer.doctypes), python3(strainer.log), python3(strainer.middleware), python3(strainer.operators), python3(strainer.validate), python3(strainer.wellformed), python3(strainer.xhtmlify)
Requires: python3(json) < 0, /usr/lib/python3/site-packages, python3(codecs) < 0, python3(copy) < 0, python3(encodings.aliases) < 0, python3(html.entities) < 0, python3(inspect) < 0, python3(io) < 0, python3(logging) < 0, python3(lxml.etree) < 0, python3(nose.tools) < 0, python3(os) < 0, python3(pkg_resources) < 0, python3(pprint) < 0, python3(re) < 0, python3(simplejson) < 0, python3(traceback) < 0, python3(unittest) < 0, python3(urllib.parse) < 0, python3(xml.etree) < 0, python3(xml.parsers.expat) < 0, python3(xml.sax) < 0, python3(xml.sax._exceptions) < 0, python3(xml.sax.handler) < 0
Wrote: /usr/src/RPM/RPMS/noarch/python3-module-strainer-0.1.4-alt3.noarch.rpm (w2.lzdio)
6.70user 0.57system 0:08.65elapsed 84%CPU (0avgtext+0avgdata 22896maxresident)k
0inputs+0outputs (0major+145922minor)pagefaults 0swaps
13.70user 4.11system 0:19.52elapsed 91%CPU (0avgtext+0avgdata 101152maxresident)k
112inputs+0outputs (0major+566342minor)pagefaults 0swaps
--- python3-module-strainer-0.1.4-alt3.noarch.rpm.repo 2019-12-04 08:07:52.083007216 +0000
+++ python3-module-strainer-0.1.4-alt3.noarch.rpm.hasher 2021-09-14 10:22:10.402008915 +0000
@@ -1,41 +1,41 @@
/usr/lib/python3/site-packages/strainer 40755 root:root
-/usr/lib/python3/site-packages/strainer-0.1.4-py3.7.egg-info 40755 root:root
-/usr/lib/python3/site-packages/strainer-0.1.4-py3.7.egg-info/PKG-INFO 100644 root:root
-/usr/lib/python3/site-packages/strainer-0.1.4-py3.7.egg-info/SOURCES.txt 100644 root:root
-/usr/lib/python3/site-packages/strainer-0.1.4-py3.7.egg-info/dependency_links.txt 100644 root:root
-/usr/lib/python3/site-packages/strainer-0.1.4-py3.7.egg-info/entry_points.txt 100644 root:root
-/usr/lib/python3/site-packages/strainer-0.1.4-py3.7.egg-info/top_level.txt 100644 root:root
-/usr/lib/python3/site-packages/strainer-0.1.4-py3.7.egg-info/zip-safe 100644 root:root
+/usr/lib/python3/site-packages/strainer-0.1.4-py3.9.egg-info 40755 root:root
+/usr/lib/python3/site-packages/strainer-0.1.4-py3.9.egg-info/PKG-INFO 100644 root:root
+/usr/lib/python3/site-packages/strainer-0.1.4-py3.9.egg-info/SOURCES.txt 100644 root:root
+/usr/lib/python3/site-packages/strainer-0.1.4-py3.9.egg-info/dependency_links.txt 100644 root:root
+/usr/lib/python3/site-packages/strainer-0.1.4-py3.9.egg-info/entry_points.txt 100644 root:root
+/usr/lib/python3/site-packages/strainer-0.1.4-py3.9.egg-info/top_level.txt 100644 root:root
+/usr/lib/python3/site-packages/strainer-0.1.4-py3.9.egg-info/zip-safe 100644 root:root
/usr/lib/python3/site-packages/strainer/__init__.py 100644 root:root
/usr/lib/python3/site-packages/strainer/__pycache__ 40755 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-37.opt-1.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-37.opt-2.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-37.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/almostequal.cpython-37.opt-1.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/almostequal.cpython-37.opt-2.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/almostequal.cpython-37.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/case.cpython-37.opt-1.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/case.cpython-37.opt-2.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/case.cpython-37.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-37.opt-1.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-37.opt-2.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-37.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-37.opt-1.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-37.opt-2.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-37.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/middleware.cpython-37.opt-1.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/middleware.cpython-37.opt-2.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/middleware.cpython-37.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/operators.cpython-37.opt-1.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/operators.cpython-37.opt-2.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/operators.cpython-37.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/validate.cpython-37.opt-1.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/validate.cpython-37.opt-2.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/validate.cpython-37.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/wellformed.cpython-37.opt-1.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/wellformed.cpython-37.opt-2.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/wellformed.cpython-37.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/xhtmlify.cpython-37.opt-1.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/xhtmlify.cpython-37.opt-2.pyc 100644 root:root
-/usr/lib/python3/site-packages/strainer/__pycache__/xhtmlify.cpython-37.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-39.opt-1.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-39.opt-2.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-39.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/almostequal.cpython-39.opt-1.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/almostequal.cpython-39.opt-2.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/almostequal.cpython-39.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/case.cpython-39.opt-1.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/case.cpython-39.opt-2.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/case.cpython-39.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-39.opt-1.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-39.opt-2.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-39.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-39.opt-1.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-39.opt-2.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-39.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/middleware.cpython-39.opt-1.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/middleware.cpython-39.opt-2.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/middleware.cpython-39.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/operators.cpython-39.opt-1.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/operators.cpython-39.opt-2.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/operators.cpython-39.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/validate.cpython-39.opt-1.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/validate.cpython-39.opt-2.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/validate.cpython-39.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/wellformed.cpython-39.opt-1.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/wellformed.cpython-39.opt-2.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/wellformed.cpython-39.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/xhtmlify.cpython-39.opt-1.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/xhtmlify.cpython-39.opt-2.pyc 100644 root:root
+/usr/lib/python3/site-packages/strainer/__pycache__/xhtmlify.cpython-39.pyc 100644 root:root
/usr/lib/python3/site-packages/strainer/almostequal.py 100644 root:root
@@ -86,41 +86,41 @@
File: /usr/lib/python3/site-packages/strainer 40755 root:root
-File: /usr/lib/python3/site-packages/strainer-0.1.4-py3.7.egg-info 40755 root:root
-File: /usr/lib/python3/site-packages/strainer-0.1.4-py3.7.egg-info/PKG-INFO 100644 root:root c0de62d5e2845f2da5bdfbeff17880c9
-File: /usr/lib/python3/site-packages/strainer-0.1.4-py3.7.egg-info/SOURCES.txt 100644 root:root 6cd40c6c76fb11a10f86908c47a3c807
-File: /usr/lib/python3/site-packages/strainer-0.1.4-py3.7.egg-info/dependency_links.txt 100644 root:root 68b329da9893e34099c7d8ad5cb9c940
-File: /usr/lib/python3/site-packages/strainer-0.1.4-py3.7.egg-info/entry_points.txt 100644 root:root 1d14414e007751b9e2901b967e2b7c9e
-File: /usr/lib/python3/site-packages/strainer-0.1.4-py3.7.egg-info/top_level.txt 100644 root:root 6312e325434f39dfc43e91fb7efdd187
-File: /usr/lib/python3/site-packages/strainer-0.1.4-py3.7.egg-info/zip-safe 100644 root:root 68b329da9893e34099c7d8ad5cb9c940
+File: /usr/lib/python3/site-packages/strainer-0.1.4-py3.9.egg-info 40755 root:root
+File: /usr/lib/python3/site-packages/strainer-0.1.4-py3.9.egg-info/PKG-INFO 100644 root:root 2c27c4fc34a7b03180e09213ce3b3488
+File: /usr/lib/python3/site-packages/strainer-0.1.4-py3.9.egg-info/SOURCES.txt 100644 root:root 6cd40c6c76fb11a10f86908c47a3c807
+File: /usr/lib/python3/site-packages/strainer-0.1.4-py3.9.egg-info/dependency_links.txt 100644 root:root 68b329da9893e34099c7d8ad5cb9c940
+File: /usr/lib/python3/site-packages/strainer-0.1.4-py3.9.egg-info/entry_points.txt 100644 root:root 1d14414e007751b9e2901b967e2b7c9e
+File: /usr/lib/python3/site-packages/strainer-0.1.4-py3.9.egg-info/top_level.txt 100644 root:root 6312e325434f39dfc43e91fb7efdd187
+File: /usr/lib/python3/site-packages/strainer-0.1.4-py3.9.egg-info/zip-safe 100644 root:root 68b329da9893e34099c7d8ad5cb9c940
File: /usr/lib/python3/site-packages/strainer/__init__.py 100644 root:root 552dacb15f2019c8f3f74c55befa242c
File: /usr/lib/python3/site-packages/strainer/__pycache__ 40755 root:root
-File: /usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-37.opt-1.pyc 100644 root:root cd91da45f8e7ca08192c9f0eecb85835
-File: /usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-37.opt-2.pyc 100644 root:root cd91da45f8e7ca08192c9f0eecb85835
-File: /usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-37.pyc 100644 root:root cd91da45f8e7ca08192c9f0eecb85835
-File: /usr/lib/python3/site-packages/strainer/__pycache__/almostequal.cpython-37.opt-1.pyc 100644 root:root 0e5319630eb54dc7a04948b50d024b1e
-File: /usr/lib/python3/site-packages/strainer/__pycache__/almostequal.cpython-37.opt-2.pyc 100644 root:root 203a0ea15718619e6299f50974d8f89b
-File: /usr/lib/python3/site-packages/strainer/__pycache__/almostequal.cpython-37.pyc 100644 root:root 6f7e6ea9c4e058b174b34ce5c008a0de
-File: /usr/lib/python3/site-packages/strainer/__pycache__/case.cpython-37.opt-1.pyc 100644 root:root 517b6ac965ba42973b1e3be2c1ccc6fd
-File: /usr/lib/python3/site-packages/strainer/__pycache__/case.cpython-37.opt-2.pyc 100644 root:root 66c092b86c90326942396ebf1f943608
-File: /usr/lib/python3/site-packages/strainer/__pycache__/case.cpython-37.pyc 100644 root:root 517b6ac965ba42973b1e3be2c1ccc6fd
-File: /usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-37.opt-1.pyc 100644 root:root dab98a28751251f97a3f903126c8038d
-File: /usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-37.opt-2.pyc 100644 root:root dab98a28751251f97a3f903126c8038d
-File: /usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-37.pyc 100644 root:root dab98a28751251f97a3f903126c8038d
-File: /usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-37.opt-1.pyc 100644 root:root 9fce7779d8bc0996fc7a3984978a9e9c
-File: /usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-37.opt-2.pyc 100644 root:root 9fce7779d8bc0996fc7a3984978a9e9c
-File: /usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-37.pyc 100644 root:root 9fce7779d8bc0996fc7a3984978a9e9c
-File: /usr/lib/python3/site-packages/strainer/__pycache__/middleware.cpython-37.opt-1.pyc 100644 root:root a20b07de2fd2f335d0b28c8530616788
-File: /usr/lib/python3/site-packages/strainer/__pycache__/middleware.cpython-37.opt-2.pyc 100644 root:root 6d3441dfb197402cbc38920fdd691638
-File: /usr/lib/python3/site-packages/strainer/__pycache__/middleware.cpython-37.pyc 100644 root:root a20b07de2fd2f335d0b28c8530616788
-File: /usr/lib/python3/site-packages/strainer/__pycache__/operators.cpython-37.opt-1.pyc 100644 root:root 5285e15fe1e25031af0888c778f77202
-File: /usr/lib/python3/site-packages/strainer/__pycache__/operators.cpython-37.opt-2.pyc 100644 root:root 9f349b51bbe32b8c58f90038a681bfa4
-File: /usr/lib/python3/site-packages/strainer/__pycache__/operators.cpython-37.pyc 100644 root:root 91f9015db265a68692b2bca6cd3f2b5d
-File: /usr/lib/python3/site-packages/strainer/__pycache__/validate.cpython-37.opt-1.pyc 100644 root:root bd96d25fa809afe43a9fdfbaa394e5e3
-File: /usr/lib/python3/site-packages/strainer/__pycache__/validate.cpython-37.opt-2.pyc 100644 root:root b8ffbe6f3828d5f9c332c9b4463fde30
-File: /usr/lib/python3/site-packages/strainer/__pycache__/validate.cpython-37.pyc 100644 root:root bd96d25fa809afe43a9fdfbaa394e5e3
-File: /usr/lib/python3/site-packages/strainer/__pycache__/wellformed.cpython-37.opt-1.pyc 100644 root:root 0ba6317ec5ff4fa76385b123fe3e4526
-File: /usr/lib/python3/site-packages/strainer/__pycache__/wellformed.cpython-37.opt-2.pyc 100644 root:root 92601c7dbba21c3efee4548688d7eeca
-File: /usr/lib/python3/site-packages/strainer/__pycache__/wellformed.cpython-37.pyc 100644 root:root eb67b0b490539a4bf3d0edb9509fccd8
-File: /usr/lib/python3/site-packages/strainer/__pycache__/xhtmlify.cpython-37.opt-1.pyc 100644 root:root 0f5d2bbc7ae97c4b078b6c4e64a8eec1
-File: /usr/lib/python3/site-packages/strainer/__pycache__/xhtmlify.cpython-37.opt-2.pyc 100644 root:root 26e888d2e66748e34f784c7a8512495a
-File: /usr/lib/python3/site-packages/strainer/__pycache__/xhtmlify.cpython-37.pyc 100644 root:root f465411f664295ce30b25c18d48ba400
+File: /usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-39.opt-1.pyc 100644 root:root 217a728759392b4d27c891b6fe9fa9eb
+File: /usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-39.opt-2.pyc 100644 root:root 217a728759392b4d27c891b6fe9fa9eb
+File: /usr/lib/python3/site-packages/strainer/__pycache__/__init__.cpython-39.pyc 100644 root:root 217a728759392b4d27c891b6fe9fa9eb
+File: /usr/lib/python3/site-packages/strainer/__pycache__/almostequal.cpython-39.opt-1.pyc 100644 root:root 6823e62238865df67551ffe08ae80add
+File: /usr/lib/python3/site-packages/strainer/__pycache__/almostequal.cpython-39.opt-2.pyc 100644 root:root d59ed6e1ee64ef0ea1c9755477801695
+File: /usr/lib/python3/site-packages/strainer/__pycache__/almostequal.cpython-39.pyc 100644 root:root c09a24b53dc1842719c7e1bf291e5cab
+File: /usr/lib/python3/site-packages/strainer/__pycache__/case.cpython-39.opt-1.pyc 100644 root:root 54b9c1bc35cfe6d60544ac4c57f80214
+File: /usr/lib/python3/site-packages/strainer/__pycache__/case.cpython-39.opt-2.pyc 100644 root:root 7e5a69c075a062a1d96eecd77b6b2a9f
+File: /usr/lib/python3/site-packages/strainer/__pycache__/case.cpython-39.pyc 100644 root:root 54b9c1bc35cfe6d60544ac4c57f80214
+File: /usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-39.opt-1.pyc 100644 root:root c65b6aec7da8cb5df19e6dd47ac753f3
+File: /usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-39.opt-2.pyc 100644 root:root c65b6aec7da8cb5df19e6dd47ac753f3
+File: /usr/lib/python3/site-packages/strainer/__pycache__/doctypes.cpython-39.pyc 100644 root:root c65b6aec7da8cb5df19e6dd47ac753f3
+File: /usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-39.opt-1.pyc 100644 root:root fd35e99d1c6960741c2d0fd760883a2b
+File: /usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-39.opt-2.pyc 100644 root:root fd35e99d1c6960741c2d0fd760883a2b
+File: /usr/lib/python3/site-packages/strainer/__pycache__/log.cpython-39.pyc 100644 root:root fd35e99d1c6960741c2d0fd760883a2b
+File: /usr/lib/python3/site-packages/strainer/__pycache__/middleware.cpython-39.opt-1.pyc 100644 root:root ec75e690255b54c28958cb0f0b9d47fb
+File: /usr/lib/python3/site-packages/strainer/__pycache__/middleware.cpython-39.opt-2.pyc 100644 root:root 69aa7bfb0f667c942f30919bb7d268c0
+File: /usr/lib/python3/site-packages/strainer/__pycache__/middleware.cpython-39.pyc 100644 root:root ec75e690255b54c28958cb0f0b9d47fb
+File: /usr/lib/python3/site-packages/strainer/__pycache__/operators.cpython-39.opt-1.pyc 100644 root:root 30d4203408bc9e1e1506ca5a680937a9
+File: /usr/lib/python3/site-packages/strainer/__pycache__/operators.cpython-39.opt-2.pyc 100644 root:root 41f5e9ea08485ffd359113a7aa7cc763
+File: /usr/lib/python3/site-packages/strainer/__pycache__/operators.cpython-39.pyc 100644 root:root ef8634a86c6f635e1f7093700984be0f
+File: /usr/lib/python3/site-packages/strainer/__pycache__/validate.cpython-39.opt-1.pyc 100644 root:root ff892c5855e71c5e6825b3b3e6e1c8b5
+File: /usr/lib/python3/site-packages/strainer/__pycache__/validate.cpython-39.opt-2.pyc 100644 root:root 72f1afdd432c99f4146be52a68b12488
+File: /usr/lib/python3/site-packages/strainer/__pycache__/validate.cpython-39.pyc 100644 root:root ff892c5855e71c5e6825b3b3e6e1c8b5
+File: /usr/lib/python3/site-packages/strainer/__pycache__/wellformed.cpython-39.opt-1.pyc 100644 root:root 3bca48bab01966aa1851623aef38c52a
+File: /usr/lib/python3/site-packages/strainer/__pycache__/wellformed.cpython-39.opt-2.pyc 100644 root:root de1a54e7025d2f0a3a3dab508a708745
+File: /usr/lib/python3/site-packages/strainer/__pycache__/wellformed.cpython-39.pyc 100644 root:root 4df3c63b1b1fa5ee5012cfca432cabb9
+File: /usr/lib/python3/site-packages/strainer/__pycache__/xhtmlify.cpython-39.opt-1.pyc 100644 root:root e895185594ec3157f9d1688769644ae0
+File: /usr/lib/python3/site-packages/strainer/__pycache__/xhtmlify.cpython-39.opt-2.pyc 100644 root:root 83d68d6f42df8035775239d6ecf7e54f
+File: /usr/lib/python3/site-packages/strainer/__pycache__/xhtmlify.cpython-39.pyc 100644 root:root 8aee48d24f9786e766bfc77fbb1272c6
File: /usr/lib/python3/site-packages/strainer/almostequal.py 100644 root:root 8ecbc9d4b654117b67b38383747bdefb
@@ -134,2 +134,2 @@
File: /usr/lib/python3/site-packages/strainer/xhtmlify.py 100644 root:root 2b5bd65c4f1889fae10b8bc959dc0c08
-RPMIdentity: 93dde3e8f22b43ff66adfee252f662ee0db1d20e6aef3ce21157f462daa17d38ba710be695adaa81feedf9b05047e47118103a4ee895d702cd7e7d84e201d12e
+RPMIdentity: da1f97891958ea87010c48c9715e0e0f1a8375018e76379b4cb487bb37e64ee6df80f8b00b31201a22abed79fbc05a9d4bc3fe86a3bb881382b906ba746588b6