#11565: Merge with 3.1.
diff --git a/Lib/csv.py b/Lib/csv.py
index e0f47e8..8dfc77e 100644
--- a/Lib/csv.py
+++ b/Lib/csv.py
@@ -284,7 +284,7 @@
         an all or nothing approach, so we allow for small variations in this
         number.
           1) build a table of the frequency of each character on every line.
-          2) build a table of freqencies of this frequency (meta-frequency?),
+          2) build a table of frequencies of this frequency (meta-frequency?),
              e.g.  'x occurred 5 times in 10 rows, 6 times in 1000 rows,
              7 times in 2 rows'
           3) use the mode of the meta-frequency to determine the /expected/
diff --git a/Lib/ctypes/test/test_arrays.py b/Lib/ctypes/test/test_arrays.py
index 1a6f3b2..f2a9f07 100644
--- a/Lib/ctypes/test/test_arrays.py
+++ b/Lib/ctypes/test/test_arrays.py
@@ -37,7 +37,7 @@
             values = [ia[i] for i in range(len(init))]
             self.assertEqual(values, [0] * len(init))
 
-            # Too many in itializers should be caught
+            # Too many initializers should be caught
             self.assertRaises(IndexError, int_array, *range(alen*2))
 
         CharArray = ARRAY(c_char, 3)
diff --git a/Lib/ctypes/test/test_init.py b/Lib/ctypes/test/test_init.py
index 94928c8..75fad11 100644
--- a/Lib/ctypes/test/test_init.py
+++ b/Lib/ctypes/test/test_init.py
@@ -27,7 +27,7 @@
         self.assertEqual((y.x.a, y.x.b), (0, 0))
         self.assertEqual(y.x.new_was_called, False)
 
-        # But explicitely creating an X structure calls __new__ and __init__, of course.
+        # But explicitly creating an X structure calls __new__ and __init__, of course.
         x = X()
         self.assertEqual((x.a, x.b), (9, 12))
         self.assertEqual(x.new_was_called, True)
diff --git a/Lib/ctypes/test/test_numbers.py b/Lib/ctypes/test/test_numbers.py
index 24d7293..244dbaf 100644
--- a/Lib/ctypes/test/test_numbers.py
+++ b/Lib/ctypes/test/test_numbers.py
@@ -157,7 +157,7 @@
     def test_int_from_address(self):
         from array import array
         for t in signed_types + unsigned_types:
-            # the array module doesn't suppport all format codes
+            # the array module doesn't support all format codes
             # (no 'q' or 'Q')
             try:
                 array(t._type_)
diff --git a/Lib/ctypes/test/test_win32.py b/Lib/ctypes/test/test_win32.py
index 5dedd9f..2534a74 100644
--- a/Lib/ctypes/test/test_win32.py
+++ b/Lib/ctypes/test/test_win32.py
@@ -17,7 +17,7 @@
             # ValueError: Procedure probably called with not enough arguments (4 bytes missing)
             self.assertRaises(ValueError, IsWindow)
 
-            # This one should succeeed...
+            # This one should succeed...
             self.assertEqual(0, IsWindow(0))
 
             # ValueError: Procedure probably called with too many arguments (8 bytes in excess)
diff --git a/Lib/difflib.py b/Lib/difflib.py
index 381721a..003e72e 100644
--- a/Lib/difflib.py
+++ b/Lib/difflib.py
@@ -1719,7 +1719,7 @@
             line = line.replace(' ','\0')
             # expand tabs into spaces
             line = line.expandtabs(self._tabsize)
-            # relace spaces from expanded tabs back into tab characters
+            # replace spaces from expanded tabs back into tab characters
             # (we'll replace them with markup after we do differencing)
             line = line.replace(' ','\t')
             return line.replace('\0',' ').rstrip('\n')
diff --git a/Lib/distutils/cmd.py b/Lib/distutils/cmd.py
index ae4efc7..5b1d085 100644
--- a/Lib/distutils/cmd.py
+++ b/Lib/distutils/cmd.py
@@ -359,7 +359,7 @@
                                   not self.force, dry_run=self.dry_run)
 
     def move_file (self, src, dst, level=1):
-        """Move a file respectin dry-run flag."""
+        """Move a file respecting dry-run flag."""
         return file_util.move_file(src, dst, dry_run=self.dry_run)
 
     def spawn(self, cmd, search_path=1, level=1):
diff --git a/Lib/distutils/cygwinccompiler.py b/Lib/distutils/cygwinccompiler.py
index 95fa3ed..536aa6b 100644
--- a/Lib/distutils/cygwinccompiler.py
+++ b/Lib/distutils/cygwinccompiler.py
@@ -155,7 +155,7 @@
             self.dll_libraries = get_msvcr()
 
     def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
-        """Compiles the source by spawing GCC and windres if needed."""
+        """Compiles the source by spawning GCC and windres if needed."""
         if ext == '.rc' or ext == '.res':
             # gcc needs '.res' and '.rc' compiled to object files !!!
             try:
