<86>Dec  4 03:56:23 userdel[2491523]: delete user 'rooter'
<86>Dec  4 03:56:23 userdel[2491523]: removed group 'rooter' owned by 'rooter'
<86>Dec  4 03:56:23 groupadd[2491534]: group added to /etc/group: name=rooter, GID=969
<86>Dec  4 03:56:23 groupadd[2491534]: group added to /etc/gshadow: name=rooter
<86>Dec  4 03:56:23 groupadd[2491534]: new group: name=rooter, GID=969
<86>Dec  4 03:56:23 useradd[2491545]: new user: name=rooter, UID=969, GID=969, home=/root, shell=/bin/bash
<86>Dec  4 03:56:23 userdel[2491563]: delete user 'builder'
<86>Dec  4 03:56:23 userdel[2491563]: removed group 'builder' owned by 'builder'
<86>Dec  4 03:56:23 userdel[2491563]: removed shadow group 'builder' owned by 'builder'
<86>Dec  4 03:56:23 groupadd[2491580]: group added to /etc/group: name=builder, GID=970
<86>Dec  4 03:56:23 groupadd[2491580]: group added to /etc/gshadow: name=builder
<86>Dec  4 03:56:23 groupadd[2491580]: new group: name=builder, GID=970
<86>Dec  4 03:56:23 useradd[2491595]: new user: name=builder, UID=970, GID=970, home=/usr/src, shell=/bin/bash
<13>Dec  4 03:56:24 rpmi: libgdbm-1.8.3-alt10 sisyphus+278100.1600.1.1 1626059138 installed
<13>Dec  4 03:56:24 rpmi: libexpat-2.2.10-alt1 sisyphus+276608.100.1.2 1625153360 installed
<13>Dec  4 03:56:24 rpmi: libp11-kit-0.23.15-alt2 sisyphus+287552.300.2.1 1634541487 installed
<13>Dec  4 03:56:24 rpmi: libtasn1-4.17.0-alt2 sisyphus+285706.100.1.1 1632328570 installed
<13>Dec  4 03:56:24 rpmi: rpm-macros-alternatives-0.5.1-alt1 sisyphus+278157.100.2.1 1626055790 installed
<13>Dec  4 03:56:24 rpmi: alternatives-0.5.1-alt1 sisyphus+278157.100.2.1 1626055790 installed
<13>Dec  4 03:56:24 rpmi: ca-certificates-2021.10.06-alt1 sisyphus+286526.200.1.1 1633528578 installed
<13>Dec  4 03:56:24 rpmi: ca-trust-0.1.2-alt1 sisyphus+233348.100.1.1 1561653823 installed
<13>Dec  4 03:56:25 rpmi: p11-kit-trust-0.23.15-alt2 sisyphus+287552.300.2.1 1634541487 installed
<13>Dec  4 03:56:25 rpmi: libcrypto1.1-1.1.1l-alt2 sisyphus+287339.100.1.1 1634383658 installed
<13>Dec  4 03:56:25 rpmi: libssl1.1-1.1.1l-alt2 sisyphus+287339.100.1.1 1634383658 installed
<13>Dec  4 03:56:25 rpmi: python3-3.9.9-alt1 sisyphus+291125.100.2.1 1638385980 installed
<13>Dec  4 03:56:25 rpmi: python3-base-3.9.9-alt1 sisyphus+291125.100.2.1 1638385980 installed
<13>Dec  4 03:56:25 rpmi: tests-for-installed-python3-pkgs-0.1.18-alt1 sisyphus+290420.100.1.1 1637593698 installed
<13>Dec  4 03:56:25 rpmi: rpm-build-python3-0.1.18-alt1 sisyphus+290420.100.1.1 1637593698 installed
<13>Dec  4 03:56:27 rpmi: libpython-2.7.18-alt8 sisyphus+286676.100.1.1 1633726970 installed
<13>Dec  4 03:56:27 rpmi: python2-base-2.7.18-alt8 sisyphus+286676.100.1.1 1633726970 installed
<13>Dec  4 03:56:27 rpmi: python-modules-encodings-2.7.18-alt8 sisyphus+286676.100.1.1 1633726970 installed
<13>Dec  4 03:56:27 rpmi: python-modules-compiler-2.7.18-alt8 sisyphus+286676.100.1.1 1633726970 installed
<13>Dec  4 03:56:27 rpmi: python-modules-email-2.7.18-alt8 sisyphus+286676.100.1.1 1633726970 installed
<13>Dec  4 03:56:27 rpmi: python-modules-unittest-2.7.18-alt8 sisyphus+286676.100.1.1 1633726970 installed
<13>Dec  4 03:56:27 rpmi: python-modules-2.7.18-alt8 sisyphus+286676.100.1.1 1633726970 installed
<13>Dec  4 03:56:27 rpmi: libffi7-1:3.3-alt2 sisyphus+287337.160.5.1 1634396876 installed
<13>Dec  4 03:56:27 rpmi: python-modules-ctypes-2.7.18-alt8 sisyphus+286676.100.1.1 1633726970 installed
<13>Dec  4 03:56:27 rpmi: python-modules-multiprocessing-2.7.18-alt8 sisyphus+286676.100.1.1 1633726970 installed
<13>Dec  4 03:56:27 rpmi: python-modules-logging-2.7.18-alt8 sisyphus+286676.100.1.1 1633726970 installed
<13>Dec  4 03:56:27 rpmi: python-tools-2to3-2.7.18-alt8 sisyphus+286676.100.1.1 1633726970 installed
Building target platforms: i586
Building for target i586
Wrote: /usr/src/in/nosrpm/python3-module-pp-1.6.5-alt2.nosrc.rpm (w1.gzdio)
<13>Dec  4 03:56:28 rpmi: python3-module-pkg_resources-1:58.4.0-alt1 sisyphus+288641.100.2.1 1635771382 installed
<13>Dec  4 03:56:28 rpmi: libpython3-3.9.9-alt1 sisyphus+291125.100.2.1 1638385980 installed
<13>Dec  4 03:56:28 rpmi: libncurses-6.3.20211106-alt1 sisyphus+289273.100.1.1 1636477039 installed
<13>Dec  4 03:56:28 rpmi: libtinfo-devel-6.3.20211106-alt1 sisyphus+289273.100.1.1 1636477039 installed
<13>Dec  4 03:56:28 rpmi: libncurses-devel-6.3.20211106-alt1 sisyphus+289273.100.1.1 1636477039 installed
<13>Dec  4 03:56:29 rpmi: python3-dev-3.9.9-alt1 sisyphus+291125.100.2.1 1638385980 installed
<13>Dec  4 03:56:29 rpmi: python3-module-setuptools-1:58.4.0-alt1 sisyphus+288641.100.2.1 1635771382 installed
Installing python3-module-pp-1.6.5-alt2.src.rpm
Building target platforms: i586
Building for target i586
Executing(%prep): /bin/sh -e /usr/src/tmp/rpm-tmp.20698
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ rm -rf pp-1.6.5
+ echo 'Source #0 (pp-1.6.5.tar.gz):'
Source #0 (pp-1.6.5.tar.gz):
+ /bin/gzip -dc /usr/src/RPM/SOURCES/pp-1.6.5.tar.gz
+ /bin/tar -xf -
+ cd pp-1.6.5
+ /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: No changes to ./setup.py
RefactoringTool: Refactored ./ppworker.py
RefactoringTool: Refactored ./pptransport.py
RefactoringTool: Refactored ./ppserver.py
--- ./ppworker.py	(original)
+++ ./ppworker.py	(refactored)
@@ -31,8 +31,8 @@
 """
 import sys
 import os
-import StringIO
-import cPickle as pickle
+import io
+import pickle as pickle
 import pptransport
 
 copyright = "Copyright (c) 2005-2012 Vitalii Vanovschi. All rights reserved"
@@ -46,10 +46,10 @@
         try:            
             if not module.startswith("from ") and not module.startswith("import "):
                 module = "import " + module
-            exec module
+            exec(module)
             globals().update(locals())
         except:
-            print "An error has occured during the module import"
+            print("An error has occured during the module import")
             sys.excepthook(*sys.exc_info())
     return fname, fobjs
 
@@ -58,7 +58,7 @@
     def __init__(self):
         self.hashmap = {}
         self.e = sys.__stderr__
-        self.sout = StringIO.StringIO()
+        self.sout = io.StringIO()
 #        self.sout = open("/tmp/pp.debug","a+")
         sys.stdout = self.sout
         sys.stderr = self.sout
@@ -76,11 +76,11 @@
 
                 for __fobj in __fobjs:
                     try:
-                        exec __fobj
+                        exec(__fobj)
                         globals().update(locals())
                     except:
-                        print "An error has occured during the " + \
-                              "function import"
+                        print("An error has occured during the " + \
+                              "function import")
                         sys.excepthook(*sys.exc_info())
 
                 __args = pickle.loads(__sargs)
@@ -89,7 +89,7 @@
                 try:
                     __result = __f(*__args)
                 except:
-                    print "An error has occured during the function execution"
+                    print("An error has occured during the function execution")
                     sys.excepthook(*sys.exc_info())
                     __result = None
 
@@ -99,7 +99,7 @@
                 self.t.send(__sresult)
                 self.sout.truncate(0)
         except:
-            print "A fatal error has occured during the function execution"
+            print("A fatal error has occured during the function execution")
             sys.excepthook(*sys.exc_info())
             __result = None
             __sresult = pickle.dumps((__result, self.sout.getvalue()),
--- ./pptransport.py	(original)
+++ ./pptransport.py	(refactored)
@@ -171,7 +171,7 @@
     def send(self, data):
         size = struct.pack("!Q", len(data))
         t_size = struct.calcsize("!Q")
-        s_size = 0L
+        s_size = 0
         while s_size < t_size:
             p_size = self.socket.send(size[s_size:])
             if p_size == 0:
@@ -179,7 +179,7 @@
             s_size += p_size
 
         t_size = len(data)
-        s_size = 0L
+        s_size = 0
         while s_size < t_size:
             p_size = self.socket.send(data[s_size:])
             if p_size == 0:
--- ./ppserver.py	(original)
+++ ./ppserver.py	(refactored)
@@ -74,7 +74,7 @@
                 proto, socket_timeout)
         if pid_file:
           with open(pid_file, 'w') as pfile:
-            print >>pfile, os.getpid()
+            print(os.getpid(), file=pfile)
           atexit.register(os.remove, pid_file)
         self.host = interface
         self.bcast = broadcast
@@ -124,7 +124,7 @@
             self.ssocket.settimeout(LISTEN_SOCKET_TIMEOUT)
             self.ssocket.bind((self.host, self.port))
             self.ssocket.listen(5)
-        except socket.error, e:
+        except socket.error as e:
             self.logger.error("Cannot create socket for %s:%s, %s", self.host, self.port, e)
 
         try:
@@ -160,7 +160,7 @@
         mysocket.send(version)
         #generate a random string
         srandom = "".join([random.choice(string.ascii_letters)
-                for i in xrange(16)])
+                for i in range(16)])
         mysocket.send(srandom)
         answer = sha_new(srandom+self.secret).hexdigest()
         clientanswer = mysocket.receive()
@@ -214,13 +214,13 @@
     # If we don't have configobj installed then let the user know and exit
     try:
         from configobj import ConfigObj
-    except ImportError, ie:
-        print >> sys.stderr, ("ERROR: You must have config obj installed to use"
-                "configuration files. You can still use command line switches.")
+    except ImportError as ie:
+        print(("ERROR: You must have config obj installed to use"
+                "configuration files. You can still use command line switches."), file=sys.stderr)
         sys.exit(1)
 
     if not os.access(file_loc, os.F_OK):
-        print >> sys.stderr, "ERROR: Can not access %s." % arg
+        print("ERROR: Can not access %s." % arg, file=sys.stderr)
         sys.exit(1)
 
     # Load the configuration file
@@ -293,39 +293,39 @@
 
 def print_usage():
     """Prints help"""
-    print "Parallel Python Network Server (pp-" + version + ")"
-    print "Usage: ppserver.py [-hdar] [-f format] [-n proto]"\
+    print("Parallel Python Network Server (pp-" + version + ")")
+    print("Usage: ppserver.py [-hdar] [-f format] [-n proto]"\
             " [-c config_path] [-i interface] [-b broadcast]"\
             " [-p port] [-w nworkers] [-s secret] [-t seconds]"\
-            " [-k seconds] [-P pid_file]"
-    print
-    print "Options: "
-    print "-h                 : this help message"
-    print "-d                 : set log level to debug"
-    print "-f format          : log format"
-    print "-a                 : enable auto-discovery service"
-    print "-r                 : restart worker process after each"\
-            " task completion"
-    print "-n proto           : protocol number for pickle module"
-    print "-c path            : path to config file"
-    print "-i interface       : interface to listen"
-    print "-b broadcast       : broadcast address for auto-discovery service"
-    print "-p port            : port to listen"
-    print "-w nworkers        : number of workers to start"
-    print "-s secret          : secret for authentication"
-    print "-t seconds         : timeout to exit if no connections with "\
-            "clients exist"
-    print "-k seconds         : socket timeout in seconds"
-    print "-P pid_file        : file to write PID to"
-    print
-    print "To print server stats send SIGUSR1 to its main process (unix only). "
-    print 
-    print "Due to the security concerns always use a non-trivial secret key."
-    print "Secret key set by -s switch will override secret key assigned by"
-    print "pp_secret variable in .pythonrc.py"
-    print
-    print "Please visit http://www.parallelpython.com for extended up-to-date"
-    print "documentation, examples and support forums"
+            " [-k seconds] [-P pid_file]")
+    print()
+    print("Options: ")
+    print("-h                 : this help message")
+    print("-d                 : set log level to debug")
+    print("-f format          : log format")
+    print("-a                 : enable auto-discovery service")
+    print("-r                 : restart worker process after each"\
+            " task completion")
+    print("-n proto           : protocol number for pickle module")
+    print("-c path            : path to config file")
+    print("-i interface       : interface to listen")
+    print("-b broadcast       : broadcast address for auto-discovery service")
+    print("-p port            : port to listen")
+    print("-w nworkers        : number of workers to start")
+    print("-s secret          : secret for authentication")
+    print("-t seconds         : timeout to exit if no connections with "\
+            "clients exist")
+    print("-k seconds         : socket timeout in seconds")
+    print("-P pid_file        : file to write PID to")
+    print()
+    print("To print server stats send SIGUSR1 to its main process (unix only). ")
+    print() 
+    print("Due to the security concerns always use a non-trivial secret key.")
+    print("Secret key set by -s switch will override secret key assigned by")RefactoringTool: No changes to ./ppcommon.py
RefactoringTool: No changes to ./ppauto.py
RefactoringTool: Refactored ./pp.py

+    print("pp_secret variable in .pythonrc.py")
+    print()
+    print("Please visit http://www.parallelpython.com for extended up-to-date")
+    print("documentation, examples and support forums")
 
 
 def create_network_server(argv):
--- ./pp.py	(original)
+++ ./pp.py	(refactored)
@@ -39,7 +39,7 @@
 import time
 import atexit
 import user
-import cPickle as pickle
+import pickle as pickle
 import pptransport
 import ppauto
 import ppcommon
@@ -118,7 +118,7 @@
         self.result, sout = pickle.loads(self.sresult)
         self.unpickled = True
         if len(sout) > 0:
-            print sout,
+            print(sout, end=' ')
         if self.callback:
             args = self.callbackargs + (self.result, )
             self.callback(*args)
@@ -362,12 +362,12 @@
                         (broadcast, port)))
         self.__stats_lock = threading.Lock()
         if secret is not None:
-            if not isinstance(secret, types.StringType):
+            if not isinstance(secret, bytes):
                 raise TypeError("secret must be of a string type")
             self.secret = str(secret)
         elif hasattr(user, "pp_secret"):
             secret = getattr(user, "pp_secret")
-            if not isinstance(secret, types.StringType):
+            if not isinstance(secret, bytes):
                 raise TypeError("secret must be of a string type")
             self.secret = str(secret)
         else:
@@ -416,7 +416,7 @@
             raise TypeError("globals argument must be a dictionary")
 
         for module in modules:
-            if not isinstance(module, types.StringType):
+            if not isinstance(module, bytes):
                 raise TypeError("modules argument must be a list of strings")
 
         tid = self.__gentid()
@@ -426,9 +426,9 @@
             modules = tuple(set(modules))
             self.logger.debug("Task %i will autoimport next modules: %s" %
                     (tid, str(modules)))
-            for object1 in globals.values():
+            for object1 in list(globals.values()):
                 if isinstance(object1, types.FunctionType) \
-                        or isinstance(object1, types.ClassType):
+                        or isinstance(object1, type):
                     depfuncs += (object1, )
 
         task = _Task(self, tid, callback, callbackargs, group)
@@ -438,8 +438,8 @@
         self.__waittasks_lock.release()
 
         # if the function is a method of a class add self to the arguments list
-        if isinstance(func, types.MethodType) and func.im_self is not None:
-            args = (func.im_self, ) + args
+        if isinstance(func, types.MethodType) and func.__self__ is not None:
+            args = (func.__self__, ) + args
 
         # if there is an instance of a user deined class in the arguments add
         # whole class to dependancies
@@ -465,7 +465,7 @@
         self.__queue_lock.release()
 
         self.logger.debug("Task %i submited, function='%s'" %
-                (tid, func.func_name))
+                (tid, func.__name__))
         self.__scheduler()
         return task
 
@@ -510,7 +510,7 @@
         """Returns active nodes as a dictionary
         [keys - nodes, values - ncpus]"""
         active_nodes = {}
-        for node, stat in self.__stats.items():
+        for node, stat in list(self.__stats.items()):
             if node == "local" or node in self.autopp_list \
                     and self.autopp_list[node]:
                 active_nodes[node] = stat.ncpus
@@ -518,7 +518,7 @@
 
     def get_stats(self):
         """Returns job execution statistics as a dictionary"""
-        for node, stat in self.__stats.items():
+        for node, stat in list(self.__stats.items()):
             if stat.rworker:
                 try:
                     stat.rworker.send("TIME")
@@ -532,26 +532,26 @@
         """Prints job execution statistics. Useful for benchmarking on
            clusters"""
 
-        print "Job execution statistics:"
+        print("Job execution statistics:")
         walltime = time.time() - self.__creation_time
-       RefactoringTool: Refactored ./examples/sum_primes_functor.py
RefactoringTool: Refactored ./examples/sum_primes.py
 statistics = self.get_stats().items()
+        statistics = list(self.get_stats().items())
         totaljobs = 0.0
         for ppserver, stat in statistics:
             totaljobs += stat.njobs
-        print " job count | % of all jobs | job time sum | " \
-                "time per job | job server"
+        print(" job count | % of all jobs | job time sum | " \
+                "time per job | job server")
         for ppserver, stat in statistics:
             if stat.njobs:
-                print "    %6i |        %6.2f |     %8.4f |  %11.6f | %s" \
+                print("    %6i |        %6.2f |     %8.4f |  %11.6f | %s" \
                         % (stat.njobs, 100.0*stat.njobs/totaljobs, stat.time,
-                        stat.time/stat.njobs, ppserver, )
-        print "Time elapsed since server creation", walltime
-        print self.__active_tasks, "active tasks,", self.get_ncpus(), "cores"
+                        stat.time/stat.njobs, ppserver, ))
+        print("Time elapsed since server creation", walltime)
+        print(self.__active_tasks, "active tasks,", self.get_ncpus(), "cores")
 
         if not self.__accurate_stats:
-            print "WARNING: statistics provided above is not accurate" \
-                  " due to job rescheduling"
-        print
+            print("WARNING: statistics provided above is not accurate" \
+                  " due to job rescheduling")
+        print()
 
     # all methods below are for internal use only
 
@@ -637,14 +637,14 @@
         if hashs not in self.__sfuncHM:
             sources = [self.__get_source(func) for func in funcs]
             self.__sfuncHM[hashs] = pickle.dumps(
-                    (funcs[0].func_name, sources, modules),
+                    (funcs[0].__name__, sources, modules),
                     self.__pickle_proto)
         return self.__sfuncHM[hashs]
 
     def __find_modules(self, prefix, dict):
         """recursively finds all the modules in dict"""
         modules = []
-        for name, object in dict.items():
+        for name, object in list(dict.items()):
             if isinstance(object, types.ModuleType) \
                     and name not in ("__builtins__", "pp"):
                 if object.__name__ == prefix+name or prefix == "":
--- ./examples/sum_primes_functor.py	(original)
+++ ./examples/sum_primes_functor.py	(refactored)
@@ -28,13 +28,13 @@
 
 def sum_primes(n):
     """Calculates sum of all primes below given integer n"""
-    return sum([x for x in xrange(2,n) if isprime(x)])
+    return sum([x for x in range(2,n) if isprime(x)])
 
 
-print """Usage: python sum_primes.py [ncpus]
+print("""Usage: python sum_primes.py [ncpus]
     [ncpus] - the number of workers to run in parallel, 
     if omitted it will be set to the number of processors in the system
-"""
+""")
 
 # tuple of all parallel python servers to connect with
 #ppservers = ("*",) # auto-discover
@@ -49,7 +49,7 @@
     # Creates jobserver with automatically detected number of workers
     job_server = pp.Server(ppservers=ppservers)
 
-print "Starting pp with", job_server.get_ncpus(), "workers"
+print("Starting pp with", job_server.get_ncpus(), "workers")
 
 # Creates a template
 # Template is created using all the parameters of the jobs except 
@@ -71,14 +71,14 @@
 # execution will wait here until result is available
 result = job1()
 
-print "Sum of primes below 100 is", result
+print("Sum of primes below 100 is", result)
 
 # The following submits 8 jobs and then retrieves the results
 inputs = (100000, 100100, 100200, 100300, 100400, 100500, 100600, 100700)
 jobs = [(input, fn.submit(input)) for input in inputs]
 
 for input, job in jobs:
-    print "Sum of primes below", input, "is", job()
+    print("Sum of primes below", input, "is", job())
 
 job_server.print_stats()
 
--- ./examples/sum_primes.py	(original)
+++ ./examples/sum_primes.py	(refactored)
@@ -29,12 +29,12 @@
 
 def sum_primes(n):
     """Calculates sum of all primes below given integer n"""
-    return sum([x for x in xrange(2, n) if isprime(x)])
+    return sum([x for x in range(RefactoringTool: Refactored ./examples/reverse_md5.py
RefactoringTool: Refactored ./examples/quicksort.py
RefactoringTool: Refactored ./examples/dynamic_ncpus.py
2, n) if isprime(x)])
 
 
-print """Usage: python sum_primes.py [ncpus]
+print("""Usage: python sum_primes.py [ncpus]
     [ncpus] - the number of workers to run in parallel,
-    if omitted it will be set to the number of processors in the system"""
+    if omitted it will be set to the number of processors in the system""")
 
 # tuple of all parallel python servers to connect with
 ppservers = ()
@@ -48,7 +48,7 @@
     # Creates jobserver with automatically detected number of workers
     job_server = pp.Server(ppservers=ppservers)
 
-print "Starting pp with", job_server.get_ncpus(), "workers"
+print("Starting pp with", job_server.get_ncpus(), "workers")
 
 # Submit a job of calulating sum_primes(100) for execution.
 # sum_primes - the function
@@ -65,7 +65,7 @@
 # wait here until result is available
 result = job1()
 
-print "Sum of primes below 100 is", result
+print("Sum of primes below 100 is", result)
 
 
 # The following submits 8 jobs and then retrieves the results
@@ -74,7 +74,7 @@
         ("math", ))) for input in inputs]
 
 for input, job in jobs:
-    print "Sum of primes below", input, "is", job()
+    print("Sum of primes below", input, "is", job())
 
 job_server.print_stats()
 
--- ./examples/reverse_md5.py	(original)
+++ ./examples/reverse_md5.py	(refactored)
@@ -14,15 +14,15 @@
 def md5test(hash, start, end):
     """Calculates md5 of the integerss between 'start' and 'end' and
        compares it with 'hash'"""
-    for x in xrange(start, end):
+    for x in range(start, end):
         if md5.new(str(x)).hexdigest() == hash:
             return x
 
 
-print """Usage: python reverse_md5.py [ncpus]
+print("""Usage: python reverse_md5.py [ncpus]
     [ncpus] - the number of workers to run in parallel,
     if omitted it will be set to the number of processors in the system
-"""
+""")
 
 # tuple of all parallel python servers to connect with
 #ppservers = ("*",) # auto-discover
@@ -37,11 +37,11 @@
     # Creates jobserver with automatically detected number of workers
     job_server = pp.Server(ppservers=ppservers)
 
-print "Starting pp with", job_server.get_ncpus(), "workers"
+print("Starting pp with", job_server.get_ncpus(), "workers")
 
 #Calculates md5 hash from the given number
 hash = md5.new("1829182").hexdigest()
-print "hash =", hash
+print("hash =", hash)
 #Now we will try to find the number with this hash value
 
 start = 1
@@ -54,7 +54,7 @@
 step = (end - start) / parts + 1
 jobs = []
 
-for index in xrange(parts):
+for index in range(parts):
     starti = start+index*step
     endi = min(start+(index+1)*step, end)
     # Submit a job which will test if a number in the range starti-endi
@@ -77,9 +77,9 @@
 
 # Print the results
 if result:
-    print "Reverse md5 for", hash, "is", result
+    print("Reverse md5 for", hash, "is", result)
 else:
-    print "Reverse md5 for", hash, "has not been found"
+    print("Reverse md5 for", hash, "has not been found")
 
 job_server.print_stats()
 
--- ./examples/quicksort.py	(original)
+++ ./examples/quicksort.py	(refactored)
@@ -19,10 +19,10 @@
         return [srv.submit(quicksort, (a,))]
     
 
-print """Usage: python quicksort.py [ncpus]
+print("""Usage: python quicksort.py [ncpus]
     [ncpus] - the number of workers to run in parallel, 
     if omitted it will be set to the number of processors in the system
-"""
+""")
 
 # tuple of all parallel python servers to connect with
 #ppservers = ("*",)
@@ -37,11 +37,11 @@
     # Creates jobserver with automatically detected number of workers
     job_server = pp.Server(ppservers=ppservers)
 
-print "Starting pp with", job_server.get_ncpus(), "workers"
+print("Starting pp with", job_server.get_ncpus(), "workers")
 
 n = 1000000
 input = []
-for i in xrange(n):
+for i in range(n):
     input.append(random.randint(0,100000))
 
 # set n to a positive integer to create 2^n PP jobs 
@@ -62,7 +62,7 @@
     else:
         output.append(x)
 
-print "first 30 numbers in increasing order:", output[:30]
+print("first 30 numbers in increasing order:", output[:30])
 
 job_server.print_stats()
 
--- ./examples/dynamic_nRefactoringTool: Refactored ./examples/callback.py
RefactoringTool: Refactored ./examples/auto_diff.py
cpus.py	(original)
+++ ./examples/dynamic_ncpus.py	(refactored)
@@ -16,15 +16,15 @@
 def part_sum(start, end):
     """Calculates partial sum"""
     sum = 0
-    for x in xrange(start, end):
+    for x in range(start, end):
         if x % 2 == 0:
             sum -= 1.0 / x
         else:
             sum += 1.0 / x
     return sum
 
-print """Usage: python dynamic_ncpus.py"""
-print
+print("""Usage: python dynamic_ncpus.py""")
+print()
 
 start = 1
 end = 20000000
@@ -42,8 +42,8 @@
     job_server.set_ncpus(ncpus)
     jobs = []
     start_time = time.time()
-    print "Starting ", job_server.get_ncpus(), " workers"
-    for index in xrange(parts):
+    print("Starting ", job_server.get_ncpus(), " workers")
+    for index in range(parts):
         starti = start+index*step
         endi = min(start+(index+1)*step, end)
         # Submit a job which will calculate partial sum
@@ -57,10 +57,10 @@
     # Retrieve all the results and calculate their sum
     part_sum1 = sum([job() for job in jobs])
     # Print the partial sum
-    print "Partial sum is", part_sum1, "| diff =", math.log(2) - part_sum1
+    print("Partial sum is", part_sum1, "| diff =", math.log(2) - part_sum1)
 
-    print "Time elapsed: ", time.time() - start_time, "s"
-    print
+    print("Time elapsed: ", time.time() - start_time, "s")
+    print()
 job_server.print_stats()
 
 # Parallel Python Software: http://www.parallelpython.com
--- ./examples/callback.py	(original)
+++ ./examples/callback.py	(refactored)
@@ -9,7 +9,7 @@
 
 import math
 import time
-import thread
+import _thread
 import sys
 import pp
 
@@ -20,7 +20,7 @@
 
     def __init__(self):
         self.value = 0.0
-        self.lock = thread.allocate_lock()
+        self.lock = _thread.allocate_lock()
 
     def add(self, value):
         """
@@ -35,7 +35,7 @@
 def part_sum(start, end):
     """Calculates partial sum"""
     sum = 0
-    for x in xrange(start, end):
+    for x in range(start, end):
         if x % 2 == 0:
             sum -= 1.0 / x
         else:
@@ -43,10 +43,10 @@
     return sum
 
 
-print """Usage: python callback.py [ncpus]
+print("""Usage: python callback.py [ncpus]
     [ncpus] - the number of workers to run in parallel,
     if omitted it will be set to the number of processors in the system
-"""
+""")
 
 start = 1
 end = 20000000
@@ -68,7 +68,7 @@
     # Creates jobserver with automatically detected number of workers
     job_server = pp.Server(ppservers=ppservers)
 
-print "Starting pp with", job_server.get_ncpus(), "workers"
+print("Starting pp with", job_server.get_ncpus(), "workers")
 
 # Create anm instance of callback class
 sum = Sum()
@@ -77,7 +77,7 @@
 # of active workers and measure the time
 
 start_time = time.time()
-for index in xrange(parts):
+for index in range(parts):
     starti = start+index*step
     endi = min(start+(index+1)*step, end)
     # Submit a job which will calculate partial sum
@@ -90,7 +90,7 @@
 job_server.wait()
 
 # Print the partial sum
-print "Partial sum is", sum.value, "| diff =", math.log(2) - sum.value
+print("Partial sum is", sum.value, "| diff =", math.log(2) - sum.value)
 
 job_server.print_stats()
 
--- ./examples/auto_diff.py	(original)
+++ ./examples/auto_diff.py	(refactored)
@@ -85,13 +85,13 @@
         """
         partial sum for truncated natural logarithm
         """
-        return sum([float(i%2 and 1 or -1)*x**i/i for i in xrange(1, self.n)])
+        return sum([float(i%2 and 1 or -1)*x**i/i for i in range(1, self.n)])
 
 
-print """Usage: python auto_diff.py [ncpus]
+print("""Usage: python auto_diff.py [ncpus]
     [ncpus] - the number of workers to run in parallel,
     if omitted it will be set to the number of processors in the system
-"""
+""")
 
 # tuple of all parallel python servers to connect with
 #ppservers = ("*",) # auto-discover
@@ -106,7 +106,7 @@
     # Creates jobserver with automatically detected number of workers
     job_server = pp.Server(ppservers=ppservers)
 
-print "Starting pp with", job_server.get_ncpus(), "workers"
+print("Starting pp with", job_server.get_ncpus(), "workers")
 
RefactoringTool: Files that were modified:
RefactoringTool: ./setup.py
RefactoringTool: ./ppworker.py
RefactoringTool: ./pptransport.py
RefactoringTool: ./ppserver.py
RefactoringTool: ./ppcommon.py
RefactoringTool: ./ppauto.py
RefactoringTool: ./pp.py
RefactoringTool: ./examples/sum_primes_functor.py
RefactoringTool: ./examples/sum_primes.py
RefactoringTool: ./examples/reverse_md5.py
RefactoringTool: ./examples/quicksort.py
RefactoringTool: ./examples/dynamic_ncpus.py
RefactoringTool: ./examples/callback.py
RefactoringTool: ./examples/auto_diff.py
 proc = PartialSum(20000)
 
@@ -121,7 +121,7 @@
 for x, f in results:
     # Retrieves the result of the calculation
     val = f()
-    print "t_log(%lf) = %lf, t_log'(%lf) = %lf" % (x, val.x, x, val.dx)
+    print("t_log(%lf) = %lf, t_log'(%lf) = %lf" % (x, val.x, x, val.dx))
 
 # Print execution statistics
 job_server.print_stats()
+ sed -i 's|import user|import types|' pp.py
+ exit 0
Executing(%build): /bin/sh -e /usr/src/tmp/rpm-tmp.70979
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ cd pp-1.6.5
+ 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
copying pp.py -> build/lib
copying ppauto.py -> build/lib
copying ppcommon.py -> build/lib
copying pptransport.py -> build/lib
copying ppworker.py -> build/lib
running build_scripts
creating build/scripts-3.9
copying and adjusting ppserver.py -> build/scripts-3.9
changing mode of build/scripts-3.9/ppserver.py from 644 to 755
+ exit 0
Executing(%install): /bin/sh -e /usr/src/tmp/rpm-tmp.32625
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ /bin/chmod -Rf u+rwX -- /usr/src/tmp/python3-module-pp-buildroot
+ :
+ /bin/rm -rf -- /usr/src/tmp/python3-module-pp-buildroot
+ PATH=/usr/libexec/rpm-build:/usr/src/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games
+ cd pp-1.6.5
+ 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-pp-buildroot --force
running install
running install_lib
creating /usr/src/tmp/python3-module-pp-buildroot
creating /usr/src/tmp/python3-module-pp-buildroot/usr
creating /usr/src/tmp/python3-module-pp-buildroot/usr/lib
creating /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3
creating /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages
copying build/lib/ppworker.py -> /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages
copying build/lib/pptransport.py -> /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages
copying build/lib/ppcommon.py -> /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages
copying build/lib/ppauto.py -> /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages
copying build/lib/pp.py -> /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages
byte-compiling /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/ppworker.py to ppworker.cpython-39.pyc
byte-compiling /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pptransport.py to pptransport.cpython-39.pyc
byte-compiling /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/ppcommon.py to ppcommon.cpython-39.pyc
byte-compiling /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/ppauto.py to ppauto.cpython-39.pyc
byte-compiling /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pp.py to pp.cpython-39.pyc
running install_scripts
creating /usr/src/tmp/python3-module-pp-buildroot/usr/bin
copying build/scripts-3.9/ppserver.py -> /usr/src/tmp/python3-module-pp-buildroot/usr/bin
changing mode of /usr/src/tmp/python3-module-pp-buildroot/usr/bin/ppserver.py to 755
running install_egg_info
Writing /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pp-1.6.5-py3.9.egg-info
+ /usr/lib/rpm/brp-alt
Cleaning files in /usr/src/tmp/python3-module-pp-buildroot (auto)
Verifying and fixing files in /usr/src/tmp/python3-module-pp-buildroot (binconfig,pkgconfig,libtool,desktop,gnuconfig)
Checking contents of files in /usr/src/tmp/python3-module-pp-buildroot/ (default)
Compressing files in /usr/src/tmp/python3-module-pp-buildroot (auto)
Adjusting library links in /usr/src/tmp/python3-module-pp-buildroot
./usr/lib: (from <cmdline>:0)
Verifying ELF objects in /usr/src/tmp/python3-module-pp-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-pp-buildroot using /usr/bin/python3
unlink /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/__pycache__/pp.cpython-39.pyc
unlink /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/__pycache__/ppauto.cpython-39.pyc
unlink /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/__pycache__/ppcommon.cpython-39.pyc
unlink /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/__pycache__/pptransport.cpython-39.pyc
unlink /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/__pycache__/ppworker.cpython-39.pyc
compile /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pp.py
compile /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/ppauto.py
compile /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/ppcommon.py
compile /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pptransport.py
compile /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/ppworker.py
Bytecompiling python3 modules with optimization in /usr/src/tmp/python3-module-pp-buildroot using /usr/bin/python3 -O
compile /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pp.py
compile /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/ppauto.py
compile /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/ppcommon.py
compile /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pptransport.py
compile /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/ppworker.py
Bytecompiling python3 modules with optimization-2 in /usr/src/tmp/python3-module-pp-buildroot using /usr/bin/python3 -OO
compile /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pp.py
compile /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/ppauto.py
compile /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/ppcommon.py
compile /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pptransport.py
compile /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/ppworker.py
Hardlinking identical .pyc and .opt-?.pyc files
'./usr/lib/python3/site-packages/__pycache__/pp.cpython-39.opt-1.pyc' => './usr/lib/python3/site-packages/__pycache__/pp.cpython-39.pyc'
'./usr/lib/python3/site-packages/__pycache__/ppauto.cpython-39.opt-1.pyc' => './usr/lib/python3/site-packages/__pycache__/ppauto.cpython-39.pyc'
'./usr/lib/python3/site-packages/__pycache__/ppcommon.cpython-39.opt-1.pyc' => './usr/lib/python3/site-packages/__pycache__/ppcommon.cpython-39.pyc'
'./usr/lib/python3/site-packages/__pycache__/pptransport.cpython-39.opt-1.pyc' => './usr/lib/python3/site-packages/__pycache__/pptransport.cpython-39.pyc'
'./usr/lib/python3/site-packages/__pycache__/ppworker.cpython-39.opt-1.pyc' => './usr/lib/python3/site-packages/__pycache__/ppworker.cpython-39.pyc'
Processing files: python3-module-pp-1.6.5-alt2
Executing(%doc): /bin/sh -e /usr/src/tmp/rpm-tmp.32625
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ cd pp-1.6.5
+ DOCDIR=/usr/src/tmp/python3-module-pp-buildroot/usr/share/doc/python3-module-pp-1.6.5
+ export DOCDIR
+ rm -rf /usr/src/tmp/python3-module-pp-buildroot/usr/share/doc/python3-module-pp-1.6.5
+ /bin/mkdir -p /usr/src/tmp/python3-module-pp-buildroot/usr/share/doc/python3-module-pp-1.6.5
+ cp -prL AUTHORS CHANGELOG README doc/example.config doc/ppdoc.html /usr/src/tmp/python3-module-pp-buildroot/usr/share/doc/python3-module-pp-1.6.5
+ chmod -R go-w /usr/src/tmp/python3-module-pp-buildroot/usr/share/doc/python3-module-pp-1.6.5
+ chmod -R a+rX /usr/src/tmp/python3-module-pp-buildroot/usr/share/doc/python3-module-pp-1.6.5
+ exit 0
Finding Provides (using /usr/lib/rpm/find-provides)
Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.4PnNGy
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.D0ySNq
find-requires: running scripts (cpp,debuginfo,files,lib,pam,perl,pkgconfig,pkgconfiglib,python,python3,rpmlib,shebang,shell,static,symlinks,systemd-services)
python3.req: /usr/src/tmp/python3-module-pp-buildroot/usr/bin/ppserver.py: skipping atexit
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-pp-buildroot/usr/bin/ppserver.py: Ignore for REQ=slight module=configobj
python3.req: /usr/src/tmp/python3-module-pp-buildroot/usr/bin/ppserver.py: skipping errno
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-pp-buildroot/usr/bin/ppserver.py: Ignore for REQ=slight module=hashlib
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-pp-buildroot/usr/bin/ppserver.py: Ignore for REQ=slight module=sha
python3.req: /usr/src/tmp/python3-module-pp-buildroot/usr/bin/ppserver.py: skipping sys
python3.req: /usr/src/tmp/python3-module-pp-buildroot/usr/bin/ppserver.py: skipping time
python3.req: /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pp.py: skipping atexit
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pp.py: Ignore for REQ=slight module=popen2
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pp.py: Ignore for REQ=slight module=sets
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pp.py: Ignore for REQ=slight module=subprocess
python3.req: /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pp.py: skipping sys
python3.req: /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pp.py: skipping time
python3.req: /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/ppauto.py: skipping sys
python3.req: /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/ppauto.py: skipping time
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pptransport.py: Ignore for REQ=slight module=hashlib
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pptransport.py: Ignore for REQ=slight module=md5
/usr/lib/rpm/python3.req.py: /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/pptransport.py: Ignore for REQ=slight module=sha
python3.req: /usr/src/tmp/python3-module-pp-buildroot/usr/lib/python3/site-packages/ppworker.py: skipping sys
Provides: python3(pp), python3(ppauto), python3(ppcommon), python3(pptransport), python3(ppworker)
Requires: /usr/bin/python3, /usr/lib/python3/site-packages, python3(getopt) < 0, python3(inspect) < 0, python3(io) < 0, python3(logging) < 0, python3(os) < 0, python3(pickle) < 0, python3(random) < 0, python3(signal) < 0, python3(socket) < 0, python3(string) < 0, python3(struct) < 0, python3(threading) < 0, python3(types) < 0
Wrote: /usr/src/RPM/RPMS/noarch/python3-module-pp-1.6.5-alt2.noarch.rpm (w2.lzdio)
2.88user 0.43system 0:04.98elapsed 66%CPU (0avgtext+0avgdata 18880maxresident)k
0inputs+0outputs (0major+136924minor)pagefaults 0swaps
7.97user 4.25system 0:13.08elapsed 93%CPU (0avgtext+0avgdata 103476maxresident)k
0inputs+0outputs (45761major+549425minor)pagefaults 0swaps
--- python3-module-pp-1.6.5-alt2.noarch.rpm.repo	2019-11-08 09:43:06.000000000 +0000
+++ python3-module-pp-1.6.5-alt2.noarch.rpm.hasher	2021-12-04 03:56:35.216837856 +0000
@@ -2,18 +2,18 @@
 /usr/lib/python3/site-packages/__pycache__	40755	root:root	
-/usr/lib/python3/site-packages/__pycache__/pp.cpython-37.opt-1.pyc	100644	root:root	
-/usr/lib/python3/site-packages/__pycache__/pp.cpython-37.opt-2.pyc	100644	root:root	
-/usr/lib/python3/site-packages/__pycache__/pp.cpython-37.pyc	100644	root:root	
-/usr/lib/python3/site-packages/__pycache__/ppauto.cpython-37.opt-1.pyc	100644	root:root	
-/usr/lib/python3/site-packages/__pycache__/ppauto.cpython-37.opt-2.pyc	100644	root:root	
-/usr/lib/python3/site-packages/__pycache__/ppauto.cpython-37.pyc	100644	root:root	
-/usr/lib/python3/site-packages/__pycache__/ppcommon.cpython-37.opt-1.pyc	100644	root:root	
-/usr/lib/python3/site-packages/__pycache__/ppcommon.cpython-37.opt-2.pyc	100644	root:root	
-/usr/lib/python3/site-packages/__pycache__/ppcommon.cpython-37.pyc	100644	root:root	
-/usr/lib/python3/site-packages/__pycache__/pptransport.cpython-37.opt-1.pyc	100644	root:root	
-/usr/lib/python3/site-packages/__pycache__/pptransport.cpython-37.opt-2.pyc	100644	root:root	
-/usr/lib/python3/site-packages/__pycache__/pptransport.cpython-37.pyc	100644	root:root	
-/usr/lib/python3/site-packages/__pycache__/ppworker.cpython-37.opt-1.pyc	100644	root:root	
-/usr/lib/python3/site-packages/__pycache__/ppworker.cpython-37.opt-2.pyc	100644	root:root	
-/usr/lib/python3/site-packages/__pycache__/ppworker.cpython-37.pyc	100644	root:root	
-/usr/lib/python3/site-packages/pp-1.6.5-py3.7.egg-info	100644	root:root	
+/usr/lib/python3/site-packages/__pycache__/pp.cpython-39.opt-1.pyc	100644	root:root	
+/usr/lib/python3/site-packages/__pycache__/pp.cpython-39.opt-2.pyc	100644	root:root	
+/usr/lib/python3/site-packages/__pycache__/pp.cpython-39.pyc	100644	root:root	
+/usr/lib/python3/site-packages/__pycache__/ppauto.cpython-39.opt-1.pyc	100644	root:root	
+/usr/lib/python3/site-packages/__pycache__/ppauto.cpython-39.opt-2.pyc	100644	root:root	
+/usr/lib/python3/site-packages/__pycache__/ppauto.cpython-39.pyc	100644	root:root	
+/usr/lib/python3/site-packages/__pycache__/ppcommon.cpython-39.opt-1.pyc	100644	root:root	
+/usr/lib/python3/site-packages/__pycache__/ppcommon.cpython-39.opt-2.pyc	100644	root:root	
+/usr/lib/python3/site-packages/__pycache__/ppcommon.cpython-39.pyc	100644	root:root	
+/usr/lib/python3/site-packages/__pycache__/pptransport.cpython-39.opt-1.pyc	100644	root:root	
+/usr/lib/python3/site-packages/__pycache__/pptransport.cpython-39.opt-2.pyc	100644	root:root	
+/usr/lib/python3/site-packages/__pycache__/pptransport.cpython-39.pyc	100644	root:root	
+/usr/lib/python3/site-packages/__pycache__/ppworker.cpython-39.opt-1.pyc	100644	root:root	
+/usr/lib/python3/site-packages/__pycache__/ppworker.cpython-39.opt-2.pyc	100644	root:root	
+/usr/lib/python3/site-packages/__pycache__/ppworker.cpython-39.pyc	100644	root:root	
+/usr/lib/python3/site-packages/pp-1.6.5-py3.9.egg-info	100644	root:root	
 /usr/lib/python3/site-packages/pp.py	100644	root:root	
@@ -53,18 +53,18 @@
 File: /usr/lib/python3/site-packages/__pycache__	40755	root:root		
-File: /usr/lib/python3/site-packages/__pycache__/pp.cpython-37.opt-1.pyc	100644	root:root	9855dbf09e2a3d74d7928a613be7d493	
-File: /usr/lib/python3/site-packages/__pycache__/pp.cpython-37.opt-2.pyc	100644	root:root	e4d3a7542ba1a5f73f676b191bead238	
-File: /usr/lib/python3/site-packages/__pycache__/pp.cpython-37.pyc	100644	root:root	9855dbf09e2a3d74d7928a613be7d493	
-File: /usr/lib/python3/site-packages/__pycache__/ppauto.cpython-37.opt-1.pyc	100644	root:root	40c0e55b169c8d326a44532dae59bbcf	
-File: /usr/lib/python3/site-packages/__pycache__/ppauto.cpython-37.opt-2.pyc	100644	root:root	e8014a1a9d54a1c1604204552d1a78c6	
-File: /usr/lib/python3/site-packages/__pycache__/ppauto.cpython-37.pyc	100644	root:root	40c0e55b169c8d326a44532dae59bbcf	
-File: /usr/lib/python3/site-packages/__pycache__/ppcommon.cpython-37.opt-1.pyc	100644	root:root	8c28b1e7ac8bb1d9266258e61bdb5031	
-File: /usr/lib/python3/site-packages/__pycache__/ppcommon.cpython-37.opt-2.pyc	100644	root:root	afc1e93ddf1535f1bff4a67ce141e968	
-File: /usr/lib/python3/site-packages/__pycache__/ppcommon.cpython-37.pyc	100644	root:root	8c28b1e7ac8bb1d9266258e61bdb5031	
-File: /usr/lib/python3/site-packages/__pycache__/pptransport.cpython-37.opt-1.pyc	100644	root:root	9efce907b2786d4ca3302df9a9d82f7d	
-File: /usr/lib/python3/site-packages/__pycache__/pptransport.cpython-37.opt-2.pyc	100644	root:root	e57fb939f2920a57b639233c71614131	
-File: /usr/lib/python3/site-packages/__pycache__/pptransport.cpython-37.pyc	100644	root:root	9efce907b2786d4ca3302df9a9d82f7d	
-File: /usr/lib/python3/site-packages/__pycache__/ppworker.cpython-37.opt-1.pyc	100644	root:root	860e3650eae61e6ed5db75b3085a918d	
-File: /usr/lib/python3/site-packages/__pycache__/ppworker.cpython-37.opt-2.pyc	100644	root:root	526c76a3b447db22f3ba8bd172820145	
-File: /usr/lib/python3/site-packages/__pycache__/ppworker.cpython-37.pyc	100644	root:root	860e3650eae61e6ed5db75b3085a918d	
-File: /usr/lib/python3/site-packages/pp-1.6.5-py3.7.egg-info	100644	root:root	bdaacbd547efe12a03d6f0153f2eb199	
+File: /usr/lib/python3/site-packages/__pycache__/pp.cpython-39.opt-1.pyc	100644	root:root	553200f08374be57589c4497f898f505	
+File: /usr/lib/python3/site-packages/__pycache__/pp.cpython-39.opt-2.pyc	100644	root:root	4929c92093df5f4858cab45a7295430e	
+File: /usr/lib/python3/site-packages/__pycache__/pp.cpython-39.pyc	100644	root:root	553200f08374be57589c4497f898f505	
+File: /usr/lib/python3/site-packages/__pycache__/ppauto.cpython-39.opt-1.pyc	100644	root:root	788e8a4806eb35be54243303d99a5445	
+File: /usr/lib/python3/site-packages/__pycache__/ppauto.cpython-39.opt-2.pyc	100644	root:root	0574cc3f600ba30eae624a656258bf43	
+File: /usr/lib/python3/site-packages/__pycache__/ppauto.cpython-39.pyc	100644	root:root	788e8a4806eb35be54243303d99a5445	
+File: /usr/lib/python3/site-packages/__pycache__/ppcommon.cpython-39.opt-1.pyc	100644	root:root	840ba91bab8b689e4b413c6fccecc2b0	
+File: /usr/lib/python3/site-packages/__pycache__/ppcommon.cpython-39.opt-2.pyc	100644	root:root	90a0553d00685d08ee110dddea450842	
+File: /usr/lib/python3/site-packages/__pycache__/ppcommon.cpython-39.pyc	100644	root:root	840ba91bab8b689e4b413c6fccecc2b0	
+File: /usr/lib/python3/site-packages/__pycache__/pptransport.cpython-39.opt-1.pyc	100644	root:root	132c8a29da60d74c98ce6bdbcc5f8e48	
+File: /usr/lib/python3/site-packages/__pycache__/pptransport.cpython-39.opt-2.pyc	100644	root:root	579494b7d3ba9f71b2acf0f3af1b86ec	
+File: /usr/lib/python3/site-packages/__pycache__/pptransport.cpython-39.pyc	100644	root:root	132c8a29da60d74c98ce6bdbcc5f8e48	
+File: /usr/lib/python3/site-packages/__pycache__/ppworker.cpython-39.opt-1.pyc	100644	root:root	ba6ff805e64d6894bf01596e63426023	
+File: /usr/lib/python3/site-packages/__pycache__/ppworker.cpython-39.opt-2.pyc	100644	root:root	b8ecb859299926ebb9ceefc0c39c9227	
+File: /usr/lib/python3/site-packages/__pycache__/ppworker.cpython-39.pyc	100644	root:root	ba6ff805e64d6894bf01596e63426023	
+File: /usr/lib/python3/site-packages/pp-1.6.5-py3.9.egg-info	100644	root:root	bdaacbd547efe12a03d6f0153f2eb199	
 File: /usr/lib/python3/site-packages/pp.py	100644	root:root	59173bed854fcdf3ace1b1c8bcc16e82	
@@ -80,2 +80,2 @@
 File: /usr/share/doc/python3-module-pp-1.6.5/ppdoc.html	100644	root:root	db91bb34f647cdfec3f9987c48cd6408	
-RPMIdentity: 89afce79ddeaaca70cbf957c5fbcb0e3fae896de1cd669af9fbd9716f545c7437c36f9f63618ee1bcc4c40ec4c11067130066763e2b16e485b95ef74eccf8699
+RPMIdentity: 0e02534698e71a34b6d73af409172b4f6903d2dfc40169c211763d41f43fe03da00d86d4f2396ac5860618af68a02a088876b67e21dc2160b477e09e25852169