diff --git a/Lib/UserList.py b/Lib/UserList.py
index 7bd0298..d4a8d2f 100644
--- a/Lib/UserList.py
+++ b/Lib/UserList.py
@@ -4,7 +4,7 @@
     def __init__(self, initlist=None):
         self.data = []
         if initlist is not None:
-            # XXX should this accept an arbitary sequence?
+            # XXX should this accept an arbitrary sequence?
             if type(initlist) == type(self.data):
                 self.data[:] = initlist
             elif isinstance(initlist, UserList):
diff --git a/Lib/aifc.py b/Lib/aifc.py
index 0af6622..e00b23f 100644
--- a/Lib/aifc.py
+++ b/Lib/aifc.py
@@ -82,7 +82,7 @@
   close()     -- close the instance (make it unusable)
 The position returned by tell(), the position given to setpos() and
 the position of marks are all compatible and have nothing to do with
-the actual postion in the file.
+the actual position in the file.
 The close() method is called automatically when the class instance
 is destroyed.
 
diff --git a/Lib/asynchat.py b/Lib/asynchat.py
index 8b2f59f..4e02fa5 100644
--- a/Lib/asynchat.py
+++ b/Lib/asynchat.py
@@ -287,7 +287,7 @@
 ##	return result
 
 # yes, this is about twice as fast, but still seems
-# to be neglible CPU.  The previous could do about 290
+# to be negligible CPU.  The previous could do about 290
 # searches/sec. the new one about 555/sec.
 
 import regex
diff --git a/Lib/binhex.py b/Lib/binhex.py
index 0a28859..275701d 100644
--- a/Lib/binhex.py
+++ b/Lib/binhex.py
@@ -75,7 +75,7 @@
 
 else:
     #
-    # Glue code for non-macintosh useage
+    # Glue code for non-macintosh usage
     #
     
     class FInfo:
diff --git a/Lib/cgi.py b/Lib/cgi.py
index 4eaa983..7c95706 100755
--- a/Lib/cgi.py
+++ b/Lib/cgi.py
@@ -83,7 +83,7 @@
 If the submitted form data contains more than one field with the same
 name, the object retrieved by form[key] is not a (Mini)FieldStorage
 instance but a list of such instances.  If you are expecting this
