diff --git a/Lib/getopt.py b/Lib/getopt.py
index c726217..46aa702 100644
--- a/Lib/getopt.py
+++ b/Lib/getopt.py
@@ -9,7 +9,7 @@
 
 getopt() -- Parse command line options
 gnu_getopt() -- Like getopt(), but allow option and non-option arguments
-to be intermixed. 
+to be intermixed.
 GetoptError -- exception (class) raised with 'opt' attribute, which is the
 option involved with the exception.
 """
@@ -103,7 +103,7 @@
     If the first character of the option string is `+', or if the
     environment variable POSIXLY_CORRECT is set, then option
     processing stops as soon as a non-option argument is encountered.
-    
+
     """
 
     opts = []
diff --git a/Lib/httplib.py b/Lib/httplib.py
index d9fd6dd..71a0e50 100644
--- a/Lib/httplib.py
+++ b/Lib/httplib.py
@@ -276,7 +276,7 @@
                     break
                 if self.debuglevel > 0:
                     print "header:", skip
-            
+
         self.status = status
         self.reason = reason.strip()
         if version == 'HTTP/1.0':
@@ -482,7 +482,7 @@
         self._buffer = []
         self.__response = None
         self.__state = _CS_IDLE
-        
+
         self._set_hostport(host, port)
         if strict is not None:
             self.strict = strict
@@ -815,7 +815,7 @@
     """File-like object wrapping an SSL socket."""
 
     BUFSIZE = 8192
-    
+
     def __init__(self, sock, ssl, bufsize=None):
         SharedSocketClient.__init__(self, sock)
         self._ssl = ssl
@@ -1139,7 +1139,7 @@
             if amt is None:
                 return s + self._file.read()
             else:
-                return s + self._file.read(amt - len(s))                
+                return s + self._file.read(amt - len(s))
         else:
             assert amt <= self._line_left
             i = self._line_offset
@@ -1150,7 +1150,7 @@
             if self._line_left == 0:
                 self._done()
             return s
-        
+
     def readline(self):
         s = self._line[self._line_offset:]
         self._done()
@@ -1207,7 +1207,7 @@
     h.close()
 
     if hasattr(socket, 'ssl'):
