<86>May 22 05:34:31 userdel[1792643]: delete user 'rooter' <86>May 22 05:34:31 userdel[1792643]: removed group 'rooter' owned by 'rooter' <86>May 22 05:34:31 groupadd[1792654]: group added to /etc/group: name=rooter, GID=693 <86>May 22 05:34:31 groupadd[1792654]: group added to /etc/gshadow: name=rooter <86>May 22 05:34:31 groupadd[1792654]: new group: name=rooter, GID=693 <86>May 22 05:34:31 useradd[1792661]: new user: name=rooter, UID=693, GID=693, home=/root, shell=/bin/bash <86>May 22 05:34:31 userdel[1792675]: delete user 'builder' <86>May 22 05:34:31 userdel[1792675]: removed group 'builder' owned by 'builder' <86>May 22 05:34:31 userdel[1792675]: removed shadow group 'builder' owned by 'builder' <86>May 22 05:34:31 groupadd[1792687]: group added to /etc/group: name=builder, GID=694 <86>May 22 05:34:31 groupadd[1792687]: group added to /etc/gshadow: name=builder <86>May 22 05:34:31 groupadd[1792687]: new group: name=builder, GID=694 <86>May 22 05:34:31 useradd[1792697]: new user: name=builder, UID=694, GID=694, home=/usr/src, shell=/bin/bash <13>May 22 05:34:33 rpmi: libgdbm-1.8.3-alt10 1454943313 installed <13>May 22 05:34:33 rpmi: libexpat-2.2.10-alt1 sisyphus+259966.100.1.1 1602824514 installed <13>May 22 05:34:33 rpmi: libp11-kit-0.23.15-alt2 sisyphus+252784.100.2.2 1591274915 installed <13>May 22 05:34:33 rpmi: libtasn1-4.16.0-alt1 sisyphus+245480.100.1.1 1580825069 installed <13>May 22 05:34:33 rpmi: rpm-macros-alternatives-0.5.1-alt1 sisyphus+226946.100.1.1 1554830426 installed <13>May 22 05:34:33 rpmi: alternatives-0.5.1-alt1 sisyphus+226946.100.1.1 1554830426 installed <13>May 22 05:34:33 rpmi: ca-certificates-2021.03.24-alt1 sisyphus+268304.300.1.1 1616591829 installed <13>May 22 05:34:33 rpmi: ca-trust-0.1.2-alt1 sisyphus+233348.100.1.1 1561653823 installed <13>May 22 05:34:33 rpmi: p11-kit-trust-0.23.15-alt2 sisyphus+252784.100.2.2 1591274915 installed <13>May 22 05:34:33 rpmi: libcrypto1.1-1.1.1k-alt1 sisyphus+268375.100.1.1 1616684123 installed <13>May 22 05:34:33 rpmi: libssl1.1-1.1.1k-alt1 sisyphus+268375.100.1.1 1616684123 installed <13>May 22 05:34:33 rpmi: python3-3.9.5-alt1 sisyphus+271461.100.1.1 1620748574 installed <13>May 22 05:34:34 rpmi: python3-base-3.9.5-alt1 sisyphus+271461.100.1.1 1620748574 installed <13>May 22 05:34:34 rpmi: libpython3-3.9.5-alt1 sisyphus+271461.100.1.1 1620748574 installed <13>May 22 05:34:34 rpmi: tests-for-installed-python3-pkgs-0.1.17-alt1 sisyphus+271082.100.1.1 1619820927 installed <13>May 22 05:34:34 rpmi: rpm-build-python3-0.1.17-alt1 sisyphus+271082.100.1.1 1619820927 installed <13>May 22 05:34:34 rpmi: rpm-macros-sphinx-1:1.6.5-alt8 sisyphus+244988.100.1.1 1588163023 installed <13>May 22 05:34:36 rpmi: python3-module-six-1.15.0-alt2 sisyphus+270533.5100.6.1 1619685463 installed <13>May 22 05:34:36 rpmi: python3-module-pkg_resources-1:56.1.0-alt1 sisyphus+271297.100.1.1 1620375285 installed <13>May 22 05:34:36 rpmi: python3-module-ntlm-1.1.0-alt1.2 sisyphus+228512.100.1.1 1556654575 installed <13>May 22 05:34:36 rpmi: python3-module-genshi-0.7.4-alt2 sisyphus+261703.100.2.1 1605232240 installed <13>May 22 05:34:36 rpmi: python3-module-snowballstemmer-1.2.0-alt2.1 sisyphus+271943.400.1.1 1621160075 installed <13>May 22 05:34:36 rpmi: python3-module-pyparsing-2.4.2-alt2 sisyphus+261315.100.1.1 1604861802 installed <13>May 22 05:34:36 rpmi: python3-module-packaging-20.9-alt1 sisyphus+270533.300.6.1 1619683401 installed <13>May 22 05:34:36 rpmi: python3-module-markupsafe-2.0.1-alt1 sisyphus+271650.600.4.1 1621589664 installed <13>May 22 05:34:36 rpmi: python3-module-jinja2-2.11.3-alt1 sisyphus+267903.300.1.1 1615896587 installed <13>May 22 05:34:36 rpmi: python3-module-imagesize-1.1.0-alt1 sisyphus+271943.200.1.1 1621159990 installed <13>May 22 05:34:36 rpmi: python3-module-pytz-1:2021.1-alt1 sisyphus+267903.400.1.1 1615896636 installed <13>May 22 05:34:37 rpmi: python3-module-babel-1:2.9.0-alt1 sisyphus+268784.200.2.1 1617263310 installed <13>May 22 05:34:37 rpmi: python3-module-ndg-0.4.2-alt1.qa1 sisyphus+227504.1300.1.2 1555853074 installed <13>May 22 05:34:37 rpmi: python3-module-pycparser-2.20-alt1 sisyphus+260990.100.1.1 1604547209 installed <13>May 22 05:34:37 rpmi: python3-module-cffi-1.14.5-alt2 sisyphus+270533.2000.6.1 1619684526 installed <13>May 22 05:34:37 rpmi: python3-module-cryptography-3.4.7-alt1 sisyphus+270667.100.1.1 1619307682 installed <13>May 22 05:34:37 rpmi: python3-module-openssl-20.0.1-alt1 sisyphus+267607.100.2.1 1615475362 installed <13>May 22 05:34:37 rpmi: python3-module-ndg-httpsclient-0.4.2-alt1.qa1 sisyphus+227504.1300.1.2 1555853074 installed <13>May 22 05:34:37 rpmi: python3-module-urllib3-2:1.25.10-alt1 sisyphus+255342.100.1.1 1595592746 installed <13>May 22 05:34:37 rpmi: python3-module-idna-3.1-alt1 sisyphus+267356.100.1.1 1614879269 installed <13>May 22 05:34:37 rpmi: python3-module-chardet-1:3.0.4-alt2 sisyphus+263408.100.1.1 1607875228 installed <13>May 22 05:34:37 rpmi: python3-module-requests-2.25.1-alt2 sisyphus+267359.100.1.1 1614881487 installed <13>May 22 05:34:37 rpmi: python3-module-webencodings-0.5.1-alt2 sisyphus+245915.200.1.1 1581496105 installed <13>May 22 05:34:37 rpmi: python-sphinx-objects.inv-1:2.3.11.20210508-alt1 sisyphus+271366.100.1.1 1620604190 installed <13>May 22 05:34:37 rpmi: libpython-2.7.18-alt5 sisyphus+270920.100.1.1 1619657735 installed <13>May 22 05:34:37 rpmi: python2-base-2.7.18-alt5 sisyphus+270920.100.1.1 1619657735 installed <13>May 22 05:34:37 rpmi: python-modules-encodings-2.7.18-alt5 sisyphus+270920.100.1.1 1619657735 installed <13>May 22 05:34:37 rpmi: python-modules-compiler-2.7.18-alt5 sisyphus+270920.100.1.1 1619657735 installed <13>May 22 05:34:37 rpmi: python-modules-email-2.7.18-alt5 sisyphus+270920.100.1.1 1619657735 installed <13>May 22 05:34:37 rpmi: python-modules-unittest-2.7.18-alt5 sisyphus+270920.100.1.1 1619657735 installed <13>May 22 05:34:37 rpmi: python-modules-2.7.18-alt5 sisyphus+270920.100.1.1 1619657735 installed <13>May 22 05:34:37 rpmi: python-modules-ctypes-2.7.18-alt5 sisyphus+270920.100.1.1 1619657735 installed <13>May 22 05:34:37 rpmi: python-modules-multiprocessing-2.7.18-alt5 sisyphus+270920.100.1.1 1619657735 installed <13>May 22 05:34:37 rpmi: python-modules-logging-2.7.18-alt5 sisyphus+270920.100.1.1 1619657735 installed <13>May 22 05:34:37 rpmi: libgpg-error-1.41-alt4 sisyphus+264254.200.1.1 1609440105 installed <13>May 22 05:34:37 rpmi: libgcrypt20-1.9.2-alt1 sisyphus+266496.100.1.1 1613559130 installed <13>May 22 05:34:37 rpmi: libxslt-1.1.34-alt2 sisyphus+248264.100.1.1 1584829787 installed <13>May 22 05:34:37 rpmi: python3-module-cssselect-0.9.1-alt3 sisyphus+270533.2600.6.1 1619684675 installed <13>May 22 05:34:37 rpmi: python3-module-html5lib-1:1.0.1-alt1 sisyphus+238807.100.2.1 1570465973 installed <13>May 22 05:34:37 rpmi: python3-module-lxml-4.6.3-alt1 sisyphus+268152.100.1.1 1616388019 installed <13>May 22 05:34:38 rpmi: python3-module-docutils-0.17.1-alt1 sisyphus+271898.100.1.1 1621041818 installed <13>May 22 05:34:38 rpmi: python3-module-alabaster-0.7.6-alt3 sisyphus+271943.300.1.1 1621160028 installed <13>May 22 05:34:38 rpmi: python3-module-sphinxcontrib-applehelp-1.0.2-alt1 sisyphus+252614.200.1.1 1590949678 installed <13>May 22 05:34:38 rpmi: python3-module-sphinxcontrib-devhelp-1.0.2-alt1 sisyphus+252614.300.1.1 1590949711 installed <13>May 22 05:34:38 rpmi: python3-module-sphinxcontrib-htmlhelp-1.0.2-alt1 sisyphus+228401.100.1.1 1556572721 installed <13>May 22 05:34:38 rpmi: python3-module-sphinxcontrib-jsmath-1.0.1-alt1 sisyphus+238085.500.1.1 1569313099 installed <13>May 22 05:34:38 rpmi: python3-module-sphinxcontrib-qthelp-1.0.3-alt1 sisyphus+252614.400.1.1 1590949745 installed <13>May 22 05:34:38 rpmi: python3-module-sphinxcontrib-serializinghtml-1.1.4-alt1 sisyphus+252614.100.1.1 1590949645 installed <13>May 22 05:34:38 rpmi: python3-module-sphinx-1:4.0.1-alt4 sisyphus+272016.100.1.1 1621246705 installed <13>May 22 05:34:38 rpmi: python3-module-Pygments-2.8.1-alt2 sisyphus+270791.100.1.1 1619525864 installed <13>May 22 05:34:38 rpmi: python-tools-2to3-2.7.18-alt5 sisyphus+270920.100.1.1 1619657735 installed <13>May 22 05:34:38 rpmi: python3-module-versiontools-1.9.1-alt1.1.1.2 sisyphus+227536.600.1.2 1555962374 installed Building target platforms: x86_64 Building for target x86_64 Wrote: /usr/src/in/nosrpm/python3-module-gevent-socketio-0.3.6-alt4.nosrc.rpm (w1.gzdio) <13>May 22 05:34:40 rpmi: libtinfo-devel-6.2.20210123-alt1 sisyphus+265425.100.1.1 1611851422 installed <13>May 22 05:34:40 rpmi: libncurses-devel-6.2.20210123-alt1 sisyphus+265425.100.1.1 1611851422 installed <13>May 22 05:34:40 rpmi: python3-dev-3.9.5-alt1 sisyphus+271461.100.1.1 1620748574 installed <13>May 22 05:34:40 rpmi: python3-module-setuptools-1:56.1.0-alt1 sisyphus+271297.100.1.1 1620375285 installed Installing python3-module-gevent-socketio-0.3.6-alt4.src.rpm Building target platforms: x86_64 Building for target x86_64 Executing(%prep): /bin/sh -e /usr/src/tmp/rpm-tmp.79403 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + rm -rf python3-module-gevent-socketio-0.3.6 + echo 'Source #0 (python3-module-gevent-socketio-0.3.6.tar):' Source #0 (python3-module-gevent-socketio-0.3.6.tar): + /bin/tar -xf /usr/src/RPM/SOURCES/python3-module-gevent-socketio-0.3.6.tar + cd python3-module-gevent-socketio-0.3.6 + /bin/chmod -c -Rf u+rwX,go-w . + echo 'Patch #0 (fix-django-utils-importlib-since-1.9.patch):' Patch #0 (fix-django-utils-importlib-since-1.9.patch): + /usr/bin/patch -p1 patching file socketio/sdjango.py + sed -i 's|sphinx-build|sphinx-build-3|' docs/Makefile + exit 0 Executing(%build): /bin/sh -e /usr/src/tmp/rpm-tmp.13355 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd python3-module-gevent-socketio-0.3.6 + find -type f -name '*.py' -exec 2to3 -w '{}' + RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: No changes to ./tests/test_socket.py RefactoringTool: Refactored ./tests/test_packet.py RefactoringTool: Refactored ./tests/test_namespace.py RefactoringTool: Refactored ./tests/jstests/jstests.py RefactoringTool: No changes to ./socketio/sdjango.py RefactoringTool: Refactored ./socketio/virtsocket.py RefactoringTool: Refactored ./socketio/transports.py --- ./tests/test_packet.py (original) +++ ./tests/test_packet.py (refactored) @@ -248,7 +248,7 @@ 'id': 1, 'endpoint': '', 'ack': 'data', - 'data': {u'a': u'b'}}) + 'data': {'a': 'b'}}) def test_decode_event(self): """decoding an event packet """ decoded_message = decode('5:::{"name":"woot", "args": ["foo"]}') @@ -300,7 +300,7 @@ self.assertEqual(decoded_message, {'type': 'ack', 'ackId': 140, 'endpoint': '/chat', - 'args': [u"bob", u"bob2"]}) + 'args': ["bob", "bob2"]}) def test_decode_error(self): """decoding error packet """ --- ./tests/test_namespace.py (original) +++ ./tests/test_namespace.py (refactored) @@ -122,7 +122,7 @@ 'id': 1, 'endpoint': '', 'ack': 'data', - 'data': {u'a': u'b'}} + 'data': {'a': 'b'}} data = self.ns.process_packet(pkt) self.assertEqual(data, pkt['data']) assert not self.environ['socketio'].error.called --- ./tests/jstests/jstests.py (original) +++ ./tests/jstests/jstests.py (refactored) @@ -71,5 +71,5 @@ if __name__ == '__main__': - print 'Listening on port 8080 and on port 10843 (flash policy server)' + print('Listening on port 8080 and on port 10843 (flash policy server)') SocketIOServer(('0.0.0.0', 8080), Application(), resource="socket.io", policy_server=True).serve_forever() --- ./socketio/virtsocket.py (original) +++ ./socketio/virtsocket.py (refactored) @@ -47,7 +47,7 @@ socket.send_packet(pkt) # Log that error somewhere for debugging... - log.error(u"default_error_handler: {}, {} (endpoint={}, msg_id={})".format( + log.error("default_error_handler: {}, {} (endpoint={}, msg_id={})".format( error_name, error_message, endpoint, msg_id )) @@ -311,7 +311,7 @@ :meth:`~socketio.namespace.BaseNamespace.disconnect` calls. """ - for ns_name, ns in list(self.active_ns.iteritems()): + for ns_name, ns in list(self.active_ns.items()): ns.recv_disconnect() def remove_namespace(self, namespace): @@ -362,7 +362,7 @@ continue # or close the connection ? try: pkt = packet.decode(rawdata, self.json_loads) - except (ValueError, KeyError, Exception), e: + except (ValueError, KeyError, Exception) as e: self.error('invalid_packet', "There was a decoding error when dealing with packet " "with event: %s... (%s)" % (rawdata[:20], e)) @@ -436,7 +436,7 @@ while True: gevent.sleep(1.0) if not self.connected: - for ns_name, ns in list(self.active_ns.iteritems()): + for ns_name, ns in list(self.active_ns.items()): ns.recv_disconnect() # Killing Socket-level jobs gevent.killall(self.jobs) --- ./socketio/transports.py (original) +++ ./socketio/transports.py (refactored) @@ -1,6 +1,6 @@ import gevent -import urllib -import urlparse +import urllib.request, urllib.parse, urllib.error +import urllib.parse from geventwebsocket import WebSocketError from gevent.queue import Empty @@ -104,7 +104,7 @@ if len(messages) == 1: return messages[0].encode('utf-8') - payload = u''.join([(u'\ufffd%d\ufffd%s' % (len(p), p)) + payload = ''.join([('\ufffd%d\ufffd%s' % (len(p), p)) for p in messages if p is not None]) # FIXME: why is it so that we must filter None from here ? How # is it even possible that a None gets RefactoringTool: No changes to ./socketio/sgunicorn.py RefactoringTool: Refactored ./socketio/server.py RefactoringTool: No changes to ./socketio/policyserver.py RefactoringTool: Refactored ./socketio/packet.py RefactoringTool: Refactored ./socketio/namespace.py in there ? @@ -119,7 +119,7 @@ The semantics are: - \ufffd + [length as a string] + \ufffd + [payload as a unicode string] + \\ufffd + [length as a string] + \\ufffd + [payload as a unicode string] This function returns a list of messages, even though there is only one. @@ -127,10 +127,10 @@ Inspired by socket.io/lib/transports/http.js """ payload = payload.decode('utf-8') - if payload[0] == u"\ufffd": + if payload[0] == "\ufffd": ret = [] while len(payload) != 0: - len_end = payload.find(u"\ufffd", 1) + len_end = payload.find("\ufffd", 1) length = int(payload[1:len_end]) msg_start = len_end + 1 msg_end = length + msg_start @@ -162,7 +162,7 @@ def _request_body(self): data = super(JSONPolling, self)._request_body() # resolve %20%3F's, take out wrapping d="...", etc.. - data = urllib.unquote_plus(data)[3:-1] \ + data = urllib.parse.unquote_plus(data)[3:-1] \ .replace(r'\"', '"') \ .replace(r"\\", "\\") @@ -175,7 +175,7 @@ def write(self, data): """Just quote out stuff before sending it out""" - args = urlparse.parse_qs(self.handler.environ.get("QUERY_STRING")) + args = urllib.parse.parse_qs(self.handler.environ.get("QUERY_STRING")) if "i" in args: i = args["i"] else: --- ./socketio/server.py (original) +++ ./socketio/server.py (refactored) @@ -105,7 +105,7 @@ try: if not self.policy_server.started: self.policy_server.start() - except error, ex: + except error as ex: sys.stderr.write( 'FAILED to start flash policy server: %s\n' % (ex, )) except Exception: @@ -170,7 +170,7 @@ policy_server=policy_server, **kw) if not _quiet: - print('serving on http://%s:%s' % (host, port)) + print(('serving on http://%s:%s' % (host, port))) server.serve_forever() --- ./socketio/packet.py (original) +++ ./socketio/packet.py (refactored) @@ -12,7 +12,7 @@ 'noop': 8, } -MSG_VALUES = dict((v, k) for k, v in MSG_TYPES.iteritems()) +MSG_VALUES = dict((v, k) for k, v in MSG_TYPES.items()) ERROR_REASONS = { 'transport not supported': 0, @@ -20,13 +20,13 @@ 'unauthorized': 2 } -REASONS_VALUES = dict((v, k) for k, v in ERROR_REASONS.iteritems()) +REASONS_VALUES = dict((v, k) for k, v in ERROR_REASONS.items()) ERROR_ADVICES = { 'reconnect': 0, } -ADVICES_VALUES = dict((v, k) for k, v in ERROR_ADVICES.iteritems()) +ADVICES_VALUES = dict((v, k) for k, v in ERROR_ADVICES.items()) socketio_packet_attributes = ['type', 'name', 'data', 'endpoint', 'args', 'ackId', 'reason', 'advice', 'qs', 'id'] @@ -153,8 +153,8 @@ elif msg_type == "5": # event try: data = json_loads(data) - except ValueError, e: - print("Invalid JSON event message", data) + except ValueError as e: + print(("Invalid JSON event message", data)) decoded_msg['args'] = [] else: decoded_msg['name'] = data.pop('name') --- ./socketio/namespace.py (original) +++ ./socketio/namespace.py (refactored) @@ -167,14 +167,14 @@ elif packet_type == 'ack': callback = self.socket._pop_ack_callback(packet['ackId']) if not callback: - print "ERROR: No such callback for ackId %s" % packet['ackId'] + print("ERROR: No such callback for ackId %s" % packet['ackId']) return return callback(*(packet['args'])) elif packet_type == 'disconnect': # Force a disconnect on the namespace. return self.call_method_with_acl('recv_disconnect', packet) else: - priRefactoringTool: Refactored ./socketio/mixins.py RefactoringTool: Refactored ./socketio/handler.py RefactoringTool: No changes to ./socketio/defaultjson.py RefactoringTool: No changes to ./socketio/__init__.py RefactoringTool: No changes to ./setup.py RefactoringTool: Refactored ./examples/twitterstream/twitterstream/serve.py RefactoringTool: No changes to ./examples/twitterstream/setup.py RefactoringTool: Refactored ./examples/testapp/testapp/views.py nt "Unprocessed packet", packet + print("Unprocessed packet", packet) # TODO: manage the other packet types: disconnect def process_event(self, packet): --- ./socketio/mixins.py (original) +++ ./socketio/mixins.py (refactored) @@ -30,7 +30,7 @@ args=args, endpoint=self.ns_name) room_name = self._get_room_name(room) - for sessid, socket in self.socket.server.sockets.iteritems(): + for sessid, socket in self.socket.server.sockets.items(): if 'rooms' not in socket.session: continue if room_name in socket.session['rooms'] and self.socket != socket: @@ -55,7 +55,7 @@ args=args, endpoint=self.ns_name) - for sessid, socket in self.socket.server.sockets.iteritems(): + for sessid, socket in self.socket.server.sockets.items(): socket.send_packet(pkt) def broadcast_event_not_me(self, event, *args): @@ -68,6 +68,6 @@ args=args, endpoint=self.ns_name) - for sessid, socket in self.socket.server.sockets.iteritems(): + for sessid, socket in self.socket.server.sockets.items(): if socket is not self.socket: socket.send_packet(pkt) --- ./socketio/handler.py (original) +++ ./socketio/handler.py (refactored) @@ -1,7 +1,7 @@ import sys import re import gevent -import urlparse +import urllib.parse from gevent.pywsgi import WSGIHandler from socketio import transports @@ -45,12 +45,12 @@ super(SocketIOHandler, self).__init__(*args, **kwargs) - self.transports = self.handler_types.keys() + self.transports = list(self.handler_types.keys()) if self.server.transports: self.transports = self.server.transports if not set(self.transports).issubset(set(self.handler_types)): raise ValueError("transports should be elements of: %s" % - (self.handler_types.keys())) + (list(self.handler_types.keys()))) def _do_handshake(self, tokens): if tokens["resource"] != self.server.resource: @@ -80,7 +80,7 @@ self.result = [data] def write_smart(self, data): - args = urlparse.parse_qs(self.environ.get("QUERY_STRING")) + args = urllib.parse.parse_qs(self.environ.get("QUERY_STRING")) if "jsonp" in args: self.write_jsonp_result(data, args["jsonp"][0]) --- ./examples/twitterstream/twitterstream/serve.py (original) +++ ./examples/twitterstream/twitterstream/serve.py (refactored) @@ -14,7 +14,7 @@ args=args, endpoint=ns_name) - for sessid, socket in server.sockets.iteritems(): + for sessid, socket in server.sockets.items(): socket.send_packet(pkt) @@ -25,7 +25,7 @@ def get_credentials(): - user = raw_input("Twitter username: ") + user = input("Twitter username: ") password = getpass.getpass("Twitter password: ") return (user, password) @@ -68,7 +68,7 @@ if __name__ == '__main__': user, password = get_credentials() - print 'Listening on port http://0.0.0.0:8080 and on port 10843 (flash policy server)' + print('Listening on port http://0.0.0.0:8080 and on port 10843 (flash policy server)') server = SocketIOServer(('0.0.0.0', 8080), Application(), resource="socket.io", policy_server=True, policy_listener=('0.0.0.0', 10843)) --- ./examples/testapp/testapp/views.py (original) +++ ./examples/testapp/testapp/views.py (refactored) @@ -83,11 +83,11 @@ class GlobalIONamespace(BaseNamespace, BroadcastMixin): def on_chat(self, *args): self.emit("bob", {'hello': 'world'}) - print "Received chat message", args + print("Received chat message", args) self.broadcast_event_not_me('chat', *args) def recv_connect(self): - print "CONNNNNNNN" + print("CONNNNNNNN") self.emit("you_just_connected", {'bravo': 'kid'}) self.spawn(seRefactoringTool: Refactored ./examples/testapp/testapp/scripts/populate.py RefactoringTool: No changes to ./examples/testapp/testapp/models.py RefactoringTool: No changes to ./examples/testapp/testapp/__init__.py RefactoringTool: No changes to ./examples/testapp/setup.py RefactoringTool: Refactored ./examples/testapp/serve.py RefactoringTool: No changes to ./examples/simple_pyramid_chat/wsgi.py RefactoringTool: No changes to ./examples/simple_pyramid_chat/setup.py RefactoringTool: Refactored ./examples/simple_pyramid_chat/serve.py RefactoringTool: Refactored ./examples/simple_pyramid_chat/chatter2/views.py RefactoringTool: Refactored ./examples/simple_pyramid_chat/chatter2/scripts/populate.py lf.cpu_checker_process) @@ -105,10 +105,10 @@ class ChatIONamespace(BaseNamespace, RoomsMixin): def on_mymessage(self, msg): - print "In on_mymessage" + print("In on_mymessage") self.send("little message back") self.send({'blah': 'blah'}, json=True) - for x in xrange(2): + for x in range(2): self.emit("pack", {'the': 'more', 'you': 'can'}) def on_my_callback(self, packet): @@ -116,17 +116,17 @@ def on_trigger_server_callback(self, superbob): def cb(): - print "OK, WE WERE CALLED BACK BY THE ACK! THANKS :)" + print("OK, WE WERE CALLED BACK BY THE ACK! THANKS :)") self.emit('callmeback', 'this is a first param', 'this is the last param', callback=cb) def cb2(param1, param2): - print "OK, GOT THOSE VALUES BACK BY CB", param1, param2 + print("OK, GOT THOSE VALUES BACK BY CB", param1, param2) self.emit('callmeback', 'this is a first param', 'this is the last param', callback=cb2) def on_rtc_invite(self, sdp): - print "Got an RTC invite, now pushing to others..." + print("Got an RTC invite, now pushing to others...") self.emit_to_room('room1', 'rtc_invite', self.session['nickname'], sdp) @@ -135,11 +135,11 @@ self.join('room1') def recv_message(self, data): - print "Received a 'message' with data:", data + print("Received a 'message' with data:", data) def on_disconnect_me(self, data): - print "Disconnecting you buddy", data + print("Disconnecting you buddy", data) self.disconnect() --- ./examples/testapp/testapp/scripts/populate.py (original) +++ ./examples/testapp/testapp/scripts/populate.py (refactored) @@ -20,8 +20,8 @@ def usage(argv):# pragma: no cover cmd = os.path.basename(argv[0]) - print('usage: %s \n' - '(example: "%s development.ini")' % (cmd, cmd)) + print(('usage: %s \n' + '(example: "%s development.ini")' % (cmd, cmd))) sys.exit(1) def main(argv=sys.argv): # pragma: no cover --- ./examples/testapp/serve.py (original) +++ ./examples/testapp/serve.py (refactored) @@ -5,6 +5,6 @@ if __name__ == '__main__': app = get_app('development.ini') - print 'Listening on port http://127.0.0.1:8080 and on port 843 (flash policy server)' + print('Listening on port http://127.0.0.1:8080 and on port 843 (flash policy server)') SocketIOServer(('127.0.0.1', 8080), app, policy_server=False, transports=['websocket']).serve_forever() --- ./examples/simple_pyramid_chat/serve.py (original) +++ ./examples/simple_pyramid_chat/serve.py (refactored) @@ -5,7 +5,7 @@ if __name__ == '__main__': app = get_app('development.ini') - print 'Listening on port http://0.0.0.0:8080 and on port 10843 (flash policy server)' + print('Listening on port http://0.0.0.0:8080 and on port 10843 (flash policy server)') SocketIOServer(('0.0.0.0', 8080), app, resource="socket.io", policy_server=True, --- ./examples/simple_pyramid_chat/chatter2/views.py (original) +++ ./examples/simple_pyramid_chat/chatter2/views.py (refactored) @@ -33,7 +33,7 @@ args=args, endpoint=self.ns_name) room_name = self._get_room_name(room) - for sessid, socket in self.socket.server.sockets.iteritems(): + for sessid, socket in self.socket.server.sockets.items(): if not hasattr(socket, 'rooms'): continue if room_name in socket.rooms: --- ./examples/simple_pyramid_chat/chatter2/scripts/populate.py (original) +++ ./examples/simple_pyramid_chat/chatter2/scripts/populate.py (refactored) @@ -21,8 +21,8 @@ def usage(argv): # pragma: no cover cmd = os.path.basename(argv[0]) - print('usage: %s \n' - '(example: "%s development.ini")' % (cmd, cmd)) + print(('usage: %s \RefactoringTool: No changes to ./examples/simple_pyramid_chat/chatter2/models.py RefactoringTool: No changes to ./examples/simple_pyramid_chat/chatter2/__init__.py RefactoringTool: Refactored ./examples/simple_chat/chat.py RefactoringTool: No changes to ./examples/pyramid_backbone_redis_chat_persistence/setup.py RefactoringTool: Refactored ./examples/pyramid_backbone_redis_chat_persistence/serve.py RefactoringTool: No changes to ./examples/pyramid_backbone_redis_chat_persistence/chatter4/views.py RefactoringTool: Refactored ./examples/pyramid_backbone_redis_chat_persistence/chatter4/scripts/populate.py RefactoringTool: No changes to ./examples/pyramid_backbone_redis_chat_persistence/chatter4/models.py RefactoringTool: No changes to ./examples/pyramid_backbone_redis_chat_persistence/chatter4/__init__.py RefactoringTool: No changes to ./examples/pyramid_backbone_redis_chat/setup.py RefactoringTool: Refactored ./examples/pyramid_backbone_redis_chat/serve.py RefactoringTool: No changes to ./examples/pyramid_backbone_redis_chat/chatter3/views.py RefactoringTool: Refactored ./examples/pyramid_backbone_redis_chat/chatter3/scripts/populate.py RefactoringTool: No changes to ./examples/pyramid_backbone_redis_chat/chatter3/models.py RefactoringTool: No changes to ./examples/pyramid_backbone_redis_chat/chatter3/__init__.py RefactoringTool: No changes to ./examples/live_cpu_graph/setup.py RefactoringTool: Refactored ./examples/live_cpu_graph/live_cpu_graph/serve.py RefactoringTool: Refactored ./examples/flask_chat/run.py RefactoringTool: Refactored ./examples/flask_chat/chat.py RefactoringTool: No changes to ./examples/django_chat/chatproject/urls.py RefactoringTool: No changes to ./examples/django_chat/chatproject/settings.py RefactoringTool: No changes to ./examples/django_chat/chat/views.py RefactoringTool: No changes to ./examples/django_chat/chat/urls.py RefactoringTool: No changes to ./examples/django_chat/chat/sockets.py RefactoringTool: No changes to ./examples/django_chat/chat/models.py RefactoringTool: Refactored ./examples/django_chat/chat/management/commands/runserver_socketio.py n' + '(example: "%s development.ini")' % (cmd, cmd))) sys.exit(1) --- ./examples/simple_chat/chat.py (original) +++ ./examples/simple_chat/chat.py (refactored) @@ -29,7 +29,7 @@ self.socket.session['nickname'], msg) def recv_message(self, message): - print "PING!!!", message + print("PING!!!", message) class Application(object): def __init__(self): @@ -78,7 +78,7 @@ if __name__ == '__main__': - print 'Listening on port 8080 and on port 843 (flash policy server)' + print('Listening on port 8080 and on port 843 (flash policy server)') SocketIOServer(('0.0.0.0', 8080), Application(), resource="socket.io", policy_server=True, policy_listener=('0.0.0.0', 10843)).serve_forever() --- ./examples/pyramid_backbone_redis_chat_persistence/serve.py (original) +++ ./examples/pyramid_backbone_redis_chat_persistence/serve.py (refactored) @@ -6,7 +6,7 @@ app = get_app('development.ini') - print 'Listening on port http://0.0.0.0:8080 and on port 10843 (flash policy server)' + print('Listening on port http://0.0.0.0:8080 and on port 10843 (flash policy server)') SocketIOServer(('0.0.0.0', 8080), app, resource="socket.io", policy_server=True, --- ./examples/pyramid_backbone_redis_chat_persistence/chatter4/scripts/populate.py (original) +++ ./examples/pyramid_backbone_redis_chat_persistence/chatter4/scripts/populate.py (refactored) @@ -21,8 +21,8 @@ def usage(argv): # pragma: no cover cmd = os.path.basename(argv[0]) - print('usage: %s \n' - '(example: "%s development.ini")' % (cmd, cmd)) + print(('usage: %s \n' + '(example: "%s development.ini")' % (cmd, cmd))) sys.exit(1) --- ./examples/pyramid_backbone_redis_chat/serve.py (original) +++ ./examples/pyramid_backbone_redis_chat/serve.py (refactored) @@ -6,7 +6,7 @@ app = get_app('development.ini') - print 'Listening on port http://0.0.0.0:8080 and on port 10843 (flash policy server)' + print('Listening on port http://0.0.0.0:8080 and on port 10843 (flash policy server)') SocketIOServer(('0.0.0.0', 8080), app, resource="socket.io", policy_server=True, --- ./examples/pyramid_backbone_redis_chat/chatter3/scripts/populate.py (original) +++ ./examples/pyramid_backbone_redis_chat/chatter3/scripts/populate.py (refactored) @@ -21,8 +21,8 @@ def usage(argv): # pragma: no cover cmd = os.path.basename(argv[0]) - print('usage: %s \n' - '(example: "%s development.ini")' % (cmd, cmd)) + print(('usage: %s \n' + '(example: "%s development.ini")' % (cmd, cmd))) sys.exit(1) --- ./examples/live_cpu_graph/live_cpu_graph/serve.py (original) +++ ./examples/live_cpu_graph/live_cpu_graph/serve.py (refactored) @@ -60,7 +60,7 @@ if __name__ == '__main__': - print 'Listening on port http://0.0.0.0:8080 and on port 10843 (flash policy server)' + print('Listening on port http://0.0.0.0:8080 and on port 10843 (flash policy server)') SocketIOServer(('0.0.0.0', 8080), Application(), resource="socket.io", policy_server=True, policy_listener=('0.0.0.0', 10843)).serve_forever() --- ./examples/flask_chat/run.py (original) +++ ./examples/flask_chat/run.py (refactored) @@ -8,5 +8,5 @@ PORT = 5000 if __name__ == '__main__': - print 'Listening on http://127.0.0.1:%s and on port 10843 (flash policy server)' % PORT + print('Listening on http://127.0.0.1:%s and on port 10843 (flash policy server)' % PORT) SocketIOServer(('', PORT), app, resource="socket.io").serve_forever() --- ./examples/flask_chat/chat.py (original) +++ ./examples/flask_chat/chat.py (refactored) @@ -52,7 +52,7 @@ # utils def slugify(value): value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore') - value = unicode(re.sub('[^\w\s-]', '', value).strip().lower()) + value = str(re.sub('[^\w\s-]', '', value).strip().lower()) return re.sub('[-\s]+', '-', value) --- ./examples/django_chat/chat/management/coRefactoringTool: Refactored ./examples/django_chat/bootstrap.py RefactoringTool: No changes to ./examples/cross_origin/web.py RefactoringTool: Refactored ./examples/cross_origin/sock.py RefactoringTool: Refactored ./docs/source/conf.py mmands/runserver_socketio.py (original) +++ ./examples/django_chat/chat/management/commands/runserver_socketio.py (refactored) @@ -1,6 +1,6 @@ from re import match -from thread import start_new_thread +from _thread import start_new_thread from time import sleep from os import getpid, kill, environ from signal import SIGINT @@ -47,16 +47,16 @@ start_new_thread(reload_watcher, ()) try: bind = (self.addr, int(self.port)) - print - print "SocketIOServer running on %s:%s" % bind - print + print() + print("SocketIOServer running on %s:%s" % bind) + print() handler = self.get_handler(*args, **options) server = SocketIOServer(bind, handler, resource="socket.io", policy_server=True) server.serve_forever() except KeyboardInterrupt: if RELOAD: server.stop() - print "Reloading..." + print("Reloading...") restart_with_reloader() else: raise --- ./examples/django_chat/bootstrap.py (original) +++ ./examples/django_chat/bootstrap.py (refactored) @@ -18,7 +18,7 @@ use the -c option to specify an alternate configuration file. """ -import os, shutil, sys, tempfile, urllib, urllib2, subprocess +import os, shutil, sys, tempfile, urllib.request, urllib.parse, urllib.error, urllib.request, urllib.error, urllib.parse, subprocess from optparse import OptionParser if sys.platform == 'win32': @@ -50,7 +50,7 @@ # We will restart with python -S. args = sys.argv[:] args[0:0] = [sys.executable, '-S'] - args = map(quote, args) + args = list(map(quote, args)) os.execv(sys.executable, args) # Now we are running with -S. We'll get the clean sys.path, import site # because distutils will do it later, and then reset the path and clean @@ -59,7 +59,7 @@ clean_path = sys.path[:] import site # imported because of its side effects sys.path[:] = clean_path -for k, v in sys.modules.items(): +for k, v in list(sys.modules.items()): if k in ('setuptools', 'pkg_resources') or ( hasattr(v, '__path__') and len(v.__path__) == 1 and @@ -78,7 +78,7 @@ if value: if '://' not in value: # It doesn't smell like a URL. value = 'file://%s' % ( - urllib.pathname2url( + urllib.request.pathname2url( os.path.abspath(os.path.expanduser(value))),) if opt_str == '--download-base' and not value.endswith('/'): # Download base needs a trailing slash to make the world happy. @@ -161,10 +161,10 @@ if not hasattr(pkg_resources, '_distribute'): raise ImportError except ImportError: - ez_code = urllib2.urlopen( + ez_code = urllib.request.urlopen( options.setup_source).read().replace('\r\n', '\n') ez = {} - exec ez_code in ez + exec(ez_code, ez) setup_args = dict(to_dir=eggs_dir, download_delay=0) if options.download_base: setup_args['download_base'] = options.download_base --- ./examples/cross_origin/sock.py (original) +++ ./examples/cross_origin/sock.py (refactored) @@ -8,7 +8,7 @@ class Hello(namespace.BaseNamespace): def on_hello(self, data): - print "hello", data + print("hello", data) self.emit('greetings', {'from': 'sockets'}) --- ./docs/source/conf.py (original) +++ ./docs/source/conf.py (refactored) @@ -41,7 +41,7 @@ master_doc = 'index' # General information about the project. -project = u'gevent-socketio' +project = 'gevent-socketio' copyright = '2011-%s, Jeffrey Gelens, Alexandre Bourget, and John Anderson' % datetime.datetime.now().year @@ -185,8 +185,8 @@ # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ - ('index', 'gevent-socketio.tex', u'gevent-socketio Documentation', - u'Jeffrey Gelens,Alex Bourget,John Anderson', 'manual'), + ('index', 'geRefactoringTool: Refactored ./bootstrap.py RefactoringTool: Files that were modified: RefactoringTool: ./tests/test_socket.py RefactoringTool: ./tests/test_packet.py RefactoringTool: ./tests/test_namespace.py RefactoringTool: ./tests/jstests/jstests.py RefactoringTool: ./socketio/sdjango.py RefactoringTool: ./socketio/virtsocket.py RefactoringTool: ./socketio/transports.py RefactoringTool: ./socketio/sgunicorn.py RefactoringTool: ./socketio/server.py RefactoringTool: ./socketio/policyserver.py RefactoringTool: ./socketio/packet.py RefactoringTool: ./socketio/namespace.py RefactoringTool: ./socketio/mixins.py RefactoringTool: ./socketio/handler.py RefactoringTool: ./socketio/defaultjson.py RefactoringTool: ./socketio/__init__.py RefactoringTool: ./setup.py RefactoringTool: ./examples/twitterstream/twitterstream/serve.py RefactoringTool: ./examples/twitterstream/setup.py RefactoringTool: ./examples/testapp/testapp/views.py RefactoringTool: ./examples/testapp/testapp/scripts/populate.py RefactoringTool: ./examples/testapp/testapp/models.py RefactoringTool: ./examples/testapp/testapp/__init__.py RefactoringTool: ./examples/testapp/setup.py RefactoringTool: ./examples/testapp/serve.py RefactoringTool: ./examples/simple_pyramid_chat/wsgi.py RefactoringTool: ./examples/simple_pyramid_chat/setup.py RefactoringTool: ./examples/simple_pyramid_chat/serve.py RefactoringTool: ./examples/simple_pyramid_chat/chatter2/views.py RefactoringTool: ./examples/simple_pyramid_chat/chatter2/scripts/populate.py RefactoringTool: ./examples/simple_pyramid_chat/chatter2/models.py RefactoringTool: ./examples/simple_pyramid_chat/chatter2/__init__.py RefactoringTool: ./examples/simple_chat/chat.py RefactoringTool: ./examples/pyramid_backbone_redis_chat_persistence/setup.py RefactoringTool: ./examples/pyramid_backbone_redis_chat_persistence/serve.py RefactoringTool: ./examples/pyramid_backbone_redis_chat_persistence/chatter4/views.py RefactoringTool: ./examples/pyramid_backbone_redis_chat_persistence/chatter4/scripts/populate.py RefactoringTool: ./examples/pyramid_backbone_redis_chat_persistence/chatter4/models.py RefactoringTool: ./examples/pyramid_backbone_redis_chat_persistence/chatter4/__init__.py RefactoringTool: ./examples/pyramid_backbone_redis_chat/setup.py RefactoringTool: ./examples/pyramid_backbone_redis_chat/serve.py RefactoringTool: ./examples/pyramid_backbone_redis_chat/chatter3/views.py RefactoringTool: ./examples/pyramid_backbone_redis_chat/chatter3/scripts/populate.py RefactoringTool: ./examples/pyramid_backbone_redis_chat/chatter3/models.py RefactoringTool: ./examples/pyramid_backbone_redis_chat/chatter3/__init__.py RefactoringTool: ./examples/live_cpu_graph/setup.py RefactoringTool: ./examples/live_cpu_graph/live_cpu_graph/serve.py RefactoringTool: ./examples/flask_chat/run.py RefactoringTool: ./examples/flask_chat/chat.py RefactoringTool: ./examples/django_chat/chatproject/urls.py RefactoringTool: ./examples/django_chat/chatproject/settings.py RefactoringTool: ./examples/django_chat/chat/views.py RefactoringTool: ./examples/django_chat/chat/urls.py RefactoringTool: ./examples/django_chat/chat/sockets.py RefactoringTool: ./examples/django_chat/chat/models.py RefactoringTool: ./examples/django_chat/chat/management/commands/runserver_socketio.py RefactoringTool: ./examples/django_chat/bootstrap.py RefactoringTool: ./examples/cross_origin/web.py RefactoringTool: ./examples/cross_origin/sock.py RefactoringTool: ./docs/source/conf.py RefactoringTool: ./bootstrap.py vent-socketio.tex', 'gevent-socketio Documentation', + 'Jeffrey Gelens,Alex Bourget,John Anderson', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of @@ -215,8 +215,8 @@ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ - ('index', 'gevent-socketio', u'gevent-socketio Documentation', - [u'Jeffrey Gelens,Alex Bourget,John Anderson'], 1) + ('index', 'gevent-socketio', 'gevent-socketio Documentation', + ['Jeffrey Gelens,Alex Bourget,John Anderson'], 1) ] # If true, show URL addresses after external links. @@ -229,8 +229,8 @@ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - ('index', 'gevent-socketio', u'gevent-socketio Documentation', - u'Jeffrey Gelens,Alex Bourget,John Anderson', 'gevent-socketio', 'One line description of project.', + ('index', 'gevent-socketio', 'gevent-socketio Documentation', + 'Jeffrey Gelens,Alex Bourget,John Anderson', 'gevent-socketio', 'One line description of project.', 'Miscellaneous'), ] --- ./bootstrap.py (original) +++ ./bootstrap.py (refactored) @@ -73,7 +73,7 @@ try: from urllib.request import urlopen except ImportError: - from urllib2 import urlopen + from urllib.request import urlopen # XXX use a more permanent ez_setup.py URL when available. exec(urlopen('https://bitbucket.org/pypa/setuptools/raw/0.7.2/ez_setup.py' + CFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2' + export CFLAGS + CXXFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2' + export CXXFLAGS + FFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2' + export FFLAGS + /usr/bin/python3 setup.py build running build running build_py creating build creating build/lib creating build/lib/socketio copying socketio/handler.py -> build/lib/socketio copying socketio/mixins.py -> build/lib/socketio copying socketio/namespace.py -> build/lib/socketio copying socketio/packet.py -> build/lib/socketio copying socketio/server.py -> build/lib/socketio copying socketio/transports.py -> build/lib/socketio copying socketio/virtsocket.py -> build/lib/socketio copying socketio/sdjango.py -> build/lib/socketio copying socketio/sgunicorn.py -> build/lib/socketio copying socketio/policyserver.py -> build/lib/socketio copying socketio/defaultjson.py -> build/lib/socketio copying socketio/__init__.py -> build/lib/socketio + make -C docs pickle make: Entering directory '/usr/src/RPM/BUILD/python3-module-gevent-socketio-0.3.6/docs' sphinx-build-3 -b pickle -d build/doctrees source build/pickle Traceback (most recent call last): File "/usr/lib64/python3/site-packages/pkg_resources/__init__.py", line 568, in _build_master ws.require(__requires__) File "/usr/lib64/python3/site-packages/pkg_resources/__init__.py", line 886, in require needed = self.resolve(parse_requirements(requirements)) File "/usr/lib64/python3/site-packages/pkg_resources/__init__.py", line 777, in resolve raise VersionConflict(dist, req).with_context(dependent_req) pkg_resources.ContextualVersionConflict: (MarkupSafe 2.0.1 (/usr/lib64/python3/site-packages), Requirement.parse('MarkupSafe<2.0'), {'Sphinx'}) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/bin/sphinx-build-3", line 33, in sys.exit(load_entry_point('Sphinx==4.0.1.dev20210517', 'console_scripts', 'sphinx-build')()) File "/usr/bin/sphinx-build-3", line 25, in importlib_load_entry_point return next(matches).load() File "/usr/lib64/python3.9/importlib/metadata.py", line 77, in load module = import_module(match.group('module')) File "/usr/lib64/python3.9/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1030, in _gcd_import File "", line 1007, in _find_and_load File "", line 986, in _find_and_load_unlocked File "", line 680, in _load_unlocked File "", line 855, in exec_module File "", line 228, in _call_with_frames_removed File "/usr/lib/python3/site-packages/sphinx/cmd/build.py", line 25, in from sphinx.application import Sphinx File "/usr/lib/python3/site-packages/sphinx/application.py", line 41, in from sphinx.registry import SphinxComponentRegistry File "/usr/lib/python3/site-packages/sphinx/registry.py", line 24, in from pkg_resources import iter_entry_points File "/usr/lib64/python3/site-packages/pkg_resources/__init__.py", line 3243, in def _initialize_master_working_set(): File "/usr/lib64/python3/site-packages/pkg_resources/__init__.py", line 3226, in _call_aside f(*args, **kwargs) File "/usr/lib64/python3/site-packages/pkg_resources/__init__.py", line 3255, in _initialize_master_working_set working_set = WorkingSet._build_master() File "/usr/lib64/python3/site-packages/pkg_resources/__init__.py", line 570, in _build_master return cls._build_from_requirements(__requires__) File "/usr/lib64/python3/site-packages/pkg_resources/__init__.py", line 583, in _build_from_requirements dists = ws.resolve(reqs, Environment()) File "/usr/lib64/python3/site-packages/pkg_resources/__init__.py", line 772, in resolve raise DistributionNotFound(req, requirers) pkg_resources.DistributionNotFound: The 'MarkupSafe<2.0' distribution was not found and is required by Sphinx make: *** [Makefile:60: pickle] Error 1 make: Leaving directory '/usr/src/RPM/BUILD/python3-module-gevent-socketio-0.3.6/docs' error: Bad exit status from /usr/src/tmp/rpm-tmp.13355 (%build) RPM build errors: Bad exit status from /usr/src/tmp/rpm-tmp.13355 (%build) Command exited with non-zero status 1 4.51user 0.18system 0:04.70elapsed 99%CPU (0avgtext+0avgdata 36368maxresident)k 0inputs+0outputs (0major+56173minor)pagefaults 0swaps hsh-rebuild: rebuild of `python3-module-gevent-socketio-0.3.6-alt4.src.rpm' failed. Command exited with non-zero status 1 12.25user 3.85system 0:15.74elapsed 102%CPU (0avgtext+0avgdata 106552maxresident)k 336inputs+0outputs (0major+476874minor)pagefaults 0swaps