#11565: Merge with 3.1.
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,