diff --git a/Lib/smtplib.py b/Lib/smtplib.py
index 7a677aa..a7305ce 100755
--- a/Lib/smtplib.py
+++ b/Lib/smtplib.py
@@ -729,7 +729,7 @@
     support). If host is not specified, '' (the local host) is used. If port is
     omitted, the standard SMTP-over-SSL port (465) is used. keyfile and certfile
     are also optional - they can contain a PEM formatted private key and
-    certificate chain file for the SSL connection.   
+    certificate chain file for the SSL connection.
     """
     def __init__(self, host = '', port = 0, local_hostname = None,
                  keyfile = None, certfile = None):
diff --git a/Lib/test/test_MimeWriter.py b/Lib/test/test_MimeWriter.py
index b7d37b2..feca163 100644
--- a/Lib/test/test_MimeWriter.py
+++ b/Lib/test/test_MimeWriter.py
@@ -192,7 +192,7 @@
 '''
 
 class MimewriterTest(unittest.TestCase):
-    
+
     def test(self):
         buf = StringIO.StringIO()
 
diff --git a/Lib/test/test___future__.py b/Lib/test/test___future__.py
index b639d09..50a2c74 100644
--- a/Lib/test/test___future__.py
+++ b/Lib/test/test___future__.py
@@ -50,7 +50,7 @@
                 check(mandatory, "mandatory")
                 a(optional < mandatory,
                        "optional not less than mandatory, and mandatory not None")
-        
+
             a(hasattr(value, "compiler_flag"),
                    "feature is missing a .compiler_flag attr")
             a(isinstance(getattr(value, "compiler_flag"), int),
diff --git a/Lib/test/test_bufio.py b/Lib/test/test_bufio.py
index a3196ca..14a926a 100644
--- a/Lib/test/test_bufio.py
+++ b/Lib/test/test_bufio.py
@@ -36,7 +36,7 @@
                 os.unlink(test_support.TESTFN)
             except:
                 pass
-    
+
     def drive_one(self, pattern):
         for length in lengths:
             # Repeat string 'pattern' as often as needed to reach total length
diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py
index 21cd1b9..5b35a64 100644
--- a/Lib/test/test_codecs.py
+++ b/Lib/test/test_codecs.py
@@ -911,7 +911,7 @@
         self.assertEquals(f.readlines(), [u'\ud55c\n', u'\uae00'])
 
 class EncodedFileTest(unittest.TestCase):
-    
+
     def test_basic(self):
         f = StringIO.StringIO('\xed\x95\x9c\n\xea\xb8\x80')
         ef = codecs.EncodedFile(f, 'utf-16-le', 'utf-8')
@@ -1172,7 +1172,7 @@
                         decoder = codecs.getincrementaldecoder(encoding)("ignore")
                         decodedresult = u"".join(decoder.decode(c) for c in encodedresult)
                         self.assertEqual(decodedresult, s, "%r != %r (encoding=%r)" % (decodedresult, s, encoding))
-    
+
                         encodedresult = "".join(cencoder.encode(c) for c in s)
                         cdecoder = _testcapi.codec_incrementaldecoder(encoding, "ignore")
                         decodedresult = u"".join(cdecoder.decode(c) for c in encodedresult)
diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py
index 26c9392..69e1980 100644
--- a/Lib/test/test_grammar.py
+++ b/Lib/test/test_grammar.py
@@ -123,10 +123,10 @@
 
     # single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE
     # XXX can't test in a script -- this rule is only used when interactive
-    
+
     # file_input: (NEWLINE | stmt)* ENDMARKER
     # Being tested as this very moment this very module
-    
+
     # expr_input: testlist NEWLINE
     # XXX Hard to test -- used only in calls to input()
 
@@ -329,7 +329,7 @@
         # which is not available in unittest.
         save_stdout = sys.stdout
         sys.stdout = StringIO.StringIO()
-        
+
         print 1, 2, 3
         print 1, 2, 3,
         print
@@ -563,7 +563,7 @@
         elif 0: pass
         elif 0: pass
         else: pass
-    
+
     def testWhile(self):
         # 'while' test ':' suite ['else' ':' suite]
         while 0: pass
@@ -696,7 +696,7 @@
     def testSelectors(self):
         ### trailer: '(' [testlist] ')' | '[' subscript ']' | '.' NAME
         ### subscript: expr | [expr] ':' [expr]
-        
+
         import sys, time
         c = sys.path[0]
         x = time.time()
diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py
index 40cf192..ab164d0 100644
--- a/Lib/test/test_mailbox.py
+++ b/Lib/test/test_mailbox.py
@@ -754,15 +754,15 @@
         key1 = self._box.add(msg)
         self._box.flush()
         self._box.close()
-        
+
         self._box = self._factory(self._path)
         self._box.lock()
         key2 = self._box.add(msg)
         self._box.flush()
         self.assert_(self._box._locked)
         self._box.close()
-        
-        
+
+
 
 class TestMbox(_TestMboxMMDF):
 
diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py
index 1458c82..a45fc34 100644
--- a/Lib/test/test_math.py
+++ b/Lib/test/test_math.py
@@ -152,7 +152,7 @@
 
         testmodf('modf(1.5)', math.modf(1.5), (0.5, 1.0))
         testmodf('modf(-1.5)', math.modf(-1.5), (-0.5, -1.0))
-    
+
     def testPow(self):
         self.assertRaises(TypeError, math.pow)
         self.ftest('pow(0,1)', math.pow(0,1), 0)
diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py
index 7253ff8..0b53823 100644
--- a/Lib/test/test_mmap.py
+++ b/Lib/test/test_mmap.py
@@ -218,7 +218,7 @@
         # Ensuring copy-on-write maps cannot be resized
         self.assertRaises(TypeError, m.resize, 2*mapsize)
         del m, f
-    
+
         # Ensuring invalid access parameter raises exception
         f = open(TESTFN, "r+b")
         self.assertRaises(ValueError, mmap.mmap, f.fileno(), mapsize, access=4)
diff --git a/Lib/test/test_poll.py b/Lib/test/test_poll.py
index 944b991..60cd3f4 100644
--- a/Lib/test/test_poll.py
+++ b/Lib/test/test_poll.py
@@ -21,7 +21,7 @@
     def test_poll1(self):
         # Basic functional test of poll object
         # Create a bunch of pipe and test that poll works with them.
-        
+
         p = select.poll()
 
         NUM_PIPES = 12
diff --git a/Lib/test/test_scope.py b/Lib/test/test_scope.py
index c703a06..a53b30f 100644
--- a/Lib/test/test_scope.py
+++ b/Lib/test/test_scope.py
@@ -8,7 +8,7 @@
 class ScopeTests(unittest.TestCase):
 
     def testSimpleNesting(self):
-        
+
         def make_adder(x):
             def adder(y):
                 return x + y
diff --git a/Lib/test/test_structmembers.py b/Lib/test/test_structmembers.py
index 3a08dc4..93dd2ac 100644
--- a/Lib/test/test_structmembers.py
+++ b/Lib/test/test_structmembers.py
@@ -43,11 +43,11 @@
     def has_warned(self):
         self.assertEqual(test.test_warnings.msg.category,
                          exceptions.RuntimeWarning.__name__)
-        
+
     def test_byte_max(self):
         ts.T_BYTE=CHAR_MAX+1
         self.has_warned()
-        
+
     def test_byte_min(self):
         ts.T_BYTE=CHAR_MIN-1
         self.has_warned()
@@ -68,7 +68,7 @@
         ts.T_USHORT=USHRT_MAX+1
         self.has_warned()
 
-        
+
 
 def test_main(verbose=None):
     test_support.run_unittest(
