diff --git a/Demo/tkinter/matt/menu-all-types-of-entries.py b/Demo/tkinter/matt/menu-all-types-of-entries.py
index f4afe4a..69a21ca 100644
--- a/Demo/tkinter/matt/menu-all-types-of-entries.py
+++ b/Demo/tkinter/matt/menu-all-types-of-entries.py
@@ -110,12 +110,12 @@
     Cascade_button.menu.choices = Menu(Cascade_button.menu)
 
     # ...and this is a menu that cascades from that.
-    Cascade_button.menu.choices.wierdones = Menu(Cascade_button.menu.choices)
+    Cascade_button.menu.choices.weirdones = Menu(Cascade_button.menu.choices)
 
     # then you define the menus from the deepest level on up.
-    Cascade_button.menu.choices.wierdones.add_command(label='avacado')
-    Cascade_button.menu.choices.wierdones.add_command(label='belgian endive')
-    Cascade_button.menu.choices.wierdones.add_command(label='beefaroni')
+    Cascade_button.menu.choices.weirdones.add_command(label='avacado')
+    Cascade_button.menu.choices.weirdones.add_command(label='belgian endive')
+    Cascade_button.menu.choices.weirdones.add_command(label='beefaroni')
 
     # definition of the menu one level up...
     Cascade_button.menu.choices.add_command(label='Chocolate')
