diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py
index bda706a..1dd2461 100644
--- a/Lib/test/test_capi.py
+++ b/Lib/test/test_capi.py
@@ -46,4 +46,3 @@
     import threading
     t=threading.Thread(target=TestThreadState)
     t.start()
-
diff --git a/Lib/test/test_peepholer.py b/Lib/test/test_peepholer.py
index 6c1900d..33eb0f5 100644
--- a/Lib/test/test_peepholer.py
+++ b/Lib/test/test_peepholer.py
@@ -42,8 +42,8 @@
     def test_none_as_constant(self):
         # LOAD_GLOBAL None  -->  LOAD_CONST None
         def f(x):
-                None
-                return x
+            None
+            return x
         asm = disassemble(f)
         for elem in ('LOAD_GLOBAL',):
             self.assert_(elem not in asm)
@@ -53,9 +53,9 @@
     def test_while_one(self):
         # Skip over:  LOAD_CONST trueconst  JUMP_IF_FALSE xx  POP_TOP
         def f():
-                while 1:
-                        pass
-                return list
+            while 1:
+                pass
+            return list
         asm = disassemble(f)
         for elem in ('LOAD_CONST', 'JUMP_IF_FALSE'):
             self.assert_(elem not in asm)
diff --git a/Tools/msi/msi.py b/Tools/msi/msi.py
index b831c27..628220d 100644
--- a/Tools/msi/msi.py
+++ b/Tools/msi/msi.py
@@ -111,7 +111,7 @@
     '_winreg.pyd',
     'datetime.pyd'
     'mmap.pyd',
-    'parser.pyd',    
+    'parser.pyd',
     ])
 
 if testpackage:
@@ -151,7 +151,7 @@
         w64 = ".ia64"
     else:
         w64 = ""
-    db = msilib.init_database("python-%s%s.msi" % (full_current_version, w64), 
+    db = msilib.init_database("python-%s%s.msi" % (full_current_version, w64),
                   schema, ProductName="Python "+full_current_version,
                   ProductCode=product_code,
                   ProductVersion=current_version,
@@ -196,10 +196,10 @@
     # a release, we remove all snapshots, and all earlier releases.
     if snapshot:
         add_data(db, "Upgrade",
-            [(upgrade_code_snapshot, start,  
+            [(upgrade_code_snapshot, start,
               current_version,
               None,                     # Ignore language
-              migrate_features, 
+              migrate_features,
               None,                     # Migrate ALL features
               "REMOVEOLDSNAPSHOT")])
         props = "REMOVEOLDSNAPSHOT"
@@ -400,7 +400,7 @@
     # to the action, and optionally the condition for the event, and the order
     # of events.
     c.event("EndDialog", "Exit")
-    
+
     user_exit=PyDialog(db, "UserExit", x, y, w, h, modal, title,
                  "Finish", "Finish", "Finish")
     user_exit.title("[ProductName] Installer was interrupted")
@@ -413,7 +413,7 @@
                "Click the Finish button to exit the Installer.")
     c = user_exit.next("Finish", "Cancel", name="Finish")
     c.event("EndDialog", "Exit")
-    
+
     exit_dialog = PyDialog(db, "ExitDialog", x, y, w, h, modal, title,
                          "Finish", "Finish", "Finish")
     exit_dialog.title("Completing the [ProductName] Installer")
@@ -426,7 +426,7 @@
       "\n"
       "    Mark Hammond, without whose years of freely shared Windows\n"
       "    expertise, Python for Windows would still be Python for DOS.")
-                     
+
     exit_dialog.text("Description", 135, 235, 220, 20, 0x30003,
                "Click the Finish button to exit the Installer.")
     c = exit_dialog.next("Finish", "Cancel", name="Finish")
@@ -475,13 +475,13 @@
     # Global "Query Cancel" dialog
     cancel = Dialog(db, "CancelDlg", 50, 10, 260, 85, 3, title,
                     "No", "No", "No")
-    cancel.text("Text", 48, 15, 194, 30, 3, 
+    cancel.text("Text", 48, 15, 194, 30, 3,
                 "Are you sure you want to cancel [ProductName] installation?")
     cancel.control("Icon", "Icon", 15, 15, 24, 24, 5242881, None,
                    "py.ico", None, None)
     c=cancel.pushbutton("Yes", 72, 57, 56, 17, 3, "Yes", "No")
     c.event("EndDialog", "Exit")
-    
+
     c=cancel.pushbutton("No", 132, 57, 56, 17, 3, "No", "Yes")
     c.event("EndDialog", "Return")
 
@@ -566,14 +566,14 @@
     c=features.cancel("Cancel", "Tree")
     c.event("SpawnDialog", "CancelDlg")
 
-    # The browse property is not used, since we have only a single target path (selected already)    
+    # The browse property is not used, since we have only a single target path (selected already)
     features.control("Tree", "SelectionTree", 135, 75, 220, 95, 7, "_BrowseProperty",
                      "Tree of selections", "Back", None)
 
     #c=features.pushbutton("Reset", 42, 243, 56, 17, 3, "Reset", "DiskCost")
     #c.mapping("SelectionNoItems", "Enabled")
     #c.event("Reset", "0")
-    
+
     features.control("Box", "GroupBox", 135, 170, 225, 90, 1, None, None, None, None)
 
     c=features.xbutton("DiskCost", "Disk &Usage", None, 0.10)
@@ -586,7 +586,7 @@
     c=features.text("ItemDescription", 140, 180, 210, 30, 3,
                   "Multiline description of the currently selected item.")
     c.mapping("SelectionDescription","Text")
-    
+
     c=features.text("ItemSize", 140, 210, 210, 45, 3,
                     "The size of the currently selected item.")
     c.mapping("SelectionSize", "Text")
@@ -629,7 +629,7 @@
     g.add("ALL", 0, 5, 150, 20, "Install for all users")
     g.add("JUSTME", 0, 25, 150, 20, "Install just for me")
 
-    whichusers.back("Back", None, active=0)    
+    whichusers.back("Back", None, active=0)
 
     c = whichusers.next("Next >", "Cancel")
     c.event("[ALLUSERS]", "1", 'WhichUsers="ALL"', 1)
@@ -637,7 +637,7 @@
 
     c = whichusers.cancel("Cancel", "AdminInstall")
     c.event("SpawnDialog", "CancelDlg")
-                        
+
     #####################################################################
     # Advanced Dialog.
     advanced = PyDialog(db, "AdvancedDlg", x, y, w, h, modal, title,
@@ -652,9 +652,9 @@
 
     c = advanced.cancel("Cancel", "CompilePyc")
     c.event("SpawnDialog", "CancelDlg")
-                        
+
     #####################################################################
-    # Existing Directory dialog 
+    # Existing Directory dialog
     dlg = Dialog(db, "ExistingDirectoryDlg", 50, 30, 200, 80, modal, title,
                    "No", "No", "No")
     dlg.text("Title", 10, 20, 180, 40, 3,
@@ -702,7 +702,7 @@
     g.add("Change", 0, 0, 200, 17, "&Change [ProductName]")
     g.add("Repair", 0, 18, 200, 17, "&Repair [ProductName]")
     g.add("Remove", 0, 36, 200, 17, "Re&move [ProductName]")
-    
+
     maint.back("< Back", None, active=False)
     c=maint.next("Finish", "Cancel")
     # Change installation: Change progress dialog to "Change", then ask
@@ -724,12 +724,12 @@
     c.event("[Progress2]", "removes", 'MaintenanceForm_Action="Remove"', 13)
     c.event("Remove", "ALL", 'MaintenanceForm_Action="Remove"', 14)
 
-    # Close dialog when maintenance action scheduled    
+    # Close dialog when maintenance action scheduled
     c.event("EndDialog", "Return", 'MaintenanceForm_Action<>"Change"', 20)
     c.event("NewDialog", "SelectFeaturesDlg", 'MaintenanceForm_Action="Change"', 21)
-            
+
     maint.cancel("Cancel", "RepairRadioGroup").event("SpawnDialog", "CancelDlg")
-    
+
 
 # See "Feature Table". The feature level is 1 for all features,
 # and the feature attributes are 0 for the DefaultFeature, and
@@ -765,12 +765,12 @@
     htmlfiles = Feature(db, "Documentation", "Documentation",
                         "Python HTMLHelp File", 7, parent = default_feature)
     tools = Feature(db, "Tools", "Utility Scripts",
-                    "Python utility scripts (Tools/", 9, 
+                    "Python utility scripts (Tools/", 9,
                     parent = default_feature, attributes=2)
     testsuite = Feature(db, "Testsuite", "Test suite",
                         "Python test suite (Lib/test/)", 11,
                         parent = default_feature, attributes=2|8)
-    
+
 
 def extract_msvcr71():
     import _winreg
@@ -840,7 +840,7 @@
     dlldir.add_file("msvcr71.dll", src=os.path.abspath("msvcr71.dll"),
                     version=version, language=lang)
     tmpfiles.append("msvcr71.dll")
-    
+
     # Add all .py files in Lib, except lib-tk, test
     dirs={}
     pydirs = [(root,"Lib")]
@@ -925,7 +925,7 @@
         if f.endswith("_d.pyd"): continue # debug version
         if f in dlls: continue
         print "WARNING: Unknown extension", f
-    
+
     # Add headers
     default_feature.set_current()
     lib = PyDirectory(db, cab, root, "include", "include", "INCLUDE|include")
@@ -1022,7 +1022,7 @@
             [("Python.File", None, None, "Python File", "python_icon.exe", 0),
              ("Python.NoConFile", None, None, "Python File (no console)", "python_icon.exe", 0),
              ("Python.CompiledFile", None, None, "Compiled Python File", "python_icon.exe", 1)])
-    
+
     # Non-advertised verbs: for advertised verbs, we would need to invoke the same
     # executable for both open and "Edit with IDLE". This cannot work, as we want
     # to use pythonw.exe in either case
@@ -1035,7 +1035,7 @@
               r'"[TARGETDIR]pythonw.exe" "[TARGETDIR]Lib\idlelib\idle.pyw" -n -e "%1"',
               "REGISTRY.tcl"),
             ])
-    
+
     # Registry keys
     prefix = r"Software\%sPython\PythonCore\%s" % (testprefix, short_version)
     add_data(db, "Registry",
diff --git a/setup.py b/setup.py
index 50e5767..dd98bca 100644
--- a/setup.py
+++ b/setup.py
@@ -119,7 +119,7 @@
 
         # Platform-dependent module source and include directories
         platform = self.get_platform()
-        if platform in ('darwin', 'mac') and ("--disable-toolbox-glue" not in 
+        if platform in ('darwin', 'mac') and ("--disable-toolbox-glue" not in
             sysconfig.get_config_var("CONFIG_ARGS")):
             # Mac OS X also includes some mac-specific modules
             macmoddir = os.path.join(os.getcwd(), srcdir, 'Mac/Modules')
@@ -790,7 +790,7 @@
             # SunOS specific modules
             exts.append( Extension('sunaudiodev', ['sunaudiodev.c']) )
 
-        if platform == 'darwin' and ("--disable-toolbox-glue" not in 
+        if platform == 'darwin' and ("--disable-toolbox-glue" not in
             sysconfig.get_config_var("CONFIG_ARGS")):
             # Mac OS X specific modules.
             exts.append( Extension('_CF', ['cf/_CFmodule.c', 'cf/pycfbridge.c'],
