diff --git a/Doc/library/optparse.rst b/Doc/library/optparse.rst
index 2ef187d..337c7c2 100644
--- a/Doc/library/optparse.rst
+++ b/Doc/library/optparse.rst
@@ -567,7 +567,7 @@
 
    where
 
-   * parser is the :class:`OptionParser` instance the group will be insterted in
+   * parser is the :class:`OptionParser` instance the group will be inserted in
      to
    * title is the group title
    * description, optional, is a long description of the group
diff --git a/Doc/library/ossaudiodev.rst b/Doc/library/ossaudiodev.rst
index ec40c0b9..522bb7e 100644
--- a/Doc/library/ossaudiodev.rst
+++ b/Doc/library/ossaudiodev.rst
@@ -14,7 +14,7 @@
 .. Things will get more complicated for future Linux versions, since
    ALSA is in the standard kernel as of 2.5.x.  Presumably if you
    use ALSA, you'll have to make sure its OSS compatibility layer
-   is active to use ossaudiodev, but you're gonna need it for the vast
+   is active to use ossaudiodev, but you're going to need it for the vast
    majority of Linux audio apps anyway.
 
    Sounds like things are also complicated for other BSDs.  In response
@@ -447,4 +447,3 @@
    microphone input::
 
       mixer.setrecsrc (1 << ossaudiodev.SOUND_MIXER_MIC)
-
diff --git a/Lib/ctypes/_aix.py b/Lib/ctypes/_aix.py
index 61af942..463f60a 100644
--- a/Lib/ctypes/_aix.py
+++ b/Lib/ctypes/_aix.py
@@ -32,7 +32,7 @@
 In documentation the archive is also referred to as the "base" and the shared
 library object is referred to as the "member".
 
-For dlopen() on AIX (read initAndLoad()) the calls are similiar.
+For dlopen() on AIX (read initAndLoad()) the calls are similar.
 Default activity occurs when no path information is provided. When path
 information is provided dlopen() does not search any other directories.
 
@@ -90,7 +90,7 @@
         if re.match("[0-9]", line):
             info.append(line)
         else:
-            # blank line (seperator), consume line and end for loop
+            # blank line (separator), consume line and end for loop
             break
     return info
 
diff --git a/Lib/email/_header_value_parser.py b/Lib/email/_header_value_parser.py
index d2d1f5c..d8becee 100644
--- a/Lib/email/_header_value_parser.py
+++ b/Lib/email/_header_value_parser.py
@@ -2745,8 +2745,8 @@
 
     Using the decoded list of parameters and values, format them according to
     the RFC rules, including using RFC2231 encoding if the value cannot be
-    expressed in 'encoding' and/or the paramter+value is too long to fit within
-    'maxlen'.
+    expressed in 'encoding' and/or the parameter+value is too long to fit
+    within 'maxlen'.
 
     """
     # Special case for RFC2231 encoding: start from decoded values and use
diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py
index 4e8394b..231e14e 100644
--- a/Lib/idlelib/configdialog.py
+++ b/Lib/idlelib/configdialog.py
@@ -495,7 +495,7 @@
         Changing any of the font vars invokes var_changed_font, which
         adds all 3 font options to changes and calls set_samples.
         Set_samples applies a new font constructed from the font vars to
-        font_sample and to highlight_sample on the hightlight page.
+        font_sample and to highlight_sample on the highlight page.
 
         Tabs: Enable users to change spaces entered for indent tabs.
         Changing indent_scale value with the mouse sets Var space_num,
@@ -646,7 +646,7 @@
 
         Called on font initialization and change events.
         Accesses font_name, font_size, and font_bold Variables.
-        Updates font_sample and hightlight page highlight_sample.
+        Updates font_sample and highlight page highlight_sample.
         """
         font_name = self.font_name.get()
         font_weight = tkFont.BOLD if self.font_bold.get() else tkFont.NORMAL
diff --git a/Lib/opcode.py b/Lib/opcode.py
index 8f45f0a..368472d 100644
--- a/Lib/opcode.py
+++ b/Lib/opcode.py
@@ -142,7 +142,7 @@
 def_op('BUILD_TUPLE', 102)      # Number of tuple items
 def_op('BUILD_LIST', 103)       # Number of list items
 def_op('BUILD_SET', 104)        # Number of set items
-def_op('BUILD_MAP', 105)        # Number of dict entries (upto 255)
+def_op('BUILD_MAP', 105)        # Number of dict entries
 name_op('LOAD_ATTR', 106)       # Index in name list
 def_op('COMPARE_OP', 107)       # Comparison operator
 hascompare.append(107)
diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py
index a0883b9..8f9ebdd 100644
--- a/Lib/test/datetimetester.py
+++ b/Lib/test/datetimetester.py
@@ -1861,7 +1861,7 @@
 
         # Make sure comparison doesn't forget microseconds, and isn't done
         # via comparing a float timestamp (an IEEE double doesn't have enough
-        # precision to span microsecond resolution across years 1 thru 9999,
+        # precision to span microsecond resolution across years 1 through 9999,
         # so comparing via timestamp necessarily calls some distinct values
         # equal).
         dt1 = self.theclass(MAXYEAR, 12, 31, 23, 59, 59, 999998)
diff --git a/Lib/test/test_cmd.py b/Lib/test/test_cmd.py
index 99a483b..96e0c30 100644
--- a/Lib/test/test_cmd.py
+++ b/Lib/test/test_cmd.py
@@ -51,7 +51,7 @@
 
     Test for the function completedefault():
     >>> mycmd.completedefault()
-    This is the completedefault methode
+    This is the completedefault method
     >>> mycmd.completenames("a")
     ['add']
 
@@ -140,7 +140,7 @@
         print("Hello from postloop")
 
     def completedefault(self, *ignored):
-        print("This is the completedefault methode")
+        print("This is the completedefault method")
 
     def complete_command(self):
         print("complete command")
diff --git a/Lib/test/test_concurrent_futures.py b/Lib/test/test_concurrent_futures.py
index 675cd7a..18d0265 100644
--- a/Lib/test/test_concurrent_futures.py
+++ b/Lib/test/test_concurrent_futures.py
@@ -398,7 +398,7 @@
         queue_management_thread = executor._queue_management_thread
         del executor
 
-        # Make sure that all the executor ressources were properly cleaned by
+        # Make sure that all the executor resources were properly cleaned by
         # the shutdown process
         queue_management_thread.join()
         for p in processes.values():
@@ -886,24 +886,24 @@
         # extensive testing for deadlock caused by crashes in a pool.
         self.executor.shutdown(wait=True)
         crash_cases = [
-            # Check problem occuring while pickling a task in
+            # Check problem occurring while pickling a task in
             # the task_handler thread
             (id, (ErrorAtPickle(),), PicklingError, "error at task pickle"),
-            # Check problem occuring while unpickling a task on workers
+            # Check problem occurring while unpickling a task on workers
             (id, (ExitAtUnpickle(),), BrokenProcessPool,
              "exit at task unpickle"),
             (id, (ErrorAtUnpickle(),), BrokenProcessPool,
              "error at task unpickle"),
             (id, (CrashAtUnpickle(),), BrokenProcessPool,
              "crash at task unpickle"),
-            # Check problem occuring during func execution on workers
+            # Check problem occurring during func execution on workers
             (_crash, (), BrokenProcessPool,
              "crash during func execution on worker"),
             (_exit, (), SystemExit,
              "exit during func execution on worker"),
             (_raise_error, (RuntimeError, ), RuntimeError,
              "error during func execution on worker"),
-            # Check problem occuring while pickling a task result
+            # Check problem occurring while pickling a task result
             # on workers
             (_return_instance, (CrashAtPickle,), BrokenProcessPool,
              "crash during result pickle on worker"),
@@ -911,7 +911,7 @@
              "exit during result pickle on worker"),
             (_return_instance, (ErrorAtPickle,), PicklingError,
              "error during result pickle on worker"),