@@ -125,8 +125,8 @@
     Cascade_button.menu.choices.add_command(label='Rocky Road')
     Cascade_button.menu.choices.add_command(label='BubbleGum')
     Cascade_button.menu.choices.add_cascade(
-        label='Wierd Flavors',
-        menu=Cascade_button.menu.choices.wierdones)
+        label='Weird Flavors',
+        menu=Cascade_button.menu.choices.weirdones)
 
     # and finally, the definition for the top level
     Cascade_button.menu.add_cascade(label='more choices',
diff --git a/Demo/tkinter/matt/menu-simple.py b/Demo/tkinter/matt/menu-simple.py
index 46b5364..b71c514 100644
--- a/Demo/tkinter/matt/menu-simple.py
+++ b/Demo/tkinter/matt/menu-simple.py
@@ -48,7 +48,7 @@
     File_button.menu = Menu(File_button)
 
     # add an item. The first param is a menu entry type,
-    # must be one of: "cascade", "checkbutton", "command", "radiobutton", "seperator"
+    # must be one of: "cascade", "checkbutton", "command", "radiobutton", "separator"
     # see menu-demo-2.py for examples of use
     File_button.menu.add_command(label='New...', underline=0,
                                  command=new_file)
diff --git a/Doc/howto/webservers.rst b/Doc/howto/webservers.rst
index 62c9124..4613c76 100644
--- a/Doc/howto/webservers.rst
+++ b/Doc/howto/webservers.rst
@@ -426,7 +426,7 @@
   user.  Typically this component is represented by the templates.
 * The *controller*.  This is the layer between the user and the model.  The
   controller reacts on user actions (like opening some specific URL) and tells
-  the model to modify the data if neccessary.
+  the model to modify the data if necessary.
 
 While one might think that MVC is a complex design pattern, in fact it is not.
 It is used in Python because it has turned out to be useful for creating clean,
@@ -435,9 +435,9 @@
 .. note::
 
    While not all Python frameworks explicitly support MVC, it is often trivial
-   to create a web site which uses the MVC pattern by seperating the data logic
+   to create a web site which uses the MVC pattern by separating the data logic
    (the model) from the user interaction logic (the controller) and the
-   templates (the view).  That's why it is important not to write unneccessary
+   templates (the view).  That's why it is important not to write unnecessary
    Python code in the templates -- it is against MVC and creates more chaos.
 
 .. seealso::
@@ -607,7 +607,7 @@
 -----------------------
 
 There is an incredible number of frameworks, so there is no way to describe them
-all.  It is not even neccessary, as most of these frameworks are nothing special
+all.  It is not even necessary, as most of these frameworks are nothing special
 and everything that can be done with these can also be done with one of the
 popular ones.
 
@@ -679,7 +679,7 @@
 Another framework that's already been mentioned is `Pylons`_.  Pylons is much
 like TurboGears with ab even stronger emphasis on flexibility, which is bought
 at the cost of being more difficult to use.  Nearly every component can be
-exchanged, which makes it neccessary to use the documentation of every single
+exchanged, which makes it necessary to use the documentation of every single
 component, because there are so many Pylons combinations possible that can
 satisfy every requirement.  Pylons builds upon `Paste
 <http://pythonpaste.org/>`_, an extensive set of tools which are handy for WSGI.
diff --git a/Doc/library/io.rst b/Doc/library/io.rst
index 204b204..fdacabb 100644
--- a/Doc/library/io.rst
+++ b/Doc/library/io.rst
@@ -14,7 +14,7 @@
 
 At the top of the I/O hierarchy is the abstract base class :class:`IOBase`.  It
 defines the basic interface to a stream.  Note, however, that there is no
-seperation between reading and writing to streams; implementations are allowed
+separation between reading and writing to streams; implementations are allowed
 to throw an :exc:`IOError` if they do not support a given operation.
 
 Extending :class:`IOBase` is :class:`RawIOBase` which deals simply with the
@@ -612,7 +612,7 @@
    is enabled.  With this enabled, on input, the lines endings ``'\n'``,
    ``'\r'``, or ``'\r\n'`` are translated to ``'\n'`` before being returned to
    the caller.  Conversely, on output, ``'\n'`` is translated to the system
-   default line seperator, :data:`os.linesep`.  If *newline* is any other of its
+   default line separator, :data:`os.linesep`.  If *newline* is any other of its
    legal values, that newline becomes the newline when the file is read and it
    is returned untranslated.  On output, ``'\n'`` is converted to the *newline*.
 
diff --git a/Doc/library/pty.rst b/Doc/library/pty.rst
index ec1c75f..6579ef0 100644
--- a/Doc/library/pty.rst
+++ b/Doc/library/pty.rst
@@ -13,7 +13,7 @@
 concept: starting another process and being able to write to and read from its
 controlling terminal programmatically.
 
-Because pseudo-terminal handling is highly platform dependant, there is code to
+Because pseudo-terminal handling is highly platform dependent, there is code to
 do it only for SGI and Linux. (The Linux code is supposed to work on other
 platforms, but hasn't been tested yet.)
 
diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst
index 9327f98..f4eafc4 100644
--- a/Doc/library/subprocess.rst
+++ b/Doc/library/subprocess.rst
@@ -181,9 +181,9 @@
    To capture standard error in the result, use stderr=subprocess.STDOUT.
 
       >>> subprocess.check_output(
-              ["/bin/sh", "-c", "ls non_existant_file ; exit 0"],
+              ["/bin/sh", "-c", "ls non_existent_file ; exit 0"],
               stderr=subprocess.STDOUT)
-      'ls: non_existant_file: No such file or directory\n'
+      'ls: non_existent_file: No such file or directory\n'
 
    .. versionadded:: 2.7
 
diff --git a/Doc/tutorial/classes.rst b/Doc/tutorial/classes.rst
index 48c7bcb..939126e 100644
--- a/Doc/tutorial/classes.rst
+++ b/Doc/tutorial/classes.rst
@@ -470,7 +470,7 @@
 only works if the base class is defined or imported directly in the global
 scope.)
 
-Python has two builtin functions that work with inheritance:
+Python has two built-in functions that work with inheritance:
 
 * Use :func:`isinstance` to check an object's type: ``isinstance(obj, int)``
   will be ``True`` only if ``obj.__class__`` is :class:`int` or some class
diff --git a/Doc/tutorial/datastructures.rst b/Doc/tutorial/datastructures.rst
index 2cc1e60..0b7d7bc 100644
--- a/Doc/tutorial/datastructures.rst
+++ b/Doc/tutorial/datastructures.rst
@@ -308,7 +308,7 @@
             print row[i],
         print
 
-In real world, you should prefer builtin functions to complex flow statements.
+In real world, you should prefer built-in functions to complex flow statements.
 The :func:`zip` function would do a great job for this use case::
 
     >>> zip(*mat)
diff --git a/Doc/tutorial/floatingpoint.rst b/Doc/tutorial/floatingpoint.rst
index cb3009b..29c7a66 100644
--- a/Doc/tutorial/floatingpoint.rst
+++ b/Doc/tutorial/floatingpoint.rst
@@ -65,7 +65,7 @@
    >>> 0.1
    0.1000000000000000055511151231257827021181583404541015625
 
-instead!  The Python prompt uses the builtin :func:`repr` function to obtain a
+instead!  The Python prompt uses the built-in :func:`repr` function to obtain a
 string version of everything it displays.  For floats, ``repr(float)`` rounds
 the true decimal value to 17 significant digits, giving ::
 
@@ -81,7 +81,7 @@
 (although some languages may not *display* the difference by default, or in all
 output modes).
 
-Python's builtin :func:`str` function produces only 12 significant digits, and
+Python's built-in :func:`str` function produces only 12 significant digits, and
 you may wish to use that instead.  It's unusual for ``eval(str(x))`` to
 reproduce *x*, but the output may be more pleasant to look at::
 
diff --git a/Doc/tutorial/inputoutput.rst b/Doc/tutorial/inputoutput.rst
index 34d984a..b1bc522 100644
--- a/Doc/tutorial/inputoutput.rst
+++ b/Doc/tutorial/inputoutput.rst
@@ -187,7 +187,7 @@
 This is particularly useful in combination with the new built-in :func:`vars`
 function, which returns a dictionary containing all local variables.
 
-For a complete overview of string formating with :meth:`str.format`, see
+For a complete overview of string formatting with :meth:`str.format`, see
 :ref:`formatstrings`.
 
 
diff --git a/Doc/tutorial/stdlib.rst b/Doc/tutorial/stdlib.rst
index 8cd5d0a..c0c7da3 100644
--- a/Doc/tutorial/stdlib.rst
+++ b/Doc/tutorial/stdlib.rst
@@ -21,12 +21,12 @@
    >>> os.chdir('/server/accesslogs')
 
 Be sure to use the ``import os`` style instead of ``from os import *``.  This
-will keep :func:`os.open` from shadowing the builtin :func:`open` function which
+will keep :func:`os.open` from shadowing the built-in :func:`open` function which
 operates much differently.
 
 .. index:: builtin: help
 
-The builtin :func:`dir` and :func:`help` functions are useful as interactive
+The built-in :func:`dir` and :func:`help` functions are useful as interactive
 aids for working with large modules like :mod:`os`::
 
    >>> import os
diff --git a/Lib/bsddb/test/test_basics.py b/Lib/bsddb/test/test_basics.py
index 52de869..0be76db 100644
--- a/Lib/bsddb/test/test_basics.py
+++ b/Lib/bsddb/test/test_basics.py
@@ -131,7 +131,7 @@
 
         self.assertEqual(d.get('0321'), '0321-0321-0321-0321-0321')
 
-        # By default non-existant keys return None...
+        # By default non-existent keys return None...
         self.assertEqual(d.get('abcd'), None)
 
         # ...but they raise exceptions in other situations.  Call
diff --git a/Lib/bsddb/test/test_compat.py b/Lib/bsddb/test/test_compat.py
index a3b4eef..0b0fa70 100644
--- a/Lib/bsddb/test/test_compat.py
+++ b/Lib/bsddb/test/test_compat.py
@@ -133,7 +133,7 @@
             except KeyError:
                 pass
             else:
-                self.fail("set_location on non-existant key did not raise KeyError")
+                self.fail("set_location on non-existent key did not raise KeyError")
 
         f.sync()
         f.close()
diff --git a/Lib/bsddb/test/test_recno.py b/Lib/bsddb/test/test_recno.py
index b5df68b..895be8a 100644
--- a/Lib/bsddb/test/test_recno.py
+++ b/Lib/bsddb/test/test_recno.py
@@ -150,7 +150,7 @@
         if verbose:
             print rec
 
-        # test that non-existant key lookups work (and that
+        # test that non-existent key lookups work (and that
         # DBC_set_range doesn't have a memleak under valgrind)
         rec = c.set_range(999999)
         self.assertEqual(rec, None)
diff --git a/Lib/difflib.py b/Lib/difflib.py
index 7498e6f..679bd2a 100644
--- a/Lib/difflib.py
+++ b/Lib/difflib.py
@@ -1329,7 +1329,7 @@
     (from line tuple, to line tuple, boolean flag)
 
     from/to line tuple -- (line num, line text)
-        line num -- integer or None (to indicate a context seperation)
+        line num -- integer or None (to indicate a context separation)
         line text -- original line text with following markers inserted:
             '\0+' -- marks start of added text
             '\0-' -- marks start of deleted text
diff --git a/Lib/distutils/tests/test_core.py b/Lib/distutils/tests/test_core.py
index 55d2d5d..e481e8d 100644
--- a/Lib/distutils/tests/test_core.py
+++ b/Lib/distutils/tests/test_core.py
@@ -57,7 +57,7 @@
 
     def test_run_setup_uses_current_dir(self):
         # This tests that the setup script is run with the current directory
-        # as it's own current directory; this was temporarily broken by a
+        # as its own current directory; this was temporarily broken by a
         # previous patch when TESTFN did not use the current directory.
         sys.stdout = StringIO.StringIO()
         cwd = os.getcwd()
diff --git a/Lib/email/message.py b/Lib/email/message.py
index e44217b..23cedf6 100644
--- a/Lib/email/message.py
+++ b/Lib/email/message.py
@@ -20,7 +20,7 @@
 SEMISPACE = '; '
 
 # Regular expression that matches `special' characters in parameters, the
-# existance of which force quoting of the parameter value.
+# existence of which force quoting of the parameter value.
 tspecials = re.compile(r'[ \(\)<>@,;:\\"/\[\]\?=]')
 
 
diff --git a/Lib/idlelib/AutoComplete.py b/Lib/idlelib/AutoComplete.py
index 1c74d2e..d55b799 100644
--- a/Lib/idlelib/AutoComplete.py
+++ b/Lib/idlelib/AutoComplete.py
@@ -67,7 +67,7 @@
 
     def try_open_completions_event(self, event):
         """Happens when it would be nice to open a completion list, but not
-        really neccesary, for example after an dot, so function
+        really necessary, for example after an dot, so function
         calls won't be made.
         """
         lastchar = self.text.get("insert-1c")
@@ -79,7 +79,7 @@
                                          COMPLETE_FILES)
 
     def autocomplete_event(self, event):