diff --git a/Lib/distutils/tests/test_clean.py b/Lib/distutils/tests/test_clean.py
index 649855f..eb8958b 100644
--- a/Lib/distutils/tests/test_clean.py
+++ b/Lib/distutils/tests/test_clean.py
@@ -39,7 +39,7 @@
             self.assertTrue(not os.path.exists(path),
                          '%s was not removed' % path)
 
-        # let's run the command again (should spit warnings but suceed)
+        # let's run the command again (should spit warnings but succeed)
         cmd.all = 1
         cmd.ensure_finalized()
         cmd.run()
diff --git a/Lib/distutils/tests/test_install.py b/Lib/distutils/tests/test_install.py
index a76e3e7..ed69b0c 100644
--- a/Lib/distutils/tests/test_install.py
+++ b/Lib/distutils/tests/test_install.py
@@ -62,7 +62,7 @@
         if sys.version < '2.6':
             return
 
-        # preparing the environement for the test
+        # preparing the environment for the test
         self.old_user_base = site.USER_BASE
         self.old_user_site = site.USER_SITE
         self.tmpdir = self.mkdtemp()
diff --git a/Lib/distutils/tests/test_sdist.py b/Lib/distutils/tests/test_sdist.py
index eaf39a4..c7dd47f 100644
--- a/Lib/distutils/tests/test_sdist.py
+++ b/Lib/distutils/tests/test_sdist.py
@@ -311,7 +311,7 @@
         # adding a file
         self.write_file((self.tmp_dir, 'somecode', 'doc2.txt'), '#')
 
-        # make sure build_py is reinitinialized, like a fresh run
+        # make sure build_py is reinitialized, like a fresh run
         build_py = dist.get_command_obj('build_py')
         build_py.finalized = False
         build_py.ensure_finalized()
diff --git a/Lib/doctest.py b/Lib/doctest.py
index b79db17..9eba4e0 100644
--- a/Lib/doctest.py
+++ b/Lib/doctest.py
@@ -1211,7 +1211,7 @@
         # Process each example.
         for examplenum, example in enumerate(test.examples):
 
-            # If REPORT_ONLY_FIRST_FAILURE is set, then supress
+            # If REPORT_ONLY_FIRST_FAILURE is set, then suppress
             # reporting after the first failure.
             quiet = (self.optionflags & REPORT_ONLY_FIRST_FAILURE and
                      failures > 0)
@@ -2133,7 +2133,7 @@
            caller can catch the errors and initiate post-mortem debugging.
 
            The DocTestCase provides a debug method that raises