-possibility (i.e., when your HTML form comtains multiple fields with
+possibility (i.e., when your HTML form contains multiple fields with
 the same name), use the type() function to determine whether you have
 a single instance or a list of instances.  For example, here's code
 that concatenates any number of username fields, separated by commas:
@@ -106,7 +106,7 @@
 If a field represents an uploaded file, the value attribute reads the 
 entire file in memory as a string.  This may not be what you want.  You can 
 test for an uploaded file by testing either the filename attribute or the 
-file attribute.  You can then read the data at leasure from the file 
+file attribute.  You can then read the data at leisure from the file 
 attribute:
 
         fileitem = form["userfile"]
@@ -500,7 +500,7 @@
 
         keep_blank_values: flag indicating whether blank values in
             URL encoded forms should be treated as blank strings.  
-            A true value inicates that blanks should be retained as 
+            A true value indicates that blanks should be retained as 
             blank strings.  The default false value indicates that
             blank values are to be ignored and treated as if they were
             not included.
@@ -551,7 +551,7 @@
 
         keep_blank_values: flag indicating whether blank values in
             URL encoded queries should be treated as blank strings.  
-            A true value inicates that blanks should be retained as 
+            A true value indicates that blanks should be retained as 
             blank strings.  The default false value indicates that
             blank values are to be ignored and treated as if they were
             not included.
@@ -578,7 +578,7 @@
 
         keep_blank_values: flag indicating whether blank values in
             URL encoded queries should be treated as blank strings.  
-            A true value inicates that blanks should be retained as 
+            A true value indicates that blanks should be retained as 
             blank strings.  The default false value indicates that
             blank values are to be ignored and treated as if they were
             not included.
@@ -806,7 +806,7 @@
 
         keep_blank_values: flag indicating whether blank values in
             URL encoded forms should be treated as blank strings.  
-            A true value inicates that blanks should be retained as 
+            A true value indicates that blanks should be retained as 
             blank strings.  The default false value indicates that
             blank values are to be ignored and treated as if they were
             not included.
diff --git a/Lib/codecs.py b/Lib/codecs.py
index fbb9824..2c1d835 100644
--- a/Lib/codecs.py
+++ b/Lib/codecs.py
@@ -273,7 +273,7 @@
         """ Resets the codec buffers used for keeping state.
 
             Note that no stream repositioning should take place.
-            This method is primarely intended to be able to recover
+            This method is primarily intended to be able to recover
             from decoding errors.
 
         """
@@ -295,7 +295,7 @@
         work in both read and write modes.
 
         The design is such that one can use the factory functions
-        returned by the codec.lookup() function to contruct the
+        returned by the codec.lookup() function to construct the
         instance.
 
     """
diff --git a/Lib/dos-8x3/multifil.py b/Lib/dos-8x3/multifil.py
index 977b92f..cc8f43c 100755
--- a/Lib/dos-8x3/multifil.py
+++ b/Lib/dos-8x3/multifil.py
@@ -21,7 +21,7 @@
 The latter sequence may be used recursively at (A).
 It is also allowed to use multiple push()...pop() sequences.
 
-If seekable is given as 0, the class code will not do the bookeeping
+If seekable is given as 0, the class code will not do the bookkeeping
 it normally attempts in order to make seeks relative to the beginning of the
 current file part.  This may be useful when using MultiFile with a non-
 seekable stream object.
diff --git a/Lib/dos-8x3/rlcomple.py b/Lib/dos-8x3/rlcomple.py
index 7a248fe..8cd21ed 100644
--- a/Lib/dos-8x3/rlcomple.py
+++ b/Lib/dos-8x3/rlcomple.py
@@ -84,7 +84,7 @@
         """Compute matches when text contains a dot.
 
         Assuming the text is of the form NAME.NAME....[NAME], and is
-        evaluabable in the globals of __main__, it will be evaluated
+        evaluatable in the globals of __main__, it will be evaluated
         and its attributes (as revealed by dir()) are used as possible
         completions.  (For class instances, class members are are also
         considered.)
diff --git a/Lib/dos-8x3/sre_comp.py b/Lib/dos-8x3/sre_comp.py
index 590e45f..fa0cf37 100644
--- a/Lib/dos-8x3/sre_comp.py
+++ b/Lib/dos-8x3/sre_comp.py
@@ -20,7 +20,7 @@
     if len(array.array(WORDSIZE, [0]).tostring()) == _sre.getcodesize():
         break
 else:
-    raise RuntimeError, "cannot find a useable array type"
+    raise RuntimeError, "cannot find a usable array type"
 
 def _compile(code, pattern, flags):
     # internal: compile a (sub)pattern
diff --git a/Lib/dos-8x3/stringol.py b/Lib/dos-8x3/stringol.py
index 8fa7dd4..c3e6f6f 100644
--- a/Lib/dos-8x3/stringol.py
+++ b/Lib/dos-8x3/stringol.py
@@ -118,7 +118,7 @@
     """join(list [,sep]) -> string
 
     Return a string composed of the words in list, with
-    intervening occurences of sep.  The default separator is a
+    intervening occurrences of sep.  The default separator is a
     single space.
 
     (joinfields and join are synonymous)
diff --git a/Lib/dos-8x3/test_ima.py b/Lib/dos-8x3/test_ima.py
index 63ab138..6b144c6 100644
--- a/Lib/dos-8x3/test_ima.py
+++ b/Lib/dos-8x3/test_ima.py
@@ -62,7 +62,7 @@
     image = imageop.grey2rgb(greyimage, width, height)
     
     # Convert a 8-bit deep greyscale image to a 1-bit deep image by
-    # tresholding all the pixels. The resulting image is tightly packed
+    # thresholding all the pixels. The resulting image is tightly packed
     # and is probably only useful as an argument to mono2grey. 
     if verbose:
         print 'grey2mono'
diff --git a/Lib/dos-8x3/threadst.py b/Lib/dos-8x3/threadst.py
index c2b08f2..d9c2788 100644
--- a/Lib/dos-8x3/threadst.py
+++ b/Lib/dos-8x3/threadst.py
@@ -1,7 +1,7 @@
 import thread
-# Start empty thread to initialise thread mechanics (and global lock!)
+# Start empty thread to initialize thread mechanics (and global lock!)
 # This thread will finish immediately thus won't make much influence on
-# test results by itself, only by that fact that it initialises global lock
+# test results by itself, only by that fact that it initializes global lock
 thread.start_new_thread(lambda : 1, ())
 
 import test.pystone
diff --git a/Lib/dos-8x3/tracebac.py b/Lib/dos-8x3/tracebac.py
index 4675077..d219340 100755
--- a/Lib/dos-8x3/tracebac.py
+++ b/Lib/dos-8x3/tracebac.py
@@ -117,7 +117,7 @@
 	have the same meaning as the corresponding arguments to
 	print_exception().  The return value is a list of strings, each
 	ending in a newline and some containing internal newlines.  When 
-	these lines are contatenated and printed, exactly the same text is
+	these lines are concatenated and printed, exactly the same text is
 	printed as does print_exception()."""
 	if tb:
 		list = ['Traceback (most recent call last):\n']
diff --git a/Lib/dos-8x3/userlist.py b/Lib/dos-8x3/userlist.py
index 7bd0298..d4a8d2f 100755
--- a/Lib/dos-8x3/userlist.py
+++ b/Lib/dos-8x3/userlist.py
@@ -4,7 +4,7 @@
     def __init__(self, initlist=None):
         self.data = []
         if initlist is not None:
-            # XXX should this accept an arbitary sequence?
+            # XXX should this accept an arbitrary sequence?
             if type(initlist) == type(self.data):
                 self.data[:] = initlist
             elif isinstance(initlist, UserList):
diff --git a/Lib/encodings/cp856.py b/Lib/encodings/cp856.py
index a0aa4c1..f384acb 100644
--- a/Lib/encodings/cp856.py
+++ b/Lib/encodings/cp856.py
@@ -120,10 +120,10 @@
 	0x00d0: None,	# UNDEFINED
 	0x00d1: None,	# UNDEFINED
 	0x00d2: None,	# UNDEFINED
-	0x00d3: None,	# UNDEFINEDS
+	0x00d3: None,	# UNDEFINED
 	0x00d4: None,	# UNDEFINED
 	0x00d5: None,	# UNDEFINED
-	0x00d6: None,	# UNDEFINEDE
+	0x00d6: None,	# UNDEFINED
 	0x00d7: None,	# UNDEFINED
 	0x00d8: None,	# UNDEFINED
 	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
diff --git a/Lib/lib-old/Para.py b/Lib/lib-old/Para.py
index 003ea1e..bf5f92c 100644
--- a/Lib/lib-old/Para.py
+++ b/Lib/lib-old/Para.py
@@ -56,7 +56,7 @@
 	#
 	# Tab to a given position (relative to the current left indent):
 	# remove all stretch, add fixed space up to the new indent.
-	# If the current position is already beying the tab stop,
+	# If the current position is already at the tab stop,
 	# don't add any new space (but still remove the stretch)
 	def tabto(self, tab):
 		total = 0
diff --git a/Lib/lib-old/ni.py b/Lib/lib-old/ni.py
index 13bcfac..4a06f59 100644
--- a/Lib/lib-old/ni.py
+++ b/Lib/lib-old/ni.py
@@ -64,7 +64,7 @@
 (2) A package's *import domain*, contained in the per-package variable
 __domain__, defines a list of *packages* that are searched (using
 their respective module search paths) to satisfy imports.  It is
-initialized to the list cosisting of the package itself, its parent
+initialized to the list consisting of the package itself, its parent
 package, its parent's parent, and so on, ending with the root package
 (the nameless package containing all top-level packages and modules,
 whose module search path is None, implying sys.path).
diff --git a/Lib/lib-tk/FileDialog.py b/Lib/lib-tk/FileDialog.py
index 74e9741..bd62c6d 100644
--- a/Lib/lib-tk/FileDialog.py
+++ b/Lib/lib-tk/FileDialog.py
@@ -36,7 +36,7 @@
     and pattern arguments, overriding the values passed in (it does
     not keep track of the default argument!).  If no key is specified,
     the dialog keeps no memory of previous state.  Note that memory is
-    kept even when the dialog is cancelled.  (All this emulates the
+    kept even when the dialog is canceled.  (All this emulates the
     behavior of the Macintosh file selection dialogs.)
 
     """
diff --git a/Lib/lib-tk/Tkdnd.py b/Lib/lib-tk/Tkdnd.py
index 0dda3b7..a4e1d1f 100644
--- a/Lib/lib-tk/Tkdnd.py
+++ b/Lib/lib-tk/Tkdnd.py
@@ -277,7 +277,7 @@
         return self
 
     def dnd_enter(self, source, event):
-        self.canvas.focus_set() # Show higlight border
+        self.canvas.focus_set() # Show highlight border
         x, y = source.where(self.canvas, event)
         x1, y1, x2, y2 = source.canvas.bbox(source.id)
         dx, dy = x2-x1, y2-y1
diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py
index a70e064..63ccd1c 100644
--- a/Lib/lib-tk/Tkinter.py
+++ b/Lib/lib-tk/Tkinter.py
@@ -117,7 +117,7 @@
 					        Enter, KeyPress, KeyRelease,
 					        Leave, Motion)
 	state - state as a string (Visibility)
-	time - when the event occured
+	time - when the event occurred
 	x - x-position of the mouse
 	y - y-position of the mouse
 	x_root - x-position of the mouse on the screen
@@ -129,7 +129,7 @@
 	keysym - keysym of the the event as a string (KeyPress, KeyRelease)
 	keysym_num - keysym of the event as a number (KeyPress, KeyRelease)
 	type - type of the event as a number
-	widget - widget in which the event occured
+	widget - widget in which the event occurred
 	delta - delta of wheel movement (MouseWheel)
 	"""
 	pass
@@ -409,7 +409,7 @@
 		The focus order first goes to the next child, then to
 		the children of the child recursively and then to the
 		next sibling which is higher in the stacking order.  A
-		widget is ommited if it has the takefocus resource set
+		widget is omitted if it has the takefocus resource set
 		to 0."""
 		name = self.tk.call('tk_focusNext', self._w)
 		if not name: return None
@@ -529,7 +529,7 @@
 	def option_readfile(self, fileName, priority = None):
 		"""Read file FILENAME into the option database.
 
-		An optional second paramter gives the numeric
+		An optional second parameter gives the numeric
 		priority."""
 		self.tk.call('option', 'readfile', fileName, priority)
 	def selection_clear(self, **kw):
@@ -639,7 +639,7 @@
 		"""Return geometry string for this widget in the form "widthxheight+X+Y"."""
 		return self.tk.call('winfo', 'geometry', self._w)
 	def winfo_height(self):
-		"""Return heigth of this widget."""
+		"""Return height of this widget."""
 		return getint(
 			self.tk.call('winfo', 'height', self._w))
 	def winfo_id(self):
@@ -754,7 +754,7 @@
 		return self._nametowidget(self.tk.call(
 			'winfo', 'toplevel', self._w))
 	def winfo_viewable(self):
-		"""Return true if the widget and all its higher anchestors are mapped."""
+		"""Return true if the widget and all its higher ancestors are mapped."""
 		return getint(
 			self.tk.call('winfo', 'viewable', self._w))
 	def winfo_visual(self):
@@ -1135,7 +1135,7 @@
 		cell. If COL2 and ROW2 are given the bounding box
 		starts at that cell.
 
-		The returned integers specify the offset of the uppler left
+		The returned integers specify the offset of the upper left
 		corner in the master widget and the width and height.
 		"""
 		args = ('grid', 'bbox', self._w)
@@ -1268,7 +1268,7 @@
 
 class CallWrapper:
 	"""Internal class. Stores function to call when some user
-	defined Tcl function is called e.g. after an event occured."""
+	defined Tcl function is called e.g. after an event occurred."""
 	def __init__(self, func, subst, widget):
 		"""Store FUNC, SUBST and WIDGET as members."""
 		self.func = func
@@ -1316,7 +1316,7 @@
 	def wm_command(self, value=None):
 		"""Store VALUE in WM_COMMAND property. It is the command
 		which shall be used to invoke the application. Return current
-		commmand if VALUE is None."""
+		command if VALUE is None."""
 		return self.tk.call('wm', 'command', self._w, value)
 	command = wm_command
 	def wm_deiconify(self):
@@ -1335,7 +1335,7 @@
 		return self.tk.call('wm', 'frame', self._w)
 	frame = wm_frame
 	def wm_geometry(self, newGeometry=None):
-		"""Set geometry to NEWGEOMETRY of the form =widthxheigth+x+y. Return
+		"""Set geometry to NEWGEOMETRY of the form =widthxheight+x+y. Return
 		current value if None is given."""
 		return self.tk.call('wm', 'geometry', self._w, newGeometry)
 	geometry = wm_geometry
@@ -1623,7 +1623,7 @@
 		                  relative to width of master (1.0 is the same width
 				  as the master)
 	        relheight=amount - height of this widget between 0.0 and 1.0
-		                   relative to heigth of master (1.0 is the same
+		                   relative to height of master (1.0 is the same
 				   height as the master)
 	        bordermode="inside" or "outside" - whether to take border width of master widget
 	                                           into account
@@ -1913,12 +1913,12 @@
 				  sequence, func, add)
 	def canvasx(self, screenx, gridspacing=None):
 		"""Return the canvas x coordinate of pixel position SCREENX rounded
-		to nearest muliple of GRIDSPACING units."""
+		to nearest multiple of GRIDSPACING units."""
 		return getdouble(self.tk.call(
 			self._w, 'canvasx', screenx, gridspacing))
 	def canvasy(self, screeny, gridspacing=None):
 		"""Return the canvas y coordinate of pixel position SCREENY rounded
-		to nearest muliple of GRIDSPACING units."""
+		to nearest multiple of GRIDSPACING units."""
 		return getdouble(self.tk.call(
 			self._w, 'canvasy', screeny, gridspacing))
 	def coords(self, *args):
@@ -2609,7 +2609,7 @@
 		width, wrap, xscrollcommand, yscrollcommand."""
 		Widget.__init__(self, master, 'text', cnf, kw)
 	def bbox(self, *args):
-		"""Return a tuple of (x,y,width,heigth) which gives the bounding
+		"""Return a tuple of (x,y,width,height) which gives the bounding
 		box of the visible part of the character at the index in ARGS."""
 		return self._getints(
 			self.tk.call((self._w, 'bbox') + args)) or None
@@ -2674,7 +2674,7 @@
 		"""Return the index in the form line.char for INDEX."""
 		return self.tk.call(self._w, 'index', index)
 	def insert(self, index, chars, *args):
-		"""Insert CHARS before the charaters at INDEX. An additional
+		"""Insert CHARS before the characters at INDEX. An additional
 		tag can be given in ARGS. Additional CHARS and tags can follow in ARGS."""
 		self.tk.call((self._w, 'insert', index, chars) + args)
 	def mark_gravity(self, markName, direction=None):
@@ -2728,7 +2728,7 @@
 		self.tk.call(self._w, 'see', index)
 	def tag_add(self, tagName, index1, *args):
 		"""Add tag TAGNAME to all characters between INDEX1 and index2 in ARGS.
-		Addtional pairs of indices may follow in ARGS."""
+		Additional pairs of indices may follow in ARGS."""
 		self.tk.call(
 			(self._w, 'tag', 'add', tagName, index1) + args)
 	def tag_unbind(self, tagName, sequence, funcid=None):
diff --git a/Lib/lib-tk/tkColorChooser.py b/Lib/lib-tk/tkColorChooser.py
index 5756275..77e856b 100644
--- a/Lib/lib-tk/tkColorChooser.py
+++ b/Lib/lib-tk/tkColorChooser.py
@@ -48,7 +48,7 @@
         # to simplify application code, the color chooser returns
         # an RGB tuple together with the Tk color string
         if not result:
-            return None, None # cancelled
+            return None, None # canceled
         r, g, b = widget.winfo_rgb(result)
         return (r/256, g/256, b/256), result
 
diff --git a/Lib/locale.py b/Lib/locale.py
index 7dde040..401c712 100644
--- a/Lib/locale.py
+++ b/Lib/locale.py
@@ -268,7 +268,7 @@
         setlocale(LC_ALL, "") runs using the portable 'C' locale.
         Calling setlocale(LC_ALL, "") lets it use the default locale as
         defined by the LANG variable. Since we don't want to interfere
-        with the current locale setting we thus emulate the behaviour
+        with the current locale setting we thus emulate the behavior
         in the way described above.
 
         To maintain compatibility with other platforms, not only the
diff --git a/Lib/mhlib.py b/Lib/mhlib.py
index 9af04b2..df538f2 100644
--- a/Lib/mhlib.py
+++ b/Lib/mhlib.py
@@ -627,7 +627,7 @@
                     pass
 
     def removefromallsequences(self, list):
-        """Remove one or more messages from all sequeuces (including last)
+        """Remove one or more messages from all sequences (including last)
         -- but not from 'cur'!!!"""
         if hasattr(self, 'last') and self.last in list:
             del self.last
diff --git a/Lib/multifile.py b/Lib/multifile.py
index 977b92f..cc8f43c 100644
--- a/Lib/multifile.py
+++ b/Lib/multifile.py
@@ -21,7 +21,7 @@
 The latter sequence may be used recursively at (A).
 It is also allowed to use multiple push()...pop() sequences.
 
-If seekable is given as 0, the class code will not do the bookeeping
+If seekable is given as 0, the class code will not do the bookkeeping
 it normally attempts in order to make seeks relative to the beginning of the
 current file part.  This may be useful when using MultiFile with a non-
 seekable stream object.
diff --git a/Lib/nntplib.py b/Lib/nntplib.py
index 81449b0..7a90543 100644
--- a/Lib/nntplib.py
+++ b/Lib/nntplib.py
@@ -219,7 +219,7 @@
 		- date: string 'yymmdd' indicating the date
 		- time: string 'hhmmss' indicating the time
 		Return:
-		- resp: server response if succesful
+		- resp: server response if successful
 		- list: list of newsgroup names"""
 
 		return self.longcmd('NEWGROUPS ' + date + ' ' + time)
@@ -230,7 +230,7 @@
 		- date: string 'yymmdd' indicating the date
 		- time: string 'hhmmss' indicating the time
 		Return:
-		- resp: server response if succesful
+		- resp: server response if successful
 		- list: list of article ids"""
 
 		cmd = 'NEWNEWS ' + group + ' ' + date + ' ' + time
@@ -238,7 +238,7 @@
 
 	def list(self):
 		"""Process a LIST command.  Return:
-		- resp: server response if succesful
+		- resp: server response if successful
 		- list: list of (group, last, first, flag) (strings)"""
 
 		resp, list = self.longcmd('LIST')
@@ -251,7 +251,7 @@
 		"""Process a GROUP command.  Argument:
 		- group: the group name
 		Returns:
-		- resp: server response if succesful
+		- resp: server response if successful
 		- count: number of articles (string)
 		- first: first article number (string)
 		- last: last article number (string)
@@ -275,7 +275,7 @@
 
 	def help(self):
 		"""Process a HELP command.  Returns:
-		- resp: server response if succesful
+		- resp: server response if successful
 		- list: list of strings"""
 
 		return self.longcmd('HELP')
@@ -303,7 +303,7 @@
 		"""Process a STAT command.  Argument:
 		- id: article number or message id
 		Returns:
-		- resp: server response if succesful
+		- resp: server response if successful
 		- nr:   the article number
 		- id:   the article id"""
 
@@ -327,7 +327,7 @@
 		"""Process a HEAD command.  Argument:
 		- id: article number or message id
 		Returns:
-		- resp: server response if succesful
+		- resp: server response if successful
 		- nr: article number
 		- id: message id
 		- list: the lines of the article's header"""
@@ -338,7 +338,7 @@
 		"""Process a BODY command.  Argument:
 		- id: article number or message id
 		Returns:
-		- resp: server response if succesful
+		- resp: server response if successful
 		- nr: article number
 		- id: message id
 		- list: the lines of the article's body"""
@@ -349,7 +349,7 @@
 		"""Process an ARTICLE command.  Argument:
 		- id: article number or message id
 		Returns:
-		- resp: server response if succesful
+		- resp: server response if successful
 		- nr: article number
 		- id: message id
 		- list: the lines of the article"""
@@ -358,7 +358,7 @@
 
 	def slave(self):
 		"""Process a SLAVE command.  Returns:
-		- resp: server response if succesful"""
+		- resp: server response if successful"""
 
 		return self.shortcmd('SLAVE')
 
@@ -367,7 +367,7 @@
 		- hdr: the header type (e.g. 'subject')
 		- str: an article nr, a message id, or a range nr1-nr2
 		Returns:
-		- resp: server response if succesful
+		- resp: server response if successful
 		- list: list of (nr, value) strings"""
 
 		pat = re.compile('^([0-9]+) ?(.*)\n?')
@@ -384,7 +384,7 @@
 		- start: start of range
 		- end: end of range
 		Returns:
-		- resp: server response if succesful
+		- resp: server response if successful
 		- list: list of (art-nr, subject, poster, date,
 		                 id, references, size, lines)"""
 
@@ -409,7 +409,7 @@
 		"""Process an XGTITLE command (optional server extension) Arguments:
 		- group: group name wildcard (i.e. news.*)
 		Returns:
-		- resp: server response if succesful
+		- resp: server response if successful
 		- list: list of (name,title) strings"""
 
 		line_pat = re.compile("^([^ \t]+)[ \t]+(.*)$")
@@ -425,7 +425,7 @@
 		"""Process an XPATH command (optional server extension) Arguments:
 		- id: Message id of article
 		Returns:
-		resp: server response if succesful
+		resp: server response if successful
 		path: directory path to article"""
 
 		resp = self.shortcmd("XPATH " + id)
@@ -442,7 +442,7 @@
 		"""Process the DATE command. Arguments:
 		None
 		Returns:
-		resp: server response if succesful
+		resp: server response if successful
 		date: Date suitable for newnews/newgroups commands etc.
 		time: Time suitable for newnews/newgroups commands etc."""
 
@@ -463,7 +463,7 @@
 		"""Process a POST command.  Arguments:
 		- f: file containing the article
 		Returns:
-		- resp: server response if succesful"""
+		- resp: server response if successful"""
 
 		resp = self.shortcmd('POST')
 		# Raises error_??? if posting is not allowed
@@ -486,7 +486,7 @@
 		- id: message-id of the article
 		- f:  file containing the article
 		Returns:
-		- resp: server response if succesful
+		- resp: server response if successful
 		Note that if the server refuses the article an exception is raised."""
 
 		resp = self.shortcmd('IHAVE ' + id)
@@ -507,7 +507,7 @@
 
 	def quit(self):
 		"""Process a QUIT command and close the socket.  Returns:
-		- resp: server response if succesful"""
+		- resp: server response if successful"""
 
 		resp = self.shortcmd('QUIT')
 		self.file.close()
diff --git a/Lib/os.py b/Lib/os.py
index c7a3cc5..8e1e4f0 100644
--- a/Lib/os.py
+++ b/Lib/os.py
@@ -218,7 +218,7 @@
 
     Execute the executable file (which is searched for along $PATH)
     with argument list args, replacing the current process.
-    args may be a list or tupe of strings. """
+    args may be a list or tuple of strings. """
     _execvpe(file, args)
 
 def execvpe(file, args, env):
@@ -227,7 +227,7 @@
     Execute the executable file (which is searched for along $PATH)
     with argument list args and environment env , replacing the
     current process.
-    args may be a list or tupe of strings. """    
+    args may be a list or tuple of strings. """    
     _execvpe(file, args, env)
 
 _notfound = None
diff --git a/Lib/pdb.py b/Lib/pdb.py
index 67387a9..db4a2cd 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -191,7 +191,7 @@
 					if bp:
 						bp.bpprint()
 			return
-		# parse arguments; comma has lowest precendence
+		# parse arguments; comma has lowest precedence
 		# and cannot occur in filename
 		filename = None
 		lineno = None
diff --git a/Lib/poplib.py b/Lib/poplib.py
index 97a9b0d..5a3813c 100644
--- a/Lib/poplib.py
+++ b/Lib/poplib.py
@@ -59,7 +59,7 @@
 		POP3(hostname, port=110)
 
 	NB:	the POP protocol locks the mailbox from user
-		authorisation until QUIT, so be sure to get in, suck
+		authorization until QUIT, so be sure to get in, suck
 		the messages, and quit, each time you access the
 		mailbox.
 
diff --git a/Lib/pprint.py b/Lib/pprint.py
index 346c70b..8e10e9d 100644
--- a/Lib/pprint.py
+++ b/Lib/pprint.py
@@ -4,7 +4,7 @@
 #  This is a simple little module I wrote to make life easier.  I didn't
 #  see anything quite like it in the library, though I may have overlooked
 #  something.  I wrote this when I was trying to read some heavily nested
-#  tuples with fairly non-descriptive content.  This is modelled very much
+#  tuples with fairly non-descriptive content.  This is modeled very much
 #  after Lisp/Scheme - style pretty-printing of lists.  If you find it
 #  useful, thank small children who sleep at night.
 
diff --git a/Lib/pre.py b/Lib/pre.py
index 602980a..3086bd4 100644
--- a/Lib/pre.py
+++ b/Lib/pre.py
@@ -77,7 +77,7 @@
     M  MULTILINE   "^" matches the beginning of lines as well as the string.
                    "$" matches the end of lines as well as the string.
     S  DOTALL      "." matches any character at all, including the newline.
-    X  VERBOSE     Ignore whitespaces and comments for nicer looking RE's.
+    X  VERBOSE     Ignore whitespace and comments for nicer looking RE's.
 
 This module also defines an exception 'error'.
 
diff --git a/Lib/profile.py b/Lib/profile.py
index 18fd65d..e31363a 100755
--- a/Lib/profile.py
+++ b/Lib/profile.py
@@ -98,9 +98,9 @@
 	       subfunctions
 	[ 2] = Cumulative time spent in this frame's function, including time in
 	       all subfunctions to this frame.
-	[-3] = Name of the function that corresonds to this frame.  
+	[-3] = Name of the function that corresponds to this frame.  
 	[-2] = Actual frame that we correspond to (used to sync exception handling)
-	[-1] = Our parent 6-tuple (corresonds to frame.f_back)
+	[-1] = Our parent 6-tuple (corresponds to frame.f_back)
 
 	Timing data for each function is stored as a 5-tuple in the dictionary
 	self.timings[].  The index is always the name stored in self.cur[4].
@@ -205,7 +205,7 @@
 		return
 
 
-	# SLOW generic dispatch rountine for timer returning lists of numbers
+	# SLOW generic dispatch routine for timer returning lists of numbers
 
 	def trace_dispatch_l(self, frame, event, arg):
 		t = self.get_time() - self.t
@@ -368,7 +368,7 @@
 	#******************************************************************
 	# The following calculates the overhead for using a profiler.  The
 	# problem is that it takes a fair amount of time for the profiler
-	# to stop the stopwatch (from the time it recieves an event).
+	# to stop the stopwatch (from the time it receives an event).
 	# Similarly, there is a delay from the time that the profiler
 	# re-starts the stopwatch before the user's code really gets to
 	# continue.  The following code tries to measure the difference on
diff --git a/Lib/pstats.py b/Lib/pstats.py
index 413351d..558962e 100644
--- a/Lib/pstats.py
+++ b/Lib/pstats.py
@@ -49,16 +49,16 @@
 	The big change from the previous Profiler (in terms of raw functionality)
 	is that an "add()" method has been provided to combine Stats from
 	several distinct profile runs.  Both the constructor and the add()
-	method now take arbitrarilly many file names as arguments.
+	method now take arbitrarily many file names as arguments.
 
-	All the print methods now take an argument that indicats how many lines
+	All the print methods now take an argument that indicates how many lines
 	to print.  If the arg is a floating point number between 0 and 1.0, then
-	it is taken as a decimal percentage of the availabel lines to be printed
+	it is taken as a decimal percentage of the available lines to be printed
 	(e.g., .1 means print 10% of all available lines).  If it is an integer,
 	it is taken to mean the number of lines of data that you wish to have
 	printed.
 
-	The sort_stats() method now processes some additionaly options (i.e., in
+	The sort_stats() method now processes some additional options (i.e., in
 	addition to the old -1, 0, 1, or 2).  It takes an arbitrary number of quoted
 	strings to select the sort order.  For example sort_stats('time', 'name')
 	sorts on the major key of "internal function time", and on the minor
@@ -165,7 +165,7 @@
 			
 
 
-	# list the tuple indicies and directions for sorting,
+	# list the tuple indices and directions for sorting,
 	# along with some printable description
 	sort_arg_dict_default = {\
 		  "calls"     : (((1,-1),              ), "call count"),\
@@ -447,7 +447,7 @@
 
 class TupleComp:
 	"""This class provides a generic function for comparing any two tuples.
-	Each instance records a list of tuple-indicies (from most significant
+	Each instance records a list of tuple-indices (from most significant
 	to least significant), and sort direction (ascending or decending) for
 	each tuple-index.  The compare functions can then be used as the function
 	argument to the system sort() function when a list of tuples need to be
diff --git a/Lib/rfc822.py b/Lib/rfc822.py
index bb17614..6473149 100644
--- a/Lib/rfc822.py
+++ b/Lib/rfc822.py
@@ -193,7 +193,7 @@
         
         You may override this method if your application wants
         to bend the rules, e.g. to strip trailing whitespace,
-        or to recognise MH template separators ('--------').
+        or to recognize MH template separators ('--------').
         For convenience (e.g. for code reading from sockets) a
         line consisting of \r\n also matches.                
         """
diff --git a/Lib/rlcompleter.py b/Lib/rlcompleter.py
index 7a248fe..8cd21ed 100644
--- a/Lib/rlcompleter.py
+++ b/Lib/rlcompleter.py
@@ -84,7 +84,7 @@
         """Compute matches when text contains a dot.
 
         Assuming the text is of the form NAME.NAME....[NAME], and is
-        evaluabable in the globals of __main__, it will be evaluated
+        evaluatable in the globals of __main__, it will be evaluated
         and its attributes (as revealed by dir()) are used as possible
         completions.  (For class instances, class members are are also
         considered.)
diff --git a/Lib/smtplib.py b/Lib/smtplib.py
index c7865ad..e5f0b03 100755
--- a/Lib/smtplib.py
+++ b/Lib/smtplib.py
@@ -88,7 +88,7 @@
 
 class SMTPRecipientsRefused(SMTPException):
     """All recipient addresses refused.
-    The errors for each recipient are accessable thru the attribute
+    The errors for each recipient are accessible through the attribute
     'recipients', which is a dictionary of exactly the same sort as 
     SMTP.sendmail() returns.  
     """
@@ -323,7 +323,7 @@
         if code<>250:
             return (code,msg)
         self.does_esmtp=1
-        #parse the ehlo responce -ddm
+        #parse the ehlo response -ddm
         resp=string.split(self.ehlo_resp,'\n')
         del resp[0]
         for each in resp:
diff --git a/Lib/sre_constants.py b/Lib/sre_constants.py
index ef32c32..c2cecdf 100644
--- a/Lib/sre_constants.py
+++ b/Lib/sre_constants.py
@@ -172,7 +172,7 @@
 # flags
 SRE_FLAG_TEMPLATE = 1 # template mode (disable backtracking)
 SRE_FLAG_IGNORECASE = 2 # case insensitive
-SRE_FLAG_LOCALE = 4 # honour system locale
+SRE_FLAG_LOCALE = 4 # honor system locale
 SRE_FLAG_MULTILINE = 8 # treat target as multiline string
 SRE_FLAG_DOTALL = 16 # treat target as a single string
 SRE_FLAG_UNICODE = 32 # use unicode locale
diff --git a/Lib/string.py b/Lib/string.py
index 21781e7..6570fef 100644
--- a/Lib/string.py
+++ b/Lib/string.py
@@ -116,7 +116,7 @@
     """join(list [,sep]) -> string
 
     Return a string composed of the words in list, with
-    intervening occurences of sep.  The default separator is a
+    intervening occurrences of sep.  The default separator is a
     single space.
 
     (joinfields and join are synonymous)
diff --git a/Lib/stringold.py b/Lib/stringold.py
index 8fa7dd4..c3e6f6f 100644
--- a/Lib/stringold.py
+++ b/Lib/stringold.py
@@ -118,7 +118,7 @@
     """join(list [,sep]) -> string
 
     Return a string composed of the words in list, with
-    intervening occurences of sep.  The default separator is a
+    intervening occurrences of sep.  The default separator is a
     single space.
 
     (joinfields and join are synonymous)
diff --git a/Lib/sunau.py b/Lib/sunau.py
index 5e8ac32..940cfd4 100644
--- a/Lib/sunau.py
+++ b/Lib/sunau.py
@@ -63,7 +63,7 @@
         tell()		-- return the current position
         close()		-- close the instance (make it unusable)
 The position returned by tell() and the position given to setpos()
-are compatible and have nothing to do with the actual postion in the
+are compatible and have nothing to do with the actual position in the
 file.
 The close() method is called automatically when the class instance
 is destroyed.
@@ -170,7 +170,7 @@
 		if self._hdr_size < 24:
 			raise Error, 'header size too small'
 		if self._hdr_size > 100:
-			raise Error, 'header size rediculously large'
+			raise Error, 'header size ridiculously large'
 		self._data_size = _read_u32(file)
 		if self._data_size != AUDIO_UNKNOWN_SIZE:
 			self._data_size = int(self._data_size)
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index dbaee75..e96ba81 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -42,7 +42,7 @@
          exclude=0, single=0, randomize=0):
     """Execute a test suite.
 
-    This also parses command-line options and modifies its behaviour
+    This also parses command-line options and modifies its behavior
     accordingly. 
 
     tests -- a list of strings containing test names (optional)
diff --git a/Lib/test/test_imageop.py b/Lib/test/test_imageop.py
index 63ab138..6b144c6 100755
--- a/Lib/test/test_imageop.py
+++ b/Lib/test/test_imageop.py
@@ -62,7 +62,7 @@
     image = imageop.grey2rgb(greyimage, width, height)
     
     # Convert a 8-bit deep greyscale image to a 1-bit deep image by
-    # tresholding all the pixels. The resulting image is tightly packed
+    # thresholding all the pixels. The resulting image is tightly packed
     # and is probably only useful as an argument to mono2grey. 
     if verbose:
         print 'grey2mono'
diff --git a/Lib/test/test_pty.py b/Lib/test/test_pty.py
index d6dd1d7..389d2a7 100644
--- a/Lib/test/test_pty.py
+++ b/Lib/test/test_pty.py
@@ -66,7 +66,7 @@
         pass
     except:
         # We don't want this error to propagate, escape the call to
-        # os._exit(), and cause very peculiar behaviour in the calling
+        # os._exit(), and cause very peculiar behavior in the calling
         # regrtest.py !
         debug("Some other error was raised.")
         os._exit(1)
diff --git a/Lib/test/test_winreg.py b/Lib/test/test_winreg.py
index 0eb798f..18ce7a7 100644
--- a/Lib/test/test_winreg.py
+++ b/Lib/test/test_winreg.py
@@ -58,7 +58,7 @@
 def ReadTestData(root_key):
     # Check we can get default value for this key.
     val = QueryValue(root_key, test_key_name)
-    assert val=="Default value", "Registry didnt give back the correct value"
+    assert val=="Default value", "Registry didn't give back the correct value"
 
     key = OpenKey(root_key, test_key_name)
     # Read the sub-keys
@@ -70,9 +70,9 @@
             data = EnumValue(sub_key, index)
         except EnvironmentError:
             break
-        assert data in test_data, "didnt read back the correct test data."
+        assert data in test_data, "Didn't read back the correct test data"
         index = index + 1
-    assert index==len(test_data), "Didnt read the correct number of items"
+    assert index==len(test_data), "Didn't read the correct number of items"
     # Check I can directly access each item
     for value_name, value_data, value_type in test_data:
         read_val, read_typ = QueryValueEx(sub_key, value_name)
diff --git a/Lib/toaiff.py b/Lib/toaiff.py
index 7fd0153..84a7786 100644
--- a/Lib/toaiff.py
+++ b/Lib/toaiff.py
@@ -76,7 +76,7 @@
 		temps.append(fname)
 		sts = uncompress.copy(filename, fname)
 		if sts:
-			raise error, filename + ': uncomress failed'
+			raise error, filename + ': uncompress failed'
 	else:
 		fname = filename
 	try:
diff --git a/Lib/traceback.py b/Lib/traceback.py
index 4675077..d219340 100644
--- a/Lib/traceback.py
+++ b/Lib/traceback.py
@@ -117,7 +117,7 @@
 	have the same meaning as the corresponding arguments to
 	print_exception().  The return value is a list of strings, each
 	ending in a newline and some containing internal newlines.  When 
-	these lines are contatenated and printed, exactly the same text is
+	these lines are concatenated and printed, exactly the same text is
 	printed as does print_exception()."""
 	if tb:
 		list = ['Traceback (most recent call last):\n']
diff --git a/Lib/urllib.py b/Lib/urllib.py
index 7a98164..ac44249 100644
--- a/Lib/urllib.py
+++ b/Lib/urllib.py
@@ -773,7 +773,7 @@
             # just return it
             return url
     host, basepath = splithost(basepath) # inherit host
-    basepath, basetag = splittag(basepath) # remove extraneuous cruft
+    basepath, basetag = splittag(basepath) # remove extraneous cruft
     basepath, basequery = splitquery(basepath) # idem
     if path[:1] != '/':
         # non-absolute path name
diff --git a/Lib/urllib2.py b/Lib/urllib2.py
index c4e5348..86fdc20 100644
--- a/Lib/urllib2.py
+++ b/Lib/urllib2.py
@@ -456,7 +456,7 @@
     http_error_301 = http_error_302
 
     inf_msg = "The HTTP server returned a redirect error that would" \
-              "lead to an inifinte loop.\n" \
+              "lead to an infinite loop.\n" \
               "The last 302 error message was:\n"
 
 class ProxyHandler(BaseHandler):
diff --git a/Lib/wave.py b/Lib/wave.py
index 8bb9ff7..60c0b98 100644
--- a/Lib/wave.py
+++ b/Lib/wave.py
@@ -30,7 +30,7 @@
       tell()          -- return the current position
       close()         -- close the instance (make it unusable)
 The position returned by tell() and the position given to setpos()
-are compatible and have nothing to do with the actual postion in the
+are compatible and have nothing to do with the actual position in the
 file.
 The close() method is called automatically when the class instance
 is destroyed.
diff --git a/Lib/xml/sax/xmlreader.py b/Lib/xml/sax/xmlreader.py
index 8bc33d8..84a8bbb 100644
--- a/Lib/xml/sax/xmlreader.py
+++ b/Lib/xml/sax/xmlreader.py
@@ -50,7 +50,7 @@
     def setLocale(self, locale):
         """Allow an application to set the locale for errors and warnings. 
    
-        SAX parsers are not required to provide localisation for errors
+        SAX parsers are not required to provide localization for errors
         and warnings; if they cannot support the requested locale,
         however, they must throw a SAX exception. Applications may
         request a locale change in the middle of a parse."""
diff --git a/Lib/xmllib.py b/Lib/xmllib.py
index bbd4b54..06b599f 100644
--- a/Lib/xmllib.py
+++ b/Lib/xmllib.py
@@ -143,7 +143,7 @@
         self.__seen_starttag = 0
         self.__use_namespaces = 0
         self.__namespaces = {'xml':None}   # xml is implicitly declared
-        # backward compatipibility hack: if elements not overridden,
+        # backward compatibility hack: if elements not overridden,
         # fill it in ourselves
         if self.elements is XMLParser.elements:
             self.__fixelements()