-            # Check problem occuring while unpickling a task in
+            # Check problem occurring while unpickling a task in
             # the result_handler thread
             (_return_instance, (ErrorAtUnpickle,), BrokenProcessPool,
              "error during result unpickle in result_handler"),
diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py
index 3461f20..7360b34 100644
--- a/Lib/test/test_generators.py
+++ b/Lib/test/test_generators.py
@@ -1500,7 +1500,7 @@
                 succs[final].remove(corner)
                 add_to_successors(this)
 
-        # Generate moves 3 thru m*n-1.
+        # Generate moves 3 through m*n-1.
         def advance(len=len):
             # If some successor has only one exit, must take it.
             # Else favor successors with fewer exits.
@@ -1522,7 +1522,7 @@
                         yield i
                     add_to_successors(i)
 
-        # Generate moves 3 thru m*n-1.  Alternative version using a
+        # Generate moves 3 through m*n-1.  Alternative version using a
         # stronger (but more expensive) heuristic to order successors.
         # Since the # of backtracking levels is m*n, a poor move early on
         # can take eons to undo.  Smallest square board for which this
diff --git a/Lib/test/test_weakref.py b/Lib/test/test_weakref.py
index 0384a9f..9fa0bbd 100644
--- a/Lib/test/test_weakref.py
+++ b/Lib/test/test_weakref.py
@@ -1637,7 +1637,7 @@
         # has to keep looping to find the first object we delete.
         objs.reverse()
 
-        # Turn on mutation in C.__eq__.  The first time thru the loop,
+        # Turn on mutation in C.__eq__.  The first time through the loop,
         # under the iterkeys() business the first comparison will delete
         # the last item iterkeys() would see, and that causes a
         #     RuntimeError: dictionary changed size during iteration
diff --git a/Lib/unittest/test/test_discovery.py b/Lib/unittest/test/test_discovery.py
index 48d8fe9..227b44a 100644
--- a/Lib/unittest/test/test_discovery.py
+++ b/Lib/unittest/test/test_discovery.py
@@ -199,8 +199,8 @@
                          ['a_directory', 'test_directory', 'test_directory2'])
 
         # load_tests should have been called once with loader, tests and pattern
-        # (but there are no tests in our stub module itself, so thats [] at the
-        # time of call.
+        # (but there are no tests in our stub module itself, so that is [] at
+        # the time of call).
         self.assertEqual(Module.load_tests_args,
                          [(loader, [], 'test*')])
 
diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c
index a5cf687..e82425b 100644
--- a/Modules/_asynciomodule.c
+++ b/Modules/_asynciomodule.c
@@ -187,7 +187,7 @@
         return _is_coroutine(coro);
     }
 
-    /* either an error has occured or
+    /* either an error has occurred or
        type(coro) is in iscoroutine_typecache
     */
     return has_it;
diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c
index 4a33f2d..b69fcdf 100644
--- a/Modules/_datetimemodule.c
+++ b/Modules/_datetimemodule.c
@@ -3420,7 +3420,7 @@
     PyErr_SetString(PyExc_ValueError, "fromutc: tz.dst() gave"
                     "inconsistent results; cannot convert");
 
-    /* fall thru to failure */
+    /* fall through to failure */
 Fail:
     Py_XDECREF(off);
     Py_XDECREF(dst);
diff --git a/Modules/_hashopenssl.c b/Modules/_hashopenssl.c
index 50fe9d5..44d3f63 100644
--- a/Modules/_hashopenssl.c
+++ b/Modules/_hashopenssl.c
@@ -962,7 +962,7 @@
  *  This macro generates constructor function definitions for specific
  *  hash algorithms.  These constructors are much faster than calling
  *  the generic one passing it a python string and are noticeably
