<86>Mar 11 09:44:03 userdel[102712]: delete user 'rooter' <86>Mar 11 09:44:03 userdel[102712]: removed group 'rooter' owned by 'rooter' <86>Mar 11 09:44:03 userdel[102712]: removed shadow group 'rooter' owned by 'rooter' <86>Mar 11 09:44:03 groupadd[102718]: group added to /etc/group: name=rooter, GID=681 <86>Mar 11 09:44:03 groupadd[102718]: group added to /etc/gshadow: name=rooter <86>Mar 11 09:44:03 groupadd[102718]: new group: name=rooter, GID=681 <86>Mar 11 09:44:03 useradd[102722]: new user: name=rooter, UID=681, GID=681, home=/root, shell=/bin/bash <86>Mar 11 09:44:03 userdel[102730]: delete user 'builder' <86>Mar 11 09:44:03 userdel[102730]: removed group 'builder' owned by 'builder' <86>Mar 11 09:44:03 groupadd[102737]: group added to /etc/group: name=builder, GID=682 <86>Mar 11 09:44:03 groupadd[102737]: group added to /etc/gshadow: name=builder <86>Mar 11 09:44:03 groupadd[102737]: new group: name=builder, GID=682 <86>Mar 11 09:44:03 useradd[102747]: new user: name=builder, UID=682, GID=682, home=/usr/src, shell=/bin/bash <13>Mar 11 09:44:06 rpmi: libgdbm-1.8.3-alt10 1454943334 installed <13>Mar 11 09:44:06 rpmi: libexpat-2.2.4-alt1 1503305345 installed <13>Mar 11 09:44:06 rpmi: libtasn1-4.13-alt2 1521133850 installed <13>Mar 11 09:44:06 rpmi: libp11-kit-0.23.9-alt5 1525798298 installed <13>Mar 11 09:44:06 rpmi: rpm-macros-alternatives-0.5.0-alt1 sisyphus+221902.300.4.1 1550587121 installed <13>Mar 11 09:44:06 rpmi: alternatives-0.5.0-alt1 sisyphus+221902.300.4.1 1550587121 installed <13>Mar 11 09:44:06 rpmi: ca-certificates-2019.02.01-alt1 sisyphus+220384.200.1.1 1549032756 installed <13>Mar 11 09:44:06 rpmi: ca-trust-0.1.1-alt2 1515595785 installed <13>Mar 11 09:44:06 rpmi: p11-kit-trust-0.23.9-alt5 1525798298 installed <13>Mar 11 09:44:06 rpmi: libcrypto1.1-1.1.0j-alt2 sisyphus+223638.100.2.1 1551791072 installed <13>Mar 11 09:44:06 rpmi: libssl1.1-1.1.0j-alt2 sisyphus+223638.100.2.1 1551791072 installed <13>Mar 11 09:44:06 rpmi: python3-3.6.8-alt1 sisyphus+220164.200.3.1 1548842636 installed <13>Mar 11 09:44:07 rpmi: python3-base-3.6.8-alt1 sisyphus+220164.200.3.1 1548842636 installed <13>Mar 11 09:44:07 rpmi: libpython3-3.6.8-alt1 sisyphus+220164.200.3.1 1548842636 installed <13>Mar 11 09:44:07 rpmi: tests-for-installed-python3-pkgs-0.1.13.1-alt2 1535450458 installed <13>Mar 11 09:44:07 rpmi: rpm-build-python3-0.1.13.1-alt2 1535450458 installed <13>Mar 11 09:44:10 rpmi: python3-module-pkg_resources-1:40.8.0-alt1 sisyphus+221229.100.2.1 1550559950 installed <13>Mar 11 09:44:10 rpmi: libtinfo-devel-6.1.20180407-alt2 sisyphus+222164.200.1.1 1550686226 installed <13>Mar 11 09:44:10 rpmi: libncurses-devel-6.1.20180407-alt2 sisyphus+222164.200.1.1 1550686226 installed <13>Mar 11 09:44:10 rpmi: python3-dev-3.6.8-alt1 sisyphus+220164.200.3.1 1548842636 installed <13>Mar 11 09:44:10 rpmi: python-modules-curses-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:10 rpmi: libverto-0.3.0-alt1_7 sisyphus+223221.100.1.1 1551348953 installed <13>Mar 11 09:44:10 rpmi: libkeyutils-1.6-alt2 sisyphus.217337.100 1544003161 installed <13>Mar 11 09:44:10 rpmi: libcom_err-1.44.6-alt1 sisyphus+224154.100.1.1 1552091678 installed <86>Mar 11 09:44:10 groupadd[1432]: group added to /etc/group: name=_keytab, GID=499 <86>Mar 11 09:44:10 groupadd[1432]: group added to /etc/gshadow: name=_keytab <86>Mar 11 09:44:10 groupadd[1432]: new group: name=_keytab, GID=499 <13>Mar 11 09:44:10 rpmi: libkrb5-1.16.3-alt1 sisyphus+223678.100.1.1 1551746516 installed <13>Mar 11 09:44:11 rpmi: libtirpc-1.0.3-alt1 1532008017 installed <13>Mar 11 09:44:11 rpmi: libnsl2-1.1.0-alt1_1 1511548749 installed <13>Mar 11 09:44:11 rpmi: python-modules-email-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: python-modules-unittest-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: python-modules-nis-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: python-modules-encodings-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: python-modules-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: python-modules-compiler-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: python-modules-ctypes-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: python-modules-multiprocessing-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: python-modules-logging-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: python-tools-2to3-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: python-module-pkg_resources-1:40.8.0-alt1 sisyphus+221229.100.2.1 1550559950 installed <13>Mar 11 09:44:11 rpmi: python-modules-xml-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: python-modules-hotshot-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: python-modules-bsddb-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: python-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: python-modules-distutils-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: libnsl2-devel-1.1.0-alt1_1 1511548749 installed <13>Mar 11 09:44:11 rpmi: python-dev-2.7.15-alt1 sisyphus.217364.100 1544022423 installed <13>Mar 11 09:44:11 rpmi: python-module-setuptools-1:40.8.0-alt1 sisyphus+221229.100.2.1 1550559950 installed <13>Mar 11 09:44:11 rpmi: python3-module-setuptools-1:40.8.0-alt1 sisyphus+221229.100.2.1 1550559950 installed Building target platforms: i586 Building for target i586 Wrote: /usr/src/in/nosrpm/python-module-spambayes-1.1b1-alt2.2.nosrc.rpm Installing python-module-spambayes-1.1b1-alt2.2.src.rpm Building target platforms: i586 Building for target i586 Executing(%prep): /bin/sh -e /usr/src/tmp/rpm-tmp.40609 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + rm -rf python-module-spambayes-1.1b1 + echo 'Source #0 (python-module-spambayes-1.1b1.tar):' Source #0 (python-module-spambayes-1.1b1.tar): + /bin/tar -xf /usr/src/RPM/SOURCES/python-module-spambayes-1.1b1.tar + cd python-module-spambayes-1.1b1 + /bin/chmod -c -Rf u+rwX,go-w . + cp -fR . ../python3 + export LC_ALL=en_US.UTF-8 + LC_ALL=en_US.UTF-8 ++ find ../python3 -type f -name '*.py' + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/windows/py2exe/setup_all.py 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 ../python3/windows/py2exe/setup_all.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/windows/py2exe/setup_all.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/windows/py2exe/gen_py/outlook-9.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma Traceback (most recent call last): File "/usr/bin/2to3", line 5, in sys.exit(main("lib2to3.fixes")) File "/usr/lib/python2.7/lib2to3/main.py", line 260, in main options.processes) File "/usr/lib/python2.7/lib2to3/refactor.py", line 706, in refactor items, write, doctests_only) File "/usr/lib/python2.7/lib2to3/refactor.py", line 301, in refactor self.refactor_file(dir_or_file, write, doctests_only) File "/usr/lib/python2.7/lib2to3/refactor.py", line 747, in refactor_file *args, **kwargs) File "/usr/lib/python2.7/lib2to3/refactor.py", line 341, in refactor_file input, encoding = self._read_python_source(filename) File "/usr/lib/python2.7/lib2to3/refactor.py", line 333, in _read_python_source encoding = tokenize.detect_encoding(f.readline)[0] File "/usr/lib/python2.7/lib2to3/pgen2/tokenize.py", line 310, in detect_encoding encoding = find_cookie(first) File "/usr/lib/python2.7/lib2to3/pgen2/tokenize.py", line 293, in find_cookie raise SyntaxError("unknown encoding: " + encoding) SyntaxError: unknown encoding: mbcs + : + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/windows/py2exe/gen_py/office-9.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma Traceback (most recent call last): File "/usr/bin/2to3", line 5, in sys.exit(main("lib2to3.fixes")) File "/usr/lib/python2.7/lib2to3/main.py", line 260, in main options.processes) File "/usr/lib/python2.7/lib2to3/refactor.py", line 706, in refactor items, write, doctests_only) File "/usr/lib/python2.7/lib2to3/refactor.py", line 301, in refactor self.refactor_file(dir_or_file, write, doctests_only) File "/usr/lib/python2.7/lib2to3/refactor.py", line 747, in refactor_file *args, **kwargs) File "/usr/lib/python2.7/lib2to3/refactor.py", line 341, in refactor_file input, encoding = self._read_python_source(filename) File "/usr/lib/python2.7/lib2to3/refactor.py", line 333, in _read_python_source encoding = tokenize.detect_encoding(f.readline)[0] File "/usr/lib/python2.7/lib2to3/pgen2/tokenize.py", line 310, in detect_encoding encoding = find_cookie(first) File "/usr/lib/python2.7/lib2to3/pgen2/tokenize.py", line 293, in find_cookie raise SyntaxError("unknown encoding: " + encoding) SyntaxError: unknown encoding: mbcs + : + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/windows/py2exe/gen_py/addin-designer.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma Traceback (most recent call last): File "/usr/bin/2to3", line 5, in sys.exit(main("lib2to3.fixes")) File "/usr/lib/python2.7/lib2to3/main.py", line 260, in main options.processes) File "/usr/lib/python2.7/lib2to3/refactor.py", line 706, in refactor items, write, doctests_only) File "/usr/lib/python2.7/lib2to3/refactor.py", line 301, in refactor self.refactor_file(dir_or_file, write, doctests_only) File "/usr/lib/python2.7/lib2to3/refactor.py", line 747, in refactor_file *args, **kwargs) File "/usr/lib/python2.7/lib2to3/refactor.py", line 341, in refactor_file input, encoding = self._read_python_source(filename) File "/usr/lib/python2.7/lib2to3/refactor.py", line 333, in _read_python_source encoding = tokenize.detect_encoding(f.readline)[0] File "/usr/lib/python2.7/lib2to3/pgen2/tokenize.py", line 310, in detect_encoding encoding = find_cookie(first) File "/usr/lib/python2.7/lib2to3/pgen2/tokenize.py", line 293, in find_cookie raise SyntaxError("unknown encoding: " + encoding) SyntaxError: unknown encoding: mbcs + : + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/windows/pop3proxy_tray.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/windows/pop3proxy_tray.py --- ../python3/windows/pop3proxy_tray.py (original) +++ ../python3/windows/pop3proxy_tray.py (refactored) @@ -17,7 +17,7 @@ import os import sys import webbrowser -import thread +import _thread import traceback verbose = 0 @@ -108,7 +108,7 @@ return GetLastError()==winerror.ERROR_ALREADY_EXISTS finally: hmutex.Close() - except win32event.error, details: + except win32event.error as details: if details[0] != winerror.ERROR_ACCESS_DENIED: raise # Mutex created by some other user - it does exist! @@ -184,15 +184,15 @@ self.started = IsServerRunningAnywhere() self.tip = None if self.use_service and not self.IsServiceAvailable(): - print "Service not available. Using thread." + print("Service not available. Using thread.") self.use_service = False # Start up sb_server if not self.started: self.Start() else: - print "The server is already running externally - not starting " \ - "a local server" + print("The server is already running externally - not starting " \ + "a local server") def _AddTaskbarIcon(self): flags = NIF_ICON | NIF_MESSAGE | NIF_TIP @@ -203,8 +203,8 @@ except win32api_error: # Apparently can be seen as XP is starting up. Certainly can # be seen if explorer.exe is not running when started. - print "Ignoring error adding taskbar icon - explorer may not " \ - "be running (yet)." + print("Ignoring error adding taskbar icon - explorer may not " \ + "be running (yet).") # The TaskbarRestart message will fire in this case, and # everything will work out :) @@ -247,10 +247,10 @@ if schService: CloseServiceHandle(schService) return schService != None - except win32api_error, details: + except win32api_error as details: if details[0] != winerror.ERROR_SERVICE_DOES_NOT_EXIST: - print "Unexpected windows error querying for service" - print details + print("Unexpected windows error querying for service") + print(details) return False def GetServiceStatus(self): @@ -363,7 +363,7 @@ # true "running state", not just what we thought it was last. self.CheckCurrentState() menu = CreatePopupMenu() - ids = self.control_functions.keys() + ids = list(self.control_functions.keys()) ids.sort() for id in ids: (wording, function) = self.control_functions[id] @@ -393,7 +393,7 @@ try: unused, function = self.control_functions[id] except KeyError: - print "Unknown command -", id + print("Unknown command -", id) return function() @@ -407,9 +407,9 @@ try: sb_server.stop() except: - print "Error stopping proxy at shutdown" + print("Error stopping proxy at shutdown") traceback.print_exc() - print "Shutting down anyway..." + print("Shutting down anyway...") self.started = False DestroyWindow(self.hwnd) @@ -424,22 +424,22 @@ self.have_prepared_state = False def StartProxyThread(self): - thread.start_new_thread(self._ProxyThread, ()) + _thread.start_new_thread(self._ProxyThread, ()) def Start(self): self.CheckCurrentState() if self.started: - print "Ignoring start request - server already running" + print("Ignoring start request - server already running") return if self.use_service: - if verbose: print "Doing 'Start' via service" + if verbose: print("Doing 'Start' via service") RefactoringTool: Files that were modified: RefactoringTool: ../python3/windows/pop3proxy_tray.py if self.GetServiceStatus() in stoppedStatus: self.StartService() else: - print "Service was already running - ignoring!" + print("Service was already running - ignoring!") else: # Running it internally. - if verbose: print "Doing 'Start' internally" + if verbose: print("Doing 'Start' internally") if not self.have_prepared_state: try: sb_server.prepare() @@ -457,7 +457,7 @@ def Stop(self): self.CheckCurrentState() if not self.started: - print "Ignoring stop request - server doesn't appear to be running" + print("Ignoring stop request - server doesn't appear to be running") return try: use_service = self.use_service @@ -465,18 +465,18 @@ # XXX - watch out - if service status is "stopping", trying # to start is likely to fail until it actually gets to # "stopped" - if verbose: print "Doing 'Stop' via service" + if verbose: print("Doing 'Stop' via service") if self.GetServiceStatus() not in stoppedStatus: self.StopService() else: - print "Service was already stopped - weird - falling " \ - "back to a socket based quit" + print("Service was already stopped - weird - falling " \ + "back to a socket based quit") use_service = False if not use_service: - if verbose: print "Stopping local server" + if verbose: print("Stopping local server") sb_server.stop() except: - print "There was an error stopping the server" + print("There was an error stopping the server") traceback.print_exc() # but either way, assume it stopped for the sake of our UI self.started = False @@ -525,8 +525,8 @@ def ShowHTML(self, url): """Displays the main SpamBayes documentation in your Web browser""" # Stolen from Outlook's Manager.py - import sys, os, urllib - if urllib.splittype(url)[0] is None: # just a file spec + import sys, os, urllib.request, urllib.parse, urllib.error + if urllib.parse.splittype(url)[0] is None: # just a file spec if hasattr(sys, "frozen"): # New binary is in ../docs/sb_server relative to executable. fname = os.path.join(os.path.dirname(sys.argv[0]), + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/windows/pop3proxy_service.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/windows/pop3proxy_service.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/windows/pop3proxy_service.py --- ../python3/windows/pop3proxy_service.py (original) +++ ../python3/windows/pop3proxy_service.py (refactored) @@ -72,12 +72,12 @@ """ if raiseExceptions: try: - import cStringIO as StringIO + import io as StringIO except ImportError: - import StringIO + import io import traceback ei = sys.exc_info() - msg = StringIO.StringIO() + msg = io.StringIO() traceback.print_exception(ei[0], ei[1], ei[2], None, msg) msg.seek(0) self.servicemanager.LogErrorMsg(msg) @@ -170,7 +170,7 @@ # Rest of the standard Python modules we use. import traceback import threading -import cStringIO +import io # The spambayes imports we need. import sb_server @@ -241,10 +241,10 @@ self.event_stopped.wait(1) if self.event_stopped.isSet(): break - print "The service is still shutting down..." + print("The service is still shutting down...") else: # eeek - we timed out - give up in disgust. - print "The worker failed to stop - aborting it anyway" + print("The worker failed to stop - aborting it anyway") except KeyboardInterrupt: pass @@ -265,17 +265,17 @@ sb_server.start() except SystemExit: # user requested shutdown - print "pop3proxy service shutting down due to user request" + print("pop3proxy service shutting down due to user request") except: # Otherwise an error we should log. - ob = cStringIO.StringIO() + ob = io.StringIO() traceback.print_exc(file=ob) message = "The pop3proxy service failed with an " \ "unexpected error\r\n\r\n" + ob.getvalue() # print it too, so any other log we have gets it. - print message + print(message) # Log an error event to the event log. import servicemanager servicemanager.LogErrorMsg(message) @@ -294,6 +294,6 @@ "..", "SpamBayesData") data_directory = os.path.abspath(data_directory) if not os.path.exists(data_directory): - print "Creating data directory at", data_directory + print("Creating data directory at", data_directory) os.makedirs(data_directory) win32serviceutil.HandleCommandLine(Service) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/windows/autoconfigure.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/windows/autoconfigure.py --- ../python3/windows/autoconfigure.py (original) +++ ../python3/windows/autoconfigure.py (refactored) @@ -56,8 +56,8 @@ import types import socket import shutil -import StringIO -import ConfigParser +import io +import configparser try: import win32gui @@ -106,7 +106,7 @@ configure SpamBayes to proxy the servers that Eudora was connecting to. """ ini_filename = "%s%seudora.ini" % (config_location, os.sep) - c = ConfigParser.ConfigParser() + c = configparser.ConfigParser() c.read(ini_filename) translate = {("PopServer", "POPPort") : "pop3proxy", @@ -126,10 +126,10 @@ p = c.get(sect, "popaccount") c.set(sect, "popaccount", "%s@localhost" % \ (p[:p.index('@')],)) - for (eud_name, eud_port), us_name in translate.items(): + for (eud_name, eud_port), us_name in list(translate.items()): try: port = c.get(sect, eud_port) - except ConfigParser.NoOptionError: + except configparser.NoOptionError: port = None if us_name.lower()[:4] == "pop3": @@ -249,7 +249,7 @@ if account_type == "pop3": new_pref = 'user_pref("mail.server.server%s.%shostname", ' \ '"127.0.0.1");' % (server_num, real) - if not pop_accounts.has_key(server_num) or real: + if server_num not in pop_accounts or real: pop_accounts[server_num] = (new_pref, old_pref, old_port, server, port) elif account_type == "imap": @@ -257,7 +257,7 @@ pass proxy_port = pop_proxy_port - for num, (pref, old_pref, old_port, server, port) in pop_accounts.items(): + for num, (pref, old_pref, old_port, server, port) in list(pop_accounts.items()): server = "%s:%s" % (server, port) proxy_port = move_to_next_free_port(proxy_port) port_pref = 'user_pref("mail.server.server%s.port", %s);' % \ @@ -308,7 +308,7 @@ server, port) proxy_port = smtp_proxy_port - for num, (pref, old_pref, old_port, server, port) in smtp_accounts.items(): + for num, (pref, old_pref, old_port, server, port) in list(smtp_accounts.items()): server = "%s:%s" % (server, port) proxy_port = move_to_next_free_port(proxy_port) port_pref = 'user_pref("mail.smtpserver.smtp%s.port", %s);' % \ @@ -365,12 +365,12 @@ connecting to.""" ini_filename = os.path.join(config_location, "Mail", "accounts.ini") ini_file = file(ini_filename, "r") - faked_up = StringIO.StringIO() + faked_up = io.StringIO() faked_up.write(";") # Missing at the start faked_up.write(ini_file.read()) faked_up.seek(0) ini_file.close() - c = ConfigParser.ConfigParser() + c = configparser.ConfigParser() c.readfp(faked_up) translate = {("Incoming Servername", "Incoming Port") : "pop3proxy", @@ -384,10 +384,10 @@ for sect in c.sections(): if sect.startswith("Account") and sect != "Accounts": if c.get(sect, "Incoming Protocol") == "POP": - for (m2_name, m2_port), us_name in translate.items(): + for (m2_name, m2_port), us_name in list(translate.items()): try: port = c.get(sect, m2_port) - except ConfigParser.NoOptionError: + except configparser.NoOptionError: port = None if us_name.lower()[:4] == "pop3": @@ -442,7 +442,7 @@ results = [] for proto, subkey, account in accounts: if proto == "POP3": - for (server_key, port_key), sect in translate.items(): + for (server_key, port_key), sect in list(translate.items()): if sect[:4] == "pop3": default_port = 110 pop_proxy = move_to_next_free_port(pop_proxy) @@ -451,7 RefactoringTool: Files that were modified: RefactoringTool: ../python3/windows/autoconfigure.py +451,7 @@ default_port = 25 smtp_proxy = move_to_next_free_port(smtp_proxy) proxy = smtp_proxy - if account.has_key(port_key): + if port_key in account: port = account[port_key][0] else: port = default_port @@ -607,9 +607,9 @@ f.close() f = open(pocomail_accounts_file, "w") - for accountName in pocomail_accounts.keys(): + for accountName in list(pocomail_accounts.keys()): f.write('[' + accountName + ']\n') - for optionName, optionValue in pocomail_accounts[accountName].items(): + for optionName, optionValue in list(pocomail_accounts[accountName].items()): f.write("%s=%s\n" % (optionName, optionValue)) f.write('\n') f.close() @@ -640,14 +640,14 @@ '"Junk Mail",0,0,,,0,,,move,In,0,0,,0,,,' \ 'move,In,0,0,,0,,,move,In,0,0,,0,,,move,' \ 'In,0,0,,0,,,move,In,0,0,1,0' - if pocomail_filters.has_key("Incoming") and \ + if "Incoming" in pocomail_filters and \ spamBayesFilter not in pocomail_filters["Incoming"]: pocomail_filters["Incoming"].append(spamBayesFilter) f = open(pocomail_filters_file, "w") f.write('{ Filter list generated by PocoMail 3.01 (1661)' \ '- Licensed Version}\n') - for filterName in pocomail_filters.keys(): + for filterName in list(pocomail_filters.keys()): f.write('\n[' + filterName + ']\n') for filter in pocomail_filters[filterName]: f.write(filter + '\n') + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/which_database.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/which_database.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/which_database.py --- ../python3/utilities/which_database.py (original) +++ ../python3/utilities/which_database.py (refactored) @@ -27,33 +27,33 @@ sys.path.insert(-1, os.path.dirname(os.getcwd())) from spambayes.Options import options, get_pathname_option -import dumbdbm -import dbhash -import whichdb +import dbm.dumb +import dbm.bsd +import dbm try: import bsddb except ImportError: bsddb = None def main(): - print "Pickle is available." - db = dumbdbm.open("dumbdb", "c") + print("Pickle is available.") + db = dbm.dumb.open("dumbdb", "c") db["1"] = "1" db.close() - dbstr = whichdb.whichdb("dumbdb") + dbstr = dbm.whichdb("dumbdb") if dbstr: - print "Dumbdbm is available." + print("Dumbdbm is available.") else: - print "Dumbdbm is not available." + print("Dumbdbm is not available.") - db = dbhash.open("dbhash", "c") + db = dbm.bsd.open("dbhash", "c") db["1"] = "1" db.close() - dbstr = whichdb.whichdb("dbhash") + dbstr = dbm.whichdb("dbhash") if dbstr == "dbhash": - print "Dbhash is available." + print("Dbhash is available.") else: - print "Dbhash is not available." + print("Dbhash is not available.") if bsddb is None: dbstr = "" @@ -61,24 +61,24 @@ db = bsddb.hashopen("bsddb3", "c") db["1"] = "1" db.close() - dbstr = whichdb.whichdb("bsddb3") + dbstr = dbm.whichdb("bsddb3") if dbstr == "dbhash": - print "Bsddb[3] is available." + print("Bsddb[3] is available.") else: - print "Bsddb[3] is not available." + print("Bsddb[3] is not available.") - print + print() hammie = get_pathname_option("Storage", "persistent_storage_file") use_dbm = options["Storage", "persistent_use_database"] if not use_dbm: - print "Your storage %s is a: pickle" % (hammie,) + print("Your storage %s is a: pickle" % (hammie,)) return if not os.path.exists(hammie): - print "Your storage file does not exist yet." + print("Your storage file does not exist yet.") return - db_type = whichdb.whichdb(hammie) + db_type = dbm.whichdb(hammie) if db_type == "dbhash": # could be dbhash or bsddb3 # only bsddb3 has a __version__ attribute - old bsddb module does not @@ -89,11 +89,11 @@ pass else: db.close() - print "Your storage", hammie, "is a: bsddb[3]" + print("Your storage", hammie, "is a: bsddb[3]") return elif db_type is None: - print "Your storage %s is unreadable." % (hammie,) - print "Your storage %s is a: %s" % (hammie, db_type) + print("Your storage %s is unreadable." % (hammie,)) + print("Your storage %s is a: %s" % (hammie, db_type)) if __name__ == "__main__": main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/splitndirs.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/splitndirs.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/splitndirs.py --- ../python3/utilities/splitndirs.py (original) +++ ../python3/utilities/splitndirs.py (refactored) @@ -58,15 +58,15 @@ program = sys.argv[0] def usage(code, msg=''): - print >> sys.stderr, __doc__ % globals() + print(__doc__ % globals(), file=sys.stderr) if msg: - print >> sys.stderr, msg + print(msg, file=sys.stderr) sys.exit(code) def main(): try: opts, args = getopt.getopt(sys.argv[1:], 'dhgn:s:v', ['help']) - except getopt.error, msg: + except getopt.error as msg: usage(1, msg) doglob = False @@ -129,10 +129,10 @@ sys.stdout.flush() if verbose: - print - print counter, "messages split into", n, "directories" + print() + print(counter, "messages split into", n, "directories") if skipped: - print "skipped", skipped, "duplicate messages" + print("skipped", skipped, "duplicate messages") if __name__ == '__main__': main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/splitn.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/splitn.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/splitn.py --- ../python3/utilities/splitn.py (original) +++ ../python3/utilities/splitn.py (refactored) @@ -49,15 +49,15 @@ program = sys.argv[0] def usage(code, msg=''): - print >> sys.stderr, __doc__ % globals() + print(__doc__ % globals(), file=sys.stderr) if msg: - print >> sys.stderr, msg + print(msg, file=sys.stderr) sys.exit(code) def main(): try: opts, args = getopt.getopt(sys.argv[1:], 'hn:s:v', ['help']) - except getopt.error, msg: + except getopt.error as msg: usage(1, msg) n = None @@ -92,11 +92,11 @@ counter += 1 if verbose: if counter % 100 == 0: - print '.', + print('.', end=' ') if verbose: - print - print counter, "messages split into", n, "files" + print() + print(counter, "messages split into", n, "files") infile.close() for f in outfiles: f.close() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/split.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/split.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/split.py --- ../python3/utilities/split.py (original) +++ ../python3/utilities/split.py (refactored) @@ -38,9 +38,9 @@ def usage(code, msg=''): - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) if msg: - print >> sys.stderr, msg + print(msg, file=sys.stderr) sys.exit(code) @@ -49,7 +49,7 @@ def main(): try: opts, args = getopt.getopt(sys.argv[1:], 'h', ['help']) - except getopt.error, msg: + except getopt.error as msg: usage(1, msg) bin1 = bin2 = percentage = mboxfile = None + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/rebal.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/rebal.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/rebal.py --- ../python3/utilities/rebal.py (original) +++ ../python3/utilities/rebal.py (refactored) @@ -79,9 +79,9 @@ def usage(msg=None): if msg: - print >> sys.stderr, str(msg) - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(str(msg), file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) def migrate(f, targetdir, verbose): """Move f into targetdir, renaming if needed to avoid name clashes. @@ -98,7 +98,7 @@ digits = random.randrange(100000000) out = os.path.join(targetdir, str(digits) + ext) if verbose: - print "moving", f, "to", out + print("moving", f, "to", out) os.rename(f, out) return os.path.basename(out) @@ -111,7 +111,7 @@ try: opts, args = getopt.getopt(args, "dr:s:t:n:vqcQh") - except getopt.GetoptError, msg: + except getopt.GetoptError as msg: usage(msg) return 1 @@ -154,13 +154,13 @@ resdir = RESDIR if not os.path.exists(resdir): - print >> sys.stderr, "reservoir directory %s doesn't exist" % resdir + print("reservoir directory %s doesn't exist" % resdir, file=sys.stderr) return 1 res = os.listdir(resdir) dirs = glob.glob(setprefix + "*") if not dirs: - print >> sys.stderr, "no directories starting with", setprefix, "exist." + print("no directories starting with", setprefix, "exist.", file=sys.stderr) return 1 # stuff <- list of (directory, files) pairs, where directory is the @@ -173,13 +173,13 @@ stuff.append((d, fs)) if nperdir * len(dirs) > n: - print >> sys.stderr, "not enough files to go around - use lower -n." + print("not enough files to go around - use lower -n.", file=sys.stderr) return 1 # weak check against mixing ham and spam if ((setprefix.find("Ham") >= 0 and resdir.find("Spam") >= 0) or (setprefix.find("Spam") >= 0 and resdir.find("Ham") >= 0)): - yn = raw_input("Reservoir and Set dirs appear not to match. " + yn = input("Reservoir and Set dirs appear not to match. " "Continue? (y/n) ") if yn.lower()[0:1] != 'y': return 1 @@ -194,8 +194,8 @@ movethese = fs[nperdir:] del fs[nperdir:] if dryrun: - print "would move", len(movethese), "files from", d, \ - "to reservoir", resdir + print("would move", len(movethese), "files from", d, \ + "to reservoir", resdir) res.extend(movethese) else: for f in movethese: @@ -216,13 +216,13 @@ movethese = res[-numtomove:] del res[-numtomove:] if dryrun: - print "would move", len(movethese), "files from reservoir", \ - resdir, "to", d + print("would move", len(movethese), "files from reservoir", \ + resdir, "to", d) else: for f in movethese: if confirm: - print file(os.path.join(resdir, f)).read() - ok = raw_input('good enough? ').lower() + print(file(os.path.join(resdir, f)).read()) + ok = input('good enough? ').lower() if not ok.startswith('y'): continue migrate(os.path.join(resdir, f), d, verbose) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/pop3graph.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/pop3graph.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/pop3graph.py --- ../python3/utilities/pop3graph.py (original) +++ ../python3/utilities/pop3graph.py (refactored) @@ -4,7 +4,7 @@ classifier has been over time. Only really meaningful if you started with an empty database.""" -from __future__ import division + import sys import getopt @@ -14,7 +14,7 @@ from spambayes.Options import options def usage(): - print __doc__ + print(__doc__) def main(argv): opts, args = getopt.getopt(argv, "h", ["help"]) @@ -43,7 +43,7 @@ # Sort the messages into the order they arrived, then work out a scaling # factor for the graph - 'limit' is the widest it can be in characters. - keys = allTrained.keys() + keys = list(allTrained.keys()) keys.sort() limit = 70 if len(keys) < limit: @@ -74,18 +74,18 @@ graph.reverse() # Print the graph. - print "\n Success of the classifier over time:\n" - print " . - Number of messages over time" - print " * - Number of correctly classified messages over time\n\n" + print("\n Success of the classifier over time:\n") + print(" . - Number of messages over time") + print(" * - Number of correctly classified messages over time\n\n") for row in range(size): line = ''.join(graph[row]) if row == 0: - print line + " %d" % count + print(line + " %d" % count) elif row == (count - successful) // scale: - print line + " %d" % successful + print(line + " %d" % successful) else: - print line - print " " + "_" * (size+2) + print(line) + print(" " + "_" * (size+2)) if __name__ == '__main__': main(sys.argv[1:]) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/mkreversemap.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/mkreversemap.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/mkreversemap.py --- ../python3/utilities/mkreversemap.py (original) +++ ../python3/utilities/mkreversemap.py (refactored) @@ -28,8 +28,8 @@ def usage(msg=None): if msg is not None: - print >> sys.stderr, msg - print >> sys.stderr, __doc__.strip() % globals() + print(msg, file=sys.stderr) + print(__doc__.strip() % globals(), file=sys.stderr) def mapmessages(f, mboxtype, mapdb): i = 0 @@ -69,7 +69,7 @@ try: opts, args = getopt.getopt(args, "hd:t:", ["type=", "help", "database="]) - except getopt.GetoptError, msg: + except getopt.GetoptError as msg: usage(msg) return 1 + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/mboxcount.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/mboxcount.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/mboxcount.py --- ../python3/utilities/mboxcount.py (original) +++ ../python3/utilities/mboxcount.py (refactored) @@ -37,9 +37,9 @@ program = sys.argv[0] def usage(code, msg=''): - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) if msg: - print >> sys.stderr, msg + print(msg, file=sys.stderr) sys.exit(code) def count(fname): @@ -58,7 +58,7 @@ def main(): try: opts, args = getopt.getopt(sys.argv[1:], 'hg', ['help']) - except getopt.error, msg: + except getopt.error as msg: usage(1, msg) doglob = False @@ -76,7 +76,7 @@ for fname in fnames: goodn, badn = count(fname) - print "%-35s %7d (+ unparseable: %d)" % (fname, goodn, badn) + print("%-35s %7d (+ unparseable: %d)" % (fname, goodn, badn)) if __name__ == '__main__': main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/loosecksum.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/loosecksum.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/loosecksum.py --- ../python3/utilities/loosecksum.py (original) +++ ../python3/utilities/loosecksum.py (refactored) @@ -43,7 +43,7 @@ return flatten(obj.get_payload()) if isinstance(obj, list): return "\n".join([flatten(b) for b in obj]) - raise TypeError, ("unrecognized body type: %s" % type(obj)) + raise TypeError("unrecognized body type: %s" % type(obj)) def generate_checksum(msg): data = flatten(msg) @@ -92,7 +92,7 @@ for mbox in mboxes: for msg in mbox: - print generate_checksum(msg) + print(generate_checksum(msg)) if __name__ == "__main__": main(sys.argv[1:]) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/hammie2cdb.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/hammie2cdb.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/hammie2cdb.py --- ../python3/utilities/hammie2cdb.py (original) +++ ../python3/utilities/hammie2cdb.py (refactored) @@ -23,14 +23,14 @@ def usage(msg=None): if msg is not None: - print >> sys.stderr, msg - print >> sys.stderr, __doc__.strip() % globals() + print(msg, file=sys.stderr) + print(__doc__.strip() % globals(), file=sys.stderr) def main(args): try: opts, args = getopt.getopt(args, "hd:p:", ["help", "database=", "pickle="]) - except getopt.GetoptError, msg: + except getopt.GetoptError as msg: usage(msg) return 1 + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/hammer.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/hammer.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/hammer.py --- ../python3/utilities/hammer.py (original) +++ ../python3/utilities/hammer.py (refactored) @@ -82,7 +82,7 @@ # Every thousand messages or so, flush the DB to disk. if random.randrange(1000) == 1: - print "Flushing." + print("Flushing.") bayes.store() if i > 500: wellFlushed = True @@ -91,7 +91,7 @@ isSpam = random.choice([True, False]) prob = classify(makeMessage(isSpam)) if i < 10 or i % 100 == 0: - print "%6.6d: %d, %.4f" % (i, isSpam, prob) + print("%6.6d: %d, %.4f" % (i, isSpam, prob)) # Every thousand messages or so, reopen the DB without closing it. # The way this works will open the new instance before the existing @@ -106,15 +106,15 @@ # something badly wrong, or they're the result of corrupt databases # that aren't caught by bsddb and turned into DBRunRecoveryErrors. if wellFlushed and random.randrange(1000) == 1: - print "Re-opening." + print("Re-opening.") bayes = storage.open_storage(FILENAME, True) def test(): """Print a random ham message and a random spam message.""" - print makeMessage(False) - print - print makeMessage(True) + print(makeMessage(False)) + print() + print(makeMessage(True)) ham = [ { + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/extractmessages.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/extractmessages.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/extractmessages.py --- ../python3/utilities/extractmessages.py (original) +++ ../python3/utilities/extractmessages.py (refactored) @@ -33,8 +33,8 @@ def usage(msg=None): if msg is not None: - print >> sys.stderr, msg - print >> sys.stderr, __doc__.strip() % globals() + print(msg, file=sys.stderr) + print(__doc__.strip() % globals(), file=sys.stderr) def extractmessages(features, mapdb, hamfile, spamfile): """extract messages which contain given features""" @@ -64,8 +64,8 @@ i += 1 sys.stdout.write('\r%s: %5d' % (mailfile, i)) sys.stdout.flush() - print >> hamfile, msg - print + print(msg, file=hamfile) + print() for mailfile in spamids: i = 0 @@ -75,15 +75,15 @@ i += 1 sys.stdout.write('\r%s: %5d' % (mailfile, i)) sys.stdout.flush() - print >> spamfile, msg - print + print(msg, file=spamfile) + print() def main(args): try: opts, args = getopt.getopt(args, "hd:S:H:f:", ["help", "database=", "spamfile=", "hamfile=", "feature="]) - except getopt.GetoptError, msg: + except getopt.GetoptError as msg: usage(msg) return 1 @@ -104,7 +104,7 @@ elif opt in ("-S", "--spamfile"): spamfile = arg elif opt in ("-f", "--feature"): - features.add(unicode(arg, charset)) + features.add(str(arg, charset)) if hamfile is None and spamfile is None: usage("At least one of -S or -H are required") @@ -137,7 +137,7 @@ try: s = make_header(decode_header(s)).__unicode__() except: - s = unicode(s, 'us-ascii', 'replace') + s = str(s, 'us-ascii', 'replace') features.add(s) if not features: usage("No X-Spambayes-Evidence headers found") + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/export_apple_mail.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/export_apple_mail.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/export_apple_mail.py --- ../python3/utilities/export_apple_mail.py (original) +++ ../python3/utilities/export_apple_mail.py (refactored) @@ -33,9 +33,9 @@ def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) sys.exit(code) def emlx_to_rfc2822(in_fn, out_fn): @@ -109,12 +109,12 @@ if not quiet: sys.stdout.write('.') if not quiet: - print + print() def main(): try: opts, args = getopt.getopt(sys.argv[1:], 'hqe:o:') - except getopt.error, msg: + except getopt.error as msg: usage(1, msg) quiet = False + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/dump_cdb.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/dump_cdb.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/dump_cdb.py --- ../python3/utilities/dump_cdb.py (original) +++ ../python3/utilities/dump_cdb.py (refactored) @@ -19,12 +19,12 @@ db_file = os.path.expanduser(DB_FILE) db = Cdb(open(db_file, 'rb')) items = [] - for k, v in db.iteritems(): + for k, v in db.items(): items.append((float(v), k)) items.sort() for v, k in items: - print k, v + print(k, v) if __name__ == "__main__": main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/convert_db.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/convert_db.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/convert_db.py --- ../python3/utilities/convert_db.py (original) +++ ../python3/utilities/convert_db.py (refactored) @@ -40,14 +40,14 @@ if __name__ == '__main__': try: opts, args = getopt.getopt(sys.argv[1:], 'ht:T:n:N:') - except getopt.error, msg: - print >> sys.stderr, str(msg) + '\n\n' + __doc__ + except getopt.error as msg: + print(str(msg) + '\n\n' + __doc__, file=sys.stderr) sys.exit() old_name = old_type = new_name = new_type = None for opt, arg in opts: if opt == '-h': - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) sys.exit() elif opt == '-t': old_type = arg + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/convert_config_file.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/convert_config_file.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/convert_config_file.py --- ../python3/utilities/convert_config_file.py (original) +++ ../python3/utilities/convert_config_file.py (refactored) @@ -44,8 +44,8 @@ def run(): try: opts, args = getopt.getopt(sys.argv[1:], 'vhf:') - except getopt.error, msg: - print >> sys.stderr, str(msg) + '\n\n' + __doc__ + except getopt.error as msg: + print(str(msg) + '\n\n' + __doc__, file=sys.stderr) sys.exit() filename = "bayescustomize.ini" @@ -53,7 +53,7 @@ for opt, arg in opts: if opt == '-h': - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) sys.exit() elif opt == '-f': filename = arg @@ -62,27 +62,27 @@ o = Options.OptionsClass() if verbose: - print "Loading defaults" + print("Loading defaults") o.load_defaults() if verbose: - print "Updating file:", filename + print("Updating file:", filename) if os.path.exists(filename): if verbose: - print "Merging..." + print("Merging...") o.merge_file(filename) else: - print filename, "does not exist; exiting." + print(filename, "does not exist; exiting.") sys.exit(-1) backup_name = filename + ".backup" if not os.path.exists(backup_name): if verbose: - print "Copying file", filename, "to", backup_name + print("Copying file", filename, "to", backup_name) shutil.copyfile(filename, backup_name) if verbose: - print "Updating..." + print("Updating...") o.update_file(filename) if verbose: - print "Done." + print("Done.") if __name__ == '__main__': run() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/cleanarch.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/cleanarch.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/cleanarch.py --- ../python3/utilities/cleanarch.py (original) +++ ../python3/utilities/cleanarch.py (refactored) @@ -62,9 +62,9 @@ def usage(code, msg=''): - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) if msg: - print >> sys.stderr, msg + print(msg, file=sys.stderr) sys.exit(code) @@ -74,7 +74,7 @@ if output: sys.stdout.write('>' + line) if not quiet: - print >> sys.stderr, '[%d]' % lineno, line[:-1] + print('[%d]' % lineno, line[:-1], file=sys.stderr) @@ -84,7 +84,7 @@ opts, args = getopt.getopt( sys.argv[1:], 'hqns:', ['help', 'quiet', 'dry-run', 'status=']) - except getopt.error, msg: + except getopt.error as msg: usage(1, msg) quiet = 0 @@ -150,10 +150,10 @@ sys.stderr.write('#') statuscnt += 1 if statuscnt > 50: - print >> sys.stderr + print(file=sys.stderr) statuscnt = 0 - print >> sys.stderr, messages, 'messages found' + print(messages, 'messages found', file=sys.stderr) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/utilities/HistToGNU.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/utilities/HistToGNU.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/utilities/HistToGNU.py --- ../python3/utilities/HistToGNU.py (original) +++ ../python3/utilities/HistToGNU.py (refactored) @@ -30,9 +30,9 @@ def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) sys.exit(code) def loadHist(path): @@ -48,8 +48,8 @@ def plot(files): """given a list of files, create gnu-plot file""" - import cStringIO - cmd = cStringIO.StringIO() + import io + cmd = io.StringIO() cmd.write(globalOptions) args = [] for file in files: @@ -60,14 +60,14 @@ cmd.write('e\n') cmd.write('pause 100\n') - print cmd.getvalue() + print(cmd.getvalue()) def main(): import getopt try: opts, args = getopt.getopt(sys.argv[1:], '', []) - except getopt.error, msg: + except getopt.error as msg: usage(1, msg) if not args and options["TestDriver", "save_histogram_pickles"]: @@ -80,7 +80,7 @@ if args: plot(args) else: - print "could not locate any files to plot" + print("could not locate any files to plot") if __name__ == "__main__": main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/testtools/weaktest.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/testtools/weaktest.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/testtools/weaktest.py --- ../python3/testtools/weaktest.py (original) +++ ../python3/testtools/weaktest.py (refactored) @@ -29,7 +29,7 @@ If that exists, it can be used to change the settings in Options.options. """ -from __future__ import generators + import sys,os @@ -43,9 +43,9 @@ def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) sys.exit(code) DONT_TRAIN = None @@ -115,7 +115,7 @@ 'owndecision': OwnDecision, 'owndecision+fn': OwnDecisionFNCorrection, } -decisionkeys=decisions.keys() +decisionkeys=list(decisions.keys()) decisionkeys.sort() class FirstN: @@ -145,7 +145,7 @@ self.d=d def drive(nsets,decision): - print options.display() + print(options.display()) spamdirs = [get_pathname_option("TestDriver", "spam_directories") % \ i for i in range(1, nsets+1)] @@ -168,22 +168,22 @@ hamtrain = 0 spamtrain = 0 n = 0 - for dir,name, is_spam in allfns.iterkeys(): + for dir,name, is_spam in allfns.keys(): n += 1 m=msgs.Msg(dir, name).guts if debug > 1: - print "trained:%dH+%dS"%(hamtrain,spamtrain) + print("trained:%dH+%dS"%(hamtrain,spamtrain)) scr=d.score(m) if debug > 1: - print "score:%.3f"%scr + print("score:%.3f"%scr) if not decision.tooearly(): if is_spam: if debug > 0: - print "Spam with score %.2f"%scr + print("Spam with score %.2f"%scr) cc.spam(scr) else: if debug > 0: - print "Ham with score %.2f"%scr + print("Ham with score %.2f"%scr) cc.ham(scr) de = decision(scr,is_spam) if de == TRAIN_AS_SPAM: @@ -193,13 +193,13 @@ d.train_ham(m) hamtrain += 1 if n % 100 == 0: - print "%5d trained:%dH+%dS wrds:%d"%( - n, hamtrain, spamtrain, len(d.bayes.wordinfo)) - print cc - print "="*70 - print "%5d trained:%dH+%dS wrds:%d"%( - n, hamtrain, spamtrain, len(d.bayes.wordinfo)) - print cc + print("%5d trained:%dH+%dS wrds:%d"%( + n, hamtrain, spamtrain, len(d.bayes.wordinfo))) + print(cc) + print("="*70) + print("%5d trained:%dH+%dS wrds:%d"%( + n, hamtrain, spamtrain, len(d.bayes.wordinfo))) + print(cc) def main(): global debug @@ -208,7 +208,7 @@ try: opts, args = getopt.getopt(sys.argv[1:], 'vd:hn:m:') - except getopt.error, msg: + except getopt.error as msg: usage(1, msg) nsets = None @@ -225,7 +225,7 @@ elif opt == '-m': m = int(arg) elif opt == '-d': - if not decisions.has_key(arg): + if arg not in decisions: usage(1,'Unknown decisionmaker') decision = decisions[arg] + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/testtools/timtest.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/testtools/timtest.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/testtools/timtest.py --- ../python3/testtools/timtest.py (original) +++ ../python3/testtools/timtest.py (refactored) @@ -32,7 +32,7 @@ If that exists, it can be used to change the settings in Options.options. """ -from __future__ import generators + import os import sys @@ -49,19 +49,19 @@ def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) sys.exit(code) def drive(nsets): - print options.display() + print(options.display()) spamdirs = [get_pathname_option("TestDriver", "spam_directories") % \ i for i in range(1, nsets+1)] hamdirs = [get_pathname_option("TestDriver", "ham_directories") % \ i for i in range(1, nsets+1)] - spamhamdirs = zip(spamdirs, hamdirs) + spamhamdirs = list(zip(spamdirs, hamdirs)) d = TestDriver.Driver() for spamdir, hamdir in spamhamdirs: @@ -82,7 +82,7 @@ try: opts, args = getopt.getopt(sys.argv[1:], 'hn:s:', ['ham-keep=', 'spam-keep=']) - except getopt.error, msg: + except getopt.error as msg: usage(1, msg) nsets = seed = hamkeep = spamkeep = None + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/testtools/timcv.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/testtools/timcv.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/testtools/timcv.py --- ../python3/testtools/timcv.py (original) +++ ../python3/testtools/timcv.py (refactored) @@ -48,7 +48,7 @@ If that exists, it can be used to change the settings in Options.options. """ -from __future__ import generators + import os import sys @@ -66,13 +66,13 @@ def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) sys.exit(code) def drive(nsets): - print options.display() + print(options.display()) hamdirs = [get_pathname_option("TestDriver", "ham_directories") % \ i for i in range(1, nsets+1)] @@ -133,7 +133,7 @@ 'HamTest=', 'SpamTest=', 'ham-keep=', 'spam-keep=', 'option=']) - except getopt.error, msg: + except getopt.error as msg: usage(1, msg) nsets = seed = hamtrain = spamtrain = None + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/testtools/table.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/testtools/table.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/testtools/table.py --- ../python3/testtools/table.py (original) +++ ../python3/testtools/table.py (refactored) @@ -47,7 +47,7 @@ if line.startswith('-> tested'): # tested 1910 hams & 948 spams against 2741 hams & 948 spams # 1 2 3 4 5 6 - print line, + print(line, end=' ') elif line.find(' items; mean ') > 0 and line.find('for all runs') > 0: # Ham scores for all runs: 2741 items; mean 0.86; sdev 6.28 @@ -206,26 +206,26 @@ meand += "%12.2f" % (tmeand/nfiles) kval += "%12.2f" % (tkval/nfiles) - print fname + print(fname) if len(fnam2.strip()) > 0: - print fnam2 - print ratio + print(fnam2) + print(ratio) if len(rat2.strip()) > 0: - print rat2 - print fptot - print fpper - print fntot - print fnper - print untot - print unper - print rcost - print bcost - print hmean - print hsdev - print smean - print ssdev - print meand - print kval + print(rat2) + print(fptot) + print(fpper) + print(fntot) + print(fnper) + print(untot) + print(unper) + print(rcost) + print(bcost) + print(hmean) + print(hsdev) + print(smean) + print(ssdev) + print(meand) + print(kval) if __name__ == "__main__": table() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/testtools/sort+group.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/testtools/sort+group.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/testtools/sort+group.py --- ../python3/testtools/sort+group.py (original) +++ ../python3/testtools/sort+group.py (refactored) @@ -44,7 +44,7 @@ if line.lower().startswith("received:"): break else: - print "\nNo Received header found." + print("\nNo Received header found.") fh.close() return None # Paste on continuation lines, if any. @@ -58,8 +58,8 @@ # RFC 2822 says the date-time field must follow a semicolon at the end. i = received.rfind(';') if i < 0: - print "\n" + received - print "No semicolon found in Received header." + print("\n" + received) + print("No semicolon found in Received header.") return None # We only want the part after the semicolon. datestring = received[i+1:] @@ -67,17 +67,17 @@ datestring = ' '.join(datestring.split()) as_tuple = parsedate_tz(datestring) if as_tuple is None: - print "\n" + received - print "Couldn't parse the date: %r" % datestring + print("\n" + received) + print("Couldn't parse the date: %r" % datestring) return None return mktime_tz(as_tuple) def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) sys.exit(code) def main(): @@ -88,7 +88,7 @@ try: opts, args = getopt.getopt(sys.argv[1:], 'hqao:', ['option=']) - except getopt.error, msg: + except getopt.error as msg: usage(1, msg) loud = True @@ -105,7 +105,7 @@ data = [] # list of (time_received, dirname, basename) triples if loud: - print "Scanning everything" + print("Scanning everything") now = time.time() hdir = os.path.dirname(options["TestDriver", "ham_directories"]) sdir = os.path.dirname(options["TestDriver", "spam_directories"]) @@ -126,21 +126,21 @@ data.append((when_received,) + split(name)) if loud: - print "" - print "Sorting ..." + print("") + print("Sorting ...") data.sort() # First rename all the files to a form we can't produce in the end. # This is to protect against name clashes in case the files are # already named according to the scheme we use. if loud: - print "Renaming first pass ..." + print("Renaming first pass ...") for dummy, dirname, basename in data: os.rename(join(dirname, basename), join(dirname, "-" + basename)) if loud: - print "Renaming second pass ..." + print("Renaming second pass ...") earliest = data[0][0] # timestamp of earliest msg received i = 0 for when_received, dirname, basename in data: + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/testtools/simplexloop.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/testtools/simplexloop.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/testtools/simplexloop.py --- ../python3/testtools/simplexloop.py (original) +++ ../python3/testtools/simplexloop.py (refactored) @@ -23,9 +23,9 @@ def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) sys.exit(code) program = sys.argv[0] @@ -52,7 +52,7 @@ mkini(vars) status = os.system('%s > loop.out'%command) if status != 0: - print >> sys.stderr, "Error status from subcommand" + print("Error status from subcommand", file=sys.stderr) sys.exit(status) f = open('loop.out', 'r') txt = f.readlines() @@ -60,8 +60,8 @@ cost = float(txt[-1].split()[2][1:]) f.close() os.rename('loop.out','loop.out.old') - print ''.join(txt[-20:])[:-1] - print "x=%.4f p=%.4f s=%.4f %.2f"%(tuple(vars)+(cost,)) + print(''.join(txt[-20:])[:-1]) + print("x=%.4f p=%.4f s=%.4f %.2f"%(tuple(vars)+(cost,))) sys.stdout.flush() return -cost @@ -69,14 +69,14 @@ import spambayes.optimize finish=spambayes.optimize.SimplexMaximize(start,err,score) mkini(finish) - print "Best result left in bayescustomize.ini" + print("Best result left in bayescustomize.ini") if __name__ == "__main__": import getopt try: opts, args = getopt.getopt(sys.argv[1:], 'hc:') - except getopt.error, msg: + except getopt.error as msg: usage(1, msg) command = None + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/testtools/regimes.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/testtools/regimes.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/testtools/regimes.py --- ../python3/testtools/regimes.py (original) +++ ../python3/testtools/regimes.py (refactored) @@ -194,4 +194,4 @@ return actual if __name__ == "__main__": - print __doc__ + print(__doc__) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/testtools/rates.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/testtools/rates.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/testtools/rates.py --- ../python3/testtools/rates.py (original) +++ ../python3/testtools/rates.py (refactored) @@ -40,17 +40,17 @@ ifile = file(basename + '.txt') except IOError: ifile = file(basename) - interesting = filter(lambda line: line.startswith('-> '), ifile) + interesting = [line for line in ifile if line.startswith('-> ')] ifile.close() oname = basename + 's.txt' ofile = file(oname, 'w') - print basename, '->', oname + print(basename, '->', oname) def dump(*stuff): msg = ' '.join(map(str, stuff)) - print msg - print >> ofile, msg + print(msg) + print(msg, file=ofile) ntests = nfn = nfp = 0 sumfnrate = sumfprate = 0.0 + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/testtools/mksets.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/testtools/mksets.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/testtools/mksets.py --- ../python3/testtools/mksets.py (original) +++ ../python3/testtools/mksets.py (refactored) @@ -37,9 +37,9 @@ def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) sys.exit(code) def distribute(dir): @@ -102,7 +102,7 @@ try: opts, args = getopt.getopt(sys.argv[1:], 'hn:g:m:o:', ['option=']) - except getopt.error, msg: + except getopt.error as msg: usage(2, msg) if args: @@ -125,7 +125,7 @@ distribute(hamdir) distribute(spamdir) - print + print() if __name__ == "__main__": + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/testtools/mkgraph.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/testtools/mkgraph.py --- ../python3/testtools/mkgraph.py (original) +++ ../python3/testtools/mkgraph.py (refactored) @@ -81,7 +81,7 @@ if report == "error": Output.output_title(title) Output.line_title(linelabel="fp", linecolor=0) - for k in xrange(len(nham_wrong)): + for k in range(len(nham_wrong)): n = nham_wrong[k] d = nham_tested[k] if span and k - span >= 0: @@ -90,7 +90,7 @@ Output.add_line(k, (n * 100.0 / (d or 1))) Output.line_title(linelabel="fn", linecolor=1) - for k in xrange(len(nspam_wrong)): + for k in range(len(nspam_wrong)): n = nspam_wrong[k] d = nspam_tested[k] if span and k - span >= 0: @@ -99,7 +99,7 @@ Output.add_line(k, (n * 100.0 / (d or 1))) Output.line_title(linelabel="unsure", linecolor=2) - for k in xrange(len(nspam_unsure)): + for k in range(len(nspam_unsure)): n = nham_unsure[k] + nspam_unsure[k] d = nham_tested[k] + nspam_tested[k] if span and k - span >= 0: @@ -108,7 +108,7 @@ Output.add_line(k, (n * 100.0 / (d or 1))) Output.line_title(linelabel="training_is_ham", linecolor=3) - for k in xrange(len(nspam_unsure)): + for k in range(len(nspam_unsure)): n = nham_trained[k] d = nham_trained[k] + nspam_trained[k] if span and k - span >= 0: @@ -139,41 +139,41 @@ def output_title(self, title): if self.immediate_print: title = '$ Data=Curve2d name="%s Counts"' % (title) - print title + print(title) if not self.immediate_print: - print self.sep.join(["group", "ham_tested", "ham_trained", + print(self.sep.join(["group", "ham_tested", "ham_trained", "ham_right", "ham_wrong", "ham_unsure", "spam_tested", "spam_trained", "spam_right", "spam_wrong", - "spam_unsure"]) + "spam_unsure"])) def add_line(self, vals, linetype=1, linelabel="", markertype=0, linecolor=0): if self.immediate_print: - print - print '%% linetype=%d linelabel="%s" markertype=%d linecolor=%s' % \ - (linetype, linelabel, markertype, linecolor) - for k in xrange(len(vals)): + print() + print('%% linetype=%d linelabel="%s" markertype=%d linecolor=%s' % \ + (linetype, linelabel, markertype, linecolor)) + for k in range(len(vals)): n = vals[k] if span and k - span >= 0: n -= vals[k - span] - if self.lines.has_key(k): + if k in self.lines: self.lines[k].append(str(n)) else: self.lines[k] = [str(n)] if self.immediate_print: - print '%d %d' % (k, n) + print('%d %d' % (k, n)) def output(self): if not self.immediate_print: - keys = self.lines.keys() + keys = list(self.lines.keys()) keys.sort() for k in keys: vals = [str(k)] vals.extend(self.lines.get(k, [])) - print self.sep.join(vals) + print(self.sep.join(vals)) else: - print + print() self.reset() def reset(self): @@ -183,28 +183,28 @@ """Class to output set error data in the correct format.""" def output_title(self, title): if self.immediate_print: - print '$ Data=Curve2d' - print '%% toplabel="%s Error Rates"' % (title) - print '% ymax=5' - print '% xlabel="Days"' - print '% ylabel="Percent"' + print('$ Data=Curve2d') + print('%% toplabel="%s Error Rates"' % (title)) + print('% ymax=5') + print('% xlabel="Days"')RefactoringTool: Files that were modified: RefactoringTool: ../python3/testtools/mkgraph.py + print('% ylabel="Percent"') else: - print title - print self.sep.join(["group", "fp", "fn", "unsure", - "training_is_ham"]) + print(title) + print(self.sep.join(["group", "fp", "fn", "unsure", + "training_is_ham"])) def line_title(self, linetype=1, linelabel="", markertype=0, linecolor=0): if self.immediate_print: - print '\n%% linetype=%d linelabel="%s" markertype=%d ' \ + print('\n%% linetype=%d linelabel="%s" markertype=%d ' \ 'linecolor=%d' % (linetype, linelabel, markertype, - linecolor) + linecolor)) def add_line(self, k, v): if self.immediate_print: - print '%d %f' % (k, v) + print('%d %f' % (k, v)) else: - if self.lines.has_key(k): + if k in self.lines: self.lines[k].append(str(v)) else: self.lines[k] = [str(v)] @@ -240,11 +240,11 @@ elif opt == '-s': sep = arg elif opt == '-h': - print __doc__ + print(__doc__) sys.exit() if report not in ("error", "counts"): - print >> sys.stderr, "Unrecognized report type" + print("Unrecognized report type", file=sys.stderr) sys.exit(1) if report == "counts": + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/testtools/mboxtest.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/testtools/mboxtest.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/testtools/mboxtest.py --- ../python3/testtools/mboxtest.py (original) +++ ../python3/testtools/mboxtest.py (refactored) @@ -18,7 +18,7 @@ Read no more than MSGS messages from mailbox. """ -from __future__ import generators + import getopt import mailbox @@ -84,7 +84,7 @@ i = 0 while 1: - msg = mbox.next() + msg = next(mbox) if msg is None: return i += 1 @@ -98,7 +98,7 @@ return buf[i:j] def randindices(nelts, nresults): - L = range(nelts) + L = list(range(nelts)) random.shuffle(L) chunk = nelts / nresults for i in range(nresults): @@ -113,7 +113,7 @@ def main(args): global FMT - print options.display() + print(options.display()) FMT = "unix" NSETS = 10 @@ -141,11 +141,11 @@ nham = min(nham, MAXMSGS) nspam = min(nspam, MAXMSGS) - print "ham", ham, nham - print "spam", spam, nspam + print("ham", ham, nham) + print("spam", spam, nspam) - ihams = map(tuple, randindices(nham, NSETS)) - ispams = map(tuple, randindices(nspam, NSETS)) + ihams = list(map(tuple, randindices(nham, NSETS))) + ispams = list(map(tuple, randindices(nspam, NSETS))) driver = Driver() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/testtools/incremental.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/testtools/incremental.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/testtools/incremental.py --- ../python3/testtools/incremental.py (original) +++ ../python3/testtools/incremental.py (refactored) @@ -297,7 +297,7 @@ elif opt == '-r': regime = arg elif opt == '-h' or opt == '--help': - print __doc__ + print(__doc__) sys.exit() nsets = len(glob.glob("Data/Ham/Set*")) @@ -321,7 +321,7 @@ # if which is not None and j != which: # continue tests.append(Test(classifier.Bayes())) - exec """rules.append(regimes.%s())""" % (regime) in globals(), locals() + exec("""rules.append(regimes.%s())""" % (regime), globals(), locals()) nham_tested.append([]) nham_trained.append([]) nham_right.append([]) @@ -398,9 +398,9 @@ for j in range(0, nsets): if which is not None and j != which: continue - print 'Set %d' % (j + 1) + print('Set %d' % (j + 1)) for k in range(0, len(nham_tested[j])): - print '%d %d %d %d %d %d %d %d %d %d' % ( + print('%d %d %d %d %d %d %d %d %d %d' % ( nham_tested[j][k], nham_trained[j][k], nham_right[j][k], @@ -411,10 +411,10 @@ nspam_right[j][k], nspam_wrong[j][k], nspam_unsure[j][k] - ) - print - - print '$ end' + )) + print() + + print('$ end') if __name__ == '__main__': main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/testtools/fpfn.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/testtools/fpfn.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/testtools/fpfn.py --- ../python3/testtools/fpfn.py (original) +++ ../python3/testtools/fpfn.py (refactored) @@ -26,8 +26,8 @@ ma = re.search(r'(\d+)/(\d+)$', a) mb = re.search(r'(\d+)/(\d+)$', b) if ma and mb: - xa, ya = map(int, ma.groups()) - xb, yb = map(int, mb.groups()) + xa, ya = list(map(int, ma.groups())) + xb, yb = list(map(int, mb.groups())) return cmp((xa, ya), (xb, yb)) else: return cmp(a, b) @@ -37,15 +37,15 @@ def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) sys.exit(code) def main(): try: opts, args = getopt.getopt(sys.argv[1:], 'hiuo:', []) - except getopt.error, msg: + except getopt.error as msg: usage(1, msg) interactive = False @@ -68,7 +68,7 @@ f = open(name + ".txt") except IOError: f = open(name) - print "===", name, "===" + print("===", name, "===") fp = [] fn = [] unsures = [] @@ -82,11 +82,11 @@ fp.sort(cmpf) fn.sort(cmpf) unsures.sort(cmpf) - print "--- fp ---" + print("--- fp ---") for x in fp: if interactive and os.path.exists(x): - print open(x).read() - answer = raw_input('(S)pam, (R)emove or (L)eave : ').lower() + print(open(x).read()) + answer = input('(S)pam, (R)emove or (L)eave : ').lower() if answer == 's': os.rename(x, os.path.join("Data", "Spam", "reservoir", os.path.basename(x))) @@ -95,14 +95,14 @@ elif answer == 'l': pass else: - print "Unknown answer. Left." + print("Unknown answer. Left.") else: - print x - print "--- fn ---" + print(x) + print("--- fn ---") for x in fn: if interactive and os.path.exists(x): - print open(x).read() - answer = raw_input('(H)am, (R)emove or (L)eave : ').lower() + print(open(x).read()) + answer = input('(H)am, (R)emove or (L)eave : ').lower() if answer == 'h': os.rename(x, os.path.join("Data", "Ham", "reservoir", os.path.basename(x))) @@ -111,16 +111,16 @@ elif answer == 'l': pass else: - print "Unknown answer. Left." + print("Unknown answer. Left.") else: - print x + print(x) if do_unsures: - print "--- unsure ---" + print("--- unsure ---") for x in unsures: if interactive and os.path.exists(x): - print open(x).read() - print x - answer = raw_input('(H)am, (S)pam, (R)emove or (L)eave : ').lower() + print(open(x).read()) + print(x) + answer = input('(H)am, (S)pam, (R)emove or (L)eave : ').lower() # One of these will move from a set to the reservoir, # but not change ham/spam, depending on what it was. if answer == 'h': @@ -134,9 +134,9 @@ elif answer == 'l': pass else: - print "Unknown answer. Left." + print("Unknown answer. Left.") else: - print x + print(x) if __name__ == '__main__': main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/testtools/es2hs.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/testtools/es2hs.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/testtools/es2hs.py --- ../python3/testtools/es2hs.py (original) +++ ../python3/testtools/es2hs.py (refactored) @@ -35,9 +35,9 @@ def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) sys.exit(code) def main(): @@ -48,7 +48,7 @@ try: opts, args = getopt.getopt(sys.argv[1:], 'hs:e:') - except getopt.error, msg: + except getopt.error as msg: usage(2, msg) if opts: @@ -70,7 +70,7 @@ for s in spam: if loud: - print "Scanning spamdir (%s):" % s + print("Scanning spamdir (%s):" % s) files = os.listdir(s) for f in files: if f[0] in ('1', '2', '3', '4', '5', '6', '7', '8', '9'): @@ -85,7 +85,7 @@ os.makedirs(hamdir) if loud: - print "Scanning everything" + print("Scanning everything") for f in os.listdir(everything): if f[0] in ('1', '2', '3', '4', '5', '6', '7', '8', '9'): name = os.path.join(everything, f) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/testtools/cmp.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/testtools/cmp.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/testtools/cmp.py --- ../python3/testtools/cmp.py (original) +++ ../python3/testtools/cmp.py (refactored) @@ -35,7 +35,7 @@ while 1: line = get() if line.startswith('-> tested'): - print line, + print(line, end=' ') if line.find(' items; mean ') != -1: # -> Ham distribution for this pair: 1000 items; mean 0.05; sample sdev 0.68 # and later "sample " went away @@ -60,7 +60,7 @@ if line.startswith('total'): break # A line with an f-p rate and an f-n rate. - p, n = map(float, line.split()) + p, n = list(map(float, line.split())) fps.append(p) fns.append(n) @@ -108,16 +108,16 @@ alltags = "" for p1, p2 in zip(p1s, p2s): t = tag(p1, p2) - print " %5.3f %5.3f %s" % (p1, p2, t) + print(" %5.3f %5.3f %s" % (p1, p2, t)) alltags += t + " " - print + print() for t in "won", "tied", "lost": - print "%-4s %2d times" % (t, alltags.count(t)) - print + print("%-4s %2d times" % (t, alltags.count(t))) + print() def dumpdev(meandev1, meandev2): for m1, m2 in zip(meandev1, meandev2): - print mtag(m1, m2) + print(mtag(m1, m2)) def windowsfy(fn): import os @@ -126,7 +126,7 @@ else: return fn -print f1n, '->', f2n +print(f1n, '->', f2n) f1n = windowsfy(f1n) @@ -138,39 +138,39 @@ (fp2, fn2, fptot2, fntot2, fpmean2, fnmean2, hamdev2, spamdev2, hamdevall2, spamdevall2) = suck(file(f2n)) -print -print "false positive percentages" +print() +print("false positive percentages") dump(fp1, fp2) -print "total unique fp went from", fptot1, "to", fptot2, tag(fptot1, fptot2) -print "mean fp % went from", fpmean1, "to", fpmean2, tag(fpmean1, fpmean2) +print("total unique fp went from", fptot1, "to", fptot2, tag(fptot1, fptot2)) +print("mean fp % went from", fpmean1, "to", fpmean2, tag(fpmean1, fpmean2)) -print -print "false negative percentages" +print() +print("false negative percentages") dump(fn1, fn2) -print "total unique fn went from", fntot1, "to", fntot2, tag(fntot1, fntot2) -print "mean fn % went from", fnmean1, "to", fnmean2, tag(fnmean1, fnmean2) +print("total unique fn went from", fntot1, "to", fntot2, tag(fntot1, fntot2)) +print("mean fn % went from", fnmean1, "to", fnmean2, tag(fnmean1, fnmean2)) -print +print() if len(hamdev1) == len(hamdev2) and len(spamdev1) == len(spamdev2): - print "ham mean ham sdev" + print("ham mean ham sdev") dumpdev(hamdev1, hamdev2) - print - print "ham mean and sdev for all runs" + print() + print("ham mean and sdev for all runs") dumpdev([hamdevall1], [hamdevall2]) - print - print "spam mean spam sdev" + print() + print("spam mean spam sdev") dumpdev(spamdev1, spamdev2) - print - print "spam mean and sdev for all runs" + print() + print("spam mean and sdev for all runs") dumpdev([spamdevall1], [spamdevall2]) - print + print() diff1 = spamdevall1[0] - hamdevall1[0] diff2 = spamdevall2[0] - hamdevall2[0] - print "ham/spam mean difference: %2.2f %2.2f %+2.2f" % (diff1, + print("ham/spam mean difference: %2.2f %2.2f %+2.2f" % (diff1, diff2, - diff2 - diff1) + diff2 - diff1)) else: - print "[info about ham & spam means & sdevs not available in both files]" + print("[info about ham & spam means & sdevs not available in both files]") + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/tokenizer.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/tokenizer.py --- ../python3/spambayes/tokenizer.py (original) +++ ../python3/spambayes/tokenizer.py (refactored) @@ -1,7 +1,7 @@ #! /usr/bin/env python """Module to tokenize email messages for spam filtering.""" -from __future__ import generators + import email import email.Message @@ -12,8 +12,8 @@ import math import os import binascii -import urlparse -import urllib +import urllib.parse +import urllib.request, urllib.parse, urllib.error from spambayes import classifier from spambayes.Options import options @@ -36,7 +36,7 @@ # Patch encodings.aliases to recognize 'ansi_x3_4_1968' from encodings.aliases import aliases # The aliases dictionary -if not aliases.has_key('ansi_x3_4_1968'): +if 'ansi_x3_4_1968' not in aliases: aliases['ansi_x3_4_1968'] = 'ascii' del aliases # Not needed any more @@ -610,22 +610,17 @@ # words in the msg, without regard to how many times a given word appears. def textparts(msg): """Return a set of all msg parts with content maintype 'text'.""" - return set(filter(lambda part: part.get_content_maintype() == 'text', - msg.walk())) + return set([part for part in msg.walk() if part.get_content_maintype() == 'text']) def octetparts(msg): """Return a set of all msg parts with type 'application/octet-stream'.""" - return set(filter(lambda part: - part.get_content_type() == 'application/octet-stream', - msg.walk())) + return set([part for part in msg.walk() if part.get_content_type() == 'application/octet-stream']) def imageparts(msg): """Return a list of all msg parts with type 'image/*'.""" # Don't want a set here because we want to be able to process them in # order. - return filter(lambda part: - part.get_content_type().startswith('image/'), - msg.walk()) + return [part for part in msg.walk() if part.get_content_type().startswith('image/')] has_highbit_char = re.compile(r"[\x80-\xff]").search @@ -1067,8 +1062,8 @@ tokens.extend(["url:" + escape for escape in escapes]) # now remove any obfuscation and probe around a bit - url = urllib.unquote(url) - scheme, netloc, path, params, query, frag = urlparse.urlparse(url) + url = urllib.parse.unquote(url) + scheme, netloc, path, params, query, frag = urllib.parse.urlparse(url) if options["Tokenizer", "x-lookup_ip"]: ips = cache.lookup(netloc) @@ -1089,11 +1084,11 @@ # appear in URLs (perhaps in a local bookmark you established), # and never in a URL you receive from an unsolicited email or # another website. - user_pwd, host_port = urllib.splituser(netloc) + user_pwd, host_port = urllib.parse.splituser(netloc) if user_pwd is not None: pushclue("url:has user") - host, port = urllib.splitport(host_port) + host, port = urllib.parse.splitport(host_port) # web servers listening on non-standard ports are suspicious ... if port is not None: if (scheme == "http" and port != '80' or @@ -1291,7 +1286,7 @@ # the best discriminators. # (Not just Date, but Received and X-From_.) if options["Tokenizer", "basic_header_tokenize"]: - for k, v in msg.items(): + for k, v in list(msg.items()): k = k.lower() for rx in self.basic_skip: if rx.match(k): @@ -1530,7 +1525,7 @@ # X-Complaints-To a strong ham clue. x2n = {} if options["Tokenizer", "count_all_header_lines"]: - for x in msg.keys(): + for x in list(msg.keys()): x2n[x] = x2n.get(x, 0) + 1 else: # Do a "safe" approximation to that. When spam and ham are @@ -1538,10 +1533,10 @@ # lines can be a too strong a discriminator for accidental # reasons. safe_headers = options["TokeRefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/tokenizer.py nizer", "safe_headers"] - for x in msg.keys(): + for x in list(msg.keys()): if x.lower() in safe_headers: x2n[x] = x2n.get(x, 0) + 1 - for x in x2n.items(): + for x in list(x2n.items()): yield "header:%s:%d" % x if options["Tokenizer", "record_header_absence"]: for k in x2n: + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/test/test_storage.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/test/test_storage.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/test/test_storage.py --- ../python3/spambayes/test/test_storage.py (original) +++ ../python3/spambayes/test/test_storage.py (refactored) @@ -3,7 +3,7 @@ import unittest, os, sys import glob import tempfile -import cStringIO as StringIO +import io as StringIO import sb_test_support sb_test_support.fix_sys_path() @@ -49,19 +49,19 @@ # Check that nham and nspam are correctedly adjusted. c = self.classifier count = 30 - for i in xrange(count): + for i in range(count): c.learn(["tony"], True) self.assertEqual(c.nspam, i+1) self.assertEqual(c.nham, 0) - for i in xrange(count): + for i in range(count): c.learn(["tony"], False) self.assertEqual(c.nham, i+1) self.assertEqual(c.nspam, count) - for i in xrange(count): + for i in range(count): c.unlearn(["tony"], True) self.assertEqual(c.nham, count) self.assertEqual(c.nspam, count-i-1) - for i in xrange(count): + for i in range(count): c.unlearn(["tony"], False) self.assertEqual(c.nham, count-i-1) self.assertEqual(c.nspam, 0) @@ -185,7 +185,7 @@ db_name = tempfile.mktemp("nodbmtest") DBDictClassifier_load = DBDictClassifier.load DBDictClassifier.load = self._fail_open_best - print "This test will print out an error, which can be ignored." + print("This test will print out an error, which can be ignored.") try: self.assertRaises(SystemExit, open_storage, (db_name, "dbm")) finally: @@ -212,12 +212,12 @@ if gdbm or bsddb: clses += (DBStorageTestCase,) else: - print "Skipping dbm tests, no dbm module available" + print("Skipping dbm tests, no dbm module available") try: import ZODB except ImportError: - print "Skipping ZODB tests, ZODB not available" + print("Skipping ZODB tests, ZODB not available") else: clses += (ZODBStorageTestCase,) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/test/test_stats.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/test/test_stats.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/test/test_stats.py --- ../python3/spambayes/test/test_stats.py (original) +++ ../python3/spambayes/test/test_stats.py (refactored) @@ -264,7 +264,7 @@ data["total_cost"]) def test_AddPercentStrings(self): - for i in xrange(10): + for i in range(10): self._test_AddPercentStrings(i) def _test_AddPercentStrings(self, dp): @@ -481,7 +481,7 @@ def test_with_html(self): s = self._stuff_with_data(True) for line in s: - self.assert_('\t' not in line) + self.assertTrue('\t' not in line) def test_without_html(self): s = self._stuff_with_data(False) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/test/test_smtpproxy.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/test/test_smtpproxy.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/test/test_smtpproxy.py --- ../python3/spambayes/test/test_smtpproxy.py (original) +++ ../python3/spambayes/test/test_smtpproxy.py (refactored) @@ -62,7 +62,7 @@ import getopt import operator import unittest -import thread +import _thread import smtplib import sb_test_support @@ -120,7 +120,7 @@ """Asynchat override.""" try: return Dibbler.BrighterAsyncChat.recv(self, buffer_size) - except socket.error, e: + except socket.error as e: if e[0] == 10035: return '' raise @@ -194,7 +194,7 @@ smtpServer.connect(('localhost', 8025)) try: response = smtpServer.recv(100) - except socket.error, e: + except socket.error as e: if e[0] == 10035: # non-blocking socket so that the recognition # can proceed, so this doesn't mean much @@ -211,7 +211,7 @@ proxy.connect(('localhost', 8026)) try: response = proxy.recv(100) - except socket.error, e: + except socket.error as e: if e[0] == 10035: # non-blocking socket so that the recognition # can proceed, so this doesn't mean much @@ -227,7 +227,7 @@ proxy.connect(('localhost', 8025)) try: response = proxy.recv(100) - except socket.error, e: + except socket.error as e: if e[0] == 10053: # Socket is dead, which is what we want. pass @@ -236,7 +236,7 @@ proxy.send("quit\r\n") try: response = proxy.recv(100) - except socket.error, e: + except socket.error as e: if e[0] == 10053: # Socket is dead, which is what we want. pass @@ -268,13 +268,13 @@ # Read the arguments. try: opts, args = getopt.getopt(sys.argv[1:], 'ht') - except getopt.error, msg: - print >>sys.stderr, str(msg) + '\n\n' + __doc__ + except getopt.error as msg: + print(str(msg) + '\n\n' + __doc__, file=sys.stderr) sys.exit() for opt, arg in opts: if opt == '-h': - print >>sys.stderr, __doc__ + print(__doc__, file=sys.stderr) sys.exit() elif opt == '-t': state.isTest = True @@ -283,7 +283,7 @@ state.createWorkers() if state.runTestServer: - print "Running a test SMTP server on port 8025..." + print("Running a test SMTP server on port 8025...") TestListener() asyncore.loop() else: @@ -297,8 +297,8 @@ trainer = SMTPTrainer(Classifier(), state) BayesSMTPProxyListener('localhost', 8025, ('', 8026), trainer) Dibbler.run() - thread.start_new_thread(runTestServer, ()) - thread.start_new_thread(runProxy, ()) + _thread.start_new_thread(runTestServer, ()) + _thread.start_new_thread(runProxy, ()) sb_test_support.unittest_main(argv=sys.argv + ['suite']) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/test/test_sb_server.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/test/test_sb_server.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/test/test_sb_server.py --- ../python3/spambayes/test/test_sb_server.py (original) +++ ../python3/spambayes/test/test_sb_server.py (refactored) @@ -84,6 +84,7 @@ import sys, os import sb_test_support +from functools import reduce sb_test_support.fix_sys_path() from spambayes import asyncore @@ -194,7 +195,7 @@ def onStat(self, command, args): """POP3 STAT command.""" - maildropSize = reduce(operator.add, map(len, self.maildrop)) + maildropSize = reduce(operator.add, list(map(len, self.maildrop))) maildropSize += len(self.maildrop) * len(HEADER_EXAMPLE) return "+OK %d %d\r\n" % (len(self.maildrop), maildropSize) @@ -243,7 +244,7 @@ def onTop(self, command, args): """POP3 RETR command.""" try: - number, lines = map(int, args.split()) + number, lines = list(map(int, args.split())) except ValueError: number, lines = -1, -1 return self._getMessage(number, lines) @@ -324,7 +325,7 @@ # Stat the mailbox to get the number of messages. proxy.send("stat\r\n") response = proxy.recv(100) - count, totalSize = map(int, response.split()[1:3]) + count, totalSize = list(map(int, response.split()[1:3])) assert count == 3 # Loop through the messages ensuring that they have judgement @@ -373,15 +374,15 @@ # Read the arguments. try: opts, args = getopt.getopt(sys.argv[1:], 'ht') - except getopt.error, msg: - print >>sys.stderr, str(msg) + '\n\n' + __doc__ + except getopt.error as msg: + print(str(msg) + '\n\n' + __doc__, file=sys.stderr) sys.exit() state.isTest = True runSelfTest = True for opt, arg in opts: if opt == '-h': - print >>sys.stderr, __doc__ + print(__doc__, file=sys.stderr) sys.exit() elif opt == '-t': state.isTest = True @@ -391,13 +392,13 @@ state.createWorkers() if runSelfTest: - print "\nRunning self-test...\n" + print("\nRunning self-test...\n") state.buildServerStrings() helper() - print "Self-test passed." # ...else it would have asserted. + print("Self-test passed.") # ...else it would have asserted. elif state.runTestServer: - print "Running a test POP3 server on port 8110..." + print("Running a test POP3 server on port 8110...") Listener() asyncore.loop() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/test/test_sb_pop3dnd.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/test/test_sb_pop3dnd.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/test/test_sb_pop3dnd.py --- ../python3/spambayes/test/test_sb_pop3dnd.py (original) +++ ../python3/spambayes/test/test_sb_pop3dnd.py (refactored) @@ -3,7 +3,7 @@ import sys import email import time -import thread +import _thread import imaplib import unittest @@ -30,7 +30,7 @@ self.assertEqual(msg.date, "fake date") for att in ["date", "deleted", "flagged", "seen", "draft", "recent", "answered"]: - self.assert_(att in msg.stored_attributes) + self.assertTrue(att in msg.stored_attributes) for flag in ["deleted", "answered", "flagged", "seen", "draft", "recent"]: self.assertEqual(getattr(msg, flag), False) @@ -42,11 +42,11 @@ # We get them in lowercase, because this is a twisted # requirement. headers = msg.getHeaders(False) - for k, v in correct_msg.items(): + for k, v in list(correct_msg.items()): self.assertEqual(headers[k.lower()], v) # Should work the same with negate headers = msg.getHeaders(True) - for k, v in correct_msg.items(): + for k, v in list(correct_msg.items()): self.assertEqual(headers[k.lower()], v) def testGetIndividualHeaders(self): @@ -60,8 +60,8 @@ self.assertEqual(headers["subject"], correct_msg["Subject"]) # Negate should get all the other headers. headers = msg.getHeaders(True, "SUBJECT") - self.assert_("subject" not in headers) - for k, v in correct_msg.items(): + self.assertTrue("subject" not in headers) + for k, v in list(correct_msg.items()): if k == "Subject": continue self.assertEqual(headers[k.lower()], v) @@ -74,7 +74,7 @@ setattr(msg, flag, True) flags = list(msg.getFlags()) for flag in all_flags: - self.assert_("\\%s" % (flag.upper(),) in flags) + self.assertTrue("\\%s" % (flag.upper(),) in flags) for flag in all_flags: setattr(msg, flag, False) flags = list(msg.getFlags()) @@ -134,7 +134,7 @@ setattr(msg, flag, True) flags = list(msg.flags()) for flag in all_flags: - self.assert_("\\%s" % (flag.upper(),) in flags) + self.assertTrue("\\%s" % (flag.upper(),) in flags) for flag in all_flags: setattr(msg, flag, False) flags = list(msg.flags()) @@ -162,7 +162,7 @@ correct_msg = email.message_from_string(good1) headers = msg.headers() correct_headers = "\r\b".join(["%s: %s" % (k, v) \ - for k, v in correct_msg.items()]) + for k, v in list(correct_msg.items())]) class DynamicIMAPMessageTest(unittest.TestCase): @@ -204,7 +204,7 @@ factory = IMAPFileMessageFactory() msg = factory.create("key", "directory") self.assertEqual(msg.id, key) - self.assert_(isinstance(msg, type(IMAPFileMessage()))) + self.assertTrue(isinstance(msg, type(IMAPFileMessage()))) def suite(): @@ -221,5 +221,5 @@ from spambayes import asyncore asyncore.loop() TestListener() - thread.start_new_thread(runTestServer, ()) + _thread.start_new_thread(runTestServer, ()) sb_test_support.unittest_main(argv=sys.argv + ['suite']) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/test/test_sb_imapfilter.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/test/test_sb_imapfilter.py --- ../python3/spambayes/test/test_sb_imapfilter.py (original) +++ ../python3/spambayes/test/test_sb_imapfilter.py (refactored) @@ -9,7 +9,7 @@ import threading import imaplib import unittest -import StringIO +import io try: IMAPError = imaplib.error @@ -304,13 +304,13 @@ except TypeError: simple = [] for part in response[msg]: - if isinstance(part, types.StringTypes): + if isinstance(part, (str,)): simple.append(part) else: simple.append('%s\r\n%s)' % (part[0], part[1])) simple = " ".join(simple) response[msg] = "* %s %s" % (msg, simple) - response_text = "\r\n".join(response.values()) + response_text = "\r\n".join(list(response.values())) return "%s\r\n%s OK FETCH completed\r\n" % (response_text, id) def onUID(self, id, command, args, uid=False): @@ -340,11 +340,11 @@ def testConnection(self): # Connection is made in setup, just need to check # that it worked. - self.assert_(self.imap.connected) + self.assertTrue(self.imap.connected) def testGoodLogin(self): self.imap.login(IMAP_USERNAME, IMAP_PASSWORD) - self.assert_(self.imap.logged_in) + self.assertTrue(self.imap.logged_in) def testBadLogin(self): self.assertRaises(LoginFailure, self.imap.login, IMAP_USERNAME, @@ -369,14 +369,14 @@ # Check selection. self.imap.SelectFolder("Inbox") response = self.imap.response('OK') - self.assertEquals(response[0], "OK") - self.assert_(response[1] != [None]) + self.assertEqual(response[0], "OK") + self.assertTrue(response[1] != [None]) # Check that we don't reselect if we are already in that folder. self.imap.SelectFolder("Inbox") response = self.imap.response('OK') - self.assertEquals(response[0], "OK") - self.assertEquals(response[1], [None]) + self.assertEqual(response[0], "OK") + self.assertEqual(response[1], [None]) def test_folder_list(self): global FAIL_NEXT @@ -391,8 +391,8 @@ self.assertEqual(folders, correct) # Bad command. - print "\nYou should see a message indicating that getting the " \ - "folder list failed." + print("\nYou should see a message indicating that getting the " \ + "folder list failed.") FAIL_NEXT = True self.assertEqual(self.imap.folder_list(), []) @@ -544,8 +544,8 @@ # at a time, and that it does collect everything. # Setup a fake file to read from. saved_file = self.imap.file - self.imap.file = StringIO.StringIO() - self.imap.file.write("".join(IMAP_MESSAGES.values()*10)) + self.imap.file = io.StringIO() + self.imap.file.write("".join(list(IMAP_MESSAGES.values())*10)) self.imap.file.seek(0) try: # First check when the size is less than the maximum. @@ -632,7 +632,7 @@ new_msg2 = new_msg.get_full_message() # These should be the same object, not just equal. - self.assert_(new_msg is new_msg2) + self.assertTrue(new_msg is new_msg2) def test_get_bad_message(self): self.msg.id = "unittest" @@ -640,8 +640,8 @@ self.msg.imap_server.select() self.msg.uid = 103 # id of malformed message in dummy server self.msg.folder = IMAPFolder("Inbox", self.msg.imap_server, None) - print "\nWith email package versions less than 3.0, you should " \ - "see an error parsing the message." + print("\nWith email package versions less than 3.0, you should " \ + "see an error parsing the message.") new_msg = self.msg.get_full_message() # With Python < 2.4 (i.e. email < 3.0) we get an exception # header. With more recent versions, we get a defects attribute. @@ -650,7 +650,7 @@ # RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/test/test_sb_imapfilter.py Python 2.4/email 3.0. has_header = new_msg.as_string().find("X-Spambayes-Exception: ") != -1 has_defect = hasattr(new_msg, "defects") and len(new_msg.defects) > 0 - self.assert_(has_header or has_defect) + self.assertTrue(has_header or has_defect) def test_get_memory_error_message(self): # XXX Figure out a way to trigger a memory error - but not in @@ -675,7 +675,7 @@ self.assertNotEqual(self.folder, folder3) def test_iter(self): - keys = self.folder.keys() + keys = list(self.folder.keys()) for msg in self.folder: msg = msg.get_full_message() msg_correct = email.message_from_string(IMAP_MESSAGES[int(keys[0])], @@ -687,7 +687,7 @@ keys = keys[1:] def test_keys(self): - keys = self.folder.keys() + keys = list(self.folder.keys()) # We get back UIDs, not IDs, so convert to check. correct_keys = [str(IMAP_UIDS[id]) for id in UNDELETED_IDS] self.assertEqual(keys, correct_keys) @@ -738,7 +738,7 @@ self.assertNotEqual(id1, id4) self.assertNotEqual(id2, id4) self.assertNotEqual(id3, id4) - self.assert_('-' not in id4) + self.assertTrue('-' not in id4) def test_Train(self): # XXX To-do @@ -809,8 +809,8 @@ def tearDown(self): options["imap", "server"] = self.saved_server - # Shutdown as though through the web UI. - from urllib import urlopen, urlencode + from urllib.request import urlopen + from urllib.parse import urlencode urlopen('http://localhost:%d/save' % options["html_ui", "port"], urlencode({'how': _('Save & shutdown')})).read() @@ -824,7 +824,7 @@ packet = httpServer.recv(1024) if not packet: break response += packet - self.assert_(re.search(r"(?s).*SpamBayes IMAP Filter.*", + self.assertTrue(re.search(r"(?s).*SpamBayes IMAP Filter.*", response)) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/test/test_sb_filter.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/test/test_sb_filter.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/test/test_sb_filter.py --- ../python3/spambayes/test/test_sb_filter.py (original) +++ ../python3/spambayes/test/test_sb_filter.py (refactored) @@ -30,9 +30,9 @@ # of our copy (whether the tests pass or fail) so it shouldn't # be ours. if os.path.exists(TEMP_DBM_NAME): - print TEMP_DBM_NAME, "already exists. Please remove this file " \ + print(TEMP_DBM_NAME, "already exists. Please remove this file " \ "before running these tests (a file by that name will be " \ - "created and destroyed as part of the tests)." + "created and destroyed as part of the tests).") sys.exit(1) class HammieFilterTest(unittest.TestCase): @@ -56,7 +56,7 @@ self.h.open(mode) self.assertEqual(self.h.mode, mode) # Check the underlying classifier exists. - self.assert_(self.h.h is not None) + self.assertTrue(self.h.h is not None) # This can also be called when there is an # existing classifier, but we want to change # mode. Verify that we store the old database @@ -66,7 +66,7 @@ mode = 'r' self.h.open(mode) self.assertEqual(self.h.mode, mode) - self.assert_(self.done) + self.assertTrue(self.done) def test_close_readonly(self): # Must open with 'c' first, because otherwise it doesn't exist. @@ -77,7 +77,7 @@ # Verify that the classifier is not stored if we are # in readonly mode. self.h.close() - self.assert_(not self.done) + self.assertTrue(not self.done) self.assertEqual(self.h.h, None) def test_close(self): @@ -87,7 +87,7 @@ # Verify that the classifier is stored if we are # not in readonly mode. self.h.close() - self.assert_(self.done) + self.assertTrue(self.done) self.assertEqual(self.h.h, None) def test_newdb(self): @@ -118,11 +118,11 @@ self.h.h.bayes.learn(tokenize(spam1), True) self.h.h.store() result = email.message_from_string(self.h.filter(spam1)) - self.assert_(result[options["Headers", + self.assertTrue(result[options["Headers", "classification_header_name"]].\ startswith(options["Headers", "header_spam_string"])) result = email.message_from_string(self.h.filter(good1)) - self.assert_(result[options["Headers", + self.assertTrue(result[options["Headers", "classification_header_name"]].\ startswith(options["Headers", "header_ham_string"])) @@ -134,12 +134,12 @@ self.h.h.bayes.learn(tokenize(spam1), True) self.h.h.store() result = email.message_from_string(self.h.filter_train(spam1)) - self.assert_(result[options["Headers", + self.assertTrue(result[options["Headers", "classification_header_name"]].\ startswith(options["Headers", "header_spam_string"])) self.assertEqual(self.h.h.bayes.nspam, 2) result = email.message_from_string(self.h.filter_train(good1)) - self.assert_(result[options["Headers", + self.assertTrue(result[options["Headers", "classification_header_name"]].\ startswith(options["Headers", "header_ham_string"])) self.assertEqual(self.h.h.bayes.nham, 2) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/test/test_sb_dbexpimp.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/test/test_sb_dbexpimp.py --- ../python3/spambayes/test/test_sb_dbexpimp.py (original) +++ ../python3/spambayes/test/test_sb_dbexpimp.py (refactored) @@ -30,9 +30,9 @@ # be ours. for fn in [TEMP_PICKLE_NAME, TEMP_CSV_NAME, TEMP_DBM_NAME]: if os.path.exists(fn): - print fn, "already exists. Please remove this file before " \ + print(fn, "already exists. Please remove this file before " \ "running these tests (a file by that name will be " \ - "created and destroyed as part of the tests)." + "created and destroyed as part of the tests).") sys.exit(1) class dbexpimpTest(unittest.TestCase): @@ -52,7 +52,7 @@ def test_csv_module_import(self): """Check that we don't import the old object craft csv module.""" - self.assert_(hasattr(sb_dbexpimp.csv, "reader")) + self.assertTrue(hasattr(sb_dbexpimp.csv, "reader")) def test_pickle_export(self): # Create a pickled classifier to export. @@ -68,12 +68,12 @@ # the CSV module to open it, that it is valid CSV data). fp = open(TEMP_CSV_NAME, "rb") reader = sb_dbexpimp.csv.reader(fp) - (nham, nspam) = reader.next() + (nham, nspam) = next(reader) self.assertEqual(int(nham), bayes.nham) self.assertEqual(int(nspam), bayes.nspam) for (word, hamcount, spamcount) in reader: word = sb_dbexpimp.uunquote(word) - self.assert_(word in bayes._wordinfokeys()) + self.assertTrue(word in bayes._wordinfokeys()) wi = bayes._wordinfoget(word) self.assertEqual(int(hamcount), wi.hamcount) self.assertEqual(int(spamcount), wi.spamcount) @@ -95,12 +95,12 @@ # the CSV module to open it, that it is valid CSV data). fp = open(TEMP_CSV_NAME, "rb") reader = sb_dbexpimp.csv.reader(fp) - (nham, nspam) = reader.next() + (nham, nspam) = next(reader) self.assertEqual(int(nham), bayes.nham) self.assertEqual(int(nspam), bayes.nspam) for (word, hamcount, spamcount) in reader: word = sb_dbexpimp.uunquote(word) - self.assert_(word in bayes._wordinfokeys()) + self.assertTrue(word in bayes._wordinfokeys()) wi = bayes._wordinfoget(word) self.assertEqual(int(hamcount), wi.hamcount) self.assertEqual(int(spamcount), wi.spamcount) @@ -111,7 +111,7 @@ temp.write("3,4\n") csv_data = {"this":(2,1), "is":(0,1), "a":(3,4), 'test':(1,1), "of":(1,0), "the":(1,2), "import":(3,1)} - for word, (ham, spam) in csv_data.items(): + for word, (ham, spam) in list(csv_data.items()): temp.write("%s,%s,%s\n" % (word, ham, spam)) temp.close() sb_dbexpimp.runImport(TEMP_PICKLE_NAME, "pickle", True, @@ -121,9 +121,9 @@ bayes = open_storage(TEMP_PICKLE_NAME, "pickle") self.assertEqual(bayes.nham, 3) self.assertEqual(bayes.nspam, 4) - for word, (ham, spam) in csv_data.items(): - word = sb_dbexpimp.uquote(word) - self.assert_(word in bayes._wordinfokeys()) + for word, (ham, spam) in list(csv_data.items()): + word = sb_dbexpimp.uquote(word) + self.assertTrue(word in bayes._wordinfokeys()) wi = bayes._wordinfoget(word) self.assertEqual(wi.hamcount, ham) self.assertEqual(wi.spamcount, spam) @@ -134,7 +134,7 @@ temp.write("3,4\n") csv_data = {"this":(2,1), "is":(0,1), "a":(3,4), 'test':(1,1), "of":(1,0), "the":(1,2), "import":(3,1)} - for word, (ham, spam) in csv_data.items(): + for word, (ham, spam) in list(csv_data.items()): temp.write("%s,%s,%s\n" % (word, ham, spam)) temp.close() sb_dbexpimp.runImport(TEMP_DBM_NAME, "dbm", True, TEMP_CSV_NAME) @@ -143,9 +143,9 @@ bayes = open_storage(TEMP_DBM_NAME, "dbm") self.assertEqual(bayes.nham, 3) self.assertEqual(bayes.nspamRefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/test/test_sb_dbexpimp.py , 4) - for word, (ham, spam) in csv_data.items(): - word = sb_dbexpimp.uquote(word) - self.assert_(word in bayes._wordinfokeys()) + for word, (ham, spam) in list(csv_data.items()): + word = sb_dbexpimp.uquote(word) + self.assertTrue(word in bayes._wordinfokeys()) wi = bayes._wordinfoget(word) self.assertEqual(wi.hamcount, ham) self.assertEqual(wi.spamcount, spam) @@ -164,7 +164,7 @@ temp.write("%d,%d\n" % (nham, nspam)) csv_data = {"this":(2,1), "is":(0,1), "a":(3,4), 'test':(1,1), "of":(1,0), "the":(1,2), "import":(3,1)} - for word, (ham, spam) in csv_data.items(): + for word, (ham, spam) in list(csv_data.items()): temp.write("%s,%s,%s\n" % (word, ham, spam)) temp.close() sb_dbexpimp.runImport(TEMP_PICKLE_NAME, "pickle", False, @@ -176,10 +176,10 @@ self.assertEqual(bayes2.nham, nham + bayes.nham) self.assertEqual(bayes2.nspam, nspam + bayes.nspam) words = bayes._wordinfokeys() - words.extend(csv_data.keys()) + words.extend(list(csv_data.keys())) for word in words: word = sb_dbexpimp.uquote(word) - self.assert_(word in bayes2._wordinfokeys()) + self.assertTrue(word in bayes2._wordinfokeys()) h, s = csv_data.get(word, (0,0)) wi = bayes._wordinfoget(word) if wi: @@ -210,7 +210,7 @@ temp.write("%d,%d\n" % (nham, nspam)) csv_data = {"this":(2,1), "is":(0,1), "a":(3,4), 'test':(1,1), "of":(1,0), "the":(1,2), "import":(3,1)} - for word, (ham, spam) in csv_data.items(): + for word, (ham, spam) in list(csv_data.items()): temp.write("%s,%s,%s\n" % (word, ham, spam)) temp.close() sb_dbexpimp.runImport(TEMP_DBM_NAME, "dbm", False, TEMP_CSV_NAME) @@ -220,11 +220,11 @@ bayes2 = open_storage(TEMP_DBM_NAME, "dbm") self.assertEqual(bayes2.nham, nham + original_nham) self.assertEqual(bayes2.nspam, nspam + original_nspam) - words = original_data.keys()[:] - words.extend(csv_data.keys()) + words = list(original_data.keys())[:] + words.extend(list(csv_data.keys())) for word in words: word = sb_dbexpimp.uquote(word) - self.assert_(word in bayes2._wordinfokeys()) + self.assertTrue(word in bayes2._wordinfokeys()) h, s = csv_data.get(word, (0,0)) wi = original_data.get(word, None) if wi: + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/test/test_programs.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/test/test_programs.py --- ../python3/spambayes/test/test_programs.py (original) +++ ../python3/spambayes/test/test_programs.py (refactored) @@ -3,7 +3,8 @@ import errno import unittest import time -from urllib import urlopen, urlencode +from urllib.request import urlopen +from urllib.parse import urlencode import sb_test_support sb_test_support.fix_sys_path() @@ -19,9 +20,9 @@ got = urlopen(url, urlencode(kw)).read() # Very simple - just look for tracebacks if got.find("Traceback (most recent call last)")>=0: - print "FAILED calling URL", url - print got - raise AssertionError, "Opening URL %s appeared to fail" % (url,) + print("FAILED calling URL", url) + print(got) + raise AssertionError("Opening URL %s appeared to fail" % (url,)) class Spawner: def __init__(self, test_case, spawn_args): @@ -55,7 +56,7 @@ try: os.waitpid(self.pid, os.WNOHANG) result = True - except os.error, details: + except os.error as details: if details.errno == errno.ECHILD: result = False # other exceptions invalid? @@ -68,10 +69,10 @@ # Check the platform agrees (could do xor, but even I wont be able # to read it in a few weeks if result: - self.test_case.failUnless(is_any_sb_server_running(), + self.test_case.assertTrue(is_any_sb_server_running(), "My server stopped, but global server mutex held") else: - self.test_case.failUnless(not is_any_sb_server_running(), + self.test_case.assertTrue(not is_any_sb_server_running(), "My server running, but no global server mutex held") return result @@ -83,17 +84,17 @@ f = f[:-1] Spawner.__init__(self, test_case, [f]+args) def start(self): - self.test_case.failUnless(not is_any_sb_server_running(), + self.test_case.assertTrue(not is_any_sb_server_running(), "Should be no server running") if verbose > 1: - print "Spawning", self.spawn_args + print("Spawning", self.spawn_args) self.pid = self._spawn(self.spawn_args) # wait for it to start - 5 secs, 0.25 per check for i in range(20): time.sleep(0.25) if verbose > 1: - print "Waiting for start flags: running=%s, global_mutex=%s" \ - % (self.is_running(), is_any_sb_server_running()) + print("Waiting for start flags: running=%s, global_mutex=%s" \ + % (self.is_running(), is_any_sb_server_running())) if self.is_running() and is_any_sb_server_running(): return # gave up waiting. @@ -128,29 +129,29 @@ class TestServer(unittest.TestCase): def setUp(self): - self.failUnless(not is_any_sb_server_running(), + self.assertTrue(not is_any_sb_server_running(), "Can't do sb_server tests while a server is running "\ "(platform mutex held)") def tearDown(self): # If we cause failure here, we mask the underlying error which left # the server running - so just print the warning. if is_any_sb_server_running(): - print "WARNING:", self, "completed with the platform mutex held" + print("WARNING:", self, "completed with the platform mutex held") def _start_spawner(self, spawner): - self.failUnless(not spawner.is_running(), + self.assertTrue(not spawner.is_running(), "this spawneer can't be running") spawner.start() - self.failUnless(spawner.is_running(), + self.assertTrue(spawner.is_running(), "this spawner must be running after successful start") - self.failUnless(is_any_sb_server_running(), + self.assertTrue(is_any_sb_server_running(), "Platform mutex not heldRefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/test/test_programs.py after starting") def _stop_spawner(self, spawner): - self.failUnless(spawner.is_running(), "must be running to stop") - self.failUnless(is_any_sb_server_running(), + self.assertTrue(spawner.is_running(), "must be running to stop") + self.assertTrue(is_any_sb_server_running(), "Platform mutex must be held to stop") spawner.stop() - self.failUnless(not spawner.is_running(), "didn't stop after stop") - self.failUnless(not is_any_sb_server_running(), + self.assertTrue(not spawner.is_running(), "didn't stop after stop") + self.assertTrue(not is_any_sb_server_running(), "Platform mutex still held after stop") def test_sb_server_default(self): # Should be using the default port from the options file. @@ -186,18 +187,18 @@ def setUp(self): try: win32serviceutil.QueryServiceStatus(service_name) - except win32service.error, details: + except win32service.error as details: if details[0]==winerror.ERROR_SERVICE_DOES_NOT_EXIST: self.was_installed = False raise else: self.was_installed = True - self.failUnless(not is_any_sb_server_running(), + self.assertTrue(not is_any_sb_server_running(), "Can't do service tests while a server is running "\ "(platform mutex held)") def tearDown(self): if is_any_sb_server_running(): - print "WARNING:", self, "completed with the platform mutex held" + print("WARNING:", self, "completed with the platform mutex held") def _start_service(self): win32serviceutil.StartService(service_name) for i in range(10): @@ -206,7 +207,7 @@ if status[1] == win32service.SERVICE_RUNNING: break if verbose > 1: - print "Service status is %d - still waiting" % status[1] + print("Service status is %d - still waiting" % status[1]) else: self.fail("Gave up waiting for service to start") def _stop_service(self): @@ -233,7 +234,7 @@ break else: self.fail("Gave up waiting for service to stop") - self.failUnless(not is_any_sb_server_running(), + self.assertTrue(not is_any_sb_server_running(), "Should be no platform mutex held after stopping") if __name__=='__main__': + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/test/test_message.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/test/test_message.py --- ../python3/spambayes/test/test_message.py (original) +++ ../python3/spambayes/test/test_message.py (refactored) @@ -32,9 +32,9 @@ # be ours. for fn in [TEMP_PICKLE_NAME, TEMP_DBM_NAME]: if os.path.exists(fn): - print fn, "already exists. Please remove this file before " \ + print(fn, "already exists. Please remove this file before " \ "running these tests (a file by that name will be " \ - "created and destroyed as part of the tests)." + "created and destroyed as part of the tests).") sys.exit(1) class MessageTest(unittest.TestCase): @@ -90,18 +90,18 @@ self.assertEqual(tuple(tokenize(spam1)), tuple(toks)) def test_force_CRLF(self): - self.assert_('\r' not in good1) + self.assertTrue('\r' not in good1) lines = self.msg._force_CRLF(good1).split('\n') for line in lines: if line: - self.assert_(line.endswith('\r')) + self.assertTrue(line.endswith('\r')) def test_as_string_endings(self): - self.assert_('\r' not in spam1) + self.assertTrue('\r' not in spam1) lines = self.msg.as_string().split('\n') for line in lines: if line: - self.assert_(line.endswith('\r')) + self.assertTrue(line.endswith('\r')) def _fake_setState(self, state): self.done = True @@ -237,9 +237,9 @@ options["Headers", "header_score_digits"] = 21 options["Headers", "header_score_logarithm"] = True self.msg.addSBHeaders(self.s_prob, self.clues) - self.assert_(self.msg[options['Headers', 'score_header_name']].\ + self.assertTrue(self.msg[options['Headers', 'score_header_name']].\ startswith("%.21f" % (self.s_prob,))) - self.assert_(self.msg[options['Headers', 'score_header_name']].\ + self.assertTrue(self.msg[options['Headers', 'score_header_name']].\ endswith(" (%d)" % (-math.log10(1.0-self.s_prob),))) def test_thermostat_header_off(self): @@ -278,7 +278,7 @@ header_clues = dict([(":".join(clue[:-1])[1:-1], float(clue[-1])) \ for clue in header_clues]) for word, score in self.clues: - self.assert_(word in header_clues) + self.assertTrue(word in header_clues) self.assertEqual(round(score, 2), header_clues[word]) def test_evidence_header_partial(self): @@ -292,10 +292,10 @@ for clue in header_clues]) for word, score in self.clues: if score <= 0.1 or score >= 0.9: - self.assert_(word in header_clues) + self.assertTrue(word in header_clues) self.assertEqual(round(score, 2), header_clues[word]) else: - self.assert_(word not in header_clues) + self.assertTrue(word not in header_clues) def test_evidence_header_empty(self): options['Headers', 'include_evidence'] = True @@ -308,10 +308,10 @@ for clue in header_clues]) for word, score in self.clues: if word == "*H*" or word == "*S*": - self.assert_(word in header_clues) + self.assertTrue(word in header_clues) self.assertEqual(round(score, 2), header_clues[word]) else: - self.assert_(word not in header_clues) + self.assertTrue(word not in header_clues) def test_evidence_header_off(self): options['Headers', 'include_evidence'] = False @@ -432,7 +432,7 @@ options['Headers', 'score_header_name'] : '6', options['Headers', 'trained_header_name'] : '7', } - for name, val in headers.items(): + for name, val in list(headers.items()): self.msg[name] = val sbheaders = self.msg.currentSBHeaders() self.assertEqual(headers, sbheaders) @@ -449,10 +449,10 @@ RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/test/test_message.py for header in headers: self.msg[header] = "test" for header in headers: - self.assert_(header in self.msg.keys()) + self.assertTrue(header in list(self.msg.keys())) self.msg.delSBHeaders() for header in headers: - self.assert_(header not in self.msg.keys()) + self.assertTrue(header not in list(self.msg.keys())) def test_delNotations(self): # Add each type of notation to each header and check that it @@ -603,22 +603,22 @@ data = {"1" : ('a', 'b', 'c'), "2" : ('d', 'e', 'f'), "3" : "test"} - for k, v in data.items(): + for k, v in list(data.items()): self.db.db[k] = v self.db.store() fn = self.db.db_name self.db.close() db2 = self.klass(fn, self.mode) try: - self.assertEqual(len(db2.db.keys()), len(data.keys())) - for k, v in data.items(): + self.assertEqual(len(list(db2.db.keys())), len(list(data.keys()))) + for k, v in list(data.items()): self.assertEqual(db2.db[k], v) finally: db2.close() def test_load_new(self): # Load from a non-existing db (i.e. create new). - self.assertEqual(self.db.db.keys(), []) + self.assertEqual(list(self.db.db.keys()), []) class MessageInfoPickleTest(MessageInfoBaseTest): @@ -737,7 +737,7 @@ try: dbmstorage.open_best() except dbmstorage.error: - print "Skipping MessageInfoDBTest - no dbm module available" + print("Skipping MessageInfoDBTest - no dbm module available") from spambayes import message def always_pickle(): return "__test.pik", "pickle" + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/test/test_basic_import.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: No files need to be modified. + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/test/test_FileCorpus.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/test/test_FileCorpus.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/test/test_FileCorpus.py --- ../python3/spambayes/test/test_FileCorpus.py (original) +++ ../python3/spambayes/test/test_FileCorpus.py (refactored) @@ -58,7 +58,7 @@ def _setUpDirectory(self, dirname): try: os.mkdir(dirname) - except OSError, e: + except OSError as e: if e[0] != errno.EEXIST: raise @@ -71,7 +71,7 @@ def _tearDownDirectory(self, dirname): try: flist = os.listdir(dirname) - except OSError, e: + except OSError as e: if e.errno != 3: raise else: @@ -80,7 +80,7 @@ os.unlink(fn) try: os.rmdir(dirname) - except OSError, e: + except OSError as e: if e.errno != 2: raise @@ -91,12 +91,12 @@ try: os.unlink('fctestmisc.bayes') - except OSError, e: + except OSError as e: if e.errno != 2: raise try: os.unlink('fctestclass.bayes') - except OSError, e: + except OSError as e: if e.errno != 2: raise + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/test/test_Corpus.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/test/test_Corpus.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/test/test_Corpus.py --- ../python3/spambayes/test/test_Corpus.py (original) +++ ../python3/spambayes/test/test_Corpus.py (refactored) @@ -70,27 +70,27 @@ msg = simple_msg(0) self.corpus.cacheMessage(msg) self.assertEqual(self.corpus.msgs[0], msg) - self.assert_(0 in self.corpus.keysInMemory) + self.assertTrue(0 in self.corpus.keysInMemory) def test_flush_cache(self): self.corpus.cacheSize = 1 msg = simple_msg(0) self.corpus.cacheMessage(msg) self.assertEqual(self.corpus.msgs[0], msg) - self.assert_(0 in self.corpus.keysInMemory) + self.assertTrue(0 in self.corpus.keysInMemory) msg = simple_msg(1) self.corpus.cacheMessage(msg) self.assertEqual(self.corpus.msgs[1], msg) - self.assert_(1 in self.corpus.keysInMemory) - self.assert_(0 not in self.corpus.keysInMemory) + self.assertTrue(1 in self.corpus.keysInMemory) + self.assertTrue(0 not in self.corpus.keysInMemory) def test_unCacheMessage(self): msg = simple_msg(0) self.corpus.cacheMessage(msg) self.assertEqual(self.corpus.msgs[0], msg) - self.assert_(0 in self.corpus.keysInMemory) + self.assertTrue(0 in self.corpus.keysInMemory) self.corpus.unCacheMessage(msg) - self.assert_(0 in self.corpus.keysInMemory) + self.assertTrue(0 in self.corpus.keysInMemory) def test_takeMessage(self): other_corpus = Corpus(self.factory, self.cacheSize) @@ -133,11 +133,11 @@ self.assertRaises(KeyError, self.corpus.__getitem__, 4) def test_keys(self): - self.assertEqual(self.corpus.keys(), []) - ids = [0, 1, 2] - for id in ids: - self.corpus.addMessage(simple_msg(id)) - self.assertEqual(self.corpus.keys(), ids) + self.assertEqual(list(self.corpus.keys()), []) + ids = [0, 1, 2] + for id in ids: + self.corpus.addMessage(simple_msg(id)) + self.assertEqual(list(self.corpus.keys()), ids) def test___iter__(self): self.assertEqual(tuple(self.corpus), ()) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/test/sb_test_support.py 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 ../python3/spambayes/test/sb_test_support.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/test/sb_test_support.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/storage.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/storage.py --- ../python3/spambayes/storage.py (original) +++ ../python3/spambayes/storage.py (refactored) @@ -98,7 +98,7 @@ # tempbayes object is reclaimed when load() returns. if options["globals", "verbose"]: - print >> sys.stderr, 'Loading state from', self.db_name, 'pickle' + print('Loading state from', self.db_name, 'pickle', file=sys.stderr) try: tempbayes = pickle_read(self.db_name) @@ -112,13 +112,13 @@ classifier.Classifier.__setstate__(self, tempbayes.__getstate__()) if options["globals", "verbose"]: - print >> sys.stderr, ('%s is an existing pickle,' + print(('%s is an existing pickle,' ' with %d ham and %d spam') \ - % (self.db_name, self.nham, self.nspam) + % (self.db_name, self.nham, self.nspam), file=sys.stderr) else: # new pickle if options["globals", "verbose"]: - print >> sys.stderr, self.db_name,'is a new pickle' + print(self.db_name,'is a new pickle', file=sys.stderr) self.wordinfo = {} self.nham = 0 self.nspam = 0 @@ -127,7 +127,7 @@ '''Store self as a pickle''' if options["globals", "verbose"]: - print >> sys.stderr, 'Persisting', self.db_name, 'as a pickle' + print('Persisting', self.db_name, 'as a pickle', file=sys.stderr) pickle_write(self.db_name, self, PICKLE_TYPE) @@ -169,31 +169,31 @@ if hasattr(self, "dbm"): del self.dbm if options["globals", "verbose"]: - print >> sys.stderr, 'Closed', self.db_name, 'database' + print('Closed', self.db_name, 'database', file=sys.stderr) def load(self): '''Load state from database''' if options["globals", "verbose"]: - print >> sys.stderr, 'Loading state from', self.db_name, 'database' + print('Loading state from', self.db_name, 'database', file=sys.stderr) self.dbm = dbmstorage.open(self.db_name, self.mode) self.db = shelve.Shelf(self.dbm) - if self.db.has_key(self.statekey): + if self.statekey in self.db: t = self.db[self.statekey] if t[0] != classifier.PICKLE_VERSION: raise ValueError("Can't unpickle -- version %s unknown" % t[0]) (self.nspam, self.nham) = t[1:] if options["globals", "verbose"]: - print >> sys.stderr, ('%s is an existing database,' + print(('%s is an existing database,' ' with %d spam and %d ham') \ - % (self.db_name, self.nspam, self.nham) + % (self.db_name, self.nspam, self.nham), file=sys.stderr) else: # new database if options["globals", "verbose"]: - print >> sys.stderr, self.db_name,'is a new database' + print(self.db_name,'is a new database', file=sys.stderr) self.nspam = 0 self.nham = 0 self.wordinfo = {} @@ -203,15 +203,15 @@ '''Place state into persistent store''' if options["globals", "verbose"]: - print >> sys.stderr, 'Persisting', self.db_name, - print >> sys.stderr, 'state in database' + print('Persisting', self.db_name, end=' ', file=sys.stderr) + print('state in database', file=sys.stderr) # Iterate over our changed word list. # This is *not* thread-safe - another thread changing our # changed_words could mess us up a little. Possibly a little # lock while we copy and reset self.changed_words would be appropriate. # For now, just do it the naive way. - for key, flag in self.changed_words.iteritems(): + for key, flag in self.changed_words.items(): if flag is WORD_CHANGED: val = self.wordinfo[key] self.db[key] = val.__getstate__() @@ -224,7 +224,7 @@ except KeyError: pass else: - raise RuntimeError, "Unknown flag value" + raise RuntimeError("Unknown flag value") # Reset the changed word list. self.changed_words = {} @@ -243,7 +243,7 @@ self._write_state_key() def _wordinfoget(self, word): - if isinstance(word, unicode): + if isinstance(word, str): word = word.encode("utf-8") try: return self.wordinfo[word] @@ -267,7 +267,7 @@ # This seems to reduce the memory footprint of the DBDictClassifier by # as much as 60%!!! This also has the effect of reducing the time it # takes to store the database - if isinstance(word, unicode): + if isinstance(word, str): word = word.encode("utf-8") if record.spamcount + record.hamcount <= 1: self.db[word] = record.__getstate__() @@ -288,13 +288,13 @@ self.changed_words[word] = WORD_CHANGED def _wordinfodel(self, word): - if isinstance(word, unicode): + if isinstance(word, str): word = word.encode("utf-8") del self.wordinfo[word] self.changed_words[word] = WORD_DELETED def _wordinfokeys(self): - wordinfokeys = self.db.keys() + wordinfokeys = list(self.db.keys()) del wordinfokeys[wordinfokeys.index(self.statekey)] return wordinfokeys @@ -316,7 +316,7 @@ def load(self): '''Load state from the database''' - raise NotImplementedError, "must be implemented in subclass" + raise NotImplementedError("must be implemented in subclass") def store(self): '''Save state to the database''' @@ -324,15 +324,15 @@ def cursor(self): '''Return a new db cursor''' - raise NotImplementedError, "must be implemented in subclass" + raise NotImplementedError("must be implemented in subclass") def fetchall(self, c): '''Return all rows as a dict''' - raise NotImplementedError, "must be implemented in subclass" + raise NotImplementedError("must be implemented in subclass") def commit(self, c): '''Commit the current transaction - may commit at db or cursor''' - raise NotImplementedError, "must be implemented in subclass" + raise NotImplementedError("must be implemented in subclass") def create_bayes(self): '''Create a new bayes table''' @@ -347,8 +347,8 @@ c.execute("select * from bayes" " where word=%s", (word,)) - except Exception, e: - print >> sys.stderr, "error:", (e, word) + except Exception as e: + print("error:", (e, word), file=sys.stderr) raise rows = self.fetchall(c) @@ -386,7 +386,7 @@ return len(self.fetchall(c)) > 0 def _wordinfoget(self, word): - if isinstance(word, unicode): + if isinstance(word, str): word = word.encode("utf-8") row = self._get_row(word) @@ -398,12 +398,12 @@ return self.WordInfoClass() def _wordinfoset(self, word, record): - if isinstance(word, unicode): + if isinstance(word, str): word = word.encode("utf-8") self._set_row(word, record.spamcount, record.hamcount) def _wordinfodel(self, word): - if isinstance(word, unicode): + if isinstance(word, str): word = word.encode("utf-8") self._delete_row(word) @@ -440,7 +440,7 @@ import psycopg if options["globals", "verbose"]: - print >> sys.stderr, 'Loading state from', self.db_name, 'database' + print('Loading state from', self.db_name, 'database', file=sys.stderr) self.db = psycopg.connect('dbname=' + self.db_name) @@ -456,13 +456,13 @@ self.nspam = row["nspam"] self.nham = row["nham"] if options["globals", "verbose"]: - print >> sys.stderr, ('%s is an existing database,' + print(('%s is an existing database,' ' with %d spam and %d ham') \ - % (self.db_name, self.nspam, self.nham) + % (self.db_name, self.nspam, self.nham), file=sys.stderr) else: # new database if options["globals", "verbose"]: - print >> sys.stderr, self.db_name,'is a new database' + print(self.db_name,'is a new database', file=sys.stderr) self.nspam = 0 self.nham = 0 @@ -514,7 +514,7 @@ import MySQLdb if options["globals", "verbose"]: - print >> sys.stderr, 'Loading state from', self.db_name, 'database' + print('Loading state from', self.db_name, 'database', file=sys.stderr) params = { 'host': self.host, 'db': self.db_name, @@ -541,18 +541,18 @@ self.nspam = int(row[1]) self.nham = int(row[2]) if options["globals", "verbose"]: - print >> sys.stderr, ('%s is an existing database,' + print(('%s is an existing database,' ' with %d spam and %d ham') \ - % (self.db_name, self.nspam, self.nham) + % (self.db_name, self.nspam, self.nham), file=sys.stderr) else: # new database if options["globals", "verbose"]: - print >> sys.stderr, self.db_name,'is a new database' + print(self.db_name,'is a new database', file=sys.stderr) self.nspam = 0 self.nham = 0 def _wordinfoget(self, word): - if isinstance(word, unicode): + if isinstance(word, str): word = word.encode("utf-8") row = self._get_row(word) @@ -595,7 +595,7 @@ def uunquote(self, s): for encoding in ("utf-8", "cp1252", "iso-8859-1"): try: - return unicode(s, encoding) + return str(s, encoding) except UnicodeDecodeError: pass # punt @@ -610,24 +610,24 @@ data[self.statekey].split(',')] self.wordinfo = dict([(self.uunquote(k), self._WordInfoFactory(v)) \ - for k, v in data.iteritems() \ + for k, v in data.items() \ if k != self.statekey]) if options["globals", "verbose"]: - print >> sys.stderr, ('%s is an existing CDB,' + print(('%s is an existing CDB,' ' with %d ham and %d spam') \ % (self.db_name, self.nham, - self.nspam) - else: - if options["globals", "verbose"]: - print >> sys.stderr, self.db_name, 'is a new CDB' + self.nspam), file=sys.stderr) + else: + if options["globals", "verbose"]: + print(self.db_name, 'is a new CDB', file=sys.stderr) self.wordinfo = {} self.nham = 0 self.nspam = 0 def store(self): items = [(self.statekey, "%d,%d" % (self.nham, self.nspam))] - for word, wi in self.wordinfo.iteritems(): - if isinstance(word, types.UnicodeType): + for word, wi in self.wordinfo.items(): + if isinstance(word, str): word = word.encode("utf-8") items.append((word, "%d,%d" % (wi.hamcount, wi.spamcount))) db = open(self.db_name, "wb") @@ -689,8 +689,8 @@ self.storage = FileStorage(self.db_filename, read_only=self.mode=='r') except IOError: - print >> sys.stderr, ("Could not create FileStorage from", - self.db_filename) + print(("Could not create FileStorage from", + self.db_filename), file=sys.stderr) raise def load(self): @@ -698,8 +698,8 @@ import ZODB if options["globals", "verbose"]: - print >> sys.stderr, "Loading state from %s (%s) database" % \ - (self.db_filename, self.db_name) + print("Loading state from %s (%s) database" % \ + (self.db_filename, self.db_name), file=sys.stderr) # If we are not closed, then we need to close first before we # reload. @@ -715,13 +715,13 @@ if self.classifier is None: # There is no classifier, so create one. if options["globals", "verbose"]: - print >> sys.stderr, self.db_name, 'is a new ZODB' + print(self.db_name, 'is a new ZODB', file=sys.stderr) self.classifier = root[self.db_name] = self.ClassifierClass() else: if options["globals", "verbose"]: - print >> sys.stderr, '%s is an existing ZODB, with %d ' \ + print('%s is an existing ZODB, with %d ' \ 'ham and %d spam' % (self.db_name, self.nham, - self.nspam) + self.nspam), file=sys.stderr) self.closed = False def store(self): @@ -745,7 +745,7 @@ assert not self.closed, "Can't store a closed database" if options["globals", "verbose"]: - print >> sys.stderr, 'Persisting', self.db_name, 'state in database' + print('Persisting', self.db_name, 'state in database', file=sys.stderr) try: commit() @@ -754,16 +754,16 @@ # hard-crash, but that's unlikely, and not a particularly big # deal. if options["globals", "verbose"]: - print >> sys.stderr, "Conflict on commit", self.db_name + print("Conflict on commit", self.db_name, file=sys.stderr) abort() except TransactionFailedError: # Saving isn't working. Try to abort, but chances are that # restarting is needed. - print >> sys.stderr, "Storing failed. Need to restart.", \ - self.db_name + print("Storing failed. Need to restart.", \ + self.db_name, file=sys.stderr) abort() except ReadOnlyError: - print >> sys.stderr, "Can't store transaction to read-only db." + print("Can't store transaction to read-only db.", file=sys.stderr) abort() def close(self, pack=True, retain_backup=True): @@ -791,7 +791,7 @@ self.closed = True if options["globals", "verbose"]: - print >> sys.stderr, 'Closed', self.db_name, 'database' + print('Closed', self.db_name, 'database', file=sys.stderr) def pack(self, t, retain_backup=True): """Like FileStorage pack(), but optionally remove the .old @@ -823,9 +823,9 @@ try: # ZEO only accepts strings, not unicode. self.host = str(info[5:]) - except UnicodeDecodeError, e: - print >> sys.stderr, "Couldn't set host", \ - info[5:], str(e) + except UnicodeDecodeError as e: + print("Couldn't set host", \ + info[5:], str(e), file=sys.stderr) elif info.startswith("port"): self.port = int(info[5:]) elif info.startswith("dbname"): @@ -849,8 +849,8 @@ else: addr = self.host if options["globals", "verbose"]: - print >> sys.stderr, "Connecting to ZEO server", addr, \ - self.username, self.password + print("Connecting to ZEO server", addr, \ + RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/storage.py self.username, self.password, file=sys.stderr) # Use persistent caches, with the cache in the temp directory. # If the temp directory is cleared out, we lose the cache, but # that doesn't really matter, and we should always be able to @@ -910,7 +910,7 @@ '''Train the database with the message''' if options["globals", "verbose"]: - print >> sys.stderr, 'training with ', message.key() + print('training with ', message.key(), file=sys.stderr) self.bayes.learn(message.tokenize(), self.is_spam) message.setId(message.key()) @@ -929,7 +929,7 @@ '''Untrain the database with the message''' if options["globals", "verbose"]: - print >> sys.stderr, 'untraining with', message.key() + print('untraining with', message.key(), file=sys.stderr) self.bayes.unlearn(message.tokenize(), self.is_spam) # self.updateprobs) @@ -998,14 +998,14 @@ return klass(data_source_name, mode) else: return klass(data_source_name) - except dbmstorage.error, e: + except dbmstorage.error as e: if str(e) == "No dbm modules available!": # We expect this to hit a fair few people, so warn them nicely, # rather than just printing the trackback. - print >> sys.stderr, "\nYou do not have a dbm module available " \ + print("\nYou do not have a dbm module available " \ "to use. You need to either use a pickle (see the FAQ)" \ ", use Python 2.3 (or above), or install a dbm module " \ - "such as bsddb (see http://sf.net/projects/pybsddb)." + "such as bsddb (see http://sf.net/projects/pybsddb).", file=sys.stderr) sys.exit() raise @@ -1037,7 +1037,7 @@ """ nm, typ = None, None for opt, arg in opts: - if _storage_options.has_key(opt): + if opt in _storage_options: if nm is None and typ is None: nm, typ = arg, _storage_options[opt] else: @@ -1081,18 +1081,18 @@ except AttributeError: new_bayes.nspam = 0 - print >> sys.stderr, "Converting %s (%s database) to " \ - "%s (%s database)." % (old_name, old_type, new_name, new_type) - print >> sys.stderr, "Database has %s ham, %s spam, and %s words." % \ - (new_bayes.nham, new_bayes.nspam, len(words)) + print("Converting %s (%s database) to " \ + "%s (%s database)." % (old_name, old_type, new_name, new_type), file=sys.stderr) + print("Database has %s ham, %s spam, and %s words." % \ + (new_bayes.nham, new_bayes.nspam, len(words)), file=sys.stderr) for word in words: new_bayes._wordinfoset(word, old_bayes._wordinfoget(word)) old_bayes.close() - print >> sys.stderr, "Storing database, please be patient..." + print("Storing database, please be patient...", file=sys.stderr) new_bayes.store() - print >> sys.stderr, "Conversion complete." + print("Conversion complete.", file=sys.stderr) new_bayes.close() def ensureDir(dirname): @@ -1101,10 +1101,10 @@ try: os.mkdir(dirname) if options["globals", "verbose"]: - print >> sys.stderr, "Creating directory", dirname - except OSError, e: + print("Creating directory", dirname, file=sys.stderr) + except OSError as e: if e.errno != errno.EEXIST: raise if __name__ == '__main__': - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/smtpproxy.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/smtpproxy.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/smtpproxy.py --- ../python3/spambayes/smtpproxy.py (original) +++ ../python3/spambayes/smtpproxy.py (refactored) @@ -257,8 +257,8 @@ proxyArgs = (serverName, serverPort, trainer) Dibbler.Listener.__init__(self, proxyPort, BayesSMTPProxy, proxyArgs) - print 'SMTP Listener on port %s is proxying %s:%d' % \ - (_addressPortStr(proxyPort), serverName, serverPort) + print('SMTP Listener on port %s is proxying %s:%d' % \ + (_addressPortStr(proxyPort), serverName, serverPort)) class BayesSMTPProxy(SMTPProxyBase): @@ -419,7 +419,7 @@ if use_cached: id = self.extractSpambayesID(msg) if id is None: - print "Could not extract id" + print("Could not extract id") return self.train_cached_message(id, isSpam) # Otherwise, train on the forwarded/bounced message. @@ -445,9 +445,9 @@ def train_cached_message(self, id, isSpam): if not self.train_message_in_pop3proxy_cache(id, isSpam) and \ not self.train_message_on_imap_server(id, isSpam): - print "Could not find message (%s); perhaps it was " \ + print("Could not find message (%s); perhaps it was " \ "deleted from the POP3Proxy cache or the IMAP " \ - "server. This means that no training was done." % (id, ) + "server. This means that no training was done." % (id, )) def train_message_in_pop3proxy_cache(self, id, isSpam): if self.state is None: @@ -501,10 +501,10 @@ servers.append((server, int(port))) if options["smtpproxy", "listen_ports"]: splitPorts = options["smtpproxy", "listen_ports"] - proxyPorts = map(_addressAndPort, splitPorts) + proxyPorts = list(map(_addressAndPort, splitPorts)) if len(servers) != len(proxyPorts): - print "smtpproxy:remote_servers & smtpproxy:listen_ports are " + \ - "different lengths!" + print("smtpproxy:remote_servers & smtpproxy:listen_ports are " + \ + "different lengths!") sys.exit() return servers, proxyPorts + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/safepickle.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/safepickle.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/safepickle.py --- ../python3/spambayes/safepickle.py (original) +++ ../python3/spambayes/safepickle.py (refactored) @@ -2,7 +2,7 @@ import sys import os -import cPickle as pickle +import pickle as pickle import lockfile @@ -31,9 +31,9 @@ fp = open(tmp, 'wb') pickle.dump(value, fp, protocol) fp.close() - except IOError, e: + except IOError as e: if options["globals", "verbose"]: - print >> sys.stderr, 'Failed update: ' + str(e) + print('Failed update: ' + str(e), file=sys.stderr) if fp is not None: os.remove(tmp) raise + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/resources/ui_psp.py 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 ../python3/spambayes/resources/ui_psp.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/resources/ui_psp.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/resources/ui_html.py 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 ../python3/spambayes/resources/ui_html.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/resources/ui_html.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/resources/train_gif.py 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 ../python3/spambayes/resources/train_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/resources/train_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/resources/status_gif.py 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 ../python3/spambayes/resources/status_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/resources/status_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/resources/scanning__init__.py 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 ../python3/spambayes/resources/scanning__init__.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/resources/scanning__init__.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/resources/query_gif.py 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 ../python3/spambayes/resources/query_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/resources/query_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/resources/message_gif.py 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 ../python3/spambayes/resources/message_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/resources/message_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/resources/junk.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Can't open ../python3/spambayes/resources/junk.py: [Errno 2] No such file or directory: '../python3/spambayes/resources/junk.py' RefactoringTool: No files need to be modified. RefactoringTool: There was 1 error: RefactoringTool: Can't open ../python3/spambayes/resources/junk.py: [Errno 2] No such file or directory: '../python3/spambayes/resources/junk.py' + : + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/resources/help_gif.py 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 ../python3/spambayes/resources/help_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/resources/help_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/resources/helmet_gif.py 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 ../python3/spambayes/resources/helmet_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/resources/helmet_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/resources/config_gif.py 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 ../python3/spambayes/resources/config_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/resources/config_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/resources/classify_gif.py 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 ../python3/spambayes/resources/classify_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/resources/classify_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/resources/_cvsignore.py 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 ../python3/spambayes/resources/_cvsignore.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/resources/_cvsignore.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/resources/__init__.py 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 ../python3/spambayes/resources/__init__.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/resources/__init__.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/resources/README_txt.py 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 ../python3/spambayes/resources/README_txt.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/resources/README_txt.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/postfixproxy.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/postfixproxy.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/postfixproxy.py --- ../python3/spambayes/postfixproxy.py (original) +++ ../python3/spambayes/postfixproxy.py (refactored) @@ -80,14 +80,14 @@ try: if prob >= self.spam_cutoff: self.log_message(data) - print >> smtpd.DEBUGSTREAM, 'probable spam: %.2f' % prob + print('probable spam: %.2f' % prob, file=smtpd.DEBUGSTREAM) return '503 Error: probable spam' refused = self._deliver(mailfrom, rcpttos, data) t4 = time.time() # TBD: what to do with refused addresses? - print >> smtpd.DEBUGSTREAM, 'we got some refusals:', refused - print >> smtpd.DEBUGSTREAM, 'deliver time:', t4-t3 + print('we got some refusals:', refused, file=smtpd.DEBUGSTREAM) + print('deliver time:', t4-t3, file=smtpd.DEBUGSTREAM) finally: - print >> smtpd.DEBUGSTREAM, 'parse time:', t2-t1 - print >> smtpd.DEBUGSTREAM, 'score time:', t3-t2 + print('parse time:', t2-t1, file=smtpd.DEBUGSTREAM) + print('score time:', t3-t2, file=smtpd.DEBUGSTREAM) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/port.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/port.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/port.py --- ../python3/spambayes/port.py (original) +++ ../python3/spambayes/port.py (refactored) @@ -16,7 +16,7 @@ bsddb = None try: - import gdbm + import dbm.gnu except ImportError: gdbm = None + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/optimize.py 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 ../python3/spambayes/optimize.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/optimize.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/oe_mailbox.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/oe_mailbox.py --- ../python3/spambayes/oe_mailbox.py (original) +++ ../python3/spambayes/oe_mailbox.py (refactored) @@ -15,7 +15,7 @@ Trains a DBX file as spam or ham through Hammie """ -from __future__ import generators + # This module is part of the spambayes project, which is Copyright 2002-2007 # The Python Software Foundation and is covered by the Python Software @@ -34,9 +34,9 @@ import random from time import * try: - import cStringIO as StringIO + import io as StringIO except ImportError: - import StringIO + import io from spambayes import msgs @@ -66,10 +66,10 @@ HEADER_SIZE = 0x24bc # total header size HEADER_ENTRIES = HEADER_SIZE >> 2 # total of entries in the header - MAGIC_NUMBER = 0xfe12adcfL # specific to DBX files - OFFLINE = 0x26fe9d30L # specific to offline.dbx - FOLDERS = 0x6f74fdc6L # specific to folders.dbx - POP3UIDL = 0x6f74fdc7L # specific to pop3uidl.dbx + MAGIC_NUMBER = 0xfe12adcf # specific to DBX files + OFFLINE = 0x26fe9d30 # specific to offline.dbx + FOLDERS = 0x6f74fdc6 # specific to folders.dbx + POP3UIDL = 0x6f74fdc7 # specific to pop3uidl.dbx # various entries indexes FH_FILE_INFO_LENGTH = 0x07 # file info length @@ -256,13 +256,13 @@ def __init__(self, dbxStream, dbxAddress): """Reads the indexed infos from the passed stream.""" - self.dbxBodyLength = 0L - self.dbxObjectLength = 0L - self.dbxEntries = 0L - self.dbxCounter = 0L + self.dbxBodyLength = 0 + self.dbxObjectLength = 0 + self.dbxEntries = 0 + self.dbxCounter = 0 self.dbxBuffer = [] - self.dbxIndexes = 0L - self.dbxBegin = [0L for i in range(dbxIndexedInfo.MAX_INDEX)] + self.dbxIndexes = 0 + self.dbxBegin = [0 for i in range(dbxIndexedInfo.MAX_INDEX)] self.dbxLength = [i for i in self.dbxBegin] self.dbxAddress = dbxAddress self.__readIndexedInfo(dbxStream) @@ -422,7 +422,7 @@ def __init__(self, dbxStream, dbxAddress): self.dbxAddress = dbxAddress self.dbxText = "" - self.dbxLength = 0L + self.dbxLength = 0 self.__readMessageText(dbxStream) def __getEntry(self, dbxBuffer, dbxEntry): @@ -462,7 +462,7 @@ into mbox format if so. If it's already an mbox, return it unchanged. """ - dbxStream = StringIO.StringIO(content) + dbxStream = io.StringIO(content) header = dbxFileHeader(dbxStream) if header.isValid() and header.isMessages(): @@ -625,9 +625,9 @@ index += 1 # Yield, as appropriate. - if account.has_key("POP3 Server"): + if "POP3 Server" in account: yield("POP3", subkey, account) - elif account.has_key("IMAP Server"): + elif "IMAP Server" in account: yield("IMAP4", subkey, account) def OEIsInstalled(): @@ -696,14 +696,14 @@ try: opts, args = getopt.getopt(sys.argv[1:], 'hp') - except getopt.error, msg: - print >> sys.stderr, str(msg) + '\n\n' + __doc__ + except getopt.error as msg: + print(str(msg) + '\n\n' + __doc__, file=sys.stderr) sys.exit() print_message = False for opt, arg in opts: if opt == '-h': - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) sys.exit() elif opt == '-p': print_message = True @@ -713,18 +713,18 @@ for file in files: try: - print - print file + print() + print(file) dbx = open(file, "rb", 0) header = dbxFileHeader(dbx) - print "IS VALID DBX :", header.isValid() + print("IS VALID DBX :", header.isValid()) if header.isMessages(): RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/oe_mailbox.py info = dbxFileInfo(dbx, header.getEntry(dbxFileHeader.FH_FILE_INFO_LENGTH)) - print "MAILBOX NAME :", info.getFolderName() - print "CREATION TIME :", info.getCreationTime() + print("MAILBOX NAME :", info.getFolderName()) + print("CREATION TIME :", info.getCreationTime()) entries = header.getEntry(dbxFileHeader.FH_ENTRIES) address = header.getEntry(dbxFileHeader.FH_TREE_ROOT_NODE_PTR) @@ -741,16 +741,17 @@ message = dbxMessage(dbx, messageAddress) if print_message: - print - print "Message :", messageInfo.getString(dbxMessageInfo.MI_SUBJECT) - print "=" * (len(messageInfo.getString(dbxMessageInfo.MI_SUBJECT)) + 9) - print - print message.getText() + print() + print("Message :", messageInfo.getString(dbxMessageInfo.MI_SUBJECT)) + print("=" * (len(messageInfo.getString(dbxMessageInfo.MI_SUBJECT)) + 9)) + print() + print(message.getText()) dbx.close() - except Exception, (strerror): - print strerror + except Exception as xxx_todo_changeme: + (strerror) = xxx_todo_changeme + print(strerror) if __name__ == '__main__': + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/msgs.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/msgs.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/msgs.py --- ../python3/spambayes/msgs.py (original) +++ ../python3/spambayes/msgs.py (refactored) @@ -1,4 +1,4 @@ -from __future__ import generators + import os import random + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/message.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/message.py --- ../python3/spambayes/message.py (original) +++ ../python3/spambayes/message.py (refactored) @@ -68,7 +68,7 @@ # The Python Software Foundation and is covered by the Python Software # Foundation license. -from __future__ import generators + __author__ = "Tim Stone " __credits__ = "Mark Hammond, Tony Meyer, all the spambayes contributors." @@ -81,7 +81,7 @@ import errno import shelve import warnings -import cPickle as pickle +import pickle as pickle import traceback import email.Message @@ -96,9 +96,9 @@ from spambayes.safepickle import pickle_read, pickle_write try: - import cStringIO as StringIO + import io as StringIO except ImportError: - import StringIO + import io CRLF_RE = re.compile(r'\r\n|\r|\n') @@ -113,10 +113,10 @@ self.db_name = db_name def __len__(self): - return len(self.keys()) + return len(list(self.keys())) def get_statistics_start_date(self): - if self.db.has_key(STATS_START_KEY): + if STATS_START_KEY in self.db: return self.db[STATS_START_KEY] else: return None @@ -126,7 +126,7 @@ self.store() def get_persistent_statistics(self): - if self.db.has_key(STATS_STORAGE_KEY): + if STATS_STORAGE_KEY in self.db: return self.db[STATS_STORAGE_KEY] else: return None @@ -162,21 +162,21 @@ if not hasattr(msg, att): setattr(msg, att, None) else: - if not isinstance(attributes, types.ListType): + if not isinstance(attributes, list): # Old-style message info db - if isinstance(attributes, types.TupleType): + if isinstance(attributes, tuple): # sb_server/sb_imapfilter, which only handled # storing 'c' and 't'. (msg.c, msg.t) = attributes return - elif isinstance(attributes, types.StringTypes): + elif isinstance(attributes, (str,)): # Outlook plug-in, which only handled storing 't', # and did it as a string. msg.t = {"0" : False, "1" : True}[attributes] return else: - print >> sys.stderr, "Unknown message info type", \ - attributes + print("Unknown message info type", \ + attributes, file=sys.stderr) sys.exit(1) for att, val in attributes: setattr(msg, att, val) @@ -198,7 +198,7 @@ self.store() def keys(self): - return self.db.keys() + return list(self.db.keys()) class MessageInfoPickle(MessageInfoBase): def __init__(self, db_name, pickle_type=1): @@ -209,7 +209,7 @@ def load(self): try: self.db = pickle_read(self.db_name) - except IOError, e: + except IOError as e: if e.errno == errno.ENOENT: # New pickle self.db = {} @@ -238,7 +238,7 @@ # available. Print out a warning, and continue on # (not persisting any of this data). if options["globals", "verbose"]: - print "Warning: no dbm modules available for MessageInfoDB" + print("Warning: no dbm modules available for MessageInfoDB") self.dbm = self.db = None def __del__(self): @@ -311,7 +311,7 @@ # so we try and be more robust. If we can't use the same storage # method, then we fall back to pickle. nm, typ = storage.database_type((), default_name=dn) - if typ not in _storage_types.keys(): + if typ not in list(_storage_types.keys()): typ = "pickle" return nm, typ @@ -387,20 +387,20 @@ def setId(self, id): if self.id and selfRefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/message.py .id != id: - raise ValueError, ("MsgId has already been set," - " cannot be changed %r %r") % (self.id, id) + raise ValueError(("MsgId has already been set," + " cannot be changed %r %r") % (self.id, id)) if id is None: - raise ValueError, "MsgId must not be None" - - if not type(id) in types.StringTypes: - raise TypeError, "Id must be a string" + raise ValueError("MsgId must not be None") + + if not type(id) in (str,): + raise TypeError("Id must be a string") if id == STATS_START_KEY: - raise ValueError, "MsgId must not be " + STATS_START_KEY + raise ValueError("MsgId must not be " + STATS_START_KEY) if id == STATS_STORAGE_KEY: - raise ValueError, "MsgId must not be " + STATS_STORAGE_KEY + raise ValueError("MsgId must not be " + STATS_STORAGE_KEY) self.id = id self.message_info_db.load_msg(self) @@ -422,7 +422,7 @@ # \r\n *only*). imaplib *should* take care of this for us (in the # append function), but does not, so we do it here try: - fp = StringIO.StringIO() + fp = io.StringIO() g = email.Generator.Generator(fp, mangle_from_=mangle_from_) g.flatten(self, unixfrom) return self._force_CRLF(fp.getvalue()) @@ -456,8 +456,7 @@ elif cls == options['Headers', 'header_unsure_string']: self.c = PERSISTENT_UNSURE_STRING else: - raise ValueError, \ - "Classification must match header strings in options" + raise ValueError("Classification must match header strings in options") self.modified() def GetTrained(self): @@ -538,7 +537,7 @@ for word, score in clues: if (word == '*H*' or word == '*S*' \ or score <= hco or score >= sco): - if isinstance(word, types.UnicodeType): + if isinstance(word, str): word = email.Header.Header(word, charset='utf-8').encode() try: @@ -552,7 +551,7 @@ wrappedEvd = [] headerName = options['Headers', 'evidence_header_name'] lineLength = len(headerName) + len(': ') - for component, index in zip(evd, range(len(evd))): + for component, index in zip(evd, list(range(len(evd)))): wrappedEvd.append(component) lineLength += len(component) if index < len(evd)-1: @@ -583,7 +582,7 @@ # something that could be a string or a tuple works fine, but # it dies in Python 2.2, because you can't do 'string in string', # only 'character in string', so we allow for that. - if isinstance(options["Headers", "notate_to"], types.StringTypes): + if isinstance(options["Headers", "notate_to"], (str,)): notate_to = (options["Headers", "notate_to"],) else: notate_to = options["Headers", "notate_to"] @@ -599,7 +598,7 @@ except KeyError: self["To"] = address - if isinstance(options["Headers", "notate_subject"], types.StringTypes): + if isinstance(options["Headers", "notate_subject"], (str,)): notate_subject = (options["Headers", "notate_subject"],) else: notate_subject = options["Headers", "notate_subject"] @@ -687,7 +686,7 @@ """Insert an exception header into the given RFC822 message (as text). Returns a tuple of the new message text and the exception details.""" - stream = StringIO.StringIO() + stream = io.StringIO() traceback.print_exc(None, stream) details = stream.getvalue() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/mboxutils.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/mboxutils.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/mboxutils.py --- ../python3/spambayes/mboxutils.py (original) +++ ../python3/spambayes/mboxutils.py (refactored) @@ -18,7 +18,7 @@ """ -from __future__ import generators + import os import sys @@ -214,7 +214,7 @@ headers = [] if unixfrom: headers.append(msg.get_unixfrom()) - for (hdr, val) in msg.items(): + for (hdr, val) in list(msg.items()): headers.append("%s: %s" % (hdr, val)) headers.append("X-Spambayes-Exception: %s" % excstr) parts = ["%s\n" % "\n".join(headers)] + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/fr/i18n_ui_html.py 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 ../python3/spambayes/languages/fr/i18n_ui_html.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/languages/fr/i18n_ui_html.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/fr/_cvsignore.py 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 ../python3/spambayes/languages/fr/_cvsignore.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/languages/fr/_cvsignore.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/fr/__init__.py 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 ../python3/spambayes/languages/fr/__init__.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/languages/fr/__init__.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/fr/DIALOGS/i18n_dialogs.py 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 ../python3/spambayes/languages/fr/DIALOGS/i18n_dialogs.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/languages/fr/DIALOGS/i18n_dialogs.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/fr/DIALOGS/__init__.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: No files need to be modified. + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/es_AR/_cvsignore.py 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 ../python3/spambayes/languages/es_AR/_cvsignore.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/languages/es_AR/_cvsignore.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/es_AR/__init__.py 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 ../python3/spambayes/languages/es_AR/__init__.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/languages/es_AR/__init__.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/es_AR/LC_MESSAGES/__init__.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: No files need to be modified. + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/es_AR/DIALOGS/i18n_dialogs.py 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 ../python3/spambayes/languages/es_AR/DIALOGS/i18n_dialogs.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/languages/es_AR/DIALOGS/i18n_dialogs.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/es_AR/DIALOGS/__init__.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: No files need to be modified. + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/es/_cvsignore.py 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 ../python3/spambayes/languages/es/_cvsignore.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/languages/es/_cvsignore.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/es/__init__.py 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 ../python3/spambayes/languages/es/__init__.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/languages/es/__init__.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/es/LC_MESSAGES/__init__.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: No files need to be modified. + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/es/DIALOGS/i18n_dialogs.py 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 ../python3/spambayes/languages/es/DIALOGS/i18n_dialogs.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/languages/es/DIALOGS/i18n_dialogs.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/es/DIALOGS/__init__.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: No files need to be modified. + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/de/_cvsignore.py 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 ../python3/spambayes/languages/de/_cvsignore.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/languages/de/_cvsignore.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/de/__init__.py 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 ../python3/spambayes/languages/de/__init__.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/languages/de/__init__.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/de/LC_MESSAGES/__init__.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: No files need to be modified. + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/de/DIALOGS/i18n_dialogs.py 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 ../python3/spambayes/languages/de/DIALOGS/i18n_dialogs.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/languages/de/DIALOGS/i18n_dialogs.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/de/DIALOGS/__init__.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: No files need to be modified. + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/languages/__init__.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: No files need to be modified. + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/i18n.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/i18n.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/i18n.py --- ../python3/spambayes/i18n.py (original) +++ ../python3/spambayes/i18n.py (refactored) @@ -180,38 +180,38 @@ def test(): lm = LanguageManager() - print "INIT: len(sys.path): ", len(sys.path) - print "TEST default lang" + print("INIT: len(sys.path): ", len(sys.path)) + print("TEST default lang") lm.set_language(lm.locale_default_lang()) - print "\tCurrent Languages: ", lm.current_langs_codes - print "\tlen(sys.path): ", len(sys.path) - print "\t", _("Help") - - print "TEST clear_language" + print("\tCurrent Languages: ", lm.current_langs_codes) + print("\tlen(sys.path): ", len(sys.path)) + print("\t", _("Help")) + + print("TEST clear_language") lm.clear_language() - print "\tCurrent Languages: ", lm.current_langs_codes - print "\tlen(sys.path): ", len(sys.path) - print "\t", _("Help") - - print "TEST set_language" + print("\tCurrent Languages: ", lm.current_langs_codes) + print("\tlen(sys.path): ", len(sys.path)) + print("\t", _("Help")) + + print("TEST set_language") for langcode in ["kk_KK", "z", "", "es", None, "es_AR"]: - print "lang: ", langcode + print("lang: ", langcode) lm.set_language(langcode) - print "\tCurrent Languages: ", lm.current_langs_codes - print "\tlen(sys.path): ", len(sys.path) - print "\t", _("Help") + print("\tCurrent Languages: ", lm.current_langs_codes) + print("\tlen(sys.path): ", len(sys.path)) + print("\t", _("Help")) lm.clear_language() - print "TEST add_language" + print("TEST add_language") for langcode in ["kk_KK", "z", "", "es", None, "es_AR"]: - print "lang: ", langcode + print("lang: ", langcode) lm.add_language(langcode) - print "\tCurrent Languages: ", lm.current_langs_codes - print "\tlen(sys.path): ", len(sys.path) - print "\t", _("Help") + print("\tCurrent Languages: ", lm.current_langs_codes) + print("\tlen(sys.path): ", len(sys.path)) + print("\t", _("Help")) if __name__ == '__main__': test() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/hammiebulk.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/hammiebulk.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/hammiebulk.py --- ../python3/spambayes/hammiebulk.py (original) +++ ../python3/spambayes/hammiebulk.py (refactored) @@ -76,7 +76,7 @@ h.train(msg, is_spam) sys.stdout.write("\r%6d" % i) sys.stdout.flush() - print + print() def untrain(h, msgs, is_spam): """Untrain bayes with all messages from a mailbox.""" @@ -90,7 +90,7 @@ h.untrain(msg, is_spam) sys.stdout.write("\r%6d" % i) sys.stdout.flush() - print + print() def score(h, msgs, reverse=0): """Score (judge) all messages from a mailbox.""" @@ -110,32 +110,32 @@ if isspam: spams += 1 if not reverse: - print "%6s %4.2f %1s" % (msgno, prob, isspam and "S" or "."), - print h.formatclues(clues) + print("%6s %4.2f %1s" % (msgno, prob, isspam and "S" or "."), end=' ') + print(h.formatclues(clues)) elif isham: hams += 1 if reverse: - print "%6s %4.2f %1s" % (msgno, prob, isham and "S" or "."), - print h.formatclues(clues) + print("%6s %4.2f %1s" % (msgno, prob, isham and "S" or "."), end=' ') + print(h.formatclues(clues)) else: unsures += 1 - print "%6s %4.2f U" % (msgno, prob), - print h.formatclues(clues) + print("%6s %4.2f U" % (msgno, prob), end=' ') + print(h.formatclues(clues)) return (spams, hams, unsures) def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) sys.exit(code) def main(): """Main program; parse options and go.""" try: opts, args = getopt.getopt(sys.argv[1:], 'hd:Ufg:s:p:u:r') - except getopt.error, msg: + except getopt.error as msg: usage(2, msg) if not opts: @@ -180,22 +180,22 @@ if not untrain_mode: for g in good: - print "Training ham (%s):" % g + print("Training ham (%s):" % g) train(h, g, False) save = True for s in spam: - print "Training spam (%s):" % s + print("Training spam (%s):" % s) train(h, s, True) save = True else: for g in good: - print "Untraining ham (%s):" % g + print("Untraining ham (%s):" % g) untrain(h, g, False) save = True for s in spam: - print "Untraining spam (%s):" % s + print("Untraining spam (%s):" % s) untrain(h, s, True) save = True @@ -211,12 +211,12 @@ spams = hams = unsures = 0 for u in unknown: if len(unknown) > 1: - print "Scoring", u + print("Scoring", u) s, g, u = score(h, u, reverse) spams += s hams += g unsures += u - print "Total %d spam, %d ham, %d unsure" % (spams, hams, unsures) + print("Total %d spam, %d ham, %d unsure" % (spams, hams, unsures)) if __name__ == "__main__": main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/hammie.py 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 ../python3/spambayes/hammie.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/hammie.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/dnscache.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/dnscache.py --- ../python3/spambayes/dnscache.py (original) +++ ../python3/spambayes/dnscache.py (refactored) @@ -60,9 +60,9 @@ # (seq[i].attr, i, seq[i]) and sort it. The second item of tuple is needed not # only to provide stable sorting, but mainly to eliminate comparison of objects # (which can be expensive or prohibited) in case of equal attribute values. - intermed = map(None, map(getattr, seq, (attr,)*len(seq)), xrange(len(seq)), seq) + intermed = map(None, list(map(getattr, seq, (attr,)*len(seq))), range(len(seq)), seq) intermed.sort() - return map(operator.getitem, intermed, (-1,) * len(intermed)) + return list(map(operator.getitem, intermed, (-1,) * len(intermed))) class cache: @@ -105,12 +105,12 @@ if options["globals", "verbose"]: if self.caches["A"] or self.caches["PTR"]: - print >> sys.stderr, "opened existing cache with", - print >> sys.stderr, len(self.caches["A"]), "A records", - print >> sys.stderr, "and", len(self.caches["PTR"]), - print >> sys.stderr, "PTR records" + print("opened existing cache with", end=' ', file=sys.stderr) + print(len(self.caches["A"]), "A records", end=' ', file=sys.stderr) + print("and", len(self.caches["PTR"]), end=' ', file=sys.stderr) + print("PTR records", file=sys.stderr) else: - print >> sys.stderr, "opened new cache" + print("opened new cache", file=sys.stderr) self.hits=0 # These two for statistics self.misses=0 @@ -130,26 +130,26 @@ pickle_write(self.cachefile, self.caches) def printStats(self): - for key,val in self.caches.items(): + for key,val in list(self.caches.items()): totAnswers=0 - for item in val.values(): + for item in list(val.values()): totAnswers+=len(item) - print >> sys.stderr, "cache", key, "has", len(self.caches[key]), - print >> sys.stderr, "question(s) and", totAnswers, "answer(s)" + print("cache", key, "has", len(self.caches[key]), end=' ', file=sys.stderr) + print("question(s) and", totAnswers, "answer(s)", file=sys.stderr) if self.hits+self.misses == 0: - print >> sys.stderr, "No queries" - else: - print >> sys.stderr, self.hits, "hits,", self.misses, "misses", - print >> sys.stderr, "(%.1f%% hits)" % \ - (self.hits/float(self.hits+self.misses)*100) + print("No queries", file=sys.stderr) + else: + print(self.hits, "hits,", self.misses, "misses", end=' ', file=sys.stderr) + print("(%.1f%% hits)" % \ + (self.hits/float(self.hits+self.misses)*100), file=sys.stderr) def prune(self, now): # I want this to be as fast as reasonably possible. # If I didn't, I'd probably do various things differently # Is there a faster way to do this? allAnswers = [] - for cache in self.caches.values(): - for val in cache.values(): + for cache in list(self.caches.values()): + for val in list(cache.values()): allAnswers += val allAnswers = sort_by_attr(allAnswers,"expiresAt") @@ -177,7 +177,7 @@ allAnswers = sort_by_attr(allAnswers, "lastUsed") allAnswers.reverse() numToDelete = len(allAnswers)-kPruneDownTo - for _count in xrange(numToDelete): + for _count in range(numToDelete): answer = allAnswers.pop() c = self.caches[answer.qType] c[answer.question].remove(answer) @@ -200,7 +200,7 @@ def lookup(self,question,qType="A"): qType = qType.upper() if qType not in ("A","PTR"): - raise ValueError,"Query type must be one of A, PTR" + raise ValueError("Query type must be one of A, PTR") now = int(time.time()) @@ -230,7 +230,7 @@ thisAnsweRefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/dnscache.py RefactoringTool: Warnings/messages while refactoring: RefactoringTool: ### In file ../python3/spambayes/dnscache.py ### RefactoringTool: Line 63: cannot convert map(None, ...) with multiple arguments because map() now truncates to the shortest sequence RefactoringTool: Line 63: cannot convert map(None, ...) with multiple arguments because map() now truncates to the shortest sequence r.lastUsed = now ind += 1 else: - print >> sys.stderr, "lookup failure:", question + print("lookup failure:", question, file=sys.stderr) if not answers: del cacheToLookIn[question] @@ -252,20 +252,20 @@ try: reply = self.queryObj.req(queryQuestion, qtype=qType, timeout=self.dnsTimeout) - except DNS.Base.DNSError,detail: + except DNS.Base.DNSError as detail: if detail.args[0] not in ("Timeout", "nothing to lookup"): - print >> sys.stderr, detail.args[0] - print >> sys.stderr, "Error, fixme", detail - print >> sys.stderr, "Question was", queryQuestion - print >> sys.stderr, "Original question was", question - print >> sys.stderr, "Type was", qType + print(detail.args[0], file=sys.stderr) + print("Error, fixme", detail, file=sys.stderr) + print("Question was", queryQuestion, file=sys.stderr) + print("Original question was", question, file=sys.stderr) + print("Type was", qType, file=sys.stderr) objs = [lookupResult(qType, None, question, self.cacheErrorSecs+now, now)] cacheToLookIn[question] = objs # Add to format for return? return self.formatForReturn(objs) - except socket.gaierror,detail: - print >> sys.stderr, "DNS connection failure:", self.queryObj.ns, detail - print >> sys.stderr, "Defaults:", DNS.defaults + except socket.gaierror as detail: + print("DNS connection failure:", self.queryObj.ns, detail, file=sys.stderr) + print("Defaults:", DNS.defaults, file=sys.stderr) objs = [] for answer in reply.answers: @@ -308,7 +308,7 @@ auth = reply.authority[0] auTTL = int(auth["ttl"]) for item in auth["data"]: - if type(item) == types.TupleType and item[0] == "minimum": + if type(item) == tuple and item[0] == "minimum": auMin = int(item[1]) cacheNeg = min(auMin,auTTL) break @@ -327,24 +327,24 @@ for host in ["www.python.org", "www.timsbloggers.com", "www.seeputofor.com", "www.completegarbage.tv", "www.tradelinkllc.com"]: - print >> sys.stderr, "checking", host + print("checking", host, file=sys.stderr) now = time.time() ips = c.lookup(host) - print >> sys.stderr, ips, time.time()-now + print(ips, time.time()-now, file=sys.stderr) now = time.time() ips = c.lookup(host) - print >> sys.stderr, ips, time.time()-now + print(ips, time.time()-now, file=sys.stderr) if ips: ip = ips[0] now = time.time() name = c.lookup(ip, qType="PTR") - print >> sys.stderr, name, time.time()-now + print(name, time.time()-now, file=sys.stderr) now = time.time() name = c.lookup(ip, qType="PTR") - print >> sys.stderr, name, time.time()-now - else: - print >> sys.stderr, "unknown" + print(name, time.time()-now, file=sys.stderr) + else: + print("unknown", file=sys.stderr) c.close() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/dbmstorage.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/dbmstorage.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/dbmstorage.py --- ../python3/spambayes/dbmstorage.py (original) +++ ../python3/spambayes/dbmstorage.py (refactored) @@ -2,7 +2,7 @@ from spambayes.Options import options import sys -import whichdb +import dbm import os class error(Exception): @@ -54,7 +54,7 @@ options.default("globals", "dbm_type") != \ options["globals", "dbm_type"]: # let the file tell us what db to use - dbm_type = whichdb.whichdb(db_name) + dbm_type = dbm.whichdb(db_name) # if we are using Windows and Python < 2.3, then we need to use # db3hash, not dbhash. if (sys.platform == "win32" and + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/core_resources/ui_psp.py 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 ../python3/spambayes/core_resources/ui_psp.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/core_resources/ui_psp.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/core_resources/ui_html.py 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 ../python3/spambayes/core_resources/ui_html.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/core_resources/ui_html.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/core_resources/train_gif.py 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 ../python3/spambayes/core_resources/train_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/core_resources/train_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/core_resources/status_gif.py 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 ../python3/spambayes/core_resources/status_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/core_resources/status_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/core_resources/scanning__init__.py 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 ../python3/spambayes/core_resources/scanning__init__.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/core_resources/scanning__init__.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/core_resources/query_gif.py 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 ../python3/spambayes/core_resources/query_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/core_resources/query_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/core_resources/message_gif.py 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 ../python3/spambayes/core_resources/message_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/core_resources/message_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/core_resources/help_gif.py 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 ../python3/spambayes/core_resources/help_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/core_resources/help_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/core_resources/helmet_gif.py 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 ../python3/spambayes/core_resources/helmet_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/core_resources/helmet_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/core_resources/config_gif.py 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 ../python3/spambayes/core_resources/config_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/core_resources/config_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/core_resources/classify_gif.py 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 ../python3/spambayes/core_resources/classify_gif.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/core_resources/classify_gif.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/core_resources/__init__.py 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 ../python3/spambayes/core_resources/__init__.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/core_resources/__init__.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/core_resources/README_txt.py 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 ../python3/spambayes/core_resources/README_txt.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/core_resources/README_txt.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/compatsets.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/compatsets.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/compatsets.py --- ../python3/spambayes/compatsets.py (original) +++ ../python3/spambayes/compatsets.py (refactored) @@ -70,7 +70,7 @@ """This is an abstract class.""" # Don't call this from a concrete subclass! if self.__class__ is BaseSet: - raise TypeError, ("BaseSet is an abstract class. " + raise TypeError("BaseSet is an abstract class. " "Use Set or ImmutableSet.") # Standard protocols: __len__, __repr__, __str__, __iter__ @@ -90,7 +90,7 @@ __str__ = __repr__ def _repr(self, sorted=False): - elements = self._data.keys() + elements = list(self._data.keys()) if sorted: elements.sort() return '%s(%r)' % (self.__class__.__name__, elements) @@ -100,7 +100,7 @@ This is the keys iterator for the underlying dict. """ - return self._data.iterkeys() + return iter(self._data.keys()) # Equality comparisons using the underlying dicts @@ -177,7 +177,7 @@ little, big = self, other else: little, big = other, self - common = filter(big._data.has_key, little._data.iterkeys()) + common = list(filter(big._data.has_key, iter(little._data.keys()))) return self.__class__(common) def intersection(self, other): @@ -294,7 +294,7 @@ # Check that the other argument to a binary operation is also # a set, raising a TypeError otherwise. if not isinstance(other, BaseSet): - raise TypeError, "Binary operation only permitted between sets" + raise TypeError("Binary operation only permitted between sets") def _compute_hash(self): # Calculate hash code for a set by xor'ing the hash codes of @@ -369,7 +369,7 @@ def __hash__(self): """A Set cannot be hashed.""" # We inherit object.__hash__, so we must deny this explicitly - raise TypeError, "Can't hash a Set, only an ImmutableSet." + raise TypeError("Can't hash a Set, only an ImmutableSet.") # In-place union, intersection, differences. # Subtle: The xyz_update() functions deliberately return None, + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/compatheapq.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/compatheapq.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/compatheapq.py --- ../python3/spambayes/compatheapq.py (original) +++ ../python3/spambayes/compatheapq.py (refactored) @@ -163,7 +163,7 @@ # or i < (n-1)/2. If n is even = 2*j, this is (2*j-1)/2 = j-1/2 so # j-1 is the largest, which is n//2 - 1. If n is odd = 2*j+1, this is # (2*j+1-1)/2 = j so j-1 is the largest, and that's again n//2-1. - for i in xrange(n//2 - 1, -1, -1): + for i in range(n//2 - 1, -1, -1): _siftup(x, i) # 'heap' is a heap at all indices >= startpos, except possibly for pos. pos @@ -250,4 +250,4 @@ sort = [] while heap: sort.append(heappop(heap)) - print sort + print(sort) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/compatcsv.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/compatcsv.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/compatcsv.py --- ../python3/spambayes/compatcsv.py (original) +++ ../python3/spambayes/compatcsv.py (refactored) @@ -26,7 +26,7 @@ line = line[:-1] return line - def next(self): + def __next__(self): line = self._readline() if not line: raise StopIteration @@ -66,7 +66,7 @@ field.append("\n") line = self._readline() if not line: - raise IOError, "end-of-file during parsing" + raise IOError("end-of-file during parsing") else: # unquoted field field = [] @@ -88,7 +88,7 @@ def writerow(self, row): result = [] for item in row: - if isinstance(item, unicode): + if isinstance(item, str): item = item.encode("utf-8") else: item = str(item) @@ -101,20 +101,20 @@ if __name__ == "__main__": import unittest - import StringIO + import io class TestCase(unittest.TestCase): def test_reader(self): - f = StringIO.StringIO('''\ + f = io.StringIO('''\ """rare""",1,0 "beginning; end=""itinhh.txt""",1,0 ''') f.seek(0) rdr = reader(f) - self.assertEqual(rdr.next(), ['"rare"', '1', '0']) - self.assertEqual(rdr.next(), + self.assertEqual(next(rdr), ['"rare"', '1', '0']) + self.assertEqual(next(rdr), ['beginning;\n\tend="itinhh.txt"','1', '0']) - self.assertRaises(StopIteration, rdr.next) + self.assertRaises(StopIteration, rdr.__next__) unittest.main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/classifier.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/classifier.py --- ../python3/spambayes/classifier.py (original) +++ ../python3/spambayes/classifier.py (refactored) @@ -1,6 +1,6 @@ #! /usr/bin/env python -from __future__ import generators + # An implementation of a Bayes-like spam classifier. # @@ -47,7 +47,7 @@ import os import sys import socket -import urllib2 +import urllib.request, urllib.error, urllib.parse from email import message_from_string DOMAIN_AND_PORT_RE = re.compile(r"([^:/\\]+)(:([\d]+))?") @@ -556,18 +556,18 @@ port = 8080 if server: # Build a new opener that uses a proxy requiring authorization - proxy_support = urllib2.ProxyHandler({"http" : \ + proxy_support = urllib.request.ProxyHandler({"http" : \ "http://%s:%s@%s:%d" % \ (username, password, server, port)}) - opener = urllib2.build_opener(proxy_support, - urllib2.HTTPHandler) + opener = urllib.request.build_opener(proxy_support, + urllib.request.HTTPHandler) else: # Build a new opener without any proxy information. - opener = urllib2.build_opener(urllib2.HTTPHandler) + opener = urllib.request.build_opener(urllib.request.HTTPHandler) # Install it - urllib2.install_opener(opener) + urllib.request.install_opener(opener) # Setup the cache for retrieved urls age = options["URLRetriever", "x-cache_expiry_days"]*24*60*60 @@ -575,7 +575,7 @@ if not os.path.exists(dir): # Create the directory. if options["globals", "verbose"]: - print >> sys.stderr, "Creating URL cache directory" + print("Creating URL cache directory", file=sys.stderr) os.makedirs(dir) self.urlCorpus = ExpiryFileCorpus(age, FileMessageFactory(), @@ -593,24 +593,24 @@ # Something went wrong loading it (bad pickle, # probably). Start afresh. if options["globals", "verbose"]: - print >> sys.stderr, "Bad URL pickle, using new." + print("Bad URL pickle, using new.", file=sys.stderr) self.bad_urls = {"url:non_resolving": (), "url:non_html": (), "url:unknown_error": ()} else: if options["globals", "verbose"]: - print "URL caches don't exist: creating" + print("URL caches don't exist: creating") self.bad_urls = {"url:non_resolving": (), "url:non_html": (), "url:unknown_error": ()} if os.path.exists(self.http_error_cache_name): try: self.http_error_urls = pickle_read(self.http_error_cache_name) - except IOError, ValueError: + except IOError as ValueError: # Something went wrong loading it (bad pickle, # probably). Start afresh. if options["globals", "verbose"]: - print >> sys.stderr, "Bad HHTP error pickle, using new." + print("Bad HHTP error pickle, using new.", file=sys.stderr) self.http_error_urls = {} else: self.http_error_urls = {} @@ -648,10 +648,10 @@ url = self._base_url(url) # Check the unretrievable caches - for err in self.bad_urls.keys(): + for err in list(self.bad_urls.keys()): if url in self.bad_urls[err]: return [err] - if self.http_error_urls.has_key(url): + if url in self.http_error_urls: return self.http_error_urls[url] # We check if the url will resolve first @@ -692,9 +692,9 @@ pass try: if options["globals", "verbose"]: - RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/classifier.py print >> sys.stderr, "Slurping", url - f = urllib2.urlopen("%s://%s" % (proto, url)) - except (urllib2.URLError, socket.error), details: + print("Slurping", url, file=sys.stderr) + f = urllib.request.urlopen("%s://%s" % (proto, url)) + except (urllib.error.URLError, socket.error) as details: mo = HTTP_ERROR_RE.match(str(details)) if mo: self.http_error_urls[url] = "url:http_" + mo.group(1) @@ -781,7 +781,7 @@ yield token def _wordinfokeys(self): - return self.wordinfo.keys() + return list(self.wordinfo.keys()) Bayes = Classifier + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/chi2.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/chi2.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/chi2.py --- ../python3/spambayes/chi2.py (original) +++ ../python3/spambayes/chi2.py (refactored) @@ -104,7 +104,7 @@ self.next = baserandom() def random(self): - result = self.next + result = self.__next__ i = int(result * self.n) self.next = self.tab[i] self.tab[i] = self.baserandom() @@ -144,28 +144,28 @@ s = Hist(20, lo=0.0, hi=1.0) score = Hist(20, lo=0.0, hi=1.0) - for _i in xrange(5000): - ps = [random() for _j in xrange(50)] + for _i in range(5000): + ps = [random() for _j in range(50)] s1, h1, score1 = judge(ps + [bias] * warp) s.add(s1) h.add(h1) score.add(score1) - print "Result for random vectors of 50 probs, +", warp, "forced to", bias + print("Result for random vectors of 50 probs, +", warp, "forced to", bias) # Should be uniformly distributed on all-random data. - print - print 'H', + print() + print('H', end=' ') h.display() # Should be uniformly distributed on all-random data. - print - print 'S', + print() + print('S', end=' ') s.display() # Distribution doesn't really matter. - print - print '(S-H+1)/2', + print() + print('(S-H+1)/2', end=' ') score.display() def showscore(ps, ln=_math.log, ln2=_math.log(2), frexp=_math.frexp): @@ -186,15 +186,15 @@ n = len(ps) probS = chi2Q(-2*S, 2*n) probH = chi2Q(-2*H, 2*n) - print "P(chisq >= %10g | v=%3d) = %10g" % (-2*S, 2*n, probS) - print "P(chisq >= %10g | v=%3d) = %10g" % (-2*H, 2*n, probH) + print("P(chisq >= %10g | v=%3d) = %10g" % (-2*S, 2*n, probS)) + print("P(chisq >= %10g | v=%3d) = %10g" % (-2*H, 2*n, probH)) S = 1.0 - probS H = 1.0 - probH score = (S-H + 1.0) / 2.0 - print "spam prob", S - print " ham prob", H - print "(S-H+1)/2", score + print("spam prob", S) + print(" ham prob", H) + print("(S-H+1)/2", score) if __name__ == '__main__': main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/cdb_classifier.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/cdb_classifier.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/cdb_classifier.py --- ../python3/spambayes/cdb_classifier.py (original) +++ ../python3/spambayes/cdb_classifier.py (refactored) @@ -20,7 +20,7 @@ def save_wordinfo(self, db_file): items = [] - for word, record in self.wordinfo.iteritems(): + for word, record in self.wordinfo.items(): prob = Classifier.probability(self, record) items.append((word, str(prob))) cdb.cdb_make(db_file, items) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/cdb.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/cdb.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/cdb.py --- ../python3/spambayes/cdb.py (original) +++ ../python3/spambayes/cdb.py (refactored) @@ -6,7 +6,7 @@ """ -from __future__ import generators + import os import struct @@ -23,7 +23,7 @@ def cdb_hash(buf): h = CDB_HASHSTART for c in buf: - h = (h + (h << 5)) & 0xffffffffL + h = (h + (h << 5)) & 0xffffffff h ^= ord(c) return h @@ -73,19 +73,19 @@ def items(self): ret = [] - for i in self.iteritems(): + for i in self.items(): ret.append(i) return ret def keys(self): ret = [] - for i in self.iterkeys(): + for i in self.keys(): ret.append(i) return ret def values(self): ret = [] - for i in self.itervalues(): + for i in self.values(): ret.append(i) return ret @@ -150,9 +150,9 @@ def cdb_dump(infile): """dump a database in djb's cdbdump format""" db = Cdb(infile) - for key, value in db.iteritems(): - print "+%d,%d:%s->%s" % (len(key), len(value), key, value) - print + for key, value in db.items(): + print("+%d,%d:%s->%s" % (len(key), len(value), key, value)) + print() def cdb_make(outfile, items): pos = 2048 @@ -208,12 +208,12 @@ ]) db.close() db = Cdb(open("test.cdb", 'rb')) - print db['one'] - print db['two'] - print db['foo'] - print db['us'] - print db.get('ec') - print db.get('notthere') + print(db['one']) + print(db['two']) + print(db['foo']) + print(db['us']) + print(db.get('ec')) + print(db.get('notthere')) if __name__ == '__main__': test() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/asyncore.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/asyncore.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/asyncore.py --- ../python3/spambayes/asyncore.py (original) +++ ../python3/spambayes/asyncore.py (refactored) @@ -105,7 +105,7 @@ map = socket_map if map: r = []; w = []; e = [] - for fd, obj in map.items(): + for fd, obj in list(map.items()): is_r = obj.readable() is_w = obj.writable() if is_r: @@ -119,7 +119,7 @@ else: try: r, w, e = select.select(r, w, e, timeout) - except select.error, err: + except select.error as err: if err[0] != EINTR: raise else: @@ -152,7 +152,7 @@ timeout = int(timeout*1000) pollster = select.poll() if map: - for fd, obj in map.items(): + for fd, obj in list(map.items()): flags = 0 if obj.readable(): flags |= select.POLLIN | select.POLLPRI @@ -165,7 +165,7 @@ pollster.register(fd, flags) try: r = pollster.poll(timeout) - except select.error, err: + except select.error as err: if err[0] != EINTR: raise r = [] @@ -247,7 +247,7 @@ fd = self._fileno if map is None: map = self._map - if map.has_key(fd): + if fd in map: #self.log_info('closing channel %d:%s' % (fd, self)) del map[fd] self._fileno = None @@ -313,14 +313,14 @@ self.connected = True self.handle_connect() else: - raise socket.error, (err, errorcode[err]) + raise socket.error(err, errorcode[err]) def accept(self): # XXX can return either an address pair or None try: conn, addr = self.socket.accept() return conn, addr - except socket.error, why: + except socket.error as why: if why[0] == EWOULDBLOCK: pass else: @@ -330,7 +330,7 @@ try: result = self.socket.send(data) return result - except socket.error, why: + except socket.error as why: if why[0] == EWOULDBLOCK: return 0 else: @@ -347,7 +347,7 @@ return '' else: return data - except socket.error, why: + except socket.error as why: # winsock sometimes throws ENOTCONN if why[0] in [ECONNRESET, ENOTCONN, ESHUTDOWN]: self.handle_close() @@ -373,7 +373,7 @@ def log_info(self, message, type='info'): if __debug__ or type != 'info': - print '%s: %s' % (type, message) + print('%s: %s' % (type, message)) def handle_read_event(self): if self.accepting: @@ -492,7 +492,7 @@ def close_all(map=None): if map is None: map = socket_map - for x in map.values(): + for x in list(map.values()): x.socket.close() map.clear() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/asynchat.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/asynchat.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/asynchat.py --- ../python3/spambayes/asynchat.py (original) +++ ../python3/spambayes/asynchat.py (refactored) @@ -66,10 +66,10 @@ asyncore.dispatcher.__init__ (self, conn) def collect_incoming_data(self, data): - raise NotImplementedError, "must be implemented in subclass" + raise NotImplementedError("must be implemented in subclass") def found_terminator(self): - raise NotImplementedError, "must be implemented in subclass" + raise NotImplementedError("must be implemented in subclass") def set_terminator (self, term): "Set the input delimiter. Can be a fixed string of any length, an integer, or None" @@ -87,7 +87,7 @@ try: data = self.recv (self.ac_in_buffer_size) - except socket.error, why: + except socket.error as why: self.handle_error() return @@ -105,7 +105,7 @@ # no terminator, collect it all self.collect_incoming_data (self.ac_in_buffer) self.ac_in_buffer = '' - elif isinstance(terminator, int) or isinstance(terminator, long): + elif isinstance(terminator, int) or isinstance(terminator, int): # numeric terminator n = terminator if lb < n: @@ -220,7 +220,7 @@ if num_sent: self.ac_out_buffer = self.ac_out_buffer[num_sent:] - except socket.error, why: + except socket.error as why: self.handle_error() return + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/__init__.py 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 ../python3/spambayes/__init__.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/__init__.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/XMLRPCPlugin.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/XMLRPCPlugin.py --- ../python3/spambayes/XMLRPCPlugin.py (original) +++ ../python3/spambayes/XMLRPCPlugin.py (refactored) @@ -44,10 +44,10 @@ # Foundation license. import threading -import xmlrpclib +import xmlrpc.client import time from email import Message, message_from_string -from SimpleXMLRPCServer import SimpleXMLRPCServer +from xmlrpc.server import SimpleXMLRPCServer from spambayes.CorePlugin import Plugin, PluginUI from spambayes.Options import _, options @@ -82,16 +82,16 @@ if method in ("score", "score_mime", "train", "train_mime"): return getattr(self, method)(*params) else: - raise xmlrpclib.Fault(404, '"%s" is not supported' % method) + raise xmlrpc.client.Fault(404, '"%s" is not supported' % method) def train(self, form_dict, extra_tokens, attachments, is_spam=True): newdict = {} - for (i, k) in form_dict.items(): - if isinstance(k, unicode): + for (i, k) in list(form_dict.items()): + if isinstance(k, str): k = k.encode("utf-8") newdict[i] = k mime_message = form_to_mime(newdict, extra_tokens, attachments) - mime_message = unicode(mime_message.as_string(), "utf-8").encode("utf-8") + mime_message = str(mime_message.as_string(), "utf-8").encode("utf-8") self.train_mime(mime_message, "utf-8", is_spam) return "" @@ -101,9 +101,9 @@ # Get msg_text into canonical string representation. # Make sure we have a unicode object... if isinstance(msg_text, str): - msg_text = unicode(msg_text, encoding) + msg_text = str(msg_text, encoding) # ... then encode it as utf-8. - if isinstance(msg_text, unicode): + if isinstance(msg_text, str): msg_text = msg_text.encode("utf-8") msg = message_from_string(msg_text, _class=spambayes.message.SBHeaderMessage) @@ -139,11 +139,11 @@ count = -1 def generate_name(self): self.count += 1 - return "%10.10d-%d" % (long(time.time()), self.count) + return "%10.10d-%d" % (int(time.time()), self.count) Namer = UniqueNamer() self.msg_name_func = Namer.generate_name key = self.msg_name_func() - mime_message = unicode(msg.as_string(), "utf-8").encode("utf-8") + mime_message = str(msg.as_string(), "utf-8").encode("utf-8") msg = corpus.makeMessage(key, mime_message) msg.setId(key) corpus.addMessage(msg) @@ -163,12 +163,12 @@ def score(self, form_dict, extra_tokens, attachments): """Score a dictionary + extra tokens.""" newdict = {} - for (i, k) in form_dict.items(): - if isinstance(k, unicode): + for (i, k) in list(form_dict.items()): + if isinstance(k, str): k = k.encode("utf-8") newdict[i] = k mime_message = form_to_mime(newdict, extra_tokens, attachments) - mime_message = unicode(mime_message.as_string(), "utf-8").encode("utf-8") + mime_message = str(mime_message.as_string(), "utf-8").encode("utf-8") return self.score_mime(mime_message, "utf-8") def score_mime(self, msg_text, encoding): @@ -184,9 +184,9 @@ # Get msg_text into canonical string representation. # Make sure we have a unicode object... if isinstance(msg_text, str): - msg_text = unicode(msg_text, encoding) + msg_text = str(msg_text, encoding) # ... then encode it as utf-8. - if isinstance(msg_text, unicode): + if isinstance(msg_text, str): msg_text = msg_text.encode("utf-8") msg = message_from_string(msg_text, _class=spambayes.message.SBHeaderMessage) @@ -232,7 +232,7 @@ main = Message.Message() main.set_type("text/plain") - main.set_payload("\n".join(["%s:%s" % (k, v) for (k,RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/XMLRPCPlugin.py v) in form.items()])) + main.set_payload("\n".join(["%s:%s" % (k, v) for (k, v) in list(form.items())])) msg.attach(main) # Always add the extra tokens payload so we can reliably reverse the + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/Version.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/Version.py --- ../python3/spambayes/Version.py (original) +++ ../python3/spambayes/Version.py (refactored) @@ -174,7 +174,7 @@ def parse(self, vstring): match = self.version_re.match(vstring) if not match: - raise ValueError, "invalid version number '%s'" % vstring + raise ValueError("invalid version number '%s'" % vstring) (major, minor, patch, prerelease, prerelease_num) = \ match.group(1, 2, 4, 6, 7) @@ -193,7 +193,7 @@ releaselevel = "beta" elif prerelease == "rc": releaselevel = "candidate" - self.version_info = tuple(map(int, [major, minor, patch]) + \ + self.version_info = tuple(list(map(int, [major, minor, patch])) + \ [releaselevel, serial]) def __str__(self): @@ -231,8 +231,8 @@ # Assumes that a 'config' version of this file exists at the given URL # No exceptions are caught try: - import ConfigParser - class MySafeConfigParser(ConfigParser.SafeConfigParser): + import configparser + class MySafeConfigParser(configparser.SafeConfigParser): def optionxform(self, optionstr): return optionstr # no lower! except AttributeError: # No SafeConfigParser! @@ -240,10 +240,9 @@ def fetch_latest_dict(url=LATEST_VERSION_HOME): if MySafeConfigParser is None: - raise RuntimeError, \ - "Sorry, but only Python 2.3+ can trust remote config files" - - import urllib2 + raise RuntimeError("Sorry, but only Python 2.3+ can trust remote config files") + + import urllib.request, urllib.error, urllib.parse from spambayes.Options import options server = options["globals", "proxy_server"] if server != "": @@ -258,13 +257,13 @@ options["globals", "proxy_password"]) else: user_pass_string = "" - proxy_support = urllib2.ProxyHandler({"http" : + proxy_support = urllib.request.ProxyHandler({"http" : "http://%s@%s:%d" % \ (user_pass_string, server, port)}) - opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler) - urllib2.install_opener(opener) - stream = urllib2.urlopen(url) + opener = urllib.request.build_opener(proxy_support, urllib.request.HTTPHandler) + urllib.request.install_opener(opener) + stream = urllib.request.urlopen(url) cfg = MySafeConfigParser() cfg.readfp(stream) ret_dict = {} @@ -296,7 +295,7 @@ "Download Page": "http://spambayes.sourceforge.net/windows.html", } def _write_cfg_opts(stream, this_dict): - for name, val in this_dict.items(): + for name, val in list(this_dict.items()): if type(val)==type(''): val_str = repr(val)[1:-1] elif type(val)==type(0.0): @@ -304,7 +303,7 @@ elif type(val)==type({}): val_str = None # sub-dict else: - print "Skipping unknown value type: %r" % val + print("Skipping unknown value type: %r" % val) val_str = None if val_str is not None: stream.write("%s:%s\n" % (name, val_str)) @@ -355,21 +354,21 @@ sys.exit(0) v_this = get_current_version() - print "Current version:", v_this.get_long_version() - - print - print "Fetching the lastest version information..." + print("Current version:", v_this.get_long_version()) + + print() + print("Fetching the lastest version information...") try: latest_dict = fetch_latest_dict() except: - print "FAILED to fetch the latest version" + print("FAILED to fetch the latest version") import traceback traceback.print_exc() sys.exit(1) v_latest = get_version(version_dict=latest_dict) - print - print "Latest version:", v_latest.get_long_version() + print() + print("Latest version:", v_latest.get_long_version(RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/Version.py )) if __name__ == '__main__': main(sys.argv) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/UserInterface.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/UserInterface.py --- ../python3/spambayes/UserInterface.py (original) +++ ../python3/spambayes/UserInterface.py (refactored) @@ -72,7 +72,7 @@ import cgi import mailbox import types -import StringIO +import io from email.Iterators import typed_subpart_iterator from textwrap import wrap @@ -108,7 +108,7 @@ def __init__(self, uiPort): Dibbler.HTTPServer.__init__(self, uiPort) - print _('User interface url is http://localhost:%d/') % (uiPort) + print(_('User interface url is http://localhost:%d/') % (uiPort)) def requestAuthenticationMode(self): return options["html_ui", "http_authentication"] @@ -232,8 +232,8 @@ # If you are easily offended, look away now... for imageName in IMAGES: - exec "def %s(self): self._writeImage('%s')" % \ - ("on%sGif" % imageName.capitalize(), imageName) + exec("def %s(self): self._writeImage('%s')" % \ + ("on%sGif" % imageName.capitalize(), imageName)) def _buildBox(self, heading, icon, content): """Builds a yellow-headed HTML box.""" @@ -444,7 +444,7 @@ self._writePreamble(_("Word query")) if len(stats) == 1: - if isinstance(stat, types.TupleType): + if isinstance(stat, tuple): stat = self.html.wordStats.clone() word = stats[0][0] stat.spamcount = stats[0][1] @@ -462,7 +462,7 @@ page.multiTable += self.html.multiHeader.clone() stripe = 0 for stat in stats: - if isinstance(stat, types.TupleType): + if isinstance(stat, tuple): row = self.html.statsRow.clone() row.word, row.spamcount, row.hamcount = stat[:3] row.spamprob = "%.6f" % stat[3] @@ -540,7 +540,7 @@ count = -1 def generate_name(self): self.count += 1 - return "%10.10d-%d" % (long(time.time()), self.count) + return "%10.10d-%d" % (int(time.time()), self.count) Namer = UniqueNamer() self.msg_name_func = Namer.generate_name @@ -583,9 +583,9 @@ class SimpleMessage: def __init__(self, fp): self.guts = fp.read() - contentFile = StringIO.StringIO(content) + contentFile = io.StringIO(content) mbox = mailbox.PortableUnixMailbox(contentFile, SimpleMessage) - return map(lambda m: m.guts, mbox) + return [m.guts for m in mbox] else: # Just the one message. return [content] @@ -732,7 +732,7 @@ valid_input = options.valid_input(sect, opt) # Populate the rows with the details and add them to the table. - if isinstance(valid_input, types.StringTypes): + if isinstance(valid_input, (str,)): # we provide a text input newConfigRow1 = configTextRow1.clone() newConfigRow1.label = options.display_name(sect, opt) @@ -780,7 +780,7 @@ newConfigRow2 = configRow2.clone() currentValue = options[sect, opt] - if type(currentValue) in types.StringTypes: + if type(currentValue) in (str,): currentValue = currentValue.replace(',', ', ') newConfigRow2 = configTextRow2.clone() else: @@ -811,7 +811,7 @@ def onChangeopts(self, **parms): pmap = self.parm_ini_map - if parms.has_key("how"): + if "how" in parms: if parms["how"] == _("Save advanced options"): pmap = self.advanced_options_map elif parms["how"] == _("Save experimental options"): @@ -836,7 +836,7 @@ old_database_type = options["Storage", "persistent_use_database"] old_name = options["Storage", "persistent_storage_file"] - for name, value in parms.items(): + for name, value in list(parms.items()): sect, opt = name.split('_', 1) if (sect, opt) in pmap: options.set(sect, opt, value) @@ -920,9 +920,9 @@ # mumbo-jumbo to deal with the checkboxes # XXX This will break with more than 9 checkboxes # XXX A better solution is needed than this - for name, value in parms.items(): + for name, value in list(parms.items()): if name[-2:-1] == '-': - if parms.has_key(name[:-2]): + if name[:-2] in parms: parms[name[:-2]] += (value,) else: parms[name[:-2]] = (value,) @@ -948,7 +948,7 @@ valid_input = options.valid_input(sect, opt) html_key = sect + '_' + opt - if not parms.has_key(html_key): + if html_key not in parms: # This is a set of checkboxes where none are selected value = () entered_value = "None" @@ -969,7 +969,7 @@ errmsg += _('
  • \'%s\' is not a value valid for [%s] %s') % \ (entered_value, nice_section_name, options.display_name(sect, opt)) - if isinstance(valid_input, types.TupleType): + if isinstance(valid_input, tuple): errmsg += _('. Valid values are: ') for valid in valid_input: errmsg += str(valid) + ',' @@ -1071,7 +1071,7 @@ if hasattr(sys, "frozen"): temp_dir = win32api.GetTempPath() for name in ["SpamBayesService", "SpamBayesServer"]: - for i in xrange(3): + for i in range(3): pn = os.path.join(temp_dir, "%s%d.log" % (name, (i+1))) if os.path.exists(pn): @@ -1233,7 +1233,7 @@ """Given a message key (as seen in a Corpus), returns the timestamp for that message. This is the time that the message was received, not the Date header.""" - return long(key[:10]) + return int(key[:10]) def _getTimeRange(self, timestamp): """Given a unix timestamp, returns a 3-tuple: the start timestamp @@ -1319,7 +1319,7 @@ # Apart from any message headers, we may also wish to display # the message score, and the time the message was received. if options["html_ui", "display_score"]: - if isinstance(messageInfo.score, types.StringTypes): + if isinstance(messageInfo.score, (str,)): # Presumably either "?" or "Err". row.score_ = messageInfo.score else: @@ -1350,8 +1350,8 @@ def _contains(self, a, b, ignore_case=False): """Return true if substring b is part of string a.""" - assert isinstance(a, types.StringTypes) - assert isinstance(b, types.StringTypes) + assert isinstance(a, (str,)) + assert isinstance(b, (str,)) if ignore_case: a = a.lower() b = b.lower() @@ -1390,11 +1390,11 @@ # We'll go with the latter. score = "?" try: - part = typed_subpart_iterator(message, 'text', 'plain').next() + part = next(typed_subpart_iterator(message, 'text', 'plain')) text = part.get_payload() except StopIteration: try: - part = typed_subpart_iterator(message, 'text', 'html').next() + part = next(typed_subpart_iterator(message, 'text', 'html')) text = part.get_payload() text, unused = tokenizer.crack_html_style(text) text, unused = tokenizer.crack_html_comment(text) @@ -1414,7 +1414,7 @@ class _MessageInfo: pass messageInfo = _MessageInfo() - for headerName, headerValue in headers.items(): + for headerName, headerValue in list(headers.items()RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/UserInterface.py ): headerValue = self._trimHeader(headerValue, 45, True) setattr(messageInfo, "%sHeader" % (headerName,), headerValue) messageInfo.score = score + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/Tester.py 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 ../python3/spambayes/Tester.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/Tester.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/TestToolsUI.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/TestToolsUI.py --- ../python3/spambayes/TestToolsUI.py (original) +++ ../python3/spambayes/TestToolsUI.py (refactored) @@ -20,7 +20,7 @@ # The Python Software Foundation and is covered by the Python Software # Foundation license. -from __future__ import generators + __author__ = "Tony Meyer " __credits__ = "All the Spambayes folk." @@ -30,7 +30,7 @@ import cgi import glob import random -import StringIO +import io from spambayes import ProxyUI from spambayes import oe_mailbox @@ -165,8 +165,8 @@ # timcv.py, just capture the output that normally goes to stdout # or stderr and return it. cout, cerr = sys.stdout, sys.stderr - sys.stdout = StringIO.StringIO() - sys.stderr = StringIO.StringIO() + sys.stdout = io.StringIO() + sys.stderr = io.StringIO() if options["TestToolsUI", "source"] == "Standard test setup": # Source the test data from the 'standard' test setup, @@ -286,18 +286,18 @@ # XXX at some point. cout = sys.stdout cerr = sys.stderr - sys.stdout = StringIO.StringIO() - sys.stderr = StringIO.StringIO() - - interesting = filter(lambda line: line.startswith('-> '), ifile) + sys.stdout = io.StringIO() + sys.stderr = io.StringIO() + + interesting = [line for line in ifile if line.startswith('-> ')] ifile.close() - ofile = StringIO.StringIO() + ofile = io.StringIO() def dump(*stuff): msg = ' '.join(map(str, stuff)) - print msg - print >> ofile, msg + print(msg) + print(msg, file=ofile) ntests = nfn = nfp = 0 sumfnrate = sumfprate = 0.0 @@ -350,8 +350,8 @@ # XXX Stop being lazy and using the remapping cout/cerr cheat # XXX at some point. cout, cerr = sys.stdout, sys.stderr - sys.stdout = StringIO.StringIO() - sys.stderr = StringIO.StringIO() + sys.stdout = io.StringIO() + sys.stderr = io.StringIO() def suck(f): fns = [] @@ -364,7 +364,7 @@ while 1: line = get() if line.startswith('-> tested'): - print line, + print(line, end=' ') if line.find(' items; mean ') != -1: # -> Ham distribution for this pair: 1000 items; mean 0.05; sample sdev 0.68 # and later "sample " went away @@ -391,7 +391,7 @@ if len(line) == 0: continue # A line with an f-p rate and an f-n rate. - p, n = map(float, line.split()) + p, n = list(map(float, line.split())) fps.append(p) fns.append(n) @@ -439,16 +439,16 @@ alltags = "" for p1, p2 in zip(p1s, p2s): t = tag(p1, p2) - print " %5.3f %5.3f %s" % (p1, p2, t) + print(" %5.3f %5.3f %s" % (p1, p2, t)) alltags += t + " " - print + print() for t in "won", "tied", "lost": - print "%-4s %2d times" % (t, alltags.count(t)) - print + print("%-4s %2d times" % (t, alltags.count(t))) + print() def dumpdev(meandev1, meandev2): for m1, m2 in zip(meandev1, meandev2): - print mtag(m1, m2) + print(mtag(m1, m2)) (fp1, fn1, fptot1, fntot1, fpmean1, fnmean1, hamdev1, spamdev1, hamdevall1, spamdevall1) = suck(f1) @@ -456,42 +456,42 @@ (fp2, fn2, fptot2, fntot2, fpmean2, fnmean2, hamdev2, spamdev2, hamdevall2, spamdevall2) = suck(f2) - print - print "false positive percentages" + print() + print("false positive percentages") dump(fp1, fp2) - print "total unique fp went from", fptot1, "to", fptot2, tag(fptot1, fptot2) - print "mean fp % went from", fpmean1, "to", fpmeanRefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/TestToolsUI.py 2, tag(fpmean1, fpmean2) - - print - print "false negative percentages" + print("total unique fp went from", fptot1, "to", fptot2, tag(fptot1, fptot2)) + print("mean fp % went from", fpmean1, "to", fpmean2, tag(fpmean1, fpmean2)) + + print() + print("false negative percentages") dump(fn1, fn2) - print "total unique fn went from", fntot1, "to", fntot2, tag(fntot1, fntot2) - print "mean fn % went from", fnmean1, "to", fnmean2, tag(fnmean1, fnmean2) - - print + print("total unique fn went from", fntot1, "to", fntot2, tag(fntot1, fntot2)) + print("mean fn % went from", fnmean1, "to", fnmean2, tag(fnmean1, fnmean2)) + + print() if len(hamdev1) == len(hamdev2) and len(spamdev1) == len(spamdev2): - print "ham mean ham sdev" + print("ham mean ham sdev") dumpdev(hamdev1, hamdev2) - print - print "ham mean and sdev for all runs" + print() + print("ham mean and sdev for all runs") dumpdev([hamdevall1], [hamdevall2]) - print - print "spam mean spam sdev" + print() + print("spam mean spam sdev") dumpdev(spamdev1, spamdev2) - print - print "spam mean and sdev for all runs" + print() + print("spam mean and sdev for all runs") dumpdev([spamdevall1], [spamdevall2]) - print + print() diff1 = spamdevall1[0] - hamdevall1[0] diff2 = spamdevall2[0] - hamdevall2[0] - print "ham/spam mean difference: %2.2f %2.2f %+2.2f" % (diff1, + print("ham/spam mean difference: %2.2f %2.2f %+2.2f" % (diff1, diff2, - diff2 - diff1) + diff2 - diff1)) else: - print "[info about ham & spam means & sdevs not available in both files]" + print("[info about ham & spam means & sdevs not available in both files]") sys.stdout.seek(0) sys.stderr.seek(0) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/TestDriver.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/TestDriver.py --- ../python3/spambayes/TestDriver.py (original) +++ ../python3/spambayes/TestDriver.py (refactored) @@ -28,12 +28,12 @@ from spambayes.safepickle import pickle_write def printhist(tag, ham, spam, nbuckets=options["TestDriver", "nbuckets"]): - print - print "-> Ham scores for", tag, + print() + print("-> Ham scores for", tag, end=' ') ham.display(nbuckets) - print - print "-> Spam scores for", tag, + print() + print("-> Spam scores for", tag, end=' ') spam.display(nbuckets) if not options["TestDriver", "compute_best_cutoffs_from_histograms"]: @@ -70,7 +70,7 @@ for h in range(n+1): num_fn = stotal[h] fn_cost = num_fn * FNW - for s in xrange(h, n+1): + for s in range(h, n+1): # ham 0:h correct # h:s unsure # s: FP @@ -86,41 +86,41 @@ bests = [] bests.append((h, s)) - print '-> best cost for %s $%.2f' % (tag, best_cost) - print '-> per-fp cost $%.2f; per-fn cost $%.2f; per-unsure cost $%.2f' % ( - FPW, FNW, UNW) + print('-> best cost for %s $%.2f' % (tag, best_cost)) + print('-> per-fp cost $%.2f; per-fn cost $%.2f; per-unsure cost $%.2f' % ( + FPW, FNW, UNW)) if len(bests) > 1: - print '-> achieved at', len(bests), 'cutoff pairs' + print('-> achieved at', len(bests), 'cutoff pairs') info = [('smallest ham & spam cutoffs', bests[0]), ('largest ham & spam cutoffs', bests[-1])] else: info = [('achieved at ham & spam cutoffs', bests[0])] for tag, (h, s) in info: - print '-> %s %g & %g' % (tag, float(h)/n, float(s)/n) + print('-> %s %g & %g' % (tag, float(h)/n, float(s)/n)) num_fn = stotal[h] num_fp = htotal[-1] - htotal[s] num_unh = htotal[s] - htotal[h] num_uns = stotal[s] - stotal[h] - print '-> fp %d; fn %d; unsure ham %d; unsure spam %d' % ( - num_fp, num_fn, num_unh, num_uns) - print '-> fp rate %.3g%%; fn rate %.3g%%; unsure rate %.3g%%' % ( + print('-> fp %d; fn %d; unsure ham %d; unsure spam %d' % ( + num_fp, num_fn, num_unh, num_uns)) + print('-> fp rate %.3g%%; fn rate %.3g%%; unsure rate %.3g%%' % ( num_fp*1e2 / ham.n, num_fn*1e2 / spam.n, - (num_unh + num_uns)*1e2 / (ham.n + spam.n)) + (num_unh + num_uns)*1e2 / (ham.n + spam.n))) return float(bests[0][0])/n, float(bests[0][1])/n def printmsg(msg, prob, clues): - print msg.tag - print "prob =", prob + print(msg.tag) + print("prob =", prob) for clue in clues: - print "prob(%r) = %g" % clue - print + print("prob(%r) = %g" % clue) + print() guts = str(msg) if options["TestDriver", "show_charlimit"] > 0: guts = guts[:options["TestDriver", "show_charlimit"]] - print guts + print(guts) class Driver: @@ -148,18 +148,18 @@ self.trained_spam_hist = Hist() def train(self, ham, spam): - print "-> Training on", ham, "&", spam, "...", + print("-> Training on", ham, "&", spam, "...", end=' ') c = self.classifier nham, nspam = c.nham, c.nspam self.tester.train(ham, spam) - print c.nham - nham, "hams &", c.nspam- nspam, "spams" + print(c.nham - nham, "hams &", c.nspam- nspam, "spams") def untrain(self, ham, spam): - print "-> Forgetting", ham, "&", spam, "...", + print("-> Forgetting", ham, "&", spam, "...", end=' ') c = self.classifier nham, nspam = c.nham, c.nspam self.tester.untrain(ham, spam) - print nham - c.nham, "hams &", nspam - c.nspam, "spams" + print(nham - c.nham, "hams &", nspam - c.nspam, "spams") def finishtest(self): if options["TestDriver", "show_histograms"]: @@ -174,7 +174,7 @@ if options["TestDriver", "save_trained_pickles"]: fname = "%s%d.pik" % (options["TestDriver", "pickle_basename"], self.ntimes_finishtest_called) - print " saving pickle to", fname + print(" saving pickle to", fname) pickle_write(fname, self.classifier, 1) def alldone(self): @@ -192,27 +192,27 @@ nfp = len(self.falsepos) nfn = len(self.falseneg) nun = len(self.unsure) - print "-> all runs false positives:", nfp - print "-> all runs false negatives:", nfn - print "-> all runs unsure:", nun - print "-> all runs false positive %:", (nfp * 1e2 / nham) - print "-> all runs false negative %:", (nfn * 1e2 / nspam) - print "-> all runs unsure %:", (nun * 1e2 / (nham + nspam)) - print "-> all runs cost: $%.2f" % ( + print("-> all runs false positives:", nfp) + print("-> all runs false negatives:", nfn) + print("-> all runs unsure:", nun) + print("-> all runs false positive %:", (nfp * 1e2 / nham)) + print("-> all runs false negative %:", (nfn * 1e2 / nspam)) + print("-> all runs unsure %:", (nun * 1e2 / (nham + nspam))) + print("-> all runs cost: $%.2f" % ( nfp * options["TestDriver", "best_cutoff_fp_weight"] + nfn * options["TestDriver", "best_cutoff_fn_weight"] + - nun * options["TestDriver", "best_cutoff_unsure_weight"]) + nun * options["TestDriver", "best_cutoff_unsure_weight"])) # Set back the options for the delayed calculations in self.cc options["Categorization", "ham_cutoff"] = besthamcut options["Categorization", "spam_cutoff"] = bestspamcut - print self.cc + print(self.cc) if options["TestDriver", "save_histogram_pickles"]: for f, h in (('ham', self.global_ham_hist), ('spam', self.global_spam_hist)): fname = "%s_%shist.pik" % (options["TestDriver", "pickle_basename"], f) - print " saving %s histogram pickle to %s" % (f, fname) + print(" saving %s histogram pickle to %s" % (f, fname)) pickle_write(fname, h, 1) def test(self, ham, spam): @@ -226,8 +226,8 @@ local_ham_hist.add(prob * 100.0) self.cc.ham(prob) if lo <= prob <= hi: - print - print "Ham with prob =", prob + print() + print("Ham with prob =", prob) prob, clues = c.spamprob(msg, True) printmsg(msg, prob, clues) @@ -236,60 +236,60 @@ local_spam_hist.add(prob * 100.0) self.cc.spam(prob) if lo <= prob <= hi: - print - print "Spam with prob =", prob + print() + print("Spam with prob =", prob) prob, clues = c.spamprob(msg, True) printmsg(msg, prob, clues) t.reset_test_results() - print "-> Predicting", ham, "&", spam, "..." + print("-> Predicting", ham, "&", spam, "...") t.predict(spam, True, new_spam) t.predict(ham, False, new_ham) - print "-> tested", t.nham_tested, "hams &", t.nspam_tested, \ - "spams against", c.nham, "hams &", c.nspam, "spams" - - print "-> false positive %:", t.false_positive_rate() - print "-> false negative %:", t.false_negative_rate() - print "-> unsure %:", t.unsure_rate() - print "-> cost: $%.2f" % ( + print("-> tested", t.nham_tested, "hams &", t.nspam_tested, \ + "spams against", c.nham, "hams &", c.nspam, "spams") + + print("-> false positive %:", t.false_positive_rate()) + print("-> false negative %:", t.false_negative_rate()) + print("-> unsure %:", t.unsure_rate()) + print("-> coRefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/TestDriver.py st: $%.2f" % ( t.nham_wrong * options["TestDriver", "best_cutoff_fp_weight"] + t.nspam_wrong * options["TestDriver", "best_cutoff_fn_weight"] + (t.nham_unsure + t.nspam_unsure) * - options["TestDriver", "best_cutoff_unsure_weight"]) + options["TestDriver", "best_cutoff_unsure_weight"])) newfpos = set(t.false_positives()) - self.falsepos self.falsepos |= newfpos - print "-> %d new false positives" % len(newfpos) + print("-> %d new false positives" % len(newfpos)) if newfpos: - print " new fp:", [e.tag for e in newfpos] + print(" new fp:", [e.tag for e in newfpos]) if not options["TestDriver", "show_false_positives"]: newfpos = () for e in newfpos: - print '*' * 78 + print('*' * 78) prob, clues = c.spamprob(e, True) printmsg(e, prob, clues) newfneg = set(t.false_negatives()) - self.falseneg self.falseneg |= newfneg - print "-> %d new false negatives" % len(newfneg) + print("-> %d new false negatives" % len(newfneg)) if newfneg: - print " new fn:", [e.tag for e in newfneg] + print(" new fn:", [e.tag for e in newfneg]) if not options["TestDriver", "show_false_negatives"]: newfneg = () for e in newfneg: - print '*' * 78 + print('*' * 78) prob, clues = c.spamprob(e, True) printmsg(e, prob, clues) newunsure = set(t.unsures()) - self.unsure self.unsure |= newunsure - print "-> %d new unsure" % len(newunsure) + print("-> %d new unsure" % len(newunsure)) if newunsure: - print " new unsure:", [e.tag for e in newunsure] + print(" new unsure:", [e.tag for e in newunsure]) if not options["TestDriver", "show_unsure"]: newunsure = () for e in newunsure: - print '*' * 78 + print('*' * 78) prob, clues = c.spamprob(e, True) printmsg(e, prob, clues) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/Stats.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/Stats.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/Stats.py --- ../python3/spambayes/Stats.py (original) +++ ../python3/spambayes/Stats.py (refactored) @@ -148,7 +148,7 @@ """ self.ResetTotal() totals = self.totals - for msg_id in self.messageinfo_db.keys(): + for msg_id in list(self.messageinfo_db.keys()): # Skip the date and persistent statistics keys. if msg_id == STATS_START_KEY: continue @@ -399,4 +399,4 @@ if __name__ == '__main__': s = Stats() - print "\n".join(s.GetStats()) + print("\n".join(s.GetStats())) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/ServerUI.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/ServerUI.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/ServerUI.py --- ../python3/spambayes/ServerUI.py (original) +++ ../python3/spambayes/ServerUI.py (refactored) @@ -85,10 +85,10 @@ or restores the defaults.""" # Reload the options. self.state.bayes.store() - import Options + from . import Options Options.load_options() global options - from Options import options + from .Options import options # Recreate the state. self.state = self.state_recreator() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/PyMeldLite.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/PyMeldLite.py --- ../python3/spambayes/PyMeldLite.py (original) +++ ../python3/spambayes/PyMeldLite.py (refactored) @@ -312,12 +312,12 @@ def toText(self): """Generates the XML source for the node.""" text = ['<%s' % self.tag] - attributes = self.attributes.items() + attributes = list(self.attributes.items()) attributes.sort() for attribute, value in attributes: text.append(' %s="%s"' % (attribute, value)) childText = self.childrenToText() - if childText or nonSelfClose.has_key(self.tag): + if childText or self.tag in nonSelfClose: text.append('>') text.append(childText) text.append('' % self.tag) @@ -518,7 +518,7 @@ if self._pendingText: self._collapsePendingText() newAttributes = {} - for name, value in attributes.iteritems(): + for name, value in attributes.items(): newAttributes[str(name)] = self._unmungeEntities(str(value)) newNode = _ElementNode(self._currentNode, str(tag), newAttributes) self._currentNode.children.append(newNode) @@ -602,7 +602,7 @@ elif isinstance(source, _Node): # For internal use only. self._tree = source else: - raise TypeError, "Melds must be constructed from ASCII strings" + raise TypeError("Melds must be constructed from ASCII strings") def _findByID(self, node, name): """Returns the node with the given ID, or None.""" @@ -693,14 +693,14 @@ try: return self.__dict__[name] except KeyError: - raise AttributeError, name + raise AttributeError(name) node = self._findByID(self._tree, name) if node: return Meld(node, self._readonly) attribute = self._tree.getElementNode().attributes.get(name, _fail) if attribute is not _fail: return self._unquoteAttribute(attribute) - raise AttributeError, "No element or attribute named %r" % name + raise AttributeError("No element or attribute named %r" % name) def __setattr__(self, name, value): """`object. = value` sets the XML content of the element with an @@ -721,7 +721,7 @@ self.__dict__[name] = value return if self._readonly: - raise ReadOnlyError, READ_ONLY_MESSAGE + raise ReadOnlyError(READ_ONLY_MESSAGE) node = self._findByID(self._tree, name) if hasattr(value, '_tree') and value._tree is node: return # x.y = x.y @@ -751,9 +751,9 @@ del self.__dict__[name] return except KeyError: - raise AttributeError, name + raise AttributeError(name) if self._readonly: - raise ReadOnlyError, READ_ONLY_MESSAGE + raise ReadOnlyError(READ_ONLY_MESSAGE) node = self._findByID(self._tree, name) if node: node.parent.children.remove(node) @@ -763,7 +763,7 @@ if attribute is not _fail: del node.attributes[name] else: - raise AttributeError, "No element or attribute named %r" % name + raise AttributeError("No element or attribute named %r" % name) def __getitem__(self, name): """`object[]`, if this Meld contains an element with an `id` @@ -781,7 +781,7 @@ node = self._findByID(self._tree, name) if node: return Meld(node, self._readonly) - raise KeyError, "No element named %r" % name + raise KeyError("No element named %r" % name) def __setitem__(self, name, value): """`object[] = value` sets the XML content of the element with an @@ -798,14 +798,14 @@ """ if self._readonly: - raise ReadOnlyError, READ_ONLY_MESSAGE + raise ReadOnlyError(READ_ONLY_MESSAGE) node = self._findByID(self._tree, name) iRefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/PyMeldLite.py f hasattr(value, '_tree') and value._tree is node: return # x["y"] = x.y if node: self._replaceNodeContent(node, value) return - raise KeyError, "No element named %r" % name + raise KeyError("No element named %r" % name) def __delitem__(self, name): """Deletes the named element from the `Meld`: @@ -817,12 +817,12 @@ """ if self._readonly: - raise ReadOnlyError, READ_ONLY_MESSAGE + raise ReadOnlyError(READ_ONLY_MESSAGE) node = self._findByID(self._tree, name) if node: node.parent.children.remove(node) return - raise KeyError, "No element named %r" % name + raise KeyError("No element named %r" % name) def __iadd__(self, other): """`object1 += object2` appends a string or a clone of a Meld to @@ -831,7 +831,7 @@ rows). See *Real-world example* in the main documentation.""" if self._readonly: - raise ReadOnlyError, READ_ONLY_MESSAGE + raise ReadOnlyError(READ_ONLY_MESSAGE) if isinstance(other, Meld): nodes = [other._tree.getElementNode().clone()] else: @@ -894,8 +894,8 @@ returnObject = self.clone() if hasattr(values, 'values') and callable(values.values): # It's a dictionary. - keys = values.keys() - sequence = values.values() + keys = list(values.keys()) + sequence = list(values.values()) elif hasattr(values, '__getitem__') and \ not isinstance(values, str): # It's a sequence. @@ -922,17 +922,17 @@ sequence.reverse() while stack and sequence: element = stack.pop() - if element.attributes.has_key('id'): + if 'id' in element.attributes: self._replaceNodeContent(element, sequence.pop()) else: for index in range(len(element.children)): stack.append(element.children[-1 - index]) if sequence: - raise TypeError, "not all arguments converted" + raise TypeError("not all arguments converted") while stack: - if stack.pop().attributes.has_key('id'): - raise TypeError, "not enough arguments" + if 'id' in stack.pop().attributes: + raise TypeError("not enough arguments") return returnObject @@ -1223,7 +1223,7 @@ except ImportError: Coverage = False - import PyMeldLite + from . import PyMeldLite result = doctest.testmod(PyMeldLite) if Coverage: @@ -1234,4 +1234,4 @@ if __name__ == '__main__': failed, total = test() if failed == 0: # Else `doctest.testmod` prints the failures. - print "All %d tests passed." % total + print("All %d tests passed." % total) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/ProxyUI.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/ProxyUI.py --- ../python3/spambayes/ProxyUI.py (original) +++ ../python3/spambayes/ProxyUI.py (refactored) @@ -205,7 +205,7 @@ page or zero if there isn't one, likewise the start of the given page, and likewise the start of the next page.""" # Fetch all the message keys - allKeys = state.unknownCorpus.keys() + allKeys = list(state.unknownCorpus.keys()) # We have to sort here to split into days. # Later on, we also sort the messages that will be on the page # (by whatever column we wish). @@ -221,8 +221,8 @@ start, end, date = self._getTimeRange(timestamp) # Find the subset of the keys within this range. - startKeyIndex = bisect.bisect(allKeys, "%d" % long(start)) - endKeyIndex = bisect.bisect(allKeys, "%d" % long(end)) + startKeyIndex = bisect.bisect(allKeys, "%d" % int(start)) + endKeyIndex = bisect.bisect(allKeys, "%d" % int(end)) keys = allKeys[startKeyIndex:endKeyIndex] keys.reverse() @@ -246,7 +246,7 @@ numTrained = 0 numDeferred = 0 if params.get('go') != _('Refresh'): - for key, value in params.items(): + for key, value in list(params.items()): if key.startswith('classify:'): old_class, id = key.split(':')[1:3] if value == _('spam'): @@ -335,7 +335,7 @@ except ValueError: max_results = 1 key = params['find'] - if params.has_key('ignore_case'): + if 'ignore_case' in params: ic = True else: ic = False @@ -345,38 +345,38 @@ page = _("

    You must enter a search string.

    ") else: if len(keys) < max_results and \ - params.has_key('id'): + 'id' in params: if state.unknownCorpus.get(key): push((key, state.unknownCorpus)) elif state.hamCorpus.get(key): push((key, state.hamCorpus)) elif state.spamCorpus.get(key): push((key, state.spamCorpus)) - if params.has_key('subject') or params.has_key('body') or \ - params.has_key('headers'): + if 'subject' in params or 'body' in params or \ + 'headers' in params: # This is an expensive operation, so let the user know # that something is happening. self.write(_('

    Searching...

    ')) for corp in [state.unknownCorpus, state.hamCorpus, state.spamCorpus]: - for k in corp.keys(): + for k in list(corp.keys()): if len(keys) >= max_results: break msg = corp[k] msg.load() - if params.has_key('subject'): + if 'subject' in params: subj = str(msg['Subject']) if self._contains(subj, key, ic): push((k, corp)) - if params.has_key('body'): + if 'body' in params: # For [ 906581 ] Assertion failed in search # subject. Can the headers be a non-string? msg_body = msg.as_string() msg_body = msg_body[msg_body.index('\r\n\r\n'):] if self._contains(msg_body, key, ic): push((k, corp)) - if params.has_key('headers'): - for nm, val in msg.items(): + if 'headers' in params: + for nm, val RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/ProxyUI.py in list(msg.items()): # For [ 906581 ] Assertion failed in # search subject. Can the headers be # a non-string? @@ -416,7 +416,7 @@ } invalid_keys = [] for key in keys: - if isinstance(key, types.TupleType): + if isinstance(key, tuple): key, sourceCorpus = key else: sourceCorpus = state.unknownCorpus @@ -560,10 +560,10 @@ restores the defaults.""" # Re-read the options. global state - import Options + from . import Options Options.load_options() global options - from Options import options + from .Options import options # Recreate the state. state = self.state_recreator() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/OptionsClass.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/OptionsClass.py --- ../python3/spambayes/OptionsClass.py (original) +++ ../python3/spambayes/OptionsClass.py (refactored) @@ -81,9 +81,9 @@ from tempfile import TemporaryFile try: - import cStringIO as StringIO + import io as StringIO except ImportError: - import StringIO + import io import re import types @@ -100,7 +100,7 @@ 'OCRAD_CHARSET', ] -MultiContainerTypes = (types.TupleType, types.ListType) +MultiContainerTypes = (tuple, list) class Option(object): def __init__(self, name, nice_name="", default=None, @@ -163,7 +163,7 @@ def is_valid_single(self, value): '''Return True iff value is a valid value for this option. Use when multiple values are not allowed.''' - if type(self.allowed_values) == types.TupleType: + if type(self.allowed_values) == tuple: if value in self.allowed_values: return True else: @@ -197,7 +197,7 @@ try: r = re.compile(self.allowed_values) except: - print >> sys.stderr, self.allowed_values + print(self.allowed_values, file=sys.stderr) raise s = str(value) i = 0 @@ -238,7 +238,7 @@ strval.append("\t%s" % \ ", ".join([str(s) for s in self.valid_input()])) default = self.default() - if isinstance(default, types.TupleType): + if isinstance(default, tuple): default = ", ".join([str(s) for s in default]) else: default = str(default) @@ -261,7 +261,7 @@ if svt == type(value): # already the correct type return value - if type(self.allowed_values) == types.TupleType and \ + if type(self.allowed_values) == tuple and \ value in self.allowed_values: # already correct type return value @@ -270,44 +270,44 @@ return True elif str(value) == "False" or value == 0: return False - raise TypeError, self.name + " must be True or False" + raise TypeError(self.name + " must be True or False") if self.multiple_values_allowed(): # This will fall apart if the allowed_value is a tuple, # but not a homogenous one... - if isinstance(self.allowed_values, types.StringTypes): + if isinstance(self.allowed_values, (str,)): vals = list(self._split_values(value)) else: - if isinstance(value, types.TupleType): + if isinstance(value, tuple): vals = list(value) else: vals = value.split() if len(self.default_value) > 0: to_type = type(self.default_value[0]) else: - to_type = types.StringType + to_type = bytes for i in range(0, len(vals)): vals[i] = self._convert(vals[i], to_type) return tuple(vals) else: return self._convert(value, svt) - raise TypeError, self.name + " has an invalid type." + raise TypeError(self.name + " has an invalid type.") def _convert(self, value, to_type): '''Convert an int, float or string to the specified type.''' if to_type == type(value): # already the correct type return value - if to_type == types.IntType: + if to_type == int: return locale.atoi(value) - if to_type == types.FloatType: + if to_type == float: return locale.atof(value) - if to_type in types.StringTypes: + if to_type in (str,): return str(value) - raise TypeError, "Invalid type." + raise TypeError("Invalid type.") def unconvert(self): '''Convert value from the appropriate type to a string.''' - if type(self.value) in types.StringTypes: + if type(self.value) in (str,): # nothing to do return self.value if self.is_boolean(): @@ -316,12 +316,12 @@ return "True" else: return "False" - if type(self.value) == types.TupleType: + if type(self.value) == tuple: if len(self.value) == 0: return "" if len(self.value) == 1: v = self.value[0] - if type(v) == types.FloatType: + if type(v) == float: return locale.str(self.value[0]) return str(v) # We need to separate out the items @@ -336,7 +336,7 @@ # the end so that this will crash and die if none of # the separators works . if self.delimiter is None: - if type(self.allowed_values) == types.TupleType: + if type(self.allowed_values) == tuple: self.delimiter = ' ' else: v0 = self.value[0] @@ -354,7 +354,7 @@ # cache this so we don't always need to do the above self.delimiter = sep for v in self.value: - if type(v) == types.FloatType: + if type(v) == float: v = locale.str(v) else: v = str(v) @@ -373,9 +373,9 @@ # considered valid input (and 0 and 1 don't look as nice) # So, just for the 2.2 people, we have this helper function try: - if type(self.allowed_values) == types.TupleType and \ + if type(self.allowed_values) == tuple and \ len(self.allowed_values) > 0 and \ - type(self.allowed_values[0]) == types.BooleanType: + type(self.allowed_values[0]) == bool: return True return False except AttributeError: @@ -423,8 +423,8 @@ # doesn't exist, so create it - all the changed options will # be added to it if self.verbose: - print >> sys.stderr, "Creating new configuration file", - print >> sys.stderr, filename + print("Creating new configuration file", end=' ', file=sys.stderr) + print(filename, file=sys.stderr) f = file(filename, "w") f.close() f = file(filename, "r") @@ -474,7 +474,7 @@ if optval == '""': optval = '' optname = optname.rstrip().lower() - if self._options.has_key((sectname, optname)): + if (sectname, optname) in self._options: out.write(optname) out.write(vi) newval = self.unconvert(sectname, optname) @@ -514,7 +514,7 @@ def load_defaults(self, defaults): '''Load default values (stored in Options.py).''' - for section, opts in defaults.items(): + for section, opts in list(defaults.items()): for opt in opts: # If first item of the tuple is a sub-class of Option, then # instantiate that (with the rest as args). Otherwise, @@ -539,7 +539,7 @@ not persist over sessions. ''' self.restore_point = {} - for key, opt_obj in self._options.iteritems(): + for key, opt_obj in self._options.items(): self.restore_point[key] = opt_obj.get() def revert_to_restore_point(self): @@ -550,7 +550,7 @@ effect. If new options have been added since set_restore_point, their values are not effected. ''' - for key, value in self.restore_point.iteritems(): + for key, value in self.restore_point.items(): self._options[key].set(value) def merge_files(self, file_list): @@ -562,19 +562,19 @@ self.set(section, option, value) def merge_file(self, filename): - import ConfigParser - c = ConfigParser.ConfigParser() + import configparser + c = configparser.ConfigParser() c.read(filename) for sect in c.sections(): for opt in c.options(sect): value = c.get(sect, opt) section = sect option = opt - if not self._options.has_key((section, option)): + if (section, option) not in self._options: if option.startswith('x-'): # try setting option without the x- prefix option = option[2:] - if self._options.has_key((section, option)): + if (section, option) in self._options: self.convert_and_set(section, option, value) # not an error if an X- option is missing else: @@ -582,14 +582,14 @@ # going the other way, if the option has been # deprecated, set its x-prefixed version and # emit a warning - if self._options.has_key((section, option)): + if (section, option) in self._options: self.convert_and_set(section, option, value) self._report_deprecated_error(section, opt) else: - print >> sys.stderr, ( + print(( "warning: Invalid option %s in" " section %s in file %s" % - (opt, sect, filename)) + (opt, sect, filename)), file=sys.stderr) else: self.convert_and_set(section, option, value) @@ -630,13 +630,13 @@ def get_option(self, sect, opt): '''Get an option.''' - if self.conversion_table.has_key((sect, opt)): + if (sect, opt) in self.conversion_table: sect, opt = self.conversion_table[sect, opt] return self._options[sect, opt.lower()] def get(self, sect, opt): '''Get an option value.''' - if self.conversion_table.has_key((sect, opt.lower())): + if (sect, opt.lower()) in self.conversion_table: sect, opt = self.conversion_table[sect, opt.lower()] return self.get_option(sect, opt.lower()).get() @@ -645,7 +645,7 @@ def set(self, sect, opt, val=None): '''Set an option.''' - if self.conversion_table.has_key((sect, opt.lower())): + if (sect, opt.lower()) in self.conversion_table: sect, opt = self.conversion_table[sect, opt.lower()] # Annoyingly, we have a special case. The notate_to and @@ -667,9 +667,9 @@ if self.is_valid(sect, opt, val): self._options[sect, opt.lower()].set(val) else: - print >> sys.stderr, ("Attempted to set [%s] %s with " + print(("Attempted to set [%s] %s with " "invalid value %s (%s)" % - (sect, opt.lower(), val, type(val))) + (sect, opt.lower(), val, type(val))), file=sys.stderr) def set_from_cmdline(self, arg, stream=None): """Set option from colon-separated sect:opt:val string. @@ -681,7 +681,7 @@ opt = opt.lower() try: val = self.convert(sect, opt, val) - except (KeyError, TypeError), msg: + except (KeyError, TypeError) as msg: if stream is not None: self._report_option_error(sect, opt, val, stream, msg) else: @@ -690,9 +690,9 @@ self.set(sect, opt, val) def _report_deprecated_error(self, sect, opt): - print >> sys.stderr, ( + print(( "Warning: option %s in section %s is deprecated" % - (opt, sect)) + (opt, sect)), file=sys.stderr) def _report_option_error(self, sect, opt, val, stream, msg): RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/OptionsClass.py if sect in self.sections(): @@ -700,21 +700,21 @@ vopts = [v.split(']', 1)[1] for v in vopts if v.startswith('[%s]'%sect)] if opt not in vopts: - print >> stream, "Invalid option:", opt - print >> stream, "Valid options for", sect, "are:" + print("Invalid option:", opt, file=stream) + print("Valid options for", sect, "are:", file=stream) vopts = ', '.join(vopts) vopts = wrap(vopts) for line in vopts: - print >> stream, ' ', line + print(' ', line, file=stream) else: - print >> stream, "Invalid value:", msg - else: - print >> stream, "Invalid section:", sect - print >> stream, "Valid sections are:" + print("Invalid value:", msg, file=stream) + else: + print("Invalid section:", sect, file=stream) + print("Valid sections are:", file=stream) vsects = ', '.join(self.sections()) vsects = wrap(vsects) for line in vsects: - print >> stream, ' ', line + print(' ', line, file=stream) def __setitem__(self, key, value): self.set(key[0], key[1], value) @@ -722,7 +722,7 @@ def sections(self): '''Return an alphabetical list of all the sections.''' all = [] - for sect, opt in self._options.keys(): + for sect, opt in list(self._options.keys()): if sect not in all: all.append(sect) all.sort() @@ -731,7 +731,7 @@ def options_in_section(self, section): '''Return an alphabetical list of all the options in this section.''' all = [] - for sect, opt in self._options.keys(): + for sect, opt in list(self._options.keys()): if sect == section: all.append(opt) all.sort() @@ -741,7 +741,7 @@ '''Return an alphabetical list of all the options, optionally prefixed with [section_name]''' all = [] - for sect, opt in self._options.keys(): + for sect, opt in list(self._options.keys()): if prepend_section_name: all.append('[' + sect + ']' + opt) else: @@ -751,8 +751,8 @@ def display(self, add_comments=False): '''Display options in a config file form.''' - output = StringIO.StringIO() - keys = self._options.keys() + output = io.StringIO() + keys = list(self._options.keys()) keys.sort() currentSection = None for sect, opt in keys: @@ -777,7 +777,7 @@ # Given that the Options class is no longer as nice looking # as it once was, this returns all the information, i.e. # the doc, default values, and so on - output = StringIO.StringIO() + output = io.StringIO() # when section and option are both specified, this # is nothing more than a call to as_nice_string @@ -786,7 +786,7 @@ output.write(getattr(opt, formatter)(section)) return output.getvalue() - all = self._options.keys() + all = list(self._options.keys()) all.sort() for sect, opt in all: if section is not None and sect != section: @@ -834,7 +834,7 @@ # where number represents the number of CHAR8 octets # but this is too complex for us at the moment. IMAP_ASTRING = [] -for _i in xrange(1, 128): +for _i in range(1, 128): if chr(_i) not in ['"', '\\', '\n', '\r']: IMAP_ASTRING.append(chr(_i)) del _i + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/Options.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/Options.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/Options.py --- ../python3/spambayes/Options.py (original) +++ ../python3/spambayes/Options.py (refactored) @@ -1360,11 +1360,11 @@ # in the current directory, and no win32 extensions installed # to locate the "user" directory - seeing things are so lamely # setup, it is worth printing a warning - print >> sys.stderr, "NOTE: We can not locate an INI file " \ + print("NOTE: We can not locate an INI file " \ "for SpamBayes, and the Python for Windows extensions " \ "are not installed, meaning we can't locate your " \ "'user' directory. An empty configuration file at " \ - "'%s' will be used." % optionsPathname.encode('mbcs') + "'%s' will be used." % optionsPathname.encode('mbcs'), file=sys.stderr) else: windowsUserDirectory = os.path.join( shell.SHGetFolderPath(0,shellcon.CSIDL_APPDATA,0,0), + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/MoinSecurityPolicy.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/MoinSecurityPolicy.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/MoinSecurityPolicy.py --- ../python3/spambayes/MoinSecurityPolicy.py (original) +++ ../python3/spambayes/MoinSecurityPolicy.py (refactored) @@ -38,7 +38,7 @@ import os import atexit -import urlparse +import urllib.parse from MoinMoin.security import Permissions from MoinMoin.wikidicts import Group @@ -80,7 +80,7 @@ self.open_spamdb(request) nham = nspam = 0 for url in Group(request, "HamPages").members(): - scheme, netloc, path, params, query, frag = urlparse.urlparse(url) + scheme, netloc, path, params, query, frag = urllib.parse.urlparse(url) rev = 0 for pair in query.split("&"): key, val = pair.split("=") @@ -91,7 +91,7 @@ self.sbayes.train_ham(pg.get_raw_body()) nham += 1 for url in Group(request, "SpamPages").members(): - scheme, netloc, path, params, query, frag = urlparse.urlparse(url) + scheme, netloc, path, params, query, frag = urllib.parse.urlparse(url) rev = 0 for pair in query.split("&"): key, val = pair.split("=") @@ -143,10 +143,10 @@ action="SAVE/REVERT", extra=revstr) pg.clean_acl_cache() - except pg.SaveError, msg: + except pg.SaveError as msg: pass # msg contain a unicode string - savemsg = unicode(msg) + savemsg = str(msg) request.reset() pg.send_page(request, msg=savemsg) return None + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/ImapUI.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/ImapUI.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/ImapUI.py --- ../python3/spambayes/ImapUI.py (original) +++ ../python3/spambayes/ImapUI.py (refactored) @@ -169,10 +169,10 @@ """Called by the config page when the user saves some new options, or restores the defaults.""" # Re-read the options. - import Options + from . import Options Options.load_options() global options - from Options import options + from .Options import options self.change_db() def onSave(self, how): @@ -214,7 +214,7 @@ def _login_to_imap(self): new_imaps = [] - for i in xrange(len(self.imaps)): + for i in range(len(self.imaps)): imap = self.imaps[i] imap_logged_in = self._login_to_imap_server(imap, i) if imap_logged_in: @@ -267,7 +267,7 @@ _("Please check username/password details.")) self.write(content) return None - except LoginFailure, e: + except LoginFailure as e: content = self._buildBox(_("Error"), None, str(e)) self.write(content) return None @@ -310,7 +310,7 @@ parms["how"] == _("Save Filter Folders"): del parms["how"] self.parm_ini_map = () - for opt, value in parms.items(): + for opt, value in list(parms.items()): del parms[opt] # Under strange circumstances this could break, # so if we can think of a better way to do this, @@ -319,7 +319,7 @@ opt = opt[:-len(value)] self.parm_ini_map += ("imap", opt), key = "imap_" + opt - if parms.has_key(key): + if key in parms: parms[key] += ',' + value else: parms[key] = value + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/ImageStripper.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/ImageStripper.py --- ../python3/spambayes/ImageStripper.py (original) +++ ../python3/spambayes/ImageStripper.py (refactored) @@ -2,7 +2,7 @@ This is the place where we try and discover information buried in images. """ -from __future__ import division + import sys import os @@ -10,9 +10,9 @@ import math import atexit try: - import cStringIO as StringIO + import io as StringIO except ImportError: - import StringIO + import io try: from PIL import Image, ImageSequence @@ -44,9 +44,9 @@ if sys.platform == "win32": return True info = os.stat(prog) - return (info.st_uid == os.getuid() and (info.st_mode & 0100) or - info.st_gid == os.getgid() and (info.st_mode & 0010) or - info.st_mode & 0001) + return (info.st_uid == os.getuid() and (info.st_mode & 0o100) or + info.st_gid == os.getgid() and (info.st_mode & 0o010) or + info.st_mode & 0o001) def find_program(prog): path = os.environ.get("PATH", "").split(os.pathsep) @@ -125,7 +125,7 @@ # what garbage they will call a GIF image to entice you to open # it? try: - image = Image.open(StringIO.StringIO(bytes)) + image = Image.open(io.StringIO(bytes)) image.load() except: # Any error whatsoever is reason for not looking further at @@ -230,7 +230,7 @@ program = property(get_program) def get_command_line(self, pnmfile): - raise NotImplementedError, "base classes must override" + raise NotImplementedError("base classes must override") def extract_text(self, pnmfile): # Generically reads output from stdout. @@ -240,7 +240,7 @@ ret = ocr.read() exit_code = ocr.close() if exit_code: - raise SystemError, ("%s failed with exit code %s" % + raise SystemError("%s failed with exit code %s" % (self.engine_name, exit_code)) return ret @@ -310,8 +310,8 @@ if self.engine.program: try: ctext = self.engine.extract_text(pnmfile).lower() - except SystemError, msg: - print >> sys.stderr, msg + except SystemError as msg: + print(msg, file=sys.stderr) preserve = True ctext = "" else: @@ -319,9 +319,8 @@ # is enabled and we have no program, its OK to spew lots # of warnings - they should either disable OCR (it is by # default), or fix their config. - print >> sys.stderr, \ - "No OCR program '%s' available - can't get text!" \ - % (self.engine.engine_name,) + print("No OCR program '%s' available - can't get text!" \ + % (self.engine.engine_name,), file=sys.stderr) ctext = "" ctokens = set() if not ctext.strip(): @@ -350,8 +349,8 @@ self.engine = get_engine(engine_name) if self.engine is None: # We only get here if explicitly enabled - spewing msgs is ok. - print >> sys.stderr, "invalid engine name '%s' - OCR disabled" \ - % (engine_name,) + print("invalid engine name '%s' - OCR disabled" \ + % (engine_name,), file=sys.stderr) return "", set() if not parts: @@ -371,12 +370,12 @@ def close(self): if options["globals", "verbose"]: - print >> sys.stderr, "saving", len(self.cache), - print >> sys.stderr, "items to", self.cachefile, + print("saving", len(self.cache), end=' ', file=sys.stderr) + print("items to", self.cachefile, end=' ', file=sys.stderr) if self.hits + self.misses: - print >> sys.stderr, "%.2f%% hit rate" % \ - RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/ImageStripper.py (100 * self.hits / (self.hits + self.misses)), - print >> sys.stderr + print("%.2f%% hit rate" % \ + (100 * self.hits / (self.hits + self.misses)), end=' ', file=sys.stderr) + print(file=sys.stderr) pickle_write(self.cachefile, self.cache) _cachefile = options["Tokenizer", "crack_image_cache"] + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/Histogram.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/Histogram.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/Histogram.py --- ../python3/spambayes/Histogram.py (original) +++ ../python3/spambayes/Histogram.py (refactored) @@ -140,12 +140,12 @@ n = self.n if n == 0: return - print "%d items; mean %.2f; sdev %.2f" % (n, self.mean, self.sdev) - print "-> min %g; median %g; max %g" % (self.min, + print("%d items; mean %.2f; sdev %.2f" % (n, self.mean, self.sdev)) + print("-> min %g; median %g; max %g" % (self.min, self.median, - self.max) + self.max)) pcts = ['%g%% %g' % x for x in self.pct] - print "-> percentiles:", '; '.join(pcts) + print("-> percentiles:", '; '.join(pcts)) lo, hi = self.get_lo_hi() if lo > hi: @@ -158,7 +158,7 @@ hunit, r = divmod(biggest, WIDTH) if r: hunit += 1 - print "* =", hunit, "items" + print("* =", hunit, "items") # We need ndigits decimal digits to display the largest bucket count. ndigits = len(str(biggest)) @@ -179,5 +179,5 @@ bucketwidth = self.get_bucketwidth() for i in range(nbuckets): n = self.buckets[i] - print format % (lo + i * bucketwidth, n), - print '*' * ((n + hunit - 1) // hunit) + print(format % (lo + i * bucketwidth, n), end=' ') + print('*' * ((n + hunit - 1) // hunit)) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/FileCorpus.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/FileCorpus.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/FileCorpus.py --- ../python3/spambayes/FileCorpus.py (original) +++ ../python3/spambayes/FileCorpus.py (refactored) @@ -39,7 +39,7 @@ # The Python Software Foundation and is covered by the Python Software # Foundation license. -from __future__ import generators + __author__ = "Tim Stone " __credits__ = "Richie Hindle, Tim Peters, all the spambayes contributors." @@ -92,7 +92,7 @@ raise ValueError if options["globals", "verbose"]: - print 'adding', message.key(), 'to corpus' + print('adding', message.key(), 'to corpus') message.directory = self.directory message.store() @@ -103,7 +103,7 @@ def removeMessage(self, message, observer_flags=0): '''Remove a Message from this corpus''' if options["globals", "verbose"]: - print 'removing', message.key(), 'from corpus' + print('removing', message.key(), 'from corpus') message.remove() @@ -121,7 +121,7 @@ s = '' if options["globals", "verbose"] and nummsgs > 0: - lst = ', ' + '%s' % (self.keys()) + lst = ', ' + '%s' % (list(self.keys())) else: lst = '' @@ -202,7 +202,7 @@ "Must set filename before using FileMessage instances." if options["globals", "verbose"]: - print 'loading', self.file_name + print('loading', self.file_name) pn = self.pathname() @@ -210,7 +210,7 @@ try: self._msg = email.message_from_string(\ fp.read(), _class = self.message_class) - except IOError, e: + except IOError as e: if str(e) == 'Not a gzipped file' or \ str(e) == 'Unknown compression method': # We've probably got both gzipped messages and @@ -234,7 +234,7 @@ "Must set filename before using FileMessage instances." if options["globals", "verbose"]: - print 'storing', self.file_name + print('storing', self.file_name) fp = open(self.pathname(), 'wb') fp.write(self.as_string()) @@ -243,14 +243,14 @@ def remove(self): '''Message hara-kiri''' if options["globals", "verbose"]: - print 'physically deleting file', self.pathname() + print('physically deleting file', self.pathname()) try: os.unlink(self.pathname()) except OSError: # The file probably isn't there anymore. Maybe a virus # protection program got there first? if options["globals", "verbose"]: - print 'file', self.pathname(), 'can not be deleted' + print('file', self.pathname(), 'can not be deleted') def name(self): '''A unique name for the message''' @@ -326,7 +326,7 @@ "Must set filename before using FileMessage instances." if options["globals", "verbose"]: - print 'storing', self.file_name + print('storing', self.file_name) pn = self.pathname() gz = gzip.open(pn, 'wb') + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/Dibbler.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/Dibbler.py --- ../python3/spambayes/Dibbler.py (original) +++ ../python3/spambayes/Dibbler.py (refactored) @@ -165,12 +165,12 @@ __credits__ = "Tim Stone" try: - import cStringIO as StringIO + import io as StringIO except ImportError: - import StringIO + import io import sys, re, time, traceback, base64 -import socket, cgi, urlparse, webbrowser +import socket, cgi, urllib.parse, webbrowser try: "".rstrip("abc") @@ -233,7 +233,7 @@ def pop(self, key): return self._map.pop(key) def keys(self): - return self._map.keys() + return list(self._map.keys()) def __len__(self): return len(self._map) @@ -283,7 +283,7 @@ try: self.bind(port) except socket.error: - print >> sys.stderr, "port", port, "in use" + print("port", port, "in use", file=sys.stderr) raise self.listen(5) @@ -403,7 +403,7 @@ # Parse the URL, and deal with POST vs. GET requests. method = method.upper() - unused, unused, path, unused, query, unused = urlparse.urlparse(url) + unused, unused, path, unused, query, unused = urllib.parse.urlparse(url) cgiParams = cgi.parse_qs(query, keep_blank_values=True) if self.get_terminator() == '\r\n\r\n' and method == 'POST': # We need to read the body - set a numeric async_chat terminator @@ -425,7 +425,7 @@ contentType, pdict = cgi.parse_header(contentTypeHeader) if contentType == 'multipart/form-data': # multipart/form-data - probably a file upload. - bodyFile = StringIO.StringIO(body) + bodyFile = io.StringIO(body) cgiParams.update(cgi.parse_multipart(bodyFile, pdict)) else: # A normal x-www-form-urlencoded. @@ -433,7 +433,7 @@ # Convert the cgi params into a simple dictionary. params = {} - for name, value in cgiParams.iteritems(): + for name, value in cgiParams.items(): params[name] = value[0] # Parse the headers. @@ -457,7 +457,7 @@ elif authenticationMode == HTTPServer.DIGEST_AUTHENTICATION: authResult = self._digestAuthentication(login, method) else: - print >> sys.stderr, "Unknown mode: %s" % authenticationMode + print("Unknown mode: %s" % authenticationMode, file=sys.stderr) if not authResult: self.writeUnauthorizedAccess(serverAuthMode) @@ -490,7 +490,7 @@ # Close all the listeners so that no further incoming # connections appear. contextMap = self._context._map - for dispatcher in contextMap.values(): + for dispatcher in list(contextMap.values()): if isinstance(dispatcher, Listener): dispatcher.close() @@ -502,7 +502,7 @@ def isProtected(dispatcher): return not isinstance(dispatcher, _HTTPHandler) - while len(filter(isProtected, contextMap.values())) > 0: + while len(list(filter(isProtected, list(contextMap.values())))) > 0: asyncore.poll(timeout=1, map=contextMap) raise SystemExit @@ -536,7 +536,7 @@ headers.append("Connection: close") headers.append('Content-Type: %s; charset="utf-8"' % contentType) headers.append("Date: %s" % httpNow) - for name, value in extraHeaders.items(): + for name, value in list(extraHeaders.items()): headers.append("%s: %s" % (name, value)) headers.append("") headers.append("") @@ -657,7 +657,7 @@ HA2 = md5(A2).hexdigest() unhashedDigest = "" - if options.has_key("qop"): + if "qop" in options: # IE 6.0 doesn't give nc back correctly? RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/Dibbler.py if not options["nc"]: options["nc"] = "00000001" @@ -730,8 +730,8 @@ try: url = "http://localhost:%d/" % context._HTTPPort webbrowser.open_new(url) - except webbrowser.Error, e: - print "\n%s.\nPlease point your web browser at %s." % (e, url) + except webbrowser.Error as e: + print("\n%s.\nPlease point your web browser at %s." % (e, url)) asyncore.loop(map=context._map) @@ -769,27 +769,27 @@ def test(): """Run a self-test.""" # Run the calendar server in a separate thread. - import threading, urllib + import threading, urllib.request, urllib.parse, urllib.error testServerReady = threading.Event() threading.Thread(target=runTestServer, args=(testServerReady,)).start() testServerReady.wait() # Connect to the server and ask for a calendar. - page = urllib.urlopen("http://localhost:8888/?year=2003").read() + page = urllib.request.urlopen("http://localhost:8888/?year=2003").read() if page.find('January') != -1: - print "Self test passed." + print("Self test passed.") else: - print "Self-test failed!" + print("Self-test failed!") # Wait for a key while the user plays with his browser. - raw_input("Press any key to shut down the application server...") + input("Press any key to shut down the application server...") # Ask the server to shut down. - page = urllib.urlopen("http://localhost:8888/shutdown").read() + page = urllib.request.urlopen("http://localhost:8888/shutdown").read() if page.find('OK') != -1: - print "Shutdown OK." + print("Shutdown OK.") else: - print "Shutdown failed!" + print("Shutdown failed!") if __name__ == '__main__': test() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/CostCounter.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/CostCounter.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/CostCounter.py --- ../python3/spambayes/CostCounter.py (original) +++ ../python3/spambayes/CostCounter.py (refactored) @@ -188,4 +188,4 @@ cc.spam(0.5) options["Categorization", "spam_cutoff"] = 0.7 options["Categorization", "ham_cutoff"] = 0.4 - print cc + print(cc) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/Corpus.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/Corpus.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/Corpus.py --- ../python3/spambayes/Corpus.py (original) +++ ../python3/spambayes/Corpus.py (refactored) @@ -76,7 +76,7 @@ # The Python Software Foundation and is covered by the Python Software # Foundation license. -from __future__ import generators + __author__ = "Tim Stone " __credits__ = "Richie Hindle, Tim Peters, all the spambayes contributors." @@ -113,7 +113,7 @@ '''Add a Message to this corpus''' if options["globals", "verbose"]: - print 'adding message %s to corpus' % (message.key()) + print('adding message %s to corpus' % (message.key())) self.cacheMessage(message) @@ -129,7 +129,7 @@ '''Remove a Message from this corpus''' key = message.key() if options["globals", "verbose"]: - print 'removing message %s from corpus' % (key,) + print('removing message %s from corpus' % (key,)) self.unCacheMessage(key) del self.msgs[key] @@ -144,7 +144,7 @@ key = message.key() if options["globals", "verbose"]: - print 'placing %s in corpus cache' % (key,) + print('placing %s in corpus cache' % (key,)) self.msgs[key] = message @@ -161,7 +161,7 @@ # This method should probably not be overridden if options["globals", "verbose"]: - print 'Flushing %s from corpus cache' % (key,) + print('Flushing %s from corpus cache' % (key,)) try: ki = self.keysInMemory.index(key) @@ -202,14 +202,14 @@ def keys(self): '''Message keys in the Corpus''' - return self.msgs.keys() + return list(self.msgs.keys()) def __contains__(self, other): - return other in self.msgs.values() + return other in list(self.msgs.values()) def __iter__(self): '''Corpus is iterable''' - for key in self.keys(): + for key in list(self.keys()): yield self[key] def __str__(self): @@ -248,12 +248,12 @@ return self.expiry_due = time.time() + self.expireBefore - for key in self.keys()[:]: + for key in list(self.keys())[:]: msg = self[key] timestamp = msg.createTimestamp() if timestamp < time.time() - self.expireBefore: if options["globals", "verbose"]: - print 'message %s has expired' % (msg.key(),) + print('message %s has expired' % (msg.key(),)) from spambayes.storage import NO_TRAINING_FLAG self.removeMessage(msg, observer_flags=NO_TRAINING_FLAG) elif timestamp + self.expireBefore < self.expiry_due: @@ -268,4 +268,4 @@ if __name__ == '__main__': - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/CoreUI.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/spambayes/CoreUI.py --- ../python3/spambayes/CoreUI.py (original) +++ ../python3/spambayes/CoreUI.py (refactored) @@ -190,7 +190,7 @@ page or zero if there isn't one, likewise the start of the given page, and likewise the start of the next page.""" # Fetch all the message keys - allKeys = self.state.unknownCorpus.keys() + allKeys = list(self.state.unknownCorpus.keys()) # We have to sort here to split into days. # Later on, we also sort the messages that will be on the page # (by whatever column we wish). @@ -206,8 +206,8 @@ start, end, date = self._getTimeRange(timestamp) # Find the subset of the keys within this range. - startKeyIndex = bisect.bisect(allKeys, "%d" % long(start)) - endKeyIndex = bisect.bisect(allKeys, "%d" % long(end)) + startKeyIndex = bisect.bisect(allKeys, "%d" % int(start)) + endKeyIndex = bisect.bisect(allKeys, "%d" % int(end)) keys = allKeys[startKeyIndex:endKeyIndex] keys.reverse() @@ -231,7 +231,7 @@ numTrained = 0 numDeferred = 0 if params.get('go') != _('Refresh'): - for key, value in params.items(): + for key, value in list(params.items()): if key.startswith('classify:'): old_class, id = key.split(':')[1:3] if value == _('spam'): @@ -320,7 +320,7 @@ except ValueError: max_results = 1 key = params['find'] - if params.has_key('ignore_case'): + if 'ignore_case' in params: ic = True else: ic = False @@ -330,39 +330,39 @@ page = _("

    You must enter a search string.

    ") else: if len(keys) < max_results and \ - params.has_key('id'): + 'id' in params: if self.state.unknownCorpus.get(key): push((key, self.state.unknownCorpus)) elif self.state.hamCorpus.get(key): push((key, self.state.hamCorpus)) elif self.state.spamCorpus.get(key): push((key, self.state.spamCorpus)) - if params.has_key('subject') or params.has_key('body') or \ - params.has_key('headers'): + if 'subject' in params or 'body' in params or \ + 'headers' in params: # This is an expensive operation, so let the user know # that something is happening. self.write(_('

    Searching...

    ')) for corp in [self.state.unknownCorpus, self.state.hamCorpus, self.state.spamCorpus]: - for k in corp.keys(): + for k in list(corp.keys()): if len(keys) >= max_results: break msg = corp[k] msg.load() - if params.has_key('subject'): + if 'subject' in params: subj = str(msg['Subject']) if self._contains(subj, key, ic): push((k, corp)) - if params.has_key('body'): + if 'body' in params: # For [ 906581 ] Assertion failed in search # subject. Can the headers be a non-string? msg_body = msg.as_string() msg_body = msg_body[msg_body.index('\r\n\r\n'):] if self._contains(msg_body, key, ic): push((k, corp)) - if params.has_key('headers'): - for nm, val in msg.items(): + RefactoringTool: Files that were modified: RefactoringTool: ../python3/spambayes/CoreUI.py if 'headers' in params: + for nm, val in list(msg.items()): # For [ 906581 ] Assertion failed in # search subject. Can the headers be # a non-string? @@ -402,7 +402,7 @@ } invalid_keys = [] for key in keys: - if isinstance(key, types.TupleType): + if isinstance(key, tuple): key, sourceCorpus = key else: sourceCorpus = self.state.unknownCorpus @@ -794,7 +794,7 @@ """The message name is the time it arrived with a uniquifier appended if two arrive within one clock tick of each other. """ - message_name = "%10.10d" % long(time.time()) + message_name = "%10.10d" % int(time.time()) if message_name == self.last_base_message_name: message_name = "%s-%d" % (message_name, self.uniquifier) self.uniquifier += 1 @@ -856,7 +856,7 @@ # an installer can check if we are running try: hmutex = win32event.CreateMutex(None, True, mutex_name) - except win32event.error, details: + except win32event.error as details: # If another user has the mutex open, we get an "access # denied" error - this is still telling us what we need # to know. + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/spambayes/CorePlugin.py 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 ../python3/spambayes/CorePlugin.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/spambayes/CorePlugin.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/setup.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/setup.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/setup.py --- ../python3/setup.py (original) +++ ../python3/setup.py (refactored) @@ -6,8 +6,8 @@ from setuptools import setup, find_packages if sys.version_info < (2, 4): - print "Error: You need at least Python 2.4 to use SpamBayes." - print "You're running version %s." % sys.version + print("Error: You need at least Python 2.4 to use SpamBayes.") + print("You're running version %s." % sys.version) sys.exit(0) # Install @@ -40,19 +40,19 @@ s = os.path.join(self.install_dir, s) for e in (".py", ".pyc", ".pyo"): if os.path.exists(s+e): - print >> sys.stderr, "Error: old script", s+e, - print >> sys.stderr, "still exists." + print("Error: old script", s+e, end=' ', file=sys.stderr) + print("still exists.", file=sys.stderr) err = True if err: - print >>sys.stderr, "Do you want to delete these scripts? (y/n)" - answer = raw_input("") + print("Do you want to delete these scripts? (y/n)", file=sys.stderr) + answer = input("") if answer == "y": for s in self.old_scripts: s = os.path.join(self.install_dir, s) for e in (".py", ".pyc", ".pyo"): try: os.remove(s+e) - print "Removed", s+e + print("Removed", s+e) except OSError: pass return parent.run(self) @@ -67,8 +67,8 @@ retval = sdist_parent.run(self) for archive in self.get_archive_files(): data = file(archive, "rb").read() - print '\n', archive, "\n\tMD5:", md5.md5(data).hexdigest() - print "\tLength:", len(data) + print('\n', archive, "\n\tMD5:", md5.md5(data).hexdigest()) + print("\tLength:", len(data)) return retval scripts=['scripts/sb_client.py', + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_xmlrpcserver.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/sb_xmlrpcserver.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/sb_xmlrpcserver.py --- ../python3/scripts/sb_xmlrpcserver.py (original) +++ ../python3/scripts/sb_xmlrpcserver.py (refactored) @@ -24,13 +24,13 @@ import getopt import sys -import xmlrpclib -import SimpleXMLRPCServer +import xmlrpc.client +import xmlrpc.server from spambayes import hammie, Options from spambayes import storage -class ReusableSimpleXMLRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer): +class ReusableSimpleXMLRPCServer(xmlrpc.server.SimpleXMLRPCServer): allow_reuse_address = True @@ -49,15 +49,15 @@ msg = msg.data except AttributeError: pass - return xmlrpclib.Binary(hammie.Hammie.filter(self, msg, *extra)) + return xmlrpc.client.Binary(hammie.Hammie.filter(self, msg, *extra)) def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__, file=sys.stderr) sys.exit(code) @@ -65,7 +65,7 @@ """Main program; parse options and go.""" try: opts, args = getopt.getopt(sys.argv[1:], 'hd:p:o:') - except getopt.error, msg: + except getopt.error as msg: usage(2, msg) options = Options.options @@ -88,7 +88,7 @@ server = ReusableSimpleXMLRPCServer( (ip, port), - SimpleXMLRPCServer.SimpleXMLRPCRequestHandler) + xmlrpc.server.SimpleXMLRPCRequestHandler) server.register_instance(h) server.serve_forever() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_upload.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/sb_upload.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/sb_upload.py --- ../python3/scripts/sb_upload.py (original) +++ ../python3/scripts/sb_upload.py (refactored) @@ -24,7 +24,7 @@ """ import sys -import httplib +import http.client import mimetypes import getopt import random @@ -46,7 +46,7 @@ as files. Return the server's response page. """ content_type, body = encode_multipart_formdata(fields, files) - h = httplib.HTTP(host) + h = http.client.HTTP(host) h.putrequest('POST', selector) h.putheader('content-type', content_type) h.putheader('content-length', str(len(body))) @@ -89,7 +89,7 @@ defaults = {} for d in args: defaults.update(d) - print __doc__ % defaults + print(__doc__ % defaults) def main(argv): null = False + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_unheader.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/sb_unheader.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/sb_unheader.py --- ../python3/scripts/sb_unheader.py (original) +++ ../python3/scripts/sb_unheader.py (refactored) @@ -20,7 +20,7 @@ def unheader(msg, pat): pat = re.compile(pat) - for hdr in msg.keys(): + for hdr in list(msg.keys()): if pat.match(hdr): del msg[hdr] @@ -34,12 +34,12 @@ KeyError is raised. """ _name = _name.lower() - for i, (k, v) in zip(range(len(self._headers)), self._headers): + for i, (k, v) in zip(list(range(len(self._headers))), self._headers): if k.lower() == _name: self._headers[i] = (k, _value) break else: - raise KeyError, _name + raise KeyError(_name) class Parser(email.Parser.HeaderParser): def __init__(self): @@ -88,25 +88,25 @@ def process_maildir(d, dosa=1, pats=None): parser = Parser() for fn in glob.glob(os.path.join(d, "cur", "*")): - print ("reading from %s..." % fn), + print(("reading from %s..." % fn), end=' ') file = open(fn) msg = parser.parse(file) process_message(msg, dosa, pats) tmpfn = os.path.join(d, "tmp", os.path.basename(fn)) tmpfile = open(tmpfn, "w") - print "writing to %s" % tmpfn + print("writing to %s" % tmpfn) gen = email.Generator.Generator(tmpfile, maxheaderlen=0) gen.flatten(msg, unixfrom=0) os.rename(tmpfn, fn) def usage(): - print >> sys.stderr, "usage: unheader.py [ -p pat ... ] [ -s ] folder" - print >> sys.stderr, "-p pat gives a regex pattern used to eliminate unwanted headers" - print >> sys.stderr, "'-p pat' may be given multiple times" - print >> sys.stderr, "-s tells not to remove SpamAssassin headers" - print >> sys.stderr, "-d means treat folder as a Maildir" + print("usage: unheader.py [ -p pat ... ] [ -s ] folder", file=sys.stderr) + print("-p pat gives a regex pattern used to eliminate unwanted headers", file=sys.stderr) + print("'-p pat' may be given multiple times", file=sys.stderr) + print("-s tells not to remove SpamAssassin headers", file=sys.stderr) + print("-d means treat folder as a Maildir", file=sys.stderr) def main(args): headerpats = [] + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_server.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/sb_server.py --- ../python3/scripts/sb_server.py (original) +++ ../python3/scripts/sb_server.py (refactored) @@ -88,7 +88,7 @@ """ import sys, re, getopt, time, socket, email -from thread import start_new_thread +from _thread import start_new_thread import spambayes.message from spambayes import i18n @@ -145,7 +145,7 @@ self.socket.setblocking(1) try: self.connect((serverName, serverPort)) - except socket.error, e: + except socket.error as e: error = "Can't connect to %s:%d: %s" % (serverName, serverPort, e) # Some people have their system setup to check mail very # frequently, but without being clever enough to check whether @@ -159,7 +159,7 @@ if error not in state.reported_errors or \ options["globals", "verbose"] or \ state.reported_errors[error] < then: - print >>sys.stderr, error + print(error, file=sys.stderr) # Record this error in the list of ones we have seen this # session. @@ -172,10 +172,10 @@ if ssl: try: self.ssl_socket = socket.ssl(self.socket) - except socket.sslerror, why: + except socket.sslerror as why: if why[0] == 1: # error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol' # Probably not SSL after all. - print >> sys.stderr, "Can't use SSL" + print("Can't use SSL", file=sys.stderr) else: raise else: @@ -190,7 +190,7 @@ # Python 2.4's system of continuously pumping error messages # is stupid. Print an error once, and then ignore. if not self.handled_exception: - print >> sys.stderr, "Unhandled exception in ServerLineReader" + print("Unhandled exception in ServerLineReader", file=sys.stderr) self.handled_exception = True def recv_ssl(self, buffer_size): @@ -203,7 +203,7 @@ return '' else: return data - except socket.sslerror, why: + except socket.sslerror as why: if why[0] == 6: # 'TLS/SSL connection has been closed' self.handle_close() return '' @@ -401,8 +401,8 @@ def __init__(self, serverName, serverPort, proxyPort, ssl=False): proxyArgs = (serverName, serverPort, ssl) Dibbler.Listener.__init__(self, proxyPort, BayesProxy, proxyArgs) - print 'Listener on port %s is proxying %s:%d' % \ - (_addressPortStr(proxyPort), serverName, serverPort) + print('Listener on port %s is proxying %s:%d' % \ + (_addressPortStr(proxyPort), serverName, serverPort)) class BayesProxy(POP3ProxyBase): @@ -595,7 +595,7 @@ # be dealing with partial message here because of the timeout # code in onServerLine. headers = [] - for name, value in msg.items(): + for name, value in list(msg.items()): header = "%s: %s" % (name, value) headers.append(re.sub(r'\r?\n', '\r\n', header)) try: @@ -615,7 +615,7 @@ insert_exception_header(messageText) # Print the exception and a traceback. - print >> sys.stderr, details + print(details, file=sys.stderr) # Restore the +OK and the POP3 .\r\n terminator if there was one. retval = ok + "\n" + messageText @@ -664,7 +664,7 @@ # an installer can check if we are running try: hmutex = win32event.CreateMutex(None, True, mutex_name) - except win32event.error, details: + except win32event.error as details: # If another user has the mutex open, we get an "access denied" # error - this is still telling us what we need to know. if details[0] != winerror.ERROR_ACCESS_DENIED: @@ -722,10 +722,10 @@ # back on if necessary. self.lang_manager.add_language(language) if options["globals", "verbose"]: - print "Asked to add languages: " + \ - ", ".join(options["globals", "language"]) - print "Set language to " + \ - str(self.lang_manager.current_langs_codes) + print("Asked to add languages: " + \ + ", ".join(options["globals", "language"])) + print("Set language to " + \ + str(self.lang_manager.current_langs_codes)) # Open the log file. if options["globals", "verbose"]: @@ -748,10 +748,10 @@ self.proxyPorts = [] if options["pop3proxy", "listen_ports"]: splitPorts = options["pop3proxy", "listen_ports"] - self.proxyPorts = map(_addressAndPort, splitPorts) + self.proxyPorts = list(map(_addressAndPort, splitPorts)) if len(self.servers) != len(self.proxyPorts): - print "pop3proxy_servers & pop3proxy_ports are different lengths!" + print("pop3proxy_servers & pop3proxy_ports are different lengths!") sys.exit() # Remember reported errors. @@ -858,7 +858,7 @@ """Using the options that were initialised in __init__ and then possibly overridden by the driver code, create the Bayes object, the Corpuses, the Trainers and so on.""" - print "Loading database...", + print("Loading database...", end=' ') if self.isTest: self.useDB = "pickle" self.DBName = '_pop3proxy_test.pickle' # This is never saved. @@ -880,7 +880,7 @@ sc = get_pathname_option("Storage", "spam_cache") hc = get_pathname_option("Storage", "ham_cache") uc = get_pathname_option("Storage", "unknown_cache") - map(storage.ensureDir, [sc, hc, uc]) + list(map(storage.ensureDir, [sc, hc, uc])) if self.gzipCache: factory = GzipFileMessageFactory() else: @@ -914,7 +914,7 @@ def getNewMessageName(self): # The message name is the time it arrived, with a uniquifier # appended if two arrive within one clock tick of each other. - messageName = "%10.10d" % long(time.time()) + messageName = "%10.10d" % int(time.time()) if messageName == self.lastBaseMessageName: messageName = "%s-%d" % (messageName, self.uniquifier) self.uniquifier += 1 @@ -950,8 +950,9 @@ else: return '', int(s) -def _addressPortStr((addr, port)): +def _addressPortStr(xxx_todo_changeme): """Encode a string representing a port to bind to, with optional address.""" + (addr, port) = xxx_todo_changeme if not addr: return str(port) else: @@ -1023,7 +1024,8 @@ def stop(): # Shutdown as though through the web UI. This will save the DB, allow # any open proxy connections to complete, etc. - from urllib import urlopen, urlencode + from urllib.request import urlopen + from urllib.parse import urlencode urlopen('http://localhost:%d/save' % state.uiPort, urlencode({'how': _('Save & shutdown')})).read() @@ -1037,13 +1039,13 @@ # Read the arguments. try: opts, args = getopt.getopt(sys.argv[1:], 'hbd:p:l:u:o:') - except getopt.error, msg: - print >> sys.stderr, str(msg) + '\n\n' + __doc__ + except getopt.error as msg: + print(str(msg) + '\n\n' + __doc__, file=sys.stderr) sys.exit() for opt, arg in opts: if opt == '-h': - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) sys.exit() elif opt == '-b': state.launchUI = True @@ -1060,7 +1062,7 @@ # Let the user know what they are using... v = get_current_version() - print "%s\n" % (v.get_long_version("SpamBayes POP3 Proxy"),) + print("%s\n" % RefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/sb_server.py RefactoringTool: Warnings/messages while refactoring: RefactoringTool: ### In file ../python3/scripts/sb_server.py ### RefactoringTool: Line 883: You should use a for loop here (v.get_long_version("SpamBayes POP3 Proxy"),)) if 0 <= len(args) <= 2: # Normal usage, with optional server name and port number. @@ -1076,14 +1078,13 @@ try: prepare() except AlreadyRunningException: - print >> sys.stderr, \ - "ERROR: The proxy is already running on this machine." - print >> sys.stderr, "Please stop the existing proxy and try again" + print("ERROR: The proxy is already running on this machine.", file=sys.stderr) + print("Please stop the existing proxy and try again", file=sys.stderr) return start() else: - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) if __name__ == '__main__': run() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_pop3dnd.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/sb_pop3dnd.py --- ../python3/scripts/sb_pop3dnd.py (original) +++ ../python3/scripts/sb_pop3dnd.py (refactored) @@ -29,7 +29,7 @@ between them), then it should work equally as well. """ -from __future__ import generators + todo = """ o The RECENT flag should be unset at some point, but when? The @@ -61,13 +61,13 @@ import time import errno import email -import thread +import _thread import getopt import socket import imaplib import email.Utils -import cStringIO as StringIO +import io as StringIO from twisted import cred import twisted.application.app @@ -96,8 +96,8 @@ try: os.mkdir(dirname) if options["globals", "verbose"]: - print "Creating directory", dirname - except OSError, e: + print("Creating directory", dirname) + except OSError as e: if e.errno != errno.EEXIST: raise @@ -120,7 +120,7 @@ def getHeaders(self, negate, *names): """Retrieve a group of message headers.""" headers = {} - for header, value in self.items(): + for header, value in list(self.items()): if (header.upper() in names and not negate) or \ (header.upper() not in names and negate) or names == (): headers[header.lower()] = value @@ -206,7 +206,7 @@ elif flag == "\\DRAFT": self.draft = value else: - print "Tried to set invalid flag", flag, "to", value + print("Tried to set invalid flag", flag, "to", value) def flags(self): """Return the message flags.""" @@ -342,10 +342,10 @@ self.storage = FileCorpus.FileCorpus(IMAPFileMessageFactory(), directory, r"[0123456789]*") # UIDs are required to be strictly ascending. - if len(self.storage.keys()) == 0: + if len(list(self.storage.keys())) == 0: self.nextUID = 1 else: - self.nextUID = long(self.storage.keys()[-1]) + 1 + self.nextUID = int(list(self.storage.keys())[-1]) + 1 # Calculate initial recent and unseen counts self.unseen_count = 0 self.recent_count = 0 @@ -367,7 +367,7 @@ """Return the UID of a message in the mailbox.""" # Note that IMAP messages are 1-based, our messages are 0-based. d = self.storage - return long(d.keys()[msg - 1]) + return int(list(d.keys())[msg - 1]) def getFlags(self): """Return the flags defined in this mailbox.""" @@ -376,7 +376,7 @@ def getMessageCount(self): """Return the number of messages in this mailbox.""" - return len(self.storage.keys()) + return len(list(self.storage.keys())) def getRecentCount(self): """Return the number of messages with the 'Recent' flag.""" @@ -423,7 +423,7 @@ content.read()) msg.date = date self.storage.addMessage(msg) - self.store(MessageSet(long(msg.id), long(msg.id)), flags, 1, True) + self.store(MessageSet(int(msg.id), int(msg.id)), flags, 1, True) msg.recent = True msg.store() self.recent_count += 1 @@ -433,7 +433,7 @@ listener.newMessages(self.getMessageCount(), self.getRecentCount()) d = defer.Deferred() - reactor.callLater(0, d.callback, self.storage.keys().index(msg.id)) + reactor.callLater(0, d.callback, list(self.storage.keys()).index(msg.id)) return d def expunge(self): @@ -445,7 +445,7 @@ self.unseen_count -= 1 if msg.recent: self.recent_count -= 1 - deleted_messages.append(long(msg.id)) + deleted_messages.append(int(msg.id)) self.storage.removeMessage(msg) if deleted_messages != []: for listener in self.listeners: @@ -465,8 +465,8 @@ """ if self.getMessageCount() == 0: return [] - all_msgs = MessageSet(long(seRefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/sb_pop3dnd.py lf.storage.keys()[0]), - long(self.storage.keys()[-1])) + all_msgs = MessageSet(int(list(self.storage.keys())[0]), + int(list(self.storage.keys())[-1])) matches = [] for id, msg in self._messagesIter(all_msgs, uid): for q in query: @@ -477,9 +477,9 @@ def _messagesIter(self, messages, uid): if uid: - if not self.storage.keys(): + if not list(self.storage.keys()): return - messages.last = long(self.storage.keys()[-1]) + messages.last = int(list(self.storage.keys())[-1]) else: messages.last = self.getMessageCount() for id in messages: @@ -614,7 +614,7 @@ msg.id = self.getUIDNext(True) self.storage[msg.id] = msg d = defer.Deferred() - reactor.callLater(0, d.callback, self.storage.keys().index(msg.id)) + reactor.callLater(0, d.callback, list(self.storage.keys()).index(msg.id)) return d def expunge(self): @@ -832,7 +832,7 @@ if cls == options["Headers", "header_ham_string"]: state.numHams += 1 headers = [] - for name, value in msg.items(): + for name, value in list(msg.items()): header = "%s: %s" % (name, value) headers.append(re.sub(r'\r?\n', '\r\n', header)) body = re.split(r'\n\r?\n', messageText, 1)[1] @@ -857,7 +857,7 @@ message.insert_exception_header(messageText) # Print the exception and a traceback. - print >> sys.stderr, details + print(details, file=sys.stderr) retval = ok + "\n" + messageText if terminatingDotPresent: retval += '.\r\n' @@ -879,8 +879,8 @@ proxyArgs = (serverName, serverPort, spam, unsure) Dibbler.Listener.__init__(self, proxyPort, RedirectingBayesProxy, proxyArgs) - print 'Listener on port %s is proxying %s:%d' % \ - (_addressPortStr(proxyPort), serverName, serverPort) + print('Listener on port %s is proxying %s:%d' % \ + (_addressPortStr(proxyPort), serverName, serverPort)) class IMAPState(State): @@ -968,7 +968,7 @@ assert state.prepared, "Must prepare before starting" # The asyncore stuff doesn't play nicely with twisted (or vice-versa), # so put them in separate threads. - thread.start_new_thread(Dibbler.run, ()) + _thread.start_new_thread(Dibbler.run, ()) reactor.run() def stop(): @@ -987,7 +987,7 @@ except socket.error: # Well, we did our best to shut down gracefully. Warn the user # and just die when the thread we are in does. - print "Could not shut down POP3 proxy gracefully." + print("Could not shut down POP3 proxy gracefully.") # Stop the IMAP4 server. reactor.stop() @@ -995,22 +995,22 @@ # Read the arguments. try: opts, args = getopt.getopt(sys.argv[1:], 'ho:') - except getopt.error, msg: - print >> sys.stderr, str(msg) + '\n\n' + __doc__ + except getopt.error as msg: + print(str(msg) + '\n\n' + __doc__, file=sys.stderr) sys.exit() for opt, arg in opts: if opt == '-h': - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) sys.exit() elif opt == '-o': options.set_from_cmdline(arg, sys.stderr) # Let the user know what they are using... v = get_current_version() - print v.get_long_version() + print(v.get_long_version()) from twisted.copyright import version as twisted_version - print "Twisted version %s.\n" % (twisted_version,) + print("Twisted version %s.\n" % (twisted_version,)) # Setup everything. prepare() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_notesfilter.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/sb_notesfilter.py --- ../python3/scripts/sb_notesfilter.py (original) +++ ../python3/scripts/sb_notesfilter.py (refactored) @@ -130,7 +130,7 @@ # The Python Software Foundation and is covered by the Python Software # Foundation license. -from __future__ import generators + __author__ = "Tim Stone " __credits__ = "Mark Hammond, for his remarkable win32 modules." @@ -150,7 +150,7 @@ # the notesindex hash ensures that a message is looked at only once - if len(notesindex.keys()) == 0: + if len(list(notesindex.keys())) == 0: firsttime = 1 else: firsttime = 0 @@ -167,7 +167,7 @@ if firsttime: notesindex[nid] = 'never classified' else: - if not notesindex.has_key(nid): + if nid not in notesindex: numdocs += 1 # Notes returns strings in unicode, and the Python @@ -193,12 +193,12 @@ notesindex[nid] = 'classified' subj = message["subject"] try: - print "%s spamprob is %s" % (subj[:30], prob) + print("%s spamprob is %s" % (subj[:30], prob)) if log: log.LogAction("%s spamprob is %s" % (subj[:30], prob)) except UnicodeError: - print " spamprob is %s" % (prob) + print(" spamprob is %s" % (prob)) if log: log.LogAction(" spamprob " \ "is %s" % (prob,)) @@ -215,10 +215,10 @@ doc.RemoveFromFolder(v.Name) doc.PutInFolder(vmoveto.Name) - print "%s documents processed" % (numdocs,) - print " %s classified as spam" % (numspam,) - print " %s classified as ham" % (numham,) - print " %s classified as unsure" % (numuns,) + print("%s documents processed" % (numdocs,)) + print(" %s classified as spam" % (numspam,)) + print(" %s classified as ham" % (numham,)) + print(" %s classified as unsure" % (numuns,)) if log: log.LogAction("%s documents processed" % (numdocs,)) log.LogAction(" %s classified as spam" % (numspam,)) @@ -254,7 +254,7 @@ else: header_str = options["Headers", "header_ham_string"] - print "Training %s" % (header_str,) + print("Training %s" % (header_str,)) docstomove = [] doc = v.GetFirstDocument() @@ -265,7 +265,7 @@ tokens = tokenizer.tokenize(message) nid = doc.NOTEID - if notesindex.has_key(nid): + if nid in notesindex: trainedas = notesindex[nid] if trainedas == options["Headers", "header_spam_string"] and \ not is_spam: @@ -286,7 +286,7 @@ doc.RemoveFromFolder(v.Name) doc.PutInFolder(vmoveto.Name) - print "%s documents trained" % (len(docstomove),) + print("%s documents trained" % (len(docstomove),)) if log: log.LogAction("%s documents trained" % (len(docstomove),)) @@ -297,12 +297,12 @@ try: notesindex = pickle_read(idxname) - except IOError, e: + except IOError as e: if e.errno != errno.ENOENT: raise notesindex = {} - print "%s file not found, this is a first time run" % (idxname,) - print "No classification will be performed" + print("%s file not found, this is a first time run" % (idxname,)) + print("No classification will be performed") need_replicate = False @@ -313,18 +313,18 @@ else: sess.initialize() except pywintypes.com_error: - print "Session aborted" + print("Session aborted") sys.exit() try: db = sess.GetDatabase(rdbname, ldbname) except pywintypes.com_error: if rdbname: - print "Could not open database remotely, trying locally" + print("Could not open database RefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/sb_notesfilter.py remotely, trying locally") try: db = sess.GetDatabase("", ldbname) need_replicate = True except pywintypes.com_error: - print "Could not open database" + print("Could not open database") sys.exit() else: raise @@ -333,7 +333,7 @@ try: log.OpenNotesLog("", logname) except pywintypes.com_error: - print "Could not open log" + print("Could not open log") log = None if log: @@ -352,17 +352,17 @@ if need_replicate: try: - print "Replicating..." + print("Replicating...") db.Replicate(rdbname) - print "Done" + print("Done") except pywintypes.com_error: - print "Could not replicate" + print("Could not replicate") if doClassify: classifyInbox(vinbox, vtrainspam, bayes, ldbname, notesindex, log) - print "The Spambayes database currently has %s Spam and %s Ham" \ - % (bayes.nspam, bayes.nham) + print("The Spambayes database currently has %s Spam and %s Ham" \ + % (bayes.nspam, bayes.nham)) bayes.store() @@ -375,8 +375,8 @@ if __name__ == '__main__': try: opts, args = getopt.getopt(sys.argv[1:], 'htcPd:p:l:r:f:o:i:W:L:') - except getopt.error, msg: - print >> sys.stderr, str(msg) + '\n\n' + __doc__ + except getopt.error as msg: + print(str(msg) + '\n\n' + __doc__, file=sys.stderr) sys.exit() ldbname = None # local notes database name @@ -391,7 +391,7 @@ for opt, arg in opts: if opt == '-h': - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) sys.exit() elif opt == '-l': ldbname = arg @@ -423,6 +423,6 @@ sbfname, doTrain, doClassify, pwd, idxname, logname) if doPrompt: - raw_input("Press Enter to end ") + input("Press Enter to end ") else: - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_mboxtrain.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/sb_mboxtrain.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/sb_mboxtrain.py --- ../python3/scripts/sb_mboxtrain.py (original) +++ ../python3/scripts/sb_mboxtrain.py (refactored) @@ -106,7 +106,7 @@ """Train bayes with all messages from a maildir.""" if loud: - print " Reading %s as Maildir" % (path,) + print(" Reading %s as Maildir" % (path,)) import time import socket @@ -131,7 +131,7 @@ msg = get_message(f) f.close() if not msg: - print "Malformed message: %s. Skipping..." % cfn + print("Malformed message: %s. Skipping..." % cfn) continue if not msg_train(h, msg, is_spam, force): continue @@ -158,7 +158,7 @@ """Train bayes with a Unix mbox""" if loud: - print " Reading as Unix mbox" + print(" Reading as Unix mbox") import mailbox import fcntl @@ -175,7 +175,7 @@ for msg in mbox: if not msg: - print "Malformed message number %d. I can't train on this mbox, sorry." % counter + print("Malformed message number %d. I can't train on this mbox, sorry." % counter) return counter += 1 if loud and counter % 10 == 0: @@ -194,15 +194,15 @@ f.seek(0) except: # If anything goes wrong, don't try to write - print "Problem truncating mbox--nothing written" + print("Problem truncating mbox--nothing written") raise try: - for line in outf.xreadlines(): + for line in outf: f.write(line) except: - print >> sys.stderr ("Problem writing mbox! Sorry, " + print(file=sys.stderr ("Problem writing mbox! Sorry, " "I tried my best, but your mail " - "may be corrupted.") + "may be corrupted.")) raise fcntl.flock(f, fcntl.LOCK_UN) @@ -216,7 +216,7 @@ """Train bayes with an mh directory""" if loud: - print " Reading as MH mailbox" + print(" Reading as MH mailbox") import glob @@ -235,7 +235,7 @@ msg = get_message(f) f.close() if not msg: - print "Malformed message: %s. Skipping..." % cfn + print("Malformed message: %s. Skipping..." % cfn) continue msg_train(h, msg, is_spam, force) trained += 1 @@ -275,9 +275,9 @@ def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) sys.exit(code) def main(): @@ -287,7 +287,7 @@ try: opts, args = getopt.getopt(sys.argv[1:], 'hfqnrd:p:g:s:o:') - except getopt.error, msg: + except getopt.error as msg: usage(2, msg) if not opts: @@ -329,14 +329,14 @@ for g in good: if loud: - print "Training ham (%s):" % g + print("Training ham (%s):" % g) train(h, g, False, force, trainnew, removetrained) sys.stdout.flush() save = True for s in spam: if loud: - print "Training spam (%s):" % s + print("Training spam (%s):" % s) train(h, s, True, force, trainnew, removetrained) sys.stdout.flush() save = True + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_mailsort.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/sb_mailsort.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/sb_mailsort.py --- ../python3/scripts/sb_mailsort.py (original) +++ ../python3/scripts/sb_mailsort.py (refactored) @@ -31,7 +31,7 @@ def import_spambayes(): global mboxutils, CdbClassifier, tokenize - if not os.environ.has_key('BAYESCUSTOMIZE'): + if 'BAYESCUSTOMIZE' not in os.environ: os.environ['BAYESCUSTOMIZE'] = os.path.expanduser(CONFIG_FILE) from spambayes import mboxutils from spambayes.cdb_classifier import CdbClassifier @@ -43,28 +43,28 @@ def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) sys.exit(code) def maketmp(dir): hostname = socket.gethostname() pid = os.getpid() fd = -1 - for x in xrange(200): + for x in range(200): filename = "%d.%d.%s" % (time.time(), pid, hostname) pathname = "%s/tmp/%s" % (dir, filename) try: - fd = os.open(pathname, os.O_WRONLY|os.O_CREAT|os.O_EXCL, 0600) - except IOError, exc: + fd = os.open(pathname, os.O_WRONLY|os.O_CREAT|os.O_EXCL, 0o600) + except IOError as exc: if exc[0] not in (errno.EINT, errno.EEXIST): raise else: break time.sleep(2) if fd == -1: - raise SystemExit, "could not create a mail file" + raise SystemExit("could not create a mail file") return (os.fdopen(fd, "wb"), pathname, filename) def train(bayes, msgs, is_spam): @@ -78,18 +78,18 @@ rc_dir = os.path.expanduser(RC_DIR) if not os.path.exists(rc_dir): - print "Creating", RC_DIR, "directory..." + print("Creating", RC_DIR, "directory...") os.mkdir(rc_dir) bayes = CdbClassifier() - print 'Training with ham...' + print('Training with ham...') train(bayes, ham_name, False) - print 'Training with spam...' + print('Training with spam...') train(bayes, spam_name, True) - print 'Update probabilities and writing DB...' + print('Update probabilities and writing DB...') db = open(DB_FILE, "wb") bayes.save_wordinfo(db) db.close() - print 'done' + print('done') def filter_message(hamdir, spamdir): signal.signal(signal.SIGALRM, lambda s, f: sys.exit(1)) @@ -133,16 +133,16 @@ msg = email.message_from_file(msg_fp) bayes = CdbClassifier(open(DB_FILE, 'rb')) prob, evidence = bayes.spamprob(tokenize(msg), evidence=True) - print msg_name, prob + print(msg_name, prob) for word, prob in evidence: - print ' ', repr(word), prob + print(' ', repr(word), prob) def main(): global DB_FILE, CONFIG_FILE try: opts, args = getopt.getopt(sys.argv[1:], 'tsd:c:') - except getopt.error, msg: + except getopt.error as msg: usage(2, msg) mode = 'sort' + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_imapfilter.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/sb_imapfilter.py --- ../python3/scripts/sb_imapfilter.py (original) +++ ../python3/scripts/sb_imapfilter.py (refactored) @@ -47,7 +47,7 @@ from somewhere else, at least at first. """ -from __future__ import generators + todo = """ o IMAP supports authentication via other methods than the plain-text @@ -125,7 +125,7 @@ import time import getopt import types -import thread +import _thread import email import email.Parser from getpass import getpass @@ -188,11 +188,11 @@ BaseIMAP.__init__(self, server, port) except (BaseIMAP.error, socket.gaierror, socket.error): if options["globals", "verbose"]: - print >> sys.stderr, "Cannot connect to server", server, "on port", port + print("Cannot connect to server", server, "on port", port, file=sys.stderr) if not hasattr(self, "ssl"): - print >> sys.stderr, ("If you are connecting to an SSL server," + print(("If you are connecting to an SSL server," "please ensure that you\n" - "have the 'Use SSL' option enabled.") + "have the 'Use SSL' option enabled."), file=sys.stderr) self.connected = False else: self.connected = True @@ -226,11 +226,11 @@ while True: if (time.time() - st_time) > self.timeout: if options["globals", "verbose"]: - print >> sys.stderr, "IMAP Timing out" + print("IMAP Timing out", file=sys.stderr) break try: data = self.sock.recv(1) - except socket.error, e: + except socket.error as e: if e[0] == 10035: # Nothing to receive, keep going. continue @@ -256,7 +256,7 @@ description = "plain-text" try: login_func(*args) - except BaseIMAP.error, e: + except BaseIMAP.error as e: msg = "The username (%s) and/or password (sent in %s) may " \ "be incorrect." % (username, description) raise LoginFailure(msg) @@ -336,13 +336,13 @@ # We want to keep going, so just print out a warning, and # return an empty list. if options["globals", "verbose"]: - print >> sys.stderr, "Could not retrieve folder list." + print("Could not retrieve folder list.", file=sys.stderr) return [] folders = [] for fol in all_folders: # Sigh. Some servers may give us back the folder name as a # literal, so we need to crunch this out. - if isinstance(fol, types.TupleType): + if isinstance(fol, tuple): m = self.number_re.search(fol[0]) if not m: # Something is wrong here! Skip this folder. @@ -362,9 +362,9 @@ # A bit of a hack, but we really need to know if this is # the case. if self.folder_delimiter == ',': - print >> sys.stderr, ("WARNING: Your imap server uses a comma as the " + print(("WARNING: Your imap server uses a comma as the " "folder delimiter. This may cause unpredictable " \ - "errors.") + "errors."), file=sys.stderr) folders.append(fol[m.end()+4:].strip('"')) folders.sort() return folders @@ -403,7 +403,7 @@ # BODY.PEEK # All others are ignored. - if isinstance(response, types.StringTypes): + if isinstance(response, (str,)): response = (response,) data = {} @@ -453,7 +453,7 @@ """ # There may be more than one message number in the response, so # handle separately. - if isinstance(response, types.StringTypes): + if isinstance(response, (str,)): response = (response,) data = {} @@ -539,8 +539,8 @@ # Can't select the folder, so getting the substance will not # work. self.could_not_retrieve = True - print >> sys.stderr, "Could not select folder %s for message " \ - "%s (uid %s)" % (self.folder.name, self.id, self.uid) + print("Could not select folder %s for message " \ + "%s (uid %s)" % (self.folder.name, self.id, self.uid), file=sys.stderr) return self # Now try to fetch the substance of the message. @@ -562,8 +562,8 @@ # characters for classification. For now, we just carry on, # warning the user and ignoring the message. self.could_not_retrieve = True - print >> sys.stderr, "MemoryError with message %s (uid %s)" % \ - (self.id, self.uid) + print("MemoryError with message %s (uid %s)" % \ + (self.id, self.uid), file=sys.stderr) return self command = "uid fetch %s" % (self.uid,) @@ -574,7 +574,7 @@ # do not have (we use the UID instead). So we look through the # message and use the first data of the right type we find. rfc822_data = None - for msg_data in data.itervalues(): + for msg_data in data.values(): if self.rfc822_key in msg_data: rfc822_data = msg_data[self.rfc822_key] break @@ -605,7 +605,7 @@ self.got_substance = True # Print the exception and a traceback. - print >> sys.stderr, details + print(details, file=sys.stderr) return self @@ -618,7 +618,7 @@ new_msg.setId(self.id) new_msg.got_substance = True - if not new_msg.has_key(options["Headers", "mailid_header_name"]): + if options["Headers", "mailid_header_name"] not in new_msg: new_msg[options["Headers", "mailid_header_name"]] = self.id if options["globals", "verbose"]: @@ -667,7 +667,7 @@ # message and use the last data of the right type we find. msg_time = self.extractTime() flags = None - for msg_data in data.itervalues(): + for msg_data in data.values(): if "INTERNALDATE" in msg_data: msg_time = msg_data["INTERNALDATE"] if "FLAGS" in msg_data: @@ -719,18 +719,18 @@ # 100 times, and then give up. If a message arrives independantly, # and we are told about it before our message, then this could # cause trouble, but that would be one weird server. - for i in xrange(100): + for i in range(100): response = self.imap_server.recent() data = self.imap_server.check_response("recent", response) if data[0] is not None: if options["globals", "verbose"]: - print >> sys.stderr, "[imapfilter] found saved message", self.uid, - print >> sys.stderr, "in iteration", i + print("[imapfilter] found saved message", self.uid, end=' ', file=sys.stderr) + print("in iteration", i, file=sys.stderr) break else: if options["globals", "verbose"]: - print >> sys.stderr, ("[imapfilter] can't find saved message after" - "100 iterations:"), self.uid + print(("[imapfilter] can't find saved message after" + "100 iterations:"), self.uid, file=sys.stderr) # raise BadIMAPResponseError("recent", "Cannot find saved message") # We need to update the UID, as it will have changed. @@ -807,7 +807,7 @@ def __iter__(self): """Iterate through the messages in this IMAP folder.""" - for key in self.keys(): + for key in list(self.keys()): yield self[key] def keys(self): @@ -846,7 +846,7 @@ # do not have (we use the UID instead). So we look through the # message and use the first data of the right type we find. headers = None - for msg_data in data.itervalues(): + for msg_data in data.values(): if "RFC822.HEADER" in msg_data: headers = msg_data["RFC822.HEADER"] break @@ -870,7 +870,7 @@ else: newid = self._generate_id() if options["globals", "verbose"]: - print >> sys.stderr, "[imapfilter] saving", msg.uid, "with new id:", newid + print("[imapfilter] saving", msg.uid, "with new id:", newid, file=sys.stderr) msg.setId(newid) # Unfortunately, we now have to re-save this message, so that # our id is stored on the IMAP server. The vast majority of @@ -888,7 +888,7 @@ def _generate_id(self): # The message id is the time it arrived, with a uniquifier # appended if two arrive within one clock tick of each other. - messageName = "%10.10d" % long(time.time()) + messageName = "%10.10d" % int(time.time()) if messageName == self.lastBaseMessageName: messageName = "%s-%d" % (messageName, self.uniquifier) self.uniquifier += 1 @@ -940,7 +940,7 @@ move_opt_name = "move_trained_ham_to_folder" if options["imap", move_opt_name] != "": # We need to restore the SpamBayes headers. - for header, value in saved_headers.items(): + for header, value in list(saved_headers.items()): msg[header] = value msg.MoveTo(IMAPFolder(options["imap", move_opt_name], self.imap_server, self.stats)) @@ -956,7 +956,7 @@ cls = msg.GetClassification() if cls is None or hamfolder is not None: if options["globals", "verbose"]: - print >> sys.stderr, "[imapfilter] classified as %s:" % cls, msg.uid + print("[imapfilter] classified as %s:" % cls, msg.uid, file=sys.stderr) msg = msg.get_full_message() if msg.could_not_retrieve: @@ -967,7 +967,7 @@ # the errors and move it soon enough. if options["globals", "verbose"]: - print >> sys.stderr, "[imapfilter] could not retrieve:", msg.uid + print("[imapfilter] could not retrieve:", msg.uid, file=sys.stderr) continue (prob, clues) = classifier.spamprob(msg.tokenize(), @@ -981,26 +981,26 @@ if cls == options["Headers", "header_ham_string"]: if hamfolder: if options["globals", "verbose"]: - print >> sys.stderr, "[imapfilter] moving to ham folder:", - print >> sys.stderr, msg.uid + print("[imapfilter] moving to ham folder:", end=' ', file=sys.stderr) + print(msg.uid, file=sys.stderr) msg.MoveTo(hamfolder) # Otherwise, we leave ham alone. count["ham"] += 1 elif cls == options["Headers", "header_spam_string"]: if options["globals", "verbose"]: - print >> sys.stderr, "[imapfilter] moving to spam folder:", - print >> sys.stderr, msg.uid + print("[imapfilter] moving to spam folder:", end=' ', file=sys.stderr) + print(msg.uid, file=sys.stderr) msg.MoveTo(spamfolder) count["spam"] += 1 else: if options["globals", "verbose"]: - print >> sys.stderr, "[imapfilter] moving to unsure folder:", msg.uid + print("[imapfilter] moving to unsure folder:", msg.uid, file=sys.stderr) msg.MoveTo(unsurefolder) count["unsure"] += 1 msg.Save() else: if options["globals", "verbose"]: - print >> sys.stderr, "[imapfilter] already classified:", msg.uid + print("[imapfilter] already classified:", msg.uid, file=sys.stderr) return count @@ -1029,44 +1029,44 @@ try: self.imap_server.SelectFolder(fol) except BadIMAPResponseError: - print >> sys.stderr, "Skipping", fol, "as it cannot be selected." + print("Skipping", fol, "as it cannot be selected.", file=sys.stderr) continue if options['globals', 'verbose']: - print >> sys.stderr, (" Training %s folder %s" % - (["ham", "spam"][is_spam], fol)) + print((" Training %s folder %s" % + (["ham", "spam"][is_spam], fol)), file=sys.stderr) folder = IMAPFolder(fol, self.imap_server, self.stats) num_trained = folder.Train(self.classifier, is_spam) total_trained += num_trained if options['globals', 'verbose']: - print >> sys.stderr, "\n ", num_trained, "trained." + print("\n ", num_trained, "trained.", file=sys.stderr) if total_trained: self.classifier.store() if options["globals", "verbose"]: - print >> sys.stderr, ("Training took %.4f seconds, %s messages were trained." - % (time.time() - t, total_trained)) + print(("Training took %.4f seconds, %s messages were trained." + % (time.time() - t, total_trained)), file=sys.stderr) def Filter(self): assert self.imap_server, "Cannot do anything without IMAP server." if not self.spam_folder: spam_folder_name = options["imap", "spam_folder"] if options["globals", "verbose"]: - print >> sys.stderr, "[imapfilter] spam folder:", spam_folder_name + print("[imapfilter] spam folder:", spam_folder_name, file=sys.stderr) self.spam_folder = IMAPFolder( spam_folder_name, self.imap_server, self.stats) if not self.unsure_folder: unsure_folder_name = options["imap", "unsure_folder"] if options["globals", "verbose"]: - print >> sys.stderr, "[imapfilter] unsure folder:", unsure_folder_name + print("[imapfilter] unsure folder:", unsure_folder_name, file=sys.stderr) self.unsure_folder = IMAPFolder( unsure_folder_name, self.imap_server, self.stats) ham_folder_name = options["imap", "ham_folder"] if options["globals", "verbose"]: - print >> sys.stderr, "[imapfilter] ham folder:", ham_folder_name + print("[imapfilter] ham folder:", ham_folder_name, file=sys.stderr) if ham_folder_name and not self.ham_folder: self.ham_folder = IMAPFolder(ham_folder_name, self.imap_server, @@ -1084,18 +1084,18 @@ try: self.imap_server.SelectFolder(self.spam_folder.name) except BadIMAPResponseError: - print >> sys.stderr, "Cannot select spam folder. Please check configuration." + print("Cannot select spam folder. Please check configuration.", file=sys.stderr) sys.exit(-1) try: self.imap_server.SelectFolder(self.unsure_folder.name) except BadIMAPResponseError: - print >> sys.stderr, "Cannot select unsure folder. Please check configuration." + print("Cannot select unsure folder. Please check configuration.", file=sys.stderr) sys.exit(-1) if self.ham_folder: try: self.imap_server.SelectFolder(self.ham_folder.name) except BadIMAPResponseError: - print >> sys.stderr, "Cannot select ham folder. Please check configuration." + print("Cannot select ham folder. Please check configuration.", file=sys.stderr) sys.exit(-1) for filter_folder in options["imap", "filter_folders"]: @@ -1103,20 +1103,20 @@ try: self.imap_server.SelectFolder(filter_folder) except BadIMAPResponseError: - print >> sys.stderr, "Cannot select", filter_folder, "... skipping." + print("Cannot select", filter_folder, "... skipping.", file=sys.stderr) continue folder = IMAPFolder(filter_folder, self.imap_server, self.stats) subcount = folder.Filter(self.classifier, self.spam_folder, self.unsure_folder, self.ham_folder) - for key in count.keys(): + for key in list(count.keys()): count[key] += subcount.get(key, 0) if options["globals", "verbose"]: if count is not None: - print >> sys.stderr, ("\nClassified %s ham, %s spam, and %s unsure." % - (count["ham"], count["spam"], count["unsure"])) - print >> sys.stderr, "Classifying took %.4f seconds." % (time.time() - t,) + print(("\nClassified %s ham, %s spam, and %s unsure." % + (count["ham"], count["spam"], count["unsure"])), file=sys.stderr) + print("Classifying took %.4f seconds." % (time.time() - t,), file=sys.stderr) def servers(promptForPass = False): @@ -1135,14 +1135,14 @@ for u in usernames: pwds.append(getpass("Enter password for %s:" % (u,))) - return zip(servers, usernames, pwds) + return list(zip(servers, usernames, pwds)) def run(force_UI=False): try: opts, args = getopt.getopt(sys.argv[1:], 'hbPtcvl:e:i:d:p:o:', ["verbose"]) - except getopt.error, msg: - print >> sys.stderr, str(msg) + '\n\n' + __doc__ + except getopt.error as msg: + print(str(msg) + '\n\n' + __doc__, file=sys.stderr) sys.exit() doTrain = False @@ -1155,7 +1155,7 @@ for opt, arg in opts: if opt == '-h': - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) sys.exit() elif opt == "-b": launchUI = True @@ -1182,19 +1182,19 @@ # Let the user know what they are using... v = get_current_version(); - print "%s.\n" % (v.get_long_version("SpamBayes IMAP Filter"),) + print("%s.\n" % (v.get_long_version("SpamBayes IMAP Filter"),)) if options["globals", "verbose"]: - print "Loading database %s..." % (bdbname), + print("Loading database %s..." % (bdbname), end=' ') classifier = storage.open_storage(bdbname, useDBM) message_db = message.Message().message_info_db if options["globals", "verbose"]: - print "Done." + print("Done.") if not ( launchUI or force_UI or options["imap", "server"] ): - print "You need to specify both a server and a username." + print("You need to specify both a server and a username.") sys.exit() servers_data = servers(promptForPass) @@ -1247,7 +1247,7 @@ launchBrowser = launchUI or options["html_ui", "launch_browser"] if sleepTime: # Run in a separate thread, as we have more work to do. - thread.start_new_thread(Dibbler.run, (), + _thread.start_new_thread(Dibbler.run, (), {"launchBrowser":launchBrowser}) else: Dibbler.run(launchBrowser=launchBrowser) @@ -1272,7 +1272,7 @@ for (server, imapDebug, doExpunge), username, password in imaps: RefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/sb_imapfilter.py imap = IMAPSession(server, imapDebug, doExpunge) if options["globals", "verbose"]: - print "Account: %s:%s" % (imap.server, imap.port) + print("Account: %s:%s" % (imap.server, imap.port)) if imap.connected: # As above, we load a separate configuration file # for each server, if it exists. We look for a @@ -1291,18 +1291,18 @@ try: imap.login(username, password) - except LoginFailure, e: - print str(e) + except LoginFailure as e: + print(str(e)) continue imap_filter.imap_server = imap if doTrain: if options["globals", "verbose"]: - print "Training" + print("Training") imap_filter.Train() if doClassify: if options["globals", "verbose"]: - print "Classifying" + print("Classifying") imap_filter.Filter() imap.logout() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_filter.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/sb_filter.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/sb_filter.py --- ../python3/scripts/sb_filter.py (original) +++ ../python3/scripts/sb_filter.py (refactored) @@ -118,25 +118,25 @@ """ def examples(): - print example_doc % globals() + print(example_doc % globals()) sys.exit(0) def usage(code, msg=''): """Print usage message and sys.exit(code).""" # Include version info in usage v = get_current_version() - print >> sys.stderr, v.get_long_version("SpamBayes Command Line Filter") - print >> sys.stderr + print(v.get_long_version("SpamBayes Command Line Filter"), file=sys.stderr) + print(file=sys.stderr) if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) sys.exit(code) def version(): v = get_current_version() - print >> sys.stderr, v.get_long_version("SpamBayes Command Line Filter") + print(v.get_long_version("SpamBayes Command Line Filter"), file=sys.stderr) sys.exit(0) class HammieFilter(object): @@ -252,7 +252,7 @@ if create_newdb or not os.path.exists(h.dbname): h.newdb() - print >> sys.stderr, "Created new database in", h.dbname + print("Created new database in", h.dbname, file=sys.stderr) if create_newdb: sys.exit(0) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_evoscore.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/sb_evoscore.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/sb_evoscore.py --- ../python3/scripts/sb_evoscore.py (original) +++ ../python3/scripts/sb_evoscore.py (refactored) @@ -81,7 +81,7 @@ """ import sys -import xmlrpclib +import xmlrpc.client from spambayes.Options import options RPCURL = 'http://localhost:8881' @@ -90,8 +90,8 @@ def main(): msg = sys.stdin.read() try: - server = xmlrpclib.ServerProxy(RPCURL) - score = server.score(xmlrpclib.Binary(msg)) + server = xmlrpc.client.ServerProxy(RPCURL) + score = server.score(xmlrpc.client.Binary(msg)) except: import traceback traceback.print_exc() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_dbexpimp.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/sb_dbexpimp.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/sb_dbexpimp.py --- ../python3/scripts/sb_dbexpimp.py (original) +++ ../python3/scripts/sb_dbexpimp.py (refactored) @@ -73,7 +73,7 @@ # The Python Software Foundation and is covered by the Python Software # Foundation license. -from __future__ import generators + __author__ = "Tim Stone " @@ -94,7 +94,7 @@ def uunquote(s): for encoding in ("utf-8", "cp1252", "iso-8859-1"): try: - return unicode(s, encoding) + return str(s, encoding) except UnicodeDecodeError: pass # punt @@ -103,14 +103,14 @@ def runExport(dbFN, useDBM, outFN): bayes = spambayes.storage.open_storage(dbFN, useDBM) if useDBM == "dbm": - words = bayes.db.keys() + words = list(bayes.db.keys()) words.remove(bayes.statekey) else: - words = bayes.wordinfo.keys() + words = list(bayes.wordinfo.keys()) try: fp = open(outFN, 'wb') - except IOError, e: + except IOError as e: if e.errno != errno.ENOENT: raise @@ -119,9 +119,9 @@ nham = bayes.nham nspam = bayes.nspam - print "Exporting database %s to file %s" % (dbFN, outFN) - print "Database has %s ham, %s spam, and %s words" \ - % (nham, nspam, len(words)) + print("Exporting database %s to file %s" % (dbFN, outFN)) + print("Database has %s ham, %s spam, and %s words" \ + % (nham, nspam, len(words))) writer.writerow([nham, nspam]) @@ -144,7 +144,7 @@ fp = open(inFN, 'rb') rdr = csv.reader(fp) - (nham, nspam) = rdr.next() + (nham, nspam) = next(rdr) if newDBM: bayes.nham = int(nham) @@ -158,7 +158,7 @@ else: impType = "Merging" - print "%s file %s into database %s" % (impType, inFN, dbFN) + print("%s file %s into database %s" % (impType, inFN, dbFN)) for (word, hamcount, spamcount) in rdr: word = uunquote(word) @@ -174,27 +174,27 @@ bayes._wordinfoset(word, wi) - print "Storing database, please be patient. Even moderately sized" - print "databases may take a very long time to store." + print("Storing database, please be patient. Even moderately sized") + print("databases may take a very long time to store.") bayes.store() - print "Finished storing database" + print("Finished storing database") if useDBM == "dbm" or useDBM == True: - words = bayes.db.keys() + words = list(bayes.db.keys()) words.remove(bayes.statekey) else: - words = bayes.wordinfo.keys() - - print "Database has %s ham, %s spam, and %s words" \ - % (bayes.nham, bayes.nspam, len(words)) + words = list(bayes.wordinfo.keys()) + + print("Database has %s ham, %s spam, and %s words" \ + % (bayes.nham, bayes.nspam, len(words))) if __name__ == '__main__': try: opts, args = getopt.getopt(sys.argv[1:], 'iehmvd:p:f:o:') - except getopt.error, msg: - print >> sys.stderr, str(msg) + '\n\n' + __doc__ + except getopt.error as msg: + print(str(msg) + '\n\n' + __doc__, file=sys.stderr) sys.exit() useDBM = "pickle" @@ -206,7 +206,7 @@ for opt, arg in opts: if opt == '-h': - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) sys.exit() elif opt == '-f': flatFN = arg @@ -226,4 +226,4 @@ if imp: runImport(dbFN, useDBM, newDBM, flatFN) else: - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_client.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/sb_client.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/sb_client.py --- ../python3/scripts/sb_client.py (original) +++ ../python3/scripts/sb_client.py (refactored) @@ -7,7 +7,7 @@ """ -import xmlrpclib +import xmlrpc.client import sys RPCBASE = "http://localhost:65000" @@ -15,15 +15,15 @@ def main(): msg = sys.stdin.read() try: - x = xmlrpclib.ServerProxy(RPCBASE) - m = xmlrpclib.Binary(msg) + x = xmlrpc.client.ServerProxy(RPCBASE) + m = xmlrpc.client.Binary(msg) out = x.filter(m) - print out.data + print(out.data) except: if __debug__: import traceback traceback.print_exc() - print msg + print(msg) if __name__ == "__main__": main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_chkopts.py 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 ../python3/scripts/sb_chkopts.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/scripts/sb_chkopts.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_bnserver.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/sb_bnserver.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/sb_bnserver.py --- ../python3/scripts/sb_bnserver.py (original) +++ ../python3/scripts/sb_bnserver.py (refactored) @@ -27,7 +27,7 @@ unix domain socket used on which we listen """ -import os, getopt, sys, SocketServer, traceback, select, socket, errno +import os, getopt, sys, socketserver, traceback, select, socket, errno # See Options.py for explanations of these properties program = sys.argv[0] @@ -36,9 +36,9 @@ def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__, file=sys.stderr) sys.exit(code) @@ -46,7 +46,7 @@ """Main program; parse options and go.""" try: opts, args = getopt.getopt(sys.argv[1:], 'hd:p:o:a:A:') - except getopt.error, msg: + except getopt.error as msg: usage(2, msg) if len(args) != 1: @@ -56,7 +56,7 @@ # we haven't wasted time if we later find we can't start the server try: server = BNServer(args[0], BNRequest) - except socket.error,e: + except socket.error as e: if e[0] == errno.EADDRINUSE: pass # in use, no need else: @@ -89,7 +89,7 @@ class NowIdle(Exception): pass -class BNServer(SocketServer.UnixStreamServer): +class BNServer(socketserver.UnixStreamServer): allow_reuse_address = True timeout = 10.0 number = 100 @@ -108,7 +108,7 @@ else: raise NowIdle() -class BNRequest(SocketServer.StreamRequestHandler): +class BNRequest(socketserver.StreamRequestHandler): def handle(self): switches = self.rfile.readline() body = self.rfile.read() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/sb_bnfilter.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/sb_bnfilter.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/sb_bnfilter.py --- ../python3/scripts/sb_bnfilter.py (original) +++ ../python3/scripts/sb_bnfilter.py (refactored) @@ -82,15 +82,15 @@ def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__, file=sys.stderr) sys.exit(code) def main(): try: opts, args = getopt.getopt(sys.argv[1:], 'hfgstGSd:p:o:a:A:k:') - except getopt.error, msg: + except getopt.error as msg: usage(2, msg) # build the default socket filename from environment variables @@ -151,8 +151,8 @@ # tries to handle errors internally by constructing a stdout that is # the same as stdin was. if total_size != expected_size: - print >> sys.stderr, 'size mismatch %d != %d' % (total_size, - expected_size) + print('size mismatch %d != %d' % (total_size, + expected_size), file=sys.stderr) sys.exit(3) if error: sys.exit(error) @@ -164,7 +164,7 @@ try: s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) s.connect(filename) - except socket.error,e: + except socket.error as e: if e[0] == errno.EAGAIN: # baaah pass + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/scripts/core_server.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/scripts/core_server.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/scripts/core_server.py --- ../python3/scripts/core_server.py (original) +++ ../python3/scripts/core_server.py (refactored) @@ -109,8 +109,9 @@ else: return '', int(s) -def _addressPortStr((addr, port)): +def _addressPortStr(xxx_todo_changeme): """Encode a string representing a port to bind to, with optional address.""" + (addr, port) = xxx_todo_changeme if not addr: return str(port) else: @@ -141,8 +142,8 @@ # Read the arguments. try: opts, args = getopt.getopt(sys.argv[1:], 'hbd:p:l:u:o:P:') - except getopt.error, msg: - print >> sys.stderr, str(msg) + '\n\n' + __doc__ + except getopt.error as msg: + print(str(msg) + '\n\n' + __doc__, file=sys.stderr) sys.exit() state = CoreState() @@ -150,7 +151,7 @@ for opt, arg in opts: if opt == '-h': - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) sys.exit() elif opt == '-b': state.launch_ui = True @@ -166,13 +167,13 @@ state.plugin = load_plugin(arg, state) if state.plugin is None: - print >> sys.stderr, "No plugin argument (-P) was given." - print >> sys.stderr, __doc__ + print("No plugin argument (-P) was given.", file=sys.stderr) + print(__doc__, file=sys.stderr) sys.exit() # Let the user know what they are using... v = get_current_version() - print "%s\n" % (v.get_long_version("SpamBayes Core Proxy"),) + print("%s\n" % (v.get_long_version("SpamBayes Core Proxy"),)) if 0 <= len(args) <= 2: # Normal usage, with optional server name and port number. @@ -184,9 +185,8 @@ try: state.prepare() except AlreadyRunningException: - print >> sys.stderr, \ - "ERROR: The proxy is already running on this machine." - print >> sys.stderr, "Please stop the existing proxy and try again" + print("ERROR: The proxy is already running on this machine.", file=sys.stderr) + print("Please stop the existing proxy and try again", file=sys.stderr) return # kick everything off @@ -196,10 +196,10 @@ state.close() else: - print >> sys.stderr, __doc__ + print(__doc__, file=sys.stderr) if __name__ == '__main__': try: run() except KeyboardInterrupt: - print "bye!" + print("bye!") + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/pspam/update.py 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 ../python3/pspam/update.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/pspam/update.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/pspam/scoremsg.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/pspam/scoremsg.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/pspam/scoremsg.py --- ../python3/pspam/scoremsg.py (original) +++ ../python3/pspam/scoremsg.py (refactored) @@ -21,14 +21,14 @@ msg = email.message_from_file(fp) prob, evidence = p.classifier.spamprob(tokenize(msg), True) - print "Score:", prob - print - print "Clues" - print "-----" + print("Score:", prob) + print() + print("Clues") + print("-----") for clue, prob in evidence: if isinstance(clue, UnicodeType): clue = clue.encode(charset, 'replace') - print clue, prob + print(clue, prob) ## print ## print msg + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/pspam/pspam/profile.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/pspam/pspam/profile.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/pspam/pspam/profile.py --- ../python3/pspam/pspam/profile.py (original) +++ ../python3/pspam/pspam/profile.py (refactored) @@ -26,13 +26,13 @@ global _start if _start is None: _start = time.time() - print round(time.time() - _start, 2), s + print(round(time.time() - _start, 2), s) class IterOOBTree(OOBTree): def iteritems(self): - return self.items() + return list(self.items()) class WordInfo(Persistent): @@ -104,12 +104,12 @@ # It's important not to commit a transaction until # after update_probabilities is called in update(). # Otherwise some new entries will cause scoring to fail. - for msg in added.keys(): + for msg in list(added.keys()): self.classifier.learn(tokenize(msg), is_spam) del added get_transaction().commit(1) log("learned") - for msg in removed.keys(): + for msg in list(removed.keys()): self.classifier.unlearn(tokenize(msg), is_spam) if removed: log("unlearned") + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/pspam/pspam/message.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: No files need to be modified. + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/pspam/pspam/folder.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/pspam/pspam/folder.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/pspam/pspam/folder.py --- ../python3/pspam/pspam/folder.py (original) +++ ../python3/pspam/pspam/folder.py (refactored) @@ -12,8 +12,8 @@ def factory(fp): try: return email.message_from_file(fp, PMessage) - except email.Errors.MessageError, msg: - print msg + except email.Errors.MessageError as msg: + print(msg) return PMessage() class Folder(Persistent): @@ -52,21 +52,21 @@ cur = OOSet() new = OOSet() while 1: - msg = mbox.next() + msg = next(mbox) if msg is None: break msgid = msg["message-id"] cur.insert(msgid) - if not self.messages.has_key(msgid): + if msgid not in self.messages: self.messages[msgid] = msg new.insert(msg) removed = difference(self.messages, cur) - for msgid in removed.keys(): + for msgid in list(removed.keys()): del self.messages[msgid] # XXX perhaps just return the OOBTree for removed? - return new, OOSet(removed.values()) + return new, OOSet(list(removed.values())) if __name__ == "__main__": f = Folder("/home/jeremy/Mail/INBOX") + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/pspam/pspam/database.py 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 ../python3/pspam/pspam/database.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/pspam/pspam/database.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/pspam/pspam/__init__.py 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 ../python3/pspam/pspam/__init__.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/pspam/pspam/__init__.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/pspam/pop.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/pspam/pop.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/pspam/pop.py --- ../python3/pspam/pop.py (original) +++ ../python3/pspam/pop.py (refactored) @@ -26,11 +26,11 @@ POP3 is documented in RFC 1939. """ -import SocketServer +import socketserver try: - import cStringIO as StringIO + import io as StringIO except ImportError: - import StringIO + import io import email import re @@ -49,12 +49,12 @@ VERSION = 0.1 -class POP3ProxyServer(SocketServer.ThreadingTCPServer): +class POP3ProxyServer(socketserver.ThreadingTCPServer): allow_reuse_address = True def __init__(self, addr, handler, classifier, log, zodb): - SocketServer.ThreadingTCPServer.__init__(self, addr, handler) + socketserver.ThreadingTCPServer.__init__(self, addr, handler) self.classifier = classifier self.log = log self.zodb = zodb @@ -77,7 +77,7 @@ def close(self): self.file.close() -class POP3RequestHandler(SocketServer.StreamRequestHandler): +class POP3RequestHandler(socketserver.StreamRequestHandler): """Act as proxy between POP client and server.""" def read_user(self): @@ -182,7 +182,7 @@ % (cmd, multiline, firstline.strip())) if multiline: # Collect the entire response as one string - resp = StringIO.StringIO() + resp = io.StringIO() while 1: line = self.pop_rfile.readline() resp.write(line) @@ -213,7 +213,7 @@ return firstline, resp try: msg = email.message_from_string(resp) - except email.Errors.MessageParseError, err: + except email.Errors.MessageParseError as err: zLOG.LOG("POP3", zLOG.WARNING, "Failed to parse msg: %s" % err, error=sys.exc_info()) resp = self.message_parse_error(resp) @@ -300,7 +300,7 @@ profile = r["profile"] log = open("pop.log", "ab") - print >> log, "+PROXY start", time.ctime() + print("+PROXY start", time.ctime(), file=log) server = POP3ProxyServer(('', int(options["pop3proxy", "listen_ports"][0])), + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/contrib/tte.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/contrib/tte.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/contrib/tte.py --- ../python3/contrib/tte.py (original) +++ ../python3/contrib/tte.py (refactored) @@ -68,7 +68,7 @@ http://www.garyrobinson.net/2004/02/spam_filtering_.html """ -from __future__ import division + import sys import getopt @@ -86,8 +86,8 @@ def usage(msg=None): if msg is not None: - print >> sys.stderr, msg - print >> sys.stderr, __doc__.strip() % globals() + print(msg, file=sys.stderr) + print(__doc__.strip() % globals(), file=sys.stderr) def train(store, hambox, spambox, maxmsgs, maxrounds, tdict, reverse, verbose, ratio): @@ -125,7 +125,7 @@ while round < maxrounds and (misses[ham] or misses[spam] or round == 0): round += 1 if verbose: - print >> sys.stderr, "*** round", round, "***" + print("*** round", round, "***", file=sys.stderr) start = datetime.datetime.now() hambone = iter(hambone_) @@ -142,7 +142,7 @@ train_spam = i[ham] * rspam > i[spam] * rham try: - train_msg = training_sets[train_spam].next() + train_msg = next(training_sets[train_spam]) except StopIteration: break @@ -156,13 +156,13 @@ try: score = store.spamprob(tokens) except UnicodeDecodeError: - print >> sys.stderr, "Unicode error while processing", selector + print("Unicode error while processing", selector, file=sys.stderr) continue if misclassified(train_spam, score) and selector is not None: if verbose: - print >> sys.stderr, "\tmiss %s: %.6f %s" % ( - name[train_spam], score, selector) + print("\tmiss %s: %.6f %s" % ( + name[train_spam], score, selector), file=sys.stderr) misses[train_spam] += 1 tdict[train_msg["message-id"]] = True @@ -171,8 +171,8 @@ delta = datetime.datetime.now()-start seconds = delta.seconds + delta.microseconds/1000000 - print "\rround: %2d, msgs: %4d, ham misses: %3d, spam misses: %3d, %.1fs" % \ - (round, msgs_processed, misses[0], misses[1], seconds) + print("\rround: %2d, msgs: %4d, ham misses: %3d, spam misses: %3d, %.1fs" % \ + (round, msgs_processed, misses[0], misses[1], seconds)) training_sets = [hambone, spamcan] @@ -183,7 +183,7 @@ nleft = 0 try: while True: - msg = training_sets[is_spam].next() + msg = next(training_sets[is_spam]) score = store.spamprob(tokenize(msg)) if misclassified(is_spam, score): @@ -192,10 +192,10 @@ except StopIteration: if nleft: - print nleft, "untrained %ss" % name[is_spam] + print(nleft, "untrained %ss" % name[is_spam]) def cull(mbox_name, cullext, designation, tdict): - print "writing new %s mbox..." % designation + print("writing new %s mbox..." % designation) n = m = 0 if cullext: culled_mbox = file(mbox_name + cullext, "w") @@ -228,7 +228,7 @@ "option=", "max=", "maxrounds=", "cullext=", "cull", "reverse", "ratio=", "unbalanced"]) - except getopt.GetoptError, msg: + except getopt.GetoptError as msg: usage(msg) return 1 + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/contrib/spamcounts.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/contrib/spamcounts.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/contrib/spamcounts.py --- ../python3/contrib/spamcounts.py (original) +++ ../python3/contrib/spamcounts.py (refactored) @@ -13,7 +13,7 @@ - set [section, option] in the options database to value """ -from __future__ import division + import sys import getopt @@ -29,8 +29,8 @@ def usage(msg=None): if msg is not None: - print >> sys.stderr, msg - print >> sys.stderr, __doc__.strip() % globals() + print(msg, file=sys.stderr) + print(__doc__.strip() % globals(), file=sys.stderr) def print_spamcounts(tokens, db, use_re): if use_re: @@ -62,7 +62,7 @@ try: opts, args = getopt.getopt(args, "hrto:", ["help", "re", "tokenize", "option="]) - except getopt.GetoptError, msg: + except getopt.GetoptError as msg: usage(msg) return 1 + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/contrib/showclues.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/contrib/showclues.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/contrib/showclues.py --- ../python3/contrib/showclues.py (original) +++ ../python3/contrib/showclues.py (refactored) @@ -149,7 +149,7 @@ if opt in ('-m', '--markup'): markup = True elif opt in ('-h', '--help'): - print __doc__ + print(__doc__) sys.exit() elif opt in ('-o', '--option'): options.set_from_cmdline(arg, sys.stderr) @@ -162,4 +162,4 @@ for fname in args: mbox = mboxutils.getmbox(fname) for msg in mbox: - print ShowClues(bayes, msg, markup) + print(ShowClues(bayes, msg, markup)) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/contrib/sb_culler.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/contrib/sb_culler.py --- ../python3/contrib/sb_culler.py (original) +++ ../python3/contrib/sb_culler.py (refactored) @@ -56,7 +56,7 @@ self.tests = {} self.actions = {} - def __nonzero__(self): + def __bool__(self): return bool(self.tests) and bool(self.actions) def pass_test(self, name): @@ -66,10 +66,10 @@ self.actions[name] = self.actions.get(name, 0) + 1 def accept(self, text): - print text + print(text) def info(self, text): - print text + print(text) class MessageInfo: """reference to an email message in a mailbox""" @@ -174,7 +174,7 @@ def _load_if_needed(self): mtime = os.path.getmtime(self.filename) if mtime != self._mtime: - print "Reloading", self.filename + print("Reloading", self.filename) self._mtime = mtime self._load() @@ -218,7 +218,7 @@ log.pass_test(SPAM) return "it is spam (%4.3f)" % prob if VERBOSE_LEVEL > 1: - print "not spam (%4.3f)" % prob + print("not spam (%4.3f)" % prob) return False # Simple check for executable attachments @@ -261,8 +261,8 @@ mailbox.set_debuglevel(debuglevel) if VERBOSE_LEVEL > 1: count, size = mailbox.stat() - print "Message count: ", count - print "Total bytes : ", size + print("Message count: ", count) + print("Total bytes : ", size) except: mailbox.quit() @@ -295,7 +295,7 @@ for i in range(1, count+1): if (i-1) % 10 == 0: - print " == %d/%d ==" % (i, count) + print(" == %d/%d ==" % (i, count)) # Kevin's code used -1, but -1 doesn't work for one of # my POP accounts, while a million does. # Don't use retr because that may mark the message as @@ -322,10 +322,11 @@ return log -def filter_server( (server, user, pwd), filters): +def filter_server(xxx_todo_changeme, filters): + (server, user, pwd) = xxx_todo_changeme if VERBOSE_LEVEL: - print "=" * 78 - print "Processing %s on %s" % (user, server) + print("=" * 78) + print("Processing %s on %s" % (user, server)) mailbox = open_mailbox(server, user, pwd) try: @@ -337,7 +338,7 @@ ##### User-specific -import time, sys, urllib +import time, sys, urllib.request, urllib.parse, urllib.error # A simple text interface. @@ -361,11 +362,11 @@ # That usually means my ISP dropped my DHCP and I need to # bounce my Linksys firewall/DHCP/hub. - print "Network appears to be down. Bringing Linksys down then up..." + print("Network appears to be down. Bringing Linksys down then up...") try: # Note this this example uses the default password. YMMV. - urllib.urlopen("http://:admin@192.168.1.1/Gozila.cgi?pppoeAct=2").read() - urllib.urlopen("http://:admin@192.168.1.1/Gozila.cgi?pppoeAct=1").read() + urllib.request.urlopen("http://:admin@192.168.1.1/Gozila.cgi?pppoeAct=2").read() + urllib.request.urlopen("http://:admin@192.168.1.1/Gozila.cgi?pppoeAct=1").read() except KeyboardInterrupt: raise except: @@ -379,8 +380,8 @@ for i in range(t, -1, -delta): if VERBOSE_LEVEL: if not first: - print "..", - print i, + print("..", end=' ') + print(i, end=' ') sys.stdout.flush() time.sleep(min(i, delta)) @@ -389,7 +390,7 @@ first = False - print + print() def main(): @@ -453,8 +454,8 @@ try: log = filter_server( (server, user, pwd), filters) except KeyboardInterrupt: - raw_input("Press enter to continue. ") - except StandardError: + input("Press enter to continue. ") + except Exception: raise except: error_fRefactoringTool: Files that were modified: RefactoringTool: ../python3/contrib/sb_culler.py lag = True @@ -462,14 +463,14 @@ continue if VERBOSE_LEVEL > 1 and log: - print " ** Summary **" + print(" ** Summary **") for x in (log.tests, log.actions): - items = x.items() + items = list(x.items()) if items: items.sort() for k, v in items: - print " %s: %s" % (k, v) - print + print(" %s: %s" % (k, v)) + print() cumulative_log[SPAM] += log.tests.get(SPAM, 0) cumulative_log[VIRUS] += log.tests.get(VIRUS, 0) @@ -478,20 +479,20 @@ initial_log = cumulative_log.copy() start_time = time.time() if VERBOSE_LEVEL: - print "Stats: %d spams, %d virus" % ( - initial_log[SPAM], initial_log[VIRUS]) + print("Stats: %d spams, %d virus" % ( + initial_log[SPAM], initial_log[VIRUS])) else: if VERBOSE_LEVEL: delta_t = time.time() - start_time delta_t = max(delta_t, 1) # - print "Stats: %d spams (%.2f/hr), %d virus (%.2f/hr)" % ( + print("Stats: %d spams (%.2f/hr), %d virus (%.2f/hr)" % ( cumulative_log[SPAM], (cumulative_log[SPAM] - initial_log[SPAM]) / delta_t * 3600, cumulative_log[VIRUS], (cumulative_log[VIRUS] - initial_log[VIRUS]) / - delta_t * 3600) + delta_t * 3600)) if error_flag: error_count += 1 @@ -506,9 +507,9 @@ wait(delay) break except KeyboardInterrupt: - print + print() while 1: - cmd = raw_input("enter, delay, or quit? ") + cmd = input("enter, delay, or quit? ") if cmd in ("q", "quit"): raise SystemExit(0) elif cmd == "": @@ -518,7 +519,7 @@ delay = int(cmd) break else: - print "Unknown command." + print("Unknown command.") if __name__ == "__main__": main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/contrib/pycksum.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/contrib/pycksum.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/contrib/pycksum.py --- ../python3/contrib/pycksum.py (original) +++ ../python3/contrib/pycksum.py (refactored) @@ -40,13 +40,13 @@ import email.Parser import email.generator -import anydbm +import dbm import re import time try: - import cStringIO as StringIO + import io as StringIO except ImportError: - import StringIO + import io from spambayes.port import md5 @@ -92,7 +92,7 @@ # processes can split those chunks into pieces and consider them # separately or in various combinations if desired. - fp = StringIO.StringIO() + fp = io.StringIO() g = email.generator.Generator(fp, mangle_from_=False, maxheaderlen=60) g.flatten(msg) text = fp.getvalue() @@ -109,7 +109,7 @@ def save_checksum(cksum, f): pieces = cksum.split('.') result = 1 - db = anydbm.open(f, "c") + db = dbm.open(f, "c") maxdblen = 2**14 # consider the first two pieces, the middle two pieces and the last two # pieces - one or more will likely eliminate attempts at disrupting the @@ -117,10 +117,10 @@ for subsum in (".".join(pieces[:-2]), ".".join(pieces[1:-1]), ".".join(pieces[2:])): - if not db.has_key(subsum): + if subsum not in db: db[subsum] = str(time.time()) if len(db) > maxdblen: - items = [(float(db[k]), k) for k in db.keys()] + items = [(float(db[k]), k) for k in list(db.keys())] items.sort() # the -20 brings us down a bit below the max so we aren't # constantly running this chunk of code @@ -148,7 +148,7 @@ msg = email.Parser.Parser().parse(sys.stdin) cksum = generate_checksum(msg) if dbf is None: - print cksum + print(cksum) result = 1 disp = 'nodb' else: + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/contrib/nway.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/contrib/nway.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/contrib/nway.py --- ../python3/contrib/nway.py (original) +++ ../python3/contrib/nway.py (refactored) @@ -71,7 +71,7 @@ prog = os.path.basename(sys.argv[0]) def usage(): - print >> sys.stderr, __doc__ % globals() + print(__doc__ % globals(), file=sys.stderr) def main(args): opts, args = getopt.getopt(args, "h") + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/contrib/mod_spambayes.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/contrib/mod_spambayes.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/contrib/mod_spambayes.py --- ../python3/contrib/mod_spambayes.py (original) +++ ../python3/contrib/mod_spambayes.py (refactored) @@ -17,10 +17,10 @@ def filter(self, s): if self.reply.split()[1] == '200': prob = self.checker.score("%s\r\n%s" % (self.serverheaders, s)) - print "| prob: %.5f" % prob + print("| prob: %.5f" % prob) if prob >= Options.options["Categorization", "spam_cutoff"]: - print self.serverheaders - print "text:", s[0:40], "...", s[-40:] + print(self.serverheaders) + print("text:", s[0:40], "...", s[-40:]) return "not authorized" return s + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/contrib/findbest.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/contrib/findbest.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/contrib/findbest.py --- ../python3/contrib/findbest.py (original) +++ ../python3/contrib/findbest.py (refactored) @@ -94,7 +94,7 @@ counter(tag, i) i += 1 h.train(msg, is_spam) - print + print() def score(unsure, h, cls, scores, msgids=None, skipspam=False): """See what effect on others each msg in unsure has""" @@ -116,10 +116,10 @@ total += prob first_mean = total/n - print len(okalready), "out of", n, "messages already score as spam" - print "initial mean spam prob: %.3f" % first_mean - - print "%5s %3s %5s %5s %s" % ("prob", "new", "mean", "sdev", "msgid") + print(len(okalready), "out of", n, "messages already score as spam") + print("initial mean spam prob: %.3f" % first_mean) + + print("%5s %3s %5s %5s %s" % ("prob", "new", "mean", "sdev", "msgid")) # one by one, train on each message and see what effect it has on # the other messages in the mailbox @@ -159,19 +159,19 @@ sdev = math.sqrt(sum([(mean-prob)**2 for prob in probs])/n) - print "\r%.3f %3d %.3f %.3f %s" % (msgprob, j, mean, sdev, msgid) + print("\r%.3f %3d %.3f %.3f %s" % (msgprob, j, mean, sdev, msgid)) prog = os.path.basename(sys.argv[0]) def usage(msg=None): if msg is not None: - print >> sys.stderr, msg - print >> sys.stderr, __doc__.strip() % globals() + print(msg, file=sys.stderr) + print(__doc__.strip() % globals(), file=sys.stderr) def main(args): try: opts, args = getopt.getopt(args, "b:sh") - except getopt.error, msg: + except getopt.error as msg: usage(msg) return 1 @@ -215,16 +215,16 @@ usage("can't find a place to write best.pck file") return 1 - print "establish base training" + print("establish base training") learn(ham, h, False) learn(spam, h, True) - print "scoring" + print("scoring") if best: last_scores = pickle_read(bestfile) - last_scores = last_scores.items() + last_scores = list(last_scores.items()) last_scores.sort() msgids = set() for (k, v) in last_scores[-best:]: + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/contrib/bulkgraph.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/contrib/bulkgraph.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/contrib/bulkgraph.py --- ../python3/contrib/bulkgraph.py (original) +++ ../python3/contrib/bulkgraph.py (refactored) @@ -51,9 +51,9 @@ def usage(code, msg=''): """Print usage message and sys.exit(code).""" if msg: - print >> sys.stderr, msg - print >> sys.stderr - print >> sys.stderr, __doc__ % globals() + print(msg, file=sys.stderr) + print(file=sys.stderr) + print(__doc__ % globals(), file=sys.stderr) sys.exit(code) def row(value, spamday, hamday, unsureday): @@ -125,7 +125,7 @@ try: opts, args = getopt.getopt(sys.argv[1:], 'hfqd:D:s:e:') - except getopt.error, msg: + except getopt.error as msg: usage(2, msg) if not opts: @@ -164,7 +164,7 @@ spamsizes = {} for s in spam: - if loud: print "Scanning spamdir (%s):" % s + if loud: print("Scanning spamdir (%s):" % s) files = os.listdir(s) for f in files: if f[0] in ('1', '2', '3', '4', '5', '6', '7', '8', '9'): @@ -184,7 +184,7 @@ date_re = re.compile( r";.* (\d{1,2} (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{2,4})") now = time.mktime(time.strptime(time.strftime("%d %b %Y"), "%d %b %Y")) - if loud: print "Scanning everything" + if loud: print("Scanning everything") for f in os.listdir(everything): if f[0] in ('1', '2', '3', '4', '5', '6', '7', '8', '9'): name = os.path.join(everything, f) @@ -246,19 +246,19 @@ h.train(msg, isspam) if loud: - print + print() mval = max(max(spamday), max(hamday), max(unsureday)) scale = (mval + 19) // 20 - print "%5d" % mval + print("%5d" % mval) for j in range(19, -1, -1): - print row(scale * j, spamday, hamday, unsureday) - print " +" + ('-' * 60) - print " " + legend() - print - - print "Total: %d ham, %d spam (%.2f%% spam)" % ( - hamcount, spamcount, spamcount * 100.0 / (hamcount + spamcount)) + print(row(scale * j, spamday, hamday, unsureday)) + print(" +" + ('-' * 60)) + print(" " + legend()) + print() + + print("Total: %d ham, %d spam (%.2f%% spam)" % ( + hamcount, spamcount, spamcount * 100.0 / (hamcount + spamcount))) h.store() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/contrib/SmarterHTTPServer.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/contrib/SmarterHTTPServer.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/contrib/SmarterHTTPServer.py --- ../python3/contrib/SmarterHTTPServer.py (original) +++ ../python3/contrib/SmarterHTTPServer.py (refactored) @@ -16,19 +16,19 @@ import os import posixpath -import BaseHTTPServer -import SimpleHTTPServer -import urllib +import http.server +import http.server +import urllib.request, urllib.parse, urllib.error import cgi import mimetypes import re try: - import cStringIO as StringIO + import io as StringIO except ImportError: - import StringIO + import io -class SmarterHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler): +class SmarterHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): """Smarter HTTP request handler based on SimpleHTTPRequestHandler. Adds GET with parameters, which calls a method. @@ -97,7 +97,7 @@ if hasattr(self, methname): self.send_response(200) retstr = getattr(self, methname)(pdict) - f = StringIO.StringIO(retstr) + f = io.StringIO(retstr) self.send_header("Content-type", 'text/html') self.end_headers() else: @@ -122,9 +122,9 @@ else: path = url parms = None - path = posixpath.normpath(urllib.unquote(path)) + path = posixpath.normpath(urllib.parse.unquote(path)) words = path.split('/') - words = filter(None, words) + words = [_f for _f in words if _f] path = os.getcwd() for word in words: drive, word = os.path.splitdrive(word) @@ -149,10 +149,10 @@ """ base, ext = posixpath.splitext(path) - if self.extensions_map.has_key(ext): + if ext in self.extensions_map: return self.extensions_map[ext] ext = ext.lower() - if self.extensions_map.has_key(ext): + if ext in self.extensions_map: return self.extensions_map[ext] else: return self.extensions_map[''] @@ -167,8 +167,8 @@ }) def test(HandlerClass = SmarterHTTPRequestHandler, - ServerClass = BaseHTTPServer.HTTPServer): - BaseHTTPServer.test(HandlerClass, ServerClass) + ServerClass = http.server.HTTPServer): + http.server.test(HandlerClass, ServerClass) if __name__ == '__main__': test() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/train.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/train.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/train.py --- ../python3/Outlook2000/train.py (original) +++ ../python3/Outlook2000/train.py (refactored) @@ -79,10 +79,10 @@ if train_message(message, isspam, cdata): num_added += 1 except: - print "Error training message '%s'" % (message,) + print("Error training message '%s'" % (message,)) traceback.print_exc() num += 1 - print "Checked", num, "in folder", f.name, "-", num_added, "new entries found." + print("Checked", num, "in folder", f.name, "-", num_added, "new entries found.") def real_trainer(classifier_data, config, message_store, progress): @@ -188,7 +188,7 @@ def main(): - print "Sorry - we don't do anything here any more" + print("Sorry - we don't do anything here any more") if __name__ == "__main__": main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/tester.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/tester.py --- ../python3/Outlook2000/tester.py (original) +++ ../python3/Outlook2000/tester.py (refactored) @@ -8,14 +8,14 @@ # move this test message back around, and watch the incremental retrain # in action. Also checks that the message correctly remains classified # after a message move. -from __future__ import generators + from win32com.client import constants import sys from time import sleep import copy import rfc822 -import cStringIO +import io import threading from spambayes.storage import STATE_KEY @@ -60,7 +60,7 @@ sleep(0.01) def DictExtractor(bayes): - for k, v in bayes.wordinfo.items(): + for k, v in list(bayes.wordinfo.items()): yield k, v def DBExtractor(bayes): @@ -183,7 +183,7 @@ raise TestFailed("Old test messages appear to still exist. These may" \ "be 'soft-deleted' - you will need to purge them manually") if num: - print "Cleaned %d test messages from folder '%s'" % (num, folder.Name) + print("Cleaned %d test messages from folder '%s'" % (num, folder.Name)) def CleanAllTestMessages(self): self._CleanTestMessageFromFolder(self.folder_spam) @@ -210,12 +210,12 @@ words.update(FindTopWords(bayes, 50, True)) # Create a new blank message with our words msg = self.manager.outlook.CreateItem(0) - msg.Body = "\n".join(words.keys()) + msg.Body = "\n".join(list(words.keys())) msg.Subject = TEST_SUBJECT return msg, words def check_words(words, bayes, spam_offset, ham_offset): - for word, existing_info in words.items(): + for word, existing_info in list(words.items()): new_info = bayes._wordinfoget(word) if existing_info.spamcount+spam_offset != new_info.spamcount or \ existing_info.hamcount+ham_offset != new_info.hamcount: @@ -237,7 +237,7 @@ original_bayes = copy.copy(driver.manager.classifier_data.bayes) # for each watch folder, create a spam message, and do the training thang for msf_watch, folder_watch in driver.GetWatchFolderGenerator(): - print "Performing Spam test on watch folder '%s'..." % msf_watch.GetFQName() + print("Performing Spam test on watch folder '%s'..." % msf_watch.GetFQName()) # Create a spam message in the Inbox - it should get immediately filtered msg, words = driver.CreateTestMessageInFolder(SPAM, folder_watch) # sleep to ensure filtering. @@ -343,7 +343,7 @@ TestFailed("The bayes object's 'probcache' did not compare the same at the end of all this!") spam_msg.Delete() - print "Created a Spam message, and saw it get filtered and trained." + print("Created a Spam message, and saw it get filtered and trained.") def _DoTestHamTrain(driver, folder1, folder2): # [ 780612 ] Outlook incorrectly trains on moved messages @@ -394,14 +394,14 @@ num = 0 folders = [] for f in gen: - print "Running ham filter tests on folder '%s'" % f.GetFQName() + print("Running ham filter tests on folder '%s'" % f.GetFQName()) f = f.GetOutlookItem() _DoTestHamFilter(driver, f) num += 1 folders.append(f) # Now test incremental train logic, between all these folders. if len(folders)<2: - print "NOTE: Can't do incremental training tests as only 1 watch folder is in place" + print("NOTE: Can't do incremental training tests as only 1 watch folder is in place") else: for f in folders: # 'targets' is a list of all folders except this @@ -409,12 +409,12 @@ targets.remove(f) for t in targets: _DoTestHamTrain(driver, f, t) - print "Created a Ham message, and saw it remain in place (in %d watch folders.)" % num + print("Created a Ham message, and saw it remain in place (in %d watch folders.)" % num) def TestUnsureFilter(driver): # Create a spam message in the Inbox - it should get immediately filtered for msf_watch, folder_watch in driver.GetWatchFolderGenerator(): - print "Performing Spam test on watch folder '%s'..." % msf_watch.GetFQName() + print("Performing Spam test on watch folder '%s'..." % msf_watch.GetFQName()) msg, words = driver.CreateTestMessageInFolder(UNSURE, folder_watch) # sleep to ensure filtering. WaitForFilters() @@ -425,7 +425,7 @@ if spam_msg is None: TestFailed("The test message vanished from the Inbox, but didn't appear in Unsure") spam_msg.Delete() - print "Created an unsure message, and saw it get filtered" + print("Created an unsure message, and saw it get filtered") def run_tests(manager): "Filtering tests" @@ -468,7 +468,7 @@ def apply_with_new_config(manager, new_config_dict, func, *args): old_config = {} friendly_opts = [] - for name, val in new_config_dict.items(): + for name, val in list(new_config_dict.items()): sect_name, opt_name = name.split(".") old_config[sect_name, opt_name] = manager.options.get(sect_name, opt_name) manager.options.set(sect_name, opt_name, val) @@ -477,10 +477,10 @@ try: test_name = getattr(func, "__doc__", None) if not test_name: test_name = func.__name__ - print "*" * 10, "Running '%s' with %s" % (test_name, ", ".join(friendly_opts)) + print("*" * 10, "Running '%s' with %s" % (test_name, ", ".join(friendly_opts))) func(*args) finally: - for (sect_name, opt_name), val in old_config.items(): + for (sect_name, opt_name), val in list(old_config.items()): manager.options.set(sect_name, opt_name, val) ############################################################################### @@ -492,7 +492,7 @@ # Must enable the filtering code for this test msgstore.test_suite_running = False try: - print "Scanning all your good mail and spam for some sanity checks..." + print("Scanning all your good mail and spam for some sanity checks...") num_found = num_looked = 0 num_without_headers = num_without_body = num_without_html_body = 0 for folder_ids, include_sub in [ @@ -505,33 +505,33 @@ # ipm.note messages we don't want to filter should be # reported. num_looked += 1 - if num_looked % 500 == 0: print " scanned", num_looked, "messages..." + if num_looked % 500 == 0: print(" scanned", num_looked, "messages...") if not message.IsFilterCandidate() and \ message.msgclass.lower().startswith("ipm.note"): if num_found == 0: - print "*" * 80 - print "WARNING: We found the following messages in your folders that would not be filtered by the addin" - print "If any of these messages should be filtered, we have a bug!" + print("*" * 80) + print("WARNING: We found the following messages in your folders that would not be filtered by the addin") + print("If any of these messages should be filtered, we have a bug!") num_found += 1 - print " %s/%s" % (folder.name, message.subject) + print(" %s/%s" % (folder.name, message.subject)) headers, body, html_body = message._GetMessageTextParts() if not headers: num_without_headers += 1 if not body: num_without_body += 1 # for HTML, we only check multi-part - temp_obj = rfc822.Message(cStringIO.StringIO(headers+"\n\n")) + temp_obj = rfc822.Message(io.StringIO(headers+"\n\n")) content_type = temp_obj.get("content-type", '') if content_type.lower().startswith("multipart"): if not html_body: num_without_html_body += 1 - print "Checked RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/tester.py %d items, %d non-filterable items found" % (num_looked, num_found) - print "of these items, %d had no headers, %d had no text body and %d had no HTML" % \ - (num_without_headers, num_without_body, num_without_html_body) + print("Checked %d items, %d non-filterable items found" % (num_looked, num_found)) + print("of these items, %d had no headers, %d had no text body and %d had no HTML" % \ + (num_without_headers, num_without_body, num_without_html_body)) finally: msgstore.test_suite_running = True def run_invalid_id_tests(manager): # Do some tests with invalid message and folder IDs. - print "Doing some 'invalid ID' tests - you should see a couple of warning, but no errors or tracebacks" + print("Doing some 'invalid ID' tests - you should see a couple of warning, but no errors or tracebacks") id_no_item = ('0000','0000') # this ID is 'valid' - but there will be no such item id_invalid = ('xxxx','xxxx') # this ID is 'invalid' in that the hex-bin conversion fails id_empty1 = ('','') @@ -552,7 +552,7 @@ names = manager.FormatFolderNames(ids, False) if names.find(" Testing MAPI error '%s' in %s" % (mapiutil.GetScodeString(hr), - checkpoint) + print("-> Testing MAPI error '%s' in %s" % (mapiutil.GetScodeString(hr), + checkpoint)) # message moved after we have ID, but before opening. for msf, folder in driver.GetWatchFolderGenerator(): - print "Testing in folder '%s'" % msf.GetFQName() + print("Testing in folder '%s'" % msf.GetFQName()) if is_ham: msg, words = driver.CreateTestMessageInFolder(HAM, folder) else: @@ -601,8 +601,8 @@ finally: if msg is not None: msg.Delete() - print "<- Finished MAPI error '%s' in %s" % (mapiutil.GetScodeString(hr), - checkpoint) + print("<- Finished MAPI error '%s' in %s" % (mapiutil.GetScodeString(hr), + checkpoint)) def do_failure_tests(manager): # We setup msgstore to fail for us, then try a few tests. The idea is to @@ -664,11 +664,11 @@ if manager.AskQuestion("Do you want to run the non-filter tests?" \ "\r\n\r\nThese may take some time"): run_nonfilter_tests(manager) - print "*" * 20 - print "Test suite finished without error!" - print "*" * 20 + print("*" * 20) + print("Test suite finished without error!") + print("*" * 20) finally: - print "Restoring standard configuration..." + print("Restoring standard configuration...") # Always restore configuration to how we started. msgstore.test_suite_running = False manager.test_suite_running = False @@ -678,7 +678,7 @@ SetWaitCursor(0) if __name__=='__main__': - print "NOTE: This will NOT work from the command line" - print "(it nearly will, and is useful for debugging the tests" - print "themselves, so we will run them anyway!)" + print("NOTE: This will NOT work from the command line") + print("(it nearly will, and is useful for debugging the tests") + print("themselves, so we will run them anyway!)") test() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/sandbox/set_read_flag.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/sandbox/set_read_flag.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/sandbox/set_read_flag.py --- ../python3/Outlook2000/sandbox/set_read_flag.py (original) +++ ../python3/Outlook2000/sandbox/set_read_flag.py (refactored) @@ -1,4 +1,4 @@ -from __future__ import generators + # Set items to read/unread import pythoncom @@ -31,10 +31,10 @@ hr, props = item.GetProps((PR_MESSAGE_FLAGS,), 0) ((tag, val), ) = props if val & MSGFLAG_READ == unread: - print "MAPI SetReadState appears to have failed to change the message state" - print "Requested set to unread=%s but the MAPI field after was %r" % \ - (unread, val) - print "Processed", num, "items" + print("MAPI SetReadState appears to have failed to change the message state") + print("Requested set to unread=%s but the MAPI field after was %r" % \ + (unread, val)) + print("Processed", num, "items") def usage(driver): folder_doc = driver.GetFolderNameDoc() @@ -49,7 +49,7 @@ %s Use the -n option to see all top-level folder names from all stores.""" \ % (os.path.basename(sys.argv[0]),folder_doc) - print msg + print(msg) def main(): driver = mapi_driver.MAPIDriver() @@ -57,9 +57,9 @@ import getopt try: opts, args = getopt.getopt(sys.argv[1:], "u") - except getopt.error, e: - print e - print + except getopt.error as e: + print(e) + print() usage(driver) sys.exit(1) folder_name = "" @@ -69,7 +69,7 @@ if opt == "-u": unread = True else: - print "Invalid arg" + print("Invalid arg") return if not folder_name: @@ -77,15 +77,15 @@ subject = " ".join(args) if not subject: - print "You must specify a subject" - print + print("You must specify a subject") + print() usage(driver) sys.exit(1) try: folder = driver.FindFolder(folder_name) - except ValueError, details: - print details + except ValueError as details: + print(details) sys.exit(1) SetReadState(driver, folder, subject, unread) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/sandbox/score.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/sandbox/score.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/sandbox/score.py --- ../python3/Outlook2000/sandbox/score.py (original) +++ ../python3/Outlook2000/sandbox/score.py (refactored) @@ -19,7 +19,7 @@ from addin import GetClues import mapi_driver -from cStringIO import StringIO +from io import StringIO def Score(driver, manager, mapi_folder, subject, options, stream=None): num = 0 @@ -32,7 +32,7 @@ for item in getter(*getter_args): num += 1 if num % 1000 == 0: - print >> sys.stderr, "Processed", num, "items..." + print("Processed", num, "items...", file=sys.stderr) hr, props = item.GetProps((PR_ENTRYID,PR_STORE_ENTRYID, PR_SUBJECT_A), 0) (tag, eid), (tag, store_eid), (tag, sub) = props eid = mapi.HexFromBin(eid) @@ -42,10 +42,10 @@ manager.classifier_data.message_db.load_msg(msm) score = manager.score(msm) - if not options.quiet: print "Message %r scored %g" % (sub, score) + if not options.quiet: print("Message %r scored %g" % (sub, score)) if options.show_clues: clues = GetClues(manager, msm) - if not options.quiet: print >> stream, clues + if not options.quiet: print(clues, file=stream) if options.quiet: continue @@ -55,14 +55,14 @@ from spambayes.ImageStripper import crack_images from spambayes.tokenizer import imageparts image_text, image_toks = crack_images(imageparts(eob)) - print >> stream, "Image text:", repr(image_text) - print >> stream, "Image tokens:", repr(image_toks) + print("Image text:", repr(image_text), file=stream) + print("Image tokens:", repr(image_toks), file=stream) - print >> stream # blank lines between messages + print(file=stream) # blank lines between messages except: - print >> sys.stderr, "FAILED to convert message:", sub + print("FAILED to convert message:", sub, file=sys.stderr) raise - print >> stream, "Scored", num, "messages." + print("Scored", num, "messages.", file=stream) def main(): driver = mapi_driver.MAPIDriver() @@ -99,7 +99,7 @@ subject = " ".join(args) try: folder = driver.FindFolder(options.folder) - except ValueError, details: + except ValueError as details: parser.error(details) stream = None @@ -112,7 +112,7 @@ win32clipboard.OpenClipboard() win32clipboard.EmptyClipboard() win32clipboard.SetClipboardText(stream.getvalue()) - print "Output successfuly written to the Windows clipboard" + print("Output successfuly written to the Windows clipboard") if __name__=='__main__': main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/sandbox/mapi_driver.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/sandbox/mapi_driver.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/sandbox/mapi_driver.py --- ../python3/Outlook2000/sandbox/mapi_driver.py (original) +++ ../python3/Outlook2000/sandbox/mapi_driver.py (refactored) @@ -1,4 +1,4 @@ -from __future__ import generators + # Utilities for our sandbox import os @@ -59,13 +59,13 @@ mapi.MDB_NO_MAIL | mapi.MAPI_DEFERRED_ERRORS) yield store, name, def_store - except pythoncom.com_error, details: + except pythoncom.com_error as details: hr, msg, exc, arg_err = details if hr== mapi.MAPI_E_FAILONEPROVIDER: # not logged on etc. pass else: - print "Error opening message store", details, "- ignoring" + print("Error opening message store", details, "- ignoring") def _FindSubfolder(self, store, folder, find_name): find_name = find_name.lower() @@ -86,7 +86,7 @@ store_name = name.lower() break if store_name is None: - raise RuntimeError, "Can't find a default message store" + raise RuntimeError("Can't find a default message store") folder_names = names else: store_name = names[1] @@ -97,7 +97,7 @@ folder_store = store break else: - raise ValueError, "The store '%s' can not be located" % (store_name,) + raise ValueError("The store '%s' can not be located" % (store_name,)) hr, data = store.GetProps((PR_IPM_SUBTREE_ENTRYID,), 0) subtree_eid = data[0][1] @@ -106,7 +106,7 @@ for name in folder_names: folder = self._FindSubfolder(folder_store, folder, name) if folder is None: - raise ValueError, "The subfolder '%s' can not be located" % (name,) + raise ValueError("The subfolder '%s' can not be located" % (name,)) return folder def GetAllItems(self, folder, mapi_flags = None): @@ -145,7 +145,7 @@ yield item def DumpTopLevelFolders(self): - print "Top-level folder names are:" + print("Top-level folder names are:") for store, name, is_default in self.GetMessageStores(): # Find the folder with the content. hr, data = store.GetProps((PR_IPM_SUBTREE_ENTRYID,), 0) @@ -155,7 +155,7 @@ table = folder.GetHierarchyTable(0) rows = mapi.HrQueryAllRows(table, (PR_DISPLAY_NAME_A), None, None, 0) for (name_tag, folder_name), in rows: - print " \\%s\\%s" % (name, folder_name) + print(" \\%s\\%s" % (name, folder_name)) def GetFolderNameDoc(self): def_store_name = "" @@ -175,4 +175,4 @@ if __name__=='__main__': - print "This is a utility script for the other scripts in this directory" + print("This is a utility script for the other scripts in this directory") + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/sandbox/find_dupe_props.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/sandbox/find_dupe_props.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/sandbox/find_dupe_props.py --- ../python3/Outlook2000/sandbox/find_dupe_props.py (original) +++ ../python3/Outlook2000/sandbox/find_dupe_props.py (refactored) @@ -1,4 +1,4 @@ -from __future__ import generators + # Dump every property we can find for a MAPI item import pythoncom @@ -22,7 +22,7 @@ props = ( (mapi.PS_PUBLIC_STRINGS, prop_tag), ) ids = mapi_folder.GetIDsFromNames(props, 0) if PROP_ID(ids[0])==0: - print "Could not resolve property '%s'" % prop_tag + print("Could not resolve property '%s'" % prop_tag) return 1 prop_tag = PROP_TAG( PT_UNSPECIFIED, PROP_ID(ids[0])) @@ -37,15 +37,15 @@ num_with_prop += 1 else: num_without_prop += 1 - print "Folder '%s': %d items with the property and %d items without it" \ - % (name, num_with_prop, num_without_prop) + print("Folder '%s': %d items with the property and %d items without it" \ + % (name, num_with_prop, num_without_prop)) def DumpDupes(dupe_dict): - for val, items in dupe_dict.items(): + for val, items in list(dupe_dict.items()): if len(items)>1: - print "Found %d items with property value %r" % (len(items), val) + print("Found %d items with property value %r" % (len(items), val)) for (eid, subject) in items: - print "", subject + print("", subject) def usage(driver): folder_doc = driver.GetFolderNameDoc() @@ -60,7 +60,7 @@ %s Use the -n option to see all top-level folder names from all stores.""" \ % (os.path.basename(sys.argv[0]),folder_doc) - print msg + print(msg) def main(): driver = mapi_driver.MAPIDriver() @@ -68,9 +68,9 @@ import getopt try: opts, args = getopt.getopt(sys.argv[1:], "f:n") - except getopt.error, e: - print e - print + except getopt.error as e: + print(e) + print() usage(driver) sys.exit(1) folder_names = [] @@ -82,15 +82,15 @@ driver.DumpTopLevelFolders() sys.exit(1) else: - print "Invalid arg" + print("Invalid arg") return if not folder_names: folder_names = ["Inbox"] # Assume this exists! if len(args) != 1: - print "You must specify a property tag/name" - print + print("You must specify a property tag/name") + print() usage(driver) sys.exit(1) @@ -98,8 +98,8 @@ for folder_name in folder_names: try: folder = driver.FindFolder(folder_name) - except ValueError, details: - print details + except ValueError as details: + print(details) sys.exit(1) FindDupeProps(driver, folder, args[0], dupe_dict) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/sandbox/extract_prop.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/sandbox/extract_prop.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/sandbox/extract_prop.py --- ../python3/Outlook2000/sandbox/extract_prop.py (original) +++ ../python3/Outlook2000/sandbox/extract_prop.py (refactored) @@ -54,12 +54,12 @@ num = 0 for item in items: if num > 1: - print >> sys.stderr, "Warning: More than one matching item - ignoring" + print("Warning: More than one matching item - ignoring", file=sys.stderr) break DumpItemProp(item, prop_tag, outfile) num += 1 if num==0: - print >> sys.stderr, "Error: No matching items" + print("Error: No matching items", file=sys.stderr) def usage(driver): folder_doc = driver.GetFolderNameDoc() @@ -75,7 +75,7 @@ %s Use the -n option to see all top-level folder names from all stores.""" \ % (os.path.basename(sys.argv[0]),folder_doc) - print msg + print(msg) def main(): driver = mapi_driver.MAPIDriver() @@ -83,9 +83,9 @@ import getopt try: opts, args = getopt.getopt(sys.argv[1:], "np:f:o:") - except getopt.error, e: - print e - print + except getopt.error as e: + print(e) + print() usage(driver) sys.exit(1) folder_name = prop_name = output_name = "" @@ -101,7 +101,7 @@ driver.DumpTopLevelFolders() sys.exit(1) else: - print "Invalid arg" + print("Invalid arg") return if not folder_name: @@ -109,13 +109,13 @@ subject = " ".join(args) if not subject: - print "You must specify a subject" - print + print("You must specify a subject") + print() usage(driver) sys.exit(1) if not prop_name: - print "You must specify a property" - print + print("You must specify a property") + print() usage(driver) sys.exit(1) if output_name: @@ -125,8 +125,8 @@ try: folder = driver.FindFolder(folder_name) - except ValueError, details: - print details + except ValueError as details: + print(details) sys.exit(1) DumpProp(driver, folder, subject, prop_name, output_file) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/sandbox/extract_bad_msg_from_log.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/sandbox/extract_bad_msg_from_log.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/sandbox/extract_bad_msg_from_log.py --- ../python3/Outlook2000/sandbox/extract_bad_msg_from_log.py (original) +++ ../python3/Outlook2000/sandbox/extract_bad_msg_from_log.py (refactored) @@ -5,7 +5,7 @@ def main(argv = None): if argv is None: argv = sys.argv if len(argv) < 2: - print "Need log filename" + print("Need log filename") return f = open(argv[1]) trigger = "FAILED to create email.message from: " @@ -14,7 +14,7 @@ if line.startswith(trigger): msg_repr = line[len(trigger):] if msg_repr[0] not in quotes or msg_repr[-2] not in quotes: - print "eeek - not a string repr!" + print("eeek - not a string repr!") return msg_str = eval(msg_repr) # damn it - stderr in text mode + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/sandbox/dump_props.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/sandbox/dump_props.py --- ../python3/Outlook2000/sandbox/dump_props.py (original) +++ ../python3/Outlook2000/sandbox/dump_props.py (refactored) @@ -1,4 +1,4 @@ -from __future__ import generators + # Dump every property we can find for a MAPI item import pythoncom @@ -20,7 +20,7 @@ def GetPropTagName(obj, prop_tag): hr, tags, array = obj.GetNamesFromIDs( (prop_tag,) ) - if type(array[0][1])==type(u''): + if type(array[0][1])==type(''): name = array[0][1] else: name = mapiutil.GetPropTagName(prop_tag) @@ -86,8 +86,8 @@ continue prop_repr = FormatPropertyValue(prop_tag, prop_val, item, shorten, get_large_props) - print >> stream, "%-20s: %s" % (prop_name, prop_repr) - print >> stream, "-- end of item properties --" + print("%-20s: %s" % (prop_name, prop_repr), file=stream) + print("-- end of item properties --", file=stream) def DumpProps(driver, mapi_folder, subject, include_attach, shorten, get_large, stream=None): @@ -96,28 +96,26 @@ for item in driver.GetItemsWithValue(mapi_folder, PR_SUBJECT_A, subject): DumpItemProps(item, shorten, get_large, stream) if include_attach: - print >> stream + print(file=stream) table = item.GetAttachmentTable(0) rows = mapi.HrQueryAllRows(table, (PR_ATTACH_NUM,), None, None, 0) for row in rows: attach_num = row[0][1] - print >> stream, \ - "Dumping attachment (PR_ATTACH_NUM=%d)" % (attach_num,) + print("Dumping attachment (PR_ATTACH_NUM=%d)" % (attach_num,), file=stream) attach = item.OpenAttach(attach_num, None, mapi.MAPI_DEFERRED_ERRORS) DumpItemProps(attach, shorten, get_large, stream) - print >> stream - print >> stream + print(file=stream) + print(file=stream) # Generic table dumper. def DumpTable(driver, table, name_query_ob, shorten, large_props, stream=None): cols = table.QueryColumns(TBL_ALL_COLUMNS) table.SetColumns(cols, 0) rows = mapi.HrQueryAllRows(table, cols, None, None, 0) - print >> stream, \ - "Table has %d rows, each with %d columns" % (len(rows), len(cols)) + print("Table has %d rows, each with %d columns" % (len(rows), len(cols)), file=stream) for row in rows: - print >> stream, "-- new row --" + print("-- new row --", file=stream) for col in row: prop_tag, prop_val = col # If we want 'short' variables, drop 'not found' props. @@ -127,7 +125,7 @@ prop_name = GetPropTagName(name_query_ob, prop_tag) prop_repr = FormatPropertyValue(prop_tag, prop_val, name_query_ob, shorten, large_props) - print >> stream, "%-20s: %s" % (prop_name, prop_repr) + print("%-20s: %s" % (prop_name, prop_repr), file=stream) # This dumps the raw binary data of the property Outlook uses to store # user defined fields. @@ -145,13 +143,13 @@ prop_name = GetPropTagName(folder, tag) prop_repr = FormatPropertyValue(tag, val, folder, shorten, get_large_props) - print >> stream, "%-20s: %s" % (prop_name, prop_repr) + print("%-20s: %s" % (prop_name, prop_repr), file=stream) def usage(driver, extra = None): folder_doc = driver.GetFolderNameDoc() if extra: - print extra - print + print(extra) + print() msg = """\ Usage: %s [options ...] subject of the message @@ -174,7 +172,7 @@ %s Use the -n option to see all top-level folder names from all stores.""" \ % (os.path.basename(sys.argv[0]),folder_doc) - print msg + print(msg) sys.exit(1) def main(): @@ -187,7 +185,7 @@ "dump-folder-assoc-contents", "dump-folder-user-props", RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/sandbox/dump_props.py ]) - except getopt.error, e: + except getopt.error as e: usage(driver, e) folder_name = "" @@ -238,8 +236,8 @@ usage(driver, extra) try: folder = driver.FindFolder(folder_name) - except ValueError, details: - print details + except ValueError as details: + print(details) sys.exit(1) if is_table_dump: @@ -263,7 +261,7 @@ win32clipboard.SetClipboardText(stream.read()) stream.close() os.unlink(stream_name) - print "Output successfuly written to the Windows clipboard" + print("Output successfuly written to the Windows clipboard") if __name__=='__main__': main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/sandbox/dump_profiles.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/sandbox/dump_profiles.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/sandbox/dump_profiles.py --- ../python3/Outlook2000/sandbox/dump_profiles.py (original) +++ ../python3/Outlook2000/sandbox/dump_profiles.py (refactored) @@ -18,4 +18,4 @@ 0) # any # of results is fine assert len(rows)==1, "Should be exactly one row" (tag, val), = rows[0] -print "Profile name:", val +print("Profile name:", val) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/sandbox/dump_email.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/sandbox/dump_email.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/sandbox/dump_email.py --- ../python3/Outlook2000/sandbox/dump_email.py (original) +++ ../python3/Outlook2000/sandbox/dump_email.py (refactored) @@ -15,7 +15,7 @@ from manager import BayesManager import mapi_driver -from cStringIO import StringIO +from io import StringIO def Dump(driver, manager, mapi_folder, subject, stream=None): for item in driver.GetItemsWithValue(mapi_folder, PR_SUBJECT_A, subject): @@ -23,12 +23,12 @@ (tag, eid), (tag, store_eid) = props eid = mapi.HexFromBin(eid) store_eid = mapi.HexFromBin(store_eid) - print >> stream, "Dumping message with ID %s/%s" % (store_eid, eid) + print("Dumping message with ID %s/%s" % (store_eid, eid), file=stream) msm = manager.message_store.GetMessage((store_eid, eid)) ob = msm.GetEmailPackageObject() - print >> stream, ob.as_string() - print >> stream + print(ob.as_string(), file=stream) + print(file=stream) def main(): driver = mapi_driver.MAPIDriver() @@ -52,7 +52,7 @@ subject = " ".join(args) try: folder = driver.FindFolder(options.folder) - except ValueError, details: + except ValueError as details: parser.error(details) stream = None @@ -65,7 +65,7 @@ win32clipboard.OpenClipboard() win32clipboard.EmptyClipboard() win32clipboard.SetClipboardText(stream.getvalue()) - print "Output successfuly written to the Windows clipboard" + print("Output successfuly written to the Windows clipboard") if __name__=='__main__': main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/sandbox/delete_outlook_field.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/sandbox/delete_outlook_field.py --- ../python3/Outlook2000/sandbox/delete_outlook_field.py (original) +++ ../python3/Outlook2000/sandbox/delete_outlook_field.py (refactored) @@ -1,4 +1,4 @@ -from __future__ import generators + # Do the best we can to completely obliterate a field from Outlook! from win32com.client import Dispatch, constants @@ -31,7 +31,7 @@ # OK - now try and wipe the field using MAPI. propIds = folder.GetIDsFromNames(((mapi.PS_PUBLIC_STRINGS,name),), 0) if PROP_TYPE(propIds[0])==PT_ERROR: - print "No such field '%s' in folder" % (name,) + print("No such field '%s' in folder" % (name,)) return 0 assert propIds[0] == PROP_TAG( PT_UNSPECIFIED, PROP_ID(propIds[0])) num_mapi = 0 @@ -69,8 +69,8 @@ name = ups.Item(i+1).Name fields[name] = fields.get(name, 0)+1 entry = entries.GetNext() - for name, num in fields.items(): - print name, num + for name, num in list(fields.items()): + print(name, num) def ShowFields(folder, field_name): field_name = field_name.lower() @@ -84,7 +84,7 @@ name = up.Name if name.lower()==field_name: subject = entry.Subject.encode("mbcs", "replace") - print "%s: %s (%d)" % (subject, up.Value, up.Type) + print("%s: %s (%d)" % (subject, up.Value, up.Type)) entry = entries.GetNext() def usage(driver): @@ -104,7 +104,7 @@ %s Use the -n option to see all top-level folder names from all stores.""" \ % (os.path.basename(sys.argv[0]), folder_doc) - print msg + print(msg) def main(): @@ -115,9 +115,9 @@ opts, args = getopt.getopt(sys.argv[1:], "dnsf:", ["no-mapi", "no-outlook", "no-folder"]) - except getopt.error, e: - print e - print + except getopt.error as e: + print(e) + print() usage(driver) sys.exit(1) delete = show = False @@ -140,23 +140,23 @@ driver.DumpTopLevelFolders() sys.exit(1) else: - print "Invalid arg" + print("Invalid arg") return if not folder_names: folder_names = ["Inbox"] # Assume this exists! if not args: - print "No args specified - dumping all unique UserProperty names," - print "and the count of messages they appear in" + print("No args specified - dumping all unique UserProperty names,") + print("and the count of messages they appear in") outlook = None for folder_name in folder_names: try: folder = driver.FindFolder(folder_name) - except ValueError, details: - print details - print "Ignoring folder '%s'" % (folder_name,) + except ValueError as details: + print(details) + print("Ignoring folder '%s'" % (folder_name,)) continue - print "Processing folder '%s'" % (folder_name,) + print("Processing folder '%s'" % (folder_name,)) if not args: outlook_folder = driver.GetOutlookFolder(folder) CountFields(outlook_folder) @@ -166,20 +166,20 @@ outlook_folder = driver.GetOutlookFolder(folder) ShowFields(outlook_folder, field_name) if delete: - print "Deleting field", field_name + print("Deleting field", field_name) if do_outlook: outlook_folder = driver.GetOutlookFolder(folder) num = DeleteField_Outlook(outlook_folder, field_name) - print "Deleted", num, "field instances from Outlook" + print("Deleted", num, "field instances from Outlook") if do_mapi: num = DeleteField_MAPI(driver, folder, field_name) - print "Deleted", num, "field instances via MAPI" + print("Deleted", num, "field instances via MAPI") if do_folder: RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/sandbox/delete_outlook_field.py num = DeleteField_Folder(driver, folder, field_name) if num: - print "Deleted property from folder" + print("Deleted property from folder") else: - print "Could not find property to delete in the folder" + print("Could not find property to delete in the folder") ## item = folder.Items.Add() ## props = item.UserProperties + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/msgstore.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/msgstore.py --- ../python3/Outlook2000/msgstore.py (original) +++ ../python3/Outlook2000/msgstore.py (refactored) @@ -1,4 +1,4 @@ -from __future__ import generators + import sys, os, re import locale @@ -13,9 +13,9 @@ from email.Utils import formatdate try: - from cStringIO import StringIO + from io import StringIO except ImportError: - from StringIO import StringIO + from io import StringIO # MAPI imports etc. from win32com.client import Dispatch, constants @@ -64,7 +64,7 @@ test_suite_failure_count -= 1 if test_suite_failure_count==0: test_suite_failure_request = None - raise test_suite_failure[0], test_suite_failure[1] + raise test_suite_failure[0](test_suite_failure[1]) # Exceptions raised by this module. Raw MAPI exceptions should never # be raised to the caller. @@ -83,7 +83,7 @@ # Python silently consumes exceptions here, and uses # except: - print "FAILED to str() a MsgStore exception!" + print("FAILED to str() a MsgStore exception!") import traceback traceback.print_exc() @@ -307,23 +307,23 @@ for folder_id in folder_ids: try: folder_id = self.NormalizeID(folder_id) - except MsgStoreException, details: - print "NOTE: Skipping invalid folder", details + except MsgStoreException as details: + print("NOTE: Skipping invalid folder", details) continue try: folder = self._OpenEntry(folder_id) table = folder.GetContentsTable(0) - except pythoncom.com_error, details: + except pythoncom.com_error as details: # We will ignore *all* such errors for the time # being, but give verbose details for results we don't # know about if IsNotAvailableCOMException(details): - print "NOTE: Skipping folder for this session - temporarily unavailable" + print("NOTE: Skipping folder for this session - temporarily unavailable") elif IsNotFoundCOMException(details): - print "NOTE: Skipping deleted folder" + print("NOTE: Skipping deleted folder") else: - print "WARNING: Unexpected MAPI error opening folder" - print GetCOMExceptionString(details) + print("WARNING: Unexpected MAPI error opening folder") + print(GetCOMExceptionString(details)) continue rc, props = folder.GetProps( (PR_DISPLAY_NAME_A,), 0) yield MAPIMsgStoreFolder(self, folder_id, props[0][1], @@ -350,7 +350,7 @@ folder_id = folder_id[0], props[0][1] return MAPIMsgStoreFolder(self, folder_id, props[1][1], table.GetRowCount(0)) - except pythoncom.com_error, details: + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) def GetMessage(self, message_id): @@ -367,7 +367,7 @@ mapi_object = self._OpenEntry(message_id) hr, data = mapi_object.GetProps(MAPIMsgStoreMsg.message_init_props,0) return MAPIMsgStoreMsg(self, data) - except pythoncom.com_error, details: + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) def YieldReceiveFolders(self, msg_class = "IPM.Note"): @@ -386,9 +386,9 @@ folder_eid, ret_class = store.GetReceiveFolder(msg_class, 0) hex_folder_eid = mapi.HexFromBin(folder_eid) hex_store_eid = mapi.HexFromBin(store_eid) - except pythoncom.com_error, details: + except pythoncom.com_error as details: if not IsNotAvailableCOMException(details): - print "ERROR enumerating a receive folder -", details + print("ERROR enumerating a receive folder -", details) continue try: folder = self.GetFolder((hex_store_eid, hex_folder_eid)) @@ -397,8 +397,8 @@ # folders with a parent. if folder.GetParent() is not None: yield folder - except MsgStoreException, details: - print "ERROR opening receive folder -", details + except MsgStoreException as details: + print("ERROR opening receive folder -", details) # but we just continue continue @@ -406,7 +406,7 @@ type(0.0): PT_DOUBLE, type(0): PT_I4, type(''): PT_STRING8, - type(u''): PT_UNICODE, + type(''): PT_UNICODE, # In Python 2.2.2, bool isn't a distinct type (type(1==1) is type(0)). # type(1==1): PT_BOOLEAN, } @@ -423,9 +423,9 @@ break chunks.append(chunk) return "".join(chunks) - except pythoncom.com_error, d: - print "Error getting property", mapiutil.GetPropTagName(prop_id), \ - "from stream:", d + except pythoncom.com_error as d: + print("Error getting property", mapiutil.GetPropTagName(prop_id), \ + "from stream:", d) return "" def GetPotentiallyLargeStringProp(mapi_object, prop_id, row): @@ -440,8 +440,8 @@ else: tag_name = mapiutil.GetPropTagName(prop_id) err_string = mapiutil.GetScodeString(got_val) - print "Warning - failed to get property %s: %s" % (tag_name, - err_string) + print("Warning - failed to get property %s: %s" % (tag_name, + err_string)) else: ret = got_val return ret @@ -453,9 +453,9 @@ 0, 0) html_stream = mapi.WrapCompressedRTFStream(rtf_stream, 0) html = mapi.RTFStreamToHTML(html_stream) - except pythoncom.com_error, details: + except pythoncom.com_error as details: if not IsNotFoundCOMException(details): - print "ERROR getting RTF body", details + print("ERROR getting RTF body", details) return "" # html may be None if RTF not originally from HTML, but here we # always want a string @@ -519,9 +519,9 @@ # top-level folder shown by Outlook. This folder should *never* # be used directly. parts = [name] - print "WARNING: It appears you are using the top-level root of " \ + print("WARNING: It appears you are using the top-level root of " \ "the information store as a folder. You probably don't "\ - "want to do that" + "want to do that") return "/".join(parts) def _FolderFromMAPIFolder(self, mapifolder): @@ -551,7 +551,7 @@ parent = self.msgstore._OpenEntry(parent_id) # Finally get the item itself return self._FolderFromMAPIFolder(parent) - except pythoncom.com_error, details: + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) def OpenEntry(self, iid = None, flags = None): @@ -562,7 +562,7 @@ hex_item_id = mapi.HexFromBin(self.id[1]) hex_store_id = mapi.HexFromBin(self.id[0]) return self.msgstore.outlook.Session.GetFolderFromID(hex_item_id, hex_store_id) - except pythoncom.com_error, details: + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) def GetMessageGenerator(self, only_filter_candidates = True): @@ -655,7 +655,7 @@ try: folder = self.OpenEntry() return folder.GetContentsTable(0).GetRowCount(0) - except pythoncom.com_error, details: + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) # EmptyFolder() *permanently* deletes ALL messages and subfolders from @@ -668,7 +668,7 @@ try: folder = self.OpenEntry() folder.EmptyFolder(parentWindow, None, FOLDER_DIALOG) - except pythoncom.com_error, details: + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) def DoesFolderHaveOutlookField(self, field_name): @@ -694,8 +694,8 @@ table.SetColumns(cols, 0) rows = mapi.HrQueryAllRows(table, cols, restriction, None, 0) if len(rows)>1: - print "Eeek - only expecting one row from IPC.MS.REN.USERFIELDS" - print "got", repr(rows) + print("Eeek - only expecting one row from IPC.MS.REN.USERFIELDS") + print("got", repr(rows)) return None if len(rows)==0: # New folders with no userdefined fields do not have such a row, @@ -703,10 +703,10 @@ return False row = rows[0] val = GetPotentiallyLargeStringProp(folder, cols[0], row[0]) - except pythoncom.com_error, details: + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) if type(val) != type(''): - print "Value type incorrect - expected string, got", repr(val) + print("Value type incorrect - expected string, got", repr(val)) return None return val.find("\0" + field_name) >= 0 @@ -726,7 +726,7 @@ folder = self.msgstore._OpenEntry(self.id) # Nuke my MAPI reference, and set my ID to None folder.DeleteMessages(real_ids, 0, None, 0) - except pythoncom.com_error, details: + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) def CreateTemporaryMessage(self, msg_flags = None): @@ -748,7 +748,7 @@ eid = data[0][1] storeid = data[1][1] msg_id = mapi.HexFromBin(storeid), mapi.HexFromBin(eid) - except pythoncom.com_error, details: + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) return self.msgstore.GetMessage(msg_id) @@ -963,8 +963,8 @@ pass # Nothing we can fetch :( else: if len(rows) > 1: - print "WARNING: Found %d rows with multipart/signed" \ - "- using first only" % len(rows) + print("WARNING: Found %d rows with multipart/signed" \ + "- using first only" % len(rows)) row = rows[0] (attach_num_tag, attach_num), = row assert attach_num_tag != PT_ERROR, \ @@ -1071,7 +1071,7 @@ try: help_test_suite("MAPIMsgStoreMsg._EnsureObject") self.mapi_object = self.msgstore._OpenEntry(self.id) - except pythoncom.com_error, details: + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) def _GetAttachmentsToInclude(self): @@ -1089,7 +1089,7 @@ table = self.mapi_object.GetAttachmentTable(0) tags = PR_ATTACH_NUM,PR_ATTACH_MIME_TAG_A,PR_ATTACH_SIZE,PR_ATTACH_DATA_BIN attach_rows = mapi.HrQueryAllRows(table, tags, None, None, 0) - except pythoncom.com_error, why: + except pythoncom.com_error as why: attach_rows = [] attachments = [] @@ -1235,7 +1235,7 @@ # email.Errors.HeaderParseError: caught above except: text = '\r\n'.join([header_text, body, html]) - print "FAILED to create email.message from: ", `text` + print("FAILED to create email.message from: ", repr(text)) raise return root_msg @@ -1313,13 +1313,13 @@ text[butcher_pos+1:] + "\n\n" msg = email.message_from_string(butchered) except: - print "FAILED to create email.message from: ", `text` + print("FAILED to create email.message from: ", repr(text)) raise if strip_mime_headers: - if msg.has_key('content-type'): + if 'content-type' in msg: del msg['content-type'] - if msg.has_key('content-transfer-encoding'): + if 'content-transfer-encoding' in msg: del msg['content-transfer-encoding'] return msg @@ -1353,8 +1353,8 @@ propIds = self.mapi_object.GetIDsFromNames(props, mapi.MAPI_CREATE) type_tag = _MapiTypeMap.get(type(val)) if type_tag is None: - raise ValueError, "Don't know what to do with '%r' ('%s')" % ( - val, type(val)) + raise ValueError("Don't know what to do with '%r' ('%s')" % ( + val, type(val))) prop = PROP_TAG(type_tag, PROP_ID(propIds[0])) help_test_suite("MAPIMsgStoreMsg.SetField") if val is None: @@ -1363,7 +1363,7 @@ else: self.mapi_object.SetProps(((prop,val),)) self.dirty = True - except pythoncom.com_error, details: + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) def GetField(self, prop): @@ -1384,7 +1384,7 @@ return GetPropFromStream(self.mapi_object, prop) return None return val - except pythoncom.com_error, details: + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) def GetReadState(self): @@ -1402,10 +1402,10 @@ self.mapi_object.SetReadFlag(USE_DEFERRED_ERRORS|CLEAR_READ_FLAG) if __debug__: if self.GetReadState() != is_read: - print "MAPI SetReadState appears to have failed to change the message state" - print "Requested set to %s but the MAPI field after was %r" % \ - (is_read, self.GetField(PR_MESSAGE_FLAGS)) - except pythoncom.com_error, details: + print("MAPI SetReadState appears to have failed to change the message state") + print("Requested set to %s but the MAPI field after was %r" % \ + (is_read, self.GetField(PR_MESSAGE_FLAGS))) + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) def Save(self): @@ -1416,7 +1416,7 @@ help_test_suite("MAPIMsgStoreMsg.Save") self.mapi_object.SaveChanges(mapi.KEEP_OPEN_READWRITE) self.dirty = False - except pythoncom.com_error, details: + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) def _DoCopyMove(self, folder, isMove): @@ -1441,7 +1441,7 @@ # the item, and set the store_id to the dest folder. self.id = None self.folder_id = None - except pythoncom.com_error, details: + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) def MoveTo(self, folder): @@ -1459,13 +1459,13 @@ def MoveToReportingError(self, manager, folder): try: self.MoveTo(folder) - except MsgStoreException, details: + except MsgStoreException as details: ReportMAPIError(manager, _("Moving a message"), details.mapi_exception) def CopyToReportingError(self, manager, folder): try: self.MoveTo(folder) - except MsgStoreException, details: + except MsgStoreException as details: ReportMAPIError(manager, _("Copying a message"), details.mapi_exception) @@ -RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/msgstore.py 1492,7 +1492,7 @@ prop_tuples = (prop_ids[0],folder.id[0]), (prop_ids[1],folder.id[1]) self.mapi_object.SetProps(prop_tuples) self.dirty = True - except pythoncom.com_error, details: + except pythoncom.com_error as details: raise MsgStoreExceptionFromCOMException(details) def GetRememberedFolder(self): @@ -1515,7 +1515,7 @@ # Try to get it from the message info database, if possible if self.original_folder: return self.msgstore.GetFolder(self.original_folder) - print "Error locating origin of message", self + print("Error locating origin of message", self) return None def test(): @@ -1524,9 +1524,9 @@ folder_id = inbox.Parent.StoreID, inbox.EntryID store = MAPIMsgStore() for folder in store.GetFolderGenerator([folder_id,], True): - print folder + print(folder) for msg in folder.GetMessageGenerator(): - print msg + print(msg) store.Close() if __name__=='__main__': + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/manager.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/manager.py --- ../python3/Outlook2000/manager.py (original) +++ ../python3/Outlook2000/manager.py (refactored) @@ -1,6 +1,6 @@ -from __future__ import generators - -import cPickle + + +import pickle import os import sys import errno @@ -10,7 +10,7 @@ import operator import win32api, win32con, win32gui -import timer, thread +import timer, _thread import win32com.client import win32com.client.gencache @@ -40,7 +40,7 @@ def ReportError(message, title = None): import traceback - print "ERROR:", repr(message) + print("ERROR:", repr(message)) if sys.exc_info()[0] is not None: traceback.print_exc() if title is None: title = "SpamBayes" @@ -132,7 +132,7 @@ # Convert if necessary. use_names = [] for name in ini_filenames: - if isinstance(name, unicode): + if isinstance(name, str): name = name.encode(filesystem_encoding) use_names.append(name) os.environ["BAYESCUSTOMIZE"] = os.pathsep.join(use_names) @@ -157,7 +157,7 @@ temp_filename = filename + ".tmp" file = open(temp_filename,"wb") try: - cPickle.dump(what, file, 1) + pickle.dump(what, file, 1) finally: file.close() # now rename to the correct file. @@ -183,7 +183,7 @@ # Just delete the file and do an "open" try: os.unlink(self.bayes_filename) - except EnvironmentError, e: + except EnvironmentError as e: if e.errno != errno.ENOENT: raise return self.open_bayes() def store_bayes(self, bayes): @@ -195,7 +195,7 @@ def open_mdb(self): # MessageInfo storage types may lag behind, so use pickle if the # matching type isn't available. - if self.klass in bayes_message._storage_types.keys(): + if self.klass in list(bayes_message._storage_types.keys()): return bayes_message.open_storage(self.mdb_filename, self.klass) return bayes_message.open_storage(self.mdb_filename, "pickle") def store_mdb(self, mdb): @@ -217,7 +217,7 @@ def new_mdb(self): try: os.unlink(self.mdb_filename) - except EnvironmentError, e: + except EnvironmentError as e: if e.errno != errno.ENOENT: raise return self.open_mdb() def is_incremental(self): @@ -247,11 +247,11 @@ # file-not-found handled gracefully by storage. bayes = self.db_manager.open_bayes() fname = self.db_manager.bayes_filename.encode("mbcs", "replace") - print "Loaded bayes database from '%s'" % (fname,) + print("Loaded bayes database from '%s'" % (fname,)) message_db = self.db_manager.open_mdb() fname = self.db_manager.mdb_filename.encode("mbcs", "replace") - print "Loaded message database from '%s'" % (fname,) + print("Loaded message database from '%s'" % (fname,)) self.logger.LogDebug(0, "Bayes database initialized with " "%d spam and %d good messages" % (bayes.nspam, bayes.nham)) @@ -284,7 +284,7 @@ else: self.logger.LogDebug(1, "Bayes database is not dirty - not writing") else: - print "Using a slow database - not saving after incremental train" + print("Using a slow database - not saving after incremental train") def Save(self): import time @@ -292,19 +292,19 @@ bayes = self.bayes if self.logger.verbose: - print "Saving bayes database with %d spam and %d good messages" %\ - (bayes.nspam, bayes.nham) - print " ->", self.db_manager.bayes_filename + print("Saving bayes database with %d spam and %d good messages" %\ + (bayes.nspam, bayes.nham)) + print(" ->", self.db_manager.bayes_filename) self.db_manager.store_bayes(self.bayes) if self.logger.verbose: - print " ->", self.db_manager.mdb_filename + print(" ->", self.db_manager.mdb_filename) self.db_manager.store_mdb(self.message_db) self.dirty = False self.logger.LogDebug(1, "Saved databases in %gms" % ((time.clock()-start)*1000)) def Close(self): if self.dirty and self.bayes: - print "Warning: ClassifierData closed while Bayes database dirty" + print("Warning: ClassifierData closed while Bayes database dirty") if self.db_manager: self.db_manager.close_bayes(self.bayes) self.db_manager.close_mdb(self.message_db) @@ -339,14 +339,14 @@ if use_db not in available: # User is trying to use something fancy which isn't available. # Fall back on bsddb. - print use_db, "storage type not available. Using bsddb." + print(use_db, "storage type not available. Using bsddb.") use_db = "dbm" return available[use_db] # Our main "bayes manager" class BayesManager: def __init__(self, config_base="default", outlook=None, verbose=0): - self.owner_thread_ident = thread.get_ident() # check we aren't multi-threaded + self.owner_thread_ident = _thread.get_ident() # check we aren't multi-threaded self.never_configured = True self.reported_error_map = {} self.reported_startup_error = False @@ -387,16 +387,16 @@ value = value.decode(filesystem_encoding) except AttributeError: # May already be Unicode pass - assert isinstance(value, types.UnicodeType), "%r should be a unicode" % value + assert isinstance(value, str), "%r should be a unicode" % value try: if not os.path.isdir(value): os.makedirs(value) assert os.path.isdir(value), "just made the *ucker" value = os.path.abspath(value) except os.error: - print "The configuration files have specified a data " \ + print("The configuration files have specified a data " \ "directory of", repr(value), "but it is not valid. " \ - "Using default." + "Using default.") value = None if value: self.data_directory = value @@ -468,19 +468,19 @@ def LogDebug(self, level, *args): if self.verbose >= level: for arg in args[:-1]: - print arg, - print args[-1] + print(arg, end=' ') + print(args[-1]) def ReportError(self, message, title = None): if self.test_suite_running: - print "ReportError:", repr(message) - print "(but test suite running - not reported)" + print("ReportError:", repr(message)) + print("(but test suite running - not reported)") return ReportError(message, title) def ReportInformation(self, message, title=None): if self.test_suite_running: - print "ReportInformation:", repr(message) - print "(but test suite running - not reported)" + print("ReportInformation:", repr(message)) + print("(but test suite running - not reported)") return ReportInformation(message, title) def AskQuestion(self, message, title=None): @@ -506,19 +506,19 @@ else: # We have reported the error, but for the sake of the log, we # still want it logged there. - print "ERROR:", repr(message) + print("ERROR:", repr(message)) traceback.print_exc() def ReportErrorOnce(self, msg, title = None, key = None): if key is None: key = msg # Always print the message and traceback. if self.test_suite_running: - print "ReportErrorOnce:", repr(msg) - print "(but test suite running - not reported)" + print("ReportErrorOnce:", repr(msg)) + print("(but test suite running - not reported)") return - print "ERROR:", repr(msg) + print("ERROR:", repr(msg)) if key in self.reported_error_map: - print "(this error has already been reported - not displaying it again)" + print("(this error has already been reported - not displaying it again)") else: traceback.print_exc() self.reported_error_map[key] = True @@ -618,15 +618,15 @@ True, # Add to folder format) outlook_message.Save() - except pythoncom.com_error, details: + except pythoncom.com_error as details: if msgstore.IsReadOnlyCOMException(details): self.LogDebug(1, "The folder '%s' is read-only - user " "property can't be added" % (folder_name,)) else: - print "Warning: failed to create the Outlook " \ + print("Warning: failed to create the Outlook " \ "user-property in folder '%s'" \ - % (folder_name,) - print "", details + % (folder_name,)) + print("", details) msgstore_folder.DeleteMessages((message,)) # Check our DoesFolderHaveOutlookField logic holds up. if not msgstore_folder.DoesFolderHaveOutlookField(field_name): @@ -674,10 +674,10 @@ # should only happen in source-code versions - older win32alls can't # determine this. profile_name = "unknown_profile" - print "*** NOTE: It appears you are running the source-code version of" - print "* SpamBayes, and running a win32all version pre 154." - print "* If you work with multiple Outlook profiles, it is recommended" - print "* you upgrade - see http://starship.python.net/crew/mhammond""" + print("*** NOTE: It appears you are running the source-code version of") + print("* SpamBayes, and running a win32all version pre 154.") + print("* If you work with multiple Outlook profiles, it is recommended") + print("* you upgrade - see http://starship.python.net/crew/mhammond""") return profile_name def LoadConfig(self): @@ -702,9 +702,9 @@ config.MigrateOptions(self.options) if self.verbose > 1: - print "Dumping loaded configuration:" - print self.options.display() - print "-- end of configuration --" + print("Dumping loaded configuration:") + print(self.options.display()) + print("-- end of configuration --") def MigrateOldPickle(self): assert self.config is not None, "Must have a config" @@ -715,12 +715,12 @@ except IOError: self.LogDebug(1, "No old pickle file to migrate") return - print "Migrating old pickle '%s'" % pickle_filename + print("Migrating old pickle '%s'" % pickle_filename) try: try: - old_config = cPickle.load(f) + old_config = pickle.load(f) except: - print "FAILED to load old pickle" + print("FAILED to load old pickle") traceback.print_exc() msg = _("There was an error loading your old\r\n" \ "SpamBayes configuration file.\r\n\r\n" \ @@ -733,14 +733,14 @@ finally: f.close() if old_config is not None: - for section, items in old_config.__dict__.items(): - print " migrating section '%s'" % (section,) + for section, items in list(old_config.__dict__.items()): + print(" migrating section '%s'" % (section,)) # exactly one value wasn't in a section - now in "general" dict = getattr(items, "__dict__", None) if dict is None: dict = {section: items} section = "general" - for name, value in dict.items(): + for name, value in list(dict.items())RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/manager.py : sect = getattr(self.config, section) setattr(sect, name, value) # Save the config, then delete the pickle so future attempts to @@ -769,12 +769,12 @@ # Update our runtime verbosity from the options. self.verbose = self.config.general.verbose - print "Saving configuration ->", self.config_filename.encode("mbcs", "replace") + print("Saving configuration ->", self.config_filename.encode("mbcs", "replace")) assert self.config and self.options, "Have no config to save!" if self.verbose > 1: - print "Dumping configuration to save:" - print self.options.display() - print "-- end of configuration --" + print("Dumping configuration to save:") + print(self.options.display()) + print("-- end of configuration --") self.options.update_file(self.config_filename) def Save(self): @@ -847,11 +847,11 @@ if config.unsure_folder_id: try: unsure_folder = ms.GetFolder(config.unsure_folder_id) - except ms.MsgStoreException, details: + except ms.MsgStoreException as details: return _("The unsure folder is invalid: %s") % (details,) try: spam_folder = ms.GetFolder(config.spam_folder_id) - except ms.MsgStoreException, details: + except ms.MsgStoreException as details: return _("The spam folder is invalid: %s") % (details,) if ok_to_enable: for folder in ms.GetFolderGenerator(config.watch_folder_ids, @@ -894,8 +894,8 @@ def ShowHtml(self,url): """Displays the main SpamBayes documentation in your Web browser""" - import sys, os, urllib - if urllib.splittype(url)[0] is None: # just a file spec + import sys, os, urllib.request, urllib.parse, urllib.error + if urllib.parse.splittype(url)[0] is None: # just a file spec if hasattr(sys, "frozen"): # New binary is in ../docs/outlook relative to executable. fname = os.path.join(os.path.dirname(sys.argv[0]), @@ -938,9 +938,9 @@ self._DoStartNotifyTimer(delay) def _DoStartNotifyTimer(self, delay): - assert thread.get_ident() == self.owner_thread_ident + assert _thread.get_ident() == self.owner_thread_ident assert self.notify_timer_id is None, "Shouldn't start a timer when already have one" - assert isinstance(delay, types.FloatType), "Timer values are float seconds" + assert isinstance(delay, float), "Timer values are float seconds" # And start a new timer. assert delay, "No delay means no timer!" delay = int(delay*1000) # convert to ms. @@ -948,7 +948,7 @@ self.LogDebug(1, "Notify timer started - id=%d, delay=%d" % (self.notify_timer_id, delay)) def _KillNotifyTimer(self): - assert thread.get_ident() == self.owner_thread_ident + assert _thread.get_ident() == self.owner_thread_ident if self.notify_timer_id is not None: timer.kill_timer(self.notify_timer_id) self.LogDebug(2, "The notify timer with id=%d was stopped" % self.notify_timer_id) @@ -956,7 +956,7 @@ def _NotifyTimerFunc(self, event, time): # Kill the timer first - assert thread.get_ident() == self.owner_thread_ident + assert _thread.get_ident() == self.owner_thread_ident self.LogDebug(1, "The notify timer with id=%s fired" % self.notify_timer_id) self._KillNotifyTimer() @@ -999,7 +999,7 @@ return 0 def usage(): - print "Usage: manager [-v ...]" + print("Usage: manager [-v ...]") sys.exit(1) if __name__=='__main__': + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/filter.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/filter.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/filter.py --- ../python3/Outlook2000/filter.py (original) +++ ../python3/Outlook2000/filter.py (refactored) @@ -76,10 +76,10 @@ # Clear dirty flag anyway mgr.LogDebug(1, "Message is read-only - could not save Spam score") msg.dirty = False - except ms.MsgStoreException, details: + except ms.MsgStoreException as details: # Some other error saving - this is nasty. - print "Unexpected MAPI error saving the spam score for", msg - print details + print("Unexpected MAPI error saving the spam score for", msg) + print(details) # Clear dirty flag anyway msg.dirty = False @@ -95,8 +95,8 @@ try: dest_folder = ms.GetFolder(folder_id) except ms.MsgStoreException: - print "ERROR: Unable to open the folder to Copy the " \ - "message - this message was not copied" + print("ERROR: Unable to open the folder to Copy the " \ + "message - this message was not copied") else: msg.CopyToReportingError(mgr, dest_folder) mgr.LogDebug(1, "Copied message '%s' to folder '%s'" \ @@ -105,14 +105,14 @@ try: dest_folder = ms.GetFolder(folder_id) except ms.MsgStoreException: - print "ERROR: Unable to open the folder to Move the " \ - "message - this message was not moved" + print("ERROR: Unable to open the folder to Move the " \ + "message - this message was not moved") else: msg.MoveToReportingError(mgr, dest_folder) mgr.LogDebug(1, "Moved message '%s' to folder '%s'" \ % (msg.subject, dest_folder.GetFQName())) else: - raise RuntimeError, "Eeek - bad action '%r'" % (action,) + raise RuntimeError("Eeek - bad action '%r'" % (action,)) if all_actions: mgr.stats.RecordClassification(prob) @@ -121,7 +121,7 @@ mgr.classifier_data.SavePostIncrementalTrain() return disposition except: - print "Failed filtering message!", msg + print("Failed filtering message!", msg) import traceback traceback.print_exc() return "Failed" @@ -143,7 +143,7 @@ disposition = filter_message(message, mgr, all_actions) except: import traceback - print "Error filtering message '%s'" % (message,) + print("Error filtering message '%s'" % (message,)) traceback.print_exc() disposition = "Error" @@ -167,13 +167,13 @@ for f in mgr.message_store.GetFolderGenerator(config.folder_ids, config.include_sub): progress.set_status(_("Filtering folder '%s'") % (f.name)) this_dispositions = filter_folder(f, mgr, config, progress) - for key, val in this_dispositions.items(): + for key, val in list(this_dispositions.items()): dispositions[key] = dispositions.get(key, 0) + val if progress.stop_requested(): return # All done - report what we did. err_text = "" - if dispositions.has_key("Error"): + if "Error" in dispositions: err_text = _(" (%d errors)") % dispositions["Error"] dget = dispositions.get text = _("Found %d spam, %d unsure and %d good messages%s") % \ @@ -181,7 +181,7 @@ progress.set_status(text) def main(): - print "Sorry - we don't do anything here any more" + print("Sorry - we don't do anything here any more") if __name__ == "__main__": main() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/export.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/export.py --- ../python3/Outlook2000/export.py (original) +++ ../python3/Outlook2000/export.py (refactored) @@ -101,7 +101,7 @@ num = 0 store = manager.message_store for folder in store.GetFolderGenerator(folder_ids, include_sub): - print "", folder.name + print("", folder.name) for message in folder.GetMessageGenerator(): this_dir = os.path.join(root, choice(buckets)) # filename is the EID.txt @@ -110,8 +110,8 @@ except KeyboardInterrupt: raise except: - print "Failed to get message text for '%s': %s" \ - % (message.GetSubject(), sys.exc_info()[1]) + print("Failed to get message text for '%s': %s" \ + % (message.GetSubject(), sys.exc_info()[1])) continue fname = os.path.join(this_dir, message.GetID()[1]) + ".txt" @@ -124,12 +124,12 @@ # This does all the work. 'directory' is the parent directory for the # generated Ham and Spam sub-folders. def export(directory, num_buckets, old_style): - print "Loading bayes manager..." + print("Loading bayes manager...") manager = GetManager() config = manager.config num_spam, num_ham, buckets = BuildBuckets(manager, num_buckets) - print "Have", num_spam, "spam and", num_ham, "ham to export,", - print "spread over", len(buckets), "directories." + print("Have", num_spam, "spam and", num_ham, "ham to export,", end=' ') + print("spread over", len(buckets), "directories.") for sub in "Spam", "Ham": if os.path.exists(os.path.join(directory, sub)): @@ -138,30 +138,30 @@ d = os.path.join(directory, sub, b) os.makedirs(d) - print "Exporting spam..." + print("Exporting spam...") num = _export_folders(manager, os.path.join(directory, "Spam"), buckets, config.training.spam_folder_ids, config.training.spam_include_sub, old_style) - print "Exported", num, "spam messages." - - print "Exporting ham..." + print("Exported", num, "spam messages.") + + print("Exporting ham...") num = _export_folders(manager, os.path.join(directory, "Ham"), buckets, config.training.ham_folder_ids, config.training.ham_include_sub, old_style) - print "Exported", num, "ham messages." + print("Exported", num, "ham messages.") def main(): import getopt try: opts, args = getopt.getopt(sys.argv[1:], "hqon:") - except getopt.error, d: + except getopt.error as d: usage(d) quiet = 0 old_style = False @@ -190,24 +190,24 @@ usage("-n must be at least 1.") directory = os.path.abspath(directory) - print "This program will export your Outlook Ham and Spam folders" - print "to the directory '%s'" % directory + print("This program will export your Outlook Ham and Spam folders") + print("to the directory '%s'" % directory) if os.path.exists(directory): - print "*******" - print "WARNING: all existing files in '%s' will be deleted" % directory - print "*******" + print("*******") + print("WARNING: all existing files in '%s' will be deleted" % directory) + print("*******") if not quiet: - raw_input("Press enter to continue, or Ctrl+C to abort.") + input("Press enter to continue, or Ctrl+C to abort.") export(directory, num_buckets, old_style=old_style) # Display errormsg (if specified), a blank line, and usage information; then # exit with status 1 (usage doesn't return). def usage(errormsg=None): if errormsg: - print str(errormsg) - print - - print """ \ + print(str(errormsg)) + print() + + print(""" \ Usage: %s [-h] [-q] [-n nsets] [directory] -h : help - display this msgRefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/export.py and stop @@ -226,7 +226,7 @@ the export (but you will be asked to confirm unless -q is given).""" \ % (os.path.basename(sys.argv[0]), NUM_BUCKETS, - DEFAULT_DIRECTORY) + DEFAULT_DIRECTORY)) sys.exit(1) if __name__=='__main__': + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/docs/setup.py 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 ../python3/Outlook2000/docs/setup.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/Outlook2000/docs/setup.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/dialogs/wizard_processors.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/dialogs/wizard_processors.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/dialogs/wizard_processors.py --- ../python3/Outlook2000/dialogs/wizard_processors.py (original) +++ ../python3/Outlook2000/dialogs/wizard_processors.py (refactored) @@ -7,9 +7,9 @@ import win32gui, win32con, win32api, commctrl from dialogs import ShowDialog, MakePropertyPage -import processors -import opt_processors -import async_processor +from . import processors +from . import opt_processors +from . import async_processor import timer @@ -94,7 +94,7 @@ #backward assert self.page_stack, "Back should be disabled when no back stack" pageNo = self.page_stack.pop() - print "Back button switching to page", pageNo + print("Back button switching to page", pageNo) self.switchToPage(pageNo) def switchToPage(self, index): @@ -103,7 +103,7 @@ return 1 win32gui.DestroyWindow(self.currentPageHwnd) #template = self.window.manager.dialog_parser.dialogs[self.page_ids[index]] - import dlgcore + from . import dlgcore self.currentPage = MakePropertyPage(self.page_placeholder_hwnd, self.window.manager, self.window.config, @@ -166,7 +166,7 @@ index = self.currentPageIndex id = self.page_ids[index] config = self.window.config - print "GetNextPage with current", index, id + print("GetNextPage with current", index, id) if id == 'IDD_WIZARD_WELCOME': # Welcome page if config.wizard.preparation == 0: # unprepared + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/dialogs/win32struct.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/dialogs/win32struct.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/dialogs/win32struct.py --- ../python3/Outlook2000/dialogs/win32struct.py (original) +++ ../python3/Outlook2000/dialogs/win32struct.py (refactored) @@ -49,9 +49,9 @@ t = struct.unpack(self.fs, self.data) ii = 0 for i in self.nlst: - print i, "=", t[ii] + print(i, "=", t[ii]) ii += 1 - print "fs =", self.fs + print("fs =", self.fs) return @@ -94,19 +94,19 @@ return win32gui.PyGetString(self.fn_buf_addr) def setTitle(self, title): - if isinstance(title, unicode): + if isinstance(title, str): title = title.encode("mbcs") self.title_buf = array.array("c", title+'\0') self.lpstrTitle = self.title_buf.buffer_info()[0] def setInitialDir(self, initialDir): - if isinstance(initialDir, unicode): + if isinstance(initialDir, str): initialDir = initialDir.encode("mbcs") self.initialDir_buf = array.array("c", initialDir+'\0') self.lpstrInitialDir = self.initialDir_buf.buffer_info()[0] def setFilter(self, fileFilter): - if isinstance(fileFilter, unicode): + if isinstance(fileFilter, str): fileFilter = fileFilter.encode("mbcs") fileFilter = fileFilter.replace('|', '\0') + '\0' self.fileFilter_buf = array.array("c", fileFilter+'\0') + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/dialogs/test_dialogs.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/dialogs/test_dialogs.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/dialogs/test_dialogs.py --- ../python3/Outlook2000/dialogs/test_dialogs.py (original) +++ ../python3/Outlook2000/dialogs/test_dialogs.py (refactored) @@ -22,7 +22,7 @@ else: ShowDialog(0, mgr, mgr.config, idd) if "-d" in sys.argv: - print "Dumping(but not saving) new manager configuration:" - print mgr.options.display() - print "-- end of configuration --" + print("Dumping(but not saving) new manager configuration:") + print(mgr.options.display()) + print("-- end of configuration --") mgr.Close() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/dialogs/resources/rcparser.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/dialogs/resources/rcparser.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/dialogs/resources/rcparser.py --- ../python3/Outlook2000/dialogs/resources/rcparser.py (original) +++ ../python3/Outlook2000/dialogs/resources/rcparser.py (refactored) @@ -117,7 +117,7 @@ def debug(self, *args): if self.debugEnabled: - print args + print(args) def getToken(self): self.token = self.lex.get_token() @@ -152,7 +152,7 @@ self.parseH(h) h.close() except IOError: - print "No .h file. ignoring." + print("No .h file. ignoring.") f = open(rcFileName) self.open(f) self.getToken() @@ -177,10 +177,10 @@ n = lex.get_token() i = int(lex.get_token()) self.ids[n] = i - if self.names.has_key(i): + if i in self.names: # ignore AppStudio special ones. if not n.startswith("_APS_"): - print "Duplicate id",i,"for",n,"is", self.names[i] + print("Duplicate id",i,"for",n,"is", self.names[i]) else: self.names[i] = n if self.next_id<=i: @@ -214,7 +214,7 @@ self.getToken() # bmpname bmf = self.token[1:-1] # quotes self.bitmaps[possibleBitmap] = bmf - print "BITMAP", possibleBitmap, bmf + print("BITMAP", possibleBitmap, bmf) #print win32gui.LoadImage(0, bmf, win32con.IMAGE_BITMAP,0,0,win32con.LR_DEFAULTCOLOR|win32con.LR_LOADFROMFILE) def addId(self, id_name): @@ -351,8 +351,7 @@ # msvc seems to occasionally replace "IDC_STATIC" with -1 if self.token=='-': if self.getToken() != '1': - raise RuntimeError, \ - "Negative literal in rc script (other than -1) - don't know what to do" + raise RuntimeError("Negative literal in rc script (other than -1) - don't know what to do") self.token = "IDC_STATIC" control.id = self.token control.idNum = self.addId(control.id) @@ -389,11 +388,11 @@ except: lex = getattr(rcp, "lex", None) if lex: - print "ERROR parsing dialogs at line", lex.lineno - print "Next 10 tokens are:" + print("ERROR parsing dialogs at line", lex.lineno) + print("Next 10 tokens are:") for i in range(10): - print lex.get_token(), - print + print(lex.get_token(), end=' ') + print() raise return rcp @@ -402,7 +401,7 @@ rc_file = os.path.join(os.path.dirname(__file__), "dialogs.rc") d = ParseDialogs(rc_file) import pprint - for id, ddef in d.dialogs.items(): - print "Dialog %s (%d controls)" % (id, len(ddef)) + for id, ddef in list(d.dialogs.items()): + print("Dialog %s (%d controls)" % (id, len(ddef))) pprint.pprint(ddef) - print + print() + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/dialogs/resources/rclabels2text.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/dialogs/resources/rclabels2text.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/dialogs/resources/rclabels2text.py --- ../python3/Outlook2000/dialogs/resources/rclabels2text.py (original) +++ ../python3/Outlook2000/dialogs/resources/rclabels2text.py (refactored) @@ -8,7 +8,7 @@ and writes them into a text file for spell checking purposes. """ import sys, os, re -import rcparser +from . import rcparser anti_and = re.compile(r"([^\\]*)&([^&]*)"); anti_nl = re.compile(r"([^\\]*)\\n([^\\])"); @@ -23,7 +23,7 @@ out = open(outputFilename, "wt") for dlg_id in rcp._dialogs: - print dlg_id + print(dlg_id) dlg = rcp._dialogs[dlg_id] out.write("\n================================================\n") out.write("In Dialog: "+str(dlg_id)+" Title: "+str(dlg.caption)+"\n\n") + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/dialogs/resources/rc2py.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/dialogs/resources/rc2py.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/dialogs/resources/rc2py.py --- ../python3/Outlook2000/dialogs/resources/rc2py.py (original) +++ ../python3/Outlook2000/dialogs/resources/rc2py.py (refactored) @@ -8,7 +8,7 @@ with the same basic public interface as the rcparser module. """ import sys, os, stat -import rcparser +from . import rcparser def convert(inputFilename = None, outputFilename = None, enableGettext = True): + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/dialogs/resources/__init__.py 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 ../python3/Outlook2000/dialogs/resources/__init__.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/Outlook2000/dialogs/resources/__init__.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/dialogs/processors.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/dialogs/processors.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/dialogs/processors.py --- ../python3/Outlook2000/dialogs/processors.py (original) +++ ../python3/Outlook2000/dialogs/processors.py (refactored) @@ -7,7 +7,7 @@ import win32gui, win32api, win32con import commctrl import struct, array -from dlgutils import * +from .dlgutils import * # Cache our leaky bitmap handles bitmap_handles = {} @@ -43,7 +43,7 @@ def GetMessages(self): return [] def OnMessage(self, msg, wparam, lparam): - raise RuntimeError, "I don't hook any messages, so I shouldn't be called" + raise RuntimeError("I don't hook any messages, so I shouldn't be called") def OnOptionChanged(self, option): pass def OnRButtonUp(self, wparam, lparam): @@ -54,10 +54,10 @@ rcp = self.window.manager.dialog_parser; bmp_id = int(win32gui.GetWindowText(self.GetControl())) - if bitmap_handles.has_key(bmp_id): + if bmp_id in bitmap_handles: handle = bitmap_handles[bmp_id] else: - import resources + from . import resources mod_handle, mod_bmp, extra_flags = resources.GetImageParamsFromBitmapID(rcp, bmp_id) load_flags = extra_flags|win32con.LR_COLOR|win32con.LR_SHARED handle = win32gui.LoadImage(mod_handle, mod_bmp, + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/dialogs/opt_processors.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/dialogs/opt_processors.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/dialogs/opt_processors.py --- ../python3/Outlook2000/dialogs/opt_processors.py (original) +++ ../python3/Outlook2000/dialogs/opt_processors.py (refactored) @@ -9,9 +9,9 @@ import win32gui, win32api, win32con import commctrl import struct, array -from dlgutils import * - -import processors +from .dlgutils import * + +from . import processors verbose = 0 # set to 1 to see option values fetched and set. @@ -48,8 +48,8 @@ if option is None: option = self.option if verbose: - print "Setting option '%s' (%s) -> %s" % \ - (option.display_name(), option.name, value) + print("Setting option '%s' (%s) -> %s" % \ + (option.display_name(), option.name, value)) option.set(value) self.NotifyOptionChanged(option) def GetOptionValue(self, option = None): @@ -57,8 +57,8 @@ option = self.option ret = option.get() if verbose: - print "Got option '%s' (%s) -> %s" % \ - (option.display_name(), option.name, ret) + print("Got option '%s' (%s) -> %s" % \ + (option.display_name(), option.name, ret)) return ret # Only sub-classes know how to update their controls from the value. @@ -134,10 +134,10 @@ OptionControlProcessor.__init__(self, window, control_ids, option) if text: temp = text.split(",") - self.option_to_text = zip(self.option.valid_input(), temp) - self.text_to_option = dict(zip(temp, self.option.valid_input())) - else: - self.option_to_text = zip(self.option.valid_input(),self.option.valid_input()) + self.option_to_text = list(zip(self.option.valid_input(), temp)) + self.text_to_option = dict(list(zip(temp, self.option.valid_input()))) + else: + self.option_to_text = list(zip(self.option.valid_input(),self.option.valid_input())) self.text_to_option = dict(self.option_to_text) def OnCommand(self, wparam, lparam): @@ -248,7 +248,7 @@ str_val = buf[:nchars] val = float(str_val) if val < self.min_val or val > self.max_edit_val: - raise ValueError, "Value must be between %d and %d" % (self.min_val, self.max_val) + raise ValueError("Value must be between %d and %d" % (self.min_val, self.max_val)) self.SetOptionValue(val) class FilenameProcessor(OptionControlProcessor): @@ -263,7 +263,7 @@ return OptionControlProcessor.GetPopupHelpText(self, id) def DoBrowse(self): - from win32struct import OPENFILENAME + from .win32struct import OPENFILENAME ofn = OPENFILENAME(512) ofn.hwndOwner = self.window.hwnd ofn.setFilter(self.file_filter) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/dialogs/dlgutils.py 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 ../python3/Outlook2000/dialogs/dlgutils.py RefactoringTool: Files that need to be modified: RefactoringTool: ../python3/Outlook2000/dialogs/dlgutils.py + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/dialogs/dlgcore.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/dialogs/dlgcore.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/dialogs/dlgcore.py --- ../python3/Outlook2000/dialogs/dlgcore.py (original) +++ ../python3/Outlook2000/dialogs/dlgcore.py (refactored) @@ -9,7 +9,7 @@ import commctrl import struct, array -from dlgutils import * +from .dlgutils import * # Isolate the nasty stuff for tooltips somewhere. class TooltipManager: @@ -203,9 +203,9 @@ def GetMessageMap(self): ret = TooltipDialog.GetMessageMap(self) - for key in self.processor_message_map.keys(): + for key in list(self.processor_message_map.keys()): if key in ret: - print "*** WARNING: Overwriting message!!!" + print("*** WARNING: Overwriting message!!!") ret[key] = self.OnCommandProcessorMessage return ret @@ -216,8 +216,8 @@ try: self.GetDlgItem(int_id) except win32gui.error: - print "ERROR: Dialog item %s refers to an invalid control" % \ - self._GetIDName(int_id) + print("ERROR: Dialog item %s refers to an invalid control" % \ + self._GetIDName(int_id)) self.LoadAllControls() def GetPopupHelpText(self, iCtrlId): @@ -226,10 +226,10 @@ if cp is not None: return cp.GetPopupHelpText(iCtrlId) - print "Can not get command processor for", self._GetIDName(iCtrlId) + print("Can not get command processor for", self._GetIDName(iCtrlId)) return None def OnRButtonUp(self, hwnd, msg, wparam, lparam): - for cp in self.command_processors.values(): + for cp in list(self.command_processors.values()): cp.OnRButtonUp(wparam,lparam) def OnCommandProcessorMessage(self, hwnd, msg, wparam, lparam): @@ -260,7 +260,7 @@ def ApplyHandlingOptionValueError(self, func, *args): try: return func(*args) - except ValueError, why: + except ValueError as why: mb_flags = win32con.MB_ICONEXCLAMATION | win32con.MB_OK win32gui.MessageBox(self.hwnd, str(why), "SpamBayes", mb_flags) return False @@ -290,7 +290,7 @@ # delegate rest to our commands. handler = self.command_processors.get(idFrom) if handler is None: - print "Ignoring OnNotify for", self._GetIDName(idFrom) + print("Ignoring OnNotify for", self._GetIDName(idFrom)) return return handler.OnNotify( (hwndFrom, idFrom, code), wparam, lparam) @@ -299,12 +299,12 @@ id = win32api.LOWORD(wparam) # Sometimes called after OnDestroy??? if self.command_processors is None: - print "Ignoring OnCommand for", self._GetIDName(id) + print("Ignoring OnCommand for", self._GetIDName(id)) return else: handler = self.command_processors.get(id) if handler is None: - print "Ignoring OnCommand for", self._GetIDName(id) + print("Ignoring OnCommand for", self._GetIDName(id)) return self.ApplyHandlingOptionValueError(handler.OnCommand, wparam, lparam) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/dialogs/dialog_map.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/dialogs/dialog_map.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/dialogs/dialog_map.py --- ../python3/Outlook2000/dialogs/dialog_map.py (original) +++ ../python3/Outlook2000/dialogs/dialog_map.py (refactored) @@ -2,9 +2,9 @@ # The Python Software Foundation and is covered by the Python Software # Foundation license. -from processors import * -from opt_processors import * -import wizard_processors as wiz +from .processors import * +from .opt_processors import * +from . import wizard_processors as wiz from dialogs import ShowDialog, MakePropertyPage, ShowWizard @@ -119,7 +119,7 @@ str_val = buf[:nchars] val = int(str_val) if val < 0 or val > 10: - raise ValueError, "Value must be between 0 and 10" + raise ValueError("Value must be between 0 and 10") self.SetOptionValue(val) def OnCommand(self, wparam, lparam): code = win32api.HIWORD(wparam) @@ -145,7 +145,7 @@ reason = self.window.manager.GetDisabledReason() if reason is not None: win32gui.SendMessage(self.GetControl(), win32con.BM_SETCHECK, 0) - raise ValueError, reason + raise ValueError(reason) check = not not check # force bool! self.SetOptionValue(check) @@ -376,7 +376,7 @@ ShowWizard(parent, manager, self.idd, use_existing_config = True) def WizardFinish(mgr, window): - print _("Wizard Done!") + print(_("Wizard Done!")) def WizardTrainer(mgr, config, progress): import os, manager, train @@ -429,7 +429,7 @@ mgr.wizard_classifier_data = classifier_data mgr.classifier_data = orig_classifier_data -from async_processor import AsyncCommandProcessor +from .async_processor import AsyncCommandProcessor import filter, train dialog_map = { + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/dialogs/async_processor.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/dialogs/async_processor.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/dialogs/async_processor.py --- ../python3/Outlook2000/dialogs/async_processor.py (original) +++ ../python3/Outlook2000/dialogs/async_processor.py (refactored) @@ -1,10 +1,10 @@ # An async command processor -from dlgutils import * +from .dlgutils import * import win32gui, win32api, win32con, commctrl import win32process import time -import processors +from . import processors verbose = 0 @@ -74,7 +74,7 @@ # user knows the process has actually started.) control_tick = max(1,int(total_prop * self.total_control_ticks)) if verbose: - print "Tick", self.current_stage_tick, "is", this_prop, "through the stage,", total_prop, "through the total - ctrl tick is", control_tick + print("Tick", self.current_stage_tick, "is", this_prop, "through the stage,", total_prop, "through the total - ctrl tick is", control_tick) win32api.PostMessage(self.hprogress, commctrl.PBM_SETPOS, control_tick) def _get_stage_text(self, text): @@ -130,7 +130,7 @@ while self.running: win32gui.PumpWaitingMessages(0,-1) if i % 100 == 0: - print "Still waiting for async process to finish..." + print("Still waiting for async process to finish...") time.sleep(0.01) i += 1 return True @@ -152,7 +152,7 @@ elif msg == MYWM_FINISHED: self.OnFinished(wparam, lparam) else: - raise RuntimeError, "Not one of my messages??" + raise RuntimeError("Not one of my messages??") def OnFinished(self, wparam, lparam): self.seen_finished = True @@ -244,13 +244,13 @@ self.current_stage = 0 self.set_stages( (("", 1.0),) ) - print "Single stage test" + print("Single stage test") p = HackProgress() p.set_max_ticks(10) for i in range(10): p.tick() - print "First stage test" + print("First stage test") p = HackProgress() stages = ("Stage 1", 0.2), ("Stage 2", 0.8) p.set_stages(stages) @@ -262,7 +262,7 @@ p.set_max_ticks(20) for i in range(20): p.tick() - print "Second stage test" + print("Second stage test") p = HackProgress() stages = ("Stage 1", 0.9), ("Stage 2", 0.1) p.set_stages(stages) @@ -272,7 +272,7 @@ p.set_max_ticks(2) for i in range(2): p.tick() - print "Third stage test" + print("Third stage test") p = HackProgress() stages = ("Stage 1", 0.9), ("Stage 2", 0.1) p.set_stages(stages) @@ -283,4 +283,4 @@ for i in range(2): p.tick() - print "Done!" + print("Done!") + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/dialogs/__init__.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/dialogs/__init__.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/dialogs/__init__.py RefactoringTool: Warnings/messages while refactoring: RefactoringTool: ### In file ../python3/Outlook2000/dialogs/__init__.py ### RefactoringTool: Line 87: could not convert: raise "Parent must be the tab control" RefactoringTool: Python 3 does not support string exceptions --- ../python3/Outlook2000/dialogs/__init__.py (original) +++ ../python3/Outlook2000/dialogs/__init__.py (refactored) @@ -19,7 +19,7 @@ # If we are running from binaries, the rc name is not used at all - we # assume someone running from source previously generated the .py! if not hasattr(sys, "frozen") and not mod: - from resources import rc2py + from .resources import rc2py rc_path = os.path.dirname( rc2py.__file__ ) if not os.path.isabs(rc_name): rc_name = os.path.join( rc_path, rc_name) @@ -41,7 +41,7 @@ rc_mtime = rc_size = None if rc_mtime!=mtime or rc_size!=size: # Need to generate the dialog. - print "Generating %s from %s" % (py_name, rc_name) + print("Generating %s from %s" % (py_name, rc_name)) rc2py.convert(rc_name, py_name) if mod is not None: reload(mod) @@ -54,7 +54,7 @@ """Displays another dialog""" if manager.dialog_parser is None: manager.dialog_parser = LoadDialogs() - import dialog_map + from . import dialog_map commands = dialog_map.dialog_map[idd] if not parent: import win32gui @@ -63,7 +63,7 @@ except win32gui.error: pass - import dlgcore + from . import dlgcore dlg = dlgcore.ProcessorDialog(parent, manager, config, idd, commands) return dlg.DoModal() @@ -71,24 +71,24 @@ import config_wizard, win32con config = config_wizard.CreateWizardConfig(manager, use_existing_config) if ShowDialog(parent, manager, config, idd) == win32con.IDOK: - print "Saving wizard changes" + print("Saving wizard changes") config_wizard.CommitWizardConfig(manager, config) else: - print "Cancelling wizard" + print("Cancelling wizard") config_wizard.CancelWizardConfig(manager, config) def MakePropertyPage(parent, manager, config, idd, yoffset=24): """Creates a child dialog box to use as property page in a tab control""" if manager.dialog_parser is None: manager.dialog_parser = LoadDialogs() - import dialog_map + from . import dialog_map commands = dialog_map.dialog_map[idd] if not parent: raise "Parent must be the tab control" - import dlgcore + from . import dlgcore dlg = dlgcore.ProcessorPage(parent, manager, config, idd, commands, yoffset) return dlg -import dlgutils +from . import dlgutils SetWaitCursor = dlgutils.SetWaitCursor + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/dialogs/FolderSelector.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/dialogs/FolderSelector.py --- ../python3/Outlook2000/dialogs/FolderSelector.py (original) +++ ../python3/Outlook2000/dialogs/FolderSelector.py (refactored) @@ -1,4 +1,4 @@ -from __future__ import generators + import sys, os import win32con @@ -9,7 +9,7 @@ import struct, array -import dlgutils +from . import dlgutils from pprint import pprint # debugging only verbose = 0 @@ -29,7 +29,7 @@ def dump(self, level=0): prefix = " " * level - print prefix + self.name + print(prefix + self.name) for c in self.children: c.dump(level+1) @@ -69,7 +69,7 @@ PR_STORE_ENTRYID, PR_DISPLAY_NAME_A), None, order, 0) if verbose: - print "Rows for sub-folder of", folder_spec.name, "-", folder_spec.folder_id + print("Rows for sub-folder of", folder_spec.name, "-", folder_spec.folder_id) pprint(rows) for (eid_tag, eid),(storeeid_tag, store_eid), (name_tag, name) in rows: # Note the eid we get here is short-term - hence we must @@ -97,11 +97,11 @@ else: spec.children = None # Flag as "not yet built" children.append(spec) - except (pythoncom.com_error, manager.message_store.MsgStoreException), details: + except (pythoncom.com_error, manager.message_store.MsgStoreException) as details: # Users have reported failure here - it is not clear if the # entire tree is going to fail, or just this folder - print "** Unable to open child folder - ignoring" - print details + print("** Unable to open child folder - ignoring") + print(details) dlgutils.SetWaitCursor(0) return children @@ -111,7 +111,7 @@ prop_tags = PR_ENTRYID, PR_DISPLAY_NAME_A rows = mapi.HrQueryAllRows(tab, prop_tags, None, None, 0) if verbose: - print "message store rows:" + print("message store rows:") pprint(rows) for row in rows: (eid_tag, eid), (name_tag, name) = row @@ -122,24 +122,24 @@ hr, data = msgstore.GetProps((PR_IPM_SUBTREE_ENTRYID,)+ignore_ids, 0) # It appears that not all stores have a subtree. if PROP_TYPE(data[0][0]) != PT_BINARY: - print "FolderSelector dialog found message store without a subtree - ignoring" + print("FolderSelector dialog found message store without a subtree - ignoring") continue subtree_eid = data[0][1] ignore_eids = [item[1] for item in data[1:] if PROP_TYPE(item[0])==PT_BINARY] - except pythoncom.com_error, details: + except pythoncom.com_error as details: # Handle 'expected' errors. if details[0]== mapi.MAPI_E_FAILONEPROVIDER: - print "A message store is temporarily unavailable - " \ - "it will not appear in the Folder Selector dialog" + print("A message store is temporarily unavailable - " \ + "it will not appear in the Folder Selector dialog") else: # Some weird error opening a folder tree # Just print a warning and ignore the tree. - print "Failed to open a message store for the FolderSelector dialog" - print "Exception details:", details + print("Failed to open a message store for the FolderSelector dialog") + print("Exception details:", details) continue folder_id = hex_eid, mapi.HexFromBin(subtree_eid) if verbose: - print "message store root folder id is", folder_id + print("message store root folder id is", folder_id) spec = FolderSpec(folder_id, name, ignore_eids) spec.children = None @@ -254,7 +254,7 @@ ######################################################################### ## The dialog itself ######################################################################### -import dlgcore +from . import dlgcore FolderSelector_Parent = dlgcore.TooltipDialog class FolderSelector(FolderSelector_Parent): @@ -338,11 +338,11 @@ cItems, item_id)) if verbose: - print "Inserting item", repr(insert_buf), "-", + print("Inserting item", repr(insert_buf), "-", end=' ') hitem = win32gui.SendMessage(self.list, commctrl.TVM_INSERTITEM, 0, insert_buf) if verbose: - print "got back handle", hitem + print("got back handle", hitem) return hitem def _InsertSubFolders(self, hParent, folderSpec): @@ -368,14 +368,14 @@ for folder_id in self.selected_ids: try: folder = self.manager.message_store.GetFolder(folder_id) - except self.manager.message_store.MsgStoreException, details: - print "Can't find a folder to expand:", details + except self.manager.message_store.MsgStoreException as details: + print("Can't find a folder to expand:", details) folder = None while folder is not None: try: parent = folder.GetParent() - except self.manager.message_store.MsgStoreException, details: - print "Can't find folder's parent:", details + except self.manager.message_store.MsgStoreException as details: + print("Can't find folder's parent:", details) parent = None if parent is not None and \ not self.InIDs(parent.GetID(), folders_to_expand): @@ -503,7 +503,7 @@ # empty-display-name parent, which should not be # the case. grandparent = parent.GetParent() - except self.manager.message_store.MsgStoreException, details: + except self.manager.message_store.MsgStoreException as details: hr, msg, exc, argErr = details.mapi_exception if hr == winerror.E_ACCESSDENIED: valid = parent is not None @@ -511,9 +511,9 @@ raise # but only down a couple of lines... else: valid = parent is not None and grandparent is not None - except self.manager.message_store.MsgStoreException, details: - print "Eeek - couldn't get the folder to check " \ - "valid:", details + except self.manager.message_store.MsgStoreException as details: + print("Eeek - couldn't get the folder to check " \ + "valid:", details) valid = False if not valid: if result_valid: # are we the first invalid? @@ -542,7 +542,7 @@ else: win32gui.SendMessage(child, win32con.BM_SETCHECK, self.checkbox_state) self.list = self.GetDlgItem("IDC_LIST_FOLDERS") - import resources + from . import resources mod_handle, mod_bmp, extra_flags = \ resources.GetImageParamsFromBitmapID(self.dialog_parser, "IDB_FOLDERS") bitmapMask = win32api.RGB(0,0,255) @@ -732,7 +732,7 @@ # And update the tree with the new item buf, extra = PackTVITEM(handle, None, None, name, None, None, None, None) win32gui.SendMessage(self.list, commctrl.TVM_SETITEM, 0, buf) - except pythoncom.com_error, details: + except pythoncom.com_error as details: hr, msg, exc, arg = details if hr == mapi.MAPI_E_COLLISION: user_msg = "A folder with that name already exists" @@ -763,7 +763,7 @@ ids = [("0000","0000"),] # invalid ID for testing. d=FolderSelector(0, mgr, idRefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/dialogs/FolderSelector.py s, single_select = single_select) if d.DoModal() != win32con.IDOK: - print "Cancelled" + print("Cancelled") return ids, include_sub = d.GetSelectedIDs() d=FolderSelector(0, mgr, ids, single_select = single_select, checkbox_state = include_sub) + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/config_wizard.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/config_wizard.py RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/config_wizard.py --- ../python3/Outlook2000/config_wizard.py (original) +++ ../python3/Outlook2000/config_wizard.py (refactored) @@ -139,7 +139,7 @@ try: os.remove(fname) except OSError: - print "Warning: unable to remove", fname + print("Warning: unable to remove", fname) def CreateWizardConfig(manager, from_existing): import config + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/config.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/config.py --- ../python3/Outlook2000/config.py (original) +++ ../python3/Outlook2000/config.py (refactored) @@ -37,18 +37,18 @@ if not is_multi and not value: return None # Now sure why we get non-strings here for multis - if type(value) == types.ListType: + if type(value) == list: return value # If we really care here, it would be fairly easy to use a regex # etc to pull these IDs apart. eval is easier for now :) try: items = eval(value) except: - error = "Invalid value (%s:%s)" % (sys.exc_type, sys.exc_value) + error = "Invalid value (%s:%s)" % (sys.exc_info()[0], sys.exc_info()[1]) check_items = [] if error is None: if is_multi: - if type(items) != types.ListType: + if type(items) != list: error = "Multi-valued ID must yield a list" check_items = items else: @@ -62,9 +62,9 @@ error = "Each ID must be a tuple of 2 strings" break if error is not None: - print "Failed to convert FolderID value '%r', is_multi=%d" % \ - (value, is_multi) - print error + print("Failed to convert FolderID value '%r', is_multi=%d" % \ + (value, is_multi)) + print(error) if is_multi: return [] else: @@ -78,13 +78,13 @@ return str(self.value) def multiple_values_allowed(self): - return type(self.value)==types.ListType + return type(self.value)==list def is_valid_single(self, value): return value is None or \ - (type(value)==types.TupleType and \ + (type(value)==tuple and \ len(value)==2 and \ - type(value[0])==type(value[1])==types.StringType) + type(value[0])==type(value[1])==bytes) defaults = { "General" : ( @@ -337,9 +337,9 @@ container = SectionContainer(self._options, key) self.__dict__[attr] = container return container - raise AttributeError, "Options has no section '%s'" % attr + raise AttributeError("Options has no section '%s'" % attr) def __setattr__(self, attr, val): - raise AttributeError, "No section [%s]" % attr + raise AttributeError("No section [%s]" % attr) # and delegate a few methods so this object can be used in place of # a real options object. maybe should add this to getattr. do we want all? def get_option(self, section, name): @@ -365,11 +365,11 @@ def _dump(self, thisname="", level=0): import pprint prefix = " " * level - print "%s%s:" % (prefix, thisname) - for name, ob in self.__dict__.items(): + print("%s%s:" % (prefix, thisname)) + for name, ob in list(self.__dict__.items()): d = getattr(ob, "_dump", None) if d is None: - print "%s %s: %s" % (prefix, name, pprint.pformat(ob)) + print("%s %s: %s" % (prefix, name, pprint.pformat(ob))) else: d(name, level+1) @@ -383,56 +383,56 @@ options.merge_files(['delme.cfg']) c = OptionsContainer(options) f = options.get("Training", "ham_folder_ids") - print "Folders before set are", f + print("Folders before set are", f) for i in f: - print i, type(i) + print(i, type(i)) new_folder_ids = [('000123','456789'), ('ABCDEF', 'FEDCBA')] options.set("Training", "ham_folder_ids", new_folder_ids) f = options.get("Training", "ham_folder_ids") - print "Folders after set are", f + print("Folders after set are", f) for i in f: - print i, type(i) + print(i, type(i)) try: c.filter.oops = "Foo" except (AttributeError,KeyError): # whatever :) pass else: - print "ERROR: I was able to set an invalid sub-property!" + RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/config.py print("ERROR: I was able to set an invalid sub-property!") try: c.oops = "Foo" except (AttributeError,KeyError): # whatever :) pass else: - print "ERROR: I was able to set an invalid top-level property!" + print("ERROR: I was able to set an invalid top-level property!") # Test single ID folders. if c.filter.unsure_folder_id is not None: - print "It appears we loaded a folder ID - resetting" + print("It appears we loaded a folder ID - resetting") c.filter.unsure_folder_id = None unsure_id = c.filter.unsure_folder_id - if unsure_id is not None: raise ValueError, "unsure_id wrong (%r)" % (c.filter.unsure_folder_id,) + if unsure_id is not None: raise ValueError("unsure_id wrong (%r)" % (c.filter.unsure_folder_id,)) unsure_id = c.filter.unsure_folder_id = ('12345', 'abcdef') - if unsure_id != c.filter.unsure_folder_id: raise ValueError, "unsure_id wrong (%r)" % (c.filter.unsure_folder_id,) + if unsure_id != c.filter.unsure_folder_id: raise ValueError("unsure_id wrong (%r)" % (c.filter.unsure_folder_id,)) c.filter.unsure_folder_id = None - if c.filter.unsure_folder_id is not None: raise ValueError, "unsure_id wrong (%r)" % (c.filter.unsure_folder_id,) + if c.filter.unsure_folder_id is not None: raise ValueError("unsure_id wrong (%r)" % (c.filter.unsure_folder_id,)) options.set("Filter", "filter_now", True) - print "Filter_now from container is", c.filter.filter_now + print("Filter_now from container is", c.filter.filter_now) options.set("Filter", "filter_now", False) - print "Filter_now from container is now", c.filter.filter_now + print("Filter_now from container is now", c.filter.filter_now) c.filter.filter_now = True - print "Filter_now from container is finally", c.filter.filter_now - print "Only unread is", c.filter_now.only_unread + print("Filter_now from container is finally", c.filter.filter_now) + print("Only unread is", c.filter_now.only_unread) v = r"/foo/bar" c.general.data_directory=v - if c.general.data_directory!=v: print "Bad directory!", c.general.data_directory + if c.general.data_directory!=v: print("Bad directory!", c.general.data_directory) v = r"c:\test directory\some sub directory" c.general.data_directory=v - if c.general.data_directory!=v: print "Bad directory!", c.general.data_directory + if c.general.data_directory!=v: print("Bad directory!", c.general.data_directory) v = r"\\server\c$" c.general.data_directory=v - if c.general.data_directory!=v: print "Bad directory!", c.general.data_directory + if c.general.data_directory!=v: print("Bad directory!", c.general.data_directory) options.update_file("delme.cfg") - print "Created 'delme.cfg'" + print("Created 'delme.cfg'") + rm -f ../python3/spambayes/resources/junk.py + for i in $(find ../python3 -type f -name '*.py') + 2to3 -w -n ../python3/Outlook2000/addin.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored ../python3/Outlook2000/addin.py --- ../python3/Outlook2000/addin.py (original) +++ ../python3/Outlook2000/addin.py (refactored) @@ -3,7 +3,7 @@ import types import warnings import traceback -import _winreg +import winreg from types import UnicodeType # *sigh* - this is for the binary installer, and for the sake of one line @@ -35,7 +35,7 @@ import win32gui, win32con, win32clipboard # for button images! -import timer, thread +import timer, _thread from dialogs.dlgutils import SetWaitCursor @@ -106,9 +106,9 @@ try: from win32com.client import CastTo, WithEvents except ImportError: - print "*" * 50 - print "You appear to be running a win32all version pre 151, which is pretty old" - print "I'm afraid it is time to upgrade" + print("*" * 50) + print("You appear to be running a win32all version pre 151, which is pretty old") + print("I'm afraid it is time to upgrade") raise # we seem to have all the COM support we need - let's rock! @@ -134,18 +134,18 @@ def TrainAsHam(msgstore_message, manager, rescore = True, save_db = True): import train subject = msgstore_message.subject - print "Training on message '%s' in '%s - " % \ + print("Training on message '%s' in '%s - " % \ (subject, - msgstore_message.GetFolder().GetFQName()), + msgstore_message.GetFolder().GetFQName()), end=' ') if train.train_message(msgstore_message, False, manager.classifier_data): - print "trained as good" + print("trained as good") # Simplest way to rescore is to re-filter with all_actions = False if rescore: import filter filter.filter_message(msgstore_message, manager, all_actions = False) else: - print "already was trained as good" + print("already was trained as good") manager.classifier_data.message_db.load_msg(msgstore_message) assert train.been_trained_as_ham(msgstore_message) if save_db: @@ -154,17 +154,17 @@ def TrainAsSpam(msgstore_message, manager, rescore = True, save_db = True): import train subject = msgstore_message.subject - print "Training on message '%s' in '%s - " % \ + print("Training on message '%s' in '%s - " % \ (subject, - msgstore_message.GetFolder().GetFQName()), + msgstore_message.GetFolder().GetFQName()), end=' ') if train.train_message(msgstore_message, True, manager.classifier_data): - print "trained as spam" + print("trained as spam") # Simplest way to rescore is to re-filter with all_actions = False if rescore: import filter filter.filter_message(msgstore_message, manager, all_actions = False) else: - print "already was trained as spam" + print("already was trained as spam") manager.classifier_data.message_db.load_msg(msgstore_message) assert train.been_trained_as_spam(msgstore_message) # And if the DB can save itself incrementally, do it now @@ -215,14 +215,14 @@ # get the foldername before the move operation! folder_name = msgstore_message.GetFolder().GetFQName() disposition = filter.filter_message(msgstore_message, manager) - print "Message '%s' in '%s' had a Spam classification of '%s'" \ + print("Message '%s' in '%s' had a Spam classification of '%s'" \ % (msgstore_message.GetSubject(), folder_name, - disposition) + disposition)) manager.HandleNotification(disposition) else: - print "Spam filtering is disabled - ignoring new message" + print("Spam filtering is disabled - ignoring new message") except manager.message_store.NotFoundException: manager.LogDebug(1, "ProcessMessage had the message moved out from underneath us") manager.LogDebug(2, "ProcessMessage finished for", msgstore_message.subject) @@ -242,7 +242,7 @@ # Folder event handler classes class _BaseItemsEvent: def Init(self, target, application, manager): - self.owner_thread_ident = thread.get_ident() # check we arent multi-threaded + self.owner_thread_ident = _thread.get_ident() # check we arent multi-threaded self.application = application self.manager = manager self.target = target @@ -261,17 +261,17 @@ interval = self.manager.config.filter.timer_interval use_timer = timer_enabled and start_delay and interval if timer_enabled and not use_timer: - print "*" * 50 - print "The timer is enabled, but one of the timer intervals values is zero" - print "You must set both intervals before the timer will enable" + print("*" * 50) + print("The timer is enabled, but one of the timer intervals values is zero") + print("You must set both intervals before the timer will enable") if use_timer and not hasattr(timer, "__version__"): # No binaries will see this. - print "*" * 50 - print "SORRY: You have tried to enable the timer, but you have a" - print "leaky version of the 'timer' module. These leaks prevent" - print "Outlook from shutting down. Please update win32all to post 154" - print "The timer is NOT enabled..." - print "*" * 50 + print("*" * 50) + print("SORRY: You have tried to enable the timer, but you have a") + print("leaky version of the 'timer' module. These leaks prevent") + print("Outlook from shutting down. Please update win32all to post 154") + print("The timer is NOT enabled...") + print("*" * 50) use_timer = False if use_timer: @@ -284,22 +284,22 @@ # Don't allow insane values for the timer. if use_timer: too = None - if not isinstance(start_delay, types.FloatType) or \ - not isinstance(interval, types.FloatType): - print "*" * 50 - print "Timer values are garbage!", repr(start_delay), repr(interval) + if not isinstance(start_delay, float) or \ + not isinstance(interval, float): + print("*" * 50) + print("Timer values are garbage!", repr(start_delay), repr(interval)) use_timer = False elif start_delay < 0.4 or interval < 0.4: too = "too often" elif start_delay > 60 or interval > 60: too = "too infrequently" if too: - print "*" * 50 - print "The timer is configured to fire way " + too + \ + print("*" * 50) + print("The timer is configured to fire way " + too + \ " (delay=%s seconds, interval=%s seconds)" \ - % (start_delay, interval) - print "Please adjust your configuration. The timer is NOT enabled..." - print "*" * 50 + % (start_delay, interval)) + print("Please adjust your configuration. The timer is NOT enabled...") + print("*" * 50) use_timer = False self.use_timer = use_timer @@ -315,9 +315,9 @@ self._KillTimer() _BaseItemsEvent.Close(self, *args) def _DoStartTimer(self, delay): - assert thread.get_ident() == self.owner_thread_ident + assert _thread.get_ident() == self.owner_thread_ident assert self.timer_id is None, "Shouldn't start a timer when already have one" - assert isinstance(delay, types.FloatType), "Timer values are float seconds" + assert isinstance(delay, float), "Timer values are float seconds" # And start a new timer. assert delay, "No delay means no timer!" delay = int(delay*1000) # convert to ms. @@ -334,7 +334,7 @@ self._DoStartTimer(delay) def _KillTimer(self): - assert thread.get_ident() == self.owner_thread_ident + assert _thread.get_ident() == self.owner_thread_ident if self.timer_id is not None: timer.kill_timer(self.timer_id) self.manager.LogDebug(2, "The timer with id=%d was stopped" % self.timer_id) @@ -342,7 +342,7 @@ def _TimerFunc(self, event, time): # Kill the timer first - assert thread.get_ident() == self.owner_thread_ident + assert _thread.get_ident() == self.owner_thread_ident self.manager.LogDebug(1, "The timer with id=%s fired" % self.timer_id) self._KillTimer() assert self.timer_generator, "Can't have a timer with no generator" @@ -360,7 +360,7 @@ # If the Spam score *is* saved, the generator should only return # ones that HaveSeen() returns False for, so therefore isn't a hit. while 1: - item = self.timer_generator.next() + item = next(self.timer_generator) try: if not HaveSeenMessage(item, self.manager): break @@ -627,7 +627,7 @@ ver_latest = get_version(app_name, version_dict=latest) latest_ver_string = ver_latest.get_long_version(ADDIN_DISPLAY_NAME) except: - print "Error checking the latest version" + print("Error checking the latest version") traceback.print_exc() manager.ReportError( _("There was an error checking for the latest version\r\n" @@ -636,7 +636,7 @@ ) return - print "Current version is %s, latest is %s." % (str(ver_current), str(ver_latest)) + print("Current version is %s, latest is %s." % (str(ver_current), str(ver_latest))) if ver_latest > ver_current: url = get_download_page(app_name, version_dict=latest) msg = _("You are running %s\r\n\r\nThe latest available version is %s" \ @@ -644,7 +644,7 @@ "\r\n\r\nWould you like to visit this page now?") \ % (cur_ver_string, latest_ver_string, url) if manager.AskQuestion(msg): - print "Opening browser page", url + print("Opening browser page", url) os.startfile(url) else: msg = _("The latest available version is %s\r\n\r\n" \ @@ -658,12 +658,12 @@ # the test suite to save shutting down Outlook each time we tweak it. reload(tester) try: - print "Executing automated tests..." + print("Executing automated tests...") tester.test(manager) except: traceback.print_exc() - print "Tests FAILED. Sorry about that. If I were you, I would do a full re-train ASAP" - print "Please delete any test messages from your Spam, Unsure or Inbox/Watch folders first." + print("Tests FAILED. Sorry about that. If I were you, I would do a full re-train ASAP") + print("Please delete any test messages from your Spam, Unsure or Inbox/Watch folders first.") # The "Spam" and "Not Spam" buttons # The event from Outlook's explorer that our folder has changed. @@ -717,7 +717,7 @@ msgstore_message.Save() # Must train before moving, else we lose the message! subject = msgstore_message.GetSubject() - print "Moving and spam training message '%s' - " % (subject,), + print("Moving and spam training message '%s' - " % (subject,), end=' ') TrainAsSpam(msgstore_message, self.manager, save_db = False) # Do the new message state if necessary. try: @@ -727,9 +727,9 @@ msgstore_message.SetReadState(False) else: if new_msg_state not in ["", "None", None]: - print "*** Bad new_msg_state value: %r" % (new_msg_state,) + print("*** Bad new_msg_state value: %r" % (new_msg_state,)) except pythoncom.com_error: - print "*** Failed to set the message state to '%s' for message '%s'" % (new_msg_state, subject) + print("*** Failed to set the message state to '%s' for message '%s'" % (new_msg_state, subject)) # Now move it. msgstore_message.MoveToReportingError(self.manager, spam_folder) # Note the move will possibly also trigger a re-train @@ -774,14 +774,14 @@ restore_folder = msgstore_message.GetRememberedFolder() if restore_folder is None or \ msgstore_message.GetFolder() == restore_folder: - print "Unable to determine source folder for message '%s' - restoring to Inbox" % (subject,) + print("Unable to determine source folder for message '%s' - restoring to Inbox" % (subject,)) restore_folder = inbox_folder # Record this recovery in our stats. self.manager.stats.RecordTraining(True, self.manager.score(msgstore_message)) # Must train before moving, else we lose the message! - print "Recovering to folder '%s' and ham training message '%s' - " % (restore_folder.name, subject), + print("Recovering to folder '%s' and ham training message '%s' - " % (restore_folder.name, subject), end=' ') TrainAsHam(msgstore_message, self.manager, save_db = False) # Do the new message state if necessary. try: @@ -791,10 +791,10 @@ msgstore_message.SetReadState(False) else: if new_msg_state not in ["", "None", None]: - print "*** Bad new_msg_state value: %r" % (new_msg_state,) - except msgstore.MsgStoreException, details: - print "*** Failed to set the message state to '%s' for message '%s'" % (new_msg_state, subject) - print details + print("*** Bad new_msg_state value: %r" % (new_msg_state,)) + except msgstore.MsgStoreException as details: + print("*** Failed to set the message state to '%s' for message '%s'" % (new_msg_state, subject)) + print(details) # Now move it. msgstore_message.MoveToReportingError(self.manager, restore_folder) except msgstore.NotFoundException: @@ -819,7 +819,7 @@ elif fname=="delete_as_spam.bmp": bid = 6001 else: - raise RuntimeError, "What bitmap to use for '%s'?" % fname + raise RuntimeError("What bitmap to use for '%s'?" % fname) handle = win32gui.LoadImage(sys.frozendllhandle, bid, win32con.IMAGE_BITMAP, 0, 0, win32con.LR_DEFAULTSIZE) else: if not os.path.isabs(fname): @@ -827,7 +827,7 @@ fname = os.path.join(manager.application_directory, "images", fname) if not os.path.isfile(fname): - print "WARNING - Trying to use image '%s', but it doesn't exist" % (fname,) + print("WARNING - Trying to use image '%s', but it doesn't exist" % (fname,)) return None handle = win32gui.LoadImage(0, fname, win32con.IMAGE_BITMAP, 0, 0, win32con.LR_DEFAULTSIZE | win32con.LR_LOADFROMFILE) win32clipboard.OpenClipboard() @@ -918,13 +918,13 @@ Type = constants.msoControlPopup, Tag = "SpamBayesCommand.Popup") if item is None: - print "ERROR: Could't re-find control to delete" + print("ERROR: Could't re-find control to delete") break item.Delete(False) - print "The above toolbar message is common - " \ - "recreating the toolbar..." - except pythoncom.com_error, e: - print "ERROR: Failed to delete our dead toolbar control" + print("The above toolbar message is common - " \ + "recreating the toolbar...") + except pythoncom.com_error as e: + print("ERROR: Failed to delete our dead toolbar control") break # ok - toolbar deleted - just run around the loop again continue @@ -1027,7 +1027,7 @@ # elsewhere). If we can not find the child control, we then try and # locate our toolbar, creating if necessary. Our items get added to # that. - assert item_attrs.has_key('Tag'), "Need a 'Tag' attribute!" + assert 'Tag' in item_attrs, "Need a 'Tag' attribute!" image_fname = None if 'image' in item_attrs: image_fname = item_attrs['image'] @@ -1067,7 +1067,7 @@ else: # for not broken - can't find toolbar. Create a new one. # Create it as a permanent one (which is default) - print "Creating new SpamBayes toolbar to host our buttons" + print("Creating new SpamBayes toolbar to host our buttons") self.toolbar = bars.Add(toolbar_name, constants.msoBarTop, Temporary=False) @@ -1076,10 +1076,10 @@ # Now add the item itself to the parent. try: item = parent.Controls.Add(Type=control_type, Temporary=temporary) - except pythoncom.com_error, e: + except pythoncom.com_error as e: # Toolbars seem to still fail randomly for some users. # eg, bug [ 755738 ] Latest CVS outllok doesn't work - print "FAILED to add the toolbar item '%s' - %s" % (tag,e) + print("FAILED to add the toolbar item '%s' - %s" % (tag,e)) return if image_fname: # Eeek - only available in derived class. @@ -1087,7 +1087,7 @@ but = CastTo(item, "_CommandBarButton") SetButtonImage(but, image_fname, self.manager) # Set the extra attributes passed in. - for attr, val in item_attrs.items(): + for attr, val in list(item_attrs.items()): setattr(item, attr, val) # didn't previously set this, and it seems to fix alot of problem - so # we set it for every object, even existing ones. @@ -1122,10 +1122,10 @@ ret.append(msgstore_message) except ms.NotFoundException: pass - except ms.MsgStoreException, details: - print "Unexpected error fetching message" + except ms.MsgStoreException as details: + print("Unexpected error fetching message") traceback.print_exc() - print details + print(details) if len(ret) == 0: self.manager.ReportError(_("No filterable mail items are selected"), @@ -1197,7 +1197,7 @@ show_recover_as = True show_delete_as = True except: - print "Error finding the MAPI folders for a folder switch event" + print("Error finding the MAPI folders for a folder switch event") # As this happens once per move, we should only display it once. self.manager.ReportErrorOnce(_( "There appears to be a problem with the SpamBayes" @@ -1243,7 +1243,7 @@ if len(self.explorers)==0: # No more explorers - disconnect all events. # (not doing this causes shutdown problems) - for tag, button in self.button_event_map.items(): + for tag, button in list(self.button_event_map.items()): closer = getattr(button, "Close", None) if closer is not None: closer() @@ -1295,13 +1295,13 @@ v = get_current_version() vstring = v.get_long_version(ADDIN_DISPLAY_NAME) if not hasattr(sys, "frozen"): vstring += " from source" - print vstring + print(vstring) major, minor, spack, platform, ver_str = win32api.GetVersionEx() - print "on Windows %d.%d.%d (%s)" % \ - (major, minor, spack, ver_str) - print "using Python", sys.version + print("on Windows %d.%d.%d (%s)" % \ + (major, minor, spack, ver_str)) + print("using Python", sys.version) from time import asctime, localtime - print "Log created", asctime(localtime()) + print("Log created", asctime(localtime())) self.explorers_events = None # create at OnStartupComplete @@ -1311,7 +1311,7 @@ # bootstrap code that can't happen until startup is complete. self.OnStartupComplete(None) except: - print "Error connecting to Outlook!" + print("Error connecting to Outlook!") traceback.print_exc() # We can't translate this string, as we haven't managed to load # the translation tools. @@ -1346,7 +1346,7 @@ try: self.ProcessMissedMessages() except: - print "Error processing missed messages!" + print("Error processing missed messages!") traceback.print_exc() else: # We should include this fact in the log, as I suspect a @@ -1385,8 +1385,8 @@ "Skipping processing of missed messages in folder '%s', " "as it is not available" % folder.name) elif event_hook.use_timer: - print "Processing missed spam in folder '%s' by starting a timer" \ - % (folder.name,) + print("Processing missed spam in folder '%s' by starting a timer" \ + % (folder.name,)) event_hook._StartTimer() else: num = 0 @@ -1395,8 +1395,8 @@ ProcessMessage(message, manager) num += 1 # See if perf hurts anyone too much. - print "Processing %d missed spam in folder '%s' took %gms" \ - % (num, folder.name, (clock()-start)*1000) + print("Processing %d missed spam in folder '%s' took %gms" \ + % (num, folder.name, (clock()-start)*1000)) def FiltersChanged(self): try: @@ -1415,7 +1415,7 @@ except: # If this fails, just log an error - don't bother with # the traceback - print "Error adding field to 'Unsure' folder %r" % (unsure_id,) + print("Error adding field to 'Unsure' folder %r" % (unsure_id,)) etype, value, tb = sys.exc_info() tb = None # dont want it, and nuke circular ref traceback.print_exception(etype, value, tb) @@ -1438,8 +1438,8 @@ SpamFolderItemsEvent, "incremental training") ) - for k in self.folder_hooks.keys(): - if not new_hooks.has_key(k): + for k in list(self.folder_hooks.keys()): + if k not in new_hooks: self.folder_hooks[k].Close() self.folder_hooks = new_hooks @@ -1459,7 +1459,7 @@ name = msgstore_folder.GetFQName() try: folder = msgstore_folder.GetOutlookItem() - except self.manager.message_store.MsgStoreException, details: + except self.manager.message_store.MsgStoreException as details: # Exceptions here are most likely when the folder is valid # and available to MAPI, but not via the Outlook. # One good way to provoke this is to configure Outlook's @@ -1467,9 +1467,9 @@ # when you start Outlook, it immediately displays an # error and terminates. During this process, the addin # is initialized, attempts to get the folders, and fails. - print "FAILED to open the Outlook folder '%s' " \ - "to hook events" % name - print details + print("FAILED to open the Outlook folder '%s' " \ + "to hook events" % name) + print(details) continue # Ensure the field is created before we hook the folder # events, else there is a chance our event handler will @@ -1481,8 +1481,8 @@ # 'spam' field is not fatal, nor really even worth # telling the user about, nor even worth a traceback # (as it is likely a COM error). - print "ERROR: Failed to check folder '%s' for " \ - "Spam field" % name + print("ERROR: Failed to check folder '%s' for " \ + "Spam field" % name) etype, value, tb = sys.exc_info() tb = None # dont want it, and nuke circular ref traceback.print_exception(etype, value, tb) @@ -1490,21 +1490,21 @@ try: new_hook = DispatchWithEvents(folder.Items, HandlerClass) except ValueError: - print "WARNING: Folder '%s' can not hook events" % (name,) + print("WARNING: Folder '%s' can not hook events" % (name,)) new_hook = None if new_hook is not None: new_hook.Init(msgstore_folder, self.application, self.manager) new_hooks[msgstore_folder.id] = new_hook - print "SpamBayes: Watching (for %s) in '%s'" % (what, name) + print("SpamBayes: Watching (for %s) in '%s'" % (what, name)) else: new_hooks[msgstore_folder.id] = existing existing.ReInit() return new_hooks def OnDisconnection(self, mode, custom): - print "SpamBayes - Disconnecting from Outlook" + print("SpamBayes - Disconnecting from Outlook") if self.folder_hooks: - for hook in self.folder_hooks.values(): + for hook in list(self.folder_hooks.values()): hook.Close() self.folder_hooks = None if self.explorers_events is not None: @@ -1517,10 +1517,10 @@ # it (ie, the dialog) self.manager.Save() # Report some simple stats, for session, and for total. - print "Session:" - print "\r\n".join(self.manager.stats.GetStats(session_only=True)) - print "Total:" - print "\r\n".join(self.manager.stats.GetStats()) + print("Session:") + print("\r\n".join(self.manager.stats.GetStats(session_only=True))) + print("Total:") + print("\r\n".join(self.manager.stats.GetStats())) self.manager.Close() self.manager = None @@ -1528,7 +1528,7 @@ # The user has de-selected us. Remove the toolbars we created # (Maybe we can exploit this later to remove toolbars as part # of uninstall?) - print "SpamBayes is being manually disabled - deleting toolbar" + print("SpamBayes is being manually disabled - deleting toolbar") try: explorers = self.application.Explorers for i in range(explorers.Count): @@ -1536,22 +1536,22 @@ try: toolbar = explorer.CommandBars.Item(toolbar_name) except pythoncom.com_error: - print "Could not find our toolbar to delete!" + print("Could not find our toolbar to delete!") else: toolbar.Delete() except: - print "ERROR deleting toolbar" + print("ERROR deleting toolbar") RefactoringTool: Files that were modified: RefactoringTool: ../python3/Outlook2000/addin.py traceback.print_exc() self.application = None - print "Addin terminating: %d COM client and %d COM servers exist." \ - % (pythoncom._GetInterfaceCount(), pythoncom._GetGatewayCount()) + print("Addin terminating: %d COM client and %d COM servers exist." \ + % (pythoncom._GetInterfaceCount(), pythoncom._GetGatewayCount())) try: # will be available if "python_d addin.py" is used to # register the addin. total_refs = sys.gettotalrefcount() # debug Python builds only - print "%d Python references exist" % (total_refs,) + print("%d Python references exist" % (total_refs,)) except AttributeError: pass @@ -1562,13 +1562,13 @@ pass def _DoRegister(klass, root): - key = _winreg.CreateKey(root, + key = winreg.CreateKey(root, "Software\\Microsoft\\Office\\Outlook\\Addins") - subkey = _winreg.CreateKey(key, klass._reg_progid_) - _winreg.SetValueEx(subkey, "CommandLineSafe", 0, _winreg.REG_DWORD, 0) - _winreg.SetValueEx(subkey, "LoadBehavior", 0, _winreg.REG_DWORD, 3) - _winreg.SetValueEx(subkey, "Description", 0, _winreg.REG_SZ, "SpamBayes anti-spam tool") - _winreg.SetValueEx(subkey, "FriendlyName", 0, _winreg.REG_SZ, "SpamBayes") + subkey = winreg.CreateKey(key, klass._reg_progid_) + winreg.SetValueEx(subkey, "CommandLineSafe", 0, winreg.REG_DWORD, 0) + winreg.SetValueEx(subkey, "LoadBehavior", 0, winreg.REG_DWORD, 3) + winreg.SetValueEx(subkey, "Description", 0, winreg.REG_SZ, "SpamBayes anti-spam tool") + winreg.SetValueEx(subkey, "FriendlyName", 0, winreg.REG_SZ, "SpamBayes") # Note that Addins can be registered either in HKEY_CURRENT_USER or # HKEY_LOCAL_MACHINE. If the former, then: @@ -1594,8 +1594,8 @@ DllUnregisterServer() # Don't catch exceptions here - if it fails, the Dll registration # must fail. - _DoRegister(klass, _winreg.HKEY_LOCAL_MACHINE) - print "Registration (in HKEY_LOCAL_MACHINE) complete." + _DoRegister(klass, winreg.HKEY_LOCAL_MACHINE) + print("Registration (in HKEY_LOCAL_MACHINE) complete.") def DllRegisterServer(): klass = OutlookAddin @@ -1604,26 +1604,26 @@ # remove the HKLM registration here (but it can be re-added - see the # notes above.) try: - _winreg.DeleteKey(_winreg.HKEY_LOCAL_MACHINE, + winreg.DeleteKey(winreg.HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Office\\Outlook\\Addins\\" \ + klass._reg_progid_) except WindowsError: pass - _DoRegister(klass, _winreg.HKEY_CURRENT_USER) - print "Registration complete." + _DoRegister(klass, winreg.HKEY_CURRENT_USER) + print("Registration complete.") def DllUnregisterServer(): klass = OutlookAddin # Try to remove the HKLM version. try: - _winreg.DeleteKey(_winreg.HKEY_LOCAL_MACHINE, + winreg.DeleteKey(winreg.HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Office\\Outlook\\Addins\\" \ + klass._reg_progid_) except WindowsError: pass # and again for current user. try: - _winreg.DeleteKey(_winreg.HKEY_CURRENT_USER, + winreg.DeleteKey(winreg.HKEY_CURRENT_USER, "Software\\Microsoft\\Office\\Outlook\\Addins\\" \ + klass._reg_progid_) except WindowsError: + rm -f ../python3/spambayes/resources/junk.py + exit 0 Executing(%build): /bin/sh -e /usr/src/tmp/rpm-tmp.40970 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd python-module-spambayes-1.1b1 + CFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export CFLAGS + CXXFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export CXXFLAGS + FFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export FFLAGS + /usr/bin/python setup.py build running build running build_py creating build creating build/lib creating build/lib/spambayes copying spambayes/tokenizer.py -> build/lib/spambayes copying spambayes/storage.py -> build/lib/spambayes copying spambayes/smtpproxy.py -> build/lib/spambayes copying spambayes/safepickle.py -> build/lib/spambayes copying spambayes/postfixproxy.py -> build/lib/spambayes copying spambayes/port.py -> build/lib/spambayes copying spambayes/optimize.py -> build/lib/spambayes copying spambayes/oe_mailbox.py -> build/lib/spambayes copying spambayes/msgs.py -> build/lib/spambayes copying spambayes/message.py -> build/lib/spambayes copying spambayes/mboxutils.py -> build/lib/spambayes copying spambayes/i18n.py -> build/lib/spambayes copying spambayes/hammiebulk.py -> build/lib/spambayes copying spambayes/hammie.py -> build/lib/spambayes copying spambayes/dnscache.py -> build/lib/spambayes copying spambayes/dbmstorage.py -> build/lib/spambayes copying spambayes/compatsets.py -> build/lib/spambayes copying spambayes/compatheapq.py -> build/lib/spambayes copying spambayes/compatcsv.py -> build/lib/spambayes copying spambayes/classifier.py -> build/lib/spambayes copying spambayes/chi2.py -> build/lib/spambayes copying spambayes/cdb_classifier.py -> build/lib/spambayes copying spambayes/cdb.py -> build/lib/spambayes copying spambayes/asyncore.py -> build/lib/spambayes copying spambayes/asynchat.py -> build/lib/spambayes copying spambayes/__init__.py -> build/lib/spambayes copying spambayes/XMLRPCPlugin.py -> build/lib/spambayes copying spambayes/Version.py -> build/lib/spambayes copying spambayes/UserInterface.py -> build/lib/spambayes copying spambayes/Tester.py -> build/lib/spambayes copying spambayes/TestToolsUI.py -> build/lib/spambayes copying spambayes/TestDriver.py -> build/lib/spambayes copying spambayes/Stats.py -> build/lib/spambayes copying spambayes/ServerUI.py -> build/lib/spambayes copying spambayes/PyMeldLite.py -> build/lib/spambayes copying spambayes/ProxyUI.py -> build/lib/spambayes copying spambayes/OptionsClass.py -> build/lib/spambayes copying spambayes/Options.py -> build/lib/spambayes copying spambayes/MoinSecurityPolicy.py -> build/lib/spambayes copying spambayes/ImapUI.py -> build/lib/spambayes copying spambayes/ImageStripper.py -> build/lib/spambayes copying spambayes/Histogram.py -> build/lib/spambayes copying spambayes/FileCorpus.py -> build/lib/spambayes copying spambayes/Dibbler.py -> build/lib/spambayes copying spambayes/CostCounter.py -> build/lib/spambayes copying spambayes/Corpus.py -> build/lib/spambayes copying spambayes/CoreUI.py -> build/lib/spambayes copying spambayes/CorePlugin.py -> build/lib/spambayes creating build/lib/spambayes/resources copying spambayes/resources/ui_psp.py -> build/lib/spambayes/resources copying spambayes/resources/ui_html.py -> build/lib/spambayes/resources copying spambayes/resources/train_gif.py -> build/lib/spambayes/resources copying spambayes/resources/status_gif.py -> build/lib/spambayes/resources copying spambayes/resources/scanning__init__.py -> build/lib/spambayes/resources copying spambayes/resources/query_gif.py -> build/lib/spambayes/resources copying spambayes/resources/message_gif.py -> build/lib/spambayes/resources copying spambayes/resources/junk.py -> build/lib/spambayes/resources copying spambayes/resources/help_gif.py -> build/lib/spambayes/resources copying spambayes/resources/helmet_gif.py -> build/lib/spambayes/resources copying spambayes/resources/config_gif.py -> build/lib/spambayes/resources copying spambayes/resources/classify_gif.py -> build/lib/spambayes/resources copying spambayes/resources/_cvsignore.py -> build/lib/spambayes/resources copying spambayes/resources/__init__.py -> build/lib/spambayes/resources copying spambayes/resources/README_txt.py -> build/lib/spambayes/resources creating build/lib/spambayes/core_resources copying spambayes/core_resources/ui_psp.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/ui_html.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/train_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/status_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/scanning__init__.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/query_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/message_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/help_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/helmet_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/config_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/classify_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/__init__.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/README_txt.py -> build/lib/spambayes/core_resources running build_scripts creating build/scripts-2.7 copying and adjusting scripts/sb_client.py -> build/scripts-2.7 copying and adjusting scripts/sb_dbexpimp.py -> build/scripts-2.7 copying and adjusting scripts/sb_evoscore.py -> build/scripts-2.7 copying and adjusting scripts/sb_filter.py -> build/scripts-2.7 copying and adjusting scripts/sb_bnfilter.py -> build/scripts-2.7 copying and adjusting scripts/sb_bnserver.py -> build/scripts-2.7 copying and adjusting scripts/sb_imapfilter.py -> build/scripts-2.7 copying and adjusting scripts/sb_mailsort.py -> build/scripts-2.7 copying and adjusting scripts/sb_mboxtrain.py -> build/scripts-2.7 copying and adjusting scripts/sb_notesfilter.py -> build/scripts-2.7 copying and adjusting scripts/sb_pop3dnd.py -> build/scripts-2.7 copying and adjusting scripts/sb_server.py -> build/scripts-2.7 copying and adjusting scripts/core_server.py -> build/scripts-2.7 copying and adjusting scripts/sb_unheader.py -> build/scripts-2.7 copying and adjusting scripts/sb_upload.py -> build/scripts-2.7 copying and adjusting scripts/sb_xmlrpcserver.py -> build/scripts-2.7 copying and adjusting scripts/sb_chkopts.py -> build/scripts-2.7 changing mode of build/scripts-2.7/sb_client.py from 644 to 755 changing mode of build/scripts-2.7/sb_dbexpimp.py from 644 to 755 changing mode of build/scripts-2.7/sb_evoscore.py from 644 to 755 changing mode of build/scripts-2.7/sb_filter.py from 644 to 755 changing mode of build/scripts-2.7/sb_bnfilter.py from 644 to 755 changing mode of build/scripts-2.7/sb_bnserver.py from 644 to 755 changing mode of build/scripts-2.7/sb_imapfilter.py from 644 to 755 changing mode of build/scripts-2.7/sb_mailsort.py from 644 to 755 changing mode of build/scripts-2.7/sb_mboxtrain.py from 644 to 755 changing mode of build/scripts-2.7/sb_notesfilter.py from 644 to 755 changing mode of build/scripts-2.7/sb_pop3dnd.py from 644 to 755 changing mode of build/scripts-2.7/sb_server.py from 644 to 755 changing mode of build/scripts-2.7/core_server.py from 644 to 755 changing mode of build/scripts-2.7/sb_unheader.py from 644 to 755 changing mode of build/scripts-2.7/sb_upload.py from 644 to 755 changing mode of build/scripts-2.7/sb_xmlrpcserver.py from 644 to 755 changing mode of build/scripts-2.7/sb_chkopts.py from 644 to 755 + pushd ../python3 ~/RPM/BUILD/python3 ~/RPM/BUILD/python-module-spambayes-1.1b1 + CFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export CFLAGS + CXXFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export CXXFLAGS + FFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export FFLAGS + /usr/bin/python3 setup.py build running build running build_py creating build creating build/lib creating build/lib/spambayes copying spambayes/tokenizer.py -> build/lib/spambayes copying spambayes/storage.py -> build/lib/spambayes copying spambayes/smtpproxy.py -> build/lib/spambayes copying spambayes/safepickle.py -> build/lib/spambayes copying spambayes/postfixproxy.py -> build/lib/spambayes copying spambayes/port.py -> build/lib/spambayes copying spambayes/optimize.py -> build/lib/spambayes copying spambayes/oe_mailbox.py -> build/lib/spambayes copying spambayes/msgs.py -> build/lib/spambayes copying spambayes/message.py -> build/lib/spambayes copying spambayes/mboxutils.py -> build/lib/spambayes copying spambayes/i18n.py -> build/lib/spambayes copying spambayes/hammiebulk.py -> build/lib/spambayes copying spambayes/hammie.py -> build/lib/spambayes copying spambayes/dnscache.py -> build/lib/spambayes copying spambayes/dbmstorage.py -> build/lib/spambayes copying spambayes/compatsets.py -> build/lib/spambayes copying spambayes/compatheapq.py -> build/lib/spambayes copying spambayes/compatcsv.py -> build/lib/spambayes copying spambayes/classifier.py -> build/lib/spambayes copying spambayes/chi2.py -> build/lib/spambayes copying spambayes/cdb_classifier.py -> build/lib/spambayes copying spambayes/cdb.py -> build/lib/spambayes copying spambayes/asyncore.py -> build/lib/spambayes copying spambayes/asynchat.py -> build/lib/spambayes copying spambayes/__init__.py -> build/lib/spambayes copying spambayes/XMLRPCPlugin.py -> build/lib/spambayes copying spambayes/Version.py -> build/lib/spambayes copying spambayes/UserInterface.py -> build/lib/spambayes copying spambayes/Tester.py -> build/lib/spambayes copying spambayes/TestToolsUI.py -> build/lib/spambayes copying spambayes/TestDriver.py -> build/lib/spambayes copying spambayes/Stats.py -> build/lib/spambayes copying spambayes/ServerUI.py -> build/lib/spambayes copying spambayes/PyMeldLite.py -> build/lib/spambayes copying spambayes/ProxyUI.py -> build/lib/spambayes copying spambayes/OptionsClass.py -> build/lib/spambayes copying spambayes/Options.py -> build/lib/spambayes copying spambayes/MoinSecurityPolicy.py -> build/lib/spambayes copying spambayes/ImapUI.py -> build/lib/spambayes copying spambayes/ImageStripper.py -> build/lib/spambayes copying spambayes/Histogram.py -> build/lib/spambayes copying spambayes/FileCorpus.py -> build/lib/spambayes copying spambayes/Dibbler.py -> build/lib/spambayes copying spambayes/CostCounter.py -> build/lib/spambayes copying spambayes/Corpus.py -> build/lib/spambayes copying spambayes/CoreUI.py -> build/lib/spambayes copying spambayes/CorePlugin.py -> build/lib/spambayes creating build/lib/spambayes/resources copying spambayes/resources/ui_psp.py -> build/lib/spambayes/resources copying spambayes/resources/ui_html.py -> build/lib/spambayes/resources copying spambayes/resources/train_gif.py -> build/lib/spambayes/resources copying spambayes/resources/status_gif.py -> build/lib/spambayes/resources copying spambayes/resources/scanning__init__.py -> build/lib/spambayes/resources copying spambayes/resources/query_gif.py -> build/lib/spambayes/resources copying spambayes/resources/message_gif.py -> build/lib/spambayes/resources copying spambayes/resources/help_gif.py -> build/lib/spambayes/resources copying spambayes/resources/helmet_gif.py -> build/lib/spambayes/resources copying spambayes/resources/config_gif.py -> build/lib/spambayes/resources copying spambayes/resources/classify_gif.py -> build/lib/spambayes/resources copying spambayes/resources/_cvsignore.py -> build/lib/spambayes/resources copying spambayes/resources/__init__.py -> build/lib/spambayes/resources copying spambayes/resources/README_txt.py -> build/lib/spambayes/resources creating build/lib/spambayes/core_resources copying spambayes/core_resources/ui_psp.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/ui_html.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/train_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/status_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/scanning__init__.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/query_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/message_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/help_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/helmet_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/config_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/classify_gif.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/__init__.py -> build/lib/spambayes/core_resources copying spambayes/core_resources/README_txt.py -> build/lib/spambayes/core_resources running build_scripts creating build/scripts-3.6 copying and adjusting scripts/sb_client.py -> build/scripts-3.6 copying and adjusting scripts/sb_dbexpimp.py -> build/scripts-3.6 copying and adjusting scripts/sb_evoscore.py -> build/scripts-3.6 copying and adjusting scripts/sb_filter.py -> build/scripts-3.6 copying and adjusting scripts/sb_bnfilter.py -> build/scripts-3.6 copying and adjusting scripts/sb_bnserver.py -> build/scripts-3.6 copying and adjusting scripts/sb_imapfilter.py -> build/scripts-3.6 copying and adjusting scripts/sb_mailsort.py -> build/scripts-3.6 copying and adjusting scripts/sb_mboxtrain.py -> build/scripts-3.6 copying and adjusting scripts/sb_notesfilter.py -> build/scripts-3.6 copying and adjusting scripts/sb_pop3dnd.py -> build/scripts-3.6 copying and adjusting scripts/sb_server.py -> build/scripts-3.6 copying and adjusting scripts/core_server.py -> build/scripts-3.6 copying and adjusting scripts/sb_unheader.py -> build/scripts-3.6 copying and adjusting scripts/sb_upload.py -> build/scripts-3.6 copying and adjusting scripts/sb_xmlrpcserver.py -> build/scripts-3.6 copying and adjusting scripts/sb_chkopts.py -> build/scripts-3.6 changing mode of build/scripts-3.6/sb_client.py from 644 to 755 changing mode of build/scripts-3.6/sb_dbexpimp.py from 644 to 755 changing mode of build/scripts-3.6/sb_evoscore.py from 644 to 755 changing mode of build/scripts-3.6/sb_filter.py from 644 to 755 changing mode of build/scripts-3.6/sb_bnfilter.py from 644 to 755 changing mode of build/scripts-3.6/sb_bnserver.py from 644 to 755 changing mode of build/scripts-3.6/sb_imapfilter.py from 644 to 755 changing mode of build/scripts-3.6/sb_mailsort.py from 644 to 755 changing mode of build/scripts-3.6/sb_mboxtrain.py from 644 to 755 changing mode of build/scripts-3.6/sb_notesfilter.py from 644 to 755 changing mode of build/scripts-3.6/sb_pop3dnd.py from 644 to 755 changing mode of build/scripts-3.6/sb_server.py from 644 to 755 changing mode of build/scripts-3.6/core_server.py from 644 to 755 changing mode of build/scripts-3.6/sb_unheader.py from 644 to 755 changing mode of build/scripts-3.6/sb_upload.py from 644 to 755 changing mode of build/scripts-3.6/sb_xmlrpcserver.py from 644 to 755 changing mode of build/scripts-3.6/sb_chkopts.py from 644 to 755 + popd ~/RPM/BUILD/python-module-spambayes-1.1b1 + exit 0 Executing(%install): /bin/sh -e /usr/src/tmp/rpm-tmp.95920 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + /bin/chmod -Rf u+rwX -- /usr/src/tmp/python-module-spambayes-buildroot + : + /bin/rm -rf -- /usr/src/tmp/python-module-spambayes-buildroot + cd python-module-spambayes-1.1b1 + pushd ../python3 ~/RPM/BUILD/python3 ~/RPM/BUILD/python-module-spambayes-1.1b1 + CFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export CFLAGS + CXXFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export CXXFLAGS + FFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export FFLAGS + /usr/bin/python3 setup.py install --skip-build --root=/usr/src/tmp/python-module-spambayes-buildroot --force running install running install_lib creating /usr/src/tmp/python-module-spambayes-buildroot creating /usr/src/tmp/python-module-spambayes-buildroot/usr creating /usr/src/tmp/python-module-spambayes-buildroot/usr/lib creating /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3 creating /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages creating /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes creating /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/README_txt.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/__init__.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/classify_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/config_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/helmet_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/help_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/message_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/query_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/scanning__init__.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/status_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/train_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/ui_html.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/ui_psp.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources creating /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources copying build/lib/spambayes/resources/README_txt.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources copying build/lib/spambayes/resources/__init__.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources copying build/lib/spambayes/resources/_cvsignore.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources copying build/lib/spambayes/resources/classify_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources copying build/lib/spambayes/resources/config_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources copying build/lib/spambayes/resources/helmet_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources copying build/lib/spambayes/resources/help_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources copying build/lib/spambayes/resources/message_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources copying build/lib/spambayes/resources/query_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources copying build/lib/spambayes/resources/scanning__init__.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources copying build/lib/spambayes/resources/status_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources copying build/lib/spambayes/resources/train_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources copying build/lib/spambayes/resources/ui_html.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources copying build/lib/spambayes/resources/ui_psp.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources copying build/lib/spambayes/CorePlugin.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/CoreUI.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/Corpus.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/CostCounter.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/Dibbler.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/FileCorpus.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/Histogram.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/ImageStripper.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/ImapUI.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/MoinSecurityPolicy.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/Options.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/OptionsClass.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/ProxyUI.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/PyMeldLite.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/ServerUI.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/Stats.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/TestDriver.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/TestToolsUI.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/Tester.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/UserInterface.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/Version.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/XMLRPCPlugin.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/__init__.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/asynchat.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/asyncore.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/cdb.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/cdb_classifier.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/chi2.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/classifier.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/compatcsv.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/compatheapq.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/compatsets.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/dbmstorage.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/dnscache.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/hammie.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/hammiebulk.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/i18n.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/mboxutils.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/message.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/msgs.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/oe_mailbox.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/optimize.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/port.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/postfixproxy.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/safepickle.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/smtpproxy.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/storage.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes copying build/lib/spambayes/tokenizer.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/README_txt.py to README_txt.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__init__.py to __init__.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/classify_gif.py to classify_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/config_gif.py to config_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/helmet_gif.py to helmet_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/help_gif.py to help_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/message_gif.py to message_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/query_gif.py to query_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/scanning__init__.py to scanning__init__.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/status_gif.py to status_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/train_gif.py to train_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/ui_html.py to ui_html.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/ui_psp.py to ui_psp.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/README_txt.py to README_txt.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__init__.py to __init__.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/_cvsignore.py to _cvsignore.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/classify_gif.py to classify_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/config_gif.py to config_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/helmet_gif.py to helmet_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/help_gif.py to help_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/message_gif.py to message_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/query_gif.py to query_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/scanning__init__.py to scanning__init__.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/status_gif.py to status_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/train_gif.py to train_gif.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/ui_html.py to ui_html.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/ui_psp.py to ui_psp.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CorePlugin.py to CorePlugin.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py to CoreUI.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Corpus.py to Corpus.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CostCounter.py to CostCounter.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Dibbler.py to Dibbler.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/FileCorpus.py to FileCorpus.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Histogram.py to Histogram.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImageStripper.py to ImageStripper.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImapUI.py to ImapUI.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/MoinSecurityPolicy.py to MoinSecurityPolicy.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Options.py to Options.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/OptionsClass.py to OptionsClass.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ProxyUI.py to ProxyUI.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/PyMeldLite.py to PyMeldLite.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ServerUI.py to ServerUI.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Stats.py to Stats.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/TestDriver.py to TestDriver.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/TestToolsUI.py to TestToolsUI.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Tester.py to Tester.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py to UserInterface.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Version.py to Version.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/XMLRPCPlugin.py to XMLRPCPlugin.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__init__.py to __init__.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/asynchat.py to asynchat.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/asyncore.py to asyncore.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/cdb.py to cdb.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/cdb_classifier.py to cdb_classifier.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/chi2.py to chi2.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/classifier.py to classifier.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatcsv.py to compatcsv.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatheapq.py to compatheapq.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatsets.py to compatsets.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/dbmstorage.py to dbmstorage.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/dnscache.py to dnscache.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/hammie.py to hammie.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/hammiebulk.py to hammiebulk.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py to i18n.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/mboxutils.py to mboxutils.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py to message.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/msgs.py to msgs.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/oe_mailbox.py to oe_mailbox.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/optimize.py to optimize.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/port.py to port.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/postfixproxy.py to postfixproxy.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/safepickle.py to safepickle.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/smtpproxy.py to smtpproxy.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py to storage.cpython-36.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/tokenizer.py to tokenizer.cpython-36.pyc running install_egg_info running egg_info creating spambayes.egg-info writing spambayes.egg-info/PKG-INFO writing dependency_links to spambayes.egg-info/dependency_links.txt writing requirements to spambayes.egg-info/requires.txt writing top-level names to spambayes.egg-info/top_level.txt writing manifest file 'spambayes.egg-info/SOURCES.txt' reading manifest file 'spambayes.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'spambayes.egg-info/SOURCES.txt' Copying spambayes.egg-info to /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes-1.1b1-py3.6.egg-info running install_scripts creating /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_chkopts.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_xmlrpcserver.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_upload.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_unheader.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/core_server.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_server.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_pop3dnd.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_notesfilter.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_mboxtrain.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_mailsort.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_imapfilter.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_bnserver.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_bnfilter.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_filter.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_evoscore.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_dbexpimp.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-3.6/sb_client.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_chkopts.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_xmlrpcserver.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_upload.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_unheader.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_notesfilter.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mailsort.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnserver.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnfilter.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_filter.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_evoscore.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_dbexpimp.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_client.py to 755 + popd ~/RPM/BUILD/python-module-spambayes-1.1b1 + pushd /usr/src/tmp/python-module-spambayes-buildroot/usr/bin ~/tmp/python-module-spambayes-buildroot/usr/bin ~/RPM/BUILD/python-module-spambayes-1.1b1 ++ ls + for i in $(ls) + mv core_server.py core_server.py3 + for i in $(ls) + mv sb_bnfilter.py sb_bnfilter.py3 + for i in $(ls) + mv sb_bnserver.py sb_bnserver.py3 + for i in $(ls) + mv sb_chkopts.py sb_chkopts.py3 + for i in $(ls) + mv sb_client.py sb_client.py3 + for i in $(ls) + mv sb_dbexpimp.py sb_dbexpimp.py3 + for i in $(ls) + mv sb_evoscore.py sb_evoscore.py3 + for i in $(ls) + mv sb_filter.py sb_filter.py3 + for i in $(ls) + mv sb_imapfilter.py sb_imapfilter.py3 + for i in $(ls) + mv sb_mailsort.py sb_mailsort.py3 + for i in $(ls) + mv sb_mboxtrain.py sb_mboxtrain.py3 + for i in $(ls) + mv sb_notesfilter.py sb_notesfilter.py3 + for i in $(ls) + mv sb_pop3dnd.py sb_pop3dnd.py3 + for i in $(ls) + mv sb_server.py sb_server.py3 + for i in $(ls) + mv sb_unheader.py sb_unheader.py3 + for i in $(ls) + mv sb_upload.py sb_upload.py3 + for i in $(ls) + mv sb_xmlrpcserver.py sb_xmlrpcserver.py3 + popd ~/RPM/BUILD/python-module-spambayes-1.1b1 + ln -s /usr/bin/sb_server.py3 /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/sb_server.py + CFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export CFLAGS + CXXFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export CXXFLAGS + FFLAGS='-pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic' + export FFLAGS + /usr/bin/python setup.py install --skip-build --root=/usr/src/tmp/python-module-spambayes-buildroot --force running install running install_lib creating /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7 creating /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages creating /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes creating /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/README_txt.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/__init__.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/classify_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/config_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/helmet_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/help_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/message_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/query_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/scanning__init__.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/status_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/train_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/ui_html.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources copying build/lib/spambayes/core_resources/ui_psp.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources creating /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/resources/README_txt.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/resources/__init__.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/resources/_cvsignore.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/resources/classify_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/resources/config_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/resources/helmet_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/resources/help_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/resources/junk.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/resources/message_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/resources/query_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/resources/scanning__init__.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/resources/status_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/resources/train_gif.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/resources/ui_html.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/resources/ui_psp.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources copying build/lib/spambayes/CorePlugin.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/CoreUI.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/Corpus.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/CostCounter.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/Dibbler.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/FileCorpus.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/Histogram.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/ImageStripper.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/ImapUI.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/MoinSecurityPolicy.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/Options.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/OptionsClass.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/ProxyUI.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/PyMeldLite.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/ServerUI.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/Stats.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/TestDriver.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/TestToolsUI.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/Tester.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/UserInterface.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/Version.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/XMLRPCPlugin.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/__init__.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/asynchat.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/asyncore.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/cdb.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/cdb_classifier.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/chi2.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/classifier.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/compatcsv.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/compatheapq.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/compatsets.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/dbmstorage.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/dnscache.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/hammie.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/hammiebulk.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/i18n.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/mboxutils.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/message.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/msgs.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/oe_mailbox.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/optimize.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/port.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/postfixproxy.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/safepickle.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/smtpproxy.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/storage.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes copying build/lib/spambayes/tokenizer.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/README_txt.py to README_txt.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/__init__.py to __init__.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/classify_gif.py to classify_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/config_gif.py to config_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/helmet_gif.py to helmet_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/help_gif.py to help_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/message_gif.py to message_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/query_gif.py to query_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/scanning__init__.py to scanning__init__.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/status_gif.py to status_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/train_gif.py to train_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/ui_html.py to ui_html.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/ui_psp.py to ui_psp.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/README_txt.py to README_txt.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/__init__.py to __init__.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/_cvsignore.py to _cvsignore.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/classify_gif.py to classify_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/config_gif.py to config_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/helmet_gif.py to helmet_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/help_gif.py to help_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/junk.py to junk.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/message_gif.py to message_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/query_gif.py to query_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/scanning__init__.py to scanning__init__.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/status_gif.py to status_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/train_gif.py to train_gif.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/ui_html.py to ui_html.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/ui_psp.py to ui_psp.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CorePlugin.py to CorePlugin.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.py to CoreUI.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Corpus.py to Corpus.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CostCounter.py to CostCounter.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Dibbler.py to Dibbler.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/FileCorpus.py to FileCorpus.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Histogram.py to Histogram.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImageStripper.py to ImageStripper.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImapUI.py to ImapUI.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/MoinSecurityPolicy.py to MoinSecurityPolicy.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Options.py to Options.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/OptionsClass.py to OptionsClass.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ProxyUI.py to ProxyUI.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/PyMeldLite.py to PyMeldLite.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ServerUI.py to ServerUI.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Stats.py to Stats.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestDriver.py to TestDriver.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestToolsUI.py to TestToolsUI.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Tester.py to Tester.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py to UserInterface.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Version.py to Version.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/XMLRPCPlugin.py to XMLRPCPlugin.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/__init__.py to __init__.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/asynchat.py to asynchat.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/asyncore.py to asyncore.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/cdb.py to cdb.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/cdb_classifier.py to cdb_classifier.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/chi2.py to chi2.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/classifier.py to classifier.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatcsv.py to compatcsv.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatheapq.py to compatheapq.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatsets.py to compatsets.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dbmstorage.py to dbmstorage.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dnscache.py to dnscache.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammie.py to hammie.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammiebulk.py to hammiebulk.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/i18n.py to i18n.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/mboxutils.py to mboxutils.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py to message.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/msgs.py to msgs.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/oe_mailbox.py to oe_mailbox.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/optimize.py to optimize.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/port.py to port.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/postfixproxy.py to postfixproxy.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/safepickle.py to safepickle.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/smtpproxy.py to smtpproxy.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py to storage.pyc byte-compiling /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/tokenizer.py to tokenizer.pyc running install_egg_info running egg_info creating spambayes.egg-info writing requirements to spambayes.egg-info/requires.txt writing spambayes.egg-info/PKG-INFO writing top-level names to spambayes.egg-info/top_level.txt writing dependency_links to spambayes.egg-info/dependency_links.txt writing manifest file 'spambayes.egg-info/SOURCES.txt' reading manifest file 'spambayes.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' writing manifest file 'spambayes.egg-info/SOURCES.txt' Copying spambayes.egg-info to /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes-1.1b1-py2.7.egg-info running install_scripts copying build/scripts-2.7/sb_chkopts.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/sb_xmlrpcserver.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/sb_upload.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/sb_unheader.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/core_server.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/sb_server.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/sb_pop3dnd.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/sb_notesfilter.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/sb_mboxtrain.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/sb_mailsort.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/sb_imapfilter.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/sb_bnserver.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/sb_bnfilter.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/sb_filter.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/sb_evoscore.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/sb_dbexpimp.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin copying build/scripts-2.7/sb_client.py -> /usr/src/tmp/python-module-spambayes-buildroot/usr/bin changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_chkopts.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_xmlrpcserver.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_upload.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_unheader.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_notesfilter.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mailsort.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnserver.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnfilter.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_filter.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_evoscore.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_dbexpimp.py to 755 changing mode of /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_client.py to 755 + /usr/lib/rpm/brp-alt Cleaning files in /usr/src/tmp/python-module-spambayes-buildroot (auto) Verifying and fixing files in /usr/src/tmp/python-module-spambayes-buildroot (binconfig,pkgconfig,libtool,desktop) Checking contents of files in /usr/src/tmp/python-module-spambayes-buildroot/ (default) Compressing files in /usr/src/tmp/python-module-spambayes-buildroot (auto) Adjusting library links in /usr/src/tmp/python-module-spambayes-buildroot ./usr/lib: Verifying ELF objects in /usr/src/tmp/python-module-spambayes-buildroot (arch=normal,fhs=normal,lfs=relaxed,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal) Bytecompiling python modules in /usr/src/tmp/python-module-spambayes-buildroot using /usr/bin/python unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/README_txt.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/__init__.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/classify_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/config_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/helmet_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/help_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/message_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/query_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/scanning__init__.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/status_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/train_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/ui_html.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/ui_psp.pyc compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/README_txt.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/classify_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/config_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/helmet_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/help_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/message_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/query_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/scanning__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/status_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/train_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/ui_html.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/ui_psp.py unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/README_txt.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/__init__.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/_cvsignore.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/classify_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/config_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/helmet_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/help_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/junk.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/message_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/query_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/scanning__init__.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/status_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/train_gif.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/ui_html.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/ui_psp.pyc compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/README_txt.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/_cvsignore.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/classify_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/config_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/helmet_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/help_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/junk.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/message_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/query_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/scanning__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/status_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/train_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/ui_html.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/ui_psp.py unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CorePlugin.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Corpus.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CostCounter.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Dibbler.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/FileCorpus.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Histogram.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImageStripper.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImapUI.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/MoinSecurityPolicy.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Options.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/OptionsClass.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ProxyUI.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/PyMeldLite.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ServerUI.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Stats.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestDriver.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestToolsUI.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Tester.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Version.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/XMLRPCPlugin.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/__init__.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/asynchat.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/asyncore.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/cdb.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/cdb_classifier.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/chi2.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/classifier.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatcsv.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatheapq.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatsets.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dbmstorage.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dnscache.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammie.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammiebulk.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/i18n.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/mboxutils.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/msgs.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/oe_mailbox.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/optimize.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/port.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/postfixproxy.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/safepickle.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/smtpproxy.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/tokenizer.pyc compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CorePlugin.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Corpus.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CostCounter.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Dibbler.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/FileCorpus.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Histogram.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImageStripper.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImapUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/MoinSecurityPolicy.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Options.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/OptionsClass.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ProxyUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/PyMeldLite.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ServerUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Stats.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestDriver.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestToolsUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Tester.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Version.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/XMLRPCPlugin.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/asynchat.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/asyncore.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/cdb.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/cdb_classifier.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/chi2.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/classifier.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatcsv.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatheapq.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatsets.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dbmstorage.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dnscache.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammie.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammiebulk.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/i18n.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/mboxutils.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/msgs.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/oe_mailbox.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/optimize.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/port.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/postfixproxy.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/safepickle.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/smtpproxy.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/tokenizer.py Bytecompiling python modules with optimization in /usr/src/tmp/python-module-spambayes-buildroot using /usr/bin/python -O compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/README_txt.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/classify_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/config_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/helmet_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/help_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/message_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/query_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/scanning__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/status_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/train_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/ui_html.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/ui_psp.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/README_txt.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/_cvsignore.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/classify_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/config_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/helmet_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/help_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/junk.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/message_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/query_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/scanning__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/status_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/train_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/ui_html.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/ui_psp.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CorePlugin.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Corpus.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CostCounter.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Dibbler.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/FileCorpus.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Histogram.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImageStripper.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImapUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/MoinSecurityPolicy.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Options.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/OptionsClass.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ProxyUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/PyMeldLite.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ServerUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Stats.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestDriver.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestToolsUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Tester.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Version.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/XMLRPCPlugin.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/asynchat.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/asyncore.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/cdb.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/cdb_classifier.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/chi2.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/classifier.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatcsv.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatheapq.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatsets.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dbmstorage.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dnscache.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammie.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammiebulk.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/i18n.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/mboxutils.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/msgs.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/oe_mailbox.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/optimize.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/port.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/postfixproxy.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/safepickle.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/smtpproxy.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/tokenizer.py Bytecompiling python3 modules in /usr/src/tmp/python-module-spambayes-buildroot using /usr/bin/python3 unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/CorePlugin.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/CoreUI.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/Corpus.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/CostCounter.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/Dibbler.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/FileCorpus.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/Histogram.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/ImageStripper.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/ImapUI.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/MoinSecurityPolicy.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/Options.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/OptionsClass.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/ProxyUI.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/PyMeldLite.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/ServerUI.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/Stats.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/TestDriver.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/TestToolsUI.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/Tester.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/UserInterface.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/Version.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/XMLRPCPlugin.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/__init__.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/asynchat.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/asyncore.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/cdb.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/cdb_classifier.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/chi2.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/classifier.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/compatcsv.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/compatheapq.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/compatsets.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/dbmstorage.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/dnscache.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/hammie.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/hammiebulk.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/i18n.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/mboxutils.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/message.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/msgs.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/oe_mailbox.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/optimize.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/port.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/postfixproxy.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/safepickle.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/smtpproxy.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/storage.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__pycache__/tokenizer.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/README_txt.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/__init__.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/classify_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/config_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/helmet_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/help_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/message_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/query_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/scanning__init__.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/status_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/train_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/ui_html.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/ui_psp.cpython-36.pyc compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/README_txt.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/classify_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/config_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/helmet_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/help_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/message_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/query_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/scanning__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/status_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/train_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/ui_html.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/ui_psp.py unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__pycache__/README_txt.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__pycache__/__init__.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__pycache__/_cvsignore.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__pycache__/classify_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__pycache__/config_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__pycache__/helmet_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__pycache__/help_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__pycache__/message_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__pycache__/query_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__pycache__/scanning__init__.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__pycache__/status_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__pycache__/train_gif.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__pycache__/ui_html.cpython-36.pyc unlink /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__pycache__/ui_psp.cpython-36.pyc compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/README_txt.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/_cvsignore.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/classify_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/config_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/helmet_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/help_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/message_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/query_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/scanning__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/status_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/train_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/ui_html.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/ui_psp.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CorePlugin.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Corpus.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CostCounter.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Dibbler.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/FileCorpus.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Histogram.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImageStripper.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImapUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/MoinSecurityPolicy.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Options.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/OptionsClass.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ProxyUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/PyMeldLite.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ServerUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Stats.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/TestDriver.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/TestToolsUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Tester.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Version.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/XMLRPCPlugin.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/asynchat.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/asyncore.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/cdb.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/cdb_classifier.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/chi2.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/classifier.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatcsv.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatheapq.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatsets.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/dbmstorage.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/dnscache.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/hammie.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/hammiebulk.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/mboxutils.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/msgs.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/oe_mailbox.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/optimize.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/port.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/postfixproxy.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/safepickle.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/smtpproxy.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/tokenizer.py Bytecompiling python3 modules with optimization in /usr/src/tmp/python-module-spambayes-buildroot using /usr/bin/python3 -O compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/README_txt.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/classify_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/config_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/helmet_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/help_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/message_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/query_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/scanning__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/status_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/train_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/ui_html.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/ui_psp.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/README_txt.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/_cvsignore.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/classify_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/config_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/helmet_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/help_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/message_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/query_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/scanning__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/status_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/train_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/ui_html.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/ui_psp.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CorePlugin.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Corpus.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CostCounter.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Dibbler.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/FileCorpus.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Histogram.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImageStripper.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImapUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/MoinSecurityPolicy.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Options.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/OptionsClass.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ProxyUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/PyMeldLite.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ServerUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Stats.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/TestDriver.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/TestToolsUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Tester.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Version.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/XMLRPCPlugin.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/asynchat.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/asyncore.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/cdb.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/cdb_classifier.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/chi2.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/classifier.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatcsv.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatheapq.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatsets.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/dbmstorage.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/dnscache.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/hammie.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/hammiebulk.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/mboxutils.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/msgs.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/oe_mailbox.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/optimize.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/port.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/postfixproxy.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/safepickle.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/smtpproxy.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/tokenizer.py Bytecompiling python3 modules with optimization-2 in /usr/src/tmp/python-module-spambayes-buildroot using /usr/bin/python3 -OO compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/README_txt.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/classify_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/config_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/helmet_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/help_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/message_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/query_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/scanning__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/status_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/train_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/ui_html.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/ui_psp.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/README_txt.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/_cvsignore.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/classify_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/config_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/helmet_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/help_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/message_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/query_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/scanning__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/status_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/train_gif.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/ui_html.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/ui_psp.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CorePlugin.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Corpus.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CostCounter.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Dibbler.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/FileCorpus.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Histogram.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImageStripper.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImapUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/MoinSecurityPolicy.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Options.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/OptionsClass.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ProxyUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/PyMeldLite.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ServerUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Stats.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/TestDriver.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/TestToolsUI.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Tester.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Version.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/XMLRPCPlugin.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/__init__.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/asynchat.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/asyncore.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/cdb.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/cdb_classifier.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/chi2.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/classifier.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatcsv.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatheapq.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatsets.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/dbmstorage.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/dnscache.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/hammie.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/hammiebulk.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/mboxutils.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/msgs.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/oe_mailbox.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/optimize.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/port.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/postfixproxy.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/safepickle.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/smtpproxy.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py compile /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/tokenizer.py Hardlinking identical .pyc and .opt-?.pyc files './usr/lib/python3/site-packages/spambayes/__pycache__/smtpproxy.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/smtpproxy.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/safepickle.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/safepickle.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/postfixproxy.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/postfixproxy.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/port.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/port.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/port.cpython-36.opt-2.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/port.cpython-36.opt-1.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/optimize.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/optimize.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/optimize.cpython-36.opt-2.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/optimize.cpython-36.opt-1.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/oe_mailbox.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/oe_mailbox.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/msgs.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/msgs.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/mboxutils.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/mboxutils.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/i18n.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/i18n.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/hammiebulk.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/hammiebulk.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/hammie.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/hammie.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/dnscache.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/dnscache.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/dbmstorage.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/dbmstorage.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/compatsets.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/compatsets.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/compatheapq.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/compatheapq.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/compatcsv.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/compatcsv.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/cdb_classifier.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/cdb_classifier.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/cdb.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/cdb.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/asynchat.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/asynchat.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/__init__.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/__init__.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/__init__.cpython-36.opt-2.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/__init__.cpython-36.opt-1.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/XMLRPCPlugin.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/XMLRPCPlugin.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/Version.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/Version.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/Stats.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/Stats.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/ServerUI.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/ServerUI.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/PyMeldLite.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/PyMeldLite.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/ProxyUI.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/ProxyUI.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/OptionsClass.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/OptionsClass.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/Options.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/Options.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/MoinSecurityPolicy.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/MoinSecurityPolicy.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/ImapUI.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/ImapUI.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/Dibbler.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/Dibbler.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/CostCounter.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/CostCounter.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/CostCounter.cpython-36.opt-2.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/CostCounter.cpython-36.opt-1.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/Corpus.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/Corpus.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/__pycache__/CorePlugin.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/__pycache__/CorePlugin.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/resources/__pycache__/ui_psp.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/resources/__pycache__/ui_psp.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/resources/__pycache__/ui_html.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/resources/__pycache__/ui_html.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/resources/__pycache__/train_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/resources/__pycache__/train_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/resources/__pycache__/status_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/resources/__pycache__/status_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/resources/__pycache__/scanning__init__.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/resources/__pycache__/scanning__init__.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/resources/__pycache__/query_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/resources/__pycache__/query_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/resources/__pycache__/message_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/resources/__pycache__/message_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/resources/__pycache__/help_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/resources/__pycache__/help_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/resources/__pycache__/helmet_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/resources/__pycache__/helmet_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/resources/__pycache__/config_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/resources/__pycache__/config_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/resources/__pycache__/classify_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/resources/__pycache__/classify_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/resources/__pycache__/_cvsignore.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/resources/__pycache__/_cvsignore.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/resources/__pycache__/__init__.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/resources/__pycache__/__init__.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/resources/__pycache__/README_txt.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/resources/__pycache__/README_txt.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/ui_psp.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/ui_psp.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/ui_html.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/ui_html.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/train_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/train_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/status_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/status_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/scanning__init__.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/scanning__init__.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/query_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/query_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/message_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/message_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/help_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/help_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/helmet_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/helmet_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/config_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/config_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/classify_gif.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/classify_gif.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/__init__.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/__init__.cpython-36.pyc' './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/README_txt.cpython-36.opt-1.pyc' => './usr/lib/python3/site-packages/spambayes/core_resources/__pycache__/README_txt.cpython-36.pyc' Hardlinking identical .pyc and .pyo files './usr/lib/python2.7/site-packages/spambayes/smtpproxy.pyo' => './usr/lib/python2.7/site-packages/spambayes/smtpproxy.pyc' './usr/lib/python2.7/site-packages/spambayes/safepickle.pyo' => './usr/lib/python2.7/site-packages/spambayes/safepickle.pyc' './usr/lib/python2.7/site-packages/spambayes/postfixproxy.pyo' => './usr/lib/python2.7/site-packages/spambayes/postfixproxy.pyc' './usr/lib/python2.7/site-packages/spambayes/port.pyo' => './usr/lib/python2.7/site-packages/spambayes/port.pyc' './usr/lib/python2.7/site-packages/spambayes/optimize.pyo' => './usr/lib/python2.7/site-packages/spambayes/optimize.pyc' './usr/lib/python2.7/site-packages/spambayes/oe_mailbox.pyo' => './usr/lib/python2.7/site-packages/spambayes/oe_mailbox.pyc' './usr/lib/python2.7/site-packages/spambayes/msgs.pyo' => './usr/lib/python2.7/site-packages/spambayes/msgs.pyc' './usr/lib/python2.7/site-packages/spambayes/mboxutils.pyo' => './usr/lib/python2.7/site-packages/spambayes/mboxutils.pyc' './usr/lib/python2.7/site-packages/spambayes/i18n.pyo' => './usr/lib/python2.7/site-packages/spambayes/i18n.pyc' './usr/lib/python2.7/site-packages/spambayes/hammiebulk.pyo' => './usr/lib/python2.7/site-packages/spambayes/hammiebulk.pyc' './usr/lib/python2.7/site-packages/spambayes/hammie.pyo' => './usr/lib/python2.7/site-packages/spambayes/hammie.pyc' './usr/lib/python2.7/site-packages/spambayes/dnscache.pyo' => './usr/lib/python2.7/site-packages/spambayes/dnscache.pyc' './usr/lib/python2.7/site-packages/spambayes/dbmstorage.pyo' => './usr/lib/python2.7/site-packages/spambayes/dbmstorage.pyc' './usr/lib/python2.7/site-packages/spambayes/compatsets.pyo' => './usr/lib/python2.7/site-packages/spambayes/compatsets.pyc' './usr/lib/python2.7/site-packages/spambayes/compatheapq.pyo' => './usr/lib/python2.7/site-packages/spambayes/compatheapq.pyc' './usr/lib/python2.7/site-packages/spambayes/compatcsv.pyo' => './usr/lib/python2.7/site-packages/spambayes/compatcsv.pyc' './usr/lib/python2.7/site-packages/spambayes/cdb_classifier.pyo' => './usr/lib/python2.7/site-packages/spambayes/cdb_classifier.pyc' './usr/lib/python2.7/site-packages/spambayes/cdb.pyo' => './usr/lib/python2.7/site-packages/spambayes/cdb.pyc' './usr/lib/python2.7/site-packages/spambayes/asynchat.pyo' => './usr/lib/python2.7/site-packages/spambayes/asynchat.pyc' './usr/lib/python2.7/site-packages/spambayes/__init__.pyo' => './usr/lib/python2.7/site-packages/spambayes/__init__.pyc' './usr/lib/python2.7/site-packages/spambayes/XMLRPCPlugin.pyo' => './usr/lib/python2.7/site-packages/spambayes/XMLRPCPlugin.pyc' './usr/lib/python2.7/site-packages/spambayes/Version.pyo' => './usr/lib/python2.7/site-packages/spambayes/Version.pyc' './usr/lib/python2.7/site-packages/spambayes/Stats.pyo' => './usr/lib/python2.7/site-packages/spambayes/Stats.pyc' './usr/lib/python2.7/site-packages/spambayes/ServerUI.pyo' => './usr/lib/python2.7/site-packages/spambayes/ServerUI.pyc' './usr/lib/python2.7/site-packages/spambayes/PyMeldLite.pyo' => './usr/lib/python2.7/site-packages/spambayes/PyMeldLite.pyc' './usr/lib/python2.7/site-packages/spambayes/ProxyUI.pyo' => './usr/lib/python2.7/site-packages/spambayes/ProxyUI.pyc' './usr/lib/python2.7/site-packages/spambayes/OptionsClass.pyo' => './usr/lib/python2.7/site-packages/spambayes/OptionsClass.pyc' './usr/lib/python2.7/site-packages/spambayes/Options.pyo' => './usr/lib/python2.7/site-packages/spambayes/Options.pyc' './usr/lib/python2.7/site-packages/spambayes/MoinSecurityPolicy.pyo' => './usr/lib/python2.7/site-packages/spambayes/MoinSecurityPolicy.pyc' './usr/lib/python2.7/site-packages/spambayes/ImapUI.pyo' => './usr/lib/python2.7/site-packages/spambayes/ImapUI.pyc' './usr/lib/python2.7/site-packages/spambayes/Dibbler.pyo' => './usr/lib/python2.7/site-packages/spambayes/Dibbler.pyc' './usr/lib/python2.7/site-packages/spambayes/CostCounter.pyo' => './usr/lib/python2.7/site-packages/spambayes/CostCounter.pyc' './usr/lib/python2.7/site-packages/spambayes/Corpus.pyo' => './usr/lib/python2.7/site-packages/spambayes/Corpus.pyc' './usr/lib/python2.7/site-packages/spambayes/CorePlugin.pyo' => './usr/lib/python2.7/site-packages/spambayes/CorePlugin.pyc' './usr/lib/python2.7/site-packages/spambayes/resources/ui_psp.pyo' => './usr/lib/python2.7/site-packages/spambayes/resources/ui_psp.pyc' './usr/lib/python2.7/site-packages/spambayes/resources/ui_html.pyo' => './usr/lib/python2.7/site-packages/spambayes/resources/ui_html.pyc' './usr/lib/python2.7/site-packages/spambayes/resources/train_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/resources/train_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/resources/status_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/resources/status_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/resources/scanning__init__.pyo' => './usr/lib/python2.7/site-packages/spambayes/resources/scanning__init__.pyc' './usr/lib/python2.7/site-packages/spambayes/resources/query_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/resources/query_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/resources/message_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/resources/message_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/resources/junk.pyo' => './usr/lib/python2.7/site-packages/spambayes/resources/junk.pyc' './usr/lib/python2.7/site-packages/spambayes/resources/help_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/resources/help_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/resources/helmet_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/resources/helmet_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/resources/config_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/resources/config_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/resources/classify_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/resources/classify_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/resources/_cvsignore.pyo' => './usr/lib/python2.7/site-packages/spambayes/resources/_cvsignore.pyc' './usr/lib/python2.7/site-packages/spambayes/resources/__init__.pyo' => './usr/lib/python2.7/site-packages/spambayes/resources/__init__.pyc' './usr/lib/python2.7/site-packages/spambayes/resources/README_txt.pyo' => './usr/lib/python2.7/site-packages/spambayes/resources/README_txt.pyc' './usr/lib/python2.7/site-packages/spambayes/core_resources/ui_psp.pyo' => './usr/lib/python2.7/site-packages/spambayes/core_resources/ui_psp.pyc' './usr/lib/python2.7/site-packages/spambayes/core_resources/ui_html.pyo' => './usr/lib/python2.7/site-packages/spambayes/core_resources/ui_html.pyc' './usr/lib/python2.7/site-packages/spambayes/core_resources/train_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/core_resources/train_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/core_resources/status_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/core_resources/status_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/core_resources/scanning__init__.pyo' => './usr/lib/python2.7/site-packages/spambayes/core_resources/scanning__init__.pyc' './usr/lib/python2.7/site-packages/spambayes/core_resources/query_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/core_resources/query_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/core_resources/message_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/core_resources/message_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/core_resources/help_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/core_resources/help_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/core_resources/helmet_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/core_resources/helmet_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/core_resources/config_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/core_resources/config_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/core_resources/classify_gif.pyo' => './usr/lib/python2.7/site-packages/spambayes/core_resources/classify_gif.pyc' './usr/lib/python2.7/site-packages/spambayes/core_resources/__init__.pyo' => './usr/lib/python2.7/site-packages/spambayes/core_resources/__init__.pyc' './usr/lib/python2.7/site-packages/spambayes/core_resources/README_txt.pyo' => './usr/lib/python2.7/site-packages/spambayes/core_resources/README_txt.pyc' Processing files: python-module-spambayes-1.1b1-alt2.2 Executing(%doc): /bin/sh -e /usr/src/tmp/rpm-tmp.6076 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd python-module-spambayes-1.1b1 + DOCDIR=/usr/src/tmp/python-module-spambayes-buildroot/usr/share/doc/python-module-spambayes-1.1b1 + export DOCDIR + rm -rf /usr/src/tmp/python-module-spambayes-buildroot/usr/share/doc/python-module-spambayes-1.1b1 + /bin/mkdir -p /usr/src/tmp/python-module-spambayes-buildroot/usr/share/doc/python-module-spambayes-1.1b1 + cp -prL CHANGELOG.txt LICENSE.txt NEWTRICKS.txt POP3PROXY.txt README-DEVEL.txt README.txt TESTING.txt WHAT_IS_NEW.txt failing-unit-tests.txt /usr/src/tmp/python-module-spambayes-buildroot/usr/share/doc/python-module-spambayes-1.1b1 + chmod -R go-w /usr/src/tmp/python-module-spambayes-buildroot/usr/share/doc/python-module-spambayes-1.1b1 + chmod -R a+rX /usr/src/tmp/python-module-spambayes-buildroot/usr/share/doc/python-module-spambayes-1.1b1 + exit 0 Finding Provides (using /usr/lib/rpm/find-provides) Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.50Uksu find-provides: running scripts (alternatives,debuginfo,lib,pam,perl,pkgconfig,python,python3,shell) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/README_txt.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/classify_gif.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/config_gif.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/helmet_gif.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/message_gif.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/query_gif.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/status_gif.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/train_gif.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/ui_html.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/ui_psp.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/README_txt.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/classify_gif.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/config_gif.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/helmet_gif.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/junk.py: data (IGNORE) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/message_gif.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/query_gif.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/status_gif.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/train_gif.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/ui_html.py: data (PASS) python.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/ui_psp.py: data (PASS) Finding Requires (using /usr/lib/rpm/find-requires) Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.3enKRu find-requires: running scripts (cpp,debuginfo,files,lib,pam,perl,pkgconfig,pkgconfiglib,python,python3,rpmlib,shebang,shell,static,symlinks) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/README_txt.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/classify_gif.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/config_gif.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/helmet_gif.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/message_gif.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/query_gif.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/status_gif.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/train_gif.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/ui_html.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/ui_psp.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/README_txt.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/classify_gif.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/config_gif.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/helmet_gif.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/junk.py: data (IGNORE) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/message_gif.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/query_gif.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/status_gif.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/train_gif.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/ui_html.py: data (PASS) python.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/ui_psp.py: data (PASS) python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py: line=94 IGNORE (for REQ=slight and deep=12) module=resource python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnfilter.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnfilter.py: skipping errno python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnserver.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnserver.py: skipping errno /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnserver.py: line=66 IGNORE (for REQ=slight and deep=16) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnserver.py: line=145 IGNORE (for REQ=slight and deep=11) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnserver.py: line=157 IGNORE (for REQ=slight and deep=8) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnserver.py: line=161 IGNORE (for REQ=slight and deep=8) module=sb_filter python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_chkopts.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_client.py: skipping sys /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_client.py: line=24 IGNORE (for REQ=slight and deep=16) module=traceback python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_dbexpimp.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_dbexpimp.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_dbexpimp.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_dbexpimp.py: skipping errno python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_evoscore.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_evoscore.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_evoscore.py: line=96 IGNORE (for REQ=slight and deep=12) module=traceback python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_filter.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_filter.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_filter.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_filter.py: line=244 IGNORE (for REQ=slight and deep=24) module=cProfile python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py: skipping sys /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py: line=85 IGNORE (for REQ=slight and deep=12) module=win32api python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py: skipping thread python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py: line=147 IGNORE (for REQ=slight and deep=12) module=imaplib /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py: line=149 IGNORE (for REQ=slight and deep=12) module=imaplib /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py: line=151 IGNORE (for REQ=slight and deep=8) module=imaplib python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mailsort.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mailsort.py: skipping signal python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mailsort.py: skipping errno /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mailsort.py: line=36 IGNORE (for REQ=slight and deep=8) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mailsort.py: line=37 IGNORE (for REQ=slight and deep=8) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mailsort.py: line=38 IGNORE (for REQ=slight and deep=8) module=spambayes python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py: line=111 IGNORE (for REQ=slight and deep=8) module=time /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py: line=112 IGNORE (for REQ=slight and deep=8) module=socket /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py: line=163 IGNORE (for REQ=slight and deep=8) module=mailbox /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py: line=164 IGNORE (for REQ=slight and deep=8) module=fcntl /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py: line=221 IGNORE (for REQ=slight and deep=8) module=glob python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_notesfilter.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_notesfilter.py: skipping errno python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_notesfilter.py: skipping win32com python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_notesfilter.py: skipping pywintypes python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_notesfilter.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_notesfilter.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_notesfilter.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py: skipping errno python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py: skipping thread python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py: hiding sb_server, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py: line=1012 IGNORE (for REQ=slight and deep=8) module=twisted python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: skipping thread python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: line=109 IGNORE (for REQ=slight and deep=12) module=resource /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: line=653 IGNORE (for REQ=slight and deep=16) module=win32event /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: line=653 IGNORE (for REQ=slight and deep=16) module=win32api /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: line=653 IGNORE (for REQ=slight and deep=16) module=winerror /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: line=653 IGNORE (for REQ=slight and deep=16) module=win32con /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: line=654 IGNORE (for REQ=slight and deep=16) module=pywintypes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: line=654 IGNORE (for REQ=slight and deep=16) module=ntsecuritycon /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: line=1007 IGNORE (for REQ=slight and deep=8) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py: line=1026 IGNORE (for REQ=slight and deep=8) module=urllib python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_unheader.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_upload.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_upload.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_xmlrpcserver.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_xmlrpcserver.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_xmlrpcserver.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.py: line=585 IGNORE (for REQ=slight and deep=15) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.py: line=846 IGNORE (for REQ=slight and deep=19) module=win32event /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.py: line=846 IGNORE (for REQ=slight and deep=19) module=win32api /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CoreUI.py: line=846 IGNORE (for REQ=slight and deep=19) module=winerror python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Corpus.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Corpus.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Corpus.py: line=257 IGNORE (for REQ=slight and deep=19) module=spambayes python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/CostCounter.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Dibbler.py: line=168 IGNORE (for REQ=slight and deep=8) module=cStringIO /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Dibbler.py: line=170 IGNORE (for REQ=slight and deep=8) module=StringIO python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Dibbler.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Dibbler.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Dibbler.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Dibbler.py: line=740 IGNORE (for REQ=slight and deep=8) module=calendar /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Dibbler.py: line=772 IGNORE (for REQ=slight and deep=8) module=threading /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Dibbler.py: line=772 IGNORE (for REQ=slight and deep=8) module=urllib python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/FileCorpus.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/FileCorpus.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/FileCorpus.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Histogram.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImageStripper.py: skipping sys /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImageStripper.py: line=13 IGNORE (for REQ=slight and deep=8) module=cStringIO /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImageStripper.py: line=15 IGNORE (for REQ=slight and deep=8) module=StringIO /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImageStripper.py: line=18 IGNORE (for REQ=slight and deep=8) module=PIL python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImageStripper.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImageStripper.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImageStripper.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImageStripper.py: line=61 IGNORE (for REQ=slight and deep=20) module=win32api /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImageStripper.py: line=72 IGNORE (for REQ=slight and deep=16) module=spambayes python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImapUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImapUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImapUI.py: line=124 IGNORE (for REQ=slight and deep=15) module=imaplib /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImapUI.py: line=172 IGNORE (for REQ=slight and deep=11) module=Options /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ImapUI.py: line=175 IGNORE (for REQ=slight and deep=11) module=Options python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/MoinSecurityPolicy.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/MoinSecurityPolicy.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Options.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Options.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Options.py: line=44 IGNORE (for REQ=slight and deep=8) module=ZODB /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Options.py: line=1357 IGNORE (for REQ=slight and deep=20) module=win32com python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/OptionsClass.py: skipping sys /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/OptionsClass.py: line=84 IGNORE (for REQ=slight and deep=8) module=cStringIO /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/OptionsClass.py: line=86 IGNORE (for REQ=slight and deep=8) module=StringIO /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/OptionsClass.py: line=565 IGNORE (for REQ=slight and deep=11) module=ConfigParser python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ProxyUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ProxyUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ProxyUI.py: line=563 IGNORE (for REQ=slight and deep=11) module=Options /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ProxyUI.py: line=566 IGNORE (for REQ=slight and deep=11) module=Options python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/PyMeldLite.py: skipping sys /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/PyMeldLite.py: line=356 IGNORE (for REQ=slight and deep=8) module=xmllib /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/PyMeldLite.py: line=454 IGNORE (for REQ=slight and deep=8) module=xml /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/PyMeldLite.py: line=1219 IGNORE (for REQ=slight and deep=8) module=doctest /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/PyMeldLite.py: line=1221 IGNORE (for REQ=slight and deep=12) module=Entrian /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/PyMeldLite.py: line=1226 IGNORE (for REQ=slight and deep=8) module=PyMeldLite python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ServerUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ServerUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ServerUI.py: line=88 IGNORE (for REQ=slight and deep=11) module=Options /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/ServerUI.py: line=91 IGNORE (for REQ=slight and deep=11) module=Options python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Stats.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Stats.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestDriver.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestDriver.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestDriver.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestDriver.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestDriver.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestDriver.py: line=136 IGNORE (for REQ=slight and deep=11) module=spambayes python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestToolsUI.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestToolsUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestToolsUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestToolsUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestToolsUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestToolsUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/TestToolsUI.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Tester.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Tester.py: line=191 IGNORE (for REQ=slight and deep=8) module=doctest python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: line=254 IGNORE (for REQ=slight and deep=15) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: line=1067 IGNORE (for REQ=slight and deep=15) module=win32api /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: line=1109 IGNORE (for REQ=slight and deep=11) module=mimetypes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: line=1111 IGNORE (for REQ=slight and deep=11) module=email /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: line=1112 IGNORE (for REQ=slight and deep=11) module=email /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: line=1113 IGNORE (for REQ=slight and deep=11) module=email /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: line=1114 IGNORE (for REQ=slight and deep=11) module=email /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: line=1115 IGNORE (for REQ=slight and deep=11) module=email /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/UserInterface.py: line=1116 IGNORE (for REQ=slight and deep=11) module=email python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Version.py: skipping sys /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Version.py: line=158 IGNORE (for REQ=slight and deep=11) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Version.py: line=234 IGNORE (for REQ=slight and deep=8) module=ConfigParser /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Version.py: line=246 IGNORE (for REQ=slight and deep=8) module=urllib2 /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Version.py: line=247 IGNORE (for REQ=slight and deep=8) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Version.py: line=366 IGNORE (for REQ=slight and deep=12) module=traceback python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/XMLRPCPlugin.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/XMLRPCPlugin.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/XMLRPCPlugin.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/XMLRPCPlugin.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/XMLRPCPlugin.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/XMLRPCPlugin.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/asynchat.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/asyncore.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/asyncore.py: skipping errno /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/asyncore.py: line=513 IGNORE (for REQ=slight and deep=8) module=fcntl python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/cdb_classifier.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/cdb_classifier.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/chi2.py: line=93 IGNORE (for REQ=slight and deep=8) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/chi2.py: line=94 IGNORE (for REQ=slight and deep=8) module=sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/classifier.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/classifier.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/classifier.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/classifier.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/classifier.py: line=152 IGNORE (for REQ=slight and deep=11) module=math /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/classifier.py: line=548 IGNORE (for REQ=slight and deep=11) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/classifier.py: line=645 IGNORE (for REQ=slight and deep=11) module=spambayes python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatcsv.py: skipping sys /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatcsv.py: line=103 IGNORE (for REQ=slight and deep=8) module=unittest /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatcsv.py: line=104 IGNORE (for REQ=slight and deep=8) module=StringIO /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatsets.py: line=132 IGNORE (for REQ=slight and deep=11) module=copy /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/__init__.py: line=11 IGNORE (for REQ=slight and deep=12) module=resourcepackage /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/core_resources/scanning__init__.py: line=17 IGNORE (for REQ=slight and deep=12) module=resourcepackage python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dbmstorage.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dbmstorage.py: skipping sys /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dbmstorage.py: line=13 IGNORE (for REQ=slight and deep=8) module=bsddb3 /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dbmstorage.py: line=19 IGNORE (for REQ=slight and deep=8) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dbmstorage.py: line=24 IGNORE (for REQ=slight and deep=8) module=spambayes python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dnscache.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dnscache.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dnscache.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/dnscache.py: line=324 IGNORE (for REQ=slight and deep=8) module=transaction python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammie.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammie.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammie.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammie.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammie.py: line=120 IGNORE (for REQ=slight and deep=19) module=math /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammie.py: line=277 IGNORE (for REQ=slight and deep=8) module=spambayes python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammiebulk.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammiebulk.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammiebulk.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/i18n.py: skipping sys /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/i18n.py: line=78 IGNORE (for REQ=slight and deep=12) module=win32api /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/i18n.py: line=148 IGNORE (for REQ=slight and deep=11) module=spambayes python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/mboxutils.py: skipping sys /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/mboxutils.py: line=90 IGNORE (for REQ=slight and deep=12) module=mhlib /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/mboxutils.py: line=119 IGNORE (for REQ=slight and deep=12) module=scripts /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/mboxutils.py: line=120 IGNORE (for REQ=slight and deep=12) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/mboxutils.py: line=121 IGNORE (for REQ=slight and deep=12) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/mboxutils.py: line=272 IGNORE (for REQ=slight and deep=8) module=doctest python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py: skipping errno python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py: line=99 IGNORE (for REQ=slight and deep=8) module=cStringIO /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py: line=101 IGNORE (for REQ=slight and deep=8) module=StringIO /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py: line=263 IGNORE (for REQ=slight and deep=8) module=persistent /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py: line=268 IGNORE (for REQ=slight and deep=11) module=ZODB /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py: line=269 IGNORE (for REQ=slight and deep=11) module=BTrees python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/msgs.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/oe_mailbox.py: skipping sys /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/oe_mailbox.py: line=37 IGNORE (for REQ=slight and deep=8) module=cStringIO /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/oe_mailbox.py: line=39 IGNORE (for REQ=slight and deep=8) module=StringIO python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/oe_mailbox.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/oe_mailbox.py: line=44 IGNORE (for REQ=slight and deep=8) module=win32api /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/oe_mailbox.py: line=45 IGNORE (for REQ=slight and deep=8) module=win32con /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/oe_mailbox.py: line=46 IGNORE (for REQ=slight and deep=8) module=win32gui /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/oe_mailbox.py: line=47 IGNORE (for REQ=slight and deep=8) module=win32com /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/oe_mailbox.py: line=695 IGNORE (for REQ=slight and deep=8) module=getopt /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/optimize.py: line=9 IGNORE (for REQ=slight and deep=8) module=numpy /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/optimize.py: line=67 IGNORE (for REQ=slight and deep=8) module=numpy /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/port.py: line=3 IGNORE (for REQ=slight and deep=8) module=hashlib /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/port.py: line=6 IGNORE (for REQ=slight and deep=8) module=md5 /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/port.py: line=9 IGNORE (for REQ=slight and deep=8) module=bsddb3 /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/port.py: line=14 IGNORE (for REQ=slight and deep=12) module=bsddb /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/port.py: line=19 IGNORE (for REQ=slight and deep=8) module=gdbm python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/postfixproxy.py: skipping __main__ /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/postfixproxy.py: line=16 IGNORE (for REQ=slight and deep=8) module=smtpd python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/postfixproxy.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/__init__.py: line=11 IGNORE (for REQ=slight and deep=12) module=resourcepackage /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/resources/scanning__init__.py: line=17 IGNORE (for REQ=slight and deep=12) module=resourcepackage python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/safepickle.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/safepickle.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/smtpproxy.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/smtpproxy.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/smtpproxy.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/smtpproxy.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/smtpproxy.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/smtpproxy.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/smtpproxy.py: hiding sb_server, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/smtpproxy.py: hiding sb_server, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: skipping sys python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: skipping errno python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: line=440 IGNORE (for REQ=slight and deep=11) module=psycopg /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: line=514 IGNORE (for REQ=slight and deep=11) module=MySQLdb /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: line=646 IGNORE (for REQ=slight and deep=8) module=persistent /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: line=649 IGNORE (for REQ=slight and deep=12) module=ZODB /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: line=655 IGNORE (for REQ=slight and deep=11) module=ZODB /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: line=656 IGNORE (for REQ=slight and deep=11) module=BTrees /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: line=687 IGNORE (for REQ=slight and deep=11) module=ZODB /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: line=698 IGNORE (for REQ=slight and deep=11) module=ZODB /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: line=730 IGNORE (for REQ=slight and deep=15) module=ZODB /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: line=732 IGNORE (for REQ=slight and deep=15) module=transaction /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: line=738 IGNORE (for REQ=slight and deep=11) module=ZODB /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: line=740 IGNORE (for REQ=slight and deep=15) module=ZODB /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: line=742 IGNORE (for REQ=slight and deep=15) module=ZODB /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: line=743 IGNORE (for REQ=slight and deep=11) module=ZODB /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py: line=846 IGNORE (for REQ=slight and deep=11) module=ZEO python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/tokenizer.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/tokenizer.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED python.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/tokenizer.py: hiding spambayes, which SEEMS TO BE SELF-SATISFIED /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/tokenizer.py: line=24 IGNORE (for REQ=slight and deep=8) module=spambayes /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/tokenizer.py: line=33 IGNORE (for REQ=slight and deep=8) module=atexit /usr/lib/rpm/python.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/tokenizer.py: line=1626 IGNORE (for REQ=slight and deep=15) module=spambayes shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Corpus.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/FileCorpus.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Histogram.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/MoinSecurityPolicy.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Stats.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/Version.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/cdb.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/classifier.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/compatcsv.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammie.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/hammiebulk.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/mboxutils.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/message.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/postfixproxy.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/smtpproxy.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/storage.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python2.7/site-packages/spambayes/tokenizer.py is not executable Provides: python2.7(spambayes), python2.7(spambayes.CorePlugin), python2.7(spambayes.CoreUI), python2.7(spambayes.Corpus), python2.7(spambayes.CostCounter), python2.7(spambayes.Dibbler), python2.7(spambayes.FileCorpus), python2.7(spambayes.Histogram), python2.7(spambayes.ImageStripper), python2.7(spambayes.ImapUI), python2.7(spambayes.MoinSecurityPolicy), python2.7(spambayes.Options), python2.7(spambayes.OptionsClass), python2.7(spambayes.ProxyUI), python2.7(spambayes.PyMeldLite), python2.7(spambayes.ServerUI), python2.7(spambayes.Stats), python2.7(spambayes.TestDriver), python2.7(spambayes.TestToolsUI), python2.7(spambayes.Tester), python2.7(spambayes.UserInterface), python2.7(spambayes.Version), python2.7(spambayes.XMLRPCPlugin), python2.7(spambayes.asynchat), python2.7(spambayes.asyncore), python2.7(spambayes.cdb), python2.7(spambayes.cdb_classifier), python2.7(spambayes.chi2), python2.7(spambayes.classifier), python2.7(spambayes.compatcsv), python2.7(spambayes.compatheapq), python2.7(spambayes.compatsets), python2.7(spambayes.core_resources), python2.7(spambayes.core_resources.README_txt), python2.7(spambayes.core_resources.classify_gif), python2.7(spambayes.core_resources.config_gif), python2.7(spambayes.core_resources.helmet_gif), python2.7(spambayes.core_resources.help_gif), python2.7(spambayes.core_resources.message_gif), python2.7(spambayes.core_resources.query_gif), python2.7(spambayes.core_resources.scanning__init__), python2.7(spambayes.core_resources.status_gif), python2.7(spambayes.core_resources.train_gif), python2.7(spambayes.core_resources.ui_html), python2.7(spambayes.core_resources.ui_psp), python2.7(spambayes.dbmstorage), python2.7(spambayes.dnscache), python2.7(spambayes.hammie), python2.7(spambayes.hammiebulk), python2.7(spambayes.i18n), python2.7(spambayes.mboxutils), python2.7(spambayes.message), python2.7(spambayes.msgs), python2.7(spambayes.oe_mailbox), python2.7(spambayes.optimize), python2.7(spambayes.port), python2.7(spambayes.postfixproxy), python2.7(spambayes.resources), python2.7(spambayes.resources.README_txt), python2.7(spambayes.resources._cvsignore), python2.7(spambayes.resources.classify_gif), python2.7(spambayes.resources.config_gif), python2.7(spambayes.resources.helmet_gif), python2.7(spambayes.resources.help_gif), python2.7(spambayes.resources.message_gif), python2.7(spambayes.resources.query_gif), python2.7(spambayes.resources.scanning__init__), python2.7(spambayes.resources.status_gif), python2.7(spambayes.resources.train_gif), python2.7(spambayes.resources.ui_html), python2.7(spambayes.resources.ui_psp), python2.7(spambayes.safepickle), python2.7(spambayes.smtpproxy), python2.7(spambayes.storage), python2.7(spambayes.tokenizer) Requires: /usr/bin/python, /usr/lib/python2.7/site-packages, python-modules, python2.7(DNS), python2.7(MoinMoin), python2.7(bisect), python2.7(email), python2.7(encodings), python2.7(lockfile), python2.7(mailbox), python2.7(mimetypes), python2.7(twisted) Processing files: python3-module-spambayes-1.1b1-alt2.2 Executing(%doc): /bin/sh -e /usr/src/tmp/rpm-tmp.67106 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd python-module-spambayes-1.1b1 + DOCDIR=/usr/src/tmp/python-module-spambayes-buildroot/usr/share/doc/python3-module-spambayes-1.1b1 + export DOCDIR + rm -rf /usr/src/tmp/python-module-spambayes-buildroot/usr/share/doc/python3-module-spambayes-1.1b1 + /bin/mkdir -p /usr/src/tmp/python-module-spambayes-buildroot/usr/share/doc/python3-module-spambayes-1.1b1 + cp -prL CHANGELOG.txt LICENSE.txt NEWTRICKS.txt POP3PROXY.txt README-DEVEL.txt README.txt TESTING.txt WHAT_IS_NEW.txt failing-unit-tests.txt /usr/src/tmp/python-module-spambayes-buildroot/usr/share/doc/python3-module-spambayes-1.1b1 + chmod -R go-w /usr/src/tmp/python-module-spambayes-buildroot/usr/share/doc/python3-module-spambayes-1.1b1 + chmod -R a+rX /usr/src/tmp/python-module-spambayes-buildroot/usr/share/doc/python3-module-spambayes-1.1b1 + exit 0 Finding Provides (using /usr/lib/rpm/find-provides) Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.GhChkJ find-provides: absolute symbolic link /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/sb_server.py -> /usr/bin/sb_server.py3 is not going to provide anything find-provides: running scripts (alternatives,debuginfo,lib,pam,perl,pkgconfig,python,python3,shell) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/README_txt.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/classify_gif.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/config_gif.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/helmet_gif.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/message_gif.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/query_gif.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/status_gif.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/train_gif.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/ui_html.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/ui_psp.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/README_txt.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/classify_gif.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/config_gif.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/helmet_gif.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/message_gif.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/query_gif.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/status_gif.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/train_gif.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/ui_html.py: data (PASS) python3.prov.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/ui_psp.py: data (PASS) Finding Requires (using /usr/lib/rpm/find-requires) Executing: /bin/sh -e /usr/src/tmp/rpm-tmp.q8Rn46 find-requires: running scripts (cpp,debuginfo,files,lib,pam,perl,pkgconfig,pkgconfiglib,python,python3,rpmlib,shebang,shell,static,symlinks) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/README_txt.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/classify_gif.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/config_gif.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/helmet_gif.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/message_gif.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/query_gif.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/status_gif.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/train_gif.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/ui_html.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/ui_psp.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/README_txt.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/classify_gif.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/config_gif.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/helmet_gif.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/message_gif.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/query_gif.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/status_gif.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/train_gif.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/ui_html.py: data (PASS) python3.req.files: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/ui_psp.py: data (PASS) python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: skipping sys /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=94 IGNORE (for REQ=slight and deep=12) module=resource /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 UNABLE to determine the imported name at parse-time: name /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 a form of __import__ was read which gave no deps: [274, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 122]], [326, [7, '(', 122], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'name', 122]]]]]]]]]]]]]]]]]], [8, ')', 122]]]]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 UNABLE to determine the imported name at parse-time: name /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 a form of __import__ was read which gave no deps: [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 122]], [326, [7, '(', 122], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'name', 122]]]]]]]]]]]]]]]]]], [8, ')', 122]]]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 UNABLE to determine the imported name at parse-time: name /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 a form of __import__ was read which gave no deps: [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 122]], [326, [7, '(', 122], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'name', 122]]]]]]]]]]]]]]]]]], [8, ')', 122]]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 UNABLE to determine the imported name at parse-time: name /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 a form of __import__ was read which gave no deps: [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 122]], [326, [7, '(', 122], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'name', 122]]]]]]]]]]]]]]]]]], [8, ')', 122]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 UNABLE to determine the imported name at parse-time: name /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 a form of __import__ was read which gave no deps: [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 122]], [326, [7, '(', 122], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'name', 122]]]]]]]]]]]]]]]]]], [8, ')', 122]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 UNABLE to determine the imported name at parse-time: name /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 a form of __import__ was read which gave no deps: [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 122]], [326, [7, '(', 122], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'name', 122]]]]]]]]]]]]]]]]]], [8, ')', 122]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 UNABLE to determine the imported name at parse-time: name /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 a form of __import__ was read which gave no deps: [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 122]], [326, [7, '(', 122], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'name', 122]]]]]]]]]]]]]]]]]], [8, ')', 122]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 UNABLE to determine the imported name at parse-time: name /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 a form of __import__ was read which gave no deps: [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 122]], [326, [7, '(', 122], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'name', 122]]]]]]]]]]]]]]]]]], [8, ')', 122]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 UNABLE to determine the imported name at parse-time: name /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 a form of __import__ was read which gave no deps: [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 122]], [326, [7, '(', 122], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'name', 122]]]]]]]]]]]]]]]]]], [8, ')', 122]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 UNABLE to determine the imported name at parse-time: name /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 a form of __import__ was read which gave no deps: [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 122]], [326, [7, '(', 122], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'name', 122]]]]]]]]]]]]]]]]]], [8, ')', 122]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 UNABLE to determine the imported name at parse-time: name /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 a form of __import__ was read which gave no deps: [319, [320, [321, [322, [323, [324, [1, '__import__', 122]], [326, [7, '(', 122], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'name', 122]]]]]]]]]]]]]]]]]], [8, ')', 122]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 UNABLE to determine the imported name at parse-time: name /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 a form of __import__ was read which gave no deps: [320, [321, [322, [323, [324, [1, '__import__', 122]], [326, [7, '(', 122], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'name', 122]]]]]]]]]]]]]]]]]], [8, ')', 122]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 UNABLE to determine the imported name at parse-time: name /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 a form of __import__ was read which gave no deps: [321, [322, [323, [324, [1, '__import__', 122]], [326, [7, '(', 122], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'name', 122]]]]]]]]]]]]]]]]]], [8, ')', 122]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 UNABLE to determine the imported name at parse-time: name /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 a form of __import__ was read which gave no deps: [322, [323, [324, [1, '__import__', 122]], [326, [7, '(', 122], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'name', 122]]]]]]]]]]]]]]]]]], [8, ')', 122]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 UNABLE to determine the imported name at parse-time: name /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=122 a form of __import__ was read which gave no deps: [323, [324, [1, '__import__', 122]], [326, [7, '(', 122], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'name', 122]]]]]]]]]]]]]]]]]], [8, ')', 122]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=124 IGNORE (for REQ=slight and deep=13) module=spambayes.%s /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=124 IGNORE (for REQ=slight and deep=14) module=spambayes.%s /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=124 IGNORE (for REQ=slight and deep=15) module=spambayes.%s /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=124 IGNORE (for REQ=slight and deep=16) module=spambayes.%s /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=124 IGNORE (for REQ=slight and deep=17) module=spambayes.%s /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=124 IGNORE (for REQ=slight and deep=18) module=spambayes.%s /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=124 IGNORE (for REQ=slight and deep=19) module=spambayes.%s /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=124 IGNORE (for REQ=slight and deep=20) module=spambayes.%s /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=124 IGNORE (for REQ=slight and deep=21) module=spambayes.%s /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=124 IGNORE (for REQ=slight and deep=22) module=spambayes.%s /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=124 IGNORE (for REQ=slight and deep=23) module=spambayes.%s /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=124 IGNORE (for REQ=slight and deep=24) module=spambayes.%s /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=124 IGNORE (for REQ=slight and deep=25) module=spambayes.%s /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=124 IGNORE (for REQ=slight and deep=26) module=spambayes.%s /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/core_server.py3: line=124 IGNORE (for REQ=slight and deep=27) module=spambayes.%s python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnfilter.py3: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnfilter.py3: skipping errno python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnfilter.py3: skipping time python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnserver.py3: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnserver.py3: skipping errno /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnserver.py3: line=66 IGNORE (for REQ=slight and deep=16) module=spambayes /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnserver.py3: line=145 IGNORE (for REQ=slight and deep=11) module=spambayes /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnserver.py3: line=157 IGNORE (for REQ=slight and deep=8) module=spambayes /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_bnserver.py3: line=161 IGNORE (for REQ=slight and deep=8) module=sb_filter python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_client.py3: skipping sys /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_client.py3: line=24 IGNORE (for REQ=slight and deep=16) module=traceback python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_dbexpimp.py3: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_dbexpimp.py3: skipping errno python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_evoscore.py3: skipping sys /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_evoscore.py3: line=96 IGNORE (for REQ=slight and deep=12) module=traceback python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_filter.py3: skipping sys /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_filter.py3: line=244 IGNORE (for REQ=slight and deep=24) module=cProfile python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py3: skipping sys /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py3: line=85 IGNORE (for REQ=slight and deep=12) module=win32api python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py3: skipping time python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py3: skipping _thread python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py3: skipping email.Parser python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py3: skipping email.Utils /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py3: line=147 IGNORE (for REQ=slight and deep=12) module=imaplib /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py3: line=149 IGNORE (for REQ=slight and deep=12) module=imaplib /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_imapfilter.py3: line=151 IGNORE (for REQ=slight and deep=8) module=imaplib python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mailsort.py3: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mailsort.py3: skipping time python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mailsort.py3: skipping errno /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mailsort.py3: line=36 IGNORE (for REQ=slight and deep=8) module=spambayes /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mailsort.py3: line=37 IGNORE (for REQ=slight and deep=8) module=spambayes.cdb_classifier /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mailsort.py3: line=38 IGNORE (for REQ=slight and deep=8) module=spambayes.tokenizer python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py3: skipping sys /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py3: line=111 IGNORE (for REQ=slight and deep=8) module=time /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py3: line=112 IGNORE (for REQ=slight and deep=8) module=socket /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py3: line=163 IGNORE (for REQ=slight and deep=8) module=mailbox /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py3: line=164 IGNORE (for REQ=slight and deep=8) module=fcntl /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_mboxtrain.py3: line=221 IGNORE (for REQ=slight and deep=8) module=glob python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_notesfilter.py3: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_notesfilter.py3: skipping errno python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_notesfilter.py3: skipping win32com.client python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_notesfilter.py3: skipping pywintypes python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py3: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py3: skipping time python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py3: skipping errno python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py3: skipping _thread python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py3: skipping email.Utils python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py3: skipping twisted.protocols.imap4 python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py3: skipping twisted.protocols.imap4 python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py3: skipping twisted.protocols.imap4 python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py3: skipping twisted.protocols.imap4 python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py3: skipping twisted.protocols.imap4 /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_pop3dnd.py3: line=1012 IGNORE (for REQ=slight and deep=8) module=twisted.copyright python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py3: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py3: skipping time python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py3: skipping _thread /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py3: line=109 IGNORE (for REQ=slight and deep=12) module=resource /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py3: line=653 IGNORE (for REQ=slight and deep=16) module=win32event /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py3: line=653 IGNORE (for REQ=slight and deep=16) module=win32api /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py3: line=653 IGNORE (for REQ=slight and deep=16) module=winerror /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py3: line=653 IGNORE (for REQ=slight and deep=16) module=win32con /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py3: line=654 IGNORE (for REQ=slight and deep=16) module=pywintypes /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py3: line=654 IGNORE (for REQ=slight and deep=16) module=ntsecuritycon /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py3: line=1008 IGNORE (for REQ=slight and deep=8) module=spambayes /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py3: line=1027 IGNORE (for REQ=slight and deep=8) module=urllib.request /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_server.py3: line=1028 IGNORE (for REQ=slight and deep=8) module=urllib.parse python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_unheader.py3: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_unheader.py3: skipping email.Parser python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_unheader.py3: skipping email.Message python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_unheader.py3: skipping email.Generator python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_upload.py3: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/bin/sb_xmlrpcserver.py3: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: skipping time /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=585 IGNORE (for REQ=slight and deep=15) module=spambayes.core_resources /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 a form of __import__ was read which gave no deps: [274, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 589]], [326, [7, '(', 589], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 589], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 589]]]]]]]]]]]]]]]], [12, ',', 589], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'core_resources'", 590]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 a form of __import__ was read which gave no deps: [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 589]], [326, [7, '(', 589], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 589], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 589]]]]]]]]]]]]]]]], [12, ',', 589], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'core_resources'", 590]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 a form of __import__ was read which gave no deps: [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 589]], [326, [7, '(', 589], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 589], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 589]]]]]]]]]]]]]]]], [12, ',', 589], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'core_resources'", 590]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 a form of __import__ was read which gave no deps: [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 589]], [326, [7, '(', 589], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 589], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 589]]]]]]]]]]]]]]]], [12, ',', 589], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'core_resources'", 590]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 a form of __import__ was read which gave no deps: [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 589]], [326, [7, '(', 589], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 589], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 589]]]]]]]]]]]]]]]], [12, ',', 589], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'core_resources'", 590]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 a form of __import__ was read which gave no deps: [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 589]], [326, [7, '(', 589], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 589], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 589]]]]]]]]]]]]]]]], [12, ',', 589], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'core_resources'", 590]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 a form of __import__ was read which gave no deps: [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 589]], [326, [7, '(', 589], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 589], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 589]]]]]]]]]]]]]]]], [12, ',', 589], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'core_resources'", 590]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 a form of __import__ was read which gave no deps: [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 589]], [326, [7, '(', 589], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 589], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 589]]]]]]]]]]]]]]]], [12, ',', 589], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'core_resources'", 590]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 a form of __import__ was read which gave no deps: [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 589]], [326, [7, '(', 589], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 589], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 589]]]]]]]]]]]]]]]], [12, ',', 589], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'core_resources'", 590]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 a form of __import__ was read which gave no deps: [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 589]], [326, [7, '(', 589], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 589], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 589]]]]]]]]]]]]]]]], [12, ',', 589], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'core_resources'", 590]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 a form of __import__ was read which gave no deps: [319, [320, [321, [322, [323, [324, [1, '__import__', 589]], [326, [7, '(', 589], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 589], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 589]]]]]]]]]]]]]]]], [12, ',', 589], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'core_resources'", 590]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 a form of __import__ was read which gave no deps: [320, [321, [322, [323, [324, [1, '__import__', 589]], [326, [7, '(', 589], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 589], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 589]]]]]]]]]]]]]]]], [12, ',', 589], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'core_resources'", 590]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 a form of __import__ was read which gave no deps: [321, [322, [323, [324, [1, '__import__', 589]], [326, [7, '(', 589], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 589], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 589]]]]]]]]]]]]]]]], [12, ',', 589], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'core_resources'", 590]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]]], [8, ')', 590]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 a form of __import__ was read which gave no deps: [322, [323, [324, [1, '__import__', 589]], [326, [7, '(', 589], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 589], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 589]]]]]]]]]]]]]]]], [12, ',', 589], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'core_resources'", 590]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]]], [8, ')', 590]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=589 a form of __import__ was read which gave no deps: [323, [324, [1, '__import__', 589]], [326, [7, '(', 589], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 589], [26, '}', 589]]]]]]]]]]]]]]]]], [12, ',', 589], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 589], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 589]]]]]]]]]]]]]]]], [12, ',', 589], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'core_resources'", 590]]]]]]]]]]]]]]]]], [8, ')', 590]]]]]]]]]]]]]]]]]], [8, ')', 590]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=846 IGNORE (for REQ=slight and deep=19) module=win32event /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=846 IGNORE (for REQ=slight and deep=19) module=win32api /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/CoreUI.py: line=846 IGNORE (for REQ=slight and deep=19) module=winerror python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Corpus.py: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Corpus.py: skipping time /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Corpus.py: line=257 IGNORE (for REQ=slight and deep=19) module=spambayes.storage /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Dibbler.py: line=168 IGNORE (for REQ=slight and deep=8) module=io /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Dibbler.py: line=170 IGNORE (for REQ=slight and deep=8) module=io python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Dibbler.py: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Dibbler.py: skipping time /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Dibbler.py: line=740 IGNORE (for REQ=slight and deep=8) module=calendar /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Dibbler.py: line=772 IGNORE (for REQ=slight and deep=8) module=threading /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Dibbler.py: line=772 IGNORE (for REQ=slight and deep=8) module=urllib.request /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Dibbler.py: line=772 IGNORE (for REQ=slight and deep=8) module=urllib.parse /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Dibbler.py: line=772 IGNORE (for REQ=slight and deep=8) module=urllib.error python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/FileCorpus.py: skipping time python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImageStripper.py: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImageStripper.py: skipping atexit /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImageStripper.py: line=13 IGNORE (for REQ=slight and deep=8) module=io /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImageStripper.py: line=15 IGNORE (for REQ=slight and deep=8) module=io /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImageStripper.py: line=18 IGNORE (for REQ=slight and deep=8) module=PIL /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImageStripper.py: line=61 IGNORE (for REQ=slight and deep=20) module=win32api /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImageStripper.py: line=72 IGNORE (for REQ=slight and deep=16) module=spambayes /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImapUI.py: line=124 IGNORE (for REQ=slight and deep=15) module=imaplib /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImapUI.py: line=172 possible relative import from ., UNIMPLEMENTED /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ImapUI.py: line=175 possible relative import from ., UNIMPLEMENTED python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/MoinSecurityPolicy.py: skipping atexit python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/MoinSecurityPolicy.py: skipping MoinMoin.security python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/MoinSecurityPolicy.py: skipping MoinMoin.wikidicts python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/MoinSecurityPolicy.py: skipping MoinMoin.user python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/MoinSecurityPolicy.py: skipping MoinMoin.util.mail python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/MoinSecurityPolicy.py: skipping MoinMoin.Page python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/MoinSecurityPolicy.py: skipping MoinMoin.PageEditor python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Options.py: skipping sys /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Options.py: line=44 IGNORE (for REQ=slight and deep=8) module=ZODB /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Options.py: line=1357 IGNORE (for REQ=slight and deep=20) module=win32com.shell python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/OptionsClass.py: skipping sys /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/OptionsClass.py: line=84 IGNORE (for REQ=slight and deep=8) module=io /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/OptionsClass.py: line=86 IGNORE (for REQ=slight and deep=8) module=io /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/OptionsClass.py: line=565 IGNORE (for REQ=slight and deep=11) module=configparser python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ProxyUI.py: skipping time /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ProxyUI.py: line=563 possible relative import from ., UNIMPLEMENTED /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ProxyUI.py: line=566 possible relative import from ., UNIMPLEMENTED python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/PyMeldLite.py: skipping sys /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/PyMeldLite.py: line=356 IGNORE (for REQ=slight and deep=8) module=xmllib /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/PyMeldLite.py: line=454 IGNORE (for REQ=slight and deep=8) module=xml.parsers.expat /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/PyMeldLite.py: line=1219 IGNORE (for REQ=slight and deep=8) module=doctest /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/PyMeldLite.py: line=1221 IGNORE (for REQ=slight and deep=12) module=Entrian /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/PyMeldLite.py: line=1226 possible relative import from ., UNIMPLEMENTED /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ServerUI.py: line=88 possible relative import from ., UNIMPLEMENTED /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/ServerUI.py: line=91 possible relative import from ., UNIMPLEMENTED python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Stats.py: skipping time /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/TestDriver.py: line=136 IGNORE (for REQ=slight and deep=11) module=spambayes python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/TestToolsUI.py: skipping sys /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Tester.py: line=191 IGNORE (for REQ=slight and deep=8) module=doctest python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: skipping time python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: skipping email.Iterators /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=254 IGNORE (for REQ=slight and deep=15) module=spambayes.resources /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 a form of __import__ was read which gave no deps: [274, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 258]], [326, [7, '(', 258], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 258], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 258]]]]]]]]]]]]]]]], [12, ',', 258], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'resources'", 258]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 a form of __import__ was read which gave no deps: [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 258]], [326, [7, '(', 258], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 258], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 258]]]]]]]]]]]]]]]], [12, ',', 258], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'resources'", 258]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 a form of __import__ was read which gave no deps: [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 258]], [326, [7, '(', 258], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 258], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 258]]]]]]]]]]]]]]]], [12, ',', 258], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'resources'", 258]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 a form of __import__ was read which gave no deps: [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 258]], [326, [7, '(', 258], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 258], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 258]]]]]]]]]]]]]]]], [12, ',', 258], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'resources'", 258]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 a form of __import__ was read which gave no deps: [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 258]], [326, [7, '(', 258], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 258], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 258]]]]]]]]]]]]]]]], [12, ',', 258], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'resources'", 258]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 a form of __import__ was read which gave no deps: [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 258]], [326, [7, '(', 258], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 258], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 258]]]]]]]]]]]]]]]], [12, ',', 258], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'resources'", 258]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 a form of __import__ was read which gave no deps: [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 258]], [326, [7, '(', 258], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 258], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 258]]]]]]]]]]]]]]]], [12, ',', 258], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'resources'", 258]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 a form of __import__ was read which gave no deps: [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 258]], [326, [7, '(', 258], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 258], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 258]]]]]]]]]]]]]]]], [12, ',', 258], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'resources'", 258]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 a form of __import__ was read which gave no deps: [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 258]], [326, [7, '(', 258], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 258], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 258]]]]]]]]]]]]]]]], [12, ',', 258], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'resources'", 258]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 a form of __import__ was read which gave no deps: [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 258]], [326, [7, '(', 258], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 258], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 258]]]]]]]]]]]]]]]], [12, ',', 258], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'resources'", 258]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 a form of __import__ was read which gave no deps: [319, [320, [321, [322, [323, [324, [1, '__import__', 258]], [326, [7, '(', 258], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 258], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 258]]]]]]]]]]]]]]]], [12, ',', 258], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'resources'", 258]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 a form of __import__ was read which gave no deps: [320, [321, [322, [323, [324, [1, '__import__', 258]], [326, [7, '(', 258], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 258], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 258]]]]]]]]]]]]]]]], [12, ',', 258], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'resources'", 258]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 a form of __import__ was read which gave no deps: [321, [322, [323, [324, [1, '__import__', 258]], [326, [7, '(', 258], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 258], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 258]]]]]]]]]]]]]]]], [12, ',', 258], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'resources'", 258]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]]], [8, ')', 258]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 a form of __import__ was read which gave no deps: [322, [323, [324, [1, '__import__', 258]], [326, [7, '(', 258], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 258], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 258]]]]]]]]]]]]]]]], [12, ',', 258], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'resources'", 258]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]]], [8, ')', 258]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=258 a form of __import__ was read which gave no deps: [323, [324, [1, '__import__', 258]], [326, [7, '(', 258], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 258], [26, '}', 258]]]]]]]]]]]]]]]]], [12, ',', 258], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 258], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes'", 258]]]]]]]]]]]]]]]], [12, ',', 258], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'resources'", 258]]]]]]]]]]]]]]]]], [8, ')', 258]]]]]]]]]]]]]]]]]], [8, ')', 258]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=1067 IGNORE (for REQ=slight and deep=15) module=win32api /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=1109 IGNORE (for REQ=slight and deep=11) module=mimetypes /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=1111 IGNORE (for REQ=slight and deep=11) module=email /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=1112 IGNORE (for REQ=slight and deep=11) module=email.MIMEBase /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=1113 IGNORE (for REQ=slight and deep=11) module=email.MIMEAudio /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=1114 IGNORE (for REQ=slight and deep=11) module=email.MIMEMultipart /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=1115 IGNORE (for REQ=slight and deep=11) module=email.MIMEImage /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/UserInterface.py: line=1116 IGNORE (for REQ=slight and deep=11) module=email.MIMEText python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Version.py: skipping sys /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Version.py: line=158 IGNORE (for REQ=slight and deep=11) module=spambayes /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Version.py: line=234 IGNORE (for REQ=slight and deep=8) module=configparser /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Version.py: line=245 IGNORE (for REQ=slight and deep=8) module=urllib.request /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Version.py: line=245 IGNORE (for REQ=slight and deep=8) module=urllib.error /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Version.py: line=245 IGNORE (for REQ=slight and deep=8) module=urllib.parse /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Version.py: line=246 IGNORE (for REQ=slight and deep=8) module=spambayes.Options /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Version.py: line=365 IGNORE (for REQ=slight and deep=12) module=traceback python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/XMLRPCPlugin.py: skipping time python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/asyncore.py: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/asyncore.py: skipping time python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/asyncore.py: skipping errno /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/asyncore.py: line=513 IGNORE (for REQ=slight and deep=8) module=fcntl /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/chi2.py: line=93 IGNORE (for REQ=slight and deep=8) module=spambayes.Histogram /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/chi2.py: line=94 IGNORE (for REQ=slight and deep=8) module=sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/classifier.py: skipping sys /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/classifier.py: line=152 IGNORE (for REQ=slight and deep=11) module=math /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/classifier.py: line=548 IGNORE (for REQ=slight and deep=11) module=spambayes.FileCorpus /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/classifier.py: line=645 IGNORE (for REQ=slight and deep=11) module=spambayes.tokenizer python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatcsv.py: skipping sys /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatcsv.py: line=103 IGNORE (for REQ=slight and deep=8) module=unittest /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatcsv.py: line=104 IGNORE (for REQ=slight and deep=8) module=io /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatsets.py: line=132 IGNORE (for REQ=slight and deep=11) module=copy /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/__init__.py: line=11 IGNORE (for REQ=slight and deep=12) module=resourcepackage /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/core_resources/scanning__init__.py: line=17 IGNORE (for REQ=slight and deep=12) module=resourcepackage python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/dbmstorage.py: skipping sys /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/dbmstorage.py: line=13 IGNORE (for REQ=slight and deep=8) module=bsddb3 /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/dbmstorage.py: line=19 IGNORE (for REQ=slight and deep=8) module=spambayes.port /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/dbmstorage.py: line=24 IGNORE (for REQ=slight and deep=8) module=spambayes.port python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/dnscache.py: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/dnscache.py: skipping time /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/dnscache.py: line=324 IGNORE (for REQ=slight and deep=8) module=transaction /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/hammie.py: line=120 IGNORE (for REQ=slight and deep=19) module=math /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/hammie.py: line=277 IGNORE (for REQ=slight and deep=8) module=spambayes python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/hammiebulk.py: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: skipping sys /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=78 IGNORE (for REQ=slight and deep=12) module=win32api /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 a form of __import__ was read which gave no deps: [274, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 139]], [326, [7, '(', 139], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 139], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes.languages'", 139]]]]]]]]]]]]]]]], [12, ',', 139], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'language', 140]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 a form of __import__ was read which gave no deps: [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 139]], [326, [7, '(', 139], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 139], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes.languages'", 139]]]]]]]]]]]]]]]], [12, ',', 139], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'language', 140]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 a form of __import__ was read which gave no deps: [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 139]], [326, [7, '(', 139], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 139], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes.languages'", 139]]]]]]]]]]]]]]]], [12, ',', 139], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'language', 140]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 a form of __import__ was read which gave no deps: [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 139]], [326, [7, '(', 139], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 139], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes.languages'", 139]]]]]]]]]]]]]]]], [12, ',', 139], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'language', 140]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 a form of __import__ was read which gave no deps: [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 139]], [326, [7, '(', 139], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 139], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes.languages'", 139]]]]]]]]]]]]]]]], [12, ',', 139], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'language', 140]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 a form of __import__ was read which gave no deps: [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 139]], [326, [7, '(', 139], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 139], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes.languages'", 139]]]]]]]]]]]]]]]], [12, ',', 139], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'language', 140]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 a form of __import__ was read which gave no deps: [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 139]], [326, [7, '(', 139], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 139], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes.languages'", 139]]]]]]]]]]]]]]]], [12, ',', 139], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'language', 140]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 a form of __import__ was read which gave no deps: [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 139]], [326, [7, '(', 139], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 139], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes.languages'", 139]]]]]]]]]]]]]]]], [12, ',', 139], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'language', 140]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 a form of __import__ was read which gave no deps: [317, [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 139]], [326, [7, '(', 139], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 139], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes.languages'", 139]]]]]]]]]]]]]]]], [12, ',', 139], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'language', 140]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 a form of __import__ was read which gave no deps: [318, [319, [320, [321, [322, [323, [324, [1, '__import__', 139]], [326, [7, '(', 139], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 139], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes.languages'", 139]]]]]]]]]]]]]]]], [12, ',', 139], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'language', 140]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 a form of __import__ was read which gave no deps: [319, [320, [321, [322, [323, [324, [1, '__import__', 139]], [326, [7, '(', 139], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 139], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes.languages'", 139]]]]]]]]]]]]]]]], [12, ',', 139], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'language', 140]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 a form of __import__ was read which gave no deps: [320, [321, [322, [323, [324, [1, '__import__', 139]], [326, [7, '(', 139], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 139], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes.languages'", 139]]]]]]]]]]]]]]]], [12, ',', 139], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'language', 140]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 a form of __import__ was read which gave no deps: [321, [322, [323, [324, [1, '__import__', 139]], [326, [7, '(', 139], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 139], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes.languages'", 139]]]]]]]]]]]]]]]], [12, ',', 139], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'language', 140]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]]], [8, ')', 140]]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 a form of __import__ was read which gave no deps: [322, [323, [324, [1, '__import__', 139]], [326, [7, '(', 139], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 139], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes.languages'", 139]]]]]]]]]]]]]]]], [12, ',', 139], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'language', 140]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]]], [8, ')', 140]]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 UNABLE to determine the imported name at parse-time: moduleName /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=139 a form of __import__ was read which gave no deps: [323, [324, [1, '__import__', 139]], [326, [7, '(', 139], [334, [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'moduleName', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [25, '{', 139], [26, '}', 139]]]]]]]]]]]]]]]]], [12, ',', 139], [335, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [7, '(', 139], [325, [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [3, "'spambayes.languages'", 139]]]]]]]]]]]]]]]], [12, ',', 139], [305, [309, [310, [311, [312, [315, [316, [317, [318, [319, [320, [321, [322, [323, [324, [1, 'language', 140]]]]]]]]]]]]]]]]], [8, ')', 140]]]]]]]]]]]]]]]]]], [8, ')', 140]]] /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/i18n.py: line=148 IGNORE (for REQ=slight and deep=11) module=spambayes.resources python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/mboxutils.py: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/mboxutils.py: skipping email.Message /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/mboxutils.py: line=90 IGNORE (for REQ=slight and deep=12) module=mhlib /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/mboxutils.py: line=119 IGNORE (for REQ=slight and deep=12) module=scripts.sb_imapfilter /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/mboxutils.py: line=120 IGNORE (for REQ=slight and deep=12) module=spambayes /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/mboxutils.py: line=121 IGNORE (for REQ=slight and deep=12) module=spambayes.Options /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/mboxutils.py: line=272 IGNORE (for REQ=slight and deep=8) module=doctest python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py: skipping time python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py: skipping errno python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py: skipping email.Message python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py: skipping email.Parser python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py: skipping email.Header python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py: skipping email.Generator /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py: line=99 IGNORE (for REQ=slight and deep=8) module=io /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py: line=101 IGNORE (for REQ=slight and deep=8) module=io /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py: line=263 IGNORE (for REQ=slight and deep=8) module=persistent /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py: line=268 IGNORE (for REQ=slight and deep=11) module=ZODB /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py: line=269 IGNORE (for REQ=slight and deep=11) module=BTrees.OOBTree python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/oe_mailbox.py: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/oe_mailbox.py: skipping time /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/oe_mailbox.py: line=37 IGNORE (for REQ=slight and deep=8) module=io /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/oe_mailbox.py: line=39 IGNORE (for REQ=slight and deep=8) module=io /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/oe_mailbox.py: line=44 IGNORE (for REQ=slight and deep=8) module=win32api /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/oe_mailbox.py: line=45 IGNORE (for REQ=slight and deep=8) module=win32con /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/oe_mailbox.py: line=46 IGNORE (for REQ=slight and deep=8) module=win32gui /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/oe_mailbox.py: line=47 IGNORE (for REQ=slight and deep=8) module=win32com.shell /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/oe_mailbox.py: line=695 IGNORE (for REQ=slight and deep=8) module=getopt /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/optimize.py: line=9 IGNORE (for REQ=slight and deep=8) module=numpy /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/optimize.py: line=67 IGNORE (for REQ=slight and deep=8) module=numpy /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/port.py: line=3 IGNORE (for REQ=slight and deep=8) module=hashlib /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/port.py: line=6 IGNORE (for REQ=slight and deep=8) module=md5 /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/port.py: line=9 IGNORE (for REQ=slight and deep=8) module=bsddb3 /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/port.py: line=14 IGNORE (for REQ=slight and deep=12) module=bsddb /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/port.py: line=19 IGNORE (for REQ=slight and deep=8) module=dbm.gnu python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/postfixproxy.py: skipping __main__ /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/postfixproxy.py: line=16 IGNORE (for REQ=slight and deep=8) module=smtpd python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/postfixproxy.py: skipping time python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/postfixproxy.py: skipping email.Parser /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/__init__.py: line=11 IGNORE (for REQ=slight and deep=12) module=resourcepackage /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/resources/scanning__init__.py: line=17 IGNORE (for REQ=slight and deep=12) module=resourcepackage python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/safepickle.py: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/smtpproxy.py: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: skipping sys python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: skipping time python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: skipping errno /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: line=440 IGNORE (for REQ=slight and deep=11) module=psycopg /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: line=514 IGNORE (for REQ=slight and deep=11) module=MySQLdb /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: line=646 IGNORE (for REQ=slight and deep=8) module=persistent /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: line=649 IGNORE (for REQ=slight and deep=12) module=ZODB /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: line=655 IGNORE (for REQ=slight and deep=11) module=ZODB /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: line=656 IGNORE (for REQ=slight and deep=11) module=BTrees.OOBTree /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: line=687 IGNORE (for REQ=slight and deep=11) module=ZODB.FileStorage /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: line=698 IGNORE (for REQ=slight and deep=11) module=ZODB /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: line=730 IGNORE (for REQ=slight and deep=15) module=ZODB.Transaction /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: line=732 IGNORE (for REQ=slight and deep=15) module=transaction /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: line=738 IGNORE (for REQ=slight and deep=11) module=ZODB.POSException /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: line=740 IGNORE (for REQ=slight and deep=15) module=ZODB.POSException /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: line=742 IGNORE (for REQ=slight and deep=15) module=ZODB.POSException /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: line=743 IGNORE (for REQ=slight and deep=11) module=ZODB.POSException /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py: line=846 IGNORE (for REQ=slight and deep=11) module=ZEO.ClientStorage python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/tokenizer.py: skipping email.Message python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/tokenizer.py: skipping email.Header python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/tokenizer.py: skipping email.Utils python3.req: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/tokenizer.py: skipping email.Errors /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/tokenizer.py: line=24 IGNORE (for REQ=slight and deep=8) module=spambayes /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/tokenizer.py: line=33 IGNORE (for REQ=slight and deep=8) module=atexit /usr/lib/rpm/python3.req.py: /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/tokenizer.py: line=1621 IGNORE (for REQ=slight and deep=15) module=spambayes.ImageStripper shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Corpus.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/FileCorpus.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Histogram.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/MoinSecurityPolicy.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Stats.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/Version.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/cdb.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/classifier.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/compatcsv.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/hammie.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/hammiebulk.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/mboxutils.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/message.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/postfixproxy.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/smtpproxy.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/storage.py is not executable shebang.req.files: executable script /usr/src/tmp/python-module-spambayes-buildroot/usr/lib/python3/site-packages/spambayes/tokenizer.py is not executable Provides: python3(spambayes), python3(spambayes.CorePlugin), python3(spambayes.CoreUI), python3(spambayes.Corpus), python3(spambayes.CostCounter), python3(spambayes.Dibbler), python3(spambayes.FileCorpus), python3(spambayes.Histogram), python3(spambayes.ImageStripper), python3(spambayes.ImapUI), python3(spambayes.MoinSecurityPolicy), python3(spambayes.Options), python3(spambayes.OptionsClass), python3(spambayes.ProxyUI), python3(spambayes.PyMeldLite), python3(spambayes.ServerUI), python3(spambayes.Stats), python3(spambayes.TestDriver), python3(spambayes.TestToolsUI), python3(spambayes.Tester), python3(spambayes.UserInterface), python3(spambayes.Version), python3(spambayes.XMLRPCPlugin), python3(spambayes.asynchat), python3(spambayes.asyncore), python3(spambayes.cdb), python3(spambayes.cdb_classifier), python3(spambayes.chi2), python3(spambayes.classifier), python3(spambayes.compatcsv), python3(spambayes.compatheapq), python3(spambayes.compatsets), python3(spambayes.core_resources), python3(spambayes.core_resources.README_txt), python3(spambayes.core_resources.classify_gif), python3(spambayes.core_resources.config_gif), python3(spambayes.core_resources.helmet_gif), python3(spambayes.core_resources.help_gif), python3(spambayes.core_resources.message_gif), python3(spambayes.core_resources.query_gif), python3(spambayes.core_resources.scanning__init__), python3(spambayes.core_resources.status_gif), python3(spambayes.core_resources.train_gif), python3(spambayes.core_resources.ui_html), python3(spambayes.core_resources.ui_psp), python3(spambayes.dbmstorage), python3(spambayes.dnscache), python3(spambayes.hammie), python3(spambayes.hammiebulk), python3(spambayes.i18n), python3(spambayes.mboxutils), python3(spambayes.message), python3(spambayes.msgs), python3(spambayes.oe_mailbox), python3(spambayes.optimize), python3(spambayes.port), python3(spambayes.postfixproxy), python3(spambayes.resources), python3(spambayes.resources.README_txt), python3(spambayes.resources._cvsignore), python3(spambayes.resources.classify_gif), python3(spambayes.resources.config_gif), python3(spambayes.resources.helmet_gif), python3(spambayes.resources.help_gif), python3(spambayes.resources.message_gif), python3(spambayes.resources.query_gif), python3(spambayes.resources.scanning__init__), python3(spambayes.resources.status_gif), python3(spambayes.resources.train_gif), python3(spambayes.resources.ui_html), python3(spambayes.resources.ui_psp), python3(spambayes.safepickle), python3(spambayes.smtpproxy), python3(spambayes.storage), python3(spambayes.tokenizer) Requires: /usr/bin/python3, /usr/lib/python3/site-packages, python3(DNS) < 0, python3(base64) < 0, python3(binascii) < 0, python3(bisect) < 0, python3(cgi) < 0, python3(collections) < 0, python3(copy) < 0, python3(csv) < 0, python3(dbm) < 0, python3(email) < 0, python3(encodings.aliases) < 0, python3(fnmatch) < 0, python3(getopt) < 0, python3(getpass) < 0, python3(gettext) < 0, python3(glob) < 0, python3(gzip) < 0, python3(http.client) < 0, python3(imaplib) < 0, python3(io) < 0, python3(locale) < 0, python3(lockfile) < 0, python3(mailbox) < 0, python3(math) < 0, python3(mimetypes) < 0, python3(mmap) < 0, python3(operator) < 0, python3(os) < 0, python3(pickle) < 0, python3(random) < 0, python3(re) < 0, python3(select) < 0, python3(shelve) < 0, python3(shutil) < 0, python3(signal) < 0, python3(smtplib) < 0, python3(socket) < 0, python3(socketserver) < 0, python3(stat) < 0, python3(string) < 0, python3(struct) < 0, python3(tempfile) < 0, python3(textwrap) < 0, python3(threading) < 0, python3(traceback) < 0, python3(twisted) < 0, python3(twisted.application.app) < 0, python3(twisted.internet) < 0, python3(twisted.internet.protocol) < 0, python3(types) < 0, python3(urllib.error) < 0, python3(urllib.parse) < 0, python3(urllib.request) < 0, python3(warnings) < 0, python3(webbrowser) < 0, python3(xmlrpc.client) < 0, python3(xmlrpc.server) < 0 Wrote: /usr/src/RPM/RPMS/noarch/python-module-spambayes-1.1b1-alt2.2.noarch.rpm Wrote: /usr/src/RPM/RPMS/noarch/python3-module-spambayes-1.1b1-alt2.2.noarch.rpm 268.14user 5.74system 6:26.11elapsed 70%CPU (0avgtext+0avgdata 22320maxresident)k 0inputs+0outputs (0major+1309151minor)pagefaults 0swaps 280.74user 9.32system 6:46.00elapsed 71%CPU (0avgtext+0avgdata 120260maxresident)k 0inputs+0outputs (0major+1873991minor)pagefaults 0swaps