diff --git a/Doc/glossary.rst b/Doc/glossary.rst
index fa34f29..2003e0b 100644
--- a/Doc/glossary.rst
+++ b/Doc/glossary.rst
@@ -431,7 +431,8 @@
 
    mapping
       A container object that supports arbitrary key lookups and implements the
-      methods specified in the :class:`Mapping` or :class:`MutableMapping`
+      methods specified in the :class:`~collections.Mapping` or
+      :class:`~collections.MutableMapping`
       :ref:`abstract base classes <collections-abstract-base-classes>`.  Examples
       include :class:`dict`, :class:`collections.defaultdict`,
       :class:`collections.OrderedDict` and :class:`collections.Counter`.
diff --git a/Doc/install/index.rst b/Doc/install/index.rst
index f8d6305..6f4de7a 100644
--- a/Doc/install/index.rst
+++ b/Doc/install/index.rst
@@ -72,7 +72,7 @@
 do the obvious thing with it: run it if it's an executable installer, ``rpm
 --install`` it if it's an RPM, etc.  You don't need to run Python or a setup
 script, you don't need to compile anything---you might not even need to read any
-instructions (although it's always a good idea to do so anyways).
+instructions (although it's always a good idea to do so anyway).
 
 Of course, things will not always be that easy.  You might be interested in a
 module distribution that doesn't have an easy-to-use installer for your
diff --git a/Doc/library/ossaudiodev.rst b/Doc/library/ossaudiodev.rst
index 3b5a7e4..0a08428 100644
--- a/Doc/library/ossaudiodev.rst
+++ b/Doc/library/ossaudiodev.rst
@@ -14,7 +14,7 @@
    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
-   majority of Linux audio apps anyways.
+   majority of Linux audio apps anyway.
 
    Sounds like things are also complicated for other BSDs.  In response
    to my python-dev query, Thomas Wouters said:
diff --git a/Doc/tutorial/classes.rst b/Doc/tutorial/classes.rst
index bf1e26e..6ee2e94 100644
--- a/Doc/tutorial/classes.rst
+++ b/Doc/tutorial/classes.rst
@@ -598,24 +598,24 @@
 Name mangling is helpful for letting subclasses override methods without
 breaking intraclass method calls.  For example::
 
-    class Mapping:
-        def __init__(self, iterable):
-            self.items_list = []
-            self.__update(iterable)
+   class Mapping:
+       def __init__(self, iterable):
+           self.items_list = []
+           self.__update(iterable)
 
-        def update(self, iterable):
-            for item in iterable:
-                self.items_list.append(item)
+       def update(self, iterable):
+           for item in iterable:
+               self.items_list.append(item)
 
-        __update = update   # private copy of original update() method
+       __update = update   # private copy of original update() method
 
-    class MappingSubclass(Mapping):
+   class MappingSubclass(Mapping):
 
-        def update(self, keys, values):
-            # provides new signature for update()
-            # but does not break __init__()
-            for item in zip(keys, values):
-                self.items_list.append(item)
+       def update(self, keys, values):
+           # provides new signature for update()
+           # but does not break __init__()
+           for item in zip(keys, values):
+               self.items_list.append(item)
 
 Note that the mangling rules are designed mostly to avoid accidents; it still is
 possible to access or modify a variable that is considered private.  This can
diff --git a/Lib/test/list_tests.py b/Lib/test/list_tests.py
index e3a7845..be054ea 100644
--- a/Lib/test/list_tests.py
+++ b/Lib/test/list_tests.py
@@ -4,17 +4,10 @@
 
 import sys
 import os
+from functools import cmp_to_key
 
 from test import support, seq_tests
 
-def CmpToKey(mycmp):
-    'Convert a cmp= function into a key= function'
-    class K(object):
-        def __init__(self, obj):
-            self.obj = obj
-        def __lt__(self, other):
-            return mycmp(self.obj, other.obj) == -1
-    return K
 
 class CommonTest(seq_tests.CommonTest):
 
@@ -443,7 +436,7 @@
                 return 1
             else: # a > b
                 return -1
-        u.sort(key=CmpToKey(revcmp))
+        u.sort(key=cmp_to_key(revcmp))
         self.assertEqual(u, self.type2test([2,1,0,-1,-2]))
 
         # The following dumps core in unpatched Python 1.5:
@@ -456,7 +449,7 @@
             else: # xmod > ymod
                 return 1
         z = self.type2test(range(12))
-        z.sort(key=CmpToKey(myComparison))
+        z.sort(key=cmp_to_key(myComparison))
 
         self.assertRaises(TypeError, z.sort, 2)
 
@@ -468,7 +461,8 @@
                 return -1
             else: # x > y
                 return 1
-        self.assertRaises(ValueError, z.sort, key=CmpToKey(selfmodifyingComparison))
+        self.assertRaises(ValueError, z.sort,
+                          key=cmp_to_key(selfmodifyingComparison))
 
         self.assertRaises(TypeError, z.sort, 42, 42, 42, 42)
 
diff --git a/Lib/test/test_sort.py b/Lib/test/test_sort.py
index 55503b5..8f6af64 100644
--- a/Lib/test/test_sort.py
+++ b/Lib/test/test_sort.py
@@ -2,18 +2,11 @@
 import random
 import sys
 import unittest
+from functools import cmp_to_key
 
 verbose = support.verbose
 nerrors = 0
 
-def CmpToKey(mycmp):
-    'Convert a cmp= function into a key= function'
-    class K(object):
-        def __init__(self, obj):
-            self.obj = obj
-        def __lt__(self, other):
-            return mycmp(self.obj, other.obj) == -1
-    return K
 
 def check(tag, expected, raw, compare=None):
     global nerrors
@@ -23,7 +16,7 @@
 
     orig = raw[:]   # save input in case of error
     if compare:
-        raw.sort(key=CmpToKey(compare))
+        raw.sort(key=cmp_to_key(compare))
     else:
         raw.sort()
 
@@ -108,7 +101,7 @@
                 print("    Checking against an insane comparison function.")
                 print("        If the implementation isn't careful, this may segfault.")
             s = x[:]
-            s.sort(key=CmpToKey(lambda a, b:  int(random.random() * 3) - 1))
+            s.sort(key=cmp_to_key(lambda a, b:  int(random.random() * 3) - 1))
             check("an insane function left some permutation", x, s)
 
             if len(x) >= 2:
@@ -165,12 +158,12 @@
                 L.pop()
                 return (x > y) - (x < y)
             L = [1,2]
-            self.assertRaises(ValueError, L.sort, key=CmpToKey(mutating_cmp))
+            self.assertRaises(ValueError, L.sort, key=cmp_to_key(mutating_cmp))
             def mutating_cmp(x, y):
                 L.append(3)
                 del L[:]
                 return (x > y) - (x < y)
-            self.assertRaises(ValueError, L.sort, key=CmpToKey(mutating_cmp))
+            self.assertRaises(ValueError, L.sort, key=cmp_to_key(mutating_cmp))
             memorywaster = [memorywaster]
 
 #==============================================================================
@@ -185,7 +178,7 @@
         def my_cmp(x, y):
             xlower, ylower = x.lower(), y.lower()
             return (xlower > ylower) - (xlower < ylower)
-        copy.sort(key=CmpToKey(my_cmp))
+        copy.sort(key=cmp_to_key(my_cmp))
 
     def test_baddecorator(self):
         data = 'The quick Brown fox Jumped over The lazy Dog'.split()
@@ -261,8 +254,8 @@
         def my_cmp_reversed(x, y):
             x0, y0 = x[0], y[0]
             return (y0 > x0) - (y0 < x0)
-        data.sort(key=CmpToKey(my_cmp), reverse=True)
-        copy1.sort(key=CmpToKey(my_cmp_reversed))
+        data.sort(key=cmp_to_key(my_cmp), reverse=True)
+        copy1.sort(key=cmp_to_key(my_cmp_reversed))
         self.assertEqual(data, copy1)
         copy2.sort(key=lambda x: x[0], reverse=True)
         self.assertEqual(data, copy2)
diff --git a/Misc/NEWS b/Misc/NEWS
index 7da5eaa..fa91d17 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,12 @@
 Core and Builtins
 -----------------
 
+- Issue #11603: Fix a crash when __str__ is rebound as __repr__.  Patch by
+  Andreas Stührk.
+
+- Issue #11321: Fix a crash with multiple imports of the _pickle module when
+  embedding Python.  Patch by Andreas Stührk.
+
 - Verify the types of AST strings and identifiers provided by the user before
   compiling them.
 
@@ -26,8 +32,6 @@
   deallocator calls one of the methods on the type (e.g. when subclassing
   IOBase).  Diagnosis and patch by Davide Rizzo.
 
-- Issue #9611, #9015: FileIO.read() clamps the length to INT_MAX on Windows.
-
 - When a generator yields, do not retain the caller's exception state on the
   generator.
 
@@ -46,11 +50,6 @@
 - Issue #12576: Fix urlopen behavior on sites which do not send (or obfuscates)
   Connection:close header.
 
-- Issue #12102: Document that buffered files must be flushed before being used
-  with mmap. Patch by Steffen Daode Nurpmeso.
-
-- Issue #12560: Build libpython.so on OpenBSD. Patch by Stefan Sperling.
-
 - Issue #1813: Fix codec lookup under Turkish locales.
 
 - Issue #12591: Improve support of "universal newlines" in the subprocess
@@ -60,12 +59,10 @@
   a read1() method), and add an undocumented *write_through* parameter to
   mandate unbuffered writes.
 
+- Issue #9611, #9015: FileIO.read() clamps the length to INT_MAX on Windows.
+
 - Issue #10883: Fix socket leaks in urllib.request when using FTP.
 
-- Issue #12592: Make Python build on OpenBSD 5 (and future major releases).
-
-- Issue #12372: POSIX semaphores are broken on AIX: don't use them.
-
 - Issue #12571: Add a plat-linux3 directory mirroring the plat-linux2
   directory, so that "import DLFCN" and other similar imports work on
   Linux 3.0.
@@ -76,16 +73,10 @@
 - Close the call queue in concurrent.futures.ProcessPoolExecutor when
   shutdown() is called, without waiting for the garbage collector to kick in.
 
-- Issue #11603: Fix a crash when __str__ is rebound as __repr__.  Patch by
-  Andreas Stührk.
-
-- Issue #11321: Fix a crash with multiple imports of the _pickle module when
-  embedding Python.  Patch by Andreas Stührk.
-
 - Issue #12502: asyncore: fix polling loop with AF_UNIX sockets.
 
-- Issue #4376: ctypes now supports nested structures in a endian different than
-  the parent structure. Patch by Vlad Riscutia.
+- Issue #4376: ctypes now supports nested structures with an endianness
+  different than that of the parent structure.  Patch by Vlad Riscutia.
 
 - Raise ValueError when attempting to set the _CHUNK_SIZE attribute of a
   TextIOWrapper to a huge value, not TypeError.
@@ -94,15 +85,15 @@
   if the process has only one pipe.
 
 - Issue #12451: pydoc: html_getfile() now uses tokenize.open() to support
-  Python scripts using a encoding different than UTF-8 (read the coding cookie
-  of the script).
+  Python modules using a encoding different than UTF-8 (reading the coding
+  cookie of the module).
 
-- Issue #12451: pydoc: importfile() now opens the Python script in binary mode,
+- Issue #12451: pydoc: importfile() now opens the Python module in binary mode,
   instead of text mode using the locale encoding, to avoid encoding issues.
 
-- Issue #12451: runpy: run_path() now opens the Python script in binary mode,
+- Issue #12451: runpy: run_path() now opens the Python module in binary mode,
   instead of text mode using the locale encoding, to support other encodings
-  than UTF-8 (scripts using the coding cookie).
+  than UTF-8 (modules using the coding cookie).
 
 - Issue #12451: xml.dom.pulldom: parse() now opens files in binary mode instead
   of the text mode (using the locale encoding) to avoid encoding issues.
@@ -117,6 +108,21 @@
 C-API
 -----
 
+Build
+-----
+
+- Issue #12560: Build libpython.so on OpenBSD.  Patch by Stefan Sperling.
+
+- Issue #12592: Make Python build on OpenBSD 5 (and future major releases).
+
+- Issue #12372: POSIX semaphores are broken on AIX: don't use them.
+
+Tools/Demos
+-----------
+
+- Issue #10639: reindent.py no longer converts newlines and will raise
+  an error if attempting to convert a file with mixed newlines.
+
 Tests
 -----
 
@@ -236,9 +242,6 @@
   greater or equal to the default value, the value with which the interpreter
   was built.
 
-- Issue #12404: Remove C89 incompatible code from mmap module. Patch by Akira
-  Kitada.
-
 - Issue #12383: Fix subprocess module with env={}: don't copy the environment
   variables, start with an empty environment.
 
@@ -305,6 +308,9 @@
 Extension Modules
 -----------------
 
+- Issue #12404: Remove C89 incompatible code from mmap module. Patch by Akira
+  Kitada.
+
 - Issue #12221: Replace pyexpat.__version__ with the Python version.
 
 Build
@@ -319,11 +325,6 @@
   "make install" creates symlinks in --prefix bin for the "-32" files in the
   framework bin directory like the installer does.
 
-Tools/Demos
------------
-
-- Issue #10639: reindent.py no longer converts newlines and will raise
-  an error if attempting to convert a file with mixed newlines.
 
 Tests
 -----
diff --git a/Python/marshal.c b/Python/marshal.c
index 76d5690..094f732 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -57,7 +57,7 @@
     int error;  /* see WFERR_* values */
     int depth;
     /* If fp == NULL, the following are valid: */
-    PyObject * readable;    /* Stream-like object being read from */
+    PyObject *readable;    /* Stream-like object being read from */
     PyObject *str;
     char *ptr;
     char *end;
@@ -470,7 +470,7 @@
 static int
 r_string(char *s, int n, RFILE *p)
 {
-    char * ptr;
+    char *ptr;
     int read, left;
 
     if (!p->readable) {
@@ -569,7 +569,7 @@
 static PyObject *
 r_long64(RFILE *p)
 {
-    PyObject * result = NULL;
+    PyObject *result = NULL;
     long lo4 = r_long(p);
     long hi4 = r_long(p);
 
diff --git a/Tools/scripts/abitype.py b/Tools/scripts/abitype.py
old mode 100644
new mode 100755
index e35ef6a..4d96c8b
--- a/Tools/scripts/abitype.py
+++ b/Tools/scripts/abitype.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
 # This script converts a C file to use the PEP 384 type definition API
 # Usage: abitype.py < old_code > new_code
 import re, sys
diff --git a/Tools/scripts/cleanfuture.py b/Tools/scripts/cleanfuture.py
old mode 100644
new mode 100755
diff --git a/Tools/scripts/combinerefs.py b/Tools/scripts/combinerefs.py
old mode 100644
new mode 100755
diff --git a/Tools/scripts/db2pickle.py b/Tools/scripts/db2pickle.py
old mode 100644
new mode 100755
diff --git a/Tools/scripts/diff.py b/Tools/scripts/diff.py
old mode 100644
new mode 100755
index 52dcab1..9efb078
--- a/Tools/scripts/diff.py
+++ b/Tools/scripts/diff.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
 """ Command line interface to difflib.py providing diffs in four formats:
 
 * ndiff:    lists every line and highlights interline changes.
diff --git a/Tools/scripts/find_recursionlimit.py b/Tools/scripts/find_recursionlimit.py
old mode 100644
new mode 100755
diff --git a/Tools/scripts/get-remote-certificate.py b/Tools/scripts/get-remote-certificate.py
old mode 100644
new mode 100755
diff --git a/Tools/scripts/mailerdaemon.py b/Tools/scripts/mailerdaemon.py
old mode 100644
new mode 100755
index 4934b92..aeb451e
--- a/Tools/scripts/mailerdaemon.py
+++ b/Tools/scripts/mailerdaemon.py
@@ -1,4 +1,5 @@
-"""mailerdaemon - classes to parse mailer-daemon messages"""
+#!/usr/bin/env python3
+"""Classes to parse mailer-daemon messages."""
 
 import calendar
 import email.message
@@ -6,7 +7,10 @@
 import os
 import sys
 
-Unparseable = 'mailerdaemon.Unparseable'
+
+class Unparseable(Exception):
+    pass
+
 
 class ErrorMessage(email.message.Message):
     def __init__(self):
@@ -18,8 +22,10 @@
         if not sub:
             return 0
         sub = sub.lower()
-        if sub.startswith('waiting mail'): return 1
-        if 'warning' in sub: return 1
+        if sub.startswith('waiting mail'):
+            return 1
+        if 'warning' in sub:
+            return 1
         self.sub = sub
         return 0
 
@@ -145,14 +151,17 @@
         errors.append(' '.join((email.strip()+': '+reason).split()))
     return errors
 
-EMPARSERS = [emparse_list, ]
+EMPARSERS = [emparse_list]
 
 def sort_numeric(a, b):
     a = int(a)
     b = int(b)
-    if a < b: return -1
-    elif a > b: return 1
-    else: return 0
+    if a < b:
+        return -1
+    elif a > b:
+        return 1
+    else:
+        return 0
 
 def parsedir(dir, modify):
     os.chdir(dir)
diff --git a/Tools/scripts/make_ctype.py b/Tools/scripts/make_ctype.py
old mode 100644
new mode 100755
index 359d6b3..afee1c5
--- a/Tools/scripts/make_ctype.py
+++ b/Tools/scripts/make_ctype.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
 """Script that generates the ctype.h-replacement in stringobject.c."""
 
 NAMES = ("LOWER", "UPPER", "ALPHA", "DIGIT", "XDIGIT", "ALNUM", "SPACE")
diff --git a/Tools/scripts/md5sum.py b/Tools/scripts/md5sum.py
old mode 100644
new mode 100755
diff --git a/Tools/scripts/patchcheck.py b/Tools/scripts/patchcheck.py
old mode 100644
new mode 100755
index e767eda..13b8ba4
--- a/Tools/scripts/patchcheck.py
+++ b/Tools/scripts/patchcheck.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
 import re
 import sys
 import shutil
diff --git a/Tools/scripts/pickle2db.py b/Tools/scripts/pickle2db.py
old mode 100644
new mode 100755
diff --git a/Tools/scripts/pysource.py b/Tools/scripts/pysource.py
old mode 100644
new mode 100755
diff --git a/Tools/scripts/reindent-rst.py b/Tools/scripts/reindent-rst.py
index ceb84bf..25608af 100755
--- a/Tools/scripts/reindent-rst.py
+++ b/Tools/scripts/reindent-rst.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # Make a reST file compliant to our pre-commit hook.
 # Currently just remove trailing whitespace.
diff --git a/Tools/scripts/svneol.py b/Tools/scripts/svneol.py
old mode 100644
new mode 100755