-        """Happens when the user wants to complete his word, and if neccesary,
+        """Happens when the user wants to complete his word, and if necessary,
         open a completion list after that (if there is more than one
         completion)
         """
diff --git a/Lib/idlelib/CallTips.py b/Lib/idlelib/CallTips.py
index 7bcc1e2..bd51b7f 100644
--- a/Lib/idlelib/CallTips.py
+++ b/Lib/idlelib/CallTips.py
@@ -51,7 +51,7 @@
 
     def try_open_calltip_event(self, event):
         """Happens when it would be nice to open a CallTip, but not really
-        neccesary, for example after an opening bracket, so function calls
+        necessary, for example after an opening bracket, so function calls
         won't be made.
         """
         self.open_calltip(False)
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index 27db970..965a8c1 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -300,7 +300,7 @@
   window raising, especially in the Windows menu and in the debugger.
   IDLEfork 763524.
 
-- If user passes a non-existant filename on the commandline, just
+- If user passes a non-existent filename on the commandline, just
   open a new file, don't raise a dialog.  IDLEfork 854928.
 
 
diff --git a/Lib/io.py b/Lib/io.py
index 320a4b9..61206c4 100644
--- a/Lib/io.py
+++ b/Lib/io.py
@@ -4,7 +4,7 @@
 
 At the top of the I/O hierarchy is the abstract base class IOBase. It
 defines the basic interface to a stream. Note, however, that there is no
-seperation between reading and writing to streams; implementations are
+separation between reading and writing to streams; implementations are
 allowed to throw an IOError if they do not support a given operation.
 
 Extending IOBase is RawIOBase which deals simply with the reading and
@@ -1374,7 +1374,7 @@
     enabled.  With this enabled, on input, the lines endings '\n', '\r',
     or '\r\n' are translated to '\n' before being returned to the
     caller. Conversely, on output, '\n' is translated to the system
-    default line seperator, os.linesep. If newline is any other of its
+    default line separator, os.linesep. If newline is any other of its
     legal values, that newline becomes the newline when the file is read
     and it is returned untranslated. On output, '\n' is converted to the
     newline.
diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py
index fded249..53249e7 100644
--- a/Lib/lib-tk/Tkinter.py
+++ b/Lib/lib-tk/Tkinter.py
@@ -3316,7 +3316,7 @@
         """Return the color (red, green, blue) of the pixel at X,Y."""
         return self.tk.call(self.name, 'get', x, y)
     def put(self, data, to=None):
-        """Put row formated colors to image starting from
+        """Put row formatted colors to image starting from
         position TO, e.g. image.put("{red green} {blue yellow}", to=(4,6))"""
         args = (self.name, 'put', data)
         if to:
diff --git a/Lib/lib-tk/test/test_ttk/test_style.py b/Lib/lib-tk/test/test_ttk/test_style.py
index 6754598..ab3554d 100644
--- a/Lib/lib-tk/test/test_ttk/test_style.py
+++ b/Lib/lib-tk/test/test_ttk/test_style.py
@@ -61,7 +61,7 @@
 
         # correct layout, but "option" doesn't exist as option
         self.failUnlessRaises(Tkinter.TclError, style.layout, 'Treeview',
-            [('name', {'option': 'inexistant'})])
+            [('name', {'option': 'inexistent'})])
 
 
     def test_theme_use(self):
diff --git a/Lib/lib-tk/test/test_ttk/test_widgets.py b/Lib/lib-tk/test/test_ttk/test_widgets.py
index 913ccb4..4f6f44d 100644
--- a/Lib/lib-tk/test/test_ttk/test_widgets.py
+++ b/Lib/lib-tk/test/test_ttk/test_widgets.py
@@ -861,9 +861,9 @@
 
         # bad values
         self.failUnlessRaises(Tkinter.TclError,
-            self.tv.reattach, 'nonexistant', '', 'end')
+            self.tv.reattach, 'nonexistent', '', 'end')
         self.failUnlessRaises(Tkinter.TclError,
-            self.tv.detach, 'nonexistant')
+            self.tv.detach, 'nonexistent')
         self.failUnlessRaises(Tkinter.TclError,
             self.tv.reattach, item2, 'otherparent', 'end')
         self.failUnlessRaises(Tkinter.TclError,
@@ -897,7 +897,7 @@
         self.tv.delete(item1)
         self.failUnlessEqual(self.tv.focus(), '')
 
-        # try focusing inexistant item
+        # try focusing inexistent item
         self.failUnlessRaises(Tkinter.TclError, self.tv.focus, 'hi')
 
 
@@ -1064,11 +1064,11 @@
         self.failUnlessEqual(self.tv.item(item, values=None), (123, 'a'))
         self.failUnlessEqual(self.tv.set(item), {'B': 123})
 
-        # inexistant column
+        # inexistent column
         self.failUnlessRaises(Tkinter.TclError, self.tv.set, item, 'A')
         self.failUnlessRaises(Tkinter.TclError, self.tv.set, item, 'A', 'b')
 
-        # inexistant item
+        # inexistent item
         self.failUnlessRaises(Tkinter.TclError, self.tv.set, 'notme')
 
 
diff --git a/Lib/lib-tk/turtle.py b/Lib/lib-tk/turtle.py
index 7bce6f6..a3dc852 100644
--- a/Lib/lib-tk/turtle.py
+++ b/Lib/lib-tk/turtle.py
@@ -2794,7 +2794,7 @@
 
     def _drawturtle(self):
         """Manages the correct rendering of the turtle with respect to
-        its shape, resizemode, strech and tilt etc."""
+        its shape, resizemode, stretch and tilt etc."""
         screen = self.screen
         shape = screen._shapes[self.turtle.shapeIndex]
         ttype = shape._type
diff --git a/Lib/optparse.py b/Lib/optparse.py
index 16a0f19..1107d9e 100644
--- a/Lib/optparse.py
+++ b/Lib/optparse.py
@@ -1574,7 +1574,7 @@
         """print_usage(file : file = stdout)
 
         Print the usage message for the current program (self.usage) to
-        'file' (default stdout).  Any occurence of the string "%prog" in
+        'file' (default stdout).  Any occurrence of the string "%prog" in
         self.usage is replaced with the name of the current program
         (basename of sys.argv[0]).  Does nothing if self.usage is empty
         or not defined.
@@ -1592,7 +1592,7 @@
         """print_version(file : file = stdout)
 
         Print the version message for this program (self.version) to
-        'file' (default stdout).  As with print_usage(), any occurence
+        'file' (default stdout).  As with print_usage(), any occurrence
         of "%prog" in self.version is replaced by the current program's
         name.  Does nothing if self.version is empty or undefined.
         """
diff --git a/Lib/plat-mac/bundlebuilder.py b/Lib/plat-mac/bundlebuilder.py
index 8f59969..61cadba 100755
--- a/Lib/plat-mac/bundlebuilder.py
+++ b/Lib/plat-mac/bundlebuilder.py
@@ -669,7 +669,7 @@
                 if self.use_zipimport:
                     if name != "zlib":
                         # neatly pack all extension modules in a subdirectory,
-                        # except zlib, since it's neccesary for bootstrapping.
+                        # except zlib, since it's necessary for bootstrapping.
                         dstpath = pathjoin("ExtensionModules", dstpath)
                     # Python modules are stored in a Zip archive, but put
                     # extensions in Contents/Resources/. Add a tiny "loader"
diff --git a/Lib/smtpd.py b/Lib/smtpd.py
index e09774f..3992d7b 100755
--- a/Lib/smtpd.py
+++ b/Lib/smtpd.py
@@ -420,7 +420,7 @@
         s = StringIO(data)
         msg = Message.Message(s)
         # These headers are required for the proper execution of Mailman.  All
-        # MTAs in existance seem to add these if the original message doesn't
+        # MTAs in existence seem to add these if the original message doesn't
         # have them.
         if not msg.getheader('from'):
             msg['From'] = mailfrom
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index d91fbee..98399b8 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -494,9 +494,9 @@
     To capture standard error in the result, use stderr=subprocess.STDOUT.
 
     >>> check_output(["/bin/sh", "-c",
-                      "ls -l non_existant_file ; exit 0"],
+                      "ls -l non_existent_file ; exit 0"],
                      stderr=subprocess.STDOUT)
