[Python-checkins] Fix docs, blurb release, pydoc-topics for 3.5.8rc2.

Larry Hastings webhook-mailer at python.org
Sat Oct 12 08:09:04 EDT 2019


https://github.com/python/cpython/commit/280a0f539a1db5bc548b031dca04af30b180f7c4
commit: 280a0f539a1db5bc548b031dca04af30b180f7c4
branch: 3.5
author: Larry Hastings <larry at hastings.org>
committer: Larry Hastings <larry at hastings.org>
date: 2019-10-12T12:07:42+01:00
summary:

Fix docs, blurb release, pydoc-topics for 3.5.8rc2.

files:
A Misc/NEWS.d/3.5.8rc2.rst
D Misc/NEWS.d/next/Library/2019-09-27-15-24-45.bpo-38216.-7yvZR.rst
D Misc/NEWS.d/next/Security/2019-09-23-21-02-46.bpo-38174.MeWuJd.rst
M Doc/tools/extensions/pyspecific.py
M Lib/pydoc_data/topics.py

diff --git a/Doc/tools/extensions/pyspecific.py b/Doc/tools/extensions/pyspecific.py
index f25c4bcd5c98e..88cbf2aab66e7 100644
--- a/Doc/tools/extensions/pyspecific.py
+++ b/Doc/tools/extensions/pyspecific.py
@@ -24,7 +24,7 @@
 from sphinx.builders import Builder
 from sphinx.util.nodes import split_explicit_title
 from sphinx.writers.html import HTMLTranslator
-from sphinx.writers.text import TextWriter
+from sphinx.writers.text import TextWriter, TextTranslator
 from sphinx.writers.latex import LaTeXTranslator
 from sphinx.domains.python import PyModulelevel, PyClassmember
 
@@ -286,8 +286,11 @@ def run(self):
 class PydocTopicsBuilder(Builder):
     name = 'pydoc-topics'
 
+    default_translator_class = TextTranslator
+
     def init(self):
         self.topics = {}
+        self.secnumbers = {}
 
     def get_outdated_docs(self):
         return 'all pydoc topics'
@@ -296,8 +299,12 @@ def get_target_uri(self, docname, typ=None):
         return ''  # no URIs
 
     def write(self, *ignored):
+        try:  # sphinx>=1.6
+            from sphinx.util import status_iterator
+        except ImportError:  # sphinx<1.6
+            status_iterator = self.status_iterator
         writer = TextWriter(self)
