[Spambayes-checkins] SF.net SVN: spambayes:[3242] trunk/spambayes/scripts/sb_imapfilter.py

montanaro at users.sourceforge.net montanaro at users.sourceforge.net
Fri Feb 20 07:57:02 CET 2009


Revision: 3242
          http://spambayes.svn.sourceforge.net/spambayes/?rev=3242&view=rev
Author:   montanaro
Date:     2009-02-20 06:57:02 +0000 (Fri, 20 Feb 2009)

Log Message:
-----------
print messages to sys.stderr.  Only print some messages in verbose mode.

Modified Paths:
--------------
    trunk/spambayes/scripts/sb_imapfilter.py

Modified: trunk/spambayes/scripts/sb_imapfilter.py
===================================================================
--- trunk/spambayes/scripts/sb_imapfilter.py	2009-02-20 06:54:04 UTC (rev 3241)
+++ trunk/spambayes/scripts/sb_imapfilter.py	2009-02-20 06:57:02 UTC (rev 3242)
@@ -166,7 +166,7 @@
 
     timeout = 60 # seconds
     def __init__(self, server, debug=0, do_expunge = options["imap", "expunge"] ):
-        if server.find(':') > -1:
+        if ":" in server:
             server, port = server.split(':', 1)
             port = int(port)
         else:
@@ -174,7 +174,7 @@
                 port = 993
             else:
                 port = 143
-                    
+
         # There's a tricky situation where if use_ssl is False, but we
         # try to connect to a IMAP over SSL server, we will just hang
         # forever, waiting for a response that will never come.  To
@@ -187,10 +187,12 @@
         try:
             BaseIMAP.__init__(self, server, port)
         except (BaseIMAP.error, socket.gaierror, socket.error):
-            print "Cannot connect to server %s on port %s" % (server, port)
-            if not hasattr(self, "ssl"):
-                print "If you are connecting to an SSL server, please " \
-                      "ensure that you have the 'Use SSL' option enabled."
+            if options["globals", "verbose"]:
+                print >> sys.stderr, "Cannot connect to server", server, "on port", port
+                if not hasattr(self, "ssl"):
+                    print >> sys.stderr, ("If you are connecting to an SSL server,"
+                                          "please ensure that you\n"
+                                          "have the 'Use SSL' option enabled.")
             self.connected = False
         else:
             self.connected = True
@@ -333,7 +335,8 @@
         except BadIMAPResponseError:
             # We want to keep going, so just print out a warning, and
             # return an empty list.
-            print "Could not retrieve folder list."
+            if options["globals", "verbose"]:
+                print >> sys.stderr, "Could not retrieve folder list."
             return []
         folders = []
         for fol in all_folders:
@@ -359,9 +362,9 @@
             # A bit of a hack, but we really need to know if this is
             # the case.
             if self.folder_delimiter == ',':
-                print "WARNING: Your imap server uses a comma as the " \
-                      "folder delimiter.  This may cause unpredictable " \
-                      "errors."
+                print >> sys.stderr, ("WARNING: Your imap server uses a comma as the "
+                                      "folder delimiter.  This may cause unpredictable " \
+                                      "errors.")
             folders.append(fol[m.end()+4:].strip('"'))
         folders.sort()
         return folders
@@ -721,12 +724,13 @@
             data = self.imap_server.check_response("recent", response)
             if data[0] is not None:
                 if options["globals", "verbose"]:
-                    print "[imapfilter] found saved message", self.uid,
-                    print "in iteration", i
+                    print >> sys.stderr, "[imapfilter] found saved message", self.uid,
+                    print >> sys.stderr, "in iteration", i
                 break
         else:
             if options["globals", "verbose"]:
-                print "[imapfilter] can't find saved message after 100 iterations:", self.uid
+                print >> sys.stderr, ("[imapfilter] can't find saved message after"
+                                      "100 iterations:"), self.uid
             # raise BadIMAPResponseError("recent", "Cannot find saved message")
 
         # We need to update the UID, as it will have changed.
@@ -866,7 +870,7 @@
         else:
             newid = self._generate_id()
             if options["globals", "verbose"]:
-                print "[imapfilter] saving %s with new id:" % msg.uid, newid
+                print >> sys.stderr, "[imapfilter] saving", msg.uid, "with new id:", newid
             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
@@ -952,7 +956,7 @@
             cls = msg.GetClassification()
             if cls is None or hamfolder is not None:
                 if options["globals", "verbose"]:
-                    print "[imapfilter] classified as %s:" % cls, msg.uid
+                    print >> sys.stderr, "[imapfilter] classified as %s:" % cls, msg.uid
                 
                 msg = msg.get_full_message()
                 if msg.could_not_retrieve:
@@ -963,7 +967,7 @@
                     # the errors and move it soon enough.
 
                     if options["globals", "verbose"]:
-                        print "[imapfilter] could not retrieve:", msg.uid
+                        print >> sys.stderr, "[imapfilter] could not retrieve:", msg.uid
                     continue
                 
                 (prob, clues) = classifier.spamprob(msg.tokenize(),
@@ -977,24 +981,26 @@
                 if cls == options["Headers", "header_ham_string"]:
                     if hamfolder:
                         if options["globals", "verbose"]:
-                            print "[imapfilter] moving to ham folder:", msg.uid
+                            print >> sys.stderr, "[imapfilter] moving to ham folder:",
+                            print >> sys.stderr, msg.uid
                         msg.MoveTo(hamfolder)
                     # Otherwise, we leave ham alone.
                     count["ham"] += 1
                 elif cls == options["Headers", "header_spam_string"]:
                     if options["globals", "verbose"]:
-                        print "[imapfilter] moving to spam folder:", msg.uid
+                        print >> sys.stderr, "[imapfilter] moving to spam folder:",
+                        print >> sys.stderr, msg.uid
                     msg.MoveTo(spamfolder)
                     count["spam"] += 1
                 else:
                     if options["globals", "verbose"]:
-                        print "[imapfilter] moving to unsure folder:", msg.uid
+                        print >> sys.stderr, "[imapfilter] moving to unsure folder:", msg.uid
                     msg.MoveTo(unsurefolder)
                     count["unsure"] += 1
                 msg.Save()
             else:
                 if options["globals", "verbose"]:
-                    print "[imapfilter] already classified:", msg.uid
+                    print >> sys.stderr, "[imapfilter] already classified:", msg.uid
                 
         return count
 
@@ -1023,44 +1029,44 @@
                 try:
                     self.imap_server.SelectFolder(fol)
                 except BadIMAPResponseError:
-                    print "Skipping %s, as it cannot be selected." % (fol,)
+                    print >> sys.stderr, "Skipping", fol, "as it cannot be selected."
                     continue
 
                 if options['globals', 'verbose']:
-                    print "   Training %s folder %s" % \
-                          (["ham", "spam"][is_spam], fol)
+                    print >> sys.stderr, ("   Training %s folder %s" %
+                                          (["ham", "spam"][is_spam], fol))
                 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 "\n       %s trained." % (num_trained,)
+                    print >> sys.stderr, "\n      ", num_trained, "trained."
 
         if total_trained:
             self.classifier.store()
 
         if options["globals", "verbose"]:
-            print "Training took %.4f seconds, %s messages were trained." \
-                  % (time.time() - t, total_trained)
+            print >> sys.stderr, ("Training took %.4f seconds, %s messages were trained."
+                                  % (time.time() - t, total_trained))
 
     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 "[imapfilter] spam folder:", spam_folder_name
+                print >> sys.stderr, "[imapfilter] spam folder:", spam_folder_name
             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 "[imapfilter] unsure folder:", unsure_folder_name
+                print >> sys.stderr, "[imapfilter] unsure folder:", unsure_folder_name
             self.unsure_folder = IMAPFolder(
                 unsure_folder_name, self.imap_server, self.stats)
 
         ham_folder_name = options["imap", "ham_folder"]
         if options["globals", "verbose"]:
-            print "[imapfilter] ham folder:", ham_folder_name
+            print >> sys.stderr, "[imapfilter] ham folder:", ham_folder_name
             
         if ham_folder_name and not self.ham_folder:
             self.ham_folder = IMAPFolder(ham_folder_name, self.imap_server,
@@ -1078,18 +1084,18 @@
         try:
             self.imap_server.SelectFolder(self.spam_folder.name)
         except BadIMAPResponseError:
-            print "Cannot select spam folder.  Please check configuration."
+            print >> sys.stderr, "Cannot select spam folder.  Please check configuration."
             sys.exit(-1)
         try:
             self.imap_server.SelectFolder(self.unsure_folder.name)
         except BadIMAPResponseError:
-            print "Cannot select unsure folder.  Please check configuration."
+            print >> sys.stderr, "Cannot select unsure folder.  Please check configuration."
             sys.exit(-1)
         if self.ham_folder:
             try:
                 self.imap_server.SelectFolder(self.ham_folder.name)
             except BadIMAPResponseError:
-                print "Cannot select ham folder.  Please check configuration."
+                print >> sys.stderr, "Cannot select ham folder.  Please check configuration."
                 sys.exit(-1)
                 
         for filter_folder in options["imap", "filter_folders"]:
@@ -1097,7 +1103,7 @@
             try:
                 self.imap_server.SelectFolder(filter_folder)
             except BadIMAPResponseError:
-                print "Cannot select %s, skipping." % (filter_folder,)
+                print >> sys.stderr, "Cannot select", filter_folder, "... skipping." 
                 continue
 
             folder = IMAPFolder(filter_folder, self.imap_server, self.stats)
@@ -1108,9 +1114,9 @@
 
         if options["globals", "verbose"]:
             if count is not None:
-                print "\nClassified %s ham, %s spam, and %s unsure." % \
-                      (count["ham"], count["spam"], count["unsure"])
-            print "Classifying took %.4f seconds." % (time.time() - t,)
+                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,)
 
 
 def servers(promptForPass = False):


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.


More information about the Spambayes-checkins mailing list