diff --git a/Lib/ctypes/test/test_anon.py b/Lib/ctypes/test/test_anon.py
index 62e2ce7..99e02cb 100644
--- a/Lib/ctypes/test/test_anon.py
+++ b/Lib/ctypes/test/test_anon.py
@@ -49,7 +49,7 @@
                         ("_", ANON_U),
                         ("y", c_int)]
             _anonymous_ = ["_"]
-        
+
         self.failUnlessEqual(Y.x.offset, 0)
         self.failUnlessEqual(Y.a.offset, sizeof(c_int))
         self.failUnlessEqual(Y.b.offset, sizeof(c_int))
diff --git a/Lib/ctypes/test/test_varsize_struct.py b/Lib/ctypes/test/test_varsize_struct.py
index aa8930d..996a630 100644
--- a/Lib/ctypes/test/test_varsize_struct.py
+++ b/Lib/ctypes/test/test_varsize_struct.py
@@ -110,6 +110,6 @@
         array[:5] = [10, 11, 12, 13, 14]
         self.failUnlessEqual(array[:], [10, 11, 12, 13, 14, 25, 26, 27, 28, 29, 0, 0, 0, 0, 0])
         self.failUnlessEqual(varsize_array[0:10], [10, 11, 12, 13, 14, 25, 26, 27, 28, 29])
-        
+
 if __name__ == "__main__":
     unittest.main()
diff --git a/Lib/idlelib/Bindings.py b/Lib/idlelib/Bindings.py
index a695ab7..d24be3f 100644
--- a/Lib/idlelib/Bindings.py
+++ b/Lib/idlelib/Bindings.py
@@ -94,7 +94,7 @@
     del menudefs[0][1][-3:]
     menudefs[0][1].insert(6, closeItem)
 
-    # Remove the 'About' entry from the help menu, it is in the application 
+    # Remove the 'About' entry from the help menu, it is in the application
     # menu
     del menudefs[-1][1][0:2]
 
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index 0edd2d1..f7622f1 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -1396,8 +1396,8 @@
 
         if macosxSupport.runningAsOSXApp() and flist.dict:
             # On OSX: when the user has double-clicked on a file that causes
-            # IDLE to be launched the shell window will open just in front of 
-            # the file she wants to see. Lower the interpreter window when 
+            # IDLE to be launched the shell window will open just in front of
+            # the file she wants to see. Lower the interpreter window when
             # there are open files.
             shell.top.lower()
 
diff --git a/Lib/idlelib/configHandler.py b/Lib/idlelib/configHandler.py
index 5ae643a..826fb5d 100644
--- a/Lib/idlelib/configHandler.py
+++ b/Lib/idlelib/configHandler.py
@@ -500,7 +500,7 @@
 
         if macosxSupport.runningAsOSXApp():
             # We're using AquaTk, replace all keybingings that use the
-            # Alt key by ones that use the Option key because the former 
+            # Alt key by ones that use the Option key because the former
             # don't work reliably.
             for k, v in result.items():
                 v2 = [ x.replace('<Alt-', '<Option-') for x in v ]
diff --git a/Lib/idlelib/macosxSupport.py b/Lib/idlelib/macosxSupport.py
index d403514..d55dbcb 100644
--- a/Lib/idlelib/macosxSupport.py
+++ b/Lib/idlelib/macosxSupport.py
@@ -1,36 +1,36 @@
-"""
-A number of function that enhance IDLE on MacOSX when it used as a normal
-GUI application (as opposed to an X11 application).
-"""
-import sys
-
-def runningAsOSXApp():
-    """ Returns True iff running from the IDLE.app bundle on OSX """
-    return (sys.platform == 'darwin' and 'IDLE.app' in sys.argv[0])
-
-def addOpenEventSupport(root, flist):
-    """
-    This ensures that the application will respont to open AppleEvents, which
-    makes is feaseable to use IDLE as the default application for python files.
-    """
-    def doOpenFile(*args):
-        for fn in args:
-            flist.open(fn)
-           
-    # The command below is a hook in aquatk that is called whenever the app
-    # receives a file open event. The callback can have multiple arguments,
-    # one for every file that should be opened.
-    root.createcommand("::tk::mac::OpenDocument", doOpenFile)
-
-def hideTkConsole(root):
-    root.tk.call('console', 'hide')
-
-
-def setupApp(root, flist):
-    """
-    Perform setup for the OSX application bundle.
-    """
-    if not runningAsOSXApp(): return
-
-    hideTkConsole(root)
-    addOpenEventSupport(root, flist)
+"""
+A number of function that enhance IDLE on MacOSX when it used as a normal
+GUI application (as opposed to an X11 application).
+"""
+import sys
+
+def runningAsOSXApp():
+    """ Returns True iff running from the IDLE.app bundle on OSX """
+    return (sys.platform == 'darwin' and 'IDLE.app' in sys.argv[0])
+
+def addOpenEventSupport(root, flist):
+    """
+    This ensures that the application will respont to open AppleEvents, which
+    makes is feaseable to use IDLE as the default application for python files.
+    """
+    def doOpenFile(*args):
+        for fn in args:
+            flist.open(fn)
+
+    # The command below is a hook in aquatk that is called whenever the app
+    # receives a file open event. The callback can have multiple arguments,
+    # one for every file that should be opened.
+    root.createcommand("::tk::mac::OpenDocument", doOpenFile)
+
+def hideTkConsole(root):
+    root.tk.call('console', 'hide')
+
+
+def setupApp(root, flist):
+    """
+    Perform setup for the OSX application bundle.
+    """
+    if not runningAsOSXApp(): return
+
+    hideTkConsole(root)
+    addOpenEventSupport(root, flist)
diff --git a/Lib/optparse.py b/Lib/optparse.py
index f0fad2c..ef382aa 100644
--- a/Lib/optparse.py
+++ b/Lib/optparse.py
@@ -256,7 +256,7 @@
                              text_width,
                              initial_indent=indent,
                              subsequent_indent=indent)
-        
+
     def format_description(self, description):
         if description:
             return self._format_text(description) + "\n"
@@ -1214,7 +1214,7 @@
         """
         Declare that you are done with this OptionParser.  This cleans up
         reference cycles so the OptionParser (and all objects referenced by
-        it) can be garbage-collected promptly.  After calling destroy(), the 
+        it) can be garbage-collected promptly.  After calling destroy(), the
         OptionParser is unusable.
         """
         OptionContainer.destroy(self)
diff --git a/Lib/test/test_textwrap.py b/Lib/test/test_textwrap.py
index 98cc869..500eceb 100644
--- a/Lib/test/test_textwrap.py
+++ b/Lib/test/test_textwrap.py
@@ -552,7 +552,7 @@
 
         text = "  \t  hello there\n  \t  how are you?"
         self.assertEquals(expect, dedent(text))
-        
+
         text = "  \thello there\n  \t  how are you?"
         expect = "hello there\n  how are you?"
         self.assertEquals(expect, dedent(text))
diff --git a/Lib/textwrap.py b/Lib/textwrap.py
index e18000a..ccff2ab 100644
--- a/Lib/textwrap.py
+++ b/Lib/textwrap.py
@@ -344,13 +344,13 @@
 
         # Current line more deeply indented than previous winner:
         # no change (previous winner is still on top).
-        elif indent.startswith(margin): 
-            pass                        
+        elif indent.startswith(margin):
+            pass
 
         # Current line consistent with and no deeper than previous winner:
         # it's the new winner.
-        elif margin.startswith(indent): 
-            margin = indent             
+        elif margin.startswith(indent):
+            margin = indent
 
         # Current line and previous winner have no common whitespace:
         # there is no margin.