-        for label in self.status_iterator(pydoc_topic_labels,
+        for label in status_iterator(pydoc_topic_labels,
                                           'building topics... ',
                                           length=len(pydoc_topic_labels)):
             if label not in self.env.domaindata['std']['labels']:
diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py
index 172b4f86ada36..31a8bd0876978 100644
--- a/Lib/pydoc_data/topics.py
+++ b/Lib/pydoc_data/topics.py
@@ -1,7 +1,6 @@
 # -*- coding: utf-8 -*-
-# Autogenerated by Sphinx on Mon Sep  9 12:15:17 2019
-topics = {'assert': '\n'
-           'The "assert" statement\n'
+# Autogenerated by Sphinx on Sat Oct 12 12:05:57 2019
+topics = {'assert': 'The "assert" statement\n'
            '**********************\n'
            '\n'
            'Assert statements are a convenient way to insert debugging '
@@ -39,8 +38,7 @@
            'Assignments to "__debug__" are illegal.  The value for the '
            'built-in\n'
            'variable is determined when the interpreter starts.\n',
- 'assignment': '\n'
-               'Assignment statements\n'
+ 'assignment': 'Assignment statements\n'
                '*********************\n'
                '\n'
                'Assignment statements are used to (re)bind names to values and '
@@ -58,8 +56,9 @@
                '              | slicing\n'
                '              | "*" target\n'
                '\n'
-               '(See section *Primaries* for the syntax definitions for\n'
-               '*attributeref*, *subscription*, and *slicing*.)\n'
+               '(See section Primaries for the syntax definitions for '
+               '*attributeref*,\n'
+               '*subscription*, and *slicing*.)\n'
                '\n'
                'An assignment statement evaluates the expression list '
                '(remember that\n'
@@ -80,9 +79,8 @@
                'rules\n'
                'observed by various types and the exceptions raised are given '
                'with the\n'
-               'definition of the object types (see section *The standard '
-               'type\n'
-               'hierarchy*).\n'
+               'definition of the object types (see section The standard type\n'
+               'hierarchy).\n'
                '\n'
                'Assignment of an object to a target list, optionally enclosed '
                'in\n'
@@ -108,7 +106,7 @@
                '  corresponding targets.\n'
                '\n'
                '  * If the target list contains one target prefixed with an\n'
-               '    asterisk, called a "starred" target: The object must be '
+               '    asterisk, called a “starred” target: The object must be '
                'an\n'
                '    iterable with at least as many items as there are targets '
                'in the\n'
@@ -205,10 +203,10 @@
                '  If the primary is a mutable sequence object (such as a '
                'list), the\n'
                '  subscript must yield an integer.  If it is negative, the '
-               "sequence's\n"
+               'sequence’s\n'
                '  length is added to it.  The resulting value must be a '
                'nonnegative\n'
-               "  integer less than the sequence's length, and the sequence is "
+               '  integer less than the sequence’s length, and the sequence is '
                'asked\n'
                '  to assign the assigned object to its item with that index.  '
                'If the\n'
@@ -218,7 +216,7 @@
                '\n'
                '  If the primary is a mapping object (such as a dictionary), '
                'the\n'
-               "  subscript must have a type compatible with the mapping's key "
+               '  subscript must have a type compatible with the mapping’s key '
                'type,\n'
                '  and the mapping is then asked to create a key/datum pair '
                'which maps\n'
@@ -241,12 +239,12 @@
                'expressions are\n'
                '  evaluated, insofar they are present; defaults are zero and '
                'the\n'
-               "  sequence's length.  The bounds should evaluate to integers. "
+               '  sequence’s length.  The bounds should evaluate to integers. '
                'If\n'
-               "  either bound is negative, the sequence's length is added to "
+               '  either bound is negative, the sequence’s length is added to '
                'it.  The\n'
                '  resulting bounds are clipped to lie between zero and the '
-               "sequence's\n"
+               'sequence’s\n'
                '  length, inclusive.  Finally, the sequence object is asked to '
                'replace\n'
                '  the slice with the items of the assigned sequence.  The '
@@ -267,7 +265,7 @@
                '\n'
                'Although the definition of assignment implies that overlaps '
                'between\n'
-               "the left-hand side and the right-hand side are 'simultaneous' "
+               'the left-hand side and the right-hand side are ‘simultaneous’ '
                '(for\n'
                'example "a, b = b, a" swaps two variables), overlaps *within* '
                'the\n'
@@ -283,8 +281,9 @@
                'updated\n'
                '   print(x)\n'
                '\n'
-               'See also: **PEP 3132** - Extended Iterable Unpacking\n'
+               'See also:\n'
                '\n'
+               '  **PEP 3132** - Extended Iterable Unpacking\n'
                '     The specification for the "*target" feature.\n'
                '\n'
                '\n'
@@ -303,8 +302,8 @@
                '"/=" | "//=" | "%=" | "**="\n'
                '             | ">>=" | "<<=" | "&=" | "^=" | "|="\n'
                '\n'
-               '(See section *Primaries* for the syntax definitions of the '
-               'last three\n'
+               '(See section Primaries for the syntax definitions of the last '
+               'three\n'
                'symbols.)\n'
                '\n'
                'An augmented assignment evaluates the target (which, unlike '
@@ -349,19 +348,18 @@
                'normal\n'
                'binary operations.\n'
                '\n'
-               'For targets which are attribute references, the same *caveat '
+               'For targets which are attribute references, the same caveat '
                'about\n'
-               'class and instance attributes* applies as for regular '
+               'class and instance attributes applies as for regular '
                'assignments.\n',
- 'atom-identifiers': '\n'
-                     'Identifiers (Names)\n'
+ 'atom-identifiers': 'Identifiers (Names)\n'
                      '*******************\n'
                      '\n'
                      'An identifier occurring as an atom is a name.  See '
-                     'section\n'
-                     '*Identifiers and keywords* for lexical definition and '
-                     'section *Naming\n'
-                     'and binding* for documentation of naming and binding.\n'
+                     'section Identifiers\n'
+                     'and keywords for lexical definition and section Naming '
+                     'and binding for\n'
+                     'documentation of naming and binding.\n'
                      '\n'
                      'When the name is bound to an object, evaluation of the '
                      'atom yields\n'
@@ -394,8 +392,7 @@
                      'happen. If the class name consists only of underscores, '
                      'no\n'
                      'transformation is done.\n',
- 'atom-literals': '\n'
-                  'Literals\n'
+ 'atom-literals': 'Literals\n'
                   '********\n'
                   '\n'
                   'Python supports string and bytes literals and various '
@@ -411,12 +408,12 @@
                   'the given\n'
                   'value.  The value may be approximated in the case of '
                   'floating point\n'
-                  'and imaginary (complex) literals.  See section *Literals* '
-                  'for details.\n'
+                  'and imaginary (complex) literals.  See section Literals for '
+                  'details.\n'
                   '\n'
                   'All literals correspond to immutable data types, and hence '
                   'the\n'
-                  "object's identity is less important than its value.  "
+                  'object’s identity is less important than its value.  '
                   'Multiple\n'
                   'evaluations of literals with the same value (either the '
                   'same\n'
@@ -424,8 +421,7 @@
                   'may obtain\n'
                   'the same object or a different object with the same '
                   'value.\n',
- 'attribute-access': '\n'
-                     'Customizing attribute access\n'
+ 'attribute-access': 'Customizing attribute access\n'
                      '****************************\n'
                      '\n'
                      'The following methods can be defined to customize the '
@@ -489,8 +485,7 @@
                      'up special\n'
                      '     methods as the result of implicit invocation via '
                      'language syntax\n'
-                     '     or built-in functions. See *Special method '
-                     'lookup*.\n'
+                     '     or built-in functions. See Special method lookup.\n'
                      '\n'
                      'object.__setattr__(self, name, value)\n'
                      '\n'
@@ -533,13 +528,12 @@
                      'containing the method (a so-called *descriptor* class) '
                      'appears in an\n'
                      '*owner* class (the descriptor must be in either the '
-                     "owner's class\n"
+                     'owner’s class\n'
                      'dictionary or in the class dictionary for one of its '
                      'parents).  In the\n'
-                     'examples below, "the attribute" refers to the attribute '
+                     'examples below, “the attribute” refers to the attribute '
                      'whose name is\n'
-                     "the key of the property in the owner class' "
-                     '"__dict__".\n'
+                     'the key of the property in the owner class’ "__dict__".\n'
                      '\n'
                      'object.__get__(self, instance, owner)\n'
                      '\n'
@@ -588,8 +582,8 @@
                      '====================\n'
                      '\n'
                      'In general, a descriptor is an object attribute with '
-                     '"binding\n'
-                     'behavior", one whose attribute access has been '
+                     '“binding\n'
+                     'behavior”, one whose attribute access has been '
                      'overridden by methods\n'
                      'in the descriptor protocol:  "__get__()", "__set__()", '
                      'and\n'
@@ -599,7 +593,7 @@
                      '\n'
                      'The default behavior for attribute access is to get, '
                      'set, or delete\n'
-                     "the attribute from an object's dictionary. For instance, "
+                     'the attribute from an object’s dictionary. For instance, '
                      '"a.x" has a\n'
                      'lookup chain starting with "a.__dict__[\'x\']", then\n'
                      '"type(a).__dict__[\'x\']", and continuing through the '
@@ -654,7 +648,7 @@
                      'does not define "__get__()", then accessing the '
                      'attribute will return\n'
                      'the descriptor object itself unless there is a value in '
-                     "the object's\n"
+                     'the object’s\n'
                      'instance dictionary.  If the descriptor defines '
                      '"__set__()" and/or\n'
                      '"__delete__()", it is a data descriptor; if it defines '
@@ -752,10 +746,10 @@
                      '\n'
                      '* *__slots__* are implemented at the class level by '
                      'creating\n'
-                     '  descriptors (*Implementing Descriptors*) for each '
-                     'variable name.  As\n'
-                     '  a result, class attributes cannot be used to set '
-                     'default values for\n'
+                     '  descriptors (Implementing Descriptors) for each '
+                     'variable name.  As a\n'
+                     '  result, class attributes cannot be used to set default '
+                     'values for\n'
                      '  instance variables defined by *__slots__*; otherwise, '
                      'the class\n'
                      '  attribute would overwrite the descriptor assignment.\n'
@@ -780,7 +774,7 @@
                      '\n'
                      '* Nonempty *__slots__* does not work for classes derived '
                      'from\n'
-                     '  "variable-length" built-in types such as "int", '
+                     '  “variable-length” built-in types such as "int", '
                      '"bytes" and "tuple".\n'
                      '\n'
                      '* Any non-string iterable may be assigned to '
@@ -792,8 +786,7 @@
                      '* *__class__* assignment works only if both classes have '
                      'the same\n'
                      '  *__slots__*.\n',
- 'attribute-references': '\n'
-                         'Attribute references\n'
+ 'attribute-references': 'Attribute references\n'
                          '********************\n'
                          '\n'
                          'An attribute reference is a primary followed by a '
@@ -816,8 +809,7 @@
                          'determined by the object.  Multiple evaluations of '
                          'the same attribute\n'
                          'reference may yield different objects.\n',
- 'augassign': '\n'
-              'Augmented assignment statements\n'
+ 'augassign': 'Augmented assignment statements\n'
               '*******************************\n'
               '\n'
               'Augmented assignment is the combination, in a single statement, '
@@ -832,7 +824,7 @@
               '"/=" | "//=" | "%=" | "**="\n'
               '             | ">>=" | "<<=" | "&=" | "^=" | "|="\n'
               '\n'
-              '(See section *Primaries* for the syntax definitions of the last '
+              '(See section Primaries for the syntax definitions of the last '
               'three\n'
               'symbols.)\n'
               '\n'
@@ -877,12 +869,11 @@
               'normal\n'
               'binary operations.\n'
               '\n'
-              'For targets which are attribute references, the same *caveat '
+              'For targets which are attribute references, the same caveat '
               'about\n'
-              'class and instance attributes* applies as for regular '
+              'class and instance attributes applies as for regular '
               'assignments.\n',
- 'binary': '\n'
-           'Binary arithmetic operations\n'
+ 'binary': 'Binary arithmetic operations\n'
            '****************************\n'
            '\n'
            'The binary arithmetic operations have the conventional priority\n'
@@ -918,7 +909,7 @@
            'while\n'
            'floor division of integers results in an integer; the result is '
            'that\n'
-           "of mathematical division with the 'floor' function applied to the\n"
+           'of mathematical division with the ‘floor’ function applied to the\n'
            'result.  Division by zero raises the "ZeroDivisionError" '
            'exception.\n'
            '\n'
@@ -951,7 +942,7 @@
            'old-style\n'
            'string formatting (also known as interpolation).  The syntax for\n'
            'string formatting is described in the Python Library Reference,\n'
-           'section *printf-style String Formatting*.\n'
+           'section printf-style String Formatting.\n'
            '\n'
            'The floor division operator, the modulo operator, and the '
            '"divmod()"\n'
@@ -970,8 +961,7 @@
            'The "-" (subtraction) operator yields the difference of its '
            'arguments.\n'
            'The numeric arguments are first converted to a common type.\n',
- 'bitwise': '\n'
-            'Binary bitwise operations\n'
+ 'bitwise': 'Binary bitwise operations\n'
             '*************************\n'
             '\n'
             'Each of the three bitwise operations has a different priority '
@@ -991,15 +981,14 @@
             'The "|" operator yields the bitwise (inclusive) OR of its '
             'arguments,\n'
             'which must be integers.\n',
- 'bltin-code-objects': '\n'
-                       'Code Objects\n'
+ 'bltin-code-objects': 'Code Objects\n'
                        '************\n'
                        '\n'
                        'Code objects are used by the implementation to '
-                       'represent "pseudo-\n'
-                       'compiled" executable Python code such as a function '
+                       'represent “pseudo-\n'
+                       'compiled” executable Python code such as a function '
                        'body. They differ\n'
-                       "from function objects because they don't contain a "
+                       'from function objects because they don’t contain a '
                        'reference to their\n'
                        'global execution environment.  Code objects are '
                        'returned by the built-\n'
@@ -1013,14 +1002,13 @@
                        'source string) to the "exec()" or "eval()"  built-in '
                        'functions.\n'
                        '\n'
-                       'See *The standard type hierarchy* for more '
+                       'See The standard type hierarchy for more '
                        'information.\n',
- 'bltin-ellipsis-object': '\n'
-                          'The Ellipsis Object\n'
+ 'bltin-ellipsis-object': 'The Ellipsis Object\n'
                           '*******************\n'
                           '\n'
                           'This object is commonly used by slicing (see '
-                          '*Slicings*).  It supports\n'
+                          'Slicings).  It supports\n'
                           'no special operations.  There is exactly one '
                           'ellipsis object, named\n'
                           '"Ellipsis" (a built-in name).  "type(Ellipsis)()" '
@@ -1028,11 +1016,10 @@
                           '"Ellipsis" singleton.\n'
                           '\n'
                           'It is written as "Ellipsis" or "...".\n',
- 'bltin-null-object': '\n'
-                      'The Null Object\n'
+ 'bltin-null-object': 'The Null Object\n'
                       '***************\n'
                       '\n'
-                      "This object is returned by functions that don't "
+                      'This object is returned by functions that don’t '
                       'explicitly return a\n'
                       'value.  It supports no special operations.  There is '
                       'exactly one null\n'
@@ -1041,12 +1028,11 @@
                       'same singleton.\n'
                       '\n'
                       'It is written as "None".\n',
- 'bltin-type-objects': '\n'
-                       'Type Objects\n'
+ 'bltin-type-objects': 'Type Objects\n'
                        '************\n'
                        '\n'
                        'Type objects represent the various object types.  An '
-                       "object's type is\n"
+                       'object’s type is\n'
                        'accessed by the built-in function "type()".  There are '
                        'no special\n'
                        'operations on types.  The standard module "types" '
@@ -1054,8 +1040,7 @@
                        'all standard built-in types.\n'
                        '\n'
                        'Types are written like this: "<class \'int\'>".\n',
- 'booleans': '\n'
-             'Boolean operations\n'
+ 'booleans': 'Boolean operations\n'
              '******************\n'
              '\n'
              '   or_test  ::= and_test | or_test "or" and_test\n'
@@ -1104,8 +1089,7 @@
              'its\n'
              'argument (for example, "not \'foo\'" produces "False" rather '
              'than "\'\'".)\n',
- 'break': '\n'
-          'The "break" statement\n'
+ 'break': 'The "break" statement\n'
           '*********************\n'
           '\n'
           '   break_stmt ::= "break"\n'
@@ -1126,18 +1110,16 @@
           'clause, that "finally" clause is executed before really leaving '
           'the\n'
           'loop.\n',
- 'callable-types': '\n'
-                   'Emulating callable objects\n'
+ 'callable-types': 'Emulating callable objects\n'
                    '**************************\n'
                    '\n'
                    'object.__call__(self[, args...])\n'
                    '\n'
-                   '   Called when the instance is "called" as a function; if '
+                   '   Called when the instance is “called” as a function; if '
                    'this method\n'
                    '   is defined, "x(arg1, arg2, ...)" is a shorthand for\n'
                    '   "x.__call__(arg1, arg2, ...)".\n',
- 'calls': '\n'
-          'Calls\n'
+ 'calls': 'Calls\n'
           '*****\n'
           '\n'
           'A call calls a callable object (e.g., a *function*) with a '
@@ -1170,7 +1152,7 @@
           'objects, methods of class instances, and all objects having a\n'
           '"__call__()" method are callable).  All argument expressions are\n'
           'evaluated before the call is attempted.  Please refer to section\n'
-          '*Function definitions* for the syntax of formal *parameter* lists.\n'
+          'Function definitions for the syntax of formal *parameter* lists.\n'
           '\n'
           'If keyword arguments are present, they are first converted to\n'
           'positional arguments, as follows.  First, a list of unfilled slots '
@@ -1193,7 +1175,7 @@
           'values are calculated, once, when the function is defined; thus, a\n'
           'mutable object such as a list or dictionary used as default value '
           'will\n'
-          "be shared by all calls that don't specify an argument value for "
+          'be shared by all calls that don’t specify an argument value for '
           'the\n'
           'corresponding slot; this should usually be avoided.)  If there are '
           'any\n'
@@ -1206,7 +1188,7 @@
           '**CPython implementation detail:** An implementation may provide\n'
           'built-in functions whose positional parameters do not have names, '
           'even\n'
-          "if they are 'named' for the purpose of documentation, and which\n"
+          'if they are ‘named’ for the purpose of documentation, and which\n'
           'therefore cannot be supplied by keyword.  In CPython, this is the '
           'case\n'
           'for functions implemented in C that use "PyArg_ParseTuple()" to '
@@ -1238,16 +1220,17 @@
           'must evaluate to an *iterable*.  Elements from these iterables are\n'
           'treated as if they were additional positional arguments.  For the '
           'call\n'
-          '"f(x1, x2, *y, x3, x4)", if *y* evaluates to a sequence *y1*, ...,\n'
-          '*yM*, this is equivalent to a call with M+4 positional arguments '
-          '*x1*,\n'
-          '*x2*, *y1*, ..., *yM*, *x3*, *x4*.\n'
+          '"f(x1, x2, *y, x3, x4)", if *y* evaluates to a sequence *y1*, …, '
+          '*yM*,\n'
+          'this is equivalent to a call with M+4 positional arguments *x1*, '
+          '*x2*,\n'
+          '*y1*, …, *yM*, *x3*, *x4*.\n'
           '\n'
           'A consequence of this is that although the "*expression" syntax '
           'may\n'
           'appear *after* explicit keyword arguments, it is processed '
           '*before*\n'
-          'the keyword arguments (and any "**expression" arguments -- see '
+          'the keyword arguments (and any "**expression" arguments – see '
           'below).\n'
           'So:\n'
           '\n'
@@ -1294,7 +1277,7 @@
           'exception.  How this value is computed depends on the type of the\n'
           'callable object.\n'
           '\n'
-          'If it is---\n'
+          'If it is—\n'
           '\n'
           'a user-defined function:\n'
           '   The code block for the function is executed, passing it the\n'
@@ -1302,15 +1285,14 @@
           'the\n'
           '   formal parameters to the arguments; this is described in '
           'section\n'
-          '   *Function definitions*.  When the code block executes a '
-          '"return"\n'
+          '   Function definitions.  When the code block executes a "return"\n'
           '   statement, this specifies the return value of the function '
           'call.\n'
           '\n'
           'a built-in function or method:\n'
-          '   The result is up to the interpreter; see *Built-in Functions* '
-          'for\n'
-          '   the descriptions of built-in functions and methods.\n'
+          '   The result is up to the interpreter; see Built-in Functions for '
+          'the\n'
+          '   descriptions of built-in functions and methods.\n'
           '\n'
           'a class object:\n'
           '   A new instance of that class is returned.\n'
@@ -1325,13 +1307,12 @@
           '   The class must define a "__call__()" method; the effect is then '
           'the\n'
           '   same as if that method was called.\n',
- 'class': '\n'
-          'Class definitions\n'
+ 'class': 'Class definitions\n'
           '*****************\n'
           '\n'
-          'A class definition defines a class object (see section *The '
+          'A class definition defines a class object (see section The '
           'standard\n'
-          'type hierarchy*):\n'
+          'type hierarchy):\n'
           '\n'
           '   classdef    ::= [decorators] "class" classname [inheritance] ":" '
           'suite\n'
@@ -1340,8 +1321,8 @@
           '\n'
           'A class definition is an executable statement.  The inheritance '
           'list\n'
-          'usually gives a list of base classes (see *Customizing class '
-          'creation*\n'
+          'usually gives a list of base classes (see Customizing class '
+          'creation\n'
           'for more advanced uses), so each item in the list should evaluate '
           'to a\n'
           'class object which allows subclassing.  Classes without an '
@@ -1356,11 +1337,10 @@
           '   class Foo(object):\n'
           '       pass\n'
           '\n'
-          "The class's suite is then executed in a new execution frame (see\n"
-          '*Naming and binding*), using a newly created local namespace and '
-          'the\n'
+          'The class’s suite is then executed in a new execution frame (see\n'
+          'Naming and binding), using a newly created local namespace and the\n'
           'original global namespace. (Usually, the suite contains mostly\n'
-          "function definitions.)  When the class's suite finishes execution, "
+          'function definitions.)  When the class’s suite finishes execution, '
           'its\n'
           'execution frame is discarded but its local namespace is saved. [4] '
           'A\n'
@@ -1371,7 +1351,7 @@
           'The class name is bound to this class object in the original local\n'
           'namespace.\n'
           '\n'
-          'Class creation can be customized heavily using *metaclasses*.\n'
+          'Class creation can be customized heavily using metaclasses.\n'
           '\n'
           'Classes can also be decorated: just like when decorating '
           'functions,\n'
@@ -1389,26 +1369,25 @@
           'for\n'
           'function decorators.  The result is then bound to the class name.\n'
           '\n'
-          "**Programmer's note:** Variables defined in the class definition "
+          '**Programmer’s note:** Variables defined in the class definition '
           'are\n'
           'class attributes; they are shared by instances.  Instance '
           'attributes\n'
           'can be set in a method with "self.name = value".  Both class and\n'
           'instance attributes are accessible through the notation '
-          '""self.name"",\n'
+          '“"self.name"”,\n'
           'and an instance attribute hides a class attribute with the same '
           'name\n'
           'when accessed in this way.  Class attributes can be used as '
           'defaults\n'
           'for instance attributes, but using mutable values there can lead '
           'to\n'
-          'unexpected results.  *Descriptors* can be used to create instance\n'
+          'unexpected results.  Descriptors can be used to create instance\n'
           'variables with different implementation details.\n'
           '\n'
           'See also: **PEP 3115** - Metaclasses in Python 3 **PEP 3129** -\n'
           '  Class Decorators\n',
- 'comparisons': '\n'
-                'Comparisons\n'
+ 'comparisons': 'Comparisons\n'
                 '***********\n'
                 '\n'
                 'Unlike C, all comparison operations in Python have the same '
@@ -1433,15 +1412,15 @@
                 'y" is\n'
                 'found to be false).\n'
                 '\n'
-                'Formally, if *a*, *b*, *c*, ..., *y*, *z* are expressions and '
+                'Formally, if *a*, *b*, *c*, …, *y*, *z* are expressions and '
                 '*op1*,\n'
-                '*op2*, ..., *opN* are comparison operators, then "a op1 b op2 '
-                'c ... y\n'
+                '*op2*, …, *opN* are comparison operators, then "a op1 b op2 c '
+                '... y\n'
                 'opN z" is equivalent to "a op1 b and b op2 c and ... y opN '
                 'z", except\n'
                 'that each expression is evaluated at most once.\n'
                 '\n'
-                'Note that "a op1 b op2 c" doesn\'t imply any kind of '
+                'Note that "a op1 b op2 c" doesn’t imply any kind of '
                 'comparison between\n'
                 '*a* and *c*, so that, e.g., "x < y > z" is perfectly legal '
                 '(though\n'
@@ -1456,23 +1435,23 @@
                 'of two objects.  The objects do not need to have the same '
                 'type.\n'
                 '\n'
-                'Chapter *Objects, values and types* states that objects have '
-                'a value\n'
-                '(in addition to type and identity).  The value of an object '
-                'is a\n'
-                'rather abstract notion in Python: For example, there is no '
-                'canonical\n'
-                "access method for an object's value.  Also, there is no "
-                'requirement\n'
-                'that the value of an object should be constructed in a '
-                'particular way,\n'
-                'e.g. comprised of all its data attributes. Comparison '
-                'operators\n'
-                'implement a particular notion of what the value of an object '
-                'is.  One\n'
-                'can think of them as defining the value of an object '
-                'indirectly, by\n'
-                'means of their comparison implementation.\n'
+                'Chapter Objects, values and types states that objects have a '
+                'value (in\n'
+                'addition to type and identity).  The value of an object is a '
+                'rather\n'
+                'abstract notion in Python: For example, there is no canonical '
+                'access\n'
+                'method for an object’s value.  Also, there is no requirement '
+                'that the\n'
+                'value of an object should be constructed in a particular way, '
+                'e.g.\n'
+                'comprised of all its data attributes. Comparison operators '
+                'implement a\n'
+                'particular notion of what the value of an object is.  One can '
+                'think of\n'
+                'them as defining the value of an object indirectly, by means '
+                'of their\n'
+                'comparison implementation.\n'
                 '\n'
                 'Because all types are (direct or indirect) subtypes of '
                 '"object", they\n'
@@ -1480,8 +1459,7 @@
                 'can\n'
                 'customize their comparison behavior by implementing *rich '
                 'comparison\n'
-                'methods* like "__lt__()", described in *Basic '
-                'customization*.\n'
+                'methods* like "__lt__()", described in Basic customization.\n'
                 '\n'
                 'The default behavior for equality comparison ("==" and "!=") '
                 'is based\n'
@@ -1517,9 +1495,9 @@
                 'most\n'
                 'important built-in types.\n'
                 '\n'
-                '* Numbers of built-in numeric types (*Numeric Types --- int, '
+                '* Numbers of built-in numeric types (Numeric Types — int, '
                 'float,\n'
-                '  complex*) and of the standard library types '
+                '  complex) and of the standard library types '
                 '"fractions.Fraction" and\n'
                 '  "decimal.Decimal" can be compared within and across their '
                 'types,\n'
@@ -1780,8 +1758,7 @@
                 'is determined using the "id()" function.  "x is not y" yields '
                 'the\n'
                 'inverse truth value. [4]\n',
- 'compound': '\n'
-             'Compound statements\n'
+ 'compound': 'Compound statements\n'
              '*******************\n'
              '\n'
              'Compound statements contain (groups of) other statements; they '
@@ -1805,9 +1782,9 @@
              'compound\n'
              'statements.\n'
              '\n'
-             "A compound statement consists of one or more 'clauses.'  A "
+             'A compound statement consists of one or more ‘clauses.’  A '
              'clause\n'
-             "consists of a header and a 'suite.'  The clause headers of a\n"
+             'consists of a header and a ‘suite.’  The clause headers of a\n'
              'particular compound statement are all at the same indentation '
              'level.\n'
              'Each clause header begins with a uniquely identifying keyword '
@@ -1815,12 +1792,12 @@
              'with a colon.  A suite is a group of statements controlled by a\n'
              'clause.  A suite can be one or more semicolon-separated simple\n'
              'statements on the same line as the header, following the '
-             "header's\n"
+             'header’s\n'
              'colon, or it can be one or more indented statements on '
              'subsequent\n'
              'lines.  Only the latter form of a suite can contain nested '
              'compound\n'
-             "statements; the following is illegal, mostly because it wouldn't "
+             'statements; the following is illegal, mostly because it wouldn’t '
              'be\n'
              'clear to which "if" clause a following "else" clause would '
              'belong:\n'
@@ -1857,7 +1834,7 @@
              '"DEDENT".  Also note that optional continuation clauses always '
              'begin\n'
              'with a keyword that cannot start a statement, thus there are no\n'
-             'ambiguities (the \'dangling "else"\' problem is solved in Python '
+             'ambiguities (the ‘dangling "else"’ problem is solved in Python '
              'by\n'
              'requiring nested "if" statements to be indented).\n'
              '\n'
@@ -1877,8 +1854,8 @@
              '\n'
              'It selects exactly one of the suites by evaluating the '
              'expressions one\n'
-             'by one until one is found to be true (see section *Boolean '
-             'operations*\n'
+             'by one until one is found to be true (see section Boolean '
+             'operations\n'
              'for the definition of true and false); then that suite is '
              'executed\n'
              '(and no other part of the "if" statement is executed or '
@@ -1908,7 +1885,7 @@
              '\n'
              'A "break" statement executed in the first suite terminates the '
              'loop\n'
-             'without executing the "else" clause\'s suite.  A "continue" '
+             'without executing the "else" clause’s suite.  A "continue" '
              'statement\n'
              'executed in the first suite skips the rest of the suite and goes '
              'back\n'
@@ -1935,8 +1912,8 @@
              'iterator.  Each\n'
              'item in turn is assigned to the target list using the standard '
              'rules\n'
-             'for assignments (see *Assignment statements*), and then the '
-             'suite is\n'
+             'for assignments (see Assignment statements), and then the suite '
+             'is\n'
              'executed.  When the items are exhausted (which is immediately '
              'when the\n'
              'sequence is empty or an iterator raises a "StopIteration" '
@@ -1947,7 +1924,7 @@
              '\n'
              'A "break" statement executed in the first suite terminates the '
              'loop\n'
-             'without executing the "else" clause\'s suite.  A "continue" '
+             'without executing the "else" clause’s suite.  A "continue" '
              'statement\n'
              'executed in the first suite skips the rest of the suite and '
              'continues\n'
@@ -1974,7 +1951,7 @@
              'to at\n'
              'all by the loop.  Hint: the built-in function "range()" returns '
              'an\n'
-             "iterator of integers suitable to emulate the effect of Pascal's "
+             'iterator of integers suitable to emulate the effect of Pascal’s '
              '"for i\n'
              ':= a to b do"; e.g., "list(range(3))" returns the list "[0, 1, '
              '2]".\n'
@@ -2036,7 +2013,7 @@
              'expression\n'
              'is evaluated, and the clause matches the exception if the '
              'resulting\n'
-             'object is "compatible" with the exception.  An object is '
+             'object is “compatible” with the exception.  An object is '
              'compatible\n'
              'with an exception if it is the class or a base class of the '
              'exception\n'
@@ -2063,7 +2040,7 @@
              'assigned to\n'
              'the target specified after the "as" keyword in that except '
              'clause, if\n'
-             "present, and the except clause's suite is executed.  All except\n"
+             'present, and the except clause’s suite is executed.  All except\n'
              'clauses must have an executable block.  When the end of this '
              'block is\n'
              'reached, execution continues normally after the entire try '
@@ -2099,14 +2076,14 @@
              'alive\n'
              'until the next garbage collection occurs.\n'
              '\n'
-             "Before an except clause's suite is executed, details about the\n"
+             'Before an except clause’s suite is executed, details about the\n'
              'exception are stored in the "sys" module and can be accessed '
              'via\n'
              '"sys.exc_info()". "sys.exc_info()" returns a 3-tuple consisting '
              'of the\n'
              'exception class, the exception instance and a traceback object '
              '(see\n'
-             'section *The standard type hierarchy*) identifying the point in '
+             'section The standard type hierarchy) identifying the point in '
              'the\n'
              'program where the exception occurred.  "sys.exc_info()" values '
              'are\n'
@@ -2120,8 +2097,8 @@
              'are\n'
              'not handled by the preceding "except" clauses.\n'
              '\n'
-             'If "finally" is present, it specifies a \'cleanup\' handler.  '
-             'The "try"\n'
+             'If "finally" is present, it specifies a ‘cleanup’ handler.  The '
+             '"try"\n'
              'clause is executed, including any "except" and "else" clauses.  '
              'If an\n'
              'exception occurs in any of the clauses and is not handled, the\n'
@@ -2152,13 +2129,12 @@
              '\n'
              'When a "return", "break" or "continue" statement is executed in '
              'the\n'
-             '"try" suite of a "try"..."finally" statement, the "finally" '
-             'clause is\n'
-             'also executed \'on the way out.\' A "continue" statement is '
+             '"try" suite of a "try"…"finally" statement, the "finally" clause '
+             'is\n'
+             'also executed ‘on the way out.’ A "continue" statement is '
              'illegal in\n'
              'the "finally" clause. (The reason is a problem with the current\n'
-             'implementation --- this restriction may be lifted in the '
-             'future).\n'
+             'implementation — this restriction may be lifted in the future).\n'
              '\n'
              'The return value of a function is determined by the last '
              '"return"\n'
@@ -2178,9 +2154,9 @@
              "   'finally'\n"
              '\n'
              'Additional information on exceptions can be found in section\n'
-             '*Exceptions*, and information on using the "raise" statement to\n'
-             'generate exceptions may be found in section *The raise '
-             'statement*.\n'
+             'Exceptions, and information on using the "raise" statement to '
+             'generate\n'
+             'exceptions may be found in section The raise statement.\n'
              '\n'
              '\n'
              'The "with" statement\n'
@@ -2188,16 +2164,16 @@
              '\n'
              'The "with" statement is used to wrap the execution of a block '
              'with\n'
-             'methods defined by a context manager (see section *With '
+             'methods defined by a context manager (see section With '
              'Statement\n'
-             'Context Managers*). This allows common '
-             '"try"..."except"..."finally"\n'
-             'usage patterns to be encapsulated for convenient reuse.\n'
+             'Context Managers). This allows common "try"…"except"…"finally" '
+             'usage\n'
+             'patterns to be encapsulated for convenient reuse.\n'
              '\n'
              '   with_stmt ::= "with" with_item ("," with_item)* ":" suite\n'
              '   with_item ::= expression ["as" target]\n'
              '\n'
-             'The execution of the "with" statement with one "item" proceeds '
+             'The execution of the "with" statement with one “item” proceeds '
              'as\n'
              'follows:\n'
              '\n'
@@ -2205,9 +2181,9 @@
              '"with_item")\n'
              '   is evaluated to obtain a context manager.\n'
              '\n'
-             '2. The context manager\'s "__exit__()" is loaded for later use.\n'
+             '2. The context manager’s "__exit__()" is loaded for later use.\n'
              '\n'
-             '3. The context manager\'s "__enter__()" method is invoked.\n'
+             '3. The context manager’s "__enter__()" method is invoked.\n'
              '\n'
              '4. If a target was included in the "with" statement, the return\n'
              '   value from "__enter__()" is assigned to it.\n'
@@ -2224,8 +2200,7 @@
              '\n'
              '5. The suite is executed.\n'
              '\n'
-             '6. The context manager\'s "__exit__()" method is invoked.  If '
-             'an\n'
+             '6. The context manager’s "__exit__()" method is invoked.  If an\n'
              '   exception caused the suite to be exited, its type, value, '
              'and\n'
              '   traceback are passed as arguments to "__exit__()". Otherwise, '
@@ -2263,8 +2238,9 @@
              'Changed in version 3.1: Support for multiple context '
              'expressions.\n'
              '\n'
-             'See also: **PEP 343** - The "with" statement\n'
+             'See also:\n'
              '\n'
+             '  **PEP 343** - The “with” statement\n'
              '     The specification, background, and examples for the Python '
              '"with"\n'
              '     statement.\n'
@@ -2275,7 +2251,7 @@
              '\n'
              'A function definition defines a user-defined function object '
              '(see\n'
-             'section *The standard type hierarchy*):\n'
+             'section The standard type hierarchy):\n'
              '\n'
              '   funcdef        ::= [decorators] "def" funcname "(" '
              '[parameter_list] ")" ["->" expression] ":" suite\n'
@@ -2332,25 +2308,24 @@
              '"func".\n'
              '\n'
              'When one or more *parameters* have the form *parameter* "="\n'
-             '*expression*, the function is said to have "default parameter '
-             'values."\n'
+             '*expression*, the function is said to have “default parameter '
+             'values.”\n'
              'For a parameter with a default value, the corresponding '
              '*argument* may\n'
-             "be omitted from a call, in which case the parameter's default "
+             'be omitted from a call, in which case the parameter’s default '
              'value is\n'
              'substituted.  If a parameter has a default value, all following\n'
-             'parameters up until the ""*"" must also have a default value --- '
-             'this\n'
-             'is a syntactic restriction that is not expressed by the '
-             'grammar.\n'
+             'parameters up until the “"*"” must also have a default value — '
+             'this is\n'
+             'a syntactic restriction that is not expressed by the grammar.\n'
              '\n'
              '**Default parameter values are evaluated from left to right when '
              'the\n'
              'function definition is executed.** This means that the '
              'expression is\n'
              'evaluated once, when the function is defined, and that the same '
-             '"pre-\n'
-             'computed" value is used for each call.  This is especially '
+             '“pre-\n'
+             'computed” value is used for each call.  This is especially '
              'important\n'
              'to understand when a default parameter is a mutable object, such '
              'as a\n'
@@ -2370,30 +2345,32 @@
              '       penguin.append("property of the zoo")\n'
              '       return penguin\n'
              '\n'
-             'Function call semantics are described in more detail in section\n'
-             '*Calls*. A function call always assigns values to all '
-             'parameters\n'
-             'mentioned in the parameter list, either from position arguments, '
-             'from\n'
-             'keyword arguments, or from default values.  If the form\n'
-             '""*identifier"" is present, it is initialized to a tuple '
-             'receiving any\n'
-             'excess positional parameters, defaulting to the empty tuple.  If '
-             'the\n'
-             'form ""**identifier"" is present, it is initialized to a new\n'
-             'dictionary receiving any excess keyword arguments, defaulting to '
-             'a new\n'
-             'empty dictionary. Parameters after ""*"" or ""*identifier"" are\n'
-             'keyword-only parameters and may only be passed used keyword '
-             'arguments.\n'
-             '\n'
-             'Parameters may have annotations of the form "": expression"" '
+             'Function call semantics are described in more detail in section '
+             'Calls.\n'
+             'A function call always assigns values to all parameters '
+             'mentioned in\n'
+             'the parameter list, either from position arguments, from '
+             'keyword\n'
+             'arguments, or from default values.  If the form “"*identifier"” '
+             'is\n'
+             'present, it is initialized to a tuple receiving any excess '
+             'positional\n'
+             'parameters, defaulting to the empty tuple.  If the form\n'
+             '“"**identifier"” is present, it is initialized to a new '
+             'dictionary\n'
+             'receiving any excess keyword arguments, defaulting to a new '
+             'empty\n'
+             'dictionary. Parameters after “"*"” or “"*identifier"” are '
+             'keyword-only\n'
+             'parameters and may only be passed used keyword arguments.\n'
+             '\n'
+             'Parameters may have annotations of the form “": expression"” '
              'following\n'
              'the parameter name.  Any parameter may have an annotation even '
              'those\n'
              'of the form "*identifier" or "**identifier".  Functions may '
              'have\n'
-             '"return" annotation of the form ""-> expression"" after the '
+             '“return” annotation of the form “"-> expression"” after the '
              'parameter\n'
              'list.  These annotations can be any valid Python expression and '
              'are\n'
@@ -2403,46 +2380,47 @@
              'code.\n'
              'The presence of annotations does not change the semantics of a\n'
              'function.  The annotation values are available as values of a\n'
-             "dictionary keyed by the parameters' names in the "
+             'dictionary keyed by the parameters’ names in the '
              '"__annotations__"\n'
              'attribute of the function object.\n'
              '\n'
              'It is also possible to create anonymous functions (functions not '
              'bound\n'
              'to a name), for immediate use in expressions.  This uses lambda\n'
-             'expressions, described in section *Lambdas*.  Note that the '
+             'expressions, described in section Lambdas.  Note that the '
              'lambda\n'
              'expression is merely a shorthand for a simplified function '
              'definition;\n'
-             'a function defined in a ""def"" statement can be passed around '
+             'a function defined in a “"def"” statement can be passed around '
              'or\n'
              'assigned to another name just like a function defined by a '
              'lambda\n'
-             'expression.  The ""def"" form is actually more powerful since '
+             'expression.  The “"def"” form is actually more powerful since '
              'it\n'
              'allows the execution of multiple statements and annotations.\n'
              '\n'
-             "**Programmer's note:** Functions are first-class objects.  A "
-             '""def""\n'
+             '**Programmer’s note:** Functions are first-class objects.  A '
+             '“"def"”\n'
              'statement executed inside a function definition defines a local\n'
              'function that can be returned or passed around.  Free variables '
              'used\n'
              'in the nested function can access the local variables of the '
              'function\n'
-             'containing the def.  See section *Naming and binding* for '
+             'containing the def.  See section Naming and binding for '
              'details.\n'
              '\n'
-             'See also: **PEP 3107** - Function Annotations\n'
+             'See also:\n'
              '\n'
+             '  **PEP 3107** - Function Annotations\n'
              '     The original specification for function annotations.\n'
              '\n'
              '\n'
              'Class definitions\n'
              '=================\n'
              '\n'
-             'A class definition defines a class object (see section *The '
+             'A class definition defines a class object (see section The '
              'standard\n'
-             'type hierarchy*):\n'
+             'type hierarchy):\n'
              '\n'
              '   classdef    ::= [decorators] "class" classname [inheritance] '
              '":" suite\n'
@@ -2451,8 +2429,8 @@
              '\n'
              'A class definition is an executable statement.  The inheritance '
              'list\n'
-             'usually gives a list of base classes (see *Customizing class '
-             'creation*\n'
+             'usually gives a list of base classes (see Customizing class '
+             'creation\n'
              'for more advanced uses), so each item in the list should '
              'evaluate to a\n'
              'class object which allows subclassing.  Classes without an '
@@ -2467,12 +2445,12 @@
              '   class Foo(object):\n'
              '       pass\n'
              '\n'
-             "The class's suite is then executed in a new execution frame "
+             'The class’s suite is then executed in a new execution frame '
              '(see\n'
-             '*Naming and binding*), using a newly created local namespace and '
+             'Naming and binding), using a newly created local namespace and '
              'the\n'
              'original global namespace. (Usually, the suite contains mostly\n'
-             "function definitions.)  When the class's suite finishes "
+             'function definitions.)  When the class’s suite finishes '
              'execution, its\n'
              'execution frame is discarded but its local namespace is saved. '
              '[4] A\n'
@@ -2484,7 +2462,7 @@
              'local\n'
              'namespace.\n'
              '\n'
-             'Class creation can be customized heavily using *metaclasses*.\n'
+             'Class creation can be customized heavily using metaclasses.\n'
              '\n'
              'Classes can also be decorated: just like when decorating '
              'functions,\n'
@@ -2503,22 +2481,21 @@
              'function decorators.  The result is then bound to the class '
              'name.\n'
              '\n'
-             "**Programmer's note:** Variables defined in the class definition "
+             '**Programmer’s note:** Variables defined in the class definition '
              'are\n'
              'class attributes; they are shared by instances.  Instance '
              'attributes\n'
              'can be set in a method with "self.name = value".  Both class '
              'and\n'
              'instance attributes are accessible through the notation '
-             '""self.name"",\n'
+             '“"self.name"”,\n'
              'and an instance attribute hides a class attribute with the same '
              'name\n'
              'when accessed in this way.  Class attributes can be used as '
              'defaults\n'
              'for instance attributes, but using mutable values there can lead '
              'to\n'
-             'unexpected results.  *Descriptors* can be used to create '
-             'instance\n'
+             'unexpected results.  Descriptors can be used to create instance\n'
              'variables with different implementation details.\n'
              '\n'
              'See also: **PEP 3115** - Metaclasses in Python 3 **PEP 3129** -\n'
@@ -2647,22 +2624,20 @@
              '    exception. That new exception causes the old one to be '
              'lost.\n'
              '\n'
-             '[2] Currently, control "flows off the end" except in the case '
+             '[2] Currently, control “flows off the end” except in the case '
              'of\n'
              '    an exception or the execution of a "return", "continue", or\n'
              '    "break" statement.\n'
              '\n'
              '[3] A string literal appearing as the first statement in the\n'
-             '    function body is transformed into the function\'s "__doc__"\n'
-             "    attribute and therefore the function's *docstring*.\n"
+             '    function body is transformed into the function’s "__doc__"\n'
+             '    attribute and therefore the function’s *docstring*.\n'
              '\n'
              '[4] A string literal appearing as the first statement in the '
              'class\n'
-             '    body is transformed into the namespace\'s "__doc__" item '
-             'and\n'
-             "    therefore the class's *docstring*.\n",
- 'context-managers': '\n'
-                     'With Statement Context Managers\n'
+             '    body is transformed into the namespace’s "__doc__" item and\n'
+             '    therefore the class’s *docstring*.\n',
+ 'context-managers': 'With Statement Context Managers\n'
                      '*******************************\n'
                      '\n'
                      'A *context manager* is an object that defines the '
@@ -2674,8 +2649,8 @@
                      'for the execution of the block of code.  Context '
                      'managers are normally\n'
                      'invoked using the "with" statement (described in section '
-                     '*The with\n'
-                     'statement*), but can also be used by directly invoking '
+                     'The with\n'
+                     'statement), but can also be used by directly invoking '
                      'their methods.\n'
                      '\n'
                      'Typical uses of context managers include saving and '
@@ -2684,14 +2659,14 @@
                      'closing opened\n'
                      'files, etc.\n'
                      '\n'
-                     'For more information on context managers, see *Context '
-                     'Manager Types*.\n'
+                     'For more information on context managers, see Context '
+                     'Manager Types.\n'
                      '\n'
                      'object.__enter__(self)\n'
                      '\n'
                      '   Enter the runtime context related to this object. The '
                      '"with"\n'
-                     "   statement will bind this method's return value to the "
+                     '   statement will bind this method’s return value to the '
                      'target(s)\n'
                      '   specified in the "as" clause of the statement, if '
                      'any.\n'
@@ -2716,15 +2691,15 @@
                      '\n'
                      '   Note that "__exit__()" methods should not reraise the '
                      'passed-in\n'
-                     "   exception; this is the caller's responsibility.\n"
+                     '   exception; this is the caller’s responsibility.\n'
                      '\n'
-                     'See also: **PEP 343** - The "with" statement\n'
+                     'See also:\n'
                      '\n'
+                     '  **PEP 343** - The “with” statement\n'
                      '     The specification, background, and examples for the '
                      'Python "with"\n'
                      '     statement.\n',
- 'continue': '\n'
-             'The "continue" statement\n'
+ 'continue': 'The "continue" statement\n'
              '************************\n'
              '\n'
              '   continue_stmt ::= "continue"\n'
@@ -2741,13 +2716,12 @@
              '"finally" clause, that "finally" clause is executed before '
              'really\n'
              'starting the next loop cycle.\n',
- 'conversions': '\n'
-                'Arithmetic conversions\n'
+ 'conversions': 'Arithmetic conversions\n'
                 '**********************\n'
                 '\n'
                 'When a description of an arithmetic operator below uses the '
                 'phrase\n'
-                '"the numeric arguments are converted to a common type," this '
+                '“the numeric arguments are converted to a common type,” this '
                 'means\n'
                 'that the operator implementation for built-in types works as '
                 'follows:\n'
@@ -2765,11 +2739,10 @@
                 '\n'
                 'Some additional rules apply for certain operators (e.g., a '
                 'string as a\n'
-                "left argument to the '%' operator).  Extensions must define "
+                'left argument to the ‘%’ operator).  Extensions must define '
                 'their own\n'
                 'conversion behavior.\n',
- 'customization': '\n'
-                  'Basic customization\n'
+ 'customization': 'Basic customization\n'
                   '*******************\n'
                   '\n'
                   'object.__new__(cls[, ...])\n'
@@ -2790,7 +2763,7 @@
                   '\n'
                   '   Typical implementations create a new instance of the '
                   'class by\n'
-                  '   invoking the superclass\'s "__new__()" method using\n'
+                  '   invoking the superclass’s "__new__()" method using\n'
                   '   "super().__new__(cls[, ...])" with appropriate arguments '
                   'and then\n'
                   '   modifying the newly-created instance as necessary before '
@@ -2799,7 +2772,7 @@
                   '\n'
                   '   If "__new__()" returns an instance of *cls*, then the '
                   'new\n'
-                  '   instance\'s "__init__()" method will be invoked like\n'
+                  '   instance’s "__init__()" method will be invoked like\n'
                   '   "__init__(self[, ...])", where *self* is the new '
                   'instance and the\n'
                   '   remaining arguments are the same as were passed to '
@@ -2807,7 +2780,7 @@
                   '\n'
                   '   If "__new__()" does not return an instance of *cls*, '
                   'then the new\n'
-                  '   instance\'s "__init__()" method will not be invoked.\n'
+                  '   instance’s "__init__()" method will not be invoked.\n'
                   '\n'
                   '   "__new__()" is intended mainly to allow subclasses of '
                   'immutable\n'
@@ -2825,7 +2798,7 @@
                   'those\n'
                   '   passed to the class constructor expression.  If a base '
                   'class has an\n'
-                  '   "__init__()" method, the derived class\'s "__init__()" '
+                  '   "__init__()" method, the derived class’s "__init__()" '
                   'method, if\n'
                   '   any, must explicitly call it to ensure proper '
                   'initialization of the\n'
@@ -2846,7 +2819,7 @@
                   'is also\n'
                   '   called a destructor.  If a base class has a "__del__()" '
                   'method, the\n'
-                  '   derived class\'s "__del__()" method, if any, must '
+                  '   derived class’s "__del__()" method, if any, must '
                   'explicitly call it\n'
                   '   to ensure proper deletion of the base class part of the '
                   'instance.\n'
@@ -2862,11 +2835,11 @@
                   'exist when\n'
                   '   the interpreter exits.\n'
                   '\n'
-                  '   Note: "del x" doesn\'t directly call "x.__del__()" --- '
-                  'the former\n'
+                  '   Note: "del x" doesn’t directly call "x.__del__()" — the '
+                  'former\n'
                   '     decrements the reference count for "x" by one, and the '
                   'latter is\n'
-                  '     only called when "x"\'s reference count reaches zero.  '
+                  '     only called when "x"’s reference count reaches zero.  '
                   'Some common\n'
                   '     situations that may prevent the reference count of an '
                   'object from\n'
@@ -2896,7 +2869,7 @@
                   'Circular\n'
                   '     references which are garbage are detected and cleaned '
                   'up when the\n'
-                  "     cyclic garbage collector is enabled (it's on by "
+                  '     cyclic garbage collector is enabled (it’s on by '
                   'default). Refer\n'
                   '     to the documentation for the "gc" module for more '
                   'information\n'
@@ -2935,7 +2908,7 @@
                   'object.__repr__(self)\n'
                   '\n'
                   '   Called by the "repr()" built-in function to compute the '
-                  '"official"\n'
+                  '“official”\n'
                   '   string representation of an object.  If at all possible, '
                   'this\n'
                   '   should look like a valid Python expression that could be '
@@ -2949,7 +2922,7 @@
                   '   value must be a string object. If a class defines '
                   '"__repr__()" but\n'
                   '   not "__str__()", then "__repr__()" is also used when an '
-                  '"informal"\n'
+                  '“informal”\n'
                   '   string representation of instances of that class is '
                   'required.\n'
                   '\n'
@@ -2961,10 +2934,10 @@
                   '\n'
                   '   Called by "str(object)" and the built-in functions '
                   '"format()" and\n'
-                  '   "print()" to compute the "informal" or nicely printable '
+                  '   "print()" to compute the “informal” or nicely printable '
                   'string\n'
                   '   representation of an object.  The return value must be a '
-                  '*string*\n'
+                  'string\n'
                   '   object.\n'
                   '\n'
                   '   This method differs from "object.__repr__()" in that '
@@ -2988,7 +2961,7 @@
                   '   Called by the "format()" built-in function (and by '
                   'extension, the\n'
                   '   "str.format()" method of class "str") to produce a '
-                  '"formatted"\n'
+                  '“formatted”\n'
                   '   string representation of an object. The "format_spec" '
                   'argument is a\n'
                   '   string that contains a description of the formatting '
@@ -3001,8 +2974,8 @@
                   'or use a\n'
                   '   similar formatting option syntax.\n'
                   '\n'
-                  '   See *Format Specification Mini-Language* for a '
-                  'description of the\n'
+                  '   See Format Specification Mini-Language for a description '
+                  'of the\n'
                   '   standard formatting syntax.\n'
                   '\n'
                   '   The return value must be a string object.\n'
@@ -3018,7 +2991,7 @@
                   'object.__gt__(self, other)\n'
                   'object.__ge__(self, other)\n'
                   '\n'
-                  '   These are the so-called "rich comparison" methods. The\n'
+                  '   These are the so-called “rich comparison” methods. The\n'
                   '   correspondence between operator symbols and method names '
                   'is as\n'
                   '   follows: "x<y" calls "x.__lt__(y)", "x<=y" calls '
@@ -3065,18 +3038,18 @@
                   '   when the left argument does not support the operation '
                   'but the right\n'
                   '   argument does); rather, "__lt__()" and "__gt__()" are '
-                  "each other's\n"
-                  '   reflection, "__le__()" and "__ge__()" are each other\'s '
+                  'each other’s\n'
+                  '   reflection, "__le__()" and "__ge__()" are each other’s '
                   'reflection,\n'
                   '   and "__eq__()" and "__ne__()" are their own reflection. '
                   'If the\n'
-                  "   operands are of different types, and right operand's "
+                  '   operands are of different types, and right operand’s '
                   'type is a\n'
-                  "   direct or indirect subclass of the left operand's type, "
+                  '   direct or indirect subclass of the left operand’s type, '
                   'the\n'
                   '   reflected method of the right operand has priority, '
                   'otherwise the\n'
-                  "   left operand's method has priority.  Virtual subclassing "
+                  '   left operand’s method has priority.  Virtual subclassing '
                   'is not\n'
                   '   considered.\n'
                   '\n'
@@ -3100,12 +3073,12 @@
                   '          return hash((self.name, self.nick, self.color))\n'
                   '\n'
                   '   Note: "hash()" truncates the value returned from an '
-                  "object's\n"
+                  'object’s\n'
                   '     custom "__hash__()" method to the size of a '
                   '"Py_ssize_t".  This\n'
                   '     is typically 8 bytes on 64-bit builds and 4 bytes on '
                   '32-bit\n'
-                  '     builds. If an object\'s   "__hash__()" must '
+                  '     builds. If an object’s   "__hash__()" must '
                   'interoperate on builds\n'
                   '     of different bit sizes, be sure to check the width on '
                   'all\n'
@@ -3125,8 +3098,8 @@
                   'implement\n'
                   '   "__hash__()", since the implementation of hashable '
                   'collections\n'
-                  "   requires that a key's hash value is immutable (if the "
-                  "object's hash\n"
+                  '   requires that a key’s hash value is immutable (if the '
+                  'object’s hash\n'
                   '   value changes, it will be in the wrong hash bucket).\n'
                   '\n'
                   '   User-defined classes have "__eq__()" and "__hash__()" '
@@ -3171,7 +3144,7 @@
                   '\n'
                   '   Note: By default, the "__hash__()" values of str, bytes '
                   'and\n'
-                  '     datetime objects are "salted" with an unpredictable '
+                  '     datetime objects are “salted” with an unpredictable '
                   'random value.\n'
                   '     Although they remain constant within an individual '
                   'Python\n'
@@ -3209,9 +3182,8 @@
                   '   neither "__len__()" nor "__bool__()", all its instances '
                   'are\n'
                   '   considered true.\n',
- 'debugger': '\n'
-             '"pdb" --- The Python Debugger\n'
-             '*****************************\n'
+ 'debugger': '"pdb" — The Python Debugger\n'
+             '***************************\n'
              '\n'
              '**Source code:** Lib/pdb.py\n'
              '\n'
@@ -3229,15 +3201,15 @@
              'debugging\n'
              'and can be called under program control.\n'
              '\n'
-             'The debugger is extensible -- it is actually defined as the '
+             'The debugger is extensible – it is actually defined as the '
              'class\n'
              '"Pdb". This is currently undocumented but easily understood by '
              'reading\n'
              'the source.  The extension interface uses the modules "bdb" and '
              '"cmd".\n'
              '\n'
-             'The debugger\'s prompt is "(Pdb)". Typical usage to run a '
-             'program under\n'
+             'The debugger’s prompt is "(Pdb)". Typical usage to run a program '
+             'under\n'
              'control of the debugger is:\n'
              '\n'
              '   >>> import pdb\n'
@@ -3269,16 +3241,15 @@
              'post-\n'
              'mortem debugging (or after normal exit of the program), pdb '
              'will\n'
-             "restart the program.  Automatic restarting preserves pdb's state "
+             'restart the program.  Automatic restarting preserves pdb’s state '
              '(such\n'
              'as breakpoints) and in most cases is more useful than quitting '
              'the\n'
-             "debugger upon program's exit.\n"
+             'debugger upon program’s exit.\n'
              '\n'
              'New in version 3.2: "pdb.py" now accepts a "-c" option that '
              'executes\n'
-             'commands as if given in a ".pdbrc" file, see *Debugger '
-             'Commands*.\n'
+             'commands as if given in a ".pdbrc" file, see Debugger Commands.\n'
              '\n'
              'The typical usage to break into the debugger from a running '
              'program is\n'
@@ -3380,7 +3351,7 @@
              'want\n'
              'to access further features, you have to do this yourself:\n'
              '\n'
-             "class class pdb.Pdb(completekey='tab', stdin=None, stdout=None, "
+             "class pdb.Pdb(completekey='tab', stdin=None, stdout=None, "
              'skip=None, nosigint=False)\n'
              '\n'
              '   "Pdb" is the debugger class.\n'
@@ -3447,7 +3418,7 @@
              'the last command was a "list" command, the next 11 lines are '
              'listed.\n'
              '\n'
-             "Commands that the debugger doesn't recognize are assumed to be "
+             'Commands that the debugger doesn’t recognize are assumed to be '
              'Python\n'
              'statements and are executed in the context of the program being\n'
              'debugged.  Python statements can also be prefixed with an '
@@ -3458,9 +3429,9 @@
              'function.\n'
              'When an exception occurs in such a statement, the exception name '
              'is\n'
-             "printed but the debugger's state is not changed.\n"
+             'printed but the debugger’s state is not changed.\n'
              '\n'
-             'The debugger supports *aliases*.  Aliases can have parameters '
+             'The debugger supports aliases.  Aliases can have parameters '
              'which\n'
              'allows one a certain level of adaptability to the context under\n'
              'examination.\n'
@@ -3475,7 +3446,7 @@
              'first\n'
              '";;" pair, even if it is in the middle of a quoted string.\n'
              '\n'
-             'If a file ".pdbrc" exists in the user\'s home directory or in '
+             'If a file ".pdbrc" exists in the user’s home directory or in '
              'the\n'
              'current directory, it is read in and executed as if it had been '
              'typed\n'
@@ -3531,7 +3502,7 @@
              'prefixed\n'
              '   with a filename and a colon, to specify a breakpoint in '
              'another\n'
-             "   file (probably one that hasn't been loaded yet).  The file "
+             '   file (probably one that hasn’t been loaded yet).  The file '
              'is\n'
              '   searched on "sys.path".  Note that each breakpoint is '
              'assigned a\n'
@@ -3639,7 +3610,7 @@
              'which\n'
              '   list to execute.\n'
              '\n'
-             "   If you use the 'silent' command in the command list, the "
+             '   If you use the ‘silent’ command in the command list, the '
              'usual\n'
              '   message about stopping at a breakpoint is not printed.  This '
              'may be\n'
@@ -3698,13 +3669,13 @@
              'the\n'
              '   bottom-most frame.  This lets you jump back and execute code '
              'again,\n'
-             "   or jump forward to skip code that you don't want to run.\n"
+             '   or jump forward to skip code that you don’t want to run.\n'
              '\n'
-             '   It should be noted that not all jumps are allowed -- for '
-             'instance\n'
-             '   it is not possible to jump into the middle of a "for" loop or '
-             'out\n'
-             '   of a "finally" clause.\n'
+             '   It should be noted that not all jumps are allowed – for '
+             'instance it\n'
+             '   is not possible to jump into the middle of a "for" loop or '
+             'out of a\n'
+             '   "finally" clause.\n'
              '\n'
              'l(ist) [first[, last]]\n'
              '\n'
@@ -3747,8 +3718,8 @@
              '   value.\n'
              '\n'
              '   Note: "print()" can also be used, but is not a debugger '
-             'command\n'
-             '     --- this executes the Python "print()" function.\n'
+             'command —\n'
+             '     this executes the Python "print()" function.\n'
              '\n'
              'pp expression\n'
              '\n'
@@ -3870,8 +3841,7 @@
              '[1] Whether a frame is considered to originate in a certain '
              'module\n'
              '    is determined by the "__name__" in the frame globals.\n',
- 'del': '\n'
-        'The "del" statement\n'
+ 'del': 'The "del" statement\n'
         '*******************\n'
         '\n'
         '   del_stmt ::= "del" target_list\n'
@@ -3900,8 +3870,7 @@
         'Changed in version 3.2: Previously it was illegal to delete a name\n'
         'from the local namespace if it occurs as a free variable in a nested\n'
         'block.\n',
- 'dict': '\n'
-         'Dictionary displays\n'
+ 'dict': 'Dictionary displays\n'
          '*******************\n'
          '\n'
          'A dictionary display is a possibly empty series of key/datum pairs\n'
@@ -3920,7 +3889,7 @@
          'dictionary:\n'
          'each key object is used as a key into the dictionary to store the\n'
          'corresponding datum.  This means that you can specify the same key\n'
-         "multiple times in the key/datum list, and the final dictionary's "
+         'multiple times in the key/datum list, and the final dictionary’s '
          'value\n'
          'for that key will be the last one given.\n'
          '\n'
@@ -3934,19 +3903,18 @@
          '\n'
          'A dict comprehension, in contrast to list and set comprehensions,\n'
          'needs two expressions separated with a colon followed by the usual\n'
-         '"for" and "if" clauses. When the comprehension is run, the '
+         '“for” and “if” clauses. When the comprehension is run, the '
          'resulting\n'
          'key and value elements are inserted in the new dictionary in the '
          'order\n'
          'they are produced.\n'
          '\n'
          'Restrictions on the types of the key values are listed earlier in\n'
-         'section *The standard type hierarchy*.  (To summarize, the key type\n'
+         'section The standard type hierarchy.  (To summarize, the key type\n'
          'should be *hashable*, which excludes all mutable objects.)  Clashes\n'
          'between duplicate keys are not detected; the last datum (textually\n'
          'rightmost in the display) stored for a given key value prevails.\n',
- 'dynamic-features': '\n'
-                     'Interaction with dynamic features\n'
+ 'dynamic-features': 'Interaction with dynamic features\n'
                      '*********************************\n'
                      '\n'
                      'Name resolution of free variables occurs at runtime, not '
@@ -3972,8 +3940,7 @@
                      'override the global and local namespace.  If only one '
                      'namespace is\n'
                      'specified, it is used for both.\n',
- 'else': '\n'
-         'The "if" statement\n'
+ 'else': 'The "if" statement\n'
          '******************\n'
          '\n'
          'The "if" statement is used for conditional execution:\n'
@@ -3984,14 +3951,13 @@
          '\n'
          'It selects exactly one of the suites by evaluating the expressions '
          'one\n'
-         'by one until one is found to be true (see section *Boolean '
-         'operations*\n'
+         'by one until one is found to be true (see section Boolean '
+         'operations\n'
          'for the definition of true and false); then that suite is executed\n'
          '(and no other part of the "if" statement is executed or evaluated).\n'
          'If all expressions are false, the suite of the "else" clause, if\n'
          'present, is executed.\n',
- 'exceptions': '\n'
-               'Exceptions\n'
+ 'exceptions': 'Exceptions\n'
                '**********\n'
                '\n'
                'Exceptions are a means of breaking out of the normal flow of '
@@ -4011,7 +3977,7 @@
                'error (such as division by zero).  A Python program can also\n'
                'explicitly raise an exception with the "raise" statement. '
                'Exception\n'
-               'handlers are specified with the "try" ... "except" statement.  '
+               'handlers are specified with the "try" … "except" statement.  '
                'The\n'
                '"finally" clause of such a statement can be used to specify '
                'cleanup\n'
@@ -4019,7 +3985,7 @@
                'whether an\n'
                'exception occurred or not in the preceding code.\n'
                '\n'
-               'Python uses the "termination" model of error handling: an '
+               'Python uses the “termination” model of error handling: an '
                'exception\n'
                'handler can find out what happened and continue execution at '
                'an outer\n'
@@ -4055,10 +4021,10 @@
                'under\n'
                '  multiple versions of the interpreter.\n'
                '\n'
-               'See also the description of the "try" statement in section '
-               '*The try\n'
-               'statement* and "raise" statement in section *The raise '
-               'statement*.\n'
+               'See also the description of the "try" statement in section The '
+               'try\n'
+               'statement and "raise" statement in section The raise '
+               'statement.\n'
                '\n'
                '-[ Footnotes ]-\n'
                '\n'
@@ -4067,8 +4033,7 @@
                '    these operations is not available at the time the module '
                'is\n'
                '    compiled.\n',
- 'execmodel': '\n'
-              'Execution model\n'
+ 'execmodel': 'Execution model\n'
               '***************\n'
               '\n'
               '\n'
@@ -4088,7 +4053,7 @@
               'argument to the interpreter) is a code block.  A script command '
               '(a\n'
               'command specified on the interpreter command line with the '
-              "'**-c**'\n"
+              '‘**-c**’\n'
               'option) is a code block.  The string argument passed to the '
               'built-in\n'
               'functions "eval()" and "exec()" is a code block.\n'
@@ -4097,7 +4062,7 @@
               'contains\n'
               'some administrative information (used for debugging) and '
               'determines\n'
-              "where and how execution continues after the code block's "
+              'where and how execution continues after the code block’s '
               'execution has\n'
               'completed.\n'
               '\n'
@@ -4172,7 +4137,7 @@
               'nearest\n'
               'enclosing scope.  The set of all such scopes visible to a code '
               'block\n'
-              "is called the block's *environment*.\n"
+              'is called the block’s *environment*.\n'
               '\n'
               'When a name is not found at all, a "NameError" exception is '
               'raised. If\n'
@@ -4250,7 +4215,7 @@
               'the class. The scope of names defined in a class block is '
               'limited to\n'
               'the class block; it does not extend to the code blocks of '
-              'methods --\n'
+              'methods –\n'
               'this includes comprehensions and generator expressions since '
               'they are\n'
               'implemented using a function scope.  This means that the '
@@ -4271,7 +4236,7 @@
               'global\n'
               'namespace; this should be a dictionary or a module (in the '
               'latter case\n'
-              "the module's dictionary is used).  By default, when in the "
+              'the module’s dictionary is used).  By default, when in the '
               '"__main__"\n'
               'module, "__builtins__" is the built-in module "builtins"; when '
               'in any\n'
@@ -4335,7 +4300,7 @@
               'error (such as division by zero).  A Python program can also\n'
               'explicitly raise an exception with the "raise" statement. '
               'Exception\n'
-              'handlers are specified with the "try" ... "except" statement.  '
+              'handlers are specified with the "try" … "except" statement.  '
               'The\n'
               '"finally" clause of such a statement can be used to specify '
               'cleanup\n'
@@ -4343,7 +4308,7 @@
               'whether an\n'
               'exception occurred or not in the preceding code.\n'
               '\n'
-              'Python uses the "termination" model of error handling: an '
+              'Python uses the “termination” model of error handling: an '
               'exception\n'
               'handler can find out what happened and continue execution at an '
               'outer\n'
@@ -4379,10 +4344,10 @@
               'under\n'
               '  multiple versions of the interpreter.\n'
               '\n'
-              'See also the description of the "try" statement in section *The '
+              'See also the description of the "try" statement in section The '
               'try\n'
-              'statement* and "raise" statement in section *The raise '
-              'statement*.\n'
+              'statement and "raise" statement in section The raise '
+              'statement.\n'
               '\n'
               '-[ Footnotes ]-\n'
               '\n'
@@ -4391,8 +4356,7 @@
               '    these operations is not available at the time the module '
               'is\n'
               '    compiled.\n',
- 'exprlists': '\n'
-              'Expression lists\n'
+ 'exprlists': 'Expression lists\n'
               '****************\n'
               '\n'
               '   expression_list    ::= expression ( "," expression )* [","]\n'
@@ -4424,13 +4388,12 @@
               '(a.k.a. a\n'
               '*singleton*); it is optional in all other cases.  A single '
               'expression\n'
-              "without a trailing comma doesn't create a tuple, but rather "
+              'without a trailing comma doesn’t create a tuple, but rather '
               'yields the\n'
               'value of that expression. (To create an empty tuple, use an '
               'empty pair\n'
               'of parentheses: "()".)\n',
- 'floating': '\n'
-             'Floating point literals\n'
+ 'floating': 'Floating point literals\n'
              '***********************\n'
              '\n'
              'Floating point literals are described by the following lexical\n'
@@ -4458,8 +4421,7 @@
              'is actually an expression composed of the unary operator "-" and '
              'the\n'
              'literal "1".\n',
- 'for': '\n'
-        'The "for" statement\n'
+ 'for': 'The "for" statement\n'
         '*******************\n'
         '\n'
         'The "for" statement is used to iterate over the elements of a '
@@ -4475,7 +4437,7 @@
         'provided by the iterator, in the order returned by the iterator.  '
         'Each\n'
         'item in turn is assigned to the target list using the standard rules\n'
-        'for assignments (see *Assignment statements*), and then the suite is\n'
+        'for assignments (see Assignment statements), and then the suite is\n'
         'executed.  When the items are exhausted (which is immediately when '
         'the\n'
         'sequence is empty or an iterator raises a "StopIteration" '
@@ -4485,8 +4447,7 @@
         'terminates.\n'
         '\n'
         'A "break" statement executed in the first suite terminates the loop\n'
-        'without executing the "else" clause\'s suite.  A "continue" '
-        'statement\n'
+        'without executing the "else" clause’s suite.  A "continue" statement\n'
         'executed in the first suite skips the rest of the suite and '
         'continues\n'
         'with the next item, or with the "else" clause if there is no next\n'
@@ -4508,7 +4469,7 @@
         'Names in the target list are not deleted when the loop is finished,\n'
         'but if the sequence is empty, they will not have been assigned to at\n'
         'all by the loop.  Hint: the built-in function "range()" returns an\n'
-        'iterator of integers suitable to emulate the effect of Pascal\'s "for '
+        'iterator of integers suitable to emulate the effect of Pascal’s "for '
         'i\n'
         ':= a to b do"; e.g., "list(range(3))" returns the list "[0, 1, 2]".\n'
         '\n'
@@ -4531,8 +4492,7 @@
         '\n'
         '     for x in a[:]:\n'
         '         if x < 0: a.remove(x)\n',
- 'formatstrings': '\n'
-                  'Format String Syntax\n'
+ 'formatstrings': 'Format String Syntax\n'
                   '********************\n'
                   '\n'
                   'The "str.format()" method and the "Formatter" class share '
@@ -4541,7 +4501,7 @@
                   '"Formatter",\n'
                   'subclasses can define their own format string syntax).\n'
                   '\n'
-                  'Format strings contain "replacement fields" surrounded by '
+                  'Format strings contain “replacement fields” surrounded by '
                   'curly braces\n'
                   '"{}". Anything that is not contained in braces is '
                   'considered literal\n'
@@ -4580,33 +4540,31 @@
                   'format for the\n'
                   'replacement value.\n'
                   '\n'
-                  'See also the *Format Specification Mini-Language* section.\n'
+                  'See also the Format Specification Mini-Language section.\n'
                   '\n'
                   'The *field_name* itself begins with an *arg_name* that is '
                   'either a\n'
-                  "number or a keyword.  If it's a number, it refers to a "
+                  'number or a keyword.  If it’s a number, it refers to a '
                   'positional\n'
-                  "argument, and if it's a keyword, it refers to a named "
+                  'argument, and if it’s a keyword, it refers to a named '
                   'keyword\n'
                   'argument.  If the numerical arg_names in a format string '
                   'are 0, 1, 2,\n'
-                  '... in sequence, they can all be omitted (not just some) '
-                  'and the\n'
-                  'numbers 0, 1, 2, ... will be automatically inserted in that '
-                  'order.\n'
-                  'Because *arg_name* is not quote-delimited, it is not '
-                  'possible to\n'
-                  'specify arbitrary dictionary keys (e.g., the strings '
-                  '"\'10\'" or\n'
-                  '"\':-]\'") within a format string. The *arg_name* can be '
-                  'followed by any\n'
-                  'number of index or attribute expressions. An expression of '
-                  'the form\n'
-                  '"\'.name\'" selects the named attribute using "getattr()", '
-                  'while an\n'
-                  'expression of the form "\'[index]\'" does an index lookup '
-                  'using\n'
-                  '"__getitem__()".\n'
+                  '… in sequence, they can all be omitted (not just some) and '
+                  'the numbers\n'
+                  '0, 1, 2, … will be automatically inserted in that order. '
+                  'Because\n'
+                  '*arg_name* is not quote-delimited, it is not possible to '
+                  'specify\n'
+                  'arbitrary dictionary keys (e.g., the strings "\'10\'" or '
+                  '"\':-]\'") within\n'
+                  'a format string. The *arg_name* can be followed by any '
+                  'number of index\n'
+                  'or attribute expressions. An expression of the form '
+                  '"\'.name\'" selects\n'
+                  'the named attribute using "getattr()", while an expression '
+                  'of the form\n'
+                  '"\'[index]\'" does an index lookup using "__getitem__()".\n'
                   '\n'
                   'Changed in version 3.1: The positional argument specifiers '
                   'can be\n'
@@ -4661,7 +4619,7 @@
                   'alignment,\n'
                   'padding, decimal precision and so on.  Each value type can '
                   'define its\n'
-                  'own "formatting mini-language" or interpretation of the '
+                  'own “formatting mini-language” or interpretation of the '
                   '*format_spec*.\n'
                   '\n'
                   'Most built-in types support a common formatting '
@@ -4681,17 +4639,17 @@
                   'allows the formatting of a value to be dynamically '
                   'specified.\n'
                   '\n'
-                  'See the *Format examples* section for some examples.\n'
+                  'See the Format examples section for some examples.\n'
                   '\n'
                   '\n'
                   'Format Specification Mini-Language\n'
                   '==================================\n'
                   '\n'
-                  '"Format specifications" are used within replacement fields '
+                  '“Format specifications” are used within replacement fields '
                   'contained\n'
                   'within a format string to define how individual values are '
                   'presented\n'
-                  '(see *Format String Syntax*).  They can also be passed '
+                  '(see Format String Syntax).  They can also be passed '
                   'directly to the\n'
                   'built-in "format()" function.  Each formattable type may '
                   'define how\n'
@@ -4726,12 +4684,12 @@
                   'character that can be any character and defaults to a space '
                   'if\n'
                   'omitted. It is not possible to use a literal curly brace '
-                  '(""{"" or\n'
-                  '""}"") as the *fill* character when using the '
+                  '(“"{"” or\n'
+                  '“"}"”) as the *fill* character when using the '
                   '"str.format()" method.\n'
                   'However, it is possible to insert a curly brace with a '
                   'nested\n'
-                  "replacement field.  This limitation doesn't affect the "
+                  'replacement field.  This limitation doesn’t affect the '
                   '"format()"\n'
                   'function.\n'
                   '\n'
@@ -4747,18 +4705,33 @@
                   '+===========+============================================================+\n'
                   '   | "\'<\'"     | Forces the field to be left-aligned '
                   'within the available   |\n'
+                  '   |           | space (this is the default for most '
+                  'objects).              |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'>\'"     | Forces the field to be right-aligned '
                   'within the available  |\n'
+                  '   |           | space (this is the default for '
+                  'numbers).                   |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'=\'"     | Forces the padding to be placed after '
                   'the sign (if any)    |\n'
+                  '   |           | but before the digits.  This is used for '
+                  'printing fields   |\n'
+                  '   |           | in the form ‘+000000120’. This alignment '
+                  'option is only    |\n'
+                  '   |           | valid for numeric types.  It becomes the '
+                  'default when ‘0’  |\n'
+                  '   |           | immediately precedes the field '
+                  'width.                      |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'^\'"     | Forces the field to be centered within '
                   'the available       |\n'
+                  '   |           | '
+                  'space.                                                     '
+                  '|\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '\n'
@@ -4781,18 +4754,24 @@
                   '+===========+============================================================+\n'
                   '   | "\'+\'"     | indicates that a sign should be used for '
                   'both positive as  |\n'
+                  '   |           | well as negative '
+                  'numbers.                                  |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'-\'"     | indicates that a sign should be used '
                   'only for negative     |\n'
+                  '   |           | numbers (this is the default '
+                  'behavior).                    |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | space     | indicates that a leading space should be '
                   'used on positive  |\n'
+                  '   |           | numbers, and a minus sign on negative '
+                  'numbers.             |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '\n'
-                  'The "\'#\'" option causes the "alternate form" to be used '
+                  'The "\'#\'" option causes the “alternate form” to be used '
                   'for the\n'
                   'conversion.  The alternate form is defined differently for '
                   'different\n'
@@ -4865,6 +4844,8 @@
                   '+===========+============================================================+\n'
                   '   | "\'s\'"     | String format. This is the default type '
                   'for strings and    |\n'
+                  '   |           | may be '
+                  'omitted.                                            |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | None      | The same as '
@@ -4887,6 +4868,8 @@
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'c\'"     | Character. Converts the integer to the '
                   'corresponding       |\n'
+                  '   |           | unicode character before '
+                  'printing.                         |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'d\'"     | Decimal Integer. Outputs the number in '
@@ -4899,14 +4882,22 @@
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'x\'"     | Hex format. Outputs the number in base '
                   '16, using lower-    |\n'
+                  '   |           | case letters for the digits above '
+                  '9.                       |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'X\'"     | Hex format. Outputs the number in base '
                   '16, using upper-    |\n'
+                  '   |           | case letters for the digits above '
+                  '9.                       |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'n\'"     | Number. This is the same as "\'d\'", '
                   'except that it uses the |\n'
+                  '   |           | current locale setting to insert the '
+                  'appropriate number    |\n'
+                  '   |           | separator '
+                  'characters.                                      |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | None      | The same as '
@@ -4935,38 +4926,103 @@
                   '+===========+============================================================+\n'
                   '   | "\'e\'"     | Exponent notation. Prints the number in '
                   'scientific         |\n'
+                  '   |           | notation using the letter ‘e’ to indicate '
+                  'the exponent.    |\n'
+                  '   |           | The default precision is '
+                  '"6".                              |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'E\'"     | Exponent notation. Same as "\'e\'" '
                   'except it uses an upper   |\n'
+                  '   |           | case ‘E’ as the separator '
+                  'character.                       |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'f\'"     | Fixed point. Displays the number as a '
                   'fixed-point number.  |\n'
+                  '   |           | The default precision is '
+                  '"6".                              |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'F\'"     | Fixed point. Same as "\'f\'", but '
                   'converts "nan" to "NAN"    |\n'
+                  '   |           | and "inf" to '
+                  '"INF".                                        |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'g\'"     | General format.  For a given precision '
                   '"p >= 1", this      |\n'
+                  '   |           | rounds the number to "p" significant '
+                  'digits and then       |\n'
+                  '   |           | formats the result in either fixed-point '
+                  'format or in      |\n'
+                  '   |           | scientific notation, depending on its '
+                  'magnitude.  The      |\n'
+                  '   |           | precise rules are as follows: suppose that '
+                  'the result      |\n'
+                  '   |           | formatted with presentation type "\'e\'" '
+                  'and precision "p-1" |\n'
+                  '   |           | would have exponent "exp".  Then if "-4 <= '
+                  'exp < p", the   |\n'
+                  '   |           | number is formatted with presentation type '
+                  '"\'f\'" and       |\n'
+                  '   |           | precision "p-1-exp".  Otherwise, the '
+                  'number is formatted   |\n'
+                  '   |           | with presentation type "\'e\'" and '
+                  'precision "p-1". In both  |\n'
+                  '   |           | cases insignificant trailing zeros are '
+                  'removed from the    |\n'
+                  '   |           | significand, and the decimal point is also '
+                  'removed if      |\n'
+                  '   |           | there are no remaining digits following '
+                  'it.  Positive and  |\n'
+                  '   |           | negative infinity, positive and negative '
+                  'zero, and nans,   |\n'
+                  '   |           | are formatted as "inf", "-inf", "0", "-0" '
+                  'and "nan"        |\n'
+                  '   |           | respectively, regardless of the '
+                  'precision.  A precision of |\n'
+                  '   |           | "0" is treated as equivalent to a '
+                  'precision of "1". The    |\n'
+                  '   |           | default precision is '
+                  '"6".                                  |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'G\'"     | General format. Same as "\'g\'" except '
                   'switches to "\'E\'" if  |\n'
+                  '   |           | the number gets too large. The '
+                  'representations of infinity |\n'
+                  '   |           | and NaN are uppercased, '
+                  'too.                               |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'n\'"     | Number. This is the same as "\'g\'", '
                   'except that it uses the |\n'
+                  '   |           | current locale setting to insert the '
+                  'appropriate number    |\n'
+                  '   |           | separator '
+                  'characters.                                      |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'%\'"     | Percentage. Multiplies the number by 100 '
                   'and displays in   |\n'
+                  '   |           | fixed ("\'f\'") format, followed by a '
+                  'percent sign.          |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | None      | Similar to "\'g\'", except that '
                   'fixed-point notation, when   |\n'
+                  '   |           | used, has at least one digit past the '
+                  'decimal point. The   |\n'
+                  '   |           | default precision is as high as needed to '
+                  'represent the    |\n'
+                  '   |           | particular value. The overall effect is to '
+                  'match the       |\n'
+                  '   |           | output of "str()" as altered by the other '
+                  'format           |\n'
+                  '   |           | '
+                  'modifiers.                                                 '
+                  '|\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '\n'
@@ -5015,7 +5071,7 @@
                   "{longitude}'.format(**coord)\n"
                   "   'Coordinates: 37.24N, -115.81W'\n"
                   '\n'
-                  "Accessing arguments' attributes:\n"
+                  'Accessing arguments’ attributes:\n'
                   '\n'
                   '   >>> c = 3-5j\n'
                   "   >>> ('The complex number {0} is formed from the real "
@@ -5033,7 +5089,7 @@
                   '   >>> str(Point(4, 2))\n'
                   "   'Point(4, 2)'\n"
                   '\n'
-                  "Accessing arguments' items:\n"
+                  'Accessing arguments’ items:\n'
                   '\n'
                   '   >>> coord = (3, 5)\n'
                   "   >>> 'X: {0[0]};  Y: {0[1]}'.format(coord)\n"
@@ -5118,8 +5174,7 @@
                   '   3232235521\n'
                   '   >>>\n'
                   '   >>> width = 5\n'
-                  '   >>> for num in range(5,12): #doctest: '
-                  '+NORMALIZE_WHITESPACE\n'
+                  '   >>> for num in range(5,12): \n'
                   "   ...     for base in 'dXob':\n"
                   "   ...         print('{0:{width}{base}}'.format(num, "
                   "base=base, width=width), end=' ')\n"
@@ -5132,13 +5187,12 @@
                   '       9     9    11  1001\n'
                   '      10     A    12  1010\n'
                   '      11     B    13  1011\n',
- 'function': '\n'
-             'Function definitions\n'
+ 'function': 'Function definitions\n'
              '********************\n'
              '\n'
              'A function definition defines a user-defined function object '
              '(see\n'
-             'section *The standard type hierarchy*):\n'
+             'section The standard type hierarchy):\n'
              '\n'
              '   funcdef        ::= [decorators] "def" funcname "(" '
              '[parameter_list] ")" ["->" expression] ":" suite\n'
@@ -5195,25 +5249,24 @@
              '"func".\n'
              '\n'
              'When one or more *parameters* have the form *parameter* "="\n'
-             '*expression*, the function is said to have "default parameter '
-             'values."\n'
+             '*expression*, the function is said to have “default parameter '
+             'values.”\n'
              'For a parameter with a default value, the corresponding '
              '*argument* may\n'
-             "be omitted from a call, in which case the parameter's default "
+             'be omitted from a call, in which case the parameter’s default '
              'value is\n'
              'substituted.  If a parameter has a default value, all following\n'
-             'parameters up until the ""*"" must also have a default value --- '
-             'this\n'
-             'is a syntactic restriction that is not expressed by the '
-             'grammar.\n'
+             'parameters up until the “"*"” must also have a default value — '
+             'this is\n'
+             'a syntactic restriction that is not expressed by the grammar.\n'
              '\n'
              '**Default parameter values are evaluated from left to right when '
              'the\n'
              'function definition is executed.** This means that the '
              'expression is\n'
              'evaluated once, when the function is defined, and that the same '
-             '"pre-\n'
-             'computed" value is used for each call.  This is especially '
+             '“pre-\n'
+             'computed” value is used for each call.  This is especially '
              'important\n'
              'to understand when a default parameter is a mutable object, such '
              'as a\n'
@@ -5233,30 +5286,32 @@
              '       penguin.append("property of the zoo")\n'
              '       return penguin\n'
              '\n'
-             'Function call semantics are described in more detail in section\n'
-             '*Calls*. A function call always assigns values to all '
-             'parameters\n'
-             'mentioned in the parameter list, either from position arguments, '
-             'from\n'
-             'keyword arguments, or from default values.  If the form\n'
-             '""*identifier"" is present, it is initialized to a tuple '
-             'receiving any\n'
-             'excess positional parameters, defaulting to the empty tuple.  If '
-             'the\n'
-             'form ""**identifier"" is present, it is initialized to a new\n'
-             'dictionary receiving any excess keyword arguments, defaulting to '
-             'a new\n'
-             'empty dictionary. Parameters after ""*"" or ""*identifier"" are\n'
-             'keyword-only parameters and may only be passed used keyword '
-             'arguments.\n'
-             '\n'
-             'Parameters may have annotations of the form "": expression"" '
+             'Function call semantics are described in more detail in section '
+             'Calls.\n'
+             'A function call always assigns values to all parameters '
+             'mentioned in\n'
+             'the parameter list, either from position arguments, from '
+             'keyword\n'
+             'arguments, or from default values.  If the form “"*identifier"” '
+             'is\n'
+             'present, it is initialized to a tuple receiving any excess '
+             'positional\n'
+             'parameters, defaulting to the empty tuple.  If the form\n'
+             '“"**identifier"” is present, it is initialized to a new '
+             'dictionary\n'
+             'receiving any excess keyword arguments, defaulting to a new '
+             'empty\n'
+             'dictionary. Parameters after “"*"” or “"*identifier"” are '
+             'keyword-only\n'
+             'parameters and may only be passed used keyword arguments.\n'
+             '\n'
+             'Parameters may have annotations of the form “": expression"” '
              'following\n'
              'the parameter name.  Any parameter may have an annotation even '
              'those\n'
              'of the form "*identifier" or "**identifier".  Functions may '
              'have\n'
-             '"return" annotation of the form ""-> expression"" after the '
+             '“return” annotation of the form “"-> expression"” after the '
              'parameter\n'
              'list.  These annotations can be any valid Python expression and '
              'are\n'
@@ -5266,40 +5321,40 @@
              'code.\n'
              'The presence of annotations does not change the semantics of a\n'
              'function.  The annotation values are available as values of a\n'
-             "dictionary keyed by the parameters' names in the "
+             'dictionary keyed by the parameters’ names in the '
              '"__annotations__"\n'
              'attribute of the function object.\n'
              '\n'
              'It is also possible to create anonymous functions (functions not '
              'bound\n'
              'to a name), for immediate use in expressions.  This uses lambda\n'
-             'expressions, described in section *Lambdas*.  Note that the '
+             'expressions, described in section Lambdas.  Note that the '
              'lambda\n'
              'expression is merely a shorthand for a simplified function '
              'definition;\n'
-             'a function defined in a ""def"" statement can be passed around '
+             'a function defined in a “"def"” statement can be passed around '
              'or\n'
              'assigned to another name just like a function defined by a '
              'lambda\n'
-             'expression.  The ""def"" form is actually more powerful since '
+             'expression.  The “"def"” form is actually more powerful since '
              'it\n'
              'allows the execution of multiple statements and annotations.\n'
              '\n'
-             "**Programmer's note:** Functions are first-class objects.  A "
-             '""def""\n'
+             '**Programmer’s note:** Functions are first-class objects.  A '
+             '“"def"”\n'
              'statement executed inside a function definition defines a local\n'
              'function that can be returned or passed around.  Free variables '
              'used\n'
              'in the nested function can access the local variables of the '
              'function\n'
-             'containing the def.  See section *Naming and binding* for '
+             'containing the def.  See section Naming and binding for '
              'details.\n'
              '\n'
-             'See also: **PEP 3107** - Function Annotations\n'
+             'See also:\n'
              '\n'
+             '  **PEP 3107** - Function Annotations\n'
              '     The original specification for function annotations.\n',
- 'global': '\n'
-           'The "global" statement\n'
+ 'global': 'The "global" statement\n'
            '**********************\n'
            '\n'
            '   global_stmt ::= "global" identifier ("," identifier)*\n'
@@ -5329,8 +5384,7 @@
            'change\n'
            'the meaning of the program.\n'
            '\n'
-           '**Programmer\'s note:** "global" is a directive to the parser.  '
-           'It\n'
+           '**Programmer’s note:** "global" is a directive to the parser.  It\n'
            'applies only to code parsed at the same time as the "global"\n'
            'statement. In particular, a "global" statement contained in a '
            'string\n'
@@ -5342,8 +5396,7 @@
            'code containing the function call.  The same applies to the '
            '"eval()"\n'
            'and "compile()" functions.\n',
- 'id-classes': '\n'
-               'Reserved classes of identifiers\n'
+ 'id-classes': 'Reserved classes of identifiers\n'
                '*******************************\n'
                '\n'
                'Certain classes of identifiers (besides keywords) have '
@@ -5361,7 +5414,7 @@
                'When not\n'
                '   in interactive mode, "_" has no special meaning and is not '
                'defined.\n'
-               '   See section *The import statement*.\n'
+               '   See section The import statement.\n'
                '\n'
                '   Note: The name "_" is often used in conjunction with\n'
                '     internationalization; refer to the documentation for the\n'
@@ -5373,10 +5426,10 @@
                'interpreter\n'
                '   and its implementation (including the standard library).  '
                'Current\n'
-               '   system names are discussed in the *Special method names* '
-               'section\n'
-               '   and elsewhere.  More will likely be defined in future '
-               'versions of\n'
+               '   system names are discussed in the Special method names '
+               'section and\n'
+               '   elsewhere.  More will likely be defined in future versions '
+               'of\n'
                '   Python.  *Any* use of "__*__" names, in any context, that '
                'does not\n'
                '   follow explicitly documented use, is subject to breakage '
@@ -5388,11 +5441,10 @@
                'within the\n'
                '   context of a class definition, are re-written to use a '
                'mangled form\n'
-               '   to help avoid name clashes between "private" attributes of '
+               '   to help avoid name clashes between “private” attributes of '
                'base and\n'
-               '   derived classes. See section *Identifiers (Names)*.\n',
- 'identifiers': '\n'
-                'Identifiers and keywords\n'
+               '   derived classes. See section Identifiers (Names).\n',
+ 'identifiers': 'Identifiers and keywords\n'
                 '************************\n'
                 '\n'
                 'Identifiers (also referred to as *names*) are described by '
@@ -5509,7 +5561,7 @@
                 'When not\n'
                 '   in interactive mode, "_" has no special meaning and is not '
                 'defined.\n'
-                '   See section *The import statement*.\n'
+                '   See section The import statement.\n'
                 '\n'
                 '   Note: The name "_" is often used in conjunction with\n'
                 '     internationalization; refer to the documentation for '
@@ -5522,10 +5574,10 @@
                 'interpreter\n'
                 '   and its implementation (including the standard library).  '
                 'Current\n'
-                '   system names are discussed in the *Special method names* '
-                'section\n'
-                '   and elsewhere.  More will likely be defined in future '
-                'versions of\n'
+                '   system names are discussed in the Special method names '
+                'section and\n'
+                '   elsewhere.  More will likely be defined in future versions '
+                'of\n'
                 '   Python.  *Any* use of "__*__" names, in any context, that '
                 'does not\n'
                 '   follow explicitly documented use, is subject to breakage '
@@ -5537,11 +5589,10 @@
                 'within the\n'
                 '   context of a class definition, are re-written to use a '
                 'mangled form\n'
-                '   to help avoid name clashes between "private" attributes of '
+                '   to help avoid name clashes between “private” attributes of '
                 'base and\n'
-                '   derived classes. See section *Identifiers (Names)*.\n',
- 'if': '\n'
-       'The "if" statement\n'
+                '   derived classes. See section Identifiers (Names).\n',
+ 'if': 'The "if" statement\n'
        '******************\n'
        '\n'
        'The "if" statement is used for conditional execution:\n'
@@ -5552,14 +5603,12 @@
        '\n'
        'It selects exactly one of the suites by evaluating the expressions '
        'one\n'
-       'by one until one is found to be true (see section *Boolean '
-       'operations*\n'
+       'by one until one is found to be true (see section Boolean operations\n'
        'for the definition of true and false); then that suite is executed\n'
        '(and no other part of the "if" statement is executed or evaluated).\n'
        'If all expressions are false, the suite of the "else" clause, if\n'
        'present, is executed.\n',
- 'imaginary': '\n'
-              'Imaginary literals\n'
+ 'imaginary': 'Imaginary literals\n'
               '******************\n'
               '\n'
               'Imaginary literals are described by the following lexical '
@@ -5578,8 +5627,7 @@
               'e.g., "(3+4j)".  Some examples of imaginary literals:\n'
               '\n'
               '   3.14j   10.j    10j     .001j   1e100j  3.14e-10j\n',
- 'import': '\n'
-           'The "import" statement\n'
+ 'import': 'The "import" statement\n'
            '**********************\n'
            '\n'
            '   import_stmt     ::= "import" module ["as" name] ( "," module '
@@ -5611,17 +5659,17 @@
            'statements.\n'
            '\n'
            'The details of the first step, finding and loading modules are\n'
-           'described in greater detail in the section on the *import '
-           'system*,\n'
-           'which also describes the various types of packages and modules '
-           'that\n'
-           'can be imported, as well as all the hooks that can be used to\n'
-           'customize the import system. Note that failures in this step may\n'
-           'indicate either that the module could not be located, *or* that '
-           'an\n'
-           'error occurred while initializing the module, which includes '
-           'execution\n'
-           "of the module's code.\n"
+           'described in greater detail in the section on the import system, '
+           'which\n'
+           'also describes the various types of packages and modules that can '
+           'be\n'
+           'imported, as well as all the hooks that can be used to customize '
+           'the\n'
+           'import system. Note that failures in this step may indicate '
+           'either\n'
+           'that the module could not be located, *or* that an error occurred\n'
+           'while initializing the module, which includes execution of the\n'
+           'module’s code.\n'
            '\n'
            'If the requested module is retrieved successfully, it will be '
            'made\n'
@@ -5632,7 +5680,7 @@
            '\n'
            '* If no other name is specified, and the module being imported is '
            'a\n'
-           "  top level module, the module's name is bound in the local "
+           '  top level module, the module’s name is bound in the local '
            'namespace\n'
            '  as a reference to the imported module\n'
            '\n'
@@ -5685,7 +5733,7 @@
            '\n'
            'The *public names* defined by a module are determined by checking '
            'the\n'
-           'module\'s namespace for a variable named "__all__"; if defined, it '
+           'module’s namespace for a variable named "__all__"; if defined, it '
            'must\n'
            'be a sequence of strings which are names defined or imported by '
            'that\n'
@@ -5693,7 +5741,7 @@
            'and\n'
            'are required to exist.  If "__all__" is not defined, the set of '
            'public\n'
-           "names includes all names found in the module's namespace which do "
+           'names includes all names found in the module’s namespace which do '
            'not\n'
            'begin with an underscore character ("\'_\'").  "__all__" should '
            'contain\n'
@@ -5703,8 +5751,7 @@
            'were\n'
            'imported and used within the module).\n'
            '\n'
-           'The wild card form of import --- "from module import *" --- is '
-           'only\n'
+           'The wild card form of import — "from module import *" — is only\n'
            'allowed at the module level.  Attempting to use it in class or\n'
            'function definitions will raise a "SyntaxError".\n'
            '\n'
@@ -5812,7 +5859,7 @@
            '\n'
            '   import __future__ [as name]\n'
            '\n'
-           "That is not a future statement; it's an ordinary import statement "
+           'That is not a future statement; it’s an ordinary import statement '
            'with\n'
            'no special semantics or syntax restrictions.\n'
            '\n'
@@ -5823,24 +5870,23 @@
            'the\n'
            'future statement.  This can be controlled by optional arguments '
            'to\n'
-           '"compile()" --- see the documentation of that function for '
-           'details.\n'
+           '"compile()" — see the documentation of that function for details.\n'
            '\n'
            'A future statement typed at an interactive interpreter prompt '
            'will\n'
            'take effect for the rest of the interpreter session.  If an\n'
-           'interpreter is started with the *-i* option, is passed a script '
+           'interpreter is started with the "-i" option, is passed a script '
            'name\n'
            'to execute, and the script includes a future statement, it will be '
            'in\n'
            'effect in the interactive session started after the script is\n'
            'executed.\n'
            '\n'
-           'See also: **PEP 236** - Back to the __future__\n'
+           'See also:\n'
            '\n'
+           '  **PEP 236** - Back to the __future__\n'
            '     The original proposal for the __future__ mechanism.\n',
- 'in': '\n'
-       'Membership test operations\n'
+ 'in': 'Membership test operations\n'
        '**************************\n'
        '\n'
        'The operators "in" and "not in" test for membership.  "x in s"\n'
@@ -5876,8 +5922,7 @@
        '\n'
        'The operator "not in" is defined to have the inverse true value of\n'
        '"in".\n',
- 'integers': '\n'
-             'Integer literals\n'
+ 'integers': 'Integer literals\n'
              '****************\n'
              '\n'
              'Integer literals are described by the following lexical '
@@ -5909,8 +5954,7 @@
              '\n'
              '   7     2147483647                        0o177    0b100110111\n'
              '   3     79228162514264337593543950336     0o377    0xdeadbeef\n',
- 'lambda': '\n'
-           'Lambdas\n'
+ 'lambda': 'Lambdas\n'
            '*******\n'
            '\n'
            '   lambda_expr        ::= "lambda" [parameter_list]: expression\n'
@@ -5928,13 +5972,12 @@
            '   def <lambda>(arguments):\n'
            '       return expression\n'
            '\n'
-           'See section *Function definitions* for the syntax of parameter '
+           'See section Function definitions for the syntax of parameter '
            'lists.\n'
            'Note that functions created with lambda expressions cannot '
            'contain\n'
            'statements or annotations.\n',
- 'lists': '\n'
-          'List displays\n'
+ 'lists': 'List displays\n'
           '*************\n'
           '\n'
           'A list display is a possibly empty series of expressions enclosed '
@@ -5951,8 +5994,7 @@
           'from left to right and placed into the list object in that order.\n'
           'When a comprehension is supplied, the list is constructed from the\n'
           'elements resulting from the comprehension.\n',
- 'naming': '\n'
-           'Naming and binding\n'
+ 'naming': 'Naming and binding\n'
            '******************\n'
            '\n'
            '\n'
@@ -6020,7 +6062,7 @@
            'nearest\n'
            'enclosing scope.  The set of all such scopes visible to a code '
            'block\n'
-           "is called the block's *environment*.\n"
+           'is called the block’s *environment*.\n'
            '\n'
            'When a name is not found at all, a "NameError" exception is '
            'raised. If\n'
@@ -6094,7 +6136,7 @@
            'the class. The scope of names defined in a class block is limited '
            'to\n'
            'the class block; it does not extend to the code blocks of methods '
-           '--\n'
+           '–\n'
            'this includes comprehensions and generator expressions since they '
            'are\n'
            'implemented using a function scope.  This means that the '
@@ -6115,7 +6157,7 @@
            'global\n'
            'namespace; this should be a dictionary or a module (in the latter '
            'case\n'
-           "the module's dictionary is used).  By default, when in the "
+           'the module’s dictionary is used).  By default, when in the '
            '"__main__"\n'
            'module, "__builtins__" is the built-in module "builtins"; when in '
            'any\n'
@@ -6157,8 +6199,7 @@
            'override the global and local namespace.  If only one namespace '
            'is\n'
            'specified, it is used for both.\n',
- 'nonlocal': '\n'
-             'The "nonlocal" statement\n'
+ 'nonlocal': 'The "nonlocal" statement\n'
              '************************\n'
              '\n'
              '   nonlocal_stmt ::= "nonlocal" identifier ("," identifier)*\n'
@@ -6185,11 +6226,11 @@
              'pre-\n'
              'existing bindings in the local scope.\n'
              '\n'
-             'See also: **PEP 3104** - Access to Names in Outer Scopes\n'
+             'See also:\n'
              '\n'
+             '  **PEP 3104** - Access to Names in Outer Scopes\n'
              '     The specification for the "nonlocal" statement.\n',
- 'numbers': '\n'
-            'Numeric literals\n'
+ 'numbers': 'Numeric literals\n'
             '****************\n'
             '\n'
             'There are three types of numeric literals: integers, floating '
@@ -6200,11 +6241,10 @@
             '\n'
             'Note that numeric literals do not include a sign; a phrase like '
             '"-1"\n'
-            'is actually an expression composed of the unary operator \'"-"\' '
+            'is actually an expression composed of the unary operator ‘"-"‘ '
             'and the\n'
             'literal "1".\n',
- 'numeric-types': '\n'
-                  'Emulating numeric types\n'
+ 'numeric-types': 'Emulating numeric types\n'
                   '***********************\n'
                   '\n'
                   'The following methods can be defined to emulate numeric '
@@ -6291,15 +6331,15 @@
                   '"__rpow__()" (the\n'
                   '   coercion rules would become too complicated).\n'
                   '\n'
-                  "   Note: If the right operand's type is a subclass of the "
+                  '   Note: If the right operand’s type is a subclass of the '
                   'left\n'
-                  "     operand's type and that subclass provides the "
+                  '     operand’s type and that subclass provides the '
                   'reflected method\n'
                   '     for the operation, this method will be called before '
                   'the left\n'
-                  "     operand's non-reflected method.  This behavior allows "
+                  '     operand’s non-reflected method.  This behavior allows '
                   'subclasses\n'
-                  "     to override their ancestors' operations.\n"
+                  '     to override their ancestors’ operations.\n'
                   '\n'
                   'object.__iadd__(self, other)\n'
                   'object.__isub__(self, other)\n'
@@ -6337,9 +6377,9 @@
                   'certain\n'
                   '   situations, augmented assignment can result in '
                   'unexpected errors\n'
-                  "   (see *Why does a_tuple[i] += ['item'] raise an exception "
+                  '   (see Why does a_tuple[i] += [‘item’] raise an exception '
                   'when the\n'
-                  '   addition works?*), but this behavior is in fact part of '
+                  '   addition works?), but this behavior is in fact part of '
                   'the data\n'
                   '   model.\n'
                   '\n'
@@ -6380,22 +6420,21 @@
                   '     "__index__()" is defined "__int__()" should also be '
                   'defined, and\n'
                   '     both should return the same value.\n',
- 'objects': '\n'
-            'Objects, values and types\n'
+ 'objects': 'Objects, values and types\n'
             '*************************\n'
             '\n'
-            "*Objects* are Python's abstraction for data.  All data in a "
+            '*Objects* are Python’s abstraction for data.  All data in a '
             'Python\n'
             'program is represented by objects or by relations between '
             'objects. (In\n'
-            'a sense, and in conformance to Von Neumann\'s model of a "stored\n'
-            'program computer," code is also represented by objects.)\n'
+            'a sense, and in conformance to Von Neumann’s model of a “stored\n'
+            'program computer,” code is also represented by objects.)\n'
             '\n'
-            "Every object has an identity, a type and a value.  An object's\n"
+            'Every object has an identity, a type and a value.  An object’s\n'
             '*identity* never changes once it has been created; you may think '
             'of it\n'
-            'as the object\'s address in memory.  The \'"is"\' operator '
-            'compares the\n'
+            'as the object’s address in memory.  The ‘"is"’ operator compares '
+            'the\n'
             'identity of two objects; the "id()" function returns an integer\n'
             'representing its identity.\n'
             '\n'
@@ -6403,14 +6442,14 @@
             'memory\n'
             'address where "x" is stored.\n'
             '\n'
-            "An object's type determines the operations that the object "
+            'An object’s type determines the operations that the object '
             'supports\n'
-            '(e.g., "does it have a length?") and also defines the possible '
+            '(e.g., “does it have a length?”) and also defines the possible '
             'values\n'
             'for objects of that type.  The "type()" function returns an '
-            "object's\n"
+            'object’s\n'
             'type (which is an object itself).  Like its identity, an '
-            "object's\n"
+            'object’s\n'
             '*type* is also unchangeable. [1]\n'
             '\n'
             'The *value* of some objects can change.  Objects whose value can\n'
@@ -6419,14 +6458,14 @@
             'once they are created are called *immutable*. (The value of an\n'
             'immutable container object that contains a reference to a '
             'mutable\n'
-            "object can change when the latter's value is changed; however "
+            'object can change when the latter’s value is changed; however '
             'the\n'
             'container is still considered immutable, because the collection '
             'of\n'
             'objects it contains cannot be changed.  So, immutability is not\n'
             'strictly the same as having an unchangeable value, it is more '
             'subtle.)\n'
-            "An object's mutability is determined by its type; for instance,\n"
+            'An object’s mutability is determined by its type; for instance,\n'
             'numbers, strings and tuples are immutable, while dictionaries '
             'and\n'
             'lists are mutable.\n'
@@ -6434,9 +6473,9 @@
             'Objects are never explicitly destroyed; however, when they '
             'become\n'
             'unreachable they may be garbage-collected.  An implementation is\n'
-            'allowed to postpone garbage collection or omit it altogether --- '
-            'it is\n'
-            'a matter of implementation quality how garbage collection is\n'
+            'allowed to postpone garbage collection or omit it altogether — it '
+            'is a\n'
+            'matter of implementation quality how garbage collection is\n'
             'implemented, as long as no objects are collected that are still\n'
             'reachable.\n'
             '\n'
@@ -6456,13 +6495,14 @@
             '(so\n'
             'you should always close files explicitly).\n'
             '\n'
-            "Note that the use of the implementation's tracing or debugging\n"
+            'Note that the use of the implementation’s tracing or debugging\n'
             'facilities may keep objects alive that would normally be '
             'collectable.\n'
-            'Also note that catching an exception with a \'"try"..."except"\'\n'
-            'statement may keep objects alive.\n'
+            'Also note that catching an exception with a ‘"try"…"except"’ '
+            'statement\n'
+            'may keep objects alive.\n'
             '\n'
-            'Some objects contain references to "external" resources such as '
+            'Some objects contain references to “external” resources such as '
             'open\n'
             'files or windows.  It is understood that these resources are '
             'freed\n'
@@ -6473,14 +6513,13 @@
             'release the external resource, usually a "close()" method. '
             'Programs\n'
             'are strongly recommended to explicitly close such objects.  The\n'
-            '\'"try"..."finally"\' statement and the \'"with"\' statement '
-            'provide\n'
+            '‘"try"…"finally"’ statement and the ‘"with"’ statement provide\n'
             'convenient ways to do this.\n'
             '\n'
             'Some objects contain references to other objects; these are '
             'called\n'
             '*containers*. Examples of containers are tuples, lists and\n'
-            "dictionaries.  The references are part of a container's value.  "
+            'dictionaries.  The references are part of a container’s value.  '
             'In\n'
             'most cases, when we talk about the value of a container, we imply '
             'the\n'
@@ -6509,8 +6548,7 @@
             'created empty lists. (Note that "c = d = []" assigns the same '
             'object\n'
             'to both "c" and "d".)\n',
- 'operator-summary': '\n'
-                     'Operator precedence\n'
+ 'operator-summary': 'Operator precedence\n'
                      '*******************\n'
                      '\n'
                      'The following table summarizes the operator precedence '
@@ -6529,7 +6567,7 @@
                      'tests, all have\n'
                      'the same precedence and have a left-to-right chaining '
                      'feature as\n'
-                     'described in the *Comparisons* section.\n'
+                     'described in the Comparisons section.\n'
                      '\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
                      '| Operator                                        | '
@@ -6538,7 +6576,7 @@
                      '| "lambda"                                        | '
                      'Lambda expression                     |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| "if" -- "else"                                  | '
+                     '| "if" – "else"                                   | '
                      'Conditional expression                |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
                      '| "or"                                            | '
@@ -6572,6 +6610,8 @@
                      '+-------------------------------------------------+---------------------------------------+\n'
                      '| "*", "@", "/", "//", "%"                        | '
                      'Multiplication, matrix multiplication |\n'
+                     '|                                                 | '
+                     'division, remainder [5]               |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
                      '| "+x", "-x", "~x"                                | '
                      'Positive, negative, bitwise NOT       |\n'
@@ -6591,6 +6631,8 @@
                      'Binding or tuple display, list        |\n'
                      '| value...}", "{expressions...}"                  | '
                      'display, dictionary display, set      |\n'
+                     '|                                                 | '
+                     'display                               |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
                      '\n'
                      '-[ Footnotes ]-\n'
@@ -6615,7 +6657,7 @@
                      'application.\n'
                      '\n'
                      '[2] If x is very close to an exact integer multiple of '
-                     "y, it's\n"
+                     'y, it’s\n'
                      '    possible for "x//y" to be one larger than '
                      '"(x-x%y)//y" due to\n'
                      '    rounding.  In such cases, Python returns the latter '
@@ -6626,8 +6668,8 @@
                      '\n'
                      '[3] The Unicode standard distinguishes between *code '
                      'points* (e.g.\n'
-                     '    U+0041) and *abstract characters* (e.g. "LATIN '
-                     'CAPITAL LETTER A").\n'
+                     '    U+0041) and *abstract characters* (e.g. “LATIN '
+                     'CAPITAL LETTER A”).\n'
                      '    While most abstract characters in Unicode are only '
                      'represented\n'
                      '    using one code point, there is a number of abstract '
@@ -6635,8 +6677,8 @@
                      '    that can in addition be represented using a sequence '
                      'of more than\n'
                      '    one code point.  For example, the abstract character '
-                     '"LATIN\n'
-                     '    CAPITAL LETTER C WITH CEDILLA" can be represented as '
+                     '“LATIN\n'
+                     '    CAPITAL LETTER C WITH CEDILLA” can be represented as '
                      'a single\n'
                      '    *precomposed character* at code position U+00C7, or '
                      'as a sequence\n'
@@ -6652,9 +6694,9 @@
                      'to humans.  For\n'
                      '    example, ""\\u00C7" == "\\u0043\\u0327"" is "False", '
                      'even though both\n'
-                     '    strings represent the same abstract character "LATIN '
+                     '    strings represent the same abstract character “LATIN '
                      'CAPITAL\n'
-                     '    LETTER C WITH CEDILLA".\n'
+                     '    LETTER C WITH CEDILLA”.\n'
                      '\n'
                      '    To compare strings at the level of abstract '
                      'characters (that is,\n'
@@ -6679,22 +6721,21 @@
                      'arithmetic\n'
                      '    or bitwise unary operator on its right, that is, '
                      '"2**-1" is "0.5".\n',
- 'pass': '\n'
-         'The "pass" statement\n'
+ 'pass': 'The "pass" statement\n'
          '********************\n'
          '\n'
          '   pass_stmt ::= "pass"\n'
          '\n'
-         '"pass" is a null operation --- when it is executed, nothing '
-         'happens.\n'
-         'It is useful as a placeholder when a statement is required\n'
-         'syntactically, but no code needs to be executed, for example:\n'
+         '"pass" is a null operation — when it is executed, nothing happens. '
+         'It\n'
+         'is useful as a placeholder when a statement is required '
+         'syntactically,\n'
+         'but no code needs to be executed, for example:\n'
          '\n'
          '   def f(arg): pass    # a function that does nothing (yet)\n'
          '\n'
          '   class C: pass       # a class with no methods (yet)\n',
- 'power': '\n'
-          'The power operator\n'
+ 'power': 'The power operator\n'
           '******************\n'
           '\n'
           'The power operator binds more tightly than unary operators on its\n'
@@ -6728,8 +6769,7 @@
           'Raising a negative number to a fractional power results in a '
           '"complex"\n'
           'number. (In earlier versions it raised a "ValueError".)\n',
- 'raise': '\n'
-          'The "raise" statement\n'
+ 'raise': 'The "raise" statement\n'
           '*********************\n'
           '\n'
           '   raise_stmt ::= "raise" [expression ["from" expression]]\n'
@@ -6746,7 +6786,7 @@
           '"BaseException". If it is a class, the exception instance will be\n'
           'obtained when needed by instantiating the class with no arguments.\n'
           '\n'
-          "The *type* of the exception is the exception instance's class, the\n"
+          'The *type* of the exception is the exception instance’s class, the\n'
           '*value* is the instance itself.\n'
           '\n'
           'A traceback object is normally created automatically when an '
@@ -6792,7 +6832,7 @@
           'inside\n'
           'an exception handler or a "finally" clause: the previous exception '
           'is\n'
-          'then attached as the new exception\'s "__context__" attribute:\n'
+          'then attached as the new exception’s "__context__" attribute:\n'
           '\n'
           '   >>> try:\n'
           '   ...     print(1 / 0)\n'
@@ -6811,11 +6851,10 @@
           '   RuntimeError: Something bad happened\n'
           '\n'
           'Additional information on exceptions can be found in section\n'
-          '*Exceptions*, and information about handling exceptions is in '
+          'Exceptions, and information about handling exceptions is in '
           'section\n'
-          '*The try statement*.\n',
- 'return': '\n'
-           'The "return" statement\n'
+          'The try statement.\n',
+ 'return': 'The "return" statement\n'
            '**********************\n'
            '\n'
            '   return_stmt ::= "return" [expression_list]\n'
@@ -6843,8 +6882,7 @@
            'The\n'
            'returned value (if any) is used as an argument to construct\n'
            '"StopIteration" and becomes the "StopIteration.value" attribute.\n',
- 'sequence-types': '\n'
-                   'Emulating container types\n'
+ 'sequence-types': 'Emulating container types\n'
                    '*************************\n'
                    '\n'
                    'The following methods can be defined to implement '
@@ -6867,7 +6905,7 @@
                    '"clear()",\n'
                    '"setdefault()", "pop()", "popitem()", "copy()", and '
                    '"update()"\n'
-                   "behaving similar to those for Python's standard dictionary "
+                   'behaving similar to those for Python’s standard dictionary '
                    'objects.\n'
                    'The "collections" module provides a "MutableMapping" '
                    'abstract base\n'
@@ -6893,7 +6931,7 @@
                    'the\n'
                    '"__contains__()" method to allow efficient use of the "in" '
                    'operator;\n'
-                   'for mappings, "in" should search the mapping\'s keys; for '
+                   'for mappings, "in" should search the mapping’s keys; for '
                    'sequences, it\n'
                    'should search through the values.  It is further '
                    'recommended that both\n'
@@ -6911,7 +6949,7 @@
                    'Should return\n'
                    '   the length of the object, an integer ">=" 0.  Also, an '
                    'object that\n'
-                   '   doesn\'t define a "__bool__()" method and whose '
+                   '   doesn’t define a "__bool__()" method and whose '
                    '"__len__()" method\n'
                    '   returns zero is considered to be false in a Boolean '
                    'context.\n'
@@ -7026,7 +7064,7 @@
                    'they are\n'
                    '   required to return themselves.  For more information on '
                    'iterator\n'
-                   '   objects, see *Iterator Types*.\n'
+                   '   objects, see Iterator Types.\n'
                    '\n'
                    'object.__reversed__(self)\n'
                    '\n'
@@ -7068,15 +7106,14 @@
                    'values or\n'
                    '   the key-item pairs.\n'
                    '\n'
-                   '   For objects that don\'t define "__contains__()", the '
+                   '   For objects that don’t define "__contains__()", the '
                    'membership test\n'
                    '   first tries iteration via "__iter__()", then the old '
                    'sequence\n'
-                   '   iteration protocol via "__getitem__()", see *this '
+                   '   iteration protocol via "__getitem__()", see this '
                    'section in the\n'
-                   '   language reference*.\n',
- 'shifting': '\n'
-             'Shifting operations\n'
+                   '   language reference.\n',
+ 'shifting': 'Shifting operations\n'
              '*******************\n'
              '\n'
              'The shifting operations have lower priority than the arithmetic\n'
@@ -7100,8 +7137,7 @@
              'operand is\n'
              '  larger than "sys.maxsize" an "OverflowError" exception is '
              'raised.\n',
- 'slicings': '\n'
-             'Slicings\n'
+ 'slicings': 'Slicings\n'
              '********\n'
              '\n'
              'A slicing selects a range of items in a sequence object (e.g., '
@@ -7145,12 +7181,14 @@
              'an\n'
              'expression is that expression.  The conversion of a proper slice '
              'is a\n'
-             'slice object (see section *The standard type hierarchy*) whose\n'
-             '"start", "stop" and "step" attributes are the values of the\n'
-             'expressions given as lower bound, upper bound and stride,\n'
-             'respectively, substituting "None" for missing expressions.\n',
- 'specialattrs': '\n'
-                 'Special Attributes\n'
+             'slice object (see section The standard type hierarchy) whose '
+             '"start",\n'
+             '"stop" and "step" attributes are the values of the expressions '
+             'given\n'
+             'as lower bound, upper bound and stride, respectively, '
+             'substituting\n'
+             '"None" for missing expressions.\n',
+ 'specialattrs': 'Special Attributes\n'
                  '******************\n'
                  '\n'
                  'The implementation adds a few special read-only attributes '
@@ -7162,7 +7200,7 @@
                  'object.__dict__\n'
                  '\n'
                  '   A dictionary or other mapping object used to store an '
-                 "object's\n"
+                 'object’s\n'
                  '   (writable) attributes.\n'
                  '\n'
                  'instance.__class__\n'
@@ -7216,34 +7254,33 @@
                  '\n'
                  '[1] Additional information on these special methods may be '
                  'found\n'
-                 '    in the Python Reference Manual (*Basic customization*).\n'
+                 '    in the Python Reference Manual (Basic customization).\n'
                  '\n'
                  '[2] As a consequence, the list "[1, 2]" is considered equal '
                  'to\n'
                  '    "[1.0, 2.0]", and similarly for tuples.\n'
                  '\n'
-                 "[3] They must have since the parser can't tell the type of "
+                 '[3] They must have since the parser can’t tell the type of '
                  'the\n'
                  '    operands.\n'
                  '\n'
                  '[4] Cased characters are those with general category '
                  'property\n'
-                 '    being one of "Lu" (Letter, uppercase), "Ll" (Letter, '
+                 '    being one of “Lu” (Letter, uppercase), “Ll” (Letter, '
                  'lowercase),\n'
-                 '    or "Lt" (Letter, titlecase).\n'
+                 '    or “Lt” (Letter, titlecase).\n'
                  '\n'
                  '[5] To format only a tuple you should therefore provide a\n'
                  '    singleton tuple whose only element is the tuple to be '
                  'formatted.\n',
- 'specialnames': '\n'
-                 'Special method names\n'
+ 'specialnames': 'Special method names\n'
                  '********************\n'
                  '\n'
                  'A class can implement certain operations that are invoked by '
                  'special\n'
                  'syntax (such as arithmetic operations or subscripting and '
                  'slicing) by\n'
-                 "defining methods with special names. This is Python's "
+                 'defining methods with special names. This is Python’s '
                  'approach to\n'
                  '*operator overloading*, allowing classes to define their own '
                  'behavior\n'
@@ -7268,7 +7305,7 @@
                  'elements, but\n'
                  'extracting a slice may not make sense.  (One example of this '
                  'is the\n'
-                 '"NodeList" interface in the W3C\'s Document Object Model.)\n'
+                 '"NodeList" interface in the W3C’s Document Object Model.)\n'
                  '\n'
                  '\n'
                  'Basic customization\n'
@@ -7292,7 +7329,7 @@
                  '\n'
                  '   Typical implementations create a new instance of the '
                  'class by\n'
-                 '   invoking the superclass\'s "__new__()" method using\n'
+                 '   invoking the superclass’s "__new__()" method using\n'
                  '   "super().__new__(cls[, ...])" with appropriate arguments '
                  'and then\n'
                  '   modifying the newly-created instance as necessary before '
@@ -7301,7 +7338,7 @@
                  '\n'
                  '   If "__new__()" returns an instance of *cls*, then the '
                  'new\n'
-                 '   instance\'s "__init__()" method will be invoked like\n'
+                 '   instance’s "__init__()" method will be invoked like\n'
                  '   "__init__(self[, ...])", where *self* is the new instance '
                  'and the\n'
                  '   remaining arguments are the same as were passed to '
@@ -7309,7 +7346,7 @@
                  '\n'
                  '   If "__new__()" does not return an instance of *cls*, then '
                  'the new\n'
-                 '   instance\'s "__init__()" method will not be invoked.\n'
+                 '   instance’s "__init__()" method will not be invoked.\n'
                  '\n'
                  '   "__new__()" is intended mainly to allow subclasses of '
                  'immutable\n'
@@ -7327,7 +7364,7 @@
                  'those\n'
                  '   passed to the class constructor expression.  If a base '
                  'class has an\n'
-                 '   "__init__()" method, the derived class\'s "__init__()" '
+                 '   "__init__()" method, the derived class’s "__init__()" '
                  'method, if\n'
                  '   any, must explicitly call it to ensure proper '
                  'initialization of the\n'
@@ -7348,7 +7385,7 @@
                  'is also\n'
                  '   called a destructor.  If a base class has a "__del__()" '
                  'method, the\n'
-                 '   derived class\'s "__del__()" method, if any, must '
+                 '   derived class’s "__del__()" method, if any, must '
                  'explicitly call it\n'
                  '   to ensure proper deletion of the base class part of the '
                  'instance.\n'
@@ -7364,11 +7401,11 @@
                  'exist when\n'
                  '   the interpreter exits.\n'
                  '\n'
-                 '   Note: "del x" doesn\'t directly call "x.__del__()" --- '
-                 'the former\n'
+                 '   Note: "del x" doesn’t directly call "x.__del__()" — the '
+                 'former\n'
                  '     decrements the reference count for "x" by one, and the '
                  'latter is\n'
-                 '     only called when "x"\'s reference count reaches zero.  '
+                 '     only called when "x"’s reference count reaches zero.  '
                  'Some common\n'
                  '     situations that may prevent the reference count of an '
                  'object from\n'
@@ -7397,7 +7434,7 @@
                  'Circular\n'
                  '     references which are garbage are detected and cleaned '
                  'up when the\n'
-                 "     cyclic garbage collector is enabled (it's on by "
+                 '     cyclic garbage collector is enabled (it’s on by '
                  'default). Refer\n'
                  '     to the documentation for the "gc" module for more '
                  'information\n'
@@ -7435,7 +7472,7 @@
                  'object.__repr__(self)\n'
                  '\n'
                  '   Called by the "repr()" built-in function to compute the '
-                 '"official"\n'
+                 '“official”\n'
                  '   string representation of an object.  If at all possible, '
                  'this\n'
                  '   should look like a valid Python expression that could be '
@@ -7449,7 +7486,7 @@
                  '   value must be a string object. If a class defines '
                  '"__repr__()" but\n'
                  '   not "__str__()", then "__repr__()" is also used when an '
-                 '"informal"\n'
+                 '“informal”\n'
                  '   string representation of instances of that class is '
                  'required.\n'
                  '\n'
@@ -7461,10 +7498,10 @@
                  '\n'
                  '   Called by "str(object)" and the built-in functions '
                  '"format()" and\n'
-                 '   "print()" to compute the "informal" or nicely printable '
+                 '   "print()" to compute the “informal” or nicely printable '
                  'string\n'
                  '   representation of an object.  The return value must be a '
-                 '*string*\n'
+                 'string\n'
                  '   object.\n'
                  '\n'
                  '   This method differs from "object.__repr__()" in that '
@@ -7488,7 +7525,7 @@
                  '   Called by the "format()" built-in function (and by '
                  'extension, the\n'
                  '   "str.format()" method of class "str") to produce a '
-                 '"formatted"\n'
+                 '“formatted”\n'
                  '   string representation of an object. The "format_spec" '
                  'argument is a\n'
                  '   string that contains a description of the formatting '
@@ -7501,8 +7538,8 @@
                  'or use a\n'
                  '   similar formatting option syntax.\n'
                  '\n'
-                 '   See *Format Specification Mini-Language* for a '
-                 'description of the\n'
+                 '   See Format Specification Mini-Language for a description '
+                 'of the\n'
                  '   standard formatting syntax.\n'
                  '\n'
                  '   The return value must be a string object.\n'
@@ -7518,7 +7555,7 @@
                  'object.__gt__(self, other)\n'
                  'object.__ge__(self, other)\n'
                  '\n'
-                 '   These are the so-called "rich comparison" methods. The\n'
+                 '   These are the so-called “rich comparison” methods. The\n'
                  '   correspondence between operator symbols and method names '
                  'is as\n'
                  '   follows: "x<y" calls "x.__lt__(y)", "x<=y" calls '
@@ -7565,18 +7602,18 @@
                  '   when the left argument does not support the operation but '
                  'the right\n'
                  '   argument does); rather, "__lt__()" and "__gt__()" are '
-                 "each other's\n"
-                 '   reflection, "__le__()" and "__ge__()" are each other\'s '
+                 'each other’s\n'
+                 '   reflection, "__le__()" and "__ge__()" are each other’s '
                  'reflection,\n'
                  '   and "__eq__()" and "__ne__()" are their own reflection. '
                  'If the\n'
-                 "   operands are of different types, and right operand's type "
+                 '   operands are of different types, and right operand’s type '
                  'is a\n'
-                 "   direct or indirect subclass of the left operand's type, "
+                 '   direct or indirect subclass of the left operand’s type, '
                  'the\n'
                  '   reflected method of the right operand has priority, '
                  'otherwise the\n'
-                 "   left operand's method has priority.  Virtual subclassing "
+                 '   left operand’s method has priority.  Virtual subclassing '
                  'is not\n'
                  '   considered.\n'
                  '\n'
@@ -7600,13 +7637,13 @@
                  '          return hash((self.name, self.nick, self.color))\n'
                  '\n'
                  '   Note: "hash()" truncates the value returned from an '
-                 "object's\n"
+                 'object’s\n'
                  '     custom "__hash__()" method to the size of a '
                  '"Py_ssize_t".  This\n'
                  '     is typically 8 bytes on 64-bit builds and 4 bytes on '
                  '32-bit\n'
-                 '     builds. If an object\'s   "__hash__()" must '
-                 'interoperate on builds\n'
+                 '     builds. If an object’s   "__hash__()" must interoperate '
+                 'on builds\n'
                  '     of different bit sizes, be sure to check the width on '
                  'all\n'
                  '     supported builds.  An easy way to do this is with '
@@ -7624,8 +7661,8 @@
                  '   implements an "__eq__()" method, it should not implement\n'
                  '   "__hash__()", since the implementation of hashable '
                  'collections\n'
-                 "   requires that a key's hash value is immutable (if the "
-                 "object's hash\n"
+                 '   requires that a key’s hash value is immutable (if the '
+                 'object’s hash\n'
                  '   value changes, it will be in the wrong hash bucket).\n'
                  '\n'
                  '   User-defined classes have "__eq__()" and "__hash__()" '
@@ -7669,7 +7706,7 @@
                  '\n'
                  '   Note: By default, the "__hash__()" values of str, bytes '
                  'and\n'
-                 '     datetime objects are "salted" with an unpredictable '
+                 '     datetime objects are “salted” with an unpredictable '
                  'random value.\n'
                  '     Although they remain constant within an individual '
                  'Python\n'
@@ -7772,7 +7809,7 @@
                  'special\n'
                  '     methods as the result of implicit invocation via '
                  'language syntax\n'
-                 '     or built-in functions. See *Special method lookup*.\n'
+                 '     or built-in functions. See Special method lookup.\n'
                  '\n'
                  'object.__setattr__(self, name, value)\n'
                  '\n'
@@ -7814,13 +7851,13 @@
                  'class\n'
                  'containing the method (a so-called *descriptor* class) '
                  'appears in an\n'
-                 "*owner* class (the descriptor must be in either the owner's "
+                 '*owner* class (the descriptor must be in either the owner’s '
                  'class\n'
                  'dictionary or in the class dictionary for one of its '
                  'parents).  In the\n'
-                 'examples below, "the attribute" refers to the attribute '
+                 'examples below, “the attribute” refers to the attribute '
                  'whose name is\n'
-                 'the key of the property in the owner class\' "__dict__".\n'
+                 'the key of the property in the owner class’ "__dict__".\n'
                  '\n'
                  'object.__get__(self, instance, owner)\n'
                  '\n'
@@ -7869,8 +7906,8 @@
                  '--------------------\n'
                  '\n'
                  'In general, a descriptor is an object attribute with '
-                 '"binding\n'
-                 'behavior", one whose attribute access has been overridden by '
+                 '“binding\n'
+                 'behavior”, one whose attribute access has been overridden by '
                  'methods\n'
                  'in the descriptor protocol:  "__get__()", "__set__()", and\n'
                  '"__delete__()". If any of those methods are defined for an '
@@ -7879,7 +7916,7 @@
                  '\n'
                  'The default behavior for attribute access is to get, set, or '
                  'delete\n'
-                 "the attribute from an object's dictionary. For instance, "
+                 'the attribute from an object’s dictionary. For instance, '
                  '"a.x" has a\n'
                  'lookup chain starting with "a.__dict__[\'x\']", then\n'
                  '"type(a).__dict__[\'x\']", and continuing through the base '
@@ -7933,7 +7970,7 @@
                  'does not define "__get__()", then accessing the attribute '
                  'will return\n'
                  'the descriptor object itself unless there is a value in the '
-                 "object's\n"
+                 'object’s\n'
                  'instance dictionary.  If the descriptor defines "__set__()" '
                  'and/or\n'
                  '"__delete__()", it is a data descriptor; if it defines '
@@ -8029,9 +8066,9 @@
                  '\n'
                  '* *__slots__* are implemented at the class level by '
                  'creating\n'
-                 '  descriptors (*Implementing Descriptors*) for each variable '
-                 'name.  As\n'
-                 '  a result, class attributes cannot be used to set default '
+                 '  descriptors (Implementing Descriptors) for each variable '
+                 'name.  As a\n'
+                 '  result, class attributes cannot be used to set default '
                  'values for\n'
                  '  instance variables defined by *__slots__*; otherwise, the '
                  'class\n'
@@ -8057,7 +8094,7 @@
                  '\n'
                  '* Nonempty *__slots__* does not work for classes derived '
                  'from\n'
-                 '  "variable-length" built-in types such as "int", "bytes" '
+                 '  “variable-length” built-in types such as "int", "bytes" '
                  'and "tuple".\n'
                  '\n'
                  '* Any non-string iterable may be assigned to *__slots__*. '
@@ -8165,8 +8202,9 @@
                  'class\n'
                  'namespace is initialised as an empty "dict()" instance.\n'
                  '\n'
-                 'See also: **PEP 3115** - Metaclasses in Python 3000\n'
+                 'See also:\n'
                  '\n'
+                 '  **PEP 3115** - Metaclasses in Python 3000\n'
                  '     Introduced the "__prepare__" namespace hook\n'
                  '\n'
                  '\n'
@@ -8236,8 +8274,9 @@
                  '"__dict__"\n'
                  'attribute of the class object.\n'
                  '\n'
-                 'See also: **PEP 3135** - New super\n'
+                 'See also:\n'
                  '\n'
+                 '  **PEP 3135** - New super\n'
                  '     Describes the implicit "__class__" closure reference\n'
                  '\n'
                  '\n'
@@ -8280,7 +8319,7 @@
                  '\n'
                  'When the class definition for *A* gets executed, the process '
                  'begins\n'
-                 'with calling the metaclass\'s "__prepare__()" method which '
+                 'with calling the metaclass’s "__prepare__()" method which '
                  'returns an\n'
                  'empty "collections.OrderedDict".  That mapping records the '
                  'methods and\n'
@@ -8288,7 +8327,7 @@
                  'class\n'
                  'statement. Once those definitions are executed, the ordered '
                  'dictionary\n'
-                 'is fully populated and the metaclass\'s "__new__()" method '
+                 'is fully populated and the metaclass’s "__new__()" method '
                  'gets\n'
                  'invoked.  That method builds the new type and it saves the '
                  'ordered\n'
@@ -8306,7 +8345,7 @@
                  'methods in\n'
                  'order to allow the addition of Abstract Base Classes (ABCs) '
                  'as\n'
-                 '"virtual base classes" to any class or type (including '
+                 '“virtual base classes” to any class or type (including '
                  'built-in\n'
                  'types), including other ABCs.\n'
                  '\n'
@@ -8335,8 +8374,9 @@
                  'on instances, only in this case the instance is itself a '
                  'class.\n'
                  '\n'
-                 'See also: **PEP 3119** - Introducing Abstract Base Classes\n'
+                 'See also:\n'
                  '\n'
+                 '  **PEP 3119** - Introducing Abstract Base Classes\n'
                  '     Includes the specification for customizing '
                  '"isinstance()" and\n'
                  '     "issubclass()" behavior through "__instancecheck__()" '
@@ -8353,7 +8393,7 @@
                  '\n'
                  'object.__call__(self[, args...])\n'
                  '\n'
-                 '   Called when the instance is "called" as a function; if '
+                 '   Called when the instance is “called” as a function; if '
                  'this method\n'
                  '   is defined, "x(arg1, arg2, ...)" is a shorthand for\n'
                  '   "x.__call__(arg1, arg2, ...)".\n'
@@ -8382,7 +8422,7 @@
                  '"clear()",\n'
                  '"setdefault()", "pop()", "popitem()", "copy()", and '
                  '"update()"\n'
-                 "behaving similar to those for Python's standard dictionary "
+                 'behaving similar to those for Python’s standard dictionary '
                  'objects.\n'
                  'The "collections" module provides a "MutableMapping" '
                  'abstract base\n'
@@ -8407,7 +8447,7 @@
                  'recommended that both mappings and sequences implement the\n'
                  '"__contains__()" method to allow efficient use of the "in" '
                  'operator;\n'
-                 'for mappings, "in" should search the mapping\'s keys; for '
+                 'for mappings, "in" should search the mapping’s keys; for '
                  'sequences, it\n'
                  'should search through the values.  It is further recommended '
                  'that both\n'
@@ -8425,7 +8465,7 @@
                  'Should return\n'
                  '   the length of the object, an integer ">=" 0.  Also, an '
                  'object that\n'
-                 '   doesn\'t define a "__bool__()" method and whose '
+                 '   doesn’t define a "__bool__()" method and whose '
                  '"__len__()" method\n'
                  '   returns zero is considered to be false in a Boolean '
                  'context.\n'
@@ -8539,7 +8579,7 @@
                  'are\n'
                  '   required to return themselves.  For more information on '
                  'iterator\n'
-                 '   objects, see *Iterator Types*.\n'
+                 '   objects, see Iterator Types.\n'
                  '\n'
                  'object.__reversed__(self)\n'
                  '\n'
@@ -8581,13 +8621,13 @@
                  'values or\n'
                  '   the key-item pairs.\n'
                  '\n'
-                 '   For objects that don\'t define "__contains__()", the '
+                 '   For objects that don’t define "__contains__()", the '
                  'membership test\n'
                  '   first tries iteration via "__iter__()", then the old '
                  'sequence\n'
-                 '   iteration protocol via "__getitem__()", see *this section '
+                 '   iteration protocol via "__getitem__()", see this section '
                  'in the\n'
-                 '   language reference*.\n'
+                 '   language reference.\n'
                  '\n'
                  '\n'
                  'Emulating numeric types\n'
@@ -8677,15 +8717,15 @@
                  '"__rpow__()" (the\n'
                  '   coercion rules would become too complicated).\n'
                  '\n'
-                 "   Note: If the right operand's type is a subclass of the "
+                 '   Note: If the right operand’s type is a subclass of the '
                  'left\n'
-                 "     operand's type and that subclass provides the reflected "
+                 '     operand’s type and that subclass provides the reflected '
                  'method\n'
                  '     for the operation, this method will be called before '
                  'the left\n'
-                 "     operand's non-reflected method.  This behavior allows "
+                 '     operand’s non-reflected method.  This behavior allows '
                  'subclasses\n'
-                 "     to override their ancestors' operations.\n"
+                 '     to override their ancestors’ operations.\n'
                  '\n'
                  'object.__iadd__(self, other)\n'
                  'object.__isub__(self, other)\n'
@@ -8723,9 +8763,9 @@
                  'certain\n'
                  '   situations, augmented assignment can result in unexpected '
                  'errors\n'
-                 "   (see *Why does a_tuple[i] += ['item'] raise an exception "
+                 '   (see Why does a_tuple[i] += [‘item’] raise an exception '
                  'when the\n'
-                 '   addition works?*), but this behavior is in fact part of '
+                 '   addition works?), but this behavior is in fact part of '
                  'the data\n'
                  '   model.\n'
                  '\n'
@@ -8779,9 +8819,9 @@
                  'runtime context\n'
                  'for the execution of the block of code.  Context managers '
                  'are normally\n'
-                 'invoked using the "with" statement (described in section '
-                 '*The with\n'
-                 'statement*), but can also be used by directly invoking their '
+                 'invoked using the "with" statement (described in section The '
+                 'with\n'
+                 'statement), but can also be used by directly invoking their '
                  'methods.\n'
                  '\n'
                  'Typical uses of context managers include saving and '
@@ -8790,14 +8830,14 @@
                  'closing opened\n'
                  'files, etc.\n'
                  '\n'
-                 'For more information on context managers, see *Context '
-                 'Manager Types*.\n'
+                 'For more information on context managers, see Context '
+                 'Manager Types.\n'
                  '\n'
                  'object.__enter__(self)\n'
                  '\n'
                  '   Enter the runtime context related to this object. The '
                  '"with"\n'
-                 "   statement will bind this method's return value to the "
+                 '   statement will bind this method’s return value to the '
                  'target(s)\n'
                  '   specified in the "as" clause of the statement, if any.\n'
                  '\n'
@@ -8821,10 +8861,11 @@
                  '\n'
                  '   Note that "__exit__()" methods should not reraise the '
                  'passed-in\n'
-                 "   exception; this is the caller's responsibility.\n"
+                 '   exception; this is the caller’s responsibility.\n'
                  '\n'
-                 'See also: **PEP 343** - The "with" statement\n'
+                 'See also:\n'
                  '\n'
+                 '  **PEP 343** - The “with” statement\n'
                  '     The specification, background, and examples for the '
                  'Python "with"\n'
                  '     statement.\n'
@@ -8835,9 +8876,9 @@
                  '\n'
                  'For custom classes, implicit invocations of special methods '
                  'are only\n'
-                 "guaranteed to work correctly if defined on an object's type, "
+                 'guaranteed to work correctly if defined on an object’s type, '
                  'not in\n'
-                 "the object's instance dictionary.  That behaviour is the "
+                 'the object’s instance dictionary.  That behaviour is the '
                  'reason why\n'
                  'the following code raises an exception:\n'
                  '\n'
@@ -8871,7 +8912,7 @@
                  '\n'
                  'Incorrectly attempting to invoke an unbound method of a '
                  'class in this\n'
-                 "way is sometimes referred to as 'metaclass confusion', and "
+                 'way is sometimes referred to as ‘metaclass confusion’, and '
                  'is avoided\n'
                  'by bypassing the instance when looking up special methods:\n'
                  '\n'
@@ -8884,7 +8925,7 @@
                  'interest of\n'
                  'correctness, implicit special method lookup generally also '
                  'bypasses\n'
-                 'the "__getattribute__()" method even of the object\'s '
+                 'the "__getattribute__()" method even of the object’s '
                  'metaclass:\n'
                  '\n'
                  '   >>> class Meta(type):\n'
@@ -8920,11 +8961,10 @@
                  'special method *must* be set on the class object itself in '
                  'order to be\n'
                  'consistently invoked by the interpreter).\n',
- 'string-methods': '\n'
-                   'String Methods\n'
+ 'string-methods': 'String Methods\n'
                    '**************\n'
                    '\n'
-                   'Strings implement all of the *common* sequence operations, '
+                   'Strings implement all of the common sequence operations, '
                    'along with\n'
                    'the additional methods described below.\n'
                    '\n'
@@ -8932,19 +8972,18 @@
                    'providing a\n'
                    'large degree of flexibility and customization (see '
                    '"str.format()",\n'
-                   '*Format String Syntax* and *Custom String Formatting*) and '
-                   'the other\n'
-                   'based on C "printf" style formatting that handles a '
-                   'narrower range of\n'
-                   'types and is slightly harder to use correctly, but is '
-                   'often faster for\n'
-                   'the cases it can handle (*printf-style String '
-                   'Formatting*).\n'
-                   '\n'
-                   'The *Text Processing Services* section of the standard '
-                   'library covers\n'
-                   'a number of other modules that provide various text '
-                   'related utilities\n'
+                   'Format String Syntax and Custom String Formatting) and the '
+                   'other based\n'
+                   'on C "printf" style formatting that handles a narrower '
+                   'range of types\n'
+                   'and is slightly harder to use correctly, but is often '
+                   'faster for the\n'
+                   'cases it can handle (printf-style String Formatting).\n'
+                   '\n'
+                   'The Text Processing Services section of the standard '
+                   'library covers a\n'
+                   'number of other modules that provide various text related '
+                   'utilities\n'
                    '(including regular expression support in the "re" '
                    'module).\n'
                    '\n'
@@ -9008,10 +9047,9 @@
                    '"\'xmlcharrefreplace\'",\n'
                    '   "\'backslashreplace\'" and any other name registered '
                    'via\n'
-                   '   "codecs.register_error()", see section *Error '
-                   'Handlers*. For a list\n'
-                   '   of possible encodings, see section *Standard '
-                   'Encodings*.\n'
+                   '   "codecs.register_error()", see section Error Handlers. '
+                   'For a list\n'
+                   '   of possible encodings, see section Standard Encodings.\n'
                    '\n'
                    '   Changed in version 3.1: Support for keyword arguments '
                    'added.\n'
@@ -9098,7 +9136,7 @@
                    '   >>> "The sum of 1 + 2 is {0}".format(1+2)\n'
                    "   'The sum of 1 + 2 is 3'\n"
                    '\n'
-                   '   See *Format String Syntax* for a description of the '
+                   '   See Format String Syntax for a description of the '
                    'various\n'
                    '   formatting options that can be specified in format '
                    'strings.\n'
@@ -9146,11 +9184,11 @@
                    'Alphabetic\n'
                    '   characters are those characters defined in the Unicode '
                    'character\n'
-                   '   database as "Letter", i.e., those with general category '
+                   '   database as “Letter”, i.e., those with general category '
                    'property\n'
-                   '   being one of "Lm", "Lt", "Lu", "Ll", or "Lo".  Note '
+                   '   being one of “Lm”, “Lt”, “Lu”, “Ll”, or “Lo”.  Note '
                    'that this is\n'
-                   '   different from the "Alphabetic" property defined in the '
+                   '   different from the “Alphabetic” property defined in the '
                    'Unicode\n'
                    '   Standard.\n'
                    '\n'
@@ -9164,7 +9202,7 @@
                    'in base 10,\n'
                    '   e.g. U+0660, ARABIC-INDIC DIGIT ZERO.  Formally a '
                    'decimal character\n'
-                   '   is a character in the Unicode General Category "Nd".\n'
+                   '   is a character in the Unicode General Category “Nd”.\n'
                    '\n'
                    'str.isdigit()\n'
                    '\n'
@@ -9186,8 +9224,7 @@
                    '\n'
                    '   Return true if the string is a valid identifier '
                    'according to the\n'
-                   '   language definition, section *Identifiers and '
-                   'keywords*.\n'
+                   '   language definition, section Identifiers and keywords.\n'
                    '\n'
                    '   Use "keyword.iskeyword()" to test for reserved '
                    'identifiers such as\n'
@@ -9224,7 +9261,7 @@
                    'characters are\n'
                    '   those characters defined in the Unicode character '
                    'database as\n'
-                   '   "Other" or "Separator", excepting the ASCII space '
+                   '   “Other” or “Separator”, excepting the ASCII space '
                    '(0x20) which is\n'
                    '   considered printable.  (Note that printable characters '
                    'in this\n'
@@ -9242,9 +9279,9 @@
                    'Whitespace\n'
                    '   characters  are those characters defined in the Unicode '
                    'character\n'
-                   '   database as "Other" or "Separator" and those with '
+                   '   database as “Other” or “Separator” and those with '
                    'bidirectional\n'
-                   '   property being one of "WS", "B", or "S".\n'
+                   '   property being one of “WS”, “B”, or “S”.\n'
                    '\n'
                    'str.istitle()\n'
                    '\n'
@@ -9702,9 +9739,9 @@
                    '"str.upper().isupper()" might be\n'
                    '   "False" if "s" contains uncased characters or if the '
                    'Unicode\n'
-                   '   category of the resulting character(s) is not "Lu" '
+                   '   category of the resulting character(s) is not “Lu” '
                    '(Letter,\n'
-                   '   uppercase), but e.g. "Lt" (Letter, titlecase).\n'
+                   '   uppercase), but e.g. “Lt” (Letter, titlecase).\n'
                    '\n'
                    '   The uppercasing algorithm used is described in section '
                    '3.13 of the\n'
@@ -9727,8 +9764,7 @@
                    "      '00042'\n"
                    '      >>> "-42".zfill(5)\n'
                    "      '-0042'\n",
- 'strings': '\n'
-            'String and Bytes literals\n'
+ 'strings': 'String and Bytes literals\n'
             '*************************\n'
             '\n'
             'String literals are described by the following lexical '
@@ -9769,7 +9805,7 @@
             'by\n'
             'the encoding declaration; it is UTF-8 if no encoding declaration '
             'is\n'
-            'given in the source file; see section *Encoding declarations*.\n'
+            'given in the source file; see section Encoding declarations.\n'
             '\n'
             'In plain English: Both types of literals can be enclosed in '
             'matching\n'
@@ -9803,9 +9839,9 @@
             'literals,\n'
             '"\'\\U\'" and "\'\\u\'" escapes in raw strings are not treated '
             'specially.\n'
-            "Given that Python 2.x's raw unicode literals behave differently "
+            'Given that Python 2.x’s raw unicode literals behave differently '
             'than\n'
-            'Python 3.x\'s the "\'ur\'" syntax is not supported.\n'
+            'Python 3.x’s the "\'ur\'" syntax is not supported.\n'
             '\n'
             'New in version 3.3: The "\'rb\'" prefix of raw bytes literals has '
             'been\n'
@@ -9820,7 +9856,7 @@
             'In triple-quoted literals, unescaped newlines and quotes are '
             'allowed\n'
             '(and are retained), except that three unescaped quotes in a row\n'
-            'terminate the literal.  (A "quote" is the character used to open '
+            'terminate the literal.  (A “quote” is the character used to open '
             'the\n'
             'literal, i.e. either "\'" or """.)\n'
             '\n'
@@ -9834,16 +9870,38 @@
             '| Escape Sequence   | Meaning                           | Notes   '
             '|\n'
             '+===================+===================================+=========+\n'
+            '| "\\newline"        | Backslash and newline ignored     '
+            '|         |\n'
             '+-------------------+-----------------------------------+---------+\n'
+            '| "\\\\"              | Backslash ("\\")                   '
+            '|         |\n'
             '+-------------------+-----------------------------------+---------+\n'
+            '| "\\\'"              | Single quote ("\'")                '
+            '|         |\n'
             '+-------------------+-----------------------------------+---------+\n'
+            '| "\\""              | Double quote (""")                '
+            '|         |\n'
             '+-------------------+-----------------------------------+---------+\n'
+            '| "\\a"              | ASCII Bell (BEL)                  '
+            '|         |\n'
             '+-------------------+-----------------------------------+---------+\n'
+            '| "\\b"              | ASCII Backspace (BS)              '
+            '|         |\n'
             '+-------------------+-----------------------------------+---------+\n'
+            '| "\\f"              | ASCII Formfeed (FF)               '
+            '|         |\n'
             '+-------------------+-----------------------------------+---------+\n'
+            '| "\\n"              | ASCII Linefeed (LF)               '
+            '|         |\n'
             '+-------------------+-----------------------------------+---------+\n'
+            '| "\\r"              | ASCII Carriage Return (CR)        '
+            '|         |\n'
             '+-------------------+-----------------------------------+---------+\n'
+            '| "\\t"              | ASCII Horizontal Tab (TAB)        '
+            '|         |\n'
             '+-------------------+-----------------------------------+---------+\n'
+            '| "\\v"              | ASCII Vertical Tab (VT)           '
+            '|         |\n'
             '+-------------------+-----------------------------------+---------+\n'
             '| "\\ooo"            | Character with octal value *ooo*  | '
             '(1,3)   |\n'
@@ -9860,12 +9918,18 @@
             '+===================+===================================+=========+\n'
             '| "\\N{name}"        | Character named *name* in the     | '
             '(4)     |\n'
+            '|                   | Unicode database                  |         '
+            '|\n'
             '+-------------------+-----------------------------------+---------+\n'
             '| "\\uxxxx"          | Character with 16-bit hex value   | '
             '(5)     |\n'
+            '|                   | *xxxx*                            |         '
+            '|\n'
             '+-------------------+-----------------------------------+---------+\n'
             '| "\\Uxxxxxxxx"      | Character with 32-bit hex value   | '
             '(6)     |\n'
+            '|                   | *xxxxxxxx*                        |         '
+            '|\n'
             '+-------------------+-----------------------------------+---------+\n'
             '\n'
             'Notes:\n'
@@ -9917,8 +9981,7 @@
             'followed by a newline is interpreted as those two characters as '
             'part\n'
             'of the literal, *not* as a line continuation.\n',
- 'subscriptions': '\n'
-                  'Subscriptions\n'
+ 'subscriptions': 'Subscriptions\n'
                   '*************\n'
                   '\n'
                   'A subscription selects an item of a sequence (string, tuple '
@@ -9966,17 +10029,16 @@
                   'item whose\n'
                   'index is that value (counting from zero). Since the support '
                   'for\n'
-                  "negative indices and slicing occurs in the object's "
+                  'negative indices and slicing occurs in the object’s '
                   '"__getitem__()"\n'
                   'method, subclasses overriding this method will need to '
                   'explicitly add\n'
                   'that support.\n'
                   '\n'
-                  "A string's items are characters.  A character is not a "
+                  'A string’s items are characters.  A character is not a '
                   'separate data\n'
                   'type but a string of exactly one character.\n',
- 'truth': '\n'
-          'Truth Value Testing\n'
+ 'truth': 'Truth Value Testing\n'
           '*******************\n'
           '\n'
           'Any object can be tested for truth value, for use in an "if" or\n'
@@ -9998,7 +10060,7 @@
           '  "__bool__()" or "__len__()" method, when that method returns the\n'
           '  integer zero or "bool" value "False". [1]\n'
           '\n'
-          'All other values are considered true --- so objects of many types '
+          'All other values are considered true — so objects of many types '
           'are\n'
           'always true.\n'
           '\n'
@@ -10008,8 +10070,7 @@
           'otherwise stated. (Important exception: the Boolean operations '
           '"or"\n'
           'and "and" always return one of their operands.)\n',
- 'try': '\n'
-        'The "try" statement\n'
+ 'try': 'The "try" statement\n'
         '*******************\n'
         '\n'
         'The "try" statement specifies exception handlers and/or cleanup code\n'
@@ -10036,7 +10097,7 @@
         'less except clause, if present, must be last; it matches any\n'
         'exception.  For an except clause with an expression, that expression\n'
         'is evaluated, and the clause matches the exception if the resulting\n'
-        'object is "compatible" with the exception.  An object is compatible\n'
+        'object is “compatible” with the exception.  An object is compatible\n'
         'with an exception if it is the class or a base class of the '
         'exception\n'
         'object or a tuple containing an item compatible with the exception.\n'
@@ -10058,7 +10119,7 @@
         'When a matching except clause is found, the exception is assigned to\n'
         'the target specified after the "as" keyword in that except clause, '
         'if\n'
-        "present, and the except clause's suite is executed.  All except\n"
+        'present, and the except clause’s suite is executed.  All except\n'
         'clauses must have an executable block.  When the end of this block '
         'is\n'
         'reached, execution continues normally after the entire try '
@@ -10088,12 +10149,12 @@
         'cycle with the stack frame, keeping all locals in that frame alive\n'
         'until the next garbage collection occurs.\n'
         '\n'
-        "Before an except clause's suite is executed, details about the\n"
+        'Before an except clause’s suite is executed, details about the\n'
         'exception are stored in the "sys" module and can be accessed via\n'
         '"sys.exc_info()". "sys.exc_info()" returns a 3-tuple consisting of '
         'the\n'
         'exception class, the exception instance and a traceback object (see\n'
-        'section *The standard type hierarchy*) identifying the point in the\n'
+        'section The standard type hierarchy) identifying the point in the\n'
         'program where the exception occurred.  "sys.exc_info()" values are\n'
         'restored to their previous values (before the call) when returning\n'
         'from a function that handled an exception.\n'
@@ -10102,7 +10163,7 @@
         'the end of the "try" clause. [2] Exceptions in the "else" clause are\n'
         'not handled by the preceding "except" clauses.\n'
         '\n'
-        'If "finally" is present, it specifies a \'cleanup\' handler.  The '
+        'If "finally" is present, it specifies a ‘cleanup’ handler.  The '
         '"try"\n'
         'clause is executed, including any "except" and "else" clauses.  If '
         'an\n'
@@ -10130,12 +10191,10 @@
         'execution of the "finally" clause.\n'
         '\n'
         'When a "return", "break" or "continue" statement is executed in the\n'
-        '"try" suite of a "try"..."finally" statement, the "finally" clause '
-        'is\n'
-        'also executed \'on the way out.\' A "continue" statement is illegal '
-        'in\n'
+        '"try" suite of a "try"…"finally" statement, the "finally" clause is\n'
+        'also executed ‘on the way out.’ A "continue" statement is illegal in\n'
         'the "finally" clause. (The reason is a problem with the current\n'
-        'implementation --- this restriction may be lifted in the future).\n'
+        'implementation — this restriction may be lifted in the future).\n'
         '\n'
         'The return value of a function is determined by the last "return"\n'
         'statement executed.  Since the "finally" clause always executes, a\n'
@@ -10153,10 +10212,10 @@
         "   'finally'\n"
         '\n'
         'Additional information on exceptions can be found in section\n'
-        '*Exceptions*, and information on using the "raise" statement to\n'
-        'generate exceptions may be found in section *The raise statement*.\n',
- 'types': '\n'
-          'The standard type hierarchy\n'
+        'Exceptions, and information on using the "raise" statement to '
+        'generate\n'
+        'exceptions may be found in section The raise statement.\n',
+ 'types': 'The standard type hierarchy\n'
           '***************************\n'
           '\n'
           'Below is a list of the types that are built into Python.  '
@@ -10170,7 +10229,7 @@
           'will often be provided via the standard library instead.\n'
           '\n'
           'Some of the type descriptions below contain a paragraph listing\n'
-          "'special attributes.'  These are attributes that provide access to "
+          '‘special attributes.’  These are attributes that provide access to '
           'the\n'
           'implementation and are not intended for general use.  Their '
           'definition\n'
@@ -10183,7 +10242,7 @@
           'It\n'
           '   is used to signify the absence of a value in many situations, '
           'e.g.,\n'
-          "   it is returned from functions that don't explicitly return\n"
+          '   it is returned from functions that don’t explicitly return\n'
           '   anything. Its truth value is false.\n'
           '\n'
           'NotImplemented\n'
@@ -10197,7 +10256,7 @@
           '   reflected operation, or some other fallback, depending on the\n'
           '   operator.)  Its truth value is true.\n'
           '\n'
-          '   See *Implementing the arithmetic operations* for more details.\n'
+          '   See Implementing the arithmetic operations for more details.\n'
           '\n'
           'Ellipsis\n'
           '   This type has a single value.  There is a single object with '
@@ -10234,7 +10293,7 @@
           'shift\n'
           '         and mask operations, a binary representation is assumed, '
           'and\n'
-          "         negative numbers are represented in a variant of 2's\n"
+          '         negative numbers are represented in a variant of 2’s\n'
           '         complement which gives the illusion of an infinite string '
           'of\n'
           '         sign bits extending to the left.\n'
@@ -10288,7 +10347,7 @@
           'items\n'
           '   of a sequence. When the length of a sequence is *n*, the index '
           'set\n'
-          '   contains the numbers 0, 1, ..., *n*-1.  Item *i* of sequence *a* '
+          '   contains the numbers 0, 1, …, *n*-1.  Item *i* of sequence *a* '
           'is\n'
           '   selected by "a[i]".\n'
           '\n'
@@ -10298,8 +10357,8 @@
           'implies\n'
           '   that the index set is renumbered so that it starts at 0.\n'
           '\n'
-          '   Some sequences also support "extended slicing" with a third '
-          '"step"\n'
+          '   Some sequences also support “extended slicing” with a third '
+          '“step”\n'
           '   parameter: "a[i:j:k]" selects all items of *a* with index *x* '
           'where\n'
           '   "x = i + n*k", *n* ">=" "0" and *i* "<=" *x* "<" *j*.\n'
@@ -10324,7 +10383,7 @@
           'code\n'
           '         points. All the code points in the range "U+0000 - '
           'U+10FFFF"\n'
-          "         can be represented in a string.  Python doesn't have a "
+          '         can be represented in a string.  Python doesn’t have a '
           '"char"\n'
           '         type; instead, every code point in the string is '
           'represented\n'
@@ -10343,7 +10402,7 @@
           '         The items of a tuple are arbitrary Python objects. Tuples '
           'of\n'
           '         two or more items are formed by comma-separated lists of\n'
-          "         expressions.  A tuple of one item (a 'singleton') can be\n"
+          '         expressions.  A tuple of one item (a ‘singleton’) can be\n'
           '         formed by affixing a comma to an expression (an expression '
           'by\n'
           '         itself does not create a tuple, since parentheses must be\n'
@@ -10449,7 +10508,7 @@
           'object\n'
           '      identity, the reason being that the efficient implementation '
           'of\n'
-          "      dictionaries requires a key's hash value to remain constant.\n"
+          '      dictionaries requires a key’s hash value to remain constant.\n'
           '      Numeric types used for keys obey the normal rules for '
           'numeric\n'
           '      comparison: if two numbers compare equal (e.g., "1" and '
@@ -10458,7 +10517,7 @@
           '      dictionary entry.\n'
           '\n'
           '      Dictionaries are mutable; they can be created by the "{...}"\n'
-          '      notation (see section *Dictionary displays*).\n'
+          '      notation (see section Dictionary displays).\n'
           '\n'
           '      The extension modules "dbm.ndbm" and "dbm.gnu" provide\n'
           '      additional examples of mapping types, as does the '
@@ -10467,68 +10526,115 @@
           '\n'
           'Callable types\n'
           '   These are the types to which the function call operation (see\n'
-          '   section *Calls*) can be applied:\n'
+          '   section Calls) can be applied:\n'
           '\n'
           '   User-defined functions\n'
           '      A user-defined function object is created by a function\n'
-          '      definition (see section *Function definitions*).  It should '
-          'be\n'
+          '      definition (see section Function definitions).  It should be\n'
           '      called with an argument list containing the same number of '
           'items\n'
-          "      as the function's formal parameter list.\n"
+          '      as the function’s formal parameter list.\n'
           '\n'
           '      Special attributes:\n'
           '\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
+          '      | Attribute                 | Meaning                         '
+          '|             |\n'
           '      '
           '+===========================+=================================+=============+\n'
-          '      | "__doc__"                 | The function\'s '
-          'documentation    | Writable    |\n'
+          '      | "__doc__"                 | The function’s documentation    '
+          '| Writable    |\n'
+          '      |                           | string, or "None" if            '
+          '|             |\n'
+          '      |                           | unavailable; not inherited by   '
+          '|             |\n'
+          '      |                           | subclasses                      '
+          '|             |\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | "__name__"                | The function\'s '
-          'name             | Writable    |\n'
+          '      | "__name__"                | The function’s name             '
+          '| Writable    |\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | "__qualname__"            | The function\'s *qualified '
-          'name* | Writable    |\n'
+          '      | "__qualname__"            | The function’s *qualified name* '
+          '| Writable    |\n'
+          '      |                           | New in version 3.3.             '
+          '|             |\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
           '      | "__module__"              | The name of the module the      '
           '| Writable    |\n'
+          '      |                           | function was defined in, or     '
+          '|             |\n'
+          '      |                           | "None" if unavailable.          '
+          '|             |\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
           '      | "__defaults__"            | A tuple containing default      '
           '| Writable    |\n'
+          '      |                           | argument values for those       '
+          '|             |\n'
+          '      |                           | arguments that have defaults,   '
+          '|             |\n'
+          '      |                           | or "None" if no arguments have  '
+          '|             |\n'
+          '      |                           | a default value                 '
+          '|             |\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
           '      | "__code__"                | The code object representing    '
           '| Writable    |\n'
+          '      |                           | the compiled function body.     '
+          '|             |\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
           '      | "__globals__"             | A reference to the dictionary   '
           '| Read-only   |\n'
+          '      |                           | that holds the function’s       '
+          '|             |\n'
+          '      |                           | global variables — the global   '
+          '|             |\n'
+          '      |                           | namespace of the module in      '
+          '|             |\n'
+          '      |                           | which the function was defined. '
+          '|             |\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
           '      | "__dict__"                | The namespace supporting        '
           '| Writable    |\n'
+          '      |                           | arbitrary function attributes.  '
+          '|             |\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
           '      | "__closure__"             | "None" or a tuple of cells that '
           '| Read-only   |\n'
+          '      |                           | contain bindings for the        '
+          '|             |\n'
+          '      |                           | function’s free variables.      '
+          '|             |\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
           '      | "__annotations__"         | A dict containing annotations   '
           '| Writable    |\n'
+          '      |                           | of parameters.  The keys of the '
+          '|             |\n'
+          '      |                           | dict are the parameter names,   '
+          '|             |\n'
+          '      |                           | and "\'return\'" for the '
+          'return   |             |\n'
+          '      |                           | annotation, if provided.        '
+          '|             |\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
           '      | "__kwdefaults__"          | A dict containing defaults for  '
           '| Writable    |\n'
+          '      |                           | keyword-only parameters.        '
+          '|             |\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
           '\n'
-          '      Most of the attributes labelled "Writable" check the type of '
+          '      Most of the attributes labelled “Writable” check the type of '
           'the\n'
           '      assigned value.\n'
           '\n'
@@ -10544,7 +10650,7 @@
           '      attributes on built-in functions may be supported in the\n'
           '      future.*\n'
           '\n'
-          "      Additional information about a function's definition can be\n"
+          '      Additional information about a function’s definition can be\n'
           '      retrieved from its code object; see the description of '
           'internal\n'
           '      types below.\n'
@@ -10557,7 +10663,7 @@
           '      Special read-only attributes: "__self__" is the class '
           'instance\n'
           '      object, "__func__" is the function object; "__doc__" is the\n'
-          '      method\'s documentation (same as "__func__.__doc__"); '
+          '      method’s documentation (same as "__func__.__doc__"); '
           '"__name__"\n'
           '      is the method name (same as "__func__.__name__"); '
           '"__module__"\n'
@@ -10581,7 +10687,7 @@
           'instances,\n'
           '      its "__self__" attribute is the instance, and the method '
           'object\n'
-          '      is said to be bound.  The new method\'s "__func__" attribute '
+          '      is said to be bound.  The new method’s "__func__" attribute '
           'is\n'
           '      the original function object.\n'
           '\n'
@@ -10614,7 +10720,7 @@
           '\n'
           '      When an instance method object is derived from a class '
           'method\n'
-          '      object, the "class instance" stored in "__self__" will '
+          '      object, the “class instance” stored in "__self__" will '
           'actually\n'
           '      be the class itself, so that calling either "x.f(1)" or '
           '"C.f(1)"\n'
@@ -10641,13 +10747,13 @@
           '\n'
           '   Generator functions\n'
           '      A function or method which uses the "yield" statement (see\n'
-          '      section *The yield statement*) is called a *generator '
+          '      section The yield statement) is called a *generator '
           'function*.\n'
           '      Such a function, when called, always returns an iterator '
           'object\n'
           '      which can be used to execute the body of the function:  '
           'calling\n'
-          '      the iterator\'s "iterator.__next__()" method will cause the\n'
+          '      the iterator’s "iterator.__next__()" method will cause the\n'
           '      function to execute until it provides a value using the '
           '"yield"\n'
           '      statement.  When the function executes a "return" statement '
@@ -10665,7 +10771,7 @@
           '      returns a *coroutine* object.  It may contain "await"\n'
           '      expressions, as well as "async with" and "async for" '
           'statements.\n'
-          '      See also the *Coroutine Objects* section.\n'
+          '      See also the Coroutine Objects section.\n'
           '\n'
           '   Built-in functions\n'
           '      A built-in function object is a wrapper around a C function.\n'
@@ -10674,9 +10780,9 @@
           'of\n'
           '      the arguments are determined by the C function. Special '
           'read-\n'
-          '      only attributes: "__doc__" is the function\'s documentation\n'
+          '      only attributes: "__doc__" is the function’s documentation\n'
           '      string, or "None" if unavailable; "__name__" is the '
-          "function's\n"
+          'function’s\n'
           '      name; "__self__" is set to "None" (but see the next item);\n'
           '      "__module__" is the name of the module the function was '
           'defined\n'
@@ -10708,8 +10814,7 @@
           '\n'
           'Modules\n'
           '   Modules are a basic organizational unit of Python code, and are\n'
-          '   created by the *import system* as invoked either by the '
-          '"import"\n'
+          '   created by the import system as invoked either by the "import"\n'
           '   statement (see "import"), or by calling functions such as\n'
           '   "importlib.import_module()" and built-in "__import__()".  A '
           'module\n'
@@ -10720,14 +10825,14 @@
           '   translated to lookups in this dictionary, e.g., "m.x" is '
           'equivalent\n'
           '   to "m.__dict__["x"]". A module object does not contain the code\n'
-          "   object used to initialize the module (since it isn't needed "
+          '   object used to initialize the module (since it isn’t needed '
           'once\n'
           '   the initialization is done).\n'
           '\n'
-          "   Attribute assignment updates the module's namespace dictionary,\n"
+          '   Attribute assignment updates the module’s namespace dictionary,\n'
           '   e.g., "m.x = 1" is equivalent to "m.__dict__["x"] = 1".\n'
           '\n'
-          '   Special read-only attribute: "__dict__" is the module\'s '
+          '   Special read-only attribute: "__dict__" is the module’s '
           'namespace\n'
           '   as a dictionary object.\n'
           '\n'
@@ -10740,9 +10845,9 @@
           'the\n'
           '   module around while using its dictionary directly.\n'
           '\n'
-          '   Predefined (writable) attributes: "__name__" is the module\'s '
+          '   Predefined (writable) attributes: "__name__" is the module’s '
           'name;\n'
-          '   "__doc__" is the module\'s documentation string, or "None" if\n'
+          '   "__doc__" is the module’s documentation string, or "None" if\n'
           '   unavailable; "__file__" is the pathname of the file from which '
           'the\n'
           '   module was loaded, if it was loaded from a file. The "__file__"\n'
@@ -10756,11 +10861,11 @@
           'Custom classes\n'
           '   Custom class types are typically created by class definitions '
           '(see\n'
-          '   section *Class definitions*).  A class has a namespace '
-          'implemented\n'
-          '   by a dictionary object. Class attribute references are '
-          'translated\n'
-          '   to lookups in this dictionary, e.g., "C.x" is translated to\n'
+          '   section Class definitions).  A class has a namespace implemented '
+          'by\n'
+          '   a dictionary object. Class attribute references are translated '
+          'to\n'
+          '   lookups in this dictionary, e.g., "C.x" is translated to\n'
           '   "C.__dict__["x"]" (although there are a number of hooks which '
           'allow\n'
           '   for other means of locating attributes). When the attribute name '
@@ -10769,7 +10874,7 @@
           '   classes. This search of the base classes uses the C3 method\n'
           '   resolution order which behaves correctly even in the presence '
           'of\n'
-          "   'diamond' inheritance structures where there are multiple\n"
+          '   ‘diamond’ inheritance structures where there are multiple\n'
           '   inheritance paths leading back to a common ancestor. Additional\n'
           '   details on the C3 MRO used by Python can be found in the\n'
           '   documentation accompanying the 2.3 release at\n'
@@ -10782,12 +10887,13 @@
           'a\n'
           '   static method object, it is transformed into the object wrapped '
           'by\n'
-          '   the static method object. See section *Implementing '
-          'Descriptors*\n'
-          '   for another way in which attributes retrieved from a class may\n'
-          '   differ from those actually contained in its "__dict__".\n'
+          '   the static method object. See section Implementing Descriptors '
+          'for\n'
+          '   another way in which attributes retrieved from a class may '
+          'differ\n'
+          '   from those actually contained in its "__dict__".\n'
           '\n'
-          "   Class attribute assignments update the class's dictionary, "
+          '   Class attribute assignments update the class’s dictionary, '
           'never\n'
           '   the dictionary of a base class.\n'
           '\n'
@@ -10799,11 +10905,11 @@
           'is\n'
           '   the module name in which the class was defined; "__dict__" is '
           'the\n'
-          '   dictionary containing the class\'s namespace; "__bases__" is a '
+          '   dictionary containing the class’s namespace; "__bases__" is a '
           'tuple\n'
           '   containing the base classes, in the order of their occurrence '
           'in\n'
-          '   the base class list; "__doc__" is the class\'s documentation '
+          '   the base class list; "__doc__" is the class’s documentation '
           'string,\n'
           '   or "None" if undefined.\n'
           '\n'
@@ -10813,7 +10919,7 @@
           '   A class instance has a namespace implemented as a dictionary '
           'which\n'
           '   is the first place in which attribute references are searched.\n'
-          "   When an attribute is not found there, and the instance's class "
+          '   When an attribute is not found there, and the instance’s class '
           'has\n'
           '   an attribute by that name, the search continues with the class\n'
           '   attributes.  If a class attribute is found that is a '
@@ -10822,16 +10928,17 @@
           'object\n'
           '   whose "__self__" attribute is the instance.  Static method and\n'
           '   class method objects are also transformed; see above under\n'
-          '   "Classes".  See section *Implementing Descriptors* for another '
-          'way\n'
-          '   in which attributes of a class retrieved via its instances may\n'
-          "   differ from the objects actually stored in the class's "
-          '"__dict__".\n'
-          "   If no class attribute is found, and the object's class has a\n"
+          '   “Classes”.  See section Implementing Descriptors for another way '
+          'in\n'
+          '   which attributes of a class retrieved via its instances may '
+          'differ\n'
+          '   from the objects actually stored in the class’s "__dict__".  If '
+          'no\n'
+          '   class attribute is found, and the object’s class has a\n'
           '   "__getattr__()" method, that is called to satisfy the lookup.\n'
           '\n'
-          "   Attribute assignments and deletions update the instance's\n"
-          "   dictionary, never a class's dictionary.  If the class has a\n"
+          '   Attribute assignments and deletions update the instance’s\n'
+          '   dictionary, never a class’s dictionary.  If the class has a\n'
           '   "__setattr__()" or "__delattr__()" method, this is called '
           'instead\n'
           '   of updating the instance dictionary directly.\n'
@@ -10839,10 +10946,10 @@
           '   Class instances can pretend to be numbers, sequences, or '
           'mappings\n'
           '   if they have methods with certain special names.  See section\n'
-          '   *Special method names*.\n'
+          '   Special method names.\n'
           '\n'
           '   Special attributes: "__dict__" is the attribute dictionary;\n'
-          '   "__class__" is the instance\'s class.\n'
+          '   "__class__" is the instance’s class.\n'
           '\n'
           'I/O objects (also known as file objects)\n'
           '   A *file object* represents an open file.  Various shortcuts are\n'
@@ -10854,7 +10961,7 @@
           '   provided by extension modules).\n'
           '\n'
           '   The objects "sys.stdin", "sys.stdout" and "sys.stderr" are\n'
-          "   initialized to file objects corresponding to the interpreter's\n"
+          '   initialized to file objects corresponding to the interpreter’s\n'
           '   standard input, output and error streams; they are all open in '
           'text\n'
           '   mode and therefore follow the interface defined by the\n'
@@ -10872,7 +10979,7 @@
           '      or *bytecode*. The difference between a code object and a\n'
           '      function object is that the function object contains an '
           'explicit\n'
-          "      reference to the function's globals (the module in which it "
+          '      reference to the function’s globals (the module in which it '
           'was\n'
           '      defined), while a code object contains no context; also the\n'
           '      default argument values are stored in the function object, '
@@ -10964,7 +11071,7 @@
           'is\n'
           '      used by the debugger); "f_lineno" is the current line number '
           'of\n'
-          '      the frame --- writing to this from within a trace function '
+          '      the frame — writing to this from within a trace function '
           'jumps\n'
           '      to the given line (only for the bottom-most frame).  A '
           'debugger\n'
@@ -11003,7 +11110,7 @@
           'entered,\n'
           '      the stack trace is made available to the program. (See '
           'section\n'
-          '      *The try statement*.) It is accessible as the third item of '
+          '      The try statement.) It is accessible as the third item of '
           'the\n'
           '      tuple returned by "sys.exc_info()". When the program contains '
           'no\n'
@@ -11081,11 +11188,10 @@
           '      is retrieved from classes and class instances. The behaviour '
           'of\n'
           '      class method objects upon such retrieval is described above,\n'
-          '      under "User-defined methods". Class method objects are '
+          '      under “User-defined methods”. Class method objects are '
           'created\n'
           '      by the built-in "classmethod()" constructor.\n',
- 'typesfunctions': '\n'
-                   'Functions\n'
+ 'typesfunctions': 'Functions\n'
                    '*********\n'
                    '\n'
                    'Function objects are created by function definitions.  The '
@@ -11101,10 +11207,9 @@
                    'the\n'
                    'different object types.\n'
                    '\n'
-                   'See *Function definitions* for more information.\n',
- 'typesmapping': '\n'
-                 'Mapping Types --- "dict"\n'
-                 '************************\n'
+                   'See Function definitions for more information.\n',
+ 'typesmapping': 'Mapping Types — "dict"\n'
+                 '**********************\n'
                  '\n'
                  'A *mapping* object maps *hashable* values to arbitrary '
                  'objects.\n'
@@ -11115,7 +11220,7 @@
                  'in "list", "set", and "tuple" classes, and the "collections" '
                  'module.)\n'
                  '\n'
-                 "A dictionary's keys are *almost* arbitrary values.  Values "
+                 'A dictionary’s keys are *almost* arbitrary values.  Values '
                  'that are\n'
                  'not *hashable*, that is, values containing lists, '
                  'dictionaries or\n'
@@ -11141,9 +11246,9 @@
                  '"dict"\n'
                  'constructor.\n'
                  '\n'
-                 'class class dict(**kwarg)\n'
-                 'class class dict(mapping, **kwarg)\n'
-                 'class class dict(iterable, **kwarg)\n'
+                 'class dict(**kwarg)\n'
+                 'class dict(mapping, **kwarg)\n'
+                 'class dict(iterable, **kwarg)\n'
                  '\n'
                  '   Return a new dictionary initialized from an optional '
                  'positional\n'
@@ -11291,14 +11396,14 @@
                  '\n'
                  '   items()\n'
                  '\n'
-                 '      Return a new view of the dictionary\'s items ("(key, '
+                 '      Return a new view of the dictionary’s items ("(key, '
                  'value)"\n'
-                 '      pairs). See the *documentation of view objects*.\n'
+                 '      pairs). See the documentation of view objects.\n'
                  '\n'
                  '   keys()\n'
                  '\n'
-                 "      Return a new view of the dictionary's keys.  See the\n"
-                 '      *documentation of view objects*.\n'
+                 '      Return a new view of the dictionary’s keys.  See the\n'
+                 '      documentation of view objects.\n'
                  '\n'
                  '   pop(key[, default])\n'
                  '\n'
@@ -11345,14 +11450,14 @@
                  '\n'
                  '   values()\n'
                  '\n'
-                 "      Return a new view of the dictionary's values.  See "
+                 '      Return a new view of the dictionary’s values.  See '
                  'the\n'
-                 '      *documentation of view objects*.\n'
+                 '      documentation of view objects.\n'
                  '\n'
                  '   Dictionaries compare equal if and only if they have the '
                  'same "(key,\n'
-                 '   value)" pairs. Order comparisons (\'<\', \'<=\', \'>=\', '
-                 "'>') raise\n"
+                 '   value)" pairs. Order comparisons (‘<’, ‘<=’, ‘>=’, ‘>’) '
+                 'raise\n'
                  '   "TypeError".\n'
                  '\n'
                  'See also: "types.MappingProxyType" can be used to create a '
@@ -11366,7 +11471,7 @@
                  'The objects returned by "dict.keys()", "dict.values()" and\n'
                  '"dict.items()" are *view objects*.  They provide a dynamic '
                  'view on the\n'
-                 "dictionary's entries, which means that when the dictionary "
+                 'dictionary’s entries, which means that when the dictionary '
                  'changes,\n'
                  'the view reflects these changes.\n'
                  '\n'
@@ -11388,7 +11493,7 @@
                  'which is\n'
                  '   non-random, varies across Python implementations, and '
                  'depends on\n'
-                 "   the dictionary's history of insertions and deletions. If "
+                 '   the dictionary’s history of insertions and deletions. If '
                  'keys,\n'
                  '   values and items views are iterated over with no '
                  'intervening\n'
@@ -11408,7 +11513,7 @@
                  '\n'
                  'x in dictview\n'
                  '\n'
-                 '   Return "True" if *x* is in the underlying dictionary\'s '
+                 '   Return "True" if *x* is in the underlying dictionary’s '
                  'keys, values\n'
                  '   or items (in the latter case, *x* should be a "(key, '
                  'value)"\n'
@@ -11460,8 +11565,7 @@
                  "   {'bacon'}\n"
                  "   >>> keys ^ {'sausage', 'juice'}\n"
                  "   {'juice', 'sausage', 'bacon', 'spam'}\n",
- 'typesmethods': '\n'
-                 'Methods\n'
+ 'typesmethods': 'Methods\n'
                  '*******\n'
                  '\n'
                  'Methods are functions that are called using the attribute '
@@ -11517,15 +11621,14 @@
                  '   >>> c.method.whoami\n'
                  "   'my name is method'\n"
                  '\n'
-                 'See *The standard type hierarchy* for more information.\n',
- 'typesmodules': '\n'
-                 'Modules\n'
+                 'See The standard type hierarchy for more information.\n',
+ 'typesmodules': 'Modules\n'
                  '*******\n'
                  '\n'
                  'The only special operation on a module is attribute access: '
                  '"m.name",\n'
                  'where *m* is a module and *name* accesses a name defined in '
-                 "*m*'s\n"
+                 '*m*’s\n'
                  'symbol table. Module attributes can be assigned to.  (Note '
                  'that the\n'
                  '"import" statement is not, strictly speaking, an operation '
@@ -11538,14 +11641,14 @@
                  '\n'
                  'A special attribute of every module is "__dict__". This is '
                  'the\n'
-                 "dictionary containing the module's symbol table. Modifying "
+                 'dictionary containing the module’s symbol table. Modifying '
                  'this\n'
-                 "dictionary will actually change the module's symbol table, "
+                 'dictionary will actually change the module’s symbol table, '
                  'but direct\n'
                  'assignment to the "__dict__" attribute is not possible (you '
                  'can write\n'
                  '"m.__dict__[\'a\'] = 1", which defines "m.a" to be "1", but '
-                 "you can't\n"
+                 'you can’t\n'
                  'write "m.__dict__ = {}").  Modifying "__dict__" directly is '
                  'not\n'
                  'recommended.\n'
@@ -11556,14 +11659,13 @@
                  'written as\n'
                  '"<module \'os\' from '
                  '\'/usr/local/lib/pythonX.Y/os.pyc\'>".\n',
- 'typesseq': '\n'
-             'Sequence Types --- "list", "tuple", "range"\n'
-             '*******************************************\n'
+ 'typesseq': 'Sequence Types — "list", "tuple", "range"\n'
+             '*****************************************\n'
              '\n'
              'There are three basic sequence types: lists, tuples, and range\n'
              'objects. Additional sequence types tailored for processing of '
-             '*binary\n'
-             'data* and *text strings* are described in dedicated sections.\n'
+             'binary\n'
+             'data and text strings are described in dedicated sections.\n'
              '\n'
              '\n'
              'Common Sequence Operations\n'
@@ -11598,15 +11700,21 @@
              '+============================+==================================+============+\n'
              '| "x in s"                   | "True" if an item of *s* is      '
              '| (1)        |\n'
+             '|                            | equal to *x*, else "False"       '
+             '|            |\n'
              '+----------------------------+----------------------------------+------------+\n'
              '| "x not in s"               | "False" if an item of *s* is     '
              '| (1)        |\n'
+             '|                            | equal to *x*, else "True"        '
+             '|            |\n'
              '+----------------------------+----------------------------------+------------+\n'
              '| "s + t"                    | the concatenation of *s* and *t* '
              '| (6)(7)     |\n'
              '+----------------------------+----------------------------------+------------+\n'
              '| "s * n" or "n * s"         | equivalent to adding *s* to      '
              '| (2)(7)     |\n'
+             '|                            | itself *n* times                 '
+             '|            |\n'
              '+----------------------------+----------------------------------+------------+\n'
              '| "s[i]"                     | *i*th item of *s*, origin 0      '
              '| (3)        |\n'
@@ -11616,13 +11724,29 @@
              '+----------------------------+----------------------------------+------------+\n'
              '| "s[i:j:k]"                 | slice of *s* from *i* to *j*     '
              '| (3)(5)     |\n'
+             '|                            | with step *k*                    '
+             '|            |\n'
              '+----------------------------+----------------------------------+------------+\n'
+             '| "len(s)"                   | length of *s*                    '
+             '|            |\n'
              '+----------------------------+----------------------------------+------------+\n'
+             '| "min(s)"                   | smallest item of *s*             '
+             '|            |\n'
              '+----------------------------+----------------------------------+------------+\n'
+             '| "max(s)"                   | largest item of *s*              '
+             '|            |\n'
              '+----------------------------+----------------------------------+------------+\n'
              '| "s.index(x[, i[, j]])"     | index of the first occurrence of '
              '| (8)        |\n'
+             '|                            | *x* in *s* (at or after index    '
+             '|            |\n'
+             '|                            | *i* and before index *j*)        '
+             '|            |\n'
              '+----------------------------+----------------------------------+------------+\n'
+             '| "s.count(x)"               | total number of occurrences of   '
+             '|            |\n'
+             '|                            | *x* in *s*                       '
+             '|            |\n'
              '+----------------------------+----------------------------------+------------+\n'
              '\n'
              'Sequences of the same type also support comparisons.  In '
@@ -11632,7 +11756,7 @@
              'element must compare equal and the two sequences must be of the '
              'same\n'
              'type and have the same length.  (For full details see '
-             '*Comparisons* in\n'
+             'Comparisons in\n'
              'the language reference.)\n'
              '\n'
              'Notes:\n'
@@ -11677,9 +11801,9 @@
              '      >>> lists\n'
              '      [[3], [5], [7]]\n'
              '\n'
-             '   Further explanation is available in the FAQ entry *How do I '
-             'create\n'
-             '   a multidimensional list?*.\n'
+             '   Further explanation is available in the FAQ entry How do I '
+             'create a\n'
+             '   multidimensional list?.\n'
              '\n'
              '3. If *i* or *j* is negative, the index is relative to the end '
              'of\n'
@@ -11710,7 +11834,7 @@
              '*j* are\n'
              '   reduced to "len(s) - 1" if they are greater.  If *i* or *j* '
              'are\n'
-             '   omitted or "None", they become "end" values (which end '
+             '   omitted or "None", they become “end” values (which end '
              'depends on\n'
              '   the sign of *k*).  Note, *k* cannot be zero. If *k* is '
              '"None", it\n'
@@ -11741,7 +11865,7 @@
              'documentation\n'
              '\n'
              '7. Some sequence types (such as "range") only support item\n'
-             "   sequences that follow specific patterns, and hence don't "
+             '   sequences that follow specific patterns, and hence don’t '
              'support\n'
              '   sequence concatenation or repetition.\n'
              '\n'
@@ -11803,33 +11927,81 @@
              '| Operation                      | '
              'Result                           | Notes                 |\n'
              '+================================+==================================+=======================+\n'
+             '| "s[i] = x"                     | item *i* of *s* is replaced '
+             'by   |                       |\n'
+             '|                                | '
+             '*x*                              |                       |\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
+             '| "s[i:j] = t"                   | slice of *s* from *i* to *j* '
+             'is  |                       |\n'
+             '|                                | replaced by the contents of '
+             'the  |                       |\n'
+             '|                                | iterable '
+             '*t*                     |                       |\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
+             '| "del s[i:j]"                   | same as "s[i:j] = '
+             '[]"            |                       |\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
              '| "s[i:j:k] = t"                 | the elements of "s[i:j:k]" '
              'are   | (1)                   |\n'
+             '|                                | replaced by those of '
+             '*t*         |                       |\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
+             '| "del s[i:j:k]"                 | removes the elements '
+             'of          |                       |\n'
+             '|                                | "s[i:j:k]" from the '
+             'list         |                       |\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
+             '| "s.append(x)"                  | appends *x* to the end of '
+             'the    |                       |\n'
+             '|                                | sequence (same '
+             'as                |                       |\n'
+             '|                                | "s[len(s):len(s)] = '
+             '[x]")        |                       |\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
              '| "s.clear()"                    | removes all items from "s" '
              '(same | (5)                   |\n'
+             '|                                | as "del '
+             's[:]")                   |                       |\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
              '| "s.copy()"                     | creates a shallow copy of '
              '"s"    | (5)                   |\n'
+             '|                                | (same as '
+             '"s[:]")                 |                       |\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
+             '| "s.extend(t)" or "s += t"      | extends *s* with the contents '
+             'of |                       |\n'
+             '|                                | *t* (for the most part the '
+             'same  |                       |\n'
+             '|                                | as "s[len(s):len(s)] = '
+             't")       |                       |\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
              '| "s *= n"                       | updates *s* with its '
              'contents    | (6)                   |\n'
+             '|                                | repeated *n* '
+             'times               |                       |\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
+             '| "s.insert(i, x)"               | inserts *x* into *s* at '
+             'the      |                       |\n'
+             '|                                | index given by *i* (same '
+             'as      |                       |\n'
+             '|                                | "s[i:i] = '
+             '[x]")                  |                       |\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
              '| "s.pop([i])"                   | retrieves the item at *i* '
              'and    | (2)                   |\n'
+             '|                                | also removes it from '
+             '*s*         |                       |\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
              '| "s.remove(x)"                  | remove the first item from '
              '*s*   | (3)                   |\n'
+             '|                                | where "s[i] == '
+             'x"                |                       |\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
              '| "s.reverse()"                  | reverses the items of *s* '
              'in     | (4)                   |\n'
+             '|                                | '
+             'place                            |                       |\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
              '\n'
              'Notes:\n'
@@ -11850,7 +12022,7 @@
              '   sequence.\n'
              '\n'
              '5. "clear()" and "copy()" are included for consistency with the\n'
-             "   interfaces of mutable containers that don't support slicing\n"
+             '   interfaces of mutable containers that don’t support slicing\n'
              '   operations (such as "dict" and "set")\n'
              '\n'
              '   New in version 3.3: "clear()" and "copy()" methods.\n'
@@ -11860,8 +12032,8 @@
              'sequence.\n'
              '   Items in the sequence are not copied; they are referenced '
              'multiple\n'
-             '   times, as explained for "s * n" under *Common Sequence '
-             'Operations*.\n'
+             '   times, as explained for "s * n" under Common Sequence '
+             'Operations.\n'
              '\n'
              '\n'
              'Lists\n'
@@ -11873,7 +12045,7 @@
              'vary by\n'
              'application).\n'
              '\n'
-             'class class list([iterable])\n'
+             'class list([iterable])\n'
              '\n'
              '   Lists may be constructed in several ways:\n'
              '\n'
@@ -11890,7 +12062,7 @@
              '\n'
              '   The constructor builds a list whose items are the same and in '
              'the\n'
-             "   same order as *iterable*'s items.  *iterable* may be either "
+             '   same order as *iterable*’s items.  *iterable* may be either '
              'a\n'
              '   sequence, a container that supports iteration, or an '
              'iterator\n'
@@ -11907,9 +12079,9 @@
              '"sorted()"\n'
              '   built-in.\n'
              '\n'
-             '   Lists implement all of the *common* and *mutable* sequence\n'
-             '   operations. Lists also provide the following additional '
-             'method:\n'
+             '   Lists implement all of the common and mutable sequence '
+             'operations.\n'
+             '   Lists also provide the following additional method:\n'
              '\n'
              '   sort(*, key=None, reverse=None)\n'
              '\n'
@@ -11922,7 +12094,7 @@
              '      list will likely be left in a partially modified state).\n'
              '\n'
              '      "sort()" accepts two arguments that can only be passed by\n'
-             '      keyword (*keyword-only arguments*):\n'
+             '      keyword (keyword-only arguments):\n'
              '\n'
              '      *key* specifies a function of one argument that is used '
              'to\n'
@@ -11957,8 +12129,8 @@
              'is\n'
              '      stable if it guarantees not to change the relative order '
              'of\n'
-             '      elements that compare equal --- this is helpful for '
-             'sorting in\n'
+             '      elements that compare equal — this is helpful for sorting '
+             'in\n'
              '      multiple passes (for example, sort by department, then by '
              'salary\n'
              '      grade).\n'
@@ -11987,7 +12159,7 @@
              '"set" or\n'
              '"dict" instance).\n'
              '\n'
-             'class class tuple([iterable])\n'
+             'class tuple([iterable])\n'
              '\n'
              '   Tuples may be constructed in a number of ways:\n'
              '\n'
@@ -12004,7 +12176,7 @@
              '\n'
              '   The constructor builds a tuple whose items are the same and '
              'in the\n'
-             "   same order as *iterable*'s items.  *iterable* may be either "
+             '   same order as *iterable*’s items.  *iterable* may be either '
              'a\n'
              '   sequence, a container that supports iteration, or an '
              'iterator\n'
@@ -12027,7 +12199,7 @@
              'sole\n'
              '   argument.\n'
              '\n'
-             '   Tuples implement all of the *common* sequence operations.\n'
+             '   Tuples implement all of the common sequence operations.\n'
              '\n'
              'For heterogeneous collections of data where access by name is '
              'clearer\n'
@@ -12043,8 +12215,8 @@
              'commonly used for looping a specific number of times in "for" '
              'loops.\n'
              '\n'
-             'class class range(stop)\n'
-             'class class range(start, stop[, step])\n'
+             'class range(stop)\n'
+             'class range(start, stop[, step])\n'
              '\n'
              '   The arguments to the range constructor must be integers '
              '(either\n'
@@ -12095,7 +12267,7 @@
              '      >>> list(range(1, 0))\n'
              '      []\n'
              '\n'
-             '   Ranges implement all of the *common* sequence operations '
+             '   Ranges implement all of the common sequence operations '
              'except\n'
              '   concatenation and repetition (due to the fact that range '
              'objects\n'
@@ -12133,9 +12305,9 @@
              'Range objects implement the "collections.abc.Sequence" ABC, and\n'
              'provide features such as containment tests, element index '
              'lookup,\n'
-             'slicing and support for negative indices (see *Sequence Types '
-             '---\n'
-             'list, tuple, range*):\n'
+             'slicing and support for negative indices (see Sequence Types — '
+             'list,\n'
+             'tuple, range):\n'
              '\n'
              '>>> r = range(0, 20, 2)\n'
              '>>> r\n'
@@ -12171,15 +12343,14 @@
              'constant\n'
              'time instead of iterating through all items.\n'
              '\n'
-             "Changed in version 3.3: Define '==' and '!=' to compare range "
+             'Changed in version 3.3: Define ‘==’ and ‘!=’ to compare range '
              'objects\n'
              'based on the sequence of values they define (instead of '
              'comparing\n'
              'based on object identity).\n'
              '\n'
              'New in version 3.3: The "start", "stop" and "step" attributes.\n',
- 'typesseq-mutable': '\n'
-                     'Mutable Sequence Types\n'
+ 'typesseq-mutable': 'Mutable Sequence Types\n'
                      '**********************\n'
                      '\n'
                      'The operations in the following table are defined on '
@@ -12204,33 +12375,83 @@
                      'Result                           | Notes                 '
                      '|\n'
                      '+================================+==================================+=======================+\n'
+                     '| "s[i] = x"                     | item *i* of *s* is '
+                     'replaced by   |                       |\n'
+                     '|                                | '
+                     '*x*                              |                       '
+                     '|\n'
                      '+--------------------------------+----------------------------------+-----------------------+\n'
+                     '| "s[i:j] = t"                   | slice of *s* from *i* '
+                     'to *j* is  |                       |\n'
+                     '|                                | replaced by the '
+                     'contents of the  |                       |\n'
+                     '|                                | iterable '
+                     '*t*                     |                       |\n'
                      '+--------------------------------+----------------------------------+-----------------------+\n'
+                     '| "del s[i:j]"                   | same as "s[i:j] = '
+                     '[]"            |                       |\n'
                      '+--------------------------------+----------------------------------+-----------------------+\n'
                      '| "s[i:j:k] = t"                 | the elements of '
                      '"s[i:j:k]" are   | (1)                   |\n'
+                     '|                                | replaced by those of '
+                     '*t*         |                       |\n'
                      '+--------------------------------+----------------------------------+-----------------------+\n'
+                     '| "del s[i:j:k]"                 | removes the elements '
+                     'of          |                       |\n'
+                     '|                                | "s[i:j:k]" from the '
+                     'list         |                       |\n'
                      '+--------------------------------+----------------------------------+-----------------------+\n'
+                     '| "s.append(x)"                  | appends *x* to the '
+                     'end of the    |                       |\n'
+                     '|                                | sequence (same '
+                     'as                |                       |\n'
+                     '|                                | "s[len(s):len(s)] = '
+                     '[x]")        |                       |\n'
                      '+--------------------------------+----------------------------------+-----------------------+\n'
                      '| "s.clear()"                    | removes all items '
                      'from "s" (same | (5)                   |\n'
+                     '|                                | as "del '
+                     's[:]")                   |                       |\n'
                      '+--------------------------------+----------------------------------+-----------------------+\n'
                      '| "s.copy()"                     | creates a shallow '
                      'copy of "s"    | (5)                   |\n'
+                     '|                                | (same as '
+                     '"s[:]")                 |                       |\n'
                      '+--------------------------------+----------------------------------+-----------------------+\n'
+                     '| "s.extend(t)" or "s += t"      | extends *s* with the '
+                     'contents of |                       |\n'
+                     '|                                | *t* (for the most '
+                     'part the same  |                       |\n'
+                     '|                                | as "s[len(s):len(s)] '
+                     '= t")       |                       |\n'
                      '+--------------------------------+----------------------------------+-----------------------+\n'
                      '| "s *= n"                       | updates *s* with its '
                      'contents    | (6)                   |\n'
+                     '|                                | repeated *n* '
+                     'times               |                       |\n'
                      '+--------------------------------+----------------------------------+-----------------------+\n'
+                     '| "s.insert(i, x)"               | inserts *x* into *s* '
+                     'at the      |                       |\n'
+                     '|                                | index given by *i* '
+                     '(same as      |                       |\n'
+                     '|                                | "s[i:i] = '
+                     '[x]")                  |                       |\n'
                      '+--------------------------------+----------------------------------+-----------------------+\n'
                      '| "s.pop([i])"                   | retrieves the item at '
                      '*i* and    | (2)                   |\n'
+                     '|                                | also removes it from '
+                     '*s*         |                       |\n'
                      '+--------------------------------+----------------------------------+-----------------------+\n'
                      '| "s.remove(x)"                  | remove the first item '
                      'from *s*   | (3)                   |\n'
+                     '|                                | where "s[i] == '
+                     'x"                |                       |\n'
                      '+--------------------------------+----------------------------------+-----------------------+\n'
                      '| "s.reverse()"                  | reverses the items of '
                      '*s* in     | (4)                   |\n'
+                     '|                                | '
+                     'place                            |                       '
+                     '|\n'
                      '+--------------------------------+----------------------------------+-----------------------+\n'
                      '\n'
                      'Notes:\n'
@@ -12255,7 +12476,7 @@
                      '\n'
                      '5. "clear()" and "copy()" are included for consistency '
                      'with the\n'
-                     "   interfaces of mutable containers that don't support "
+                     '   interfaces of mutable containers that don’t support '
                      'slicing\n'
                      '   operations (such as "dict" and "set")\n'
                      '\n'
@@ -12267,10 +12488,9 @@
                      'the sequence.\n'
                      '   Items in the sequence are not copied; they are '
                      'referenced multiple\n'
-                     '   times, as explained for "s * n" under *Common '
-                     'Sequence Operations*.\n',
- 'unary': '\n'
-          'Unary arithmetic and bitwise operations\n'
+                     '   times, as explained for "s * n" under Common Sequence '
+                     'Operations.\n',
+ 'unary': 'Unary arithmetic and bitwise operations\n'
           '***************************************\n'
           '\n'
           'All unary arithmetic and bitwise operations have the same '
@@ -12292,8 +12512,7 @@
           'In all three cases, if the argument does not have the proper type, '
           'a\n'
           '"TypeError" exception is raised.\n',
- 'while': '\n'
-          'The "while" statement\n'
+ 'while': 'The "while" statement\n'
           '*********************\n'
           '\n'
           'The "while" statement is used for repeated execution as long as an\n'
@@ -12312,32 +12531,32 @@
           '\n'
           'A "break" statement executed in the first suite terminates the '
           'loop\n'
-          'without executing the "else" clause\'s suite.  A "continue" '
+          'without executing the "else" clause’s suite.  A "continue" '
           'statement\n'
           'executed in the first suite skips the rest of the suite and goes '
           'back\n'
           'to testing the expression.\n',
- 'with': '\n'
-         'The "with" statement\n'
+ 'with': 'The "with" statement\n'
          '********************\n'
          '\n'
          'The "with" statement is used to wrap the execution of a block with\n'
-         'methods defined by a context manager (see section *With Statement\n'
-         'Context Managers*). This allows common "try"..."except"..."finally"\n'
-         'usage patterns to be encapsulated for convenient reuse.\n'
+         'methods defined by a context manager (see section With Statement\n'
+         'Context Managers). This allows common "try"…"except"…"finally" '
+         'usage\n'
+         'patterns to be encapsulated for convenient reuse.\n'
          '\n'
          '   with_stmt ::= "with" with_item ("," with_item)* ":" suite\n'
          '   with_item ::= expression ["as" target]\n'
          '\n'
-         'The execution of the "with" statement with one "item" proceeds as\n'
+         'The execution of the "with" statement with one “item” proceeds as\n'
          'follows:\n'
          '\n'
          '1. The context expression (the expression given in the "with_item")\n'
          '   is evaluated to obtain a context manager.\n'
          '\n'
-         '2. The context manager\'s "__exit__()" is loaded for later use.\n'
+         '2. The context manager’s "__exit__()" is loaded for later use.\n'
          '\n'
-         '3. The context manager\'s "__enter__()" method is invoked.\n'
+         '3. The context manager’s "__enter__()" method is invoked.\n'
          '\n'
          '4. If a target was included in the "with" statement, the return\n'
          '   value from "__enter__()" is assigned to it.\n'
@@ -12351,7 +12570,7 @@
          '\n'
          '5. The suite is executed.\n'
          '\n'
-         '6. The context manager\'s "__exit__()" method is invoked.  If an\n'
+         '6. The context manager’s "__exit__()" method is invoked.  If an\n'
          '   exception caused the suite to be exited, its type, value, and\n'
          '   traceback are passed as arguments to "__exit__()". Otherwise, '
          'three\n'
@@ -12385,23 +12604,23 @@
          '\n'
          'Changed in version 3.1: Support for multiple context expressions.\n'
          '\n'
-         'See also: **PEP 343** - The "with" statement\n'
+         'See also:\n'
          '\n'
+         '  **PEP 343** - The “with” statement\n'
          '     The specification, background, and examples for the Python '
          '"with"\n'
          '     statement.\n',
- 'yield': '\n'
-          'The "yield" statement\n'
+ 'yield': 'The "yield" statement\n'
           '*********************\n'
           '\n'
           '   yield_stmt ::= yield_expression\n'
           '\n'
-          'A "yield" statement is semantically equivalent to a *yield\n'
-          'expression*. The yield statement can be used to omit the '
-          'parentheses\n'
-          'that would otherwise be required in the equivalent yield '
-          'expression\n'
-          'statement. For example, the yield statements\n'
+          'A "yield" statement is semantically equivalent to a yield '
+          'expression.\n'
+          'The yield statement can be used to omit the parentheses that would\n'
+          'otherwise be required in the equivalent yield expression '
+          'statement.\n'
+          'For example, the yield statements\n'
           '\n'
           '   yield <expr>\n'
           '   yield from <expr>\n'
@@ -12419,5 +12638,6 @@
           'that definition to create a generator function instead of a normal\n'
           'function.\n'
           '\n'
-          'For full details of "yield" semantics, refer to the *Yield\n'
-          'expressions* section.\n'}
+          'For full details of "yield" semantics, refer to the Yield '
+          'expressions\n'
+          'section.\n'}
diff --git a/Misc/NEWS.d/3.5.8rc2.rst b/Misc/NEWS.d/3.5.8rc2.rst
new file mode 100644
index 0000000000000..e4910d6adb1d7
--- /dev/null
+++ b/Misc/NEWS.d/3.5.8rc2.rst
@@ -0,0 +1,20 @@
+.. bpo: 38174
+.. date: 2019-09-23-21-02-46
+.. nonce: MeWuJd
+.. release date: 2019-10-12
+.. section: Security
+
+Update vendorized expat library version to 2.2.8, which resolves
+CVE-2019-15903.
+
+..
+
+.. bpo: 38216
+.. date: 2019-09-27-15-24-45
+.. nonce: -7yvZR
+.. section: Library
+
+Allow the rare code that wants to send invalid http requests from the
+`http.client` library a way to do so.  The fixes for bpo-30458 led to
+breakage for some projects that were relying on this ability to test their
+own behavior in the face of bad requests.
diff --git a/Misc/NEWS.d/next/Library/2019-09-27-15-24-45.bpo-38216.-7yvZR.rst b/Misc/NEWS.d/next/Library/2019-09-27-15-24-45.bpo-38216.-7yvZR.rst
deleted file mode 100644
index ac8e2b042d929..0000000000000
--- a/Misc/NEWS.d/next/Library/2019-09-27-15-24-45.bpo-38216.-7yvZR.rst
+++ /dev/null
@@ -1,4 +0,0 @@
-Allow the rare code that wants to send invalid http requests from the
-`http.client` library a way to do so.  The fixes for bpo-30458 led to
-breakage for some projects that were relying on this ability to test their
-own behavior in the face of bad requests.
diff --git a/Misc/NEWS.d/next/Security/2019-09-23-21-02-46.bpo-38174.MeWuJd.rst b/Misc/NEWS.d/next/Security/2019-09-23-21-02-46.bpo-38174.MeWuJd.rst
deleted file mode 100644
index e3da6fcdd139f..0000000000000
--- a/Misc/NEWS.d/next/Security/2019-09-23-21-02-46.bpo-38174.MeWuJd.rst
+++ /dev/null
@@ -1,2 +0,0 @@
-Update vendorized expat library version to 2.2.8, which resolves
-CVE-2019-15903.



More information about the Python-checkins mailing list