diff --git a/Lib/distutils/command/install_egg_info.py b/Lib/distutils/command/install_egg_info.py
index 4e472d7..c31ac29 100644
--- a/Lib/distutils/command/install_egg_info.py
+++ b/Lib/distutils/command/install_egg_info.py
@@ -26,7 +26,7 @@
             to_filename(safe_version(self.distribution.get_version())),
             sys.version[:3]
         )
-        self.target = os.path.join(self.install_dir, basename) 
+        self.target = os.path.join(self.install_dir, basename)
         self.outputs = [self.target]
 
     def run(self):
@@ -40,7 +40,7 @@
             f = open(target, 'w')
             self.distribution.metadata.write_pkg_file(f)
             f.close()
-            
+
     def get_outputs(self):
         return self.outputs
 
diff --git a/Lib/test/leakers/test_generator_cycle.py b/Lib/test/leakers/test_generator_cycle.py
index d2fa72c..b0aba43 100644
--- a/Lib/test/leakers/test_generator_cycle.py
+++ b/Lib/test/leakers/test_generator_cycle.py
@@ -8,4 +8,3 @@
         while True:
             yield g
     g = gen()
-
diff --git a/Lib/test/test_augassign.py b/Lib/test/test_augassign.py
index e97ef46..dbf71bc 100644
--- a/Lib/test/test_augassign.py
+++ b/Lib/test/test_augassign.py
@@ -64,7 +64,7 @@
         x *= 2
 
         self.assertEquals(x, [1, 2, 3, 4, 1, 2, 3, 4])
-        
+
         x = [1, 2, 3]
         y = x
         x[1:2] *= 2
@@ -82,7 +82,7 @@
                 return self.val + val
             def __add__(self, val):
                 return aug_test(self.val + val)
-        
+
         class aug_test2(aug_test):
             def __iadd__(self, val):
                 self.val = self.val + val
@@ -91,7 +91,7 @@
         class aug_test3(aug_test):
             def __iadd__(self, val):
                 return aug_test3(self.val + val)
-        
+
         x = aug_test(1)
         y = x
         x += 10
@@ -103,7 +103,7 @@
         x = aug_test2(2)
         y = x
         x += 10
-        
+
         self.assert_(y is x)
         self.assertEquals(x.val, 12)
 
@@ -319,7 +319,7 @@
 __rlshift__ called
 __ilshift__ called
 '''.splitlines())
-                          
+
 def test_main():
     run_unittest(AugAssignTest)
 
diff --git a/Lib/test/test_coercion.py b/Lib/test/test_coercion.py
index fcd2105..4356817 100644
--- a/Lib/test/test_coercion.py
+++ b/Lib/test/test_coercion.py
@@ -181,7 +181,7 @@
     (6,8): ('e', (6,0)),
 
     # MethodNumber(2)
-    (7,0): ('e', (0,0)), 
+    (7,0): ('e', (0,0)),
     (7,1): ('e', (0,1)),
     (7,2): ('e', (0,2)),
     (7,3): ('e', (0,3)),
@@ -192,7 +192,7 @@
     (7,8): ('e', (0,8)),
 
     # CoerceNumber(2)
-    (8,0): ('e', (0,0)), 
+    (8,0): ('e', (0,0)),
     (8,1): ('e', (0,1)),
     (8,2): ('e', (0,2)),
     (8,3): ('e', (0,3)),
@@ -223,8 +223,8 @@
                         res[i][6] = res[i][6][1]
             infix_results[key] = res
 
-        
-        
+
+
 process_infix_results()
 # now infix_results has two lists of results for every pairing.
 
diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py
index 29b28ef..6133b2e 100644
--- a/Lib/test/test_decimal.py
+++ b/Lib/test/test_decimal.py
@@ -517,7 +517,7 @@
         else:
             # testing with -Qnew, so add __truediv__
             oplist.append(('/', '__truediv__', '__rtruediv__'))
-        
+
         for sym, lop, rop in oplist:
             setattr(E, lop, lambda self, other: 'str' + lop + str(other))
             setattr(E, rop, lambda self, other: str(other) + rop + 'str')
diff --git a/Lib/test/test_index.py b/Lib/test/test_index.py
index c7150cd..770d1cd 100644
--- a/Lib/test/test_index.py
+++ b/Lib/test/test_index.py
@@ -17,7 +17,7 @@
         self.n = newstyle()
         self.o2 = oldstyle()
         self.n2 = newstyle()
-    
+
     def test_basic(self):
         self.o.ind = -2
         self.n.ind = 2
@@ -25,7 +25,7 @@
         assert(self.seq[self.o] == 40)
         assert(operator.index(self.o) == -2)
         assert(operator.index(self.n) == 2)
-        
+
     def test_error(self):
         self.o.ind = 'dumb'
         self.n.ind = 'bad'
@@ -50,8 +50,8 @@
         self.n = newstyle()
         self.o2 = oldstyle()
         self.n2 = newstyle()
-        
-    
+
+
     def test_basic(self):
         self.o.ind = -2
         self.n.ind = 2
@@ -59,7 +59,7 @@
         assert(self.seq[self.o] == 40)
         assert(operator.index(self.o) == -2)
         assert(operator.index(self.n) == 2)
-        
+
     def test_error(self):
         self.o.ind = 'dumb'
         self.n.ind = 'bad'
@@ -84,8 +84,8 @@
         self.n = newstyle()
         self.o2 = oldstyle()
         self.n2 = newstyle()
-        
-    
+
+
     def test_basic(self):
         self.o.ind = -2
         self.n.ind = 2
@@ -93,7 +93,7 @@
         assert(self.seq[self.o] == self.seq[-2])
         assert(operator.index(self.o) == -2)
         assert(operator.index(self.n) == 2)
-        
+
     def test_error(self):
         self.o.ind = 'dumb'
         self.n.ind = 'bad'
@@ -119,8 +119,8 @@
         self.n = newstyle()
         self.o2 = oldstyle()
         self.n2 = newstyle()
-        
-    
+
+
     def test_basic(self):
         self.o.ind = -2
         self.n.ind = 2
@@ -128,7 +128,7 @@
         assert(self.seq[self.o] == self.seq[-2])
         assert(operator.index(self.o) == -2)
         assert(operator.index(self.n) == 2)
-        
+
     def test_error(self):
         self.o.ind = 'dumb'
         self.n.ind = 'bad'