-           UnexpectedException errors if there is an unexepcted
+           UnexpectedException errors if there is an unexpected
            exception:
 
              >>> test = DocTestParser().get_doctest('>>> raise KeyError\n42',
diff --git a/Lib/email/header.py b/Lib/email/header.py
index e171617..d3118b0 100644
--- a/Lib/email/header.py
+++ b/Lib/email/header.py
@@ -47,7 +47,7 @@
 # For use with .match()
 fcre = re.compile(r'[\041-\176]+:$')
 
-# Find a header embeded in a putative header value.  Used to check for
+# Find a header embedded in a putative header value.  Used to check for
 # header injection attack.
 _embeded_header = re.compile(r'\n[^ \t]+:')
 
diff --git a/Lib/idlelib/FormatParagraph.py b/Lib/idlelib/FormatParagraph.py
index 02f96d4..6a5f9b5 100644
--- a/Lib/idlelib/FormatParagraph.py
+++ b/Lib/idlelib/FormatParagraph.py
@@ -54,7 +54,7 @@
             # If the block ends in a \n, we dont want the comment
             # prefix inserted after it. (Im not sure it makes sense to
             # reformat a comment block that isnt made of complete
-            # lines, but whatever!)  Can't think of a clean soltution,
+            # lines, but whatever!)  Can't think of a clean solution,
             # so we hack away
             block_suffix = ""
             if not newdata[-1]:
diff --git a/Lib/idlelib/extend.txt b/Lib/idlelib/extend.txt
index f5fb3e0..165e044 100644
--- a/Lib/idlelib/extend.txt
+++ b/Lib/idlelib/extend.txt
@@ -18,7 +18,7 @@
 
 An IDLE extension class is instantiated with a single argument,
 `editwin', an EditorWindow instance. The extension cannot assume much
-about this argument, but it is guarateed to have the following instance
+about this argument, but it is guaranteed to have the following instance
 variables:
 
     text	a Text instance (a widget)
diff --git a/Lib/idlelib/macosxSupport.py b/Lib/idlelib/macosxSupport.py
index 30dd1e1..f93ef11 100644
--- a/Lib/idlelib/macosxSupport.py
+++ b/Lib/idlelib/macosxSupport.py
@@ -53,8 +53,8 @@
 
 def addOpenEventSupport(root, flist):
     """
-    This ensures that the application will respont to open AppleEvents, which
-    makes is feaseable to use IDLE as the default application for python files.
+    This ensures that the application will respond to open AppleEvents, which
+    makes is feasible to use IDLE as the default application for python files.
     """
     def doOpenFile(*args):
         for fn in args:
diff --git a/Lib/lib2to3/fixes/fix_metaclass.py b/Lib/lib2to3/fixes/fix_metaclass.py
index f924ace..7d4d002 100644
--- a/Lib/lib2to3/fixes/fix_metaclass.py
+++ b/Lib/lib2to3/fixes/fix_metaclass.py
@@ -48,7 +48,7 @@
     """
     for node in cls_node.children:
         if node.type == syms.suite:
-            # already in the prefered format, do nothing
+            # already in the preferred format, do nothing
             return
 
     # !%@#! oneliners have no suite node, we have to fake one up
diff --git a/Lib/lib2to3/pgen2/conv.py b/Lib/lib2to3/pgen2/conv.py
index 1d648d6..bf49762 100644
--- a/Lib/lib2to3/pgen2/conv.py
+++ b/Lib/lib2to3/pgen2/conv.py
@@ -51,7 +51,7 @@
         self.finish_off()
 
     def parse_graminit_h(self, filename):
-        """Parse the .h file writen by pgen.  (Internal)
+        """Parse the .h file written by pgen.  (Internal)
 
         This file is a sequence of #define statements defining the
         nonterminals of the grammar as numbers.  We build two tables
@@ -82,7 +82,7 @@
         return True
 
     def parse_graminit_c(self, filename):
-        """Parse the .c file writen by pgen.  (Internal)
+        """Parse the .c file written by pgen.  (Internal)
 
         The file looks as follows.  The first two lines are always this:
 
diff --git a/Lib/lib2to3/pytree.py b/Lib/lib2to3/pytree.py
index 100232b..fa4942f 100644
--- a/Lib/lib2to3/pytree.py
+++ b/Lib/lib2to3/pytree.py
@@ -658,8 +658,8 @@
             content: optional sequence of subsequences of patterns;
                      if absent, matches one node;
                      if present, each subsequence is an alternative [*]
-            min: optinal minumum number of times to match, default 0
-            max: optional maximum number of times tro match, default HUGE
+            min: optional minimum number of times to match, default 0
+            max: optional maximum number of times to match, default HUGE
             name: optional name assigned to this match
 
         [*] Thus, if content is [[a, b, c], [d, e], [f, g, h]] this is
diff --git a/Lib/lib2to3/tests/data/py2_test_grammar.py b/Lib/lib2to3/tests/data/py2_test_grammar.py
index 17f9f4c..b5a4137 100644
--- a/Lib/lib2to3/tests/data/py2_test_grammar.py
+++ b/Lib/lib2to3/tests/data/py2_test_grammar.py
@@ -316,7 +316,7 @@
         ### simple_stmt: small_stmt (';' small_stmt)* [';']
         x = 1; pass; del x
         def foo():
-            # verify statments that end with semi-colons
+            # verify statements that end with semi-colons
             x = 1; pass; del x;
         foo()
 
diff --git a/Lib/lib2to3/tests/data/py3_test_grammar.py b/Lib/lib2to3/tests/data/py3_test_grammar.py
index 977f0b8..c0bf7f2 100644
--- a/Lib/lib2to3/tests/data/py3_test_grammar.py
+++ b/Lib/lib2to3/tests/data/py3_test_grammar.py
@@ -356,7 +356,7 @@
         ### simple_stmt: small_stmt (';' small_stmt)* [';']
         x = 1; pass; del x
         def foo():
-            # verify statments that end with semi-colons
+            # verify statements that end with semi-colons
             x = 1; pass; del x;
         foo()
 
diff --git a/Lib/ntpath.py b/Lib/ntpath.py
index 579673d..419342d 100644
--- a/Lib/ntpath.py
+++ b/Lib/ntpath.py
@@ -405,7 +405,7 @@
 #       - $varname is accepted.
 #       - %varname% is accepted.
 #       - varnames can be made out of letters, digits and the characters '_-'
-#         (though is not verifed in the ${varname} and %varname% cases)
+#         (though is not verified in the ${varname} and %varname% cases)
 # XXX With COMMAND.COM you can use any characters in a variable name,
 # XXX except '^|<>='.
 
diff --git a/Lib/pickletools.py b/Lib/pickletools.py
index 89a8e58..3061675 100644
--- a/Lib/pickletools.py
+++ b/Lib/pickletools.py
@@ -1406,7 +1406,7 @@
       proto=0,
       doc="""Read an object from the memo and push it on the stack.
 
-      The index of the memo object to push is given by the newline-teriminated
+      The index of the memo object to push is given by the newline-terminated
       decimal string following.  BINGET and LONG_BINGET are space-optimized
       versions.
       """),
diff --git a/Lib/platform.py b/Lib/platform.py
index de81b63..b01568c 100755
--- a/Lib/platform.py
+++ b/Lib/platform.py
@@ -498,7 +498,7 @@
             info = pipe.read()
             if pipe.close():
                 raise os.error('command failed')
-            # XXX How can I supress shell errors from being written
+            # XXX How can I suppress shell errors from being written
             #     to stderr ?
         except os.error as why:
             #print 'Command %s failed: %s' % (cmd,why)
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index c02fb52..477f927 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -947,7 +947,7 @@
             except pywintypes.error as e:
                 # Translate pywintypes.error to WindowsError, which is
                 # a subclass of OSError.  FIXME: We should really
-                # translate errno using _sys_errlist (or simliar), but
+                # translate errno using _sys_errlist (or similar), but
                 # how can this be done from Python?
                 raise WindowsError(*e.args)
             finally:
diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py
index 4b5c890..e9ceee6 100644
--- a/Lib/test/datetimetester.py
+++ b/Lib/test/datetimetester.py
@@ -3414,7 +3414,7 @@
             self.assertEqual(dt, there_and_back)
 
         # Because we have a redundant spelling when DST begins, there is
-        # (unforunately) an hour when DST ends that can't be spelled at all in
+        # (unfortunately) an hour when DST ends that can't be spelled at all in
         # local time.  When DST ends, the clock jumps from 1:59 back to 1:00
         # again.  The hour 1:MM DST has no spelling then:  1:MM is taken to be
         # standard time.  1:MM DST == 0:MM EST, but 0:MM is taken to be
diff --git a/Lib/test/pyclbr_input.py b/Lib/test/pyclbr_input.py
index 8efc9de..19ccd62 100644
--- a/Lib/test/pyclbr_input.py
+++ b/Lib/test/pyclbr_input.py
@@ -19,7 +19,7 @@
 
     # XXX: This causes test_pyclbr.py to fail, but only because the
     #      introspection-based is_method() code in the test can't
-    #      distinguish between this and a geniune method function like m().
+    #      distinguish between this and a genuine method function like m().
     #      The pyclbr.py module gets this right as it parses the text.
     #
     #f = f
diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py
index 529a2a5..f913347 100644
--- a/Lib/test/test_capi.py
+++ b/Lib/test/test_capi.py
@@ -127,7 +127,7 @@
                 context.event.set()
 
     def test_pendingcalls_non_threaded(self):
-        #again, just using the main thread, likely they will all be dispathced at
+        #again, just using the main thread, likely they will all be dispatched at
         #once.  It is ok to ask for too many, because we loop until we find a slot.
         #the loop can be interrupted to dispatch.
         #there are only 32 dispatch slots, so we go for twice that!
diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py
index 8f1f863..e46cd91 100644
--- a/Lib/test/test_decimal.py
+++ b/Lib/test/test_decimal.py
@@ -228,7 +228,7 @@
                 try:
                     t = self.eval_line(line)
                 except DecimalException as exception:
-                    #Exception raised where there shoudn't have been one.
+                    #Exception raised where there shouldn't have been one.
                     self.fail('Exception "'+exception.__class__.__name__ + '" raised on line '+line)
 
         return
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index 0e2f389..41dfa70 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -3967,7 +3967,7 @@
         except TypeError:
             pass
         else:
-            self.fail("Carlo Verre __setattr__ suceeded!")
+            self.fail("Carlo Verre __setattr__ succeeded!")
         try:
             object.__delattr__(str, "lower")
         except TypeError:
diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py
index 484a9b8..13836ba 100644
--- a/Lib/test/test_doctest.py
+++ b/Lib/test/test_doctest.py
@@ -1296,7 +1296,7 @@
         ?     +              ++    ^
     TestResults(failed=1, attempted=1)
 
-The REPORT_ONLY_FIRST_FAILURE supresses result output after the first
+The REPORT_ONLY_FIRST_FAILURE suppresses result output after the first
 failing example:
 
     >>> def f(x):
@@ -1326,7 +1326,7 @@
         2
     TestResults(failed=3, attempted=5)
 
-However, output from `report_start` is not supressed:
+However, output from `report_start` is not suppressed:
 
     >>> doctest.DocTestRunner(verbose=True, optionflags=flags).run(test)
     ... # doctest: +ELLIPSIS
@@ -2276,7 +2276,7 @@
     >>> doctest.master = None  # Reset master.
 
 (Note: we'll be clearing doctest.master after each call to
-`doctest.testfile`, to supress warnings about multiple tests with the
+`doctest.testfile`, to suppress warnings about multiple tests with the
 same name.)
 
 Globals may be specified with the `globs` and `extraglobs` parameters:
@@ -2312,7 +2312,7 @@
     TestResults(failed=0, attempted=2)
     >>> doctest.master = None  # Reset master.
 
-Verbosity can be increased with the optional `verbose` paremter:
+Verbosity can be increased with the optional `verbose` parameter:
 
     >>> doctest.testfile('test_doctest.txt', globs=globs, verbose=True)
     Trying:
@@ -2349,7 +2349,7 @@
     TestResults(failed=1, attempted=2)
     >>> doctest.master = None  # Reset master.
 
-The summary report may be supressed with the optional `report`
+The summary report may be suppressed with the optional `report`
 parameter:
 
     >>> doctest.testfile('test_doctest.txt', report=False)
diff --git a/Lib/test/test_extcall.py b/Lib/test/test_extcall.py
index c31e920..1f7f630 100644
--- a/Lib/test/test_extcall.py
+++ b/Lib/test/test_extcall.py
@@ -228,7 +228,7 @@
     >>> Foo.method(1, *[2, 3])
     5
 
-A PyCFunction that takes only positional parameters shoud allow an
+A PyCFunction that takes only positional parameters should allow an
 empty keyword dictionary to pass without a complaint, but raise a
 TypeError if te dictionary is not empty
 
diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py
index 30cb4b9..1968b8a 100644
--- a/Lib/test/test_float.py
+++ b/Lib/test/test_float.py
@@ -67,7 +67,7 @@
     def test_float_with_comma(self):
         # set locale to something that doesn't use '.' for the decimal point
         # float must not accept the locale specific decimal point but
-        # it still has to accept the normal python syntac
+        # it still has to accept the normal python syntax
         import locale
         if not locale.localeconv()['decimal_point'] == ',':
             return
@@ -189,7 +189,7 @@
     def assertEqualAndEqualSign(self, a, b):
         # fail unless a == b and a and b have the same sign bit;
         # the only difference from assertEqual is that this test
-        # distingishes -0.0 and 0.0.
+        # distinguishes -0.0 and 0.0.
         self.assertEqual((a, copysign(1.0, a)), (b, copysign(1.0, b)))
 
     @support.requires_IEEE_754
diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py
index 05a036a..329b258 100644
--- a/Lib/test/test_grammar.py
+++ b/Lib/test/test_grammar.py
@@ -350,7 +350,7 @@
         ### simple_stmt: small_stmt (';' small_stmt)* [';']
         x = 1; pass; del x
         def foo():
-            # verify statments that end with semi-colons
+            # verify statements that end with semi-colons
             x = 1; pass; del x;
         foo()
 
diff --git a/Lib/test/test_httpservers.py b/Lib/test/test_httpservers.py
index 95b9c19..a16e0e3 100644
--- a/Lib/test/test_httpservers.py
+++ b/Lib/test/test_httpservers.py
@@ -462,7 +462,7 @@
         return False
 
 class BaseHTTPRequestHandlerTestCase(unittest.TestCase):
-    """Test the functionaility of the BaseHTTPServer.
+    """Test the functionality of the BaseHTTPServer.
 
        Test the support for the Expect 100-continue header.
        """
diff --git a/Lib/test/test_iterlen.py b/Lib/test/test_iterlen.py
index cd92801..7469a31 100644
--- a/Lib/test/test_iterlen.py
+++ b/Lib/test/test_iterlen.py
@@ -20,11 +20,11 @@
 
 Some containers become temporarily immutable during iteration.  This includes
 dicts, sets, and collections.deque.  Their implementation is equally simple
-though they need to permantently set their length to zero whenever there is
+though they need to permanently set their length to zero whenever there is
 an attempt to iterate after a length mutation.
 
 The situation slightly more involved whenever an object allows length mutation
-during iteration.  Lists and sequence iterators are dynanamically updatable.
+during iteration.  Lists and sequence iterators are dynamically updatable.
 So, if a list is extended during iteration, the iterator will continue through
 the new items.  If it shrinks to a point before the most recent iteration,
 then no further items are available and the length is reported at zero.
diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py
index b744636..5e4bf1b 100644
--- a/Lib/test/test_itertools.py
+++ b/Lib/test/test_itertools.py
@@ -1526,7 +1526,7 @@
 ...     return chain(iterable, repeat(None))
 
 >>> def ncycles(iterable, n):
-...     "Returns the seqeuence elements n times"
+...     "Returns the sequence elements n times"
 ...     return chain(*repeat(iterable, n))
 
 >>> def dotproduct(vec1, vec2):
diff --git a/Lib/test/test_marshal.py b/Lib/test/test_marshal.py
index f9b1900..81cf598 100644
--- a/Lib/test/test_marshal.py
+++ b/Lib/test/test_marshal.py
@@ -194,7 +194,7 @@
         #   >>> type(loads(dumps(Int())))
         #   <type 'int'>
         for typ in (int, float, complex, tuple, list, dict, set, frozenset):
-            # Note: str sublclasses are not tested because they get handled
+            # Note: str subclasses are not tested because they get handled
             # by marshal's routines for objects supporting the buffer API.
             subtyp = type('subtyp', (typ,), {})
             self.assertRaises(ValueError, marshal.dumps, subtyp())
diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py
index c72383a..dddc889 100644
--- a/Lib/test/test_math.py
+++ b/Lib/test/test_math.py
@@ -820,7 +820,7 @@
 
         # the following tests have been commented out since they don't
         # really belong here:  the implementation of ** for floats is
-        # independent of the implemention of math.pow
+        # independent of the implementation of math.pow
         #self.assertEqual(1**NAN, 1)
         #self.assertEqual(1**INF, 1)
         #self.assertEqual(1**NINF, 1)
diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py
index 9b7100d..e62a046 100644
--- a/Lib/test/test_mmap.py
+++ b/Lib/test/test_mmap.py
@@ -594,7 +594,7 @@
             m2.close()
             m1.close()
 
-            # Test differnt tag
+            # Test different tag
             m1 = mmap.mmap(-1, len(data1), tagname="foo")
             m1[:] = data1
             m2 = mmap.mmap(-1, len(data2), tagname="boo")
diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py
index 465a831..91e2cbb 100644
--- a/Lib/test/test_multiprocessing.py
+++ b/Lib/test/test_multiprocessing.py
@@ -783,7 +783,7 @@
         event = self.Event()
         wait = TimingWrapper(event.wait)
 
-        # Removed temporaily, due to API shear, this does not
+        # Removed temporarily, due to API shear, this does not
         # work with threading._Event objects. is_set == isSet
         self.assertEqual(event.is_set(), False)
 
@@ -1753,7 +1753,7 @@
 
         util.Finalize(None, conn.send, args=('STOP',), exitpriority=-100)
 
-        # call mutliprocessing's cleanup function then exit process without
+        # call multiprocessing's cleanup function then exit process without
         # garbage collecting locals
         util._exit_function()
         conn.close()
diff --git a/Lib/test/test_pkg.py b/Lib/test/test_pkg.py
index a342f7a..a4ddb15 100644
--- a/Lib/test/test_pkg.py
+++ b/Lib/test/test_pkg.py
@@ -56,7 +56,7 @@
         if self.root: # Only clean if the test was actually run
             cleanout(self.root)
 
-        # delete all modules concerning the tested hiearchy
+        # delete all modules concerning the tested hierarchy
         if self.pkgname:
             modules = [name for name in sys.modules
                        if self.pkgname in name.split('.')]
diff --git a/Lib/test/test_print.py b/Lib/test/test_print.py
index ad71462..8d37bbc 100644
--- a/Lib/test/test_print.py
+++ b/Lib/test/test_print.py
@@ -20,7 +20,7 @@
 # A dispatch table all 8 combinations of providing
 #  sep, end, and file
 # I use this machinery so that I'm not just passing default
-#  values to print, I'm eiher passing or not passing in the
+#  values to print, I'm either passing or not passing in the
 #  arguments
 dispatch = {
     (False, False, False):
diff --git a/Lib/test/test_strlit.py b/Lib/test/test_strlit.py
index 23d96f8..9eb30e9 100644
--- a/Lib/test/test_strlit.py
+++ b/Lib/test/test_strlit.py
@@ -22,7 +22,7 @@
 exec()/eval(), which uses a different code path.
 
 This file is really about correct treatment of encodings and
-backslashes.  It doens't concern itself with issues like single
+backslashes.  It doesn't concern itself with issues like single
 vs. double quotes or singly- vs. triply-quoted strings: that's dealt
 with elsewhere (I assume).
 """
diff --git a/Lib/test/test_strptime.py b/Lib/test/test_strptime.py
index 77d3789..89c08ed 100644
--- a/Lib/test/test_strptime.py
+++ b/Lib/test/test_strptime.py
@@ -536,7 +536,7 @@
                 self.assertIsNot(first_time_re, second_time_re)
             # Possible test locale is not supported while initial locale is.
             # If this is the case just suppress the exception and fall-through
-            # to the reseting to the original locale.
+            # to the resetting to the original locale.
             except locale.Error:
                 pass
         # Make sure we don't trample on the locale setting once we leave the
diff --git a/Lib/test/test_struct.py b/Lib/test/test_struct.py
index 9a9da37..2ccaad2 100644
--- a/Lib/test/test_struct.py
+++ b/Lib/test/test_struct.py
@@ -463,7 +463,7 @@
                           test_string)
 
     def test_unpack_with_buffer(self):
-        # SF bug 1563759: struct.unpack doens't support buffer protocol objects
+        # SF bug 1563759: struct.unpack doesn't support buffer protocol objects
         data1 = array.array('B', b'\x12\x34\x56\x78')
         data2 = memoryview(b'\x12\x34\x56\x78') # XXX b'......XXXX......', 6, 4
         for data in [data1, data2]:
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py
index cd6b9a5..02372ba 100644
--- a/Lib/test/test_syntax.py
+++ b/Lib/test/test_syntax.py
@@ -237,7 +237,7 @@
 
 Test continue in finally in weird combinations.
 
-continue in for loop under finally shouuld be ok.
+continue in for loop under finally should be ok.
 
     >>> def test():
     ...     try:
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index d37651e..db27cdf 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -491,7 +491,7 @@
         # provide too much opportunity for insane things to happen.
         # We don't want them in the interned dict and if they aren't
         # actually interned, we don't want to create the appearance
-        # that they are by allowing intern() to succeeed.
+        # that they are by allowing intern() to succeed.
         class S(str):
             def __hash__(self):
                 return 123
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
index ecbbdbf..5f99b2e 100644
--- a/Lib/test/test_threading.py
+++ b/Lib/test/test_threading.py
@@ -570,7 +570,7 @@
             # This acquires the lock and then waits until the child has forked
             # before returning, which will release the lock soon after.  If
             # someone else tries to fix this test case by acquiring this lock
-            # before forking instead of reseting it, the test case will
+            # before forking instead of resetting it, the test case will
             # deadlock when it shouldn't.
             condition = w._block
             orig_acquire = condition.acquire
diff --git a/Lib/test/test_trace.py b/Lib/test/test_trace.py
index 93df84f..461d1d8 100644
--- a/Lib/test/test_trace.py
+++ b/Lib/test/test_trace.py
@@ -207,7 +207,7 @@
             (self.my_py_filename, firstlineno + 4): 1,
         }
 
-        # When used through 'run', some other spurios counts are produced, like
+        # When used through 'run', some other spurious counts are produced, like
         # the settrace of threading, which we ignore, just making sure that the
         # counts fo traced_func_loop were right.
         #
diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
index 3003331..673afc4 100644
--- a/Lib/test/test_urllib.py
+++ b/Lib/test/test_urllib.py
@@ -1021,7 +1021,7 @@
 
 # Just commented them out.
 # Can't really tell why keep failing in windows and sparc.
-# Everywhere else they work ok, but on those machines, someteimes
+# Everywhere else they work ok, but on those machines, sometimes
 # fail in one of the tests, sometimes in other. I have a linux, and
 # the tests go ok.
 # If anybody has one of the problematic enviroments, please help!
diff --git a/Lib/test/test_warnings.py b/Lib/test/test_warnings.py
index c8865fe..dbf30e9 100644
--- a/Lib/test/test_warnings.py
+++ b/Lib/test/test_warnings.py
@@ -332,7 +332,7 @@
             sys.argv = argv
 
     def test_warn_explicit_type_errors(self):
-        # warn_explicit() shoud error out gracefully if it is given objects
+        # warn_explicit() should error out gracefully if it is given objects
         # of the wrong types.
         # lineno is expected to be an integer.
         self.assertRaises(TypeError, self.module.warn_explicit,
diff --git a/Lib/tkinter/test/test_ttk/test_functions.py b/Lib/tkinter/test/test_ttk/test_functions.py
index f9b908e..df593cd 100644
--- a/Lib/tkinter/test/test_ttk/test_functions.py
+++ b/Lib/tkinter/test/test_ttk/test_functions.py
@@ -135,7 +135,7 @@
         # minimum acceptable for image type
         self.assertEqual(ttk._format_elemcreate('image', False, 'test'),
             ("test ", ()))
-        # specifiyng a state spec
+        # specifying a state spec
         self.assertEqual(ttk._format_elemcreate('image', False, 'test',
             ('', 'a')), ("test {} a", ()))
         # state spec with multiple states
diff --git a/Lib/tkinter/tix.py b/Lib/tkinter/tix.py
index 17ed230..be44a09 100644
--- a/Lib/tkinter/tix.py
+++ b/Lib/tkinter/tix.py
@@ -171,7 +171,7 @@
         return self.tk.call('tix', 'getimage', name)
 
     def tix_option_get(self, name):
-        """Gets  the options  manitained  by  the  Tix
+        """Gets  the options  maintained  by  the  Tix
         scheme mechanism. Available options include:
 
             active_bg       active_fg      bg
@@ -576,7 +576,7 @@
 
 class ComboBox(TixWidget):
     """ComboBox - an Entry field with a dropdown menu. The user can select a
-    choice by either typing in the entry subwdget or selecting from the
+    choice by either typing in the entry subwidget or selecting from the
     listbox subwidget.
 
     Subwidget       Class
@@ -869,7 +869,7 @@
     """HList - Hierarchy display  widget can be used to display any data
     that have a hierarchical structure, for example, file system directory
     trees. The list entries are indented and connected by branch lines
-    according to their places in the hierachy.
+    according to their places in the hierarchy.
 
     Subwidgets - None"""
 
@@ -1519,7 +1519,7 @@
         self.tk.call(self._w, 'selection', 'set', first, last)
 
 class Tree(TixWidget):
-    """Tree - The tixTree widget can be used to display hierachical
+    """Tree - The tixTree widget can be used to display hierarchical
     data in a tree form. The user can adjust
     the view of the tree by opening or closing parts of the tree."""
 
diff --git a/Lib/tkinter/ttk.py b/Lib/tkinter/ttk.py
index 0d048bb..1a6a9f4 100644
--- a/Lib/tkinter/ttk.py
+++ b/Lib/tkinter/ttk.py
@@ -707,7 +707,7 @@
             textvariable, values, width
         """
         # The "values" option may need special formatting, so leave to
-        # _format_optdict the responsability to format it
+        # _format_optdict the responsibility to format it
         if "values" in kw:
             kw["values"] = _format_optdict({'v': kw["values"]})[1]
 
diff --git a/Lib/turtle.py b/Lib/turtle.py
index e1fc8c5..2ff5427 100644
--- a/Lib/turtle.py
+++ b/Lib/turtle.py
@@ -1488,7 +1488,7 @@
         Optional arguments:
         canvwidth -- positive integer, new width of canvas in pixels
         canvheight --  positive integer, new height of canvas in pixels
-        bg -- colorstring or color-tupel, new backgroundcolor
+        bg -- colorstring or color-tuple, new backgroundcolor
         If no arguments are given, return current (canvaswidth, canvasheight)
 
         Do not alter the drawing window. To observe hidden parts of
@@ -3242,9 +3242,9 @@
                                                fill="", width=ps)
         # Turtle now at position old,
         self._position = old
-        ##  if undo is done during crating a polygon, the last vertex
-        ##  will be deleted. if the polygon is entirel deleted,
-        ##  creatigPoly will be set to False.
+        ##  if undo is done during creating a polygon, the last vertex
+        ##  will be deleted. if the polygon is entirely deleted,
+        ##  creatingPoly will be set to False.
         ##  Polygons created before the last one will not be affected by undo()
         if self._creatingPoly:
             if len(self._poly) > 0:
@@ -3796,7 +3796,7 @@
 
 
 class Turtle(RawTurtle):
-    """RawTurtle auto-crating (scrolled) canvas.
+    """RawTurtle auto-creating (scrolled) canvas.
 
     When a Turtle object is created or a function derived from some
     Turtle method is called a TurtleScreen object is automatically created.
@@ -3836,7 +3836,7 @@
     filename -- a string, used as filename
                 default value is turtle_docstringdict
 
-    Has to be called explicitely, (not used by the turtle-graphics classes)
+    Has to be called explicitly, (not used by the turtle-graphics classes)
     The docstring dictionary will be written to the Python script <filname>.py
     It is intended to serve as a template for translation of the docstrings
     into different languages.
diff --git a/Lib/turtledemo/bytedesign.py b/Lib/turtledemo/bytedesign.py
index 96118b3..64b1d7d 100644
--- a/Lib/turtledemo/bytedesign.py
+++ b/Lib/turtledemo/bytedesign.py
@@ -4,7 +4,7 @@
         tdemo_bytedesign.py
 
 An example adapted from the example-suite
-of PythonCard's turtle graphcis.
+of PythonCard's turtle graphics.
 
 It's based on an article in BYTE magazine
 Problem Solving with Logo: Using Turtle
diff --git a/Lib/xml/dom/minicompat.py b/Lib/xml/dom/minicompat.py
index 2e6cc7e..62725c6 100644
--- a/Lib/xml/dom/minicompat.py
+++ b/Lib/xml/dom/minicompat.py
@@ -6,7 +6,7 @@
 #
 #   NodeList      -- lightest possible NodeList implementation
 #
-#   EmptyNodeList -- lightest possible NodeList that is guarateed to
+#   EmptyNodeList -- lightest possible NodeList that is guaranteed to
 #                    remain empty (immutable)
 #
 #   StringTypes   -- tuple of defined string types
diff --git a/Lib/xml/dom/minidom.py b/Lib/xml/dom/minidom.py
index 53c29a5..218c62e 100644
--- a/Lib/xml/dom/minidom.py
+++ b/Lib/xml/dom/minidom.py
@@ -1905,7 +1905,7 @@
                     e._call_user_data_handler(operation, n, entity)
     else:
         # Note the cloning of Document and DocumentType nodes is
-        # implemenetation specific.  minidom handles those cases
+        # implementation specific.  minidom handles those cases
         # directly in the cloneNode() methods.
         raise xml.dom.NotSupportedErr("Cannot clone node %s" % repr(node))
 
diff --git a/Lib/xmlrpc/server.py b/Lib/xmlrpc/server.py
index 65f87d9..9477309 100644
--- a/Lib/xmlrpc/server.py
+++ b/Lib/xmlrpc/server.py
@@ -240,7 +240,7 @@
         marshalled data. For backwards compatibility, a dispatch
         function can be provided as an argument (see comment in
         SimpleXMLRPCRequestHandler.do_POST) but overriding the
-        existing method through subclassing is the prefered means
+        existing method through subclassing is the preferred means
         of changing method dispatch behavior.
         """