diff --git a/Lib/test/test_binascii.py b/Lib/test/test_binascii.py
index c252062..b01f0e0 100755
--- a/Lib/test/test_binascii.py
+++ b/Lib/test/test_binascii.py
@@ -101,7 +101,7 @@
         self.assertEqual(binascii.a2b_uu("\xff"), "\x00"*31)
         self.assertRaises(binascii.Error, binascii.a2b_uu, "\xff\x00")
         self.assertRaises(binascii.Error, binascii.a2b_uu, "!!!!")
-        
+
         self.assertRaises(binascii.Error, binascii.b2a_uu, 46*"!")
 
     def test_crc32(self):
diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py
index 51e0e2c..b7abedd 100644
--- a/Lib/test/test_codecs.py
+++ b/Lib/test/test_codecs.py
@@ -343,7 +343,7 @@
         RecodingTest,
         PunycodeTest,
         NameprepTest,
-	CodecTest
+        CodecTest
     )
 
 
diff --git a/Lib/test/test_csv.py b/Lib/test/test_csv.py
index 97efcb3..aaebabc 100644
--- a/Lib/test/test_csv.py
+++ b/Lib/test/test_csv.py
@@ -133,7 +133,7 @@
         finally:
             fileobj.close()
             os.unlink(name)
-            
+
     def _read_test(self, input, expect, **kwargs):
         reader = csv.reader(input, **kwargs)
         result = list(reader)
@@ -226,7 +226,7 @@
         finally:
             fileobj.close()
             os.unlink(name)
-            
+
     def test_dialect_apply(self):
         class testA(csv.excel):
             delimiter = "\t"
@@ -247,7 +247,7 @@
             finally:
                 fileobj.close()
                 os.unlink(name)
-                
+
             fd, name = tempfile.mkstemp()
             fileobj = os.fdopen(fd, "w+b")
             try:
diff --git a/Lib/test/test_genexps.py b/Lib/test/test_genexps.py
index 31e133f..dc26ed6 100644
--- a/Lib/test/test_genexps.py
+++ b/Lib/test/test_genexps.py
@@ -259,9 +259,3 @@
 
 if __name__ == "__main__":
     test_main(verbose=True)
-
-
-
-
-
-
diff --git a/Lib/test/test_heapq.py b/Lib/test/test_heapq.py
index f37d8ff..d7098d9 100644
--- a/Lib/test/test_heapq.py
+++ b/Lib/test/test_heapq.py
@@ -126,4 +126,3 @@
 
 if __name__ == "__main__":
     test_main(verbose=True)
-
diff --git a/Lib/test/test_htmlparser.py b/Lib/test/test_htmlparser.py
index 5b4bd56..ffd3ebc 100755
--- a/Lib/test/test_htmlparser.py
+++ b/Lib/test/test_htmlparser.py
@@ -204,7 +204,7 @@
         self._run_check("<e a=rgb(1,2,3)>", [
             ("starttag", "e", [("a", "rgb(1,2,3)")]),
             ])
-	# Regression test for SF bug #921657.
+        # Regression test for SF bug #921657.
         self._run_check("<a href=mailto:xyz@example.com>", [
             ("starttag", "a", [("href", "mailto:xyz@example.com")]),
             ])
diff --git a/Lib/test/test_isinstance.py b/Lib/test/test_isinstance.py
index 4562114..89ef200 100644
--- a/Lib/test/test_isinstance.py
+++ b/Lib/test/test_isinstance.py
@@ -252,7 +252,7 @@
 
     def test_isinstance_recursion_limit(self):
         # make sure that issubclass raises RuntimeError before the C stack is
-        # blown 
+        # blown
         self.assertRaises(RuntimeError, blowstack, isinstance, '', str)
 
 def blowstack(fxn, arg, compare_to):
diff --git a/Lib/test/test_iterlen.py b/Lib/test/test_iterlen.py
index f77169f..b51263d 100644
--- a/Lib/test/test_iterlen.py
+++ b/Lib/test/test_iterlen.py
@@ -52,13 +52,13 @@
 class TestInvariantWithoutMutations(unittest.TestCase):
 
     def test_invariant(self):
-            it = self.it
-            for i in reversed(xrange(1, n+1)):
-                self.assertEqual(len(it), i)
-                it.next()
-            self.assertEqual(len(it), 0)
-            self.assertRaises(StopIteration, it.next)
-            self.assertEqual(len(it), 0)
+        it = self.it
+        for i in reversed(xrange(1, n+1)):
+            self.assertEqual(len(it), i)
+            it.next()
+        self.assertEqual(len(it), 0)
+        self.assertRaises(StopIteration, it.next)
+        self.assertEqual(len(it), 0)
 
 class TestTemporarilyImmutable(TestInvariantWithoutMutations):
 
diff --git a/Lib/test/test_multibytecodec_support.py b/Lib/test/test_multibytecodec_support.py
index 6c503bf..f471adf 100644
--- a/Lib/test/test_multibytecodec_support.py
+++ b/Lib/test/test_multibytecodec_support.py
@@ -167,7 +167,7 @@
             parent = os.path.join(os.pardir, self.mapfilename)
             if not os.path.exists(parent):
                 format = '%s not found, download from %s'
-                raise test_support.TestSkipped(format % 
+                raise test_support.TestSkipped(format %
                         (self.mapfilename, self.mapfileurl))
             else:
                 self.mapfilename = parent
diff --git a/Lib/test/test_profile.py b/Lib/test/test_profile.py
index 1b1f50b..e0bda5c 100644
--- a/Lib/test/test_profile.py
+++ b/Lib/test/test_profile.py
@@ -86,14 +86,14 @@
 
 
 def test_2():
-        d = globals().copy()
-        def testfunc():
-            global x
-            x = 1
-        d['testfunc'] = testfunc
-        profile.runctx("testfunc()", d, d, TESTFN)
-        vereq (x, 1)
-        os.unlink (TESTFN)
+    d = globals().copy()
+    def testfunc():
+        global x
+        x = 1
+    d['testfunc'] = testfunc
+    profile.runctx("testfunc()", d, d, TESTFN)
+    vereq (x, 1)
+    os.unlink (TESTFN)
 
 if __name__ == "__main__":
     test_main()
diff --git a/Lib/test/test_tcl.py b/Lib/test/test_tcl.py
index 321723c..28da2dd 100644
--- a/Lib/test/test_tcl.py
+++ b/Lib/test/test_tcl.py
@@ -85,7 +85,7 @@
     def testUnsetVarException(self):
         tcl = self.interp
         self.assertRaises(TclError,tcl.unsetvar,'a')
-        
+
     def testEvalFile(self):
         tcl = self.interp
         filename = "testEvalFile.tcl"
diff --git a/Lib/test/test_textwrap.py b/Lib/test/test_textwrap.py
index 8c7279d..17fd1cf 100644
--- a/Lib/test/test_textwrap.py
+++ b/Lib/test/test_textwrap.py
@@ -128,7 +128,7 @@
         wrapper.width = 60
         expect = ['And she said, "Go to hell!"  Can you believe that?']
         self.check(wrapper.wrap(text), expect)
-        
+
     def test_wrap_short(self):
         # Wrapping to make short lines longer
 
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
index 2d414f3..ecab6f2 100644
--- a/Lib/test/test_urllib2.py
+++ b/Lib/test/test_urllib2.py
@@ -678,7 +678,7 @@
         data = result.read()
         self.assertEqual(len(data), 20)
 
-        
+
 
 def test_main(verbose=None):
     tests = (TrivialTests,