-        
+
         for host, selector in (('sourceforge.net', '/projects/python'),
                                ('dbserv2.theopalgroup.com', '/mediumfile'),
                                ('dbserv2.theopalgroup.com', '/smallfile'),
diff --git a/Lib/imaplib.py b/Lib/imaplib.py
index ed03c56..91e9cb9 100644
--- a/Lib/imaplib.py
+++ b/Lib/imaplib.py
@@ -1058,7 +1058,7 @@
         # sslobj.read() sometimes returns < size bytes
         data = self.sslobj.read(size)
         while len(data) < size:
-                data += self.sslobj.read(size-len(data))
+            data += self.sslobj.read(size-len(data))
 
         return data
 
diff --git a/Lib/rfc822.py b/Lib/rfc822.py
index 4b12c4b..3d9e13f 100644
--- a/Lib/rfc822.py
+++ b/Lib/rfc822.py
@@ -443,7 +443,7 @@
 
     def __contains__(self, name):
         """Determine whether a message contains the named header."""
-        return name.lower() in self.dict        
+        return name.lower() in self.dict
 
     def keys(self):
         """Get all of a message's header field names."""
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index a586225..21d3457 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -711,33 +711,33 @@
         test_zlib
         """,
     'atheos':
-	"""
-	test_al
-	test_cd
-	test_cl
-	test_curses
-	test_dl
-	test_email_codecs
-	test_gdbm
-	test_gl
-	test_imgfile
-	test_largefile
-	test_linuxaudiodev
-	test_locale
-	test_mhlib
-	test_mmap
-	test_mpz
-	test_nis
-	test_poll
-	test_popen2
-	test_resource
-	test_socket_ssl
-	test_socketserver
-	test_sunaudiodev
-	test_unicode_file
-	test_winreg
-	test_winsound
-	""",
+        """
+        test_al
+        test_cd
+        test_cl
+        test_curses
+        test_dl
+        test_email_codecs
+        test_gdbm
+        test_gl
+        test_imgfile
+        test_largefile
+        test_linuxaudiodev
+        test_locale
+        test_mhlib
+        test_mmap
+        test_mpz
+        test_nis
+        test_poll
+        test_popen2
+        test_resource
+        test_socket_ssl
+        test_socketserver
+        test_sunaudiodev
+        test_unicode_file
+        test_winreg
+        test_winsound
+        """,
 }
 
 class _ExpectedSkips:
diff --git a/Lib/test/test_atexit.py b/Lib/test/test_atexit.py
index 07f5a7e..ad5bced 100644
--- a/Lib/test/test_atexit.py
+++ b/Lib/test/test_atexit.py
@@ -38,7 +38,7 @@
 import sys
 sys.exitfunc = direct
 
-# Make sure atexit doesn't drop 
+# Make sure atexit doesn't drop
 def indirect():
     print "indirect exit"
 
diff --git a/Lib/test/test_b1.py b/Lib/test/test_b1.py
index afa0cf3..cd828b1 100644
--- a/Lib/test/test_b1.py
+++ b/Lib/test/test_b1.py
@@ -102,9 +102,9 @@
 
 print 'complex'
 class OS:
-   def __complex__(self): return 1+10j
+    def __complex__(self): return 1+10j
 class NS(object):
-   def __complex__(self): return 1+10j
+    def __complex__(self): return 1+10j
 if complex(OS()) != 1+10j: raise TestFailed, '__complex__ in old style class'
 if complex(NS()) != 1+10j: raise TestFailed, '__complex__ in new style class'
 if complex("1+10j") != 1+10j: raise TestFailed, 'complex("1+10j")'
diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py
index 17523ba..55a6a98 100644
--- a/Lib/test/test_generators.py
+++ b/Lib/test/test_generators.py
@@ -814,7 +814,7 @@
 ...             continue
 ...         finally:
 ...             yield i
-... 
+...
 >>> g = f()
 >>> print g.next()
 0
diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py
index 09f92fc..f70abec 100644
--- a/Lib/test/test_httplib.py
+++ b/Lib/test/test_httplib.py
@@ -56,4 +56,3 @@
 cookies = r.getheader("Set-Cookie")
 if cookies != hdr:
     raise AssertionError, "multiple headers not combined properly"
-               
diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py
index 78b90b7..951e58a 100644
--- a/Lib/test/test_signal.py
+++ b/Lib/test/test_signal.py
@@ -125,4 +125,3 @@
             pass
         else:
             raise TestFailed, "sigsupsend didn't raise"
-    
diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py
index bec0237..87a70fb 100644
--- a/Lib/test/test_types.py
+++ b/Lib/test/test_types.py
@@ -211,7 +211,7 @@
     vereq(a[-100:100:], a)
     vereq(a[100:-100:-1], a[::-1])
     vereq(a[-100L:100L:2L], unicode('02468', 'ascii'))
-    
+
 
 print '6.5.2 Tuples'
 if len(()) != 0: raise TestFailed, 'len(())'
diff --git a/Lib/textwrap.py b/Lib/textwrap.py
index e8f9add..fb8d3b8 100644
--- a/Lib/textwrap.py
+++ b/Lib/textwrap.py
@@ -48,7 +48,7 @@
     whitespace_trans = string.maketrans(string.whitespace,
                                         ' ' * len(string.whitespace))
 
-    # This funky little regex is just the trick for splitting 
+    # This funky little regex is just the trick for splitting
     # text up into word-wrappable chunks.  E.g.
     #   "Hello there -- you goof-ball, use the -b option!"
     # splits into
@@ -81,7 +81,7 @@
         self.replace_whitespace = replace_whitespace
         self.fix_sentence_endings = fix_sentence_endings
         self.break_long_words = break_long_words
-        
+
 
     # -- Private methods -----------------------------------------------
     # (possibly useful for subclasses to override)
@@ -209,7 +209,7 @@
                     break
 
             # The current line is full, and the next chunk is too big to
-            # fit on *any* line (not just this one).  
+            # fit on *any* line (not just this one).
             if chunks and len(chunks[0]) > width:
                 self._handle_long_word(chunks, cur_line, cur_len, width)
 
diff --git a/Lib/urllib2.py b/Lib/urllib2.py
index 60c60d4..9a4ad3c 100644
--- a/Lib/urllib2.py
+++ b/Lib/urllib2.py
@@ -165,7 +165,7 @@
         # The addinfourl classes depend on fp being a valid file
         # object.  In some cases, the HTTPError may not have a valid
         # file object.  If this happens, the simplest workaround is to
-        # not initialize the base classes.  
+        # not initialize the base classes.
         if fp is not None:
             self.__super_init(fp, hdrs, url)
 
@@ -460,7 +460,7 @@
             user_pass, host = host.split('@', 1)
             if ':' in user_pass:
                 user, password = user_pass.split(':', 1)
-                user_pass = base64.encodestring('%s:%s' % (unquote(user), 
+                user_pass = base64.encodestring('%s:%s' % (unquote(user),
                                                            unquote(password)))
                 req.add_header('Proxy-Authorization', 'Basic ' + user_pass)
         host = unquote(host)
diff --git a/Lib/weakref.py b/Lib/weakref.py
index a1fa4e8..6153bd9 100644
--- a/Lib/weakref.py
+++ b/Lib/weakref.py
@@ -191,7 +191,7 @@
         except TypeError:
             return 0
         return wr in self.data
-    
+
     def items(self):
         L = []
         for key, value in self.data.items():