-    'ls: non_existant_file: No such file or directory\n'
+    'ls: non_existent_file: No such file or directory\n'
     """
     if 'stdout' in kwargs:
         raise ValueError('stdout argument not allowed, it will be overridden.')
diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index b678185..9191a82 100644
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -1772,7 +1772,7 @@
     def getmember(self, name):
         """Return a TarInfo object for member `name'. If `name' can not be
            found in the archive, KeyError is raised. If a member occurs more
-           than once in the archive, its last occurence is assumed to be the
+           than once in the archive, its last occurrence is assumed to be the
            most up-to-date version.
         """
         tarinfo = self._getmember(name)
diff --git a/Lib/test/test_calendar.py b/Lib/test/test_calendar.py
index 75eaebd..fad517c 100644
--- a/Lib/test/test_calendar.py
+++ b/Lib/test/test_calendar.py
@@ -170,7 +170,7 @@
 
 class OutputTestCase(unittest.TestCase):
     def normalize_calendar(self, s):
-        # Filters out locale dependant strings
+        # Filters out locale dependent strings
         def neitherspacenordigit(c):
             return not c.isspace() and not c.isdigit()
 
diff --git a/Lib/test/test_cfgparser.py b/Lib/test/test_cfgparser.py
index a8b5d7c..600d2dc 100644
--- a/Lib/test/test_cfgparser.py
+++ b/Lib/test/test_cfgparser.py
@@ -87,11 +87,11 @@
         # Make sure the right things happen for remove_option();
         # added to include check for SourceForge bug #123324:
         self.failUnless(cf.remove_option('Foo Bar', 'foo'),
-                        "remove_option() failed to report existance of option")
+                        "remove_option() failed to report existence of option")
         self.failIf(cf.has_option('Foo Bar', 'foo'),
                     "remove_option() failed to remove option")
         self.failIf(cf.remove_option('Foo Bar', 'foo'),
-                    "remove_option() failed to report non-existance of option"
+                    "remove_option() failed to report non-existence of option"
                     " that was removed")
 
         self.assertRaises(ConfigParser.NoSectionError,
@@ -264,7 +264,7 @@
         file1 = test_support.findfile("cfgparser.1")
         # check when we pass a mix of readable and non-readable files:
         cf = self.newconfig()
-        parsed_files = cf.read([file1, "nonexistant-file"])
+        parsed_files = cf.read([file1, "nonexistent-file"])
         self.assertEqual(parsed_files, [file1])
         self.assertEqual(cf.get("Foo Bar", "foo"), "newbar")
         # check when we pass only a filename:
@@ -274,7 +274,7 @@
         self.assertEqual(cf.get("Foo Bar", "foo"), "newbar")
         # check when we pass only missing files:
         cf = self.newconfig()
-        parsed_files = cf.read(["nonexistant-file"])
+        parsed_files = cf.read(["nonexistent-file"])
         self.assertEqual(parsed_files, [])
         # check when we pass no files:
         cf = self.newconfig()
diff --git a/Lib/test/test_codeccallbacks.py b/Lib/test/test_codeccallbacks.py
index db0bc96..dfd12e5 100644
--- a/Lib/test/test_codeccallbacks.py
+++ b/Lib/test/test_codeccallbacks.py
@@ -109,7 +109,7 @@
         # useful that the error handler is not called for every single
         # unencodable character, but for a complete sequence of
         # unencodable characters, otherwise we would output many
-        # unneccessary escape sequences.
+        # unnecessary escape sequences.
 
         def uninamereplace(exc):
             if not isinstance(exc, UnicodeEncodeError):
diff --git a/Lib/test/test_cookielib.py b/Lib/test/test_cookielib.py
index 66f9a83..93d62f7 100644
--- a/Lib/test/test_cookielib.py
+++ b/Lib/test/test_cookielib.py
@@ -1714,7 +1714,7 @@
             counter[key] = counter[key] + 1
 
         self.assert_(not (
-            # a permanent cookie got lost accidently
+            # a permanent cookie got lost accidentally
             counter["perm_after"] != counter["perm_before"] or
             # a session cookie hasn't been cleared
             counter["session_after"] != 0 or
diff --git a/Lib/test/test_descrtut.py b/Lib/test/test_descrtut.py
index 8088819..c455e6b 100644
--- a/Lib/test/test_descrtut.py
+++ b/Lib/test/test_descrtut.py
@@ -54,7 +54,7 @@
     {1: 3.25}
     >>> print a[1]                      # show the new item
     3.25
-    >>> print a[0]                      # a non-existant item
+    >>> print a[0]                      # a non-existent item
     0.0
     >>> a.merge({1:100, 2:200})         # use a dict method
     >>> print sortdict(a)               # show the result
diff --git a/Lib/test/test_funcattrs.py b/Lib/test/test_funcattrs.py
index e245d59..f374c8d 100644
--- a/Lib/test/test_funcattrs.py
+++ b/Lib/test/test_funcattrs.py
@@ -196,7 +196,7 @@
 
     def test_unset_attr(self):
         for func in [self.b, self.f.a, self.fi.a]:
-            try:  func.non_existant_attr
+            try:  func.non_existent_attr
             except AttributeError: pass
             else: self.fail("using unknown attributes should raise "
                             "AttributeError")
diff --git a/Lib/test/test_urllib2net.py b/Lib/test/test_urllib2net.py
index 3d01b31..b4e6ae5 100644
--- a/Lib/test/test_urllib2net.py
+++ b/Lib/test/test_urllib2net.py
@@ -104,7 +104,7 @@
     def test_ftp(self):
         urls = [
             'ftp://ftp.kernel.org/pub/linux/kernel/README',
-            'ftp://ftp.kernel.org/pub/linux/kernel/non-existant-file',
+            'ftp://ftp.kernel.org/pub/linux/kernel/non-existent-file',
             #'ftp://ftp.kernel.org/pub/leenox/kernel/test',
             'ftp://gatekeeper.research.compaq.com/pub/DEC/SRC'
                 '/research-reports/00README-Legal-Rules-Regs',
diff --git a/Lib/wsgiref/headers.py b/Lib/wsgiref/headers.py
index 3169acf..02fd6a0 100644
--- a/Lib/wsgiref/headers.py
+++ b/Lib/wsgiref/headers.py
@@ -8,7 +8,7 @@
 from types import ListType, TupleType
 
 # Regular expression that matches `special' characters in parameters, the
-# existance of which force quoting of the parameter value.
+# existence of which force quoting of the parameter value.
 import re
 tspecials = re.compile(r'[ \(\)<>@,;:\\"/\[\]\?=]')
 
diff --git a/Misc/AIX-NOTES b/Misc/AIX-NOTES
index 613d501..d928f53 100644
--- a/Misc/AIX-NOTES
+++ b/Misc/AIX-NOTES
@@ -22,7 +22,7 @@
 (2) Stefan Esser (se@MI.Uni-Koeln.DE), in work done to compile Python
     1.0.0 on AIX 3.2.4, reports that AIX compilers don't like the LANG
     environment varaiable set to European locales.  This makes the compiler
-    generate floating point constants using "," as the decimal seperator,
+    generate floating point constants using "," as the decimal separator,
     which the assembler doesn't understand (or perhaps it is the other way
     around, with the assembler expecting, but not getting "," in float
     numbers).  "LANG=C; export LANG" solves the problem, as does
diff --git a/Misc/HISTORY b/Misc/HISTORY
index ef33b26..14f283d 100644
--- a/Misc/HISTORY
+++ b/Misc/HISTORY
@@ -9862,7 +9862,7 @@
 	Also (quite separately, but strangely related to the philosophical
 	issue above) fix abspath() so that if win32api exists, it doesn't fail
 	when the path doesn't actually exist -- if GetFullPathName() fails,
-	fall back on the old strategy (join with getcwd() if neccessary, and
+	fall back on the old strategy (join with getcwd() if necessary, and
 	then use normpath()).
 
 	* configure.in, configure, config.h.in, acconfig.h:
diff --git a/Misc/NEWS b/Misc/NEWS
index ab5f3ed..eb71173 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -911,7 +911,7 @@
 - Issue #3575: Incremental decoder's decode function now takes bytearray
   by using 's*' instead of 't#'.
 
-- Issue #2222: Fixed reference leak when occured os.rename()
+- Issue #2222: Fixed reference leak when occurred os.rename()
   fails unicode conversion on 2nd parameter. (windows only)
 
 - Issue 2464. urllib2 now supports a malformation in the URL received
diff --git a/Misc/cheatsheet b/Misc/cheatsheet
index cb0702a..df69f24 100644
--- a/Misc/cheatsheet
+++ b/Misc/cheatsheet
@@ -481,7 +481,7 @@
 s.isupper()       return True if all characters in s are uppercase, False  (6)
                   otherwise.
 s.join(seq)       return a concatenation of the strings in the sequence
-                  seq, seperated by 's's.
+                  seq, separated by 's's.
 s.ljust(width)    return s left justified in a string of length width.    (1),
                                                                            (8)
 s.lower()         return a copy of s converted to lowercase.
@@ -1556,10 +1556,10 @@
 asctime(
 timeTuple),
 strftime(
-format,       return a formated string representing time.
+format,       return a formatted string representing time.
 timeTuple)
 mktime(tuple) inverse of localtime(). Return a float.
-strptime(     parse a formated string representing time, return tuple as in
+strptime(     parse a formatted string representing time, return tuple as in
 string[,      gmtime().
 format])
 sleep(secs)   Suspend execution for <secs> seconds. <secs> can be a float.
diff --git a/Modules/_ctypes/libffi/aclocal.m4 b/Modules/_ctypes/libffi/aclocal.m4
index e927928..6b38324 100644
--- a/Modules/_ctypes/libffi/aclocal.m4
+++ b/Modules/_ctypes/libffi/aclocal.m4
@@ -1155,7 +1155,7 @@
    test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
    test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
 
-  # We can hardcode non-existant directories.
+  # We can hardcode non-existent directories.
   if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
      # If the only mechanism to avoid hardcoding is shlibpath_var, we
      # have to relink, otherwise we might link with an installed library
diff --git a/Modules/_ctypes/libffi/configure b/Modules/_ctypes/libffi/configure
index aaa7914..de0b9ac 100755
--- a/Modules/_ctypes/libffi/configure
+++ b/Modules/_ctypes/libffi/configure
@@ -9546,7 +9546,7 @@
    test -n "$runpath_var" || \
    test "X$hardcode_automatic" = "Xyes" ; then
 
-  # We can hardcode non-existant directories.
+  # We can hardcode non-existent directories.
   if test "$hardcode_direct" != no &&
      # If the only mechanism to avoid hardcoding is shlibpath_var, we
      # have to relink, otherwise we might link with an installed library
@@ -13514,7 +13514,7 @@
    test -n "$runpath_var_CXX" || \
    test "X$hardcode_automatic_CXX" = "Xyes" ; then
 
-  # We can hardcode non-existant directories.
+  # We can hardcode non-existent directories.
   if test "$hardcode_direct_CXX" != no &&
      # If the only mechanism to avoid hardcoding is shlibpath_var, we
      # have to relink, otherwise we might link with an installed library
@@ -16117,7 +16117,7 @@
    test -n "$runpath_var_F77" || \
    test "X$hardcode_automatic_F77" = "Xyes" ; then
 
-  # We can hardcode non-existant directories.
+  # We can hardcode non-existent directories.
   if test "$hardcode_direct_F77" != no &&
      # If the only mechanism to avoid hardcoding is shlibpath_var, we
      # have to relink, otherwise we might link with an installed library
@@ -18720,7 +18720,7 @@
    test -n "$runpath_var_GCJ" || \
    test "X$hardcode_automatic_GCJ" = "Xyes" ; then
 
-  # We can hardcode non-existant directories.
+  # We can hardcode non-existent directories.
   if test "$hardcode_direct_GCJ" != no &&
      # If the only mechanism to avoid hardcoding is shlibpath_var, we
      # have to relink, otherwise we might link with an installed library
diff --git a/Modules/_ctypes/libffi/src/x86/ffi64.c b/Modules/_ctypes/libffi/src/x86/ffi64.c
index 2896ae4..fa99255 100644
--- a/Modules/_ctypes/libffi/src/x86/ffi64.c
+++ b/Modules/_ctypes/libffi/src/x86/ffi64.c
@@ -52,7 +52,7 @@
 /* Register class used for passing given 64bit part of the argument.
    These represent classes as documented by the PS ABI, with the exception
    of SSESF, SSEDF classes, that are basically SSE class, just gcc will
-   use SF or DFmode move instead of DImode to avoid reformating penalties.
+   use SF or DFmode move instead of DImode to avoid reformatting penalties.
 
    Similary we play games with INTEGERSI_CLASS to use cheaper SImode moves
    whenever possible (upper half does contain padding).  */
diff --git a/Modules/_ctypes/libffi_osx/x86/x86-ffi64.c b/Modules/_ctypes/libffi_osx/x86/x86-ffi64.c
index ac37fb7..a262ed0 100644
--- a/Modules/_ctypes/libffi_osx/x86/x86-ffi64.c
+++ b/Modules/_ctypes/libffi_osx/x86/x86-ffi64.c
@@ -55,7 +55,7 @@
 /*	Register class used for passing given 64bit part of the argument.
 	These represent classes as documented by the PS ABI, with the exception
 	of SSESF, SSEDF classes, that are basically SSE class, just gcc will
-	use SF or DFmode move instead of DImode to avoid reformating penalties.
+	use SF or DFmode move instead of DImode to avoid reformatting penalties.
 
 	Similary we play games with INTEGERSI_CLASS to use cheaper SImode moves
 	whenever possible (upper half does contain padding).  */
diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c
index 9d6952e..8247031 100644
--- a/Modules/_sqlite/connection.c
+++ b/Modules/_sqlite/connection.c
@@ -845,7 +845,7 @@
             PyErr_Clear();
         }
 
-        /* abort query if error occured */
+        /* abort query if error occurred */
         rc = 1; 
     } else {
         rc = (int)PyObject_IsTrue(ret);
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index bcd82aa..6fad71c 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -935,7 +935,7 @@
 PyDoc_STRVAR(count_doc,
 "count(x)\n\
 \n\
-Return number of occurences of x in the array.");
+Return number of occurrences of x in the array.");
 
 static PyObject *
 array_index(arrayobject *self, PyObject *v)
@@ -959,7 +959,7 @@
 PyDoc_STRVAR(index_doc,
 "index(x)\n\
 \n\
-Return index of first occurence of x in the array.");
+Return index of first occurrence of x in the array.");
 
 static int
 array_contains(arrayobject *self, PyObject *v)
@@ -1001,7 +1001,7 @@
 PyDoc_STRVAR(remove_doc,
 "remove(x)\n\
 \n\
-Remove the first occurence of x in the array.");
+Remove the first occurrence of x in the array.");
 
 static PyObject *
 array_pop(arrayobject *self, PyObject *args)
@@ -2055,16 +2055,16 @@
 append() -- append a new item to the end of the array\n\
 buffer_info() -- return information giving the current memory info\n\
 byteswap() -- byteswap all the items of the array\n\
-count() -- return number of occurences of an object\n\
+count() -- return number of occurrences of an object\n\
 extend() -- extend array by appending multiple elements from an iterable\n\
 fromfile() -- read items from a file object\n\
 fromlist() -- append items from the list\n\
 fromstring() -- append items from the string\n\
-index() -- return index of first occurence of an object\n\
+index() -- return index of first occurrence of an object\n\
 insert() -- insert a new item into the array at a provided position\n\
 pop() -- remove and return item (default last)\n\
 read() -- DEPRECATED, use fromfile()\n\
-remove() -- remove first occurence of an object\n\
+remove() -- remove first occurrence of an object\n\
 reverse() -- reverse the order of the items in the array\n\
 tofile() -- write all items to a file object\n\
 tolist() -- return the array converted to an ordinary list\n\
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 4f27cd1..1e5e3e5 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -2484,7 +2484,7 @@
 static PyObject *
 posix__getfullpathname(PyObject *self, PyObject *args)
 {
-	/* assume encoded strings wont more than double no of chars */
+	/* assume encoded strings won't more than double no of chars */
 	char inbuf[MAX_PATH*2];
 	char *inbufp = inbuf;
 	Py_ssize_t insize = sizeof(inbuf);
@@ -5113,7 +5113,7 @@
 			   "Your program accessed mem currently in use at xxx"
 			   and a hopeful warning about the stability of your
 			   system.
-			   Cost is Ctrl+C wont kill children, but anyone
+			   Cost is Ctrl+C won't kill children, but anyone
 			   who cares can have a go!
 			*/
 			dwProcessFlags |= CREATE_NEW_CONSOLE;
diff --git a/Objects/abstract.c b/Objects/abstract.c
index ee744de..c67581e 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -2258,7 +2258,7 @@
 
 /* Iterate over seq.  Result depends on the operation:
    PY_ITERSEARCH_COUNT:  -1 if error, else # of times obj appears in seq.
-   PY_ITERSEARCH_INDEX:  0-based index of first occurence of obj in seq;
+   PY_ITERSEARCH_INDEX:  0-based index of first occurrence of obj in seq;
    	set ValueError and return -1 if none found; also return -1 on error.
    Py_ITERSEARCH_CONTAINS:  return 1 if obj in seq, else 0; -1 on error.
 */
diff --git a/Objects/listsort.txt b/Objects/listsort.txt
index 9226984..31a5445 100644
--- a/Objects/listsort.txt
+++ b/Objects/listsort.txt
@@ -309,7 +309,7 @@
     A:10000  B:20000  C:10000
 
 we dare not merge A with C first, because if A, B and C happen to contain
-a common element, it would get out of order wrt its occurence(s) in B.  The
+a common element, it would get out of order wrt its occurrence(s) in B.  The
 merging must be done as (A+B)+C or A+(B+C) instead.
 
 So merging is always done on two consecutive runs at a time, and in-place,
diff --git a/Objects/object.c b/Objects/object.c
index 5dff385..69fb6de 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -1964,7 +1964,7 @@
 none_dealloc(PyObject* ignore)
 {
 	/* This should never get called, but we also don't want to SEGV if
-	 * we accidently decref None out of existance.
+	 * we accidentally decref None out of existence.
 	 */
 	Py_FatalError("deallocating None");
 }
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 1b36a56..03bccaf 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -1704,7 +1704,7 @@
                 charsleft = (charsleft << 16) | ch;
                 /* out, charsleft, bitsleft = */ ENCODE(out, charsleft, bitsleft);
 
-                /* If the next character is special then we dont' need to terminate
+                /* If the next character is special then we don't need to terminate
                    the shift sequence. If the next character is not a BASE64 character
                    or '-' then the shift sequence will be terminated implicitly and we
                    don't have to insert a '-'. */
diff --git a/PC/_winreg.c b/PC/_winreg.c
index 0cb516a..9f234a1 100644
--- a/PC/_winreg.c
+++ b/PC/_winreg.c
@@ -25,7 +25,7 @@
 
 /* The win32api module reports the function name that failed,
    but this concept is not in the Python core.
-   Hopefully it will one day, and in the meantime I dont
+   Hopefully it will one day, and in the meantime I don't
    want to lose this info...
 */
 #define PyErr_SetFromWindowsErrWithFunction(rc, fnname) \
@@ -690,9 +690,9 @@
 ** Note that fixupMultiSZ and countString have both had changes
 ** made to support "incorrect strings".  The registry specification
 ** calls for strings to be terminated with 2 null bytes.  It seems
-** some commercial packages install strings which dont conform,
+** some commercial packages install strings which don't conform,
 ** causing this code to fail - however, "regedit" etc still work
-** with these strings (ie only we dont!).
+** with these strings (ie only we don't!).
 */
 static void
 fixupMultiSZ(char **str, char *data, int len)
diff --git a/PC/os2vacpp/makefile.omk b/PC/os2vacpp/makefile.omk
index a380c03..c4f6438 100644
--- a/PC/os2vacpp/makefile.omk
+++ b/PC/os2vacpp/makefile.omk
@@ -219,7 +219,7 @@
 
   # zlibmodule.c    -- Wrapper of ZLib Compression API (GZip Format)
   # puremodule.c    -- Wrapper of Purify Debugging API (Probably Non-OS/2)
-  # dlmodule.c      -- Some Wierd Form of Data Processing Module
+  # dlmodule.c      -- Some Weird Form of Data Processing Module
   # xxmodule.c      -- Template to Create Your Own Module
 
 #
diff --git a/Tools/scripts/texi2html.py b/Tools/scripts/texi2html.py
index 3ecaee6..57db166 100755
--- a/Tools/scripts/texi2html.py
+++ b/Tools/scripts/texi2html.py
@@ -38,7 +38,7 @@
 # rpyron 2002-05-07
 # Robert Pyron <rpyron@alum.mit.edu>
 # 1. BUGFIX: In function makefile(), strip blanks from the nodename.
-#    This is necesary to match the behavior of parser.makeref() and
+#    This is necessary to match the behavior of parser.makeref() and
 #    parser.do_node().
 # 2. BUGFIX fixed KeyError in end_ifset (well, I may have just made
 #    it go away, rather than fix it)