- *  faster than calling a python new() wrapper.  Thats important for
+ *  faster than calling a python new() wrapper.  That is important for
  *  code that wants to make hashes of a bunch of small strings.
  *  The first call will lazy-initialize, which reports an exception
  *  if initialization fails.
diff --git a/Modules/_pickle.c b/Modules/_pickle.c
index 05f9a02..9525ad6 100644
--- a/Modules/_pickle.c
+++ b/Modules/_pickle.c
@@ -1015,7 +1015,7 @@
         if(_Pickler_CommitFrame(self)) {
             return -1;
         }
-        /* Flush the content of the commited frame to the underlying
+        /* Flush the content of the committed frame to the underlying
          * file and reuse the pickler buffer for the next frame so as
          * to limit memory usage when dumping large complex objects to
          * a file.
diff --git a/Modules/md5module.c b/Modules/md5module.c
index 6b11f0b..b019f82 100644
--- a/Modules/md5module.c
+++ b/Modules/md5module.c
@@ -293,7 +293,7 @@
         md5->curlen = 0;
     }
 
-    /* pad upto 56 bytes of zeroes */
+    /* pad up to 56 bytes of zeroes */
     while (md5->curlen < 56) {
         md5->buf[md5->curlen++] = (unsigned char)0;
     }
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index ab3465a..13936aa 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -6156,7 +6156,7 @@
     }
 #if defined(__APPLE__) && defined(AI_NUMERICSERV)
     if ((flags & AI_NUMERICSERV) && (pptr == NULL || (pptr[0] == '0' && pptr[1] == 0))) {
-        /* On OSX upto at least OSX 10.8 getaddrinfo crashes
+        /* On OSX up to at least OSX 10.8 getaddrinfo crashes
          * if AI_NUMERICSERV is set and the servname is NULL or "0".
          * This workaround avoids a segfault in libsystem.
          */
diff --git a/Objects/obmalloc.c b/Objects/obmalloc.c
index 0b8816c..0e485d6 100644
--- a/Objects/obmalloc.c
+++ b/Objects/obmalloc.c
@@ -2469,7 +2469,7 @@
  * checks.
  *
  * Return 0 if the memory debug hooks are not installed or no statistics was
- * writen into out, return 1 otherwise.
+ * written into out, return 1 otherwise.
  */
 int
 _PyObject_DebugMallocStats(FILE *out)
diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c
index 3a60946..39d43dd 100644
--- a/Objects/tupleobject.c
+++ b/Objects/tupleobject.c
@@ -335,7 +335,7 @@
 
 /* The addend 82520, was selected from the range(0, 1000000) for
    generating the greatest number of prime multipliers for tuples
-   upto length eight:
+   up to length eight:
 
      1082527, 1165049, 1082531, 1165057, 1247581, 1330103, 1082533,
      1330111, 1412633, 1165069, 1247599, 1495177, 1577699
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index a221738..1dd5348 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -5112,7 +5112,7 @@
     /* PyType_Ready is the closest thing we have to a choke point
      * for type objects, so is the best place I can think of to try
      * to get type objects into the doubly-linked list of all objects.
-     * Still, not all type objects go thru PyType_Ready.
+     * Still, not all type objects go through PyType_Ready.
      */
     _Py_AddToAllObjects((PyObject *)type, 0);
 #endif
diff --git a/Python/getargs.c b/Python/getargs.c
index 56e60f6..97c1fe8 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -1784,7 +1784,7 @@
             }
         }
 
-        /* We are into optional args, skip thru to any remaining
+        /* We are into optional args, skip through to any remaining
          * keyword args */
         msg = skipitem(&format, p_va, flags);
         if (msg) {
@@ -2176,7 +2176,7 @@
             return cleanreturn(1, &freelist);
         }
 
-        /* We are into optional args, skip thru to any remaining
+        /* We are into optional args, skip through to any remaining
          * keyword args */
         msg = skipitem(&format, p_va, flags);
         assert(msg == NULL);
