From e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 Mon Sep 17 00:00:00 2001
From: shadchin <shadchin@yandex-team.ru>
Date: Thu, 10 Feb 2022 16:44:39 +0300
Subject: Restoring authorship annotation for <shadchin@yandex-team.ru>. Commit
 2 of 2.

---
 contrib/tools/python3/src/Lib/pydoc_data/topics.py | 4518 ++++++++++----------
 1 file changed, 2259 insertions(+), 2259 deletions(-)

(limited to 'contrib/tools/python3/src/Lib/pydoc_data/topics.py')

diff --git a/contrib/tools/python3/src/Lib/pydoc_data/topics.py b/contrib/tools/python3/src/Lib/pydoc_data/topics.py
index 929833791f..67a51977cf 100644
--- a/contrib/tools/python3/src/Lib/pydoc_data/topics.py
+++ b/contrib/tools/python3/src/Lib/pydoc_data/topics.py
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Autogenerated by Sphinx on Thu Jan 13 21:46:32 2022 
+# Autogenerated by Sphinx on Thu Jan 13 21:46:32 2022
 topics = {'assert': 'The "assert" statement\n'
            '**********************\n'
            '\n'
@@ -99,26 +99,26 @@ topics = {'assert': 'The "assert" statement\n'
                'assigned,\n'
                '  from left to right, to the corresponding targets.\n'
                '\n'
-               '  * If the target list contains one target prefixed with an ' 
-               'asterisk,\n' 
-               '    called a “starred” target: The object must be an iterable ' 
-               'with at\n' 
-               '    least as many items as there are targets in the target ' 
-               'list, minus\n' 
-               '    one.  The first items of the iterable are assigned, from ' 
-               'left to\n' 
-               '    right, to the targets before the starred target.  The ' 
-               'final items\n' 
-               '    of the iterable are assigned to the targets after the ' 
+               '  * If the target list contains one target prefixed with an '
+               'asterisk,\n'
+               '    called a “starred” target: The object must be an iterable '
+               'with at\n'
+               '    least as many items as there are targets in the target '
+               'list, minus\n'
+               '    one.  The first items of the iterable are assigned, from '
+               'left to\n'
+               '    right, to the targets before the starred target.  The '
+               'final items\n'
+               '    of the iterable are assigned to the targets after the '
                'starred\n'
-               '    target.  A list of the remaining items in the iterable is ' 
-               'then\n' 
-               '    assigned to the starred target (the list can be empty).\n' 
+               '    target.  A list of the remaining items in the iterable is '
+               'then\n'
+               '    assigned to the starred target (the list can be empty).\n'
                '\n'
                '  * Else: The object must be an iterable with the same number '
-               'of items\n' 
-               '    as there are targets in the target list, and the items ' 
-               'are\n' 
+               'of items\n'
+               '    as there are targets in the target list, and the items '
+               'are\n'
                '    assigned, from left to right, to the corresponding '
                'targets.\n'
                '\n'
@@ -134,10 +134,10 @@ topics = {'assert': 'The "assert" statement\n'
                'in the\n'
                '    current local namespace.\n'
                '\n'
-               '  * Otherwise: the name is bound to the object in the global ' 
-               'namespace\n' 
-               '    or the outer namespace determined by "nonlocal", ' 
-               'respectively.\n' 
+               '  * Otherwise: the name is bound to the object in the global '
+               'namespace\n'
+               '    or the outer namespace determined by "nonlocal", '
+               'respectively.\n'
                '\n'
                '  The name is rebound if it was already bound.  This may cause '
                'the\n'
@@ -161,21 +161,21 @@ topics = {'assert': 'The "assert" statement\n'
                '\n'
                '  Note: If the object is a class instance and the attribute '
                'reference\n'
-               '  occurs on both sides of the assignment operator, the ' 
-               'right-hand side\n' 
-               '  expression, "a.x" can access either an instance attribute or ' 
-               '(if no\n' 
-               '  instance attribute exists) a class attribute.  The left-hand ' 
-               'side\n' 
-               '  target "a.x" is always set as an instance attribute, ' 
-               'creating it if\n' 
-               '  necessary.  Thus, the two occurrences of "a.x" do not ' 
-               'necessarily\n' 
-               '  refer to the same attribute: if the right-hand side ' 
-               'expression\n' 
-               '  refers to a class attribute, the left-hand side creates a ' 
-               'new\n' 
-               '  instance attribute as the target of the assignment:\n' 
+               '  occurs on both sides of the assignment operator, the '
+               'right-hand side\n'
+               '  expression, "a.x" can access either an instance attribute or '
+               '(if no\n'
+               '  instance attribute exists) a class attribute.  The left-hand '
+               'side\n'
+               '  target "a.x" is always set as an instance attribute, '
+               'creating it if\n'
+               '  necessary.  Thus, the two occurrences of "a.x" do not '
+               'necessarily\n'
+               '  refer to the same attribute: if the right-hand side '
+               'expression\n'
+               '  refers to a class attribute, the left-hand side creates a '
+               'new\n'
+               '  instance attribute as the target of the assignment:\n'
                '\n'
                '     class Cls:\n'
                '         x = 3             # class variable\n'
@@ -224,27 +224,27 @@ topics = {'assert': 'The "assert" statement\n'
                'called with\n'
                '  appropriate arguments.\n'
                '\n'
-               '* If the target is a slicing: The primary expression in the ' 
-               'reference\n' 
-               '  is evaluated.  It should yield a mutable sequence object ' 
-               '(such as a\n' 
-               '  list).  The assigned object should be a sequence object of ' 
-               'the same\n' 
-               '  type.  Next, the lower and upper bound expressions are ' 
-               'evaluated,\n' 
-               '  insofar they are present; defaults are zero and the ' 
-               'sequence’s\n' 
-               '  length.  The bounds should evaluate to integers. If either ' 
-               'bound is\n' 
-               '  negative, the sequence’s length is added to it.  The ' 
-               'resulting\n' 
-               '  bounds are clipped to lie between zero and the sequence’s ' 
-               'length,\n' 
-               '  inclusive.  Finally, the sequence object is asked to replace ' 
+               '* If the target is a slicing: The primary expression in the '
+               'reference\n'
+               '  is evaluated.  It should yield a mutable sequence object '
+               '(such as a\n'
+               '  list).  The assigned object should be a sequence object of '
+               'the same\n'
+               '  type.  Next, the lower and upper bound expressions are '
+               'evaluated,\n'
+               '  insofar they are present; defaults are zero and the '
+               'sequence’s\n'
+               '  length.  The bounds should evaluate to integers. If either '
+               'bound is\n'
+               '  negative, the sequence’s length is added to it.  The '
+               'resulting\n'
+               '  bounds are clipped to lie between zero and the sequence’s '
+               'length,\n'
+               '  inclusive.  Finally, the sequence object is asked to replace '
                'the\n'
-               '  slice with the items of the assigned sequence.  The length ' 
-               'of the\n' 
-               '  slice may be different from the length of the assigned ' 
+               '  slice with the items of the assigned sequence.  The length '
+               'of the\n'
+               '  slice may be different from the length of the assigned '
                'sequence,\n'
                '  thus changing the length of the target sequence, if the '
                'target\n'
@@ -357,13 +357,13 @@ topics = {'assert': 'The "assert" statement\n'
                'a variable or attribute annotation and an optional assignment\n'
                'statement:\n'
                '\n'
-               '   annotated_assignment_stmt ::= augtarget ":" expression\n' 
-               '                                 ["=" (starred_expression | ' 
-               'yield_expression)]\n' 
+               '   annotated_assignment_stmt ::= augtarget ":" expression\n'
+               '                                 ["=" (starred_expression | '
+               'yield_expression)]\n'
                '\n'
                'The difference from normal Assignment statements is that only '
                'single\n'
-               'target is allowed.\n' 
+               'target is allowed.\n'
                '\n'
                'For simple names as assignment targets, if in class or module '
                'scope,\n'
@@ -410,14 +410,14 @@ topics = {'assert': 'The "assert" statement\n'
                'standard\n'
                '     syntax for type annotations that can be used in static '
                'analysis\n'
-               '     tools and IDEs.\n' 
-               '\n' 
-               'Changed in version 3.8: Now annotated assignments allow same\n' 
-               'expressions in the right hand side as the regular ' 
-               'assignments.\n' 
-               'Previously, some expressions (like un-parenthesized tuple ' 
-               'expressions)\n' 
-               'caused a syntax error.\n', 
+               '     tools and IDEs.\n'
+               '\n'
+               'Changed in version 3.8: Now annotated assignments allow same\n'
+               'expressions in the right hand side as the regular '
+               'assignments.\n'
+               'Previously, some expressions (like un-parenthesized tuple '
+               'expressions)\n'
+               'caused a syntax error.\n',
  'async': 'Coroutines\n'
           '**********\n'
           '\n'
@@ -459,35 +459,35 @@ topics = {'assert': 'The "assert" statement\n'
           '\n'
           '   async_for_stmt ::= "async" for_stmt\n'
           '\n'
-          'An *asynchronous iterable* provides an "__aiter__" method that\n' 
-          'directly returns an *asynchronous iterator*, which can call\n' 
-          'asynchronous code in its "__anext__" method.\n' 
+          'An *asynchronous iterable* provides an "__aiter__" method that\n'
+          'directly returns an *asynchronous iterator*, which can call\n'
+          'asynchronous code in its "__anext__" method.\n'
           '\n'
           'The "async for" statement allows convenient iteration over\n'
-          'asynchronous iterables.\n' 
+          'asynchronous iterables.\n'
           '\n'
           'The following code:\n'
           '\n'
           '   async for TARGET in ITER:\n'
-          '       SUITE\n' 
+          '       SUITE\n'
           '   else:\n'
-          '       SUITE2\n' 
+          '       SUITE2\n'
           '\n'
           'Is semantically equivalent to:\n'
           '\n'
           '   iter = (ITER)\n'
           '   iter = type(iter).__aiter__(iter)\n'
           '   running = True\n'
-          '\n' 
+          '\n'
           '   while running:\n'
           '       try:\n'
           '           TARGET = await type(iter).__anext__(iter)\n'
           '       except StopAsyncIteration:\n'
           '           running = False\n'
           '       else:\n'
-          '           SUITE\n' 
+          '           SUITE\n'
           '   else:\n'
-          '       SUITE2\n' 
+          '       SUITE2\n'
           '\n'
           'See also "__aiter__()" and "__anext__()" for details.\n'
           '\n'
@@ -507,27 +507,27 @@ topics = {'assert': 'The "assert" statement\n'
           '\n'
           'The following code:\n'
           '\n'
-          '   async with EXPRESSION as TARGET:\n' 
-          '       SUITE\n' 
+          '   async with EXPRESSION as TARGET:\n'
+          '       SUITE\n'
           '\n'
-          'is semantically equivalent to:\n' 
+          'is semantically equivalent to:\n'
           '\n'
-          '   manager = (EXPRESSION)\n' 
-          '   aenter = type(manager).__aenter__\n' 
-          '   aexit = type(manager).__aexit__\n' 
-          '   value = await aenter(manager)\n' 
-          '   hit_except = False\n' 
+          '   manager = (EXPRESSION)\n'
+          '   aenter = type(manager).__aenter__\n'
+          '   aexit = type(manager).__aexit__\n'
+          '   value = await aenter(manager)\n'
+          '   hit_except = False\n'
           '\n'
           '   try:\n'
-          '       TARGET = value\n' 
-          '       SUITE\n' 
+          '       TARGET = value\n'
+          '       SUITE\n'
           '   except:\n'
-          '       hit_except = True\n' 
-          '       if not await aexit(manager, *sys.exc_info()):\n' 
+          '       hit_except = True\n'
+          '       if not await aexit(manager, *sys.exc_info()):\n'
           '           raise\n'
-          '   finally:\n' 
-          '       if not hit_except:\n' 
-          '           await aexit(manager, None, None, None)\n' 
+          '   finally:\n'
+          '       if not hit_except:\n'
+          '           await aexit(manager, None, None, None)\n'
           '\n'
           'See also "__aenter__()" and "__aexit__()" for details.\n'
           '\n'
@@ -543,17 +543,17 @@ topics = {'assert': 'The "assert" statement\n'
           '\n'
           '-[ Footnotes ]-\n'
           '\n'
-          '[1] The exception is propagated to the invocation stack unless ' 
-          'there\n' 
-          '    is a "finally" clause which happens to raise another ' 
-          'exception.\n' 
-          '    That new exception causes the old one to be lost.\n' 
+          '[1] The exception is propagated to the invocation stack unless '
+          'there\n'
+          '    is a "finally" clause which happens to raise another '
+          'exception.\n'
+          '    That new exception causes the old one to be lost.\n'
           '\n'
-          '[2] A string literal appearing as the first statement in the ' 
-          'function\n' 
-          '    body is transformed into the function’s "__doc__" attribute ' 
-          'and\n' 
-          '    therefore the function’s *docstring*.\n' 
+          '[2] A string literal appearing as the first statement in the '
+          'function\n'
+          '    body is transformed into the function’s "__doc__" attribute '
+          'and\n'
+          '    therefore the function’s *docstring*.\n'
           '\n'
           '[3] A string literal appearing as the first statement in the class\n'
           '    body is transformed into the namespace’s "__doc__" item and\n'
@@ -691,19 +691,19 @@ topics = {'assert': 'The "assert" statement\n'
                      'needs, for\n'
                      '   example, "object.__getattribute__(self, name)".\n'
                      '\n'
-                     '   Note:\n' 
+                     '   Note:\n'
+                     '\n'
+                     '     This method may still be bypassed when looking up '
+                     'special methods\n'
+                     '     as the result of implicit invocation via language '
+                     'syntax or\n'
+                     '     built-in functions. See Special method lookup.\n'
+                     '\n'
+                     '   For certain sensitive attribute accesses, raises an '
+                     'auditing event\n'
+                     '   "object.__getattr__" with arguments "obj" and '
+                     '"name".\n'
                      '\n'
-                     '     This method may still be bypassed when looking up ' 
-                     'special methods\n' 
-                     '     as the result of implicit invocation via language ' 
-                     'syntax or\n' 
-                     '     built-in functions. See Special method lookup.\n' 
-                     '\n' 
-                     '   For certain sensitive attribute accesses, raises an ' 
-                     'auditing event\n' 
-                     '   "object.__getattr__" with arguments "obj" and ' 
-                     '"name".\n' 
-                     '\n' 
                      'object.__setattr__(self, name, value)\n'
                      '\n'
                      '   Called when an attribute assignment is attempted.  '
@@ -720,11 +720,11 @@ topics = {'assert': 'The "assert" statement\n'
                      'for example,\n'
                      '   "object.__setattr__(self, name, value)".\n'
                      '\n'
-                     '   For certain sensitive attribute assignments, raises ' 
-                     'an auditing\n' 
-                     '   event "object.__setattr__" with arguments "obj", ' 
-                     '"name", "value".\n' 
-                     '\n' 
+                     '   For certain sensitive attribute assignments, raises '
+                     'an auditing\n'
+                     '   event "object.__setattr__" with arguments "obj", '
+                     '"name", "value".\n'
+                     '\n'
                      'object.__delattr__(self, name)\n'
                      '\n'
                      '   Like "__setattr__()" but for attribute deletion '
@@ -733,11 +733,11 @@ topics = {'assert': 'The "assert" statement\n'
                      'obj.name" is\n'
                      '   meaningful for the object.\n'
                      '\n'
-                     '   For certain sensitive attribute deletions, raises an ' 
-                     'auditing event\n' 
-                     '   "object.__delattr__" with arguments "obj" and ' 
-                     '"name".\n' 
-                     '\n' 
+                     '   For certain sensitive attribute deletions, raises an '
+                     'auditing event\n'
+                     '   "object.__delattr__" with arguments "obj" and '
+                     '"name".\n'
+                     '\n'
                      'object.__dir__(self)\n'
                      '\n'
                      '   Called when "dir()" is called on the object. A '
@@ -769,11 +769,11 @@ topics = {'assert': 'The "assert" statement\n'
                      'returned.\n'
                      '\n'
                      'The "__dir__" function should accept no arguments, and '
-                     'return a\n' 
-                     'sequence of strings that represents the names accessible ' 
-                     'on module. If\n' 
-                     'present, this function overrides the standard "dir()" ' 
-                     'search on a\n' 
+                     'return a\n'
+                     'sequence of strings that represents the names accessible '
+                     'on module. If\n'
+                     'present, this function overrides the standard "dir()" '
+                     'search on a\n'
                      'module.\n'
                      '\n'
                      'For a more fine grained customization of the module '
@@ -796,17 +796,17 @@ topics = {'assert': 'The "assert" statement\n'
                      '\n'
                      '   sys.modules[__name__].__class__ = VerboseModule\n'
                      '\n'
-                     'Note:\n' 
+                     'Note:\n'
+                     '\n'
+                     '  Defining module "__getattr__" and setting module '
+                     '"__class__" only\n'
+                     '  affect lookups made using the attribute access syntax '
+                     '– directly\n'
+                     '  accessing the module globals (whether by code within '
+                     'the module, or\n'
+                     '  via a reference to the module’s globals dictionary) is '
+                     'unaffected.\n'
                      '\n'
-                     '  Defining module "__getattr__" and setting module ' 
-                     '"__class__" only\n' 
-                     '  affect lookups made using the attribute access syntax ' 
-                     '– directly\n' 
-                     '  accessing the module globals (whether by code within ' 
-                     'the module, or\n' 
-                     '  via a reference to the module’s globals dictionary) is ' 
-                     'unaffected.\n' 
-                     '\n' 
                      'Changed in version 3.5: "__class__" module attribute is '
                      'now writable.\n'
                      '\n'
@@ -835,47 +835,47 @@ topics = {'assert': 'The "assert" statement\n'
                      'whose name is\n'
                      'the key of the property in the owner class’ "__dict__".\n'
                      '\n'
-                     'object.__get__(self, instance, owner=None)\n' 
+                     'object.__get__(self, instance, owner=None)\n'
                      '\n'
                      '   Called to get the attribute of the owner class (class '
                      'attribute\n'
                      '   access) or of an instance of that class (instance '
                      'attribute\n'
-                     '   access). The optional *owner* argument is the owner ' 
-                     'class, while\n' 
-                     '   *instance* is the instance that the attribute was ' 
-                     'accessed through,\n' 
-                     '   or "None" when the attribute is accessed through the ' 
-                     '*owner*.\n' 
+                     '   access). The optional *owner* argument is the owner '
+                     'class, while\n'
+                     '   *instance* is the instance that the attribute was '
+                     'accessed through,\n'
+                     '   or "None" when the attribute is accessed through the '
+                     '*owner*.\n'
+                     '\n'
+                     '   This method should return the computed attribute '
+                     'value or raise an\n'
+                     '   "AttributeError" exception.\n'
+                     '\n'
+                     '   **PEP 252** specifies that "__get__()" is callable '
+                     'with one or two\n'
+                     '   arguments.  Python’s own built-in descriptors support '
+                     'this\n'
+                     '   specification; however, it is likely that some '
+                     'third-party tools\n'
+                     '   have descriptors that require both arguments.  '
+                     'Python’s own\n'
+                     '   "__getattribute__()" implementation always passes in '
+                     'both arguments\n'
+                     '   whether they are required or not.\n'
                      '\n'
-                     '   This method should return the computed attribute ' 
-                     'value or raise an\n' 
-                     '   "AttributeError" exception.\n' 
-                     '\n' 
-                     '   **PEP 252** specifies that "__get__()" is callable ' 
-                     'with one or two\n' 
-                     '   arguments.  Python’s own built-in descriptors support ' 
-                     'this\n' 
-                     '   specification; however, it is likely that some ' 
-                     'third-party tools\n' 
-                     '   have descriptors that require both arguments.  ' 
-                     'Python’s own\n' 
-                     '   "__getattribute__()" implementation always passes in ' 
-                     'both arguments\n' 
-                     '   whether they are required or not.\n' 
-                     '\n' 
                      'object.__set__(self, instance, value)\n'
                      '\n'
                      '   Called to set the attribute on an instance *instance* '
                      'of the owner\n'
                      '   class to a new value, *value*.\n'
                      '\n'
-                     '   Note, adding "__set__()" or "__delete__()" changes ' 
-                     'the kind of\n' 
-                     '   descriptor to a “data descriptor”.  See Invoking ' 
-                     'Descriptors for\n' 
-                     '   more details.\n' 
-                     '\n' 
+                     '   Note, adding "__set__()" or "__delete__()" changes '
+                     'the kind of\n'
+                     '   descriptor to a “data descriptor”.  See Invoking '
+                     'Descriptors for\n'
+                     '   more details.\n'
+                     '\n'
                      'object.__delete__(self, instance)\n'
                      '\n'
                      '   Called to delete the attribute on an instance '
@@ -888,24 +888,24 @@ topics = {'assert': 'The "assert" statement\n'
                      'created. The\n'
                      '   descriptor has been assigned to *name*.\n'
                      '\n'
-                     '   Note:\n' 
-                     '\n' 
-                     '     "__set_name__()" is only called implicitly as part ' 
-                     'of the "type"\n' 
-                     '     constructor, so it will need to be called ' 
-                     'explicitly with the\n' 
-                     '     appropriate parameters when a descriptor is added ' 
-                     'to a class\n' 
-                     '     after initial creation:\n' 
-                     '\n' 
-                     '        class A:\n' 
-                     '           pass\n' 
-                     '        descr = custom_descriptor()\n' 
-                     '        A.attr = descr\n' 
-                     "        descr.__set_name__(A, 'attr')\n" 
-                     '\n' 
-                     '     See Creating the class object for more details.\n' 
-                     '\n' 
+                     '   Note:\n'
+                     '\n'
+                     '     "__set_name__()" is only called implicitly as part '
+                     'of the "type"\n'
+                     '     constructor, so it will need to be called '
+                     'explicitly with the\n'
+                     '     appropriate parameters when a descriptor is added '
+                     'to a class\n'
+                     '     after initial creation:\n'
+                     '\n'
+                     '        class A:\n'
+                     '           pass\n'
+                     '        descr = custom_descriptor()\n'
+                     '        A.attr = descr\n'
+                     "        descr.__set_name__(A, 'attr')\n"
+                     '\n'
+                     '     See Creating the class object for more details.\n'
+                     '\n'
                      '   New in version 3.6.\n'
                      '\n'
                      'The attribute "__objclass__" is interpreted by the '
@@ -979,16 +979,16 @@ topics = {'assert': 'The "assert" statement\n'
                      '"super(B,\n'
                      '   obj).m()" searches "obj.__class__.__mro__" for the '
                      'base class "A"\n'
-                     '   immediately following "B" and then invokes the ' 
+                     '   immediately following "B" and then invokes the '
                      'descriptor with the\n'
                      '   call: "A.__dict__[\'m\'].__get__(obj, '
                      'obj.__class__)".\n'
                      '\n'
                      'For instance bindings, the precedence of descriptor '
                      'invocation depends\n'
-                     'on which descriptor methods are defined.  A descriptor ' 
-                     'can define any\n' 
-                     'combination of "__get__()", "__set__()" and ' 
+                     'on which descriptor methods are defined.  A descriptor '
+                     'can define any\n'
+                     'combination of "__get__()", "__set__()" and '
                      '"__delete__()".  If it\n'
                      'does not define "__get__()", then accessing the '
                      'attribute will return\n'
@@ -1002,23 +1002,23 @@ topics = {'assert': 'The "assert" statement\n'
                      'define both\n'
                      '"__get__()" and "__set__()", while non-data descriptors '
                      'have just the\n'
-                     '"__get__()" method.  Data descriptors with "__get__()" ' 
-                     'and "__set__()"\n' 
-                     '(and/or "__delete__()") defined always override a ' 
-                     'redefinition in an\n' 
-                     'instance dictionary.  In contrast, non-data descriptors ' 
-                     'can be\n' 
-                     'overridden by instances.\n' 
+                     '"__get__()" method.  Data descriptors with "__get__()" '
+                     'and "__set__()"\n'
+                     '(and/or "__delete__()") defined always override a '
+                     'redefinition in an\n'
+                     'instance dictionary.  In contrast, non-data descriptors '
+                     'can be\n'
+                     'overridden by instances.\n'
                      '\n'
-                     'Python methods (including those decorated with ' 
-                     '"@staticmethod" and\n' 
-                     '"@classmethod") are implemented as non-data ' 
-                     'descriptors.  Accordingly,\n' 
-                     'instances can redefine and override methods.  This ' 
-                     'allows individual\n' 
-                     'instances to acquire behaviors that differ from other ' 
-                     'instances of the\n' 
-                     'same class.\n' 
+                     'Python methods (including those decorated with '
+                     '"@staticmethod" and\n'
+                     '"@classmethod") are implemented as non-data '
+                     'descriptors.  Accordingly,\n'
+                     'instances can redefine and override methods.  This '
+                     'allows individual\n'
+                     'instances to acquire behaviors that differ from other '
+                     'instances of the\n'
+                     'same class.\n'
                      '\n'
                      'The "property()" function is implemented as a data '
                      'descriptor.\n'
@@ -1031,12 +1031,12 @@ topics = {'assert': 'The "assert" statement\n'
                      '\n'
                      '*__slots__* allow us to explicitly declare data members '
                      '(like\n'
-                     'properties) and deny the creation of "__dict__" and ' 
+                     'properties) and deny the creation of "__dict__" and '
                      '*__weakref__*\n'
                      '(unless explicitly declared in *__slots__* or available '
                      'in a parent.)\n'
                      '\n'
-                     'The space saved over using "__dict__" can be ' 
+                     'The space saved over using "__dict__" can be '
                      'significant. Attribute\n'
                      'lookup speed can be significantly improved as well.\n'
                      '\n'
@@ -1048,7 +1048,7 @@ topics = {'assert': 'The "assert" statement\n'
                      '*__slots__*\n'
                      '   reserves space for the declared variables and '
                      'prevents the\n'
-                     '   automatic creation of "__dict__" and *__weakref__* ' 
+                     '   automatic creation of "__dict__" and *__weakref__* '
                      'for each\n'
                      '   instance.\n'
                      '\n'
@@ -1057,11 +1057,11 @@ topics = {'assert': 'The "assert" statement\n'
                      '--------------------------\n'
                      '\n'
                      '* When inheriting from a class without *__slots__*, the '
-                     '"__dict__" and\n' 
-                     '  *__weakref__* attribute of the instances will always ' 
-                     'be accessible.\n' 
+                     '"__dict__" and\n'
+                     '  *__weakref__* attribute of the instances will always '
+                     'be accessible.\n'
                      '\n'
-                     '* Without a "__dict__" variable, instances cannot be ' 
+                     '* Without a "__dict__" variable, instances cannot be '
                      'assigned new\n'
                      '  variables not listed in the *__slots__* definition.  '
                      'Attempts to\n'
@@ -1074,41 +1074,41 @@ topics = {'assert': 'The "assert" statement\n'
                      '  declaration.\n'
                      '\n'
                      '* Without a *__weakref__* variable for each instance, '
-                     'classes defining\n' 
-                     '  *__slots__* do not support "weak references" to its ' 
-                     'instances. If\n' 
-                     '  weak reference support is needed, then add ' 
-                     '"\'__weakref__\'" to the\n' 
-                     '  sequence of strings in the *__slots__* declaration.\n' 
+                     'classes defining\n'
+                     '  *__slots__* do not support "weak references" to its '
+                     'instances. If\n'
+                     '  weak reference support is needed, then add '
+                     '"\'__weakref__\'" to the\n'
+                     '  sequence of strings in the *__slots__* declaration.\n'
                      '\n'
                      '* *__slots__* are implemented at the class level by '
                      'creating\n'
-                     '  descriptors for each variable name.  As a result, ' 
-                     'class attributes\n' 
-                     '  cannot be used to set default values for instance ' 
-                     'variables defined\n' 
-                     '  by *__slots__*; otherwise, the class attribute would ' 
-                     'overwrite the\n' 
-                     '  descriptor assignment.\n' 
+                     '  descriptors for each variable name.  As a result, '
+                     'class attributes\n'
+                     '  cannot be used to set default values for instance '
+                     'variables defined\n'
+                     '  by *__slots__*; otherwise, the class attribute would '
+                     'overwrite the\n'
+                     '  descriptor assignment.\n'
                      '\n'
                      '* The action of a *__slots__* declaration is not limited '
-                     'to the class\n' 
-                     '  where it is defined.  *__slots__* declared in parents ' 
-                     'are available\n' 
-                     '  in child classes. However, child subclasses will get a ' 
-                     '"__dict__"\n' 
-                     '  and *__weakref__* unless they also define *__slots__* ' 
-                     '(which should\n' 
-                     '  only contain names of any *additional* slots).\n' 
+                     'to the class\n'
+                     '  where it is defined.  *__slots__* declared in parents '
+                     'are available\n'
+                     '  in child classes. However, child subclasses will get a '
+                     '"__dict__"\n'
+                     '  and *__weakref__* unless they also define *__slots__* '
+                     '(which should\n'
+                     '  only contain names of any *additional* slots).\n'
                      '\n'
                      '* If a class defines a slot also defined in a base '
-                     'class, the instance\n' 
-                     '  variable defined by the base class slot is ' 
-                     'inaccessible (except by\n' 
-                     '  retrieving its descriptor directly from the base ' 
-                     'class). This\n' 
-                     '  renders the meaning of the program undefined.  In the ' 
-                     'future, a\n' 
+                     'class, the instance\n'
+                     '  variable defined by the base class slot is '
+                     'inaccessible (except by\n'
+                     '  retrieving its descriptor directly from the base '
+                     'class). This\n'
+                     '  renders the meaning of the program undefined.  In the '
+                     'future, a\n'
                      '  check may be added to prevent this.\n'
                      '\n'
                      '* Nonempty *__slots__* does not work for classes derived '
@@ -1116,19 +1116,19 @@ topics = {'assert': 'The "assert" statement\n'
                      '  “variable-length” built-in types such as "int", '
                      '"bytes" and "tuple".\n'
                      '\n'
-                     '* Any non-string *iterable* may be assigned to ' 
-                     '*__slots__*.\n' 
+                     '* Any non-string *iterable* may be assigned to '
+                     '*__slots__*.\n'
+                     '\n'
+                     '* If a "dictionary" is used to assign *__slots__*, the '
+                     'dictionary keys\n'
+                     '  will be used as the slot names. The values of the '
+                     'dictionary can be\n'
+                     '  used to provide per-attribute docstrings that will be '
+                     'recognised by\n'
+                     '  "inspect.getdoc()" and displayed in the output of '
+                     '"help()".\n'
                      '\n'
-                     '* If a "dictionary" is used to assign *__slots__*, the ' 
-                     'dictionary keys\n' 
-                     '  will be used as the slot names. The values of the ' 
-                     'dictionary can be\n' 
-                     '  used to provide per-attribute docstrings that will be ' 
-                     'recognised by\n' 
-                     '  "inspect.getdoc()" and displayed in the output of ' 
-                     '"help()".\n' 
-                     '\n' 
-                     '* "__class__" assignment works only if both classes have ' 
+                     '* "__class__" assignment works only if both classes have '
                      'the same\n'
                      '  *__slots__*.\n'
                      '\n'
@@ -1138,13 +1138,13 @@ topics = {'assert': 'The "assert" statement\n'
                      'attributes created by\n'
                      '  slots (the other bases must have empty slot layouts) - '
                      'violations\n'
-                     '  raise "TypeError".\n' 
-                     '\n' 
-                     '* If an *iterator* is used for *__slots__* then a ' 
-                     '*descriptor* is\n' 
-                     '  created for each of the iterator’s values. However, ' 
-                     'the *__slots__*\n' 
-                     '  attribute will be an empty iterator.\n', 
+                     '  raise "TypeError".\n'
+                     '\n'
+                     '* If an *iterator* is used for *__slots__* then a '
+                     '*descriptor* is\n'
+                     '  created for each of the iterator’s values. However, '
+                     'the *__slots__*\n'
+                     '  attribute will be an empty iterator.\n',
  'attribute-references': 'Attribute references\n'
                          '********************\n'
                          '\n'
@@ -1266,10 +1266,10 @@ topics = {'assert': 'The "assert" statement\n'
            'In the latter case, sequence repetition is performed; a negative\n'
            'repetition factor yields an empty sequence.\n'
            '\n'
-           'This operation can be customized using the special "__mul__()" ' 
-           'and\n' 
-           '"__rmul__()" methods.\n' 
-           '\n' 
+           'This operation can be customized using the special "__mul__()" '
+           'and\n'
+           '"__rmul__()" methods.\n'
+           '\n'
            'The "@" (at) operator is intended to be used for matrix\n'
            'multiplication.  No builtin Python types implement this operator.\n'
            '\n'
@@ -1285,10 +1285,10 @@ topics = {'assert': 'The "assert" statement\n'
            'result.  Division by zero raises the "ZeroDivisionError" '
            'exception.\n'
            '\n'
-           'This operation can be customized using the special "__truediv__()" ' 
-           'and\n' 
-           '"__floordiv__()" methods.\n' 
-           '\n' 
+           'This operation can be customized using the special "__truediv__()" '
+           'and\n'
+           '"__floordiv__()" methods.\n'
+           '\n'
            'The "%" (modulo) operator yields the remainder from the division '
            'of\n'
            'the first argument by the second.  The numeric arguments are '
@@ -1320,10 +1320,10 @@ topics = {'assert': 'The "assert" statement\n'
            'string formatting is described in the Python Library Reference,\n'
            'section printf-style String Formatting.\n'
            '\n'
-           'The *modulo* operation can be customized using the special ' 
-           '"__mod__()"\n' 
-           'method.\n' 
-           '\n' 
+           'The *modulo* operation can be customized using the special '
+           '"__mod__()"\n'
+           'method.\n'
+           '\n'
            'The floor division operator, the modulo operator, and the '
            '"divmod()"\n'
            'function are not defined for complex numbers.  Instead, convert to '
@@ -1338,16 +1338,16 @@ topics = {'assert': 'The "assert" statement\n'
            'and then added together. In the latter case, the sequences are\n'
            'concatenated.\n'
            '\n'
-           'This operation can be customized using the special "__add__()" ' 
-           'and\n' 
-           '"__radd__()" methods.\n' 
-           '\n' 
+           'This operation can be customized using the special "__add__()" '
+           'and\n'
+           '"__radd__()" methods.\n'
+           '\n'
            'The "-" (subtraction) operator yields the difference of its '
            'arguments.\n'
-           'The numeric arguments are first converted to a common type.\n' 
-           '\n' 
-           'This operation can be customized using the special "__sub__()" ' 
-           'method.\n', 
+           'The numeric arguments are first converted to a common type.\n'
+           '\n'
+           'This operation can be customized using the special "__sub__()" '
+           'method.\n',
  'bitwise': 'Binary bitwise operations\n'
             '*************************\n'
             '\n'
@@ -1360,18 +1360,18 @@ topics = {'assert': 'The "assert" statement\n'
             '\n'
             'The "&" operator yields the bitwise AND of its arguments, which '
             'must\n'
-            'be integers or one of them must be a custom object overriding\n' 
-            '"__and__()" or "__rand__()" special methods.\n' 
+            'be integers or one of them must be a custom object overriding\n'
+            '"__and__()" or "__rand__()" special methods.\n'
             '\n'
             'The "^" operator yields the bitwise XOR (exclusive OR) of its\n'
-            'arguments, which must be integers or one of them must be a ' 
-            'custom\n' 
-            'object overriding "__xor__()" or "__rxor__()" special methods.\n' 
+            'arguments, which must be integers or one of them must be a '
+            'custom\n'
+            'object overriding "__xor__()" or "__rxor__()" special methods.\n'
             '\n'
             'The "|" operator yields the bitwise (inclusive) OR of its '
             'arguments,\n'
-            'which must be integers or one of them must be a custom object\n' 
-            'overriding "__or__()" or "__ror__()" special methods.\n', 
+            'which must be integers or one of them must be a custom object\n'
+            'overriding "__or__()" or "__ror__()" special methods.\n',
  'bltin-code-objects': 'Code Objects\n'
                        '************\n'
                        '\n'
@@ -1388,10 +1388,10 @@ topics = {'assert': 'The "assert" statement\n'
                        'through their "__code__" attribute. See also the '
                        '"code" module.\n'
                        '\n'
-                       'Accessing "__code__" raises an auditing event ' 
-                       '"object.__getattr__"\n' 
-                       'with arguments "obj" and ""__code__"".\n' 
-                       '\n' 
+                       'Accessing "__code__" raises an auditing event '
+                       '"object.__getattr__"\n'
+                       'with arguments "obj" and ""__code__"".\n'
+                       '\n'
                        'A code object can be executed or evaluated by passing '
                        'it (instead of a\n'
                        'source string) to the "exec()" or "eval()"  built-in '
@@ -1512,8 +1512,8 @@ topics = {'assert': 'The "assert" statement\n'
                    '\n'
                    '   Called when the instance is “called” as a function; if '
                    'this method\n'
-                   '   is defined, "x(arg1, arg2, ...)" roughly translates to\n' 
-                   '   "type(x).__call__(x, arg1, ...)".\n', 
+                   '   is defined, "x(arg1, arg2, ...)" roughly translates to\n'
+                   '   "type(x).__call__(x, arg1, ...)".\n',
  'calls': 'Calls\n'
           '*****\n'
           '\n'
@@ -1529,8 +1529,8 @@ topics = {'assert': 'The "assert" statement\n'
           '                     | starred_and_keywords ["," '
           'keywords_arguments]\n'
           '                     | keywords_arguments\n'
-          '   positional_arguments ::= positional_item ("," positional_item)*\n' 
-          '   positional_item      ::= assignment_expression | "*" expression\n' 
+          '   positional_arguments ::= positional_item ("," positional_item)*\n'
+          '   positional_item      ::= assignment_expression | "*" expression\n'
           '   starred_and_keywords ::= ("*" expression | keyword_item)\n'
           '                            ("," "*" expression | "," '
           'keyword_item)*\n'
@@ -1770,10 +1770,10 @@ topics = {'assert': 'The "assert" statement\n'
           'for\n'
           'function decorators.  The result is then bound to the class name.\n'
           '\n'
-          'Changed in version 3.9: Classes may be decorated with any valid\n' 
-          '"assignment_expression". Previously, the grammar was much more\n' 
-          'restrictive; see **PEP 614** for details.\n' 
-          '\n' 
+          'Changed in version 3.9: Classes may be decorated with any valid\n'
+          '"assignment_expression". Previously, the grammar was much more\n'
+          'restrictive; see **PEP 614** for details.\n'
+          '\n'
           '**Programmer’s note:** Variables defined in the class definition '
           'are\n'
           'class attributes; they are shared by instances.  Instance '
@@ -1817,11 +1817,11 @@ topics = {'assert': 'The "assert" statement\n'
                 '   comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "!="\n'
                 '                     | "is" ["not"] | ["not"] "in"\n'
                 '\n'
-                'Comparisons yield boolean values: "True" or "False". Custom ' 
-                '*rich\n' 
-                'comparison methods* may return non-boolean values. In this ' 
-                'case Python\n' 
-                'will call "bool()" on such value in boolean contexts.\n' 
+                'Comparisons yield boolean values: "True" or "False". Custom '
+                '*rich\n'
+                'comparison methods* may return non-boolean values. In this '
+                'case Python\n'
+                'will call "bool()" on such value in boolean contexts.\n'
                 '\n'
                 'Comparisons can be chained arbitrarily, e.g., "x < y <= z" '
                 'is\n'
@@ -1934,16 +1934,16 @@ topics = {'assert': 'The "assert" statement\n'
                 '  value is false. A counter-intuitive implication is that '
                 'not-a-number\n'
                 '  values are not equal to themselves.  For example, if "x =\n'
-                '  float(\'NaN\')", "3 < x", "x < 3" and "x == x" are all ' 
-                'false, while "x\n' 
-                '  != x" is true.  This behavior is compliant with IEEE 754.\n' 
+                '  float(\'NaN\')", "3 < x", "x < 3" and "x == x" are all '
+                'false, while "x\n'
+                '  != x" is true.  This behavior is compliant with IEEE 754.\n'
+                '\n'
+                '* "None" and "NotImplemented" are singletons.  **PEP 8** '
+                'advises that\n'
+                '  comparisons for singletons should always be done with "is" '
+                'or "is\n'
+                '  not", never the equality operators.\n'
                 '\n'
-                '* "None" and "NotImplemented" are singletons.  **PEP 8** ' 
-                'advises that\n' 
-                '  comparisons for singletons should always be done with "is" ' 
-                'or "is\n' 
-                '  not", never the equality operators.\n' 
-                '\n' 
                 '* Binary sequences (instances of "bytes" or "bytearray") can '
                 'be\n'
                 '  compared within and across their types.  They compare\n'
@@ -1958,24 +1958,24 @@ topics = {'assert': 'The "assert" statement\n'
                 '\n'
                 '  Strings and binary sequences cannot be directly compared.\n'
                 '\n'
-                '* Sequences (instances of "tuple", "list", or "range") can be ' 
-                'compared\n' 
-                '  only within each of their types, with the restriction that ' 
-                'ranges do\n' 
-                '  not support order comparison.  Equality comparison across ' 
-                'these\n' 
-                '  types results in inequality, and ordering comparison across ' 
-                'these\n' 
-                '  types raises "TypeError".\n' 
+                '* Sequences (instances of "tuple", "list", or "range") can be '
+                'compared\n'
+                '  only within each of their types, with the restriction that '
+                'ranges do\n'
+                '  not support order comparison.  Equality comparison across '
+                'these\n'
+                '  types results in inequality, and ordering comparison across '
+                'these\n'
+                '  types raises "TypeError".\n'
                 '\n'
                 '  Sequences compare lexicographically using comparison of\n'
-                '  corresponding elements.  The built-in containers typically ' 
-                'assume\n' 
-                '  identical objects are equal to themselves.  That lets them ' 
-                'bypass\n' 
-                '  equality tests for identical objects to improve performance ' 
-                'and to\n' 
-                '  maintain their internal invariants.\n' 
+                '  corresponding elements.  The built-in containers typically '
+                'assume\n'
+                '  identical objects are equal to themselves.  That lets them '
+                'bypass\n'
+                '  equality tests for identical objects to improve performance '
+                'and to\n'
+                '  maintain their internal invariants.\n'
                 '\n'
                 '  Lexicographical comparison between built-in collections '
                 'works as\n'
@@ -1990,8 +1990,8 @@ topics = {'assert': 'The "assert" statement\n'
                 '    false because the type is not the same).\n'
                 '\n'
                 '  * Collections that support order comparison are ordered the '
-                'same as\n' 
-                '    their first unequal elements (for example, "[1,2,x] <= ' 
+                'same as\n'
+                '    their first unequal elements (for example, "[1,2,x] <= '
                 '[1,2,y]"\n'
                 '    has the same value as "x <= y").  If a corresponding '
                 'element does\n'
@@ -2009,8 +2009,8 @@ topics = {'assert': 'The "assert" statement\n'
                 '"TypeError".\n'
                 '\n'
                 '* Sets (instances of "set" or "frozenset") can be compared '
-                'within and\n' 
-                '  across their types.\n' 
+                'within and\n'
+                '  across their types.\n'
                 '\n'
                 '  They define order comparison operators to mean subset and '
                 'superset\n'
@@ -2029,8 +2029,8 @@ topics = {'assert': 'The "assert" statement\n'
                 '  Comparison of sets enforces reflexivity of its elements.\n'
                 '\n'
                 '* Most other built-in types have no comparison methods '
-                'implemented, so\n' 
-                '  they inherit the default comparison behavior.\n' 
+                'implemented, so\n'
+                '  they inherit the default comparison behavior.\n'
                 '\n'
                 'User-defined classes that customize their comparison behavior '
                 'should\n'
@@ -2079,10 +2079,10 @@ topics = {'assert': 'The "assert" statement\n'
                 '  "total_ordering()" decorator.\n'
                 '\n'
                 '* The "hash()" result should be consistent with equality. '
-                'Objects that\n' 
-                '  are equal should either have the same hash value, or be ' 
-                'marked as\n' 
-                '  unhashable.\n' 
+                'Objects that\n'
+                '  are equal should either have the same hash value, or be '
+                'marked as\n'
+                '  unhashable.\n'
                 '\n'
                 'Python does not enforce these consistency rules. In fact, '
                 'the\n'
@@ -2124,26 +2124,26 @@ topics = {'assert': 'The "assert" statement\n'
                 '\n'
                 'For user-defined classes which do not define "__contains__()" '
                 'but do\n'
-                'define "__iter__()", "x in y" is "True" if some value "z", ' 
-                'for which\n' 
-                'the expression "x is z or x == z" is true, is produced while ' 
-                'iterating\n' 
-                'over "y". If an exception is raised during the iteration, it ' 
-                'is as if\n' 
-                '"in" raised that exception.\n' 
+                'define "__iter__()", "x in y" is "True" if some value "z", '
+                'for which\n'
+                'the expression "x is z or x == z" is true, is produced while '
+                'iterating\n'
+                'over "y". If an exception is raised during the iteration, it '
+                'is as if\n'
+                '"in" raised that exception.\n'
                 '\n'
                 'Lastly, the old-style iteration protocol is tried: if a class '
                 'defines\n'
                 '"__getitem__()", "x in y" is "True" if and only if there is a '
                 'non-\n'
-                'negative integer index *i* such that "x is y[i] or x == ' 
-                'y[i]", and no\n' 
-                'lower integer index raises the "IndexError" exception.  (If ' 
-                'any other\n' 
+                'negative integer index *i* such that "x is y[i] or x == '
+                'y[i]", and no\n'
+                'lower integer index raises the "IndexError" exception.  (If '
+                'any other\n'
                 'exception is raised, it is as if "in" raised that '
                 'exception).\n'
                 '\n'
-                'The operator "not in" is defined to have the inverse truth ' 
+                'The operator "not in" is defined to have the inverse truth '
                 'value of\n'
                 '"in".\n'
                 '\n'
@@ -2151,13 +2151,13 @@ topics = {'assert': 'The "assert" statement\n'
                 'Identity comparisons\n'
                 '====================\n'
                 '\n'
-                'The operators "is" and "is not" test for an object’s ' 
-                'identity: "x is\n' 
-                'y" is true if and only if *x* and *y* are the same object.  ' 
-                'An\n' 
-                'Object’s identity is determined using the "id()" function.  ' 
-                '"x is not\n' 
-                'y" yields the inverse truth value. [4]\n', 
+                'The operators "is" and "is not" test for an object’s '
+                'identity: "x is\n'
+                'y" is true if and only if *x* and *y* are the same object.  '
+                'An\n'
+                'Object’s identity is determined using the "id()" function.  '
+                '"x is not\n'
+                'y" yields the inverse truth value. [4]\n',
  'compound': 'Compound statements\n'
              '*******************\n'
              '\n'
@@ -2248,8 +2248,8 @@ topics = {'assert': 'The "assert" statement\n'
              '\n'
              'The "if" statement is used for conditional execution:\n'
              '\n'
-             '   if_stmt ::= "if" assignment_expression ":" suite\n' 
-             '               ("elif" assignment_expression ":" suite)*\n' 
+             '   if_stmt ::= "if" assignment_expression ":" suite\n'
+             '               ("elif" assignment_expression ":" suite)*\n'
              '               ["else" ":" suite]\n'
              '\n'
              'It selects exactly one of the suites by evaluating the '
@@ -2272,7 +2272,7 @@ topics = {'assert': 'The "assert" statement\n'
              'an\n'
              'expression is true:\n'
              '\n'
-             '   while_stmt ::= "while" assignment_expression ":" suite\n' 
+             '   while_stmt ::= "while" assignment_expression ":" suite\n'
              '                  ["else" ":" suite]\n'
              '\n'
              'This repeatedly tests the expression and, if it is true, '
@@ -2332,7 +2332,7 @@ topics = {'assert': 'The "assert" statement\n'
              'next\n'
              'item.\n'
              '\n'
-             'The for-loop makes assignments to the variables in the target ' 
+             'The for-loop makes assignments to the variables in the target '
              'list.\n'
              'This overwrites all previous assignments to those variables '
              'including\n'
@@ -2356,11 +2356,11 @@ topics = {'assert': 'The "assert" statement\n'
              ':= a to b do"; e.g., "list(range(3))" returns the list "[0, 1, '
              '2]".\n'
              '\n'
-             'Note:\n' 
-             '\n' 
-             '  There is a subtlety when the sequence is being modified by the ' 
-             'loop\n' 
-             '  (this can only occur for mutable sequences, e.g. lists).  An\n' 
+             'Note:\n'
+             '\n'
+             '  There is a subtlety when the sequence is being modified by the '
+             'loop\n'
+             '  (this can only occur for mutable sequences, e.g. lists).  An\n'
              '  internal counter is used to keep track of which item is used '
              'next,\n'
              '  and this is incremented on each iteration.  When this counter '
@@ -2418,9 +2418,9 @@ topics = {'assert': 'The "assert" statement\n'
              '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 that is the class or a ' 
-             'base\n' 
-             'class of the exception object.\n' 
+             'object, or a tuple containing an item that is the class or a '
+             'base\n'
+             'class of the exception object.\n'
              '\n'
              'If no except clause matches the exception, the search for an '
              'exception\n'
@@ -2514,9 +2514,9 @@ topics = {'assert': 'The "assert" statement\n'
              'saved\n'
              'exception is set as the context of the new exception. If the '
              '"finally"\n'
-             'clause executes a "return", "break" or "continue" statement, the ' 
-             'saved\n' 
-             'exception is discarded:\n' 
+             'clause executes a "return", "break" or "continue" statement, the '
+             'saved\n'
+             'exception is discarded:\n'
              '\n'
              '   >>> def f():\n'
              '   ...     try:\n'
@@ -2535,7 +2535,7 @@ topics = {'assert': 'The "assert" statement\n'
              'the\n'
              '"try" suite of a "try"…"finally" statement, the "finally" clause '
              'is\n'
-             'also executed ‘on the way out.’\n' 
+             'also executed ‘on the way out.’\n'
              '\n'
              'The return value of a function is determined by the last '
              '"return"\n'
@@ -2559,12 +2559,12 @@ topics = {'assert': 'The "assert" statement\n'
              'generate\n'
              'exceptions may be found in section The raise statement.\n'
              '\n'
-             'Changed in version 3.8: Prior to Python 3.8, a "continue" ' 
-             'statement\n' 
-             'was illegal in the "finally" clause due to a problem with the\n' 
-             'implementation.\n' 
+             'Changed in version 3.8: Prior to Python 3.8, a "continue" '
+             'statement\n'
+             'was illegal in the "finally" clause due to a problem with the\n'
+             'implementation.\n'
+             '\n'
              '\n'
-             '\n' 
              'The "with" statement\n'
              '====================\n'
              '\n'
@@ -2584,33 +2584,33 @@ topics = {'assert': 'The "assert" statement\n'
              'follows:\n'
              '\n'
              '1. The context expression (the expression given in the '
-             '"with_item") is\n' 
-             '   evaluated to obtain a context manager.\n' 
+             '"with_item") is\n'
+             '   evaluated to obtain a context manager.\n'
+             '\n'
+             '2. The context manager’s "__enter__()" is loaded for later use.\n'
              '\n'
-             '2. The context manager’s "__enter__()" is loaded for later use.\n' 
+             '3. The context manager’s "__exit__()" is loaded for later use.\n'
              '\n'
-             '3. The context manager’s "__exit__()" is loaded for later use.\n' 
+             '4. The context manager’s "__enter__()" method is invoked.\n'
+             '\n'
+             '5. If a target was included in the "with" statement, the return '
+             'value\n'
+             '   from "__enter__()" is assigned to it.\n'
              '\n'
-             '4. The context manager’s "__enter__()" method is invoked.\n' 
-             '\n' 
-             '5. If a target was included in the "with" statement, the return ' 
-             'value\n' 
-             '   from "__enter__()" is assigned to it.\n' 
+             '   Note:\n'
              '\n'
-             '   Note:\n' 
-             '\n' 
-             '     The "with" statement guarantees that if the "__enter__()" ' 
-             'method\n' 
-             '     returns without an error, then "__exit__()" will always be\n' 
+             '     The "with" statement guarantees that if the "__enter__()" '
+             'method\n'
+             '     returns without an error, then "__exit__()" will always be\n'
              '     called. Thus, if an error occurs during the assignment to '
              'the\n'
              '     target list, it will be treated the same as an error '
              'occurring\n'
              '     within the suite would be. See step 6 below.\n'
              '\n'
-             '6. The suite is executed.\n' 
+             '6. The suite is executed.\n'
              '\n'
-             '7. The context manager’s "__exit__()" method is invoked.  If an\n' 
+             '7. 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, '
@@ -2632,42 +2632,42 @@ topics = {'assert': 'The "assert" statement\n'
              'proceeds\n'
              '   at the normal location for the kind of exit that was taken.\n'
              '\n'
-             'The following code:\n' 
-             '\n' 
-             '   with EXPRESSION as TARGET:\n' 
-             '       SUITE\n' 
-             '\n' 
-             'is semantically equivalent to:\n' 
-             '\n' 
-             '   manager = (EXPRESSION)\n' 
-             '   enter = type(manager).__enter__\n' 
-             '   exit = type(manager).__exit__\n' 
-             '   value = enter(manager)\n' 
-             '   hit_except = False\n' 
-             '\n' 
-             '   try:\n' 
-             '       TARGET = value\n' 
-             '       SUITE\n' 
-             '   except:\n' 
-             '       hit_except = True\n' 
-             '       if not exit(manager, *sys.exc_info()):\n' 
-             '           raise\n' 
-             '   finally:\n' 
-             '       if not hit_except:\n' 
-             '           exit(manager, None, None, None)\n' 
-             '\n' 
+             'The following code:\n'
+             '\n'
+             '   with EXPRESSION as TARGET:\n'
+             '       SUITE\n'
+             '\n'
+             'is semantically equivalent to:\n'
+             '\n'
+             '   manager = (EXPRESSION)\n'
+             '   enter = type(manager).__enter__\n'
+             '   exit = type(manager).__exit__\n'
+             '   value = enter(manager)\n'
+             '   hit_except = False\n'
+             '\n'
+             '   try:\n'
+             '       TARGET = value\n'
+             '       SUITE\n'
+             '   except:\n'
+             '       hit_except = True\n'
+             '       if not exit(manager, *sys.exc_info()):\n'
+             '           raise\n'
+             '   finally:\n'
+             '       if not hit_except:\n'
+             '           exit(manager, None, None, None)\n'
+             '\n'
              'With more than one item, the context managers are processed as '
              'if\n'
              'multiple "with" statements were nested:\n'
              '\n'
              '   with A() as a, B() as b:\n'
-             '       SUITE\n' 
+             '       SUITE\n'
              '\n'
-             'is semantically equivalent to:\n' 
+             'is semantically equivalent to:\n'
              '\n'
              '   with A() as a:\n'
              '       with B() as b:\n'
-             '           SUITE\n' 
+             '           SUITE\n'
              '\n'
              'Changed in version 3.1: Support for multiple context '
              'expressions.\n'
@@ -2687,24 +2687,24 @@ topics = {'assert': 'The "assert" statement\n'
              '(see\n'
              'section The standard type hierarchy):\n'
              '\n'
-             '   funcdef                   ::= [decorators] "def" funcname "(" ' 
+             '   funcdef                   ::= [decorators] "def" funcname "(" '
              '[parameter_list] ")"\n'
              '               ["->" expression] ":" suite\n'
-             '   decorators                ::= decorator+\n' 
-             '   decorator                 ::= "@" assignment_expression ' 
-             'NEWLINE\n' 
-             '   parameter_list            ::= defparameter ("," ' 
-             'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n' 
-             '                        | parameter_list_no_posonly\n' 
-             '   parameter_list_no_posonly ::= defparameter ("," ' 
-             'defparameter)* ["," [parameter_list_starargs]]\n' 
-             '                                 | parameter_list_starargs\n' 
-             '   parameter_list_starargs   ::= "*" [parameter] ("," ' 
+             '   decorators                ::= decorator+\n'
+             '   decorator                 ::= "@" assignment_expression '
+             'NEWLINE\n'
+             '   parameter_list            ::= defparameter ("," '
+             'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n'
+             '                        | parameter_list_no_posonly\n'
+             '   parameter_list_no_posonly ::= defparameter ("," '
+             'defparameter)* ["," [parameter_list_starargs]]\n'
+             '                                 | parameter_list_starargs\n'
+             '   parameter_list_starargs   ::= "*" [parameter] ("," '
              'defparameter)* ["," ["**" parameter [","]]]\n'
              '                               | "**" parameter [","]\n'
-             '   parameter                 ::= identifier [":" expression]\n' 
-             '   defparameter              ::= parameter ["=" expression]\n' 
-             '   funcname                  ::= identifier\n' 
+             '   parameter                 ::= identifier [":" expression]\n'
+             '   defparameter              ::= parameter ["=" expression]\n'
+             '   funcname                  ::= identifier\n'
              '\n'
              'A function definition is an executable statement.  Its execution '
              'binds\n'
@@ -2745,11 +2745,11 @@ topics = {'assert': 'The "assert" statement\n'
              'the name\n'
              '"func".\n'
              '\n'
-             'Changed in version 3.9: Functions may be decorated with any ' 
-             'valid\n' 
-             '"assignment_expression". Previously, the grammar was much more\n' 
-             'restrictive; see **PEP 614** for details.\n' 
-             '\n' 
+             'Changed in version 3.9: Functions may be decorated with any '
+             'valid\n'
+             '"assignment_expression". Previously, the grammar was much more\n'
+             'restrictive; see **PEP 614** for details.\n'
+             '\n'
              'When one or more *parameters* have the form *parameter* "="\n'
              '*expression*, the function is said to have “default parameter '
              'values.”\n'
@@ -2792,7 +2792,7 @@ topics = {'assert': 'The "assert" statement\n'
              'Calls.\n'
              'A function call always assigns values to all parameters '
              'mentioned in\n'
-             'the parameter list, either from positional arguments, from ' 
+             'the parameter list, either from positional arguments, from '
              'keyword\n'
              'arguments, or from default values.  If the form “"*identifier"” '
              'is\n'
@@ -2804,15 +2804,15 @@ topics = {'assert': 'The "assert" statement\n'
              'new\n'
              'empty mapping of the same type.  Parameters after “"*"” or\n'
              '“"*identifier"” are keyword-only parameters and may only be '
-             'passed by\n' 
-             'keyword arguments.  Parameters before “"/"” are positional-only\n' 
-             'parameters and may only be passed by positional arguments.\n' 
-             '\n'
-             'Changed in version 3.8: The "/" function parameter syntax may be ' 
-             'used\n' 
-             'to indicate positional-only parameters. See **PEP 570** for ' 
-             'details.\n' 
-             '\n' 
+             'passed by\n'
+             'keyword arguments.  Parameters before “"/"” are positional-only\n'
+             'parameters and may only be passed by positional arguments.\n'
+             '\n'
+             'Changed in version 3.8: The "/" function parameter syntax may be '
+             'used\n'
+             'to indicate positional-only parameters. See **PEP 570** for '
+             'details.\n'
+             '\n'
              'Parameters may have an *annotation* of the form “": '
              'expression"”\n'
              'following the parameter name.  Any parameter may have an '
@@ -2957,10 +2957,10 @@ topics = {'assert': 'The "assert" statement\n'
              'function decorators.  The result is then bound to the class '
              'name.\n'
              '\n'
-             'Changed in version 3.9: Classes may be decorated with any valid\n' 
-             '"assignment_expression". Previously, the grammar was much more\n' 
-             'restrictive; see **PEP 614** for details.\n' 
-             '\n' 
+             'Changed in version 3.9: Classes may be decorated with any valid\n'
+             '"assignment_expression". Previously, the grammar was much more\n'
+             'restrictive; see **PEP 614** for details.\n'
+             '\n'
              '**Programmer’s note:** Variables defined in the class definition '
              'are\n'
              'class attributes; they are shared by instances.  Instance '
@@ -3034,35 +3034,35 @@ topics = {'assert': 'The "assert" statement\n'
              '\n'
              '   async_for_stmt ::= "async" for_stmt\n'
              '\n'
-             'An *asynchronous iterable* provides an "__aiter__" method that\n' 
-             'directly returns an *asynchronous iterator*, which can call\n' 
-             'asynchronous code in its "__anext__" method.\n' 
+             'An *asynchronous iterable* provides an "__aiter__" method that\n'
+             'directly returns an *asynchronous iterator*, which can call\n'
+             'asynchronous code in its "__anext__" method.\n'
              '\n'
              'The "async for" statement allows convenient iteration over\n'
-             'asynchronous iterables.\n' 
+             'asynchronous iterables.\n'
              '\n'
              'The following code:\n'
              '\n'
              '   async for TARGET in ITER:\n'
-             '       SUITE\n' 
+             '       SUITE\n'
              '   else:\n'
-             '       SUITE2\n' 
+             '       SUITE2\n'
              '\n'
              'Is semantically equivalent to:\n'
              '\n'
              '   iter = (ITER)\n'
              '   iter = type(iter).__aiter__(iter)\n'
              '   running = True\n'
-             '\n' 
+             '\n'
              '   while running:\n'
              '       try:\n'
              '           TARGET = await type(iter).__anext__(iter)\n'
              '       except StopAsyncIteration:\n'
              '           running = False\n'
              '       else:\n'
-             '           SUITE\n' 
+             '           SUITE\n'
              '   else:\n'
-             '       SUITE2\n' 
+             '       SUITE2\n'
              '\n'
              'See also "__aiter__()" and "__anext__()" for details.\n'
              '\n'
@@ -3082,27 +3082,27 @@ topics = {'assert': 'The "assert" statement\n'
              '\n'
              'The following code:\n'
              '\n'
-             '   async with EXPRESSION as TARGET:\n' 
-             '       SUITE\n' 
+             '   async with EXPRESSION as TARGET:\n'
+             '       SUITE\n'
              '\n'
-             'is semantically equivalent to:\n' 
+             'is semantically equivalent to:\n'
              '\n'
-             '   manager = (EXPRESSION)\n' 
-             '   aenter = type(manager).__aenter__\n' 
-             '   aexit = type(manager).__aexit__\n' 
-             '   value = await aenter(manager)\n' 
-             '   hit_except = False\n' 
+             '   manager = (EXPRESSION)\n'
+             '   aenter = type(manager).__aenter__\n'
+             '   aexit = type(manager).__aexit__\n'
+             '   value = await aenter(manager)\n'
+             '   hit_except = False\n'
              '\n'
              '   try:\n'
-             '       TARGET = value\n' 
-             '       SUITE\n' 
+             '       TARGET = value\n'
+             '       SUITE\n'
              '   except:\n'
-             '       hit_except = True\n' 
-             '       if not await aexit(manager, *sys.exc_info()):\n' 
+             '       hit_except = True\n'
+             '       if not await aexit(manager, *sys.exc_info()):\n'
              '           raise\n'
-             '   finally:\n' 
-             '       if not hit_except:\n' 
-             '           await aexit(manager, None, None, None)\n' 
+             '   finally:\n'
+             '       if not hit_except:\n'
+             '           await aexit(manager, None, None, None)\n'
              '\n'
              'See also "__aenter__()" and "__aexit__()" for details.\n'
              '\n'
@@ -3119,17 +3119,17 @@ topics = {'assert': 'The "assert" statement\n'
              '\n'
              '-[ Footnotes ]-\n'
              '\n'
-             '[1] The exception is propagated to the invocation stack unless ' 
-             'there\n' 
-             '    is a "finally" clause which happens to raise another ' 
-             'exception.\n' 
-             '    That new exception causes the old one to be lost.\n' 
+             '[1] The exception is propagated to the invocation stack unless '
+             'there\n'
+             '    is a "finally" clause which happens to raise another '
+             'exception.\n'
+             '    That new exception causes the old one to be lost.\n'
              '\n'
-             '[2] A string literal appearing as the first statement in the ' 
-             'function\n' 
-             '    body is transformed into the function’s "__doc__" attribute ' 
-             'and\n' 
-             '    therefore the function’s *docstring*.\n' 
+             '[2] A string literal appearing as the first statement in the '
+             'function\n'
+             '    body is transformed into the function’s "__doc__" attribute '
+             'and\n'
+             '    therefore the function’s *docstring*.\n'
              '\n'
              '[3] A string literal appearing as the first statement in the '
              'class\n'
@@ -3204,10 +3204,10 @@ topics = {'assert': 'The "assert" statement\n'
              '\n'
              '"continue" may only occur syntactically nested in a "for" or '
              '"while"\n'
-             'loop, but not nested in a function or class definition within ' 
-             'that\n' 
-             'loop.  It continues with the next cycle of the nearest enclosing ' 
-             'loop.\n' 
+             'loop, but not nested in a function or class definition within '
+             'that\n'
+             'loop.  It continues with the next cycle of the nearest enclosing '
+             'loop.\n'
              '\n'
              'When "continue" passes control out of a "try" statement with a\n'
              '"finally" clause, that "finally" clause is executed before '
@@ -3218,7 +3218,7 @@ topics = {'assert': 'The "assert" statement\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'
@@ -3228,8 +3228,8 @@ topics = {'assert': 'The "assert" statement\n'
                 '  complex;\n'
                 '\n'
                 '* otherwise, if either argument is a floating point number, '
-                'the other\n' 
-                '  is converted to floating point;\n' 
+                'the other\n'
+                '  is converted to floating point;\n'
                 '\n'
                 '* otherwise, both must be integers and no conversion is '
                 'necessary.\n'
@@ -3267,15 +3267,15 @@ topics = {'assert': 'The "assert" statement\n'
                   'returning\n'
                   '   it.\n'
                   '\n'
-                  '   If "__new__()" is invoked during object construction and ' 
-                  'it returns\n' 
-                  '   an instance of *cls*, then the new instance’s ' 
-                  '"__init__()" method\n' 
-                  '   will be invoked like "__init__(self[, ...])", where ' 
-                  '*self* is the\n' 
-                  '   new instance and the remaining arguments are the same as ' 
-                  'were\n' 
-                  '   passed to the object constructor.\n' 
+                  '   If "__new__()" is invoked during object construction and '
+                  'it returns\n'
+                  '   an instance of *cls*, then the new instance’s '
+                  '"__init__()" method\n'
+                  '   will be invoked like "__init__(self[, ...])", where '
+                  '*self* is the\n'
+                  '   new instance and the remaining arguments are the same as '
+                  'were\n'
+                  '   passed to the object constructor.\n'
                   '\n'
                   '   If "__new__()" does not return an instance of *cls*, '
                   'then the new\n'
@@ -3339,9 +3339,9 @@ topics = {'assert': 'The "assert" statement\n'
                   'for\n'
                   '   objects that still exist when the interpreter exits.\n'
                   '\n'
-                  '   Note:\n' 
-                  '\n' 
-                  '     "del x" doesn’t directly call "x.__del__()" — the ' 
+                  '   Note:\n'
+                  '\n'
+                  '     "del x" doesn’t directly call "x.__del__()" — the '
                   'former\n'
                   '     decrements the reference count for "x" by one, and the '
                   'latter is\n'
@@ -3365,16 +3365,16 @@ topics = {'assert': 'The "assert" statement\n'
                   '\n'
                   '   See also: Documentation for the "gc" module.\n'
                   '\n'
-                  '   Warning:\n' 
+                  '   Warning:\n'
+                  '\n'
+                  '     Due to the precarious circumstances under which '
+                  '"__del__()"\n'
+                  '     methods are invoked, exceptions that occur during '
+                  'their execution\n'
+                  '     are ignored, and a warning is printed to "sys.stderr" '
+                  'instead.\n'
+                  '     In particular:\n'
                   '\n'
-                  '     Due to the precarious circumstances under which ' 
-                  '"__del__()"\n' 
-                  '     methods are invoked, exceptions that occur during ' 
-                  'their execution\n' 
-                  '     are ignored, and a warning is printed to "sys.stderr" ' 
-                  'instead.\n' 
-                  '     In particular:\n' 
-                  '\n' 
                   '     * "__del__()" can be invoked when arbitrary code is '
                   'being\n'
                   '       executed, including from any arbitrary thread.  If '
@@ -3386,20 +3386,20 @@ topics = {'assert': 'The "assert" statement\n'
                   '       that gets interrupted to execute "__del__()".\n'
                   '\n'
                   '     * "__del__()" can be executed during interpreter '
-                  'shutdown.  As a\n' 
-                  '       consequence, the global variables it needs to access ' 
-                  '(including\n' 
-                  '       other modules) may already have been deleted or set ' 
-                  'to "None".\n' 
-                  '       Python guarantees that globals whose name begins ' 
-                  'with a single\n' 
-                  '       underscore are deleted from their module before ' 
-                  'other globals\n' 
-                  '       are deleted; if no other references to such globals ' 
-                  'exist, this\n' 
-                  '       may help in assuring that imported modules are still ' 
-                  'available\n' 
-                  '       at the time when the "__del__()" method is called.\n' 
+                  'shutdown.  As a\n'
+                  '       consequence, the global variables it needs to access '
+                  '(including\n'
+                  '       other modules) may already have been deleted or set '
+                  'to "None".\n'
+                  '       Python guarantees that globals whose name begins '
+                  'with a single\n'
+                  '       underscore are deleted from their module before '
+                  'other globals\n'
+                  '       are deleted; if no other references to such globals '
+                  'exist, this\n'
+                  '       may help in assuring that imported modules are still '
+                  'available\n'
+                  '       at the time when the "__del__()" method is called.\n'
                   '\n'
                   'object.__repr__(self)\n'
                   '\n'
@@ -3460,11 +3460,11 @@ topics = {'assert': 'The "assert" statement\n'
                   '"str.format()"\n'
                   '   method, to produce a “formatted” string representation '
                   'of an\n'
-                  '   object. The *format_spec* argument is a string that ' 
+                  '   object. The *format_spec* argument is a string that '
                   'contains a\n'
                   '   description of the formatting options desired. The '
                   'interpretation\n'
-                  '   of the *format_spec* argument is up to the type ' 
+                  '   of the *format_spec* argument is up to the type '
                   'implementing\n'
                   '   "__format__()", however most classes will either '
                   'delegate\n'
@@ -3484,7 +3484,7 @@ topics = {'assert': 'The "assert" statement\n'
                   '\n'
                   '   Changed in version 3.7: "object.__format__(x, \'\')" is '
                   'now\n'
-                  '   equivalent to "str(x)" rather than "format(str(x), ' 
+                  '   equivalent to "str(x)" rather than "format(str(x), '
                   '\'\')".\n'
                   '\n'
                   'object.__lt__(self, other)\n'
@@ -3518,21 +3518,21 @@ topics = {'assert': 'The "assert" statement\n'
                   '   on the value to determine if the result is true or '
                   'false.\n'
                   '\n'
-                  '   By default, "object" implements "__eq__()" by using ' 
-                  '"is", returning\n' 
-                  '   "NotImplemented" in the case of a false comparison: ' 
-                  '"True if x is y\n' 
-                  '   else NotImplemented". For "__ne__()", by default it ' 
-                  'delegates to\n' 
-                  '   "__eq__()" and inverts the result unless it is ' 
-                  '"NotImplemented".\n' 
-                  '   There are no other implied relationships among the ' 
-                  'comparison\n' 
-                  '   operators or default implementations; for example, the ' 
-                  'truth of\n' 
-                  '   "(x<y or x==y)" does not imply "x<=y". To automatically ' 
-                  'generate\n' 
-                  '   ordering operations from a single root operation, see\n' 
+                  '   By default, "object" implements "__eq__()" by using '
+                  '"is", returning\n'
+                  '   "NotImplemented" in the case of a false comparison: '
+                  '"True if x is y\n'
+                  '   else NotImplemented". For "__ne__()", by default it '
+                  'delegates to\n'
+                  '   "__eq__()" and inverts the result unless it is '
+                  '"NotImplemented".\n'
+                  '   There are no other implied relationships among the '
+                  'comparison\n'
+                  '   operators or default implementations; for example, the '
+                  'truth of\n'
+                  '   "(x<y or x==y)" does not imply "x<=y". To automatically '
+                  'generate\n'
+                  '   ordering operations from a single root operation, see\n'
                   '   "functools.total_ordering()".\n'
                   '\n'
                   '   See the paragraph on "__hash__()" for some important '
@@ -3580,22 +3580,22 @@ topics = {'assert': 'The "assert" statement\n'
                   '      def __hash__(self):\n'
                   '          return hash((self.name, self.nick, self.color))\n'
                   '\n'
-                  '   Note:\n' 
-                  '\n'
-                  '     "hash()" truncates the value returned from an object’s ' 
-                  'custom\n' 
-                  '     "__hash__()" method to the size of a "Py_ssize_t".  ' 
-                  'This is\n' 
-                  '     typically 8 bytes on 64-bit builds and 4 bytes on ' 
-                  '32-bit builds.\n' 
-                  '     If an object’s   "__hash__()" must interoperate on ' 
-                  'builds of\n' 
-                  '     different bit sizes, be sure to check the width on all ' 
-                  'supported\n' 
-                  '     builds.  An easy way to do this is with "python -c ' 
-                  '"import sys;\n' 
-                  '     print(sys.hash_info.width)"".\n' 
-                  '\n' 
+                  '   Note:\n'
+                  '\n'
+                  '     "hash()" truncates the value returned from an object’s '
+                  'custom\n'
+                  '     "__hash__()" method to the size of a "Py_ssize_t".  '
+                  'This is\n'
+                  '     typically 8 bytes on 64-bit builds and 4 bytes on '
+                  '32-bit builds.\n'
+                  '     If an object’s   "__hash__()" must interoperate on '
+                  'builds of\n'
+                  '     different bit sizes, be sure to check the width on all '
+                  'supported\n'
+                  '     builds.  An easy way to do this is with "python -c '
+                  '"import sys;\n'
+                  '     print(sys.hash_info.width)"".\n'
+                  '\n'
                   '   If a class does not define an "__eq__()" method it '
                   'should not\n'
                   '   define a "__hash__()" operation either; if it defines '
@@ -3652,24 +3652,24 @@ topics = {'assert': 'The "assert" statement\n'
                   '   hashable by an "isinstance(obj, '
                   'collections.abc.Hashable)" call.\n'
                   '\n'
-                  '   Note:\n' 
-                  '\n' 
-                  '     By default, the "__hash__()" values of str and bytes ' 
-                  'objects are\n' 
-                  '     “salted” with an unpredictable random value.  Although ' 
-                  'they\n' 
-                  '     remain constant within an individual Python process, ' 
-                  'they are not\n' 
-                  '     predictable between repeated invocations of ' 
-                  'Python.This is\n' 
-                  '     intended to provide protection against a ' 
-                  'denial-of-service caused\n' 
-                  '     by carefully-chosen inputs that exploit the worst ' 
-                  'case\n' 
-                  '     performance of a dict insertion, O(n^2) complexity.  ' 
-                  'See\n' 
-                  '     http://www.ocert.org/advisories/ocert-2011-003.html ' 
-                  'for\n' 
+                  '   Note:\n'
+                  '\n'
+                  '     By default, the "__hash__()" values of str and bytes '
+                  'objects are\n'
+                  '     “salted” with an unpredictable random value.  Although '
+                  'they\n'
+                  '     remain constant within an individual Python process, '
+                  'they are not\n'
+                  '     predictable between repeated invocations of '
+                  'Python.This is\n'
+                  '     intended to provide protection against a '
+                  'denial-of-service caused\n'
+                  '     by carefully-chosen inputs that exploit the worst '
+                  'case\n'
+                  '     performance of a dict insertion, O(n^2) complexity.  '
+                  'See\n'
+                  '     http://www.ocert.org/advisories/ocert-2011-003.html '
+                  'for\n'
                   '     details.Changing hash values affects the iteration '
                   'order of sets.\n'
                   '     Python has never made guarantees about this ordering '
@@ -3770,16 +3770,16 @@ topics = {'assert': 'The "assert" statement\n'
              'debugger will pause execution just before the first line of the\n'
              'module.\n'
              '\n'
-             'The typical usage to break into the debugger is to insert:\n' 
+             'The typical usage to break into the debugger is to insert:\n'
              '\n'
              '   import pdb; pdb.set_trace()\n'
              '\n'
-             'at the location you want to break into the debugger, and then ' 
-             'run the\n' 
-             'program. You can then step through the code following this ' 
-             'statement,\n' 
-             'and continue running without the debugger using the "continue"\n' 
-             'command.\n' 
+             'at the location you want to break into the debugger, and then '
+             'run the\n'
+             'program. You can then step through the code following this '
+             'statement,\n'
+             'and continue running without the debugger using the "continue"\n'
+             'command.\n'
              '\n'
              'New in version 3.7: The built-in "breakpoint()", when called '
              'with\n'
@@ -3911,8 +3911,8 @@ topics = {'assert': 'The "assert" statement\n'
              '\n'
              "      import pdb; pdb.Pdb(skip=['django.*']).set_trace()\n"
              '\n'
-             '   Raises an auditing event "pdb.Pdb" with no arguments.\n' 
-             '\n' 
+             '   Raises an auditing event "pdb.Pdb" with no arguments.\n'
+             '\n'
              '   New in version 3.1: The *skip* argument.\n'
              '\n'
              '   New in version 3.2: The *nosigint* argument.  Previously, a '
@@ -4058,7 +4058,7 @@ topics = {'assert': 'The "assert" statement\n'
              'is\n'
              '   first hit. The arguments are the same as for "break".\n'
              '\n'
-             'cl(ear) [filename:lineno | bpnumber ...]\n' 
+             'cl(ear) [filename:lineno | bpnumber ...]\n'
              '\n'
              '   With a *filename:lineno* argument, clear all the breakpoints '
              'at\n'
@@ -4068,7 +4068,7 @@ topics = {'assert': 'The "assert" statement\n'
              'first\n'
              '   ask confirmation).\n'
              '\n'
-             'disable [bpnumber ...]\n' 
+             'disable [bpnumber ...]\n'
              '\n'
              '   Disable the breakpoints given as a space separated list of\n'
              '   breakpoint numbers.  Disabling a breakpoint means it cannot '
@@ -4077,7 +4077,7 @@ topics = {'assert': 'The "assert" statement\n'
              'breakpoint, it\n'
              '   remains in the list of breakpoints and can be (re-)enabled.\n'
              '\n'
-             'enable [bpnumber ...]\n' 
+             'enable [bpnumber ...]\n'
              '\n'
              '   Enable the breakpoints specified.\n'
              '\n'
@@ -4248,12 +4248,12 @@ topics = {'assert': 'The "assert" statement\n'
              'its\n'
              '   value.\n'
              '\n'
-             '   Note:\n' 
+             '   Note:\n'
+             '\n'
+             '     "print()" can also be used, but is not a debugger command — '
+             'this\n'
+             '     executes the Python "print()" function.\n'
              '\n'
-             '     "print()" can also be used, but is not a debugger command — ' 
-             'this\n' 
-             '     executes the Python "print()" function.\n' 
-             '\n' 
              'pp expression\n'
              '\n'
              '   Like the "p" command, except the value of the expression is '
@@ -4369,23 +4369,23 @@ topics = {'assert': 'The "assert" statement\n'
              '   Quit from the debugger.  The program being executed is '
              'aborted.\n'
              '\n'
-             'debug code\n' 
-             '\n' 
-             '   Enter a recursive debugger that steps through the code ' 
-             'argument\n' 
-             '   (which is an arbitrary expression or statement to be executed ' 
-             'in\n' 
-             '   the current environment).\n' 
-             '\n' 
-             'retval\n' 
-             '\n' 
-             '   Print the return value for the last return of a function.\n' 
-             '\n' 
+             'debug code\n'
+             '\n'
+             '   Enter a recursive debugger that steps through the code '
+             'argument\n'
+             '   (which is an arbitrary expression or statement to be executed '
+             'in\n'
+             '   the current environment).\n'
+             '\n'
+             'retval\n'
+             '\n'
+             '   Print the return value for the last return of a function.\n'
+             '\n'
              '-[ Footnotes ]-\n'
              '\n'
              '[1] Whether a frame is considered to originate in a certain '
-             'module is\n' 
-             '    determined by the "__name__" in the frame globals.\n', 
+             'module is\n'
+             '    determined by the "__name__" in the frame globals.\n',
  'del': 'The "del" statement\n'
         '*******************\n'
         '\n'
@@ -4458,14 +4458,14 @@ topics = {'assert': 'The "assert" statement\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' 
-         '\n' 
-         'Changed in version 3.8: Prior to Python 3.8, in dict ' 
-         'comprehensions,\n' 
-         'the evaluation order of key and value was not well-defined.  In\n' 
-         'CPython, the value was evaluated before the key.  Starting with ' 
-         '3.8,\n' 
-         'the key is evaluated before the value, as proposed by **PEP 572**.\n', 
+         'rightmost in the display) stored for a given key value prevails.\n'
+         '\n'
+         'Changed in version 3.8: Prior to Python 3.8, in dict '
+         'comprehensions,\n'
+         'the evaluation order of key and value was not well-defined.  In\n'
+         'CPython, the value was evaluated before the key.  Starting with '
+         '3.8,\n'
+         'the key is evaluated before the value, as proposed by **PEP 572**.\n',
  'dynamic-features': 'Interaction with dynamic features\n'
                      '*********************************\n'
                      '\n'
@@ -4497,8 +4497,8 @@ topics = {'assert': 'The "assert" statement\n'
          '\n'
          'The "if" statement is used for conditional execution:\n'
          '\n'
-         '   if_stmt ::= "if" assignment_expression ":" suite\n' 
-         '               ("elif" assignment_expression ":" suite)*\n' 
+         '   if_stmt ::= "if" assignment_expression ":" suite\n'
+         '               ("elif" assignment_expression ":" suite)*\n'
          '               ["else" ":" suite]\n'
          '\n'
          'It selects exactly one of the suites by evaluating the expressions '
@@ -4551,7 +4551,7 @@ topics = {'assert': 'The "assert" statement\n'
                'terminates\n'
                'execution of the program, or returns to its interactive main '
                'loop.  In\n'
-               'either case, it prints a stack traceback, except when the ' 
+               'either case, it prints a stack traceback, except when the '
                'exception is\n'
                '"SystemExit".\n'
                '\n'
@@ -4565,16 +4565,16 @@ topics = {'assert': 'The "assert" statement\n'
                'about the\n'
                'exceptional condition.\n'
                '\n'
-               'Note:\n' 
+               'Note:\n'
+               '\n'
+               '  Exception messages are not part of the Python API.  Their '
+               'contents\n'
+               '  may change from one version of Python to the next without '
+               'warning\n'
+               '  and should not be relied on by code which will run under '
+               'multiple\n'
+               '  versions of the interpreter.\n'
                '\n'
-               '  Exception messages are not part of the Python API.  Their ' 
-               'contents\n' 
-               '  may change from one version of Python to the next without ' 
-               'warning\n' 
-               '  and should not be relied on by code which will run under ' 
-               'multiple\n' 
-               '  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 '
@@ -4583,9 +4583,9 @@ topics = {'assert': 'The "assert" statement\n'
                '-[ Footnotes ]-\n'
                '\n'
                '[1] This limitation occurs because the code that is executed '
-               'by these\n' 
-               '    operations is not available at the time the module is ' 
-               'compiled.\n', 
+               'by these\n'
+               '    operations is not available at the time the module is '
+               'compiled.\n',
  'execmodel': 'Execution model\n'
               '***************\n'
               '\n'
@@ -4607,13 +4607,13 @@ topics = {'assert': 'The "assert" statement\n'
               '(a\n'
               'command specified on the interpreter command line with the '
               '"-c"\n'
-              'option) is a code block. A module run as a top level script (as ' 
-              'module\n' 
-              '"__main__") from the command line using a "-m" argument is also ' 
-              'a code\n' 
-              'block. The string argument passed to the built-in functions ' 
-              '"eval()"\n' 
-              'and "exec()" is a code block.\n' 
+              'option) is a code block. A module run as a top level script (as '
+              'module\n'
+              '"__main__") from the command line using a "-m" argument is also '
+              'a code\n'
+              'block. The string argument passed to the built-in functions '
+              '"eval()"\n'
+              'and "exec()" is a code block.\n'
               '\n'
               'A code block is executed in an *execution frame*.  A frame '
               'contains\n'
@@ -4721,9 +4721,9 @@ topics = {'assert': 'The "assert" statement\n'
               'operations.\n'
               '\n'
               'If the "global" statement occurs within a block, all uses of '
-              'the names\n' 
-              'specified in the statement refer to the bindings of those names ' 
-              'in the\n' 
+              'the names\n'
+              'specified in the statement refer to the bindings of those names '
+              'in the\n'
               'top-level namespace.  Names are resolved in the top-level '
               'namespace by\n'
               'searching the global namespace, i.e. the namespace of the '
@@ -4732,10 +4732,10 @@ topics = {'assert': 'The "assert" statement\n'
               'namespace\n'
               'of the module "builtins".  The global namespace is searched '
               'first.  If\n'
-              'the names are not found there, the builtins namespace is ' 
-              'searched.\n' 
-              'The "global" statement must precede all uses of the listed ' 
-              'names.\n' 
+              'the names are not found there, the builtins namespace is '
+              'searched.\n'
+              'The "global" statement must precede all uses of the listed '
+              'names.\n'
               '\n'
               'The "global" statement has the same scope as a name binding '
               'operation\n'
@@ -4878,7 +4878,7 @@ topics = {'assert': 'The "assert" statement\n'
               'terminates\n'
               'execution of the program, or returns to its interactive main '
               'loop.  In\n'
-              'either case, it prints a stack traceback, except when the ' 
+              'either case, it prints a stack traceback, except when the '
               'exception is\n'
               '"SystemExit".\n'
               '\n'
@@ -4892,16 +4892,16 @@ topics = {'assert': 'The "assert" statement\n'
               'about the\n'
               'exceptional condition.\n'
               '\n'
-              'Note:\n' 
+              'Note:\n'
+              '\n'
+              '  Exception messages are not part of the Python API.  Their '
+              'contents\n'
+              '  may change from one version of Python to the next without '
+              'warning\n'
+              '  and should not be relied on by code which will run under '
+              'multiple\n'
+              '  versions of the interpreter.\n'
               '\n'
-              '  Exception messages are not part of the Python API.  Their ' 
-              'contents\n' 
-              '  may change from one version of Python to the next without ' 
-              'warning\n' 
-              '  and should not be relied on by code which will run under ' 
-              'multiple\n' 
-              '  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 '
@@ -4909,10 +4909,10 @@ topics = {'assert': 'The "assert" statement\n'
               '\n'
               '-[ Footnotes ]-\n'
               '\n'
-              '[1] This limitation occurs because the code that is executed by ' 
-              'these\n' 
-              '    operations is not available at the time the module is ' 
-              'compiled.\n', 
+              '[1] This limitation occurs because the code that is executed by '
+              'these\n'
+              '    operations is not available at the time the module is '
+              'compiled.\n',
  'exprlists': 'Expression lists\n'
               '****************\n'
               '\n'
@@ -4921,7 +4921,7 @@ topics = {'assert': 'The "assert" statement\n'
               '[","]\n'
               '   starred_expression ::= expression | (starred_item ",")* '
               '[starred_item]\n'
-              '   starred_item       ::= assignment_expression | "*" or_expr\n' 
+              '   starred_item       ::= assignment_expression | "*" or_expr\n'
               '\n'
               'Except when part of a list or set display, an expression list\n'
               'containing at least one comma yields a tuple.  The length of '
@@ -5012,7 +5012,7 @@ topics = {'assert': 'The "assert" statement\n'
         'with the next item, or with the "else" clause if there is no next\n'
         'item.\n'
         '\n'
-        'The for-loop makes assignments to the variables in the target list.\n' 
+        'The for-loop makes assignments to the variables in the target list.\n'
         'This overwrites all previous assignments to those variables '
         'including\n'
         'those made in the suite of the for-loop:\n'
@@ -5031,11 +5031,11 @@ topics = {'assert': 'The "assert" statement\n'
         'i\n'
         ':= a to b do"; e.g., "list(range(3))" returns the list "[0, 1, 2]".\n'
         '\n'
-        'Note:\n' 
-        '\n' 
-        '  There is a subtlety when the sequence is being modified by the ' 
-        'loop\n' 
-        '  (this can only occur for mutable sequences, e.g. lists).  An\n' 
+        'Note:\n'
+        '\n'
+        '  There is a subtlety when the sequence is being modified by the '
+        'loop\n'
+        '  (this can only occur for mutable sequences, e.g. lists).  An\n'
         '  internal counter is used to keep track of which item is used next,\n'
         '  and this is incremented on each iteration.  When this counter has\n'
         '  reached the length of the sequence the loop terminates.  This '
@@ -5062,11 +5062,11 @@ topics = {'assert': 'The "assert" statement\n'
                   '"Formatter",\n'
                   'subclasses can define their own format string syntax).  The '
                   'syntax is\n'
-                  'related to that of formatted string literals, but it is ' 
-                  'less\n' 
-                  'sophisticated and, in particular, does not support ' 
-                  'arbitrary\n' 
-                  'expressions.\n' 
+                  'related to that of formatted string literals, but it is '
+                  'less\n'
+                  'sophisticated and, in particular, does not support '
+                  'arbitrary\n'
+                  'expressions.\n'
                   '\n'
                   'Format strings contain “replacement fields” surrounded by '
                   'curly braces\n'
@@ -5236,11 +5236,11 @@ topics = {'assert': 'The "assert" statement\n'
                   'only\n'
                   'supported by the numeric types.\n'
                   '\n'
-                  'A general convention is that an empty format specification ' 
+                  'A general convention is that an empty format specification '
                   'produces\n'
                   'the same result as if you had called "str()" on the value. '
                   'A non-empty\n'
-                  'format specification typically modifies the result.\n' 
+                  'format specification typically modifies the result.\n'
                   '\n'
                   'The general form of a *standard format specifier* is:\n'
                   '\n'
@@ -5260,7 +5260,7 @@ topics = {'assert': 'The "assert" statement\n'
                   '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' 
+                  '(”"{"” or\n'
                   '“"}"”) as the *fill* character in a formatted string '
                   'literal or when\n'
                   'using the "str.format()" method.  However, it is possible '
@@ -5278,7 +5278,7 @@ topics = {'assert': 'The "assert" statement\n'
                   'Meaning                                                    '
                   '|\n'
                   '   '
-                  '|===========|============================================================|\n' 
+                  '|===========|============================================================|\n'
                   '   | "\'<\'"     | Forces the field to be left-aligned '
                   'within the available   |\n'
                   '   |           | space (this is the default for most '
@@ -5327,7 +5327,7 @@ topics = {'assert': 'The "assert" statement\n'
                   'Meaning                                                    '
                   '|\n'
                   '   '
-                  '|===========|============================================================|\n' 
+                  '|===========|============================================================|\n'
                   '   | "\'+\'"     | indicates that a sign should be used for '
                   'both positive as  |\n'
                   '   |           | well as negative '
@@ -5351,23 +5351,23 @@ topics = {'assert': 'The "assert" statement\n'
                   'for the\n'
                   'conversion.  The alternate form is defined differently for '
                   'different\n'
-                  'types.  This option is only valid for integer, float and ' 
-                  'complex\n' 
-                  'types. For integers, when binary, octal, or hexadecimal ' 
-                  'output is\n' 
-                  'used, this option adds the respective prefix "\'0b\'", ' 
-                  '"\'0o\'", "\'0x\'",\n' 
-                  'or "\'0X\'" to the output value. For float and complex the ' 
-                  'alternate\n' 
-                  'form causes the result of the conversion to always contain ' 
-                  'a decimal-\n' 
-                  'point character, even if no digits follow it. Normally, a ' 
-                  'decimal-\n' 
-                  'point character appears in the result of these conversions ' 
-                  'only if a\n' 
-                  'digit follows it. In addition, for "\'g\'" and "\'G\'" ' 
-                  'conversions,\n' 
-                  'trailing zeros are not removed from the result.\n' 
+                  'types.  This option is only valid for integer, float and '
+                  'complex\n'
+                  'types. For integers, when binary, octal, or hexadecimal '
+                  'output is\n'
+                  'used, this option adds the respective prefix "\'0b\'", '
+                  '"\'0o\'", "\'0x\'",\n'
+                  'or "\'0X\'" to the output value. For float and complex the '
+                  'alternate\n'
+                  'form causes the result of the conversion to always contain '
+                  'a decimal-\n'
+                  'point character, even if no digits follow it. Normally, a '
+                  'decimal-\n'
+                  'point character appears in the result of these conversions '
+                  'only if a\n'
+                  'digit follows it. In addition, for "\'g\'" and "\'G\'" '
+                  'conversions,\n'
+                  'trailing zeros are not removed from the result.\n'
                   '\n'
                   'The "\',\'" option signals the use of a comma for a '
                   'thousands separator.\n'
@@ -5392,12 +5392,12 @@ topics = {'assert': 'The "assert" statement\n'
                   'Changed in version 3.6: Added the "\'_\'" option (see also '
                   '**PEP 515**).\n'
                   '\n'
-                  '*width* is a decimal integer defining the minimum total ' 
-                  'field width,\n' 
-                  'including any prefixes, separators, and other formatting ' 
-                  'characters.\n' 
-                  'If not specified, then the field width will be determined ' 
-                  'by the\n' 
+                  '*width* is a decimal integer defining the minimum total '
+                  'field width,\n'
+                  'including any prefixes, separators, and other formatting '
+                  'characters.\n'
+                  'If not specified, then the field width will be determined '
+                  'by the\n'
                   'content.\n'
                   '\n'
                   'When no explicit alignment is given, preceding the *width* '
@@ -5433,7 +5433,7 @@ topics = {'assert': 'The "assert" statement\n'
                   'Meaning                                                    '
                   '|\n'
                   '   '
-                  '|===========|============================================================|\n' 
+                  '|===========|============================================================|\n'
                   '   | "\'s\'"     | String format. This is the default type '
                   'for strings and    |\n'
                   '   |           | may be '
@@ -5453,7 +5453,7 @@ topics = {'assert': 'The "assert" statement\n'
                   'Meaning                                                    '
                   '|\n'
                   '   '
-                  '|===========|============================================================|\n' 
+                  '|===========|============================================================|\n'
                   '   | "\'b\'"     | Binary format. Outputs the number in '
                   'base 2.               |\n'
                   '   '
@@ -5480,12 +5480,12 @@ topics = {'assert': 'The "assert" statement\n'
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'X\'"     | Hex format. Outputs the number in base '
                   '16, using upper-    |\n'
-                  '   |           | case letters for the digits above 9. In ' 
-                  'case "\'#\'" is      |\n' 
-                  '   |           | specified, the prefix "\'0x\'" will be ' 
-                  'upper-cased to "\'0X\'" |\n' 
-                  '   |           | as ' 
-                  'well.                                                   |\n' 
+                  '   |           | case letters for the digits above 9. In '
+                  'case "\'#\'" is      |\n'
+                  '   |           | specified, the prefix "\'0x\'" will be '
+                  'upper-cased to "\'0X\'" |\n'
+                  '   |           | as '
+                  'well.                                                   |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'n\'"     | Number. This is the same as "\'d\'", '
@@ -5509,8 +5509,8 @@ topics = {'assert': 'The "assert" statement\n'
                   'the integer\n'
                   'to a floating point number before formatting.\n'
                   '\n'
-                  'The available presentation types for "float" and "Decimal" ' 
-                  'values are:\n' 
+                  'The available presentation types for "float" and "Decimal" '
+                  'values are:\n'
                   '\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
@@ -5518,51 +5518,51 @@ topics = {'assert': 'The "assert" statement\n'
                   'Meaning                                                    '
                   '|\n'
                   '   '
-                  '|===========|============================================================|\n' 
-                  '   | "\'e\'"     | Scientific notation. For a given ' 
-                  'precision "p", formats    |\n' 
-                  '   |           | the number in scientific notation with the ' 
-                  'letter ‘e’      |\n' 
-                  '   |           | separating the coefficient from the ' 
-                  'exponent. The          |\n' 
-                  '   |           | coefficient has one digit before and "p" ' 
-                  'digits after the  |\n' 
-                  '   |           | decimal point, for a total of "p + 1" ' 
-                  'significant digits.  |\n' 
-                  '   |           | With no precision given, uses a precision ' 
-                  'of "6" digits    |\n' 
-                  '   |           | after the decimal point for "float", and ' 
-                  'shows all         |\n' 
-                  '   |           | coefficient digits for "Decimal". If no ' 
-                  'digits follow the  |\n' 
-                  '   |           | decimal point, the decimal point is also ' 
-                  'removed unless    |\n' 
-                  '   |           | the "#" option is ' 
-                  'used.                                    |\n' 
+                  '|===========|============================================================|\n'
+                  '   | "\'e\'"     | Scientific notation. For a given '
+                  'precision "p", formats    |\n'
+                  '   |           | the number in scientific notation with the '
+                  'letter ‘e’      |\n'
+                  '   |           | separating the coefficient from the '
+                  'exponent. The          |\n'
+                  '   |           | coefficient has one digit before and "p" '
+                  'digits after the  |\n'
+                  '   |           | decimal point, for a total of "p + 1" '
+                  'significant digits.  |\n'
+                  '   |           | With no precision given, uses a precision '
+                  'of "6" digits    |\n'
+                  '   |           | after the decimal point for "float", and '
+                  'shows all         |\n'
+                  '   |           | coefficient digits for "Decimal". If no '
+                  'digits follow the  |\n'
+                  '   |           | decimal point, the decimal point is also '
+                  'removed unless    |\n'
+                  '   |           | the "#" option is '
+                  'used.                                    |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
-                  '   | "\'E\'"     | Scientific notation. Same as "\'e\'" ' 
-                  'except it uses an upper |\n' 
+                  '   | "\'E\'"     | Scientific notation. Same as "\'e\'" '
+                  'except it uses an upper |\n'
                   '   |           | case ‘E’ as the separator '
                   'character.                       |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
-                  '   | "\'f\'"     | Fixed-point notation. For a given ' 
-                  'precision "p", formats   |\n' 
-                  '   |           | the number as a decimal number with ' 
-                  'exactly "p" digits     |\n' 
-                  '   |           | following the decimal point. With no ' 
-                  'precision given, uses |\n' 
-                  '   |           | a precision of "6" digits after the ' 
-                  'decimal point for      |\n' 
-                  '   |           | "float", and uses a precision large enough ' 
-                  'to show all     |\n' 
-                  '   |           | coefficient digits for "Decimal". If no ' 
-                  'digits follow the  |\n' 
-                  '   |           | decimal point, the decimal point is also ' 
-                  'removed unless    |\n' 
-                  '   |           | the "#" option is ' 
-                  'used.                                    |\n' 
+                  '   | "\'f\'"     | Fixed-point notation. For a given '
+                  'precision "p", formats   |\n'
+                  '   |           | the number as a decimal number with '
+                  'exactly "p" digits     |\n'
+                  '   |           | following the decimal point. With no '
+                  'precision given, uses |\n'
+                  '   |           | a precision of "6" digits after the '
+                  'decimal point for      |\n'
+                  '   |           | "float", and uses a precision large enough '
+                  'to show all     |\n'
+                  '   |           | coefficient digits for "Decimal". If no '
+                  'digits follow the  |\n'
+                  '   |           | decimal point, the decimal point is also '
+                  'removed unless    |\n'
+                  '   |           | the "#" option is '
+                  'used.                                    |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'F\'"     | Fixed-point notation. Same as "\'f\'", '
@@ -5578,51 +5578,51 @@ topics = {'assert': 'The "assert" statement\n'
                   '   |           | formats the result in either fixed-point '
                   'format or in      |\n'
                   '   |           | scientific notation, depending on its '
-                  'magnitude. A         |\n' 
-                  '   |           | precision of "0" is treated as equivalent ' 
-                  'to a precision   |\n' 
-                  '   |           | of "1".  The precise rules are as follows: ' 
-                  'suppose that    |\n' 
-                  '   |           | the result formatted with presentation ' 
-                  'type "\'e\'" and      |\n' 
-                  '   |           | precision "p-1" would have exponent ' 
-                  '"exp".  Then, if "m <= |\n' 
-                  '   |           | exp < p", where "m" is -4 for floats and ' 
-                  '-6 for            |\n' 
-                  '   |           | "Decimals", the number is formatted with ' 
-                  'presentation type |\n' 
-                  '   |           | "\'f\'" and precision "p-1-exp".  ' 
-                  'Otherwise, the number is   |\n' 
+                  'magnitude. A         |\n'
+                  '   |           | precision of "0" is treated as equivalent '
+                  'to a precision   |\n'
+                  '   |           | of "1".  The precise rules are as follows: '
+                  'suppose that    |\n'
+                  '   |           | the result formatted with presentation '
+                  'type "\'e\'" and      |\n'
+                  '   |           | precision "p-1" would have exponent '
+                  '"exp".  Then, if "m <= |\n'
+                  '   |           | exp < p", where "m" is -4 for floats and '
+                  '-6 for            |\n'
+                  '   |           | "Decimals", the number is formatted with '
+                  'presentation type |\n'
+                  '   |           | "\'f\'" and precision "p-1-exp".  '
+                  'Otherwise, the number is   |\n'
                   '   |           | formatted with presentation type "\'e\'" '
-                  'and precision       |\n' 
-                  '   |           | "p-1". In both cases insignificant ' 
-                  'trailing zeros are      |\n' 
-                  '   |           | removed from the significand, and the ' 
-                  'decimal point is     |\n' 
-                  '   |           | also removed if there are no remaining ' 
-                  'digits following    |\n' 
-                  '   |           | it, unless the "\'#\'" option is used.  ' 
-                  'With no precision    |\n' 
-                  '   |           | given, uses a precision of "6" significant ' 
-                  'digits for      |\n' 
-                  '   |           | "float". For "Decimal", the coefficient of ' 
-                  'the result is   |\n' 
-                  '   |           | formed from the coefficient digits of the ' 
-                  'value;           |\n' 
-                  '   |           | scientific notation is used for values ' 
-                  'smaller than "1e-6" |\n' 
-                  '   |           | in absolute value and values where the ' 
-                  'place value of the  |\n' 
-                  '   |           | least significant digit is larger than 1, ' 
-                  'and fixed-point  |\n' 
-                  '   |           | notation is used otherwise.  Positive and ' 
-                  'negative         |\n' 
-                  '   |           | infinity, positive and negative zero, and ' 
-                  'nans, are        |\n' 
-                  '   |           | formatted as "inf", "-inf", "0", "-0" and ' 
-                  '"nan"            |\n' 
-                  '   |           | respectively, regardless of the ' 
-                  'precision.                 |\n' 
+                  'and precision       |\n'
+                  '   |           | "p-1". In both cases insignificant '
+                  'trailing zeros are      |\n'
+                  '   |           | removed from the significand, and the '
+                  'decimal point is     |\n'
+                  '   |           | also removed if there are no remaining '
+                  'digits following    |\n'
+                  '   |           | it, unless the "\'#\'" option is used.  '
+                  'With no precision    |\n'
+                  '   |           | given, uses a precision of "6" significant '
+                  'digits for      |\n'
+                  '   |           | "float". For "Decimal", the coefficient of '
+                  'the result is   |\n'
+                  '   |           | formed from the coefficient digits of the '
+                  'value;           |\n'
+                  '   |           | scientific notation is used for values '
+                  'smaller than "1e-6" |\n'
+                  '   |           | in absolute value and values where the '
+                  'place value of the  |\n'
+                  '   |           | least significant digit is larger than 1, '
+                  'and fixed-point  |\n'
+                  '   |           | notation is used otherwise.  Positive and '
+                  'negative         |\n'
+                  '   |           | infinity, positive and negative zero, and '
+                  'nans, are        |\n'
+                  '   |           | formatted as "inf", "-inf", "0", "-0" and '
+                  '"nan"            |\n'
+                  '   |           | respectively, regardless of the '
+                  'precision.                 |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '   | "\'G\'"     | General format. Same as "\'g\'" except '
@@ -5647,24 +5647,24 @@ topics = {'assert': 'The "assert" statement\n'
                   'percent sign.          |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
-                  '   | None      | For "float" this is the same as "\'g\'", ' 
-                  'except that when    |\n' 
-                  '   |           | fixed-point notation is used to format the ' 
-                  'result, it      |\n' 
-                  '   |           | always includes at least one digit past ' 
-                  'the decimal point. |\n' 
-                  '   |           | The precision used is as large as needed ' 
-                  'to represent the  |\n' 
-                  '   |           | given value faithfully.  For "Decimal", ' 
-                  'this is the same   |\n' 
-                  '   |           | as either "\'g\'" or "\'G\'" depending on ' 
-                  'the value of         |\n' 
-                  '   |           | "context.capitals" for the current decimal ' 
-                  'context.  The   |\n' 
-                  '   |           | overall effect is to match the output of ' 
-                  '"str()" as        |\n' 
-                  '   |           | altered by the other format ' 
-                  'modifiers.                     |\n' 
+                  '   | None      | For "float" this is the same as "\'g\'", '
+                  'except that when    |\n'
+                  '   |           | fixed-point notation is used to format the '
+                  'result, it      |\n'
+                  '   |           | always includes at least one digit past '
+                  'the decimal point. |\n'
+                  '   |           | The precision used is as large as needed '
+                  'to represent the  |\n'
+                  '   |           | given value faithfully.  For "Decimal", '
+                  'this is the same   |\n'
+                  '   |           | as either "\'g\'" or "\'G\'" depending on '
+                  'the value of         |\n'
+                  '   |           | "context.capitals" for the current decimal '
+                  'context.  The   |\n'
+                  '   |           | overall effect is to match the output of '
+                  '"str()" as        |\n'
+                  '   |           | altered by the other format '
+                  'modifiers.                     |\n'
                   '   '
                   '+-----------+------------------------------------------------------------+\n'
                   '\n'
@@ -5836,24 +5836,24 @@ topics = {'assert': 'The "assert" statement\n'
              '(see\n'
              'section The standard type hierarchy):\n'
              '\n'
-             '   funcdef                   ::= [decorators] "def" funcname "(" ' 
+             '   funcdef                   ::= [decorators] "def" funcname "(" '
              '[parameter_list] ")"\n'
              '               ["->" expression] ":" suite\n'
-             '   decorators                ::= decorator+\n' 
-             '   decorator                 ::= "@" assignment_expression ' 
-             'NEWLINE\n' 
-             '   parameter_list            ::= defparameter ("," ' 
-             'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n' 
-             '                        | parameter_list_no_posonly\n' 
-             '   parameter_list_no_posonly ::= defparameter ("," ' 
-             'defparameter)* ["," [parameter_list_starargs]]\n' 
-             '                                 | parameter_list_starargs\n' 
-             '   parameter_list_starargs   ::= "*" [parameter] ("," ' 
+             '   decorators                ::= decorator+\n'
+             '   decorator                 ::= "@" assignment_expression '
+             'NEWLINE\n'
+             '   parameter_list            ::= defparameter ("," '
+             'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n'
+             '                        | parameter_list_no_posonly\n'
+             '   parameter_list_no_posonly ::= defparameter ("," '
+             'defparameter)* ["," [parameter_list_starargs]]\n'
+             '                                 | parameter_list_starargs\n'
+             '   parameter_list_starargs   ::= "*" [parameter] ("," '
              'defparameter)* ["," ["**" parameter [","]]]\n'
              '                               | "**" parameter [","]\n'
-             '   parameter                 ::= identifier [":" expression]\n' 
-             '   defparameter              ::= parameter ["=" expression]\n' 
-             '   funcname                  ::= identifier\n' 
+             '   parameter                 ::= identifier [":" expression]\n'
+             '   defparameter              ::= parameter ["=" expression]\n'
+             '   funcname                  ::= identifier\n'
              '\n'
              'A function definition is an executable statement.  Its execution '
              'binds\n'
@@ -5894,11 +5894,11 @@ topics = {'assert': 'The "assert" statement\n'
              'the name\n'
              '"func".\n'
              '\n'
-             'Changed in version 3.9: Functions may be decorated with any ' 
-             'valid\n' 
-             '"assignment_expression". Previously, the grammar was much more\n' 
-             'restrictive; see **PEP 614** for details.\n' 
-             '\n' 
+             'Changed in version 3.9: Functions may be decorated with any '
+             'valid\n'
+             '"assignment_expression". Previously, the grammar was much more\n'
+             'restrictive; see **PEP 614** for details.\n'
+             '\n'
              'When one or more *parameters* have the form *parameter* "="\n'
              '*expression*, the function is said to have “default parameter '
              'values.”\n'
@@ -5941,7 +5941,7 @@ topics = {'assert': 'The "assert" statement\n'
              'Calls.\n'
              'A function call always assigns values to all parameters '
              'mentioned in\n'
-             'the parameter list, either from positional arguments, from ' 
+             'the parameter list, either from positional arguments, from '
              'keyword\n'
              'arguments, or from default values.  If the form “"*identifier"” '
              'is\n'
@@ -5953,15 +5953,15 @@ topics = {'assert': 'The "assert" statement\n'
              'new\n'
              'empty mapping of the same type.  Parameters after “"*"” or\n'
              '“"*identifier"” are keyword-only parameters and may only be '
-             'passed by\n' 
-             'keyword arguments.  Parameters before “"/"” are positional-only\n' 
-             'parameters and may only be passed by positional arguments.\n' 
-             '\n'
-             'Changed in version 3.8: The "/" function parameter syntax may be ' 
-             'used\n' 
-             'to indicate positional-only parameters. See **PEP 570** for ' 
-             'details.\n' 
-             '\n' 
+             'passed by\n'
+             'keyword arguments.  Parameters before “"/"” are positional-only\n'
+             'parameters and may only be passed by positional arguments.\n'
+             '\n'
+             'Changed in version 3.8: The "/" function parameter syntax may be '
+             'used\n'
+             'to indicate positional-only parameters. See **PEP 570** for '
+             'details.\n'
+             '\n'
              'Parameters may have an *annotation* of the form “": '
              'expression"”\n'
              'following the parameter name.  Any parameter may have an '
@@ -6095,26 +6095,26 @@ topics = {'assert': 'The "assert" statement\n'
                'defined.\n'
                '   See section The import statement.\n'
                '\n'
-               '   Note:\n' 
-               '\n' 
-               '     The name "_" is often used in conjunction with\n' 
+               '   Note:\n'
+               '\n'
+               '     The name "_" is often used in conjunction with\n'
                '     internationalization; refer to the documentation for the\n'
                '     "gettext" module for more information on this '
                'convention.\n'
                '\n'
                '"__*__"\n'
-               '   System-defined names, informally known as “dunder” names. ' 
-               'These\n' 
-               '   names are defined by the interpreter and its ' 
-               'implementation\n' 
-               '   (including the standard library). Current system names are\n' 
-               '   discussed in the Special method names section and ' 
-               'elsewhere. More\n' 
-               '   will likely be defined in future versions of Python.  *Any* ' 
-               'use of\n' 
-               '   "__*__" names, in any context, that does not follow ' 
-               'explicitly\n' 
-               '   documented use, is subject to breakage without warning.\n' 
+               '   System-defined names, informally known as “dunder” names. '
+               'These\n'
+               '   names are defined by the interpreter and its '
+               'implementation\n'
+               '   (including the standard library). Current system names are\n'
+               '   discussed in the Special method names section and '
+               'elsewhere. More\n'
+               '   will likely be defined in future versions of Python.  *Any* '
+               'use of\n'
+               '   "__*__" names, in any context, that does not follow '
+               'explicitly\n'
+               '   documented use, is subject to breakage without warning.\n'
                '\n'
                '"__*"\n'
                '   Class-private names.  Names in this category, when used '
@@ -6201,8 +6201,8 @@ topics = {'assert': 'The "assert" statement\n'
                 '\n'
                 'A non-normative HTML file listing all valid identifier '
                 'characters for\n'
-                'Unicode 4.1 can be found at\n' 
-                'https://www.unicode.org/Public/13.0.0/ucd/DerivedCoreProperties.txt\n' 
+                'Unicode 4.1 can be found at\n'
+                'https://www.unicode.org/Public/13.0.0/ucd/DerivedCoreProperties.txt\n'
                 '\n'
                 '\n'
                 'Keywords\n'
@@ -6243,28 +6243,28 @@ topics = {'assert': 'The "assert" statement\n'
                 'defined.\n'
                 '   See section The import statement.\n'
                 '\n'
-                '   Note:\n' 
-                '\n' 
-                '     The name "_" is often used in conjunction with\n' 
+                '   Note:\n'
+                '\n'
+                '     The name "_" is often used in conjunction with\n'
                 '     internationalization; refer to the documentation for '
                 'the\n'
                 '     "gettext" module for more information on this '
                 'convention.\n'
                 '\n'
                 '"__*__"\n'
-                '   System-defined names, informally known as “dunder” names. ' 
-                'These\n' 
-                '   names are defined by the interpreter and its ' 
-                'implementation\n' 
-                '   (including the standard library). Current system names ' 
-                'are\n' 
-                '   discussed in the Special method names section and ' 
-                'elsewhere. More\n' 
-                '   will likely be defined in future versions of Python.  ' 
-                '*Any* use of\n' 
-                '   "__*__" names, in any context, that does not follow ' 
-                'explicitly\n' 
-                '   documented use, is subject to breakage without warning.\n' 
+                '   System-defined names, informally known as “dunder” names. '
+                'These\n'
+                '   names are defined by the interpreter and its '
+                'implementation\n'
+                '   (including the standard library). Current system names '
+                'are\n'
+                '   discussed in the Special method names section and '
+                'elsewhere. More\n'
+                '   will likely be defined in future versions of Python.  '
+                '*Any* use of\n'
+                '   "__*__" names, in any context, that does not follow '
+                'explicitly\n'
+                '   documented use, is subject to breakage without warning.\n'
                 '\n'
                 '"__*"\n'
                 '   Class-private names.  Names in this category, when used '
@@ -6279,8 +6279,8 @@ topics = {'assert': 'The "assert" statement\n'
        '\n'
        'The "if" statement is used for conditional execution:\n'
        '\n'
-       '   if_stmt ::= "if" assignment_expression ":" suite\n' 
-       '               ("elif" assignment_expression ":" suite)*\n' 
+       '   if_stmt ::= "if" assignment_expression ":" suite\n'
+       '               ("elif" assignment_expression ":" suite)*\n'
        '               ["else" ":" suite]\n'
        '\n'
        'It selects exactly one of the suites by evaluating the expressions '
@@ -6321,7 +6321,7 @@ topics = {'assert': 'The "assert" statement\n'
            '                   | "from" relative_module "import" "(" '
            'identifier ["as" identifier]\n'
            '                   ("," identifier ["as" identifier])* [","] ")"\n'
-           '                   | "from" relative_module "import" "*"\n' 
+           '                   | "from" relative_module "import" "*"\n'
            '   module          ::= (identifier ".")* identifier\n'
            '   relative_module ::= "."* module | "."+\n'
            '\n'
@@ -6330,9 +6330,9 @@ topics = {'assert': 'The "assert" statement\n'
            '\n'
            '1. find a module, loading and initializing it if necessary\n'
            '\n'
-           '2. define a name or names in the local namespace for the scope ' 
-           'where\n' 
-           '   the "import" statement occurs.\n' 
+           '2. define a name or names in the local namespace for the scope '
+           'where\n'
+           '   the "import" statement occurs.\n'
            '\n'
            'When the statement contains multiple clauses (separated by commas) '
            'the\n'
@@ -6358,9 +6358,9 @@ topics = {'assert': 'The "assert" statement\n'
            'made\n'
            'available in the local namespace in one of three ways:\n'
            '\n'
-           '* If the module name is followed by "as", then the name following ' 
-           '"as"\n' 
-           '  is bound directly to the imported module.\n' 
+           '* If the module name is followed by "as", then the name following '
+           '"as"\n'
+           '  is bound directly to the imported module.\n'
            '\n'
            '* If no other name is specified, and the module being imported is '
            'a\n'
@@ -6460,18 +6460,18 @@ topics = {'assert': 'The "assert" statement\n'
            'end up importing "pkg.mod". If you execute "from ..subpkg2 import '
            'mod"\n'
            'from within "pkg.subpkg1" you will import "pkg.subpkg2.mod". The\n'
-           'specification for relative imports is contained in the Package\n' 
-           'Relative Imports section.\n' 
+           'specification for relative imports is contained in the Package\n'
+           'Relative Imports section.\n'
            '\n'
            '"importlib.import_module()" is provided to support applications '
            'that\n'
            'determine dynamically the modules to be loaded.\n'
            '\n'
-           'Raises an auditing event "import" with arguments "module", ' 
-           '"filename",\n' 
-           '"sys.path", "sys.meta_path", "sys.path_hooks".\n' 
+           'Raises an auditing event "import" with arguments "module", '
+           '"filename",\n'
+           '"sys.path", "sys.meta_path", "sys.path_hooks".\n'
+           '\n'
            '\n'
-           '\n' 
            'Future statements\n'
            '=================\n'
            '\n'
@@ -6509,8 +6509,8 @@ topics = {'assert': 'The "assert" statement\n'
            '\n'
            '* other future statements.\n'
            '\n'
-           'The only feature that requires using the future statement is\n' 
-           '"annotations" (see **PEP 563**).\n' 
+           'The only feature that requires using the future statement is\n'
+           '"annotations" (see **PEP 563**).\n'
            '\n'
            'All historical features enabled by the future statement are still\n'
            'recognized by Python 3.  The list includes "absolute_import",\n'
@@ -6602,19 +6602,19 @@ topics = {'assert': 'The "assert" statement\n'
        '"False" otherwise.\n'
        '\n'
        'For user-defined classes which do not define "__contains__()" but do\n'
-       'define "__iter__()", "x in y" is "True" if some value "z", for which\n' 
-       'the expression "x is z or x == z" is true, is produced while ' 
-       'iterating\n' 
-       'over "y". If an exception is raised during the iteration, it is as if\n' 
-       '"in" raised that exception.\n' 
+       'define "__iter__()", "x in y" is "True" if some value "z", for which\n'
+       'the expression "x is z or x == z" is true, is produced while '
+       'iterating\n'
+       'over "y". If an exception is raised during the iteration, it is as if\n'
+       '"in" raised that exception.\n'
        '\n'
        'Lastly, the old-style iteration protocol is tried: if a class defines\n'
        '"__getitem__()", "x in y" is "True" if and only if there is a non-\n'
-       'negative integer index *i* such that "x is y[i] or x == y[i]", and no\n' 
-       'lower integer index raises the "IndexError" exception.  (If any other\n' 
+       'negative integer index *i* such that "x is y[i] or x == y[i]", and no\n'
+       'lower integer index raises the "IndexError" exception.  (If any other\n'
        'exception is raised, it is as if "in" raised that exception).\n'
        '\n'
-       'The operator "not in" is defined to have the inverse truth value of\n' 
+       'The operator "not in" is defined to have the inverse truth value of\n'
        '"in".\n',
  'integers': 'Integer literals\n'
              '****************\n'
@@ -6665,7 +6665,7 @@ topics = {'assert': 'The "assert" statement\n'
  'lambda': 'Lambdas\n'
            '*******\n'
            '\n'
-           '   lambda_expr ::= "lambda" [parameter_list] ":" expression\n' 
+           '   lambda_expr ::= "lambda" [parameter_list] ":" expression\n'
            '\n'
            'Lambda expressions (sometimes called lambda forms) are used to '
            'create\n'
@@ -6793,8 +6793,8 @@ topics = {'assert': 'The "assert" statement\n'
            'operations.\n'
            '\n'
            'If the "global" statement occurs within a block, all uses of the '
-           'names\n' 
-           'specified in the statement refer to the bindings of those names in ' 
+           'names\n'
+           'specified in the statement refer to the bindings of those names in '
            'the\n'
            'top-level namespace.  Names are resolved in the top-level '
            'namespace by\n'
@@ -6803,9 +6803,9 @@ topics = {'assert': 'The "assert" statement\n'
            'namespace\n'
            'of the module "builtins".  The global namespace is searched '
            'first.  If\n'
-           'the names are not found there, the builtins namespace is ' 
-           'searched.\n' 
-           'The "global" statement must precede all uses of the listed names.\n' 
+           'the names are not found there, the builtins namespace is '
+           'searched.\n'
+           'The "global" statement must precede all uses of the listed names.\n'
            '\n'
            'The "global" statement has the same scope as a name binding '
            'operation\n'
@@ -6945,7 +6945,7 @@ topics = {'assert': 'The "assert" statement\n'
             '\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': 'Emulating numeric types\n'
@@ -7006,7 +7006,7 @@ topics = {'assert': 'The "assert" statement\n'
                   'object.__rfloordiv__(self, other)\n'
                   'object.__rmod__(self, other)\n'
                   'object.__rdivmod__(self, other)\n'
-                  'object.__rpow__(self, other[, modulo])\n' 
+                  'object.__rpow__(self, other[, modulo])\n'
                   'object.__rlshift__(self, other)\n'
                   'object.__rrshift__(self, other)\n'
                   'object.__rand__(self, other)\n'
@@ -7035,19 +7035,19 @@ topics = {'assert': 'The "assert" statement\n'
                   '"__rpow__()" (the\n'
                   '   coercion rules would become too complicated).\n'
                   '\n'
-                  '   Note:\n' 
-                  '\n'
-                  '     If the right operand’s type is a subclass of the left ' 
-                  'operand’s\n' 
-                  '     type and that subclass provides a different ' 
-                  'implementation of the\n' 
-                  '     reflected method for the operation, this method will ' 
-                  'be called\n' 
-                  '     before the left operand’s non-reflected method. This ' 
-                  'behavior\n' 
-                  '     allows subclasses to override their ancestors’ ' 
-                  'operations.\n' 
-                  '\n' 
+                  '   Note:\n'
+                  '\n'
+                  '     If the right operand’s type is a subclass of the left '
+                  'operand’s\n'
+                  '     type and that subclass provides a different '
+                  'implementation of the\n'
+                  '     reflected method for the operation, this method will '
+                  'be called\n'
+                  '     before the left operand’s non-reflected method. This '
+                  'behavior\n'
+                  '     allows subclasses to override their ancestors’ '
+                  'operations.\n'
+                  '\n'
                   'object.__iadd__(self, other)\n'
                   'object.__isub__(self, other)\n'
                   'object.__imul__(self, other)\n'
@@ -7090,16 +7090,16 @@ topics = {'assert': 'The "assert" statement\n'
                   'the data\n'
                   '   model.\n'
                   '\n'
-                  '   Note:\n' 
-                  '\n' 
-                  '     Due to a bug in the dispatching mechanism for "**=", a ' 
-                  'class that\n' 
-                  '     defines "__ipow__()" but returns "NotImplemented" ' 
-                  'would fail to\n' 
-                  '     fall back to "x.__pow__(y)" and "y.__rpow__(x)". This ' 
-                  'bug is\n' 
-                  '     fixed in Python 3.10.\n' 
-                  '\n' 
+                  '   Note:\n'
+                  '\n'
+                  '     Due to a bug in the dispatching mechanism for "**=", a '
+                  'class that\n'
+                  '     defines "__ipow__()" but returns "NotImplemented" '
+                  'would fail to\n'
+                  '     fall back to "x.__pow__(y)" and "y.__rpow__(x)". This '
+                  'bug is\n'
+                  '     fixed in Python 3.10.\n'
+                  '\n'
                   'object.__neg__(self)\n'
                   'object.__pos__(self)\n'
                   'object.__abs__(self)\n'
@@ -7130,11 +7130,11 @@ topics = {'assert': 'The "assert" statement\n'
                   'numeric\n'
                   '   object is an integer type.  Must return an integer.\n'
                   '\n'
-                  '   If "__int__()", "__float__()" and "__complex__()" are ' 
-                  'not defined\n' 
-                  '   then corresponding built-in functions "int()", "float()" ' 
-                  'and\n' 
-                  '   "complex()" fall back to "__index__()".\n' 
+                  '   If "__int__()", "__float__()" and "__complex__()" are '
+                  'not defined\n'
+                  '   then corresponding built-in functions "int()", "float()" '
+                  'and\n'
+                  '   "complex()" fall back to "__index__()".\n'
                   '\n'
                   'object.__round__(self[, ndigits])\n'
                   'object.__trunc__(self)\n'
@@ -7150,9 +7150,9 @@ topics = {'assert': 'The "assert" statement\n'
                   '   of the object truncated to an "Integral" (typically an '
                   '"int").\n'
                   '\n'
-                  '   The built-in function "int()" falls back to ' 
-                  '"__trunc__()" if\n' 
-                  '   neither "__int__()" nor "__index__()" is defined.\n', 
+                  '   The built-in function "int()" falls back to '
+                  '"__trunc__()" if\n'
+                  '   neither "__int__()" nor "__index__()" is defined.\n',
  'objects': 'Objects, values and types\n'
             '*************************\n'
             '\n'
@@ -7161,7 +7161,7 @@ topics = {'assert': 'The "assert" statement\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' 
+            'program computer”, code is also represented by objects.)\n'
             '\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 '
@@ -7286,8 +7286,8 @@ topics = {'assert': 'The "assert" statement\n'
                      '\n'
                      'The following table summarizes the operator precedence '
                      'in Python, from\n'
-                     'highest precedence (most binding) to lowest precedence ' 
-                     '(least\n' 
+                     'highest precedence (most binding) to lowest precedence '
+                     '(least\n'
                      'binding).  Operators in the same box have the same '
                      'precedence.  Unless\n'
                      'the syntax is explicitly given, operators are binary.  '
@@ -7305,79 +7305,79 @@ topics = {'assert': 'The "assert" statement\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
                      '| Operator                                        | '
                      'Description                           |\n'
-                     '|=================================================|=======================================|\n' 
-                     '| "(expressions...)",  "[expressions...]", "{key: | ' 
-                     'Binding or parenthesized expression,  |\n' 
-                     '| value...}", "{expressions...}"                  | list ' 
-                     'display, dictionary display, set |\n' 
-                     '|                                                 | ' 
-                     'display                               |\n' 
-                     '+-------------------------------------------------+---------------------------------------+\n' 
-                     '| "x[index]", "x[index:index]",                   | ' 
-                     'Subscription, slicing, call,          |\n' 
-                     '| "x(arguments...)", "x.attribute"                | ' 
-                     'attribute reference                   |\n' 
+                     '|=================================================|=======================================|\n'
+                     '| "(expressions...)",  "[expressions...]", "{key: | '
+                     'Binding or parenthesized expression,  |\n'
+                     '| value...}", "{expressions...}"                  | list '
+                     'display, dictionary display, set |\n'
+                     '|                                                 | '
+                     'display                               |\n'
+                     '+-------------------------------------------------+---------------------------------------+\n'
+                     '| "x[index]", "x[index:index]",                   | '
+                     'Subscription, slicing, call,          |\n'
+                     '| "x(arguments...)", "x.attribute"                | '
+                     'attribute reference                   |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| "await" "x"                                     | ' 
-                     'Await expression                      |\n' 
+                     '| "await" "x"                                     | '
+                     'Await expression                      |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| "**"                                            | ' 
-                     'Exponentiation [5]                    |\n' 
+                     '| "**"                                            | '
+                     'Exponentiation [5]                    |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| "+x", "-x", "~x"                                | ' 
-                     'Positive, negative, bitwise NOT       |\n' 
+                     '| "+x", "-x", "~x"                                | '
+                     'Positive, negative, bitwise NOT       |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| "*", "@", "/", "//", "%"                        | ' 
-                     'Multiplication, matrix                |\n' 
-                     '|                                                 | ' 
-                     'multiplication, division, floor       |\n' 
-                     '|                                                 | ' 
-                     'division, remainder [6]               |\n' 
+                     '| "*", "@", "/", "//", "%"                        | '
+                     'Multiplication, matrix                |\n'
+                     '|                                                 | '
+                     'multiplication, division, floor       |\n'
+                     '|                                                 | '
+                     'division, remainder [6]               |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| "+", "-"                                        | ' 
-                     'Addition and subtraction              |\n' 
+                     '| "+", "-"                                        | '
+                     'Addition and subtraction              |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| "<<", ">>"                                      | ' 
-                     'Shifts                                |\n' 
+                     '| "<<", ">>"                                      | '
+                     'Shifts                                |\n'
+                     '+-------------------------------------------------+---------------------------------------+\n'
+                     '| "&"                                             | '
+                     'Bitwise AND                           |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| "&"                                             | ' 
-                     'Bitwise AND                           |\n' 
-                     '+-------------------------------------------------+---------------------------------------+\n' 
                      '| "^"                                             | '
                      'Bitwise XOR                           |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| "|"                                             | ' 
-                     'Bitwise OR                            |\n' 
+                     '| "|"                                             | '
+                     'Bitwise OR                            |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| "in", "not in", "is", "is not", "<", "<=", ">", | ' 
-                     'Comparisons, including membership     |\n' 
-                     '| ">=", "!=", "=="                                | ' 
-                     'tests and identity tests              |\n' 
+                     '| "in", "not in", "is", "is not", "<", "<=", ">", | '
+                     'Comparisons, including membership     |\n'
+                     '| ">=", "!=", "=="                                | '
+                     'tests and identity tests              |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| "not" "x"                                       | ' 
-                     'Boolean NOT                           |\n' 
+                     '| "not" "x"                                       | '
+                     'Boolean NOT                           |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| "and"                                           | ' 
-                     'Boolean AND                           |\n' 
+                     '| "and"                                           | '
+                     'Boolean AND                           |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| "or"                                            | ' 
-                     'Boolean OR                            |\n' 
+                     '| "or"                                            | '
+                     'Boolean OR                            |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| "if" – "else"                                   | ' 
-                     'Conditional expression                |\n' 
+                     '| "if" – "else"                                   | '
+                     'Conditional expression                |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| "lambda"                                        | ' 
-                     'Lambda expression                     |\n' 
+                     '| "lambda"                                        | '
+                     'Lambda expression                     |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
-                     '| ":="                                            | ' 
-                     'Assignment expression                 |\n' 
+                     '| ":="                                            | '
+                     'Assignment expression                 |\n'
                      '+-------------------------------------------------+---------------------------------------+\n'
                      '\n'
                      '-[ Footnotes ]-\n'
                      '\n'
                      '[1] While "abs(x%y) < abs(y)" is true mathematically, '
-                     'for floats it\n' 
-                     '    may not be true numerically due to roundoff.  For ' 
+                     'for floats it\n'
+                     '    may not be true numerically due to roundoff.  For '
                      'example, and\n'
                      '    assuming a platform on which a Python float is an '
                      'IEEE 754 double-\n'
@@ -7442,23 +7442,23 @@ topics = {'assert': 'The "assert" statement\n'
                      '"unicodedata.normalize()".\n'
                      '\n'
                      '[4] Due to automatic garbage-collection, free lists, and '
-                     'the dynamic\n' 
-                     '    nature of descriptors, you may notice seemingly ' 
-                     'unusual behaviour\n' 
-                     '    in certain uses of the "is" operator, like those ' 
-                     'involving\n' 
-                     '    comparisons between instance methods, or constants.  ' 
-                     'Check their\n' 
-                     '    documentation for more info.\n' 
+                     'the dynamic\n'
+                     '    nature of descriptors, you may notice seemingly '
+                     'unusual behaviour\n'
+                     '    in certain uses of the "is" operator, like those '
+                     'involving\n'
+                     '    comparisons between instance methods, or constants.  '
+                     'Check their\n'
+                     '    documentation for more info.\n'
+                     '\n'
+                     '[5] The power operator "**" binds less tightly than an '
+                     'arithmetic or\n'
+                     '    bitwise unary operator on its right, that is, '
+                     '"2**-1" is "0.5".\n'
                      '\n'
-                     '[5] The power operator "**" binds less tightly than an ' 
-                     'arithmetic or\n' 
-                     '    bitwise unary operator on its right, that is, ' 
-                     '"2**-1" is "0.5".\n' 
-                     '\n' 
-                     '[6] The "%" operator is also used for string formatting; ' 
-                     'the same\n' 
-                     '    precedence applies.\n', 
+                     '[6] The "%" operator is also used for string formatting; '
+                     'the same\n'
+                     '    precedence applies.\n',
  'pass': 'The "pass" statement\n'
          '********************\n'
          '\n'
@@ -7506,10 +7506,10 @@ topics = {'assert': 'The "assert" statement\n'
           '"ZeroDivisionError".\n'
           'Raising a negative number to a fractional power results in a '
           '"complex"\n'
-          'number. (In earlier versions it raised a "ValueError".)\n' 
-          '\n' 
-          'This operation can be customized using the special "__pow__()" ' 
-          'method.\n', 
+          'number. (In earlier versions it raised a "ValueError".)\n'
+          '\n'
+          'This operation can be customized using the special "__pow__()" '
+          'method.\n',
  'raise': 'The "raise" statement\n'
           '*********************\n'
           '\n'
@@ -7546,18 +7546,18 @@ topics = {'assert': 'The "assert" statement\n'
           '\n'
           'The "from" clause is used for exception chaining: if given, the '
           'second\n'
-          '*expression* must be another exception class or instance. If the\n' 
-          'second expression is an exception instance, it will be attached to ' 
-          'the\n' 
-          'raised exception as the "__cause__" attribute (which is writable). ' 
-          'If\n' 
-          'the expression is an exception class, the class will be ' 
-          'instantiated\n' 
-          'and the resulting exception instance will be attached to the ' 
-          'raised\n' 
-          'exception as the "__cause__" attribute. If the raised exception is ' 
-          'not\n' 
-          'handled, both exceptions will be printed:\n' 
+          '*expression* must be another exception class or instance. If the\n'
+          'second expression is an exception instance, it will be attached to '
+          'the\n'
+          'raised exception as the "__cause__" attribute (which is writable). '
+          'If\n'
+          'the expression is an exception class, the class will be '
+          'instantiated\n'
+          'and the resulting exception instance will be attached to the '
+          'raised\n'
+          'exception as the "__cause__" attribute. If the raised exception is '
+          'not\n'
+          'handled, both exceptions will be printed:\n'
           '\n'
           '   >>> try:\n'
           '   ...     print(1 / 0)\n'
@@ -7661,62 +7661,62 @@ topics = {'assert': 'The "assert" statement\n'
                    '\n'
                    'The following methods can be defined to implement '
                    'container objects.\n'
-                   'Containers usually are *sequences* (such as "lists" or ' 
-                   '"tuples") or\n' 
-                   '*mappings* (like "dictionaries"), but can represent other ' 
-                   'containers\n' 
-                   'as well.  The first set of methods is used either to ' 
-                   'emulate a\n' 
-                   'sequence or to emulate a mapping; the difference is that ' 
-                   'for a\n' 
-                   'sequence, the allowable keys should be the integers *k* ' 
-                   'for which "0\n' 
-                   '<= k < N" where *N* is the length of the sequence, or ' 
-                   '"slice" objects,\n' 
-                   'which define a range of items.  It is also recommended ' 
-                   'that mappings\n' 
-                   'provide the methods "keys()", "values()", "items()", ' 
-                   '"get()",\n' 
-                   '"clear()", "setdefault()", "pop()", "popitem()", "copy()", ' 
-                   'and\n' 
-                   '"update()" behaving similar to those for Python’s ' 
-                   'standard\n' 
-                   '"dictionary" objects.  The "collections.abc" module ' 
-                   'provides a\n' 
-                   '"MutableMapping" *abstract base class* to help create ' 
-                   'those methods\n' 
-                   'from a base set of "__getitem__()", "__setitem__()", ' 
-                   '"__delitem__()",\n' 
-                   'and "keys()". Mutable sequences should provide methods ' 
-                   '"append()",\n' 
-                   '"count()", "index()", "extend()", "insert()", "pop()", ' 
-                   '"remove()",\n' 
-                   '"reverse()" and "sort()", like Python standard "list" ' 
+                   'Containers usually are *sequences* (such as "lists" or '
+                   '"tuples") or\n'
+                   '*mappings* (like "dictionaries"), but can represent other '
+                   'containers\n'
+                   'as well.  The first set of methods is used either to '
+                   'emulate a\n'
+                   'sequence or to emulate a mapping; the difference is that '
+                   'for a\n'
+                   'sequence, the allowable keys should be the integers *k* '
+                   'for which "0\n'
+                   '<= k < N" where *N* is the length of the sequence, or '
+                   '"slice" objects,\n'
+                   'which define a range of items.  It is also recommended '
+                   'that mappings\n'
+                   'provide the methods "keys()", "values()", "items()", '
+                   '"get()",\n'
+                   '"clear()", "setdefault()", "pop()", "popitem()", "copy()", '
+                   'and\n'
+                   '"update()" behaving similar to those for Python’s '
+                   'standard\n'
+                   '"dictionary" objects.  The "collections.abc" module '
+                   'provides a\n'
+                   '"MutableMapping" *abstract base class* to help create '
+                   'those methods\n'
+                   'from a base set of "__getitem__()", "__setitem__()", '
+                   '"__delitem__()",\n'
+                   'and "keys()". Mutable sequences should provide methods '
+                   '"append()",\n'
+                   '"count()", "index()", "extend()", "insert()", "pop()", '
+                   '"remove()",\n'
+                   '"reverse()" and "sort()", like Python standard "list" '
                    'objects.\n'
-                   'Finally, sequence types should implement addition ' 
+                   'Finally, sequence types should implement addition '
                    '(meaning\n'
-                   'concatenation) and multiplication (meaning repetition) by ' 
-                   'defining the\n' 
-                   'methods "__add__()", "__radd__()", "__iadd__()", ' 
-                   '"__mul__()",\n' 
-                   '"__rmul__()" and "__imul__()" described below; they should ' 
-                   'not define\n' 
-                   'other numerical operators.  It is recommended that both ' 
-                   'mappings and\n' 
-                   'sequences implement the "__contains__()" method to allow ' 
-                   'efficient use\n' 
-                   'of the "in" operator; for mappings, "in" should search the ' 
-                   'mapping’s\n' 
-                   'keys; for sequences, it should search through the values.  ' 
+                   'concatenation) and multiplication (meaning repetition) by '
+                   'defining the\n'
+                   'methods "__add__()", "__radd__()", "__iadd__()", '
+                   '"__mul__()",\n'
+                   '"__rmul__()" and "__imul__()" described below; they should '
+                   'not define\n'
+                   'other numerical operators.  It is recommended that both '
+                   'mappings and\n'
+                   'sequences implement the "__contains__()" method to allow '
+                   'efficient use\n'
+                   'of the "in" operator; for mappings, "in" should search the '
+                   'mapping’s\n'
+                   'keys; for sequences, it should search through the values.  '
                    'It is\n'
-                   'further recommended that both mappings and sequences ' 
-                   'implement the\n' 
-                   '"__iter__()" method to allow efficient iteration through ' 
+                   'further recommended that both mappings and sequences '
+                   'implement the\n'
+                   '"__iter__()" method to allow efficient iteration through '
                    'the\n'
-                   'container; for mappings, "__iter__()" should iterate ' 
-                   'through the\n' 
-                   'object’s keys; for sequences, it should iterate through ' 
-                   'the values.\n' 
+                   'container; for mappings, "__iter__()" should iterate '
+                   'through the\n'
+                   'object’s keys; for sequences, it should iterate through '
+                   'the values.\n'
                    '\n'
                    'object.__len__(self)\n'
                    '\n'
@@ -7746,23 +7746,23 @@ topics = {'assert': 'The "assert" statement\n'
                    '   estimated length for the object (which may be greater '
                    'or less than\n'
                    '   the actual length). The length must be an integer ">=" '
-                   '0. The\n' 
-                   '   return value may also be "NotImplemented", which is ' 
-                   'treated the\n' 
-                   '   same as if the "__length_hint__" method didn’t exist at ' 
-                   'all. This\n' 
+                   '0. The\n'
+                   '   return value may also be "NotImplemented", which is '
+                   'treated the\n'
+                   '   same as if the "__length_hint__" method didn’t exist at '
+                   'all. This\n'
                    '   method is purely an optimization and is never required '
                    'for\n'
                    '   correctness.\n'
                    '\n'
                    '   New in version 3.4.\n'
                    '\n'
-                   'Note:\n' 
+                   'Note:\n'
+                   '\n'
+                   '  Slicing is done exclusively with the following three '
+                   'methods.  A\n'
+                   '  call like\n'
                    '\n'
-                   '  Slicing is done exclusively with the following three ' 
-                   'methods.  A\n' 
-                   '  call like\n' 
-                   '\n' 
                    '     a[1:2] = b\n'
                    '\n'
                    '  is translated to\n'
@@ -7775,42 +7775,42 @@ topics = {'assert': 'The "assert" statement\n'
                    'object.__getitem__(self, key)\n'
                    '\n'
                    '   Called to implement evaluation of "self[key]". For '
-                   '*sequence*\n' 
-                   '   types, the accepted keys should be integers and slice ' 
-                   'objects.\n' 
-                   '   Note that the special interpretation of negative ' 
-                   'indexes (if the\n' 
-                   '   class wishes to emulate a *sequence* type) is up to ' 
+                   '*sequence*\n'
+                   '   types, the accepted keys should be integers and slice '
+                   'objects.\n'
+                   '   Note that the special interpretation of negative '
+                   'indexes (if the\n'
+                   '   class wishes to emulate a *sequence* type) is up to '
                    'the\n'
-                   '   "__getitem__()" method. If *key* is of an inappropriate ' 
-                   'type,\n' 
-                   '   "TypeError" may be raised; if of a value outside the ' 
-                   'set of indexes\n' 
-                   '   for the sequence (after any special interpretation of ' 
-                   'negative\n' 
-                   '   values), "IndexError" should be raised. For *mapping* ' 
-                   'types, if\n' 
-                   '   *key* is missing (not in the container), "KeyError" ' 
-                   'should be\n' 
-                   '   raised.\n' 
-                   '\n'
-                   '   Note:\n' 
-                   '\n' 
-                   '     "for" loops expect that an "IndexError" will be ' 
+                   '   "__getitem__()" method. If *key* is of an inappropriate '
+                   'type,\n'
+                   '   "TypeError" may be raised; if of a value outside the '
+                   'set of indexes\n'
+                   '   for the sequence (after any special interpretation of '
+                   'negative\n'
+                   '   values), "IndexError" should be raised. For *mapping* '
+                   'types, if\n'
+                   '   *key* is missing (not in the container), "KeyError" '
+                   'should be\n'
+                   '   raised.\n'
+                   '\n'
+                   '   Note:\n'
+                   '\n'
+                   '     "for" loops expect that an "IndexError" will be '
                    'raised for\n'
                    '     illegal indexes to allow proper detection of the end '
                    'of the\n'
                    '     sequence.\n'
                    '\n'
-                   '   Note:\n' 
-                   '\n' 
-                   '     When subscripting a *class*, the special class ' 
-                   'method\n' 
-                   '     "__class_getitem__()" may be called instead of ' 
-                   '"__getitem__()".\n' 
-                   '     See __class_getitem__ versus __getitem__ for more ' 
-                   'details.\n' 
-                   '\n' 
+                   '   Note:\n'
+                   '\n'
+                   '     When subscripting a *class*, the special class '
+                   'method\n'
+                   '     "__class_getitem__()" may be called instead of '
+                   '"__getitem__()".\n'
+                   '     See __class_getitem__ versus __getitem__ for more '
+                   'details.\n'
+                   '\n'
                    'object.__setitem__(self, key, value)\n'
                    '\n'
                    '   Called to implement assignment to "self[key]".  Same '
@@ -7883,12 +7883,12 @@ topics = {'assert': 'The "assert" statement\n'
                    '\n'
                    'The membership test operators ("in" and "not in") are '
                    'normally\n'
-                   'implemented as an iteration through a container. However, ' 
+                   'implemented as an iteration through a container. However, '
                    'container\n'
                    'objects can supply the following special method with a '
                    'more efficient\n'
                    'implementation, which also does not require the object be '
-                   'iterable.\n' 
+                   'iterable.\n'
                    '\n'
                    'object.__contains__(self, item)\n'
                    '\n'
@@ -7921,10 +7921,10 @@ topics = {'assert': 'The "assert" statement\n'
              'the\n'
              'second argument.\n'
              '\n'
-             'This operation can be customized using the special ' 
-             '"__lshift__()" and\n' 
-             '"__rshift__()" methods.\n' 
-             '\n' 
+             'This operation can be customized using the special '
+             '"__lshift__()" and\n'
+             '"__rshift__()" methods.\n'
+             '\n'
              'A right shift by *n* bits is defined as floor division by '
              '"pow(2,n)".\n'
              'A left shift by *n* bits is defined as multiplication with '
@@ -8037,7 +8037,7 @@ topics = {'assert': 'The "assert" statement\n'
                  'immediate\n'
                  '   subclasses.  This method returns a list of all those '
                  'references\n'
-                 '   still alive.  The list is in definition order.  Example:\n' 
+                 '   still alive.  The list is in definition order.  Example:\n'
                  '\n'
                  '      >>> int.__subclasses__()\n'
                  "      [<class 'bool'>]\n"
@@ -8045,26 +8045,26 @@ topics = {'assert': 'The "assert" statement\n'
                  '-[ Footnotes ]-\n'
                  '\n'
                  '[1] Additional information on these special methods may be '
-                 'found in\n' 
-                 '    the Python Reference Manual (Basic customization).\n' 
+                 'found in\n'
+                 '    the Python Reference Manual (Basic customization).\n'
                  '\n'
                  '[2] As a consequence, the list "[1, 2]" is considered equal '
-                 'to "[1.0,\n' 
-                 '    2.0]", and similarly for tuples.\n' 
+                 'to "[1.0,\n'
+                 '    2.0]", and similarly for tuples.\n'
                  '\n'
                  '[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 being\n' 
-                 '    one of “Lu” (Letter, uppercase), “Ll” (Letter, ' 
-                 'lowercase), or “Lt”\n' 
-                 '    (Letter, titlecase).\n' 
-                 '\n'
-                 '[5] To format only a tuple you should therefore provide a ' 
-                 'singleton\n' 
-                 '    tuple whose only element is the tuple to be formatted.\n', 
+                 'property being\n'
+                 '    one of “Lu” (Letter, uppercase), “Ll” (Letter, '
+                 'lowercase), or “Lt”\n'
+                 '    (Letter, titlecase).\n'
+                 '\n'
+                 '[5] To format only a tuple you should therefore provide a '
+                 'singleton\n'
+                 '    tuple whose only element is the tuple to be formatted.\n',
  'specialnames': 'Special method names\n'
                  '********************\n'
                  '\n'
@@ -8137,15 +8137,15 @@ topics = {'assert': 'The "assert" statement\n'
                  'returning\n'
                  '   it.\n'
                  '\n'
-                 '   If "__new__()" is invoked during object construction and ' 
-                 'it returns\n' 
-                 '   an instance of *cls*, then the new instance’s ' 
-                 '"__init__()" method\n' 
-                 '   will be invoked like "__init__(self[, ...])", where ' 
-                 '*self* is the\n' 
-                 '   new instance and the remaining arguments are the same as ' 
-                 'were\n' 
-                 '   passed to the object constructor.\n' 
+                 '   If "__new__()" is invoked during object construction and '
+                 'it returns\n'
+                 '   an instance of *cls*, then the new instance’s '
+                 '"__init__()" method\n'
+                 '   will be invoked like "__init__(self[, ...])", where '
+                 '*self* is the\n'
+                 '   new instance and the remaining arguments are the same as '
+                 'were\n'
+                 '   passed to the object constructor.\n'
                  '\n'
                  '   If "__new__()" does not return an instance of *cls*, then '
                  'the new\n'
@@ -8209,9 +8209,9 @@ topics = {'assert': 'The "assert" statement\n'
                  'for\n'
                  '   objects that still exist when the interpreter exits.\n'
                  '\n'
-                 '   Note:\n' 
-                 '\n' 
-                 '     "del x" doesn’t directly call "x.__del__()" — the ' 
+                 '   Note:\n'
+                 '\n'
+                 '     "del x" doesn’t directly call "x.__del__()" — the '
                  'former\n'
                  '     decrements the reference count for "x" by one, and the '
                  'latter is\n'
@@ -8235,16 +8235,16 @@ topics = {'assert': 'The "assert" statement\n'
                  '\n'
                  '   See also: Documentation for the "gc" module.\n'
                  '\n'
-                 '   Warning:\n' 
+                 '   Warning:\n'
+                 '\n'
+                 '     Due to the precarious circumstances under which '
+                 '"__del__()"\n'
+                 '     methods are invoked, exceptions that occur during their '
+                 'execution\n'
+                 '     are ignored, and a warning is printed to "sys.stderr" '
+                 'instead.\n'
+                 '     In particular:\n'
                  '\n'
-                 '     Due to the precarious circumstances under which ' 
-                 '"__del__()"\n' 
-                 '     methods are invoked, exceptions that occur during their ' 
-                 'execution\n' 
-                 '     are ignored, and a warning is printed to "sys.stderr" ' 
-                 'instead.\n' 
-                 '     In particular:\n' 
-                 '\n' 
                  '     * "__del__()" can be invoked when arbitrary code is '
                  'being\n'
                  '       executed, including from any arbitrary thread.  If '
@@ -8256,20 +8256,20 @@ topics = {'assert': 'The "assert" statement\n'
                  '       that gets interrupted to execute "__del__()".\n'
                  '\n'
                  '     * "__del__()" can be executed during interpreter '
-                 'shutdown.  As a\n' 
-                 '       consequence, the global variables it needs to access ' 
-                 '(including\n' 
-                 '       other modules) may already have been deleted or set ' 
-                 'to "None".\n' 
-                 '       Python guarantees that globals whose name begins with ' 
-                 'a single\n' 
-                 '       underscore are deleted from their module before other ' 
-                 'globals\n' 
-                 '       are deleted; if no other references to such globals ' 
-                 'exist, this\n' 
-                 '       may help in assuring that imported modules are still ' 
-                 'available\n' 
-                 '       at the time when the "__del__()" method is called.\n' 
+                 'shutdown.  As a\n'
+                 '       consequence, the global variables it needs to access '
+                 '(including\n'
+                 '       other modules) may already have been deleted or set '
+                 'to "None".\n'
+                 '       Python guarantees that globals whose name begins with '
+                 'a single\n'
+                 '       underscore are deleted from their module before other '
+                 'globals\n'
+                 '       are deleted; if no other references to such globals '
+                 'exist, this\n'
+                 '       may help in assuring that imported modules are still '
+                 'available\n'
+                 '       at the time when the "__del__()" method is called.\n'
                  '\n'
                  'object.__repr__(self)\n'
                  '\n'
@@ -8330,11 +8330,11 @@ topics = {'assert': 'The "assert" statement\n'
                  '"str.format()"\n'
                  '   method, to produce a “formatted” string representation of '
                  'an\n'
-                 '   object. The *format_spec* argument is a string that ' 
+                 '   object. The *format_spec* argument is a string that '
                  'contains a\n'
                  '   description of the formatting options desired. The '
                  'interpretation\n'
-                 '   of the *format_spec* argument is up to the type ' 
+                 '   of the *format_spec* argument is up to the type '
                  'implementing\n'
                  '   "__format__()", however most classes will either '
                  'delegate\n'
@@ -8354,7 +8354,7 @@ topics = {'assert': 'The "assert" statement\n'
                  '\n'
                  '   Changed in version 3.7: "object.__format__(x, \'\')" is '
                  'now\n'
-                 '   equivalent to "str(x)" rather than "format(str(x), ' 
+                 '   equivalent to "str(x)" rather than "format(str(x), '
                  '\'\')".\n'
                  '\n'
                  'object.__lt__(self, other)\n'
@@ -8388,21 +8388,21 @@ topics = {'assert': 'The "assert" statement\n'
                  '   on the value to determine if the result is true or '
                  'false.\n'
                  '\n'
-                 '   By default, "object" implements "__eq__()" by using "is", ' 
-                 'returning\n' 
-                 '   "NotImplemented" in the case of a false comparison: "True ' 
-                 'if x is y\n' 
-                 '   else NotImplemented". For "__ne__()", by default it ' 
-                 'delegates to\n' 
-                 '   "__eq__()" and inverts the result unless it is ' 
-                 '"NotImplemented".\n' 
-                 '   There are no other implied relationships among the ' 
-                 'comparison\n' 
-                 '   operators or default implementations; for example, the ' 
-                 'truth of\n' 
-                 '   "(x<y or x==y)" does not imply "x<=y". To automatically ' 
-                 'generate\n' 
-                 '   ordering operations from a single root operation, see\n' 
+                 '   By default, "object" implements "__eq__()" by using "is", '
+                 'returning\n'
+                 '   "NotImplemented" in the case of a false comparison: "True '
+                 'if x is y\n'
+                 '   else NotImplemented". For "__ne__()", by default it '
+                 'delegates to\n'
+                 '   "__eq__()" and inverts the result unless it is '
+                 '"NotImplemented".\n'
+                 '   There are no other implied relationships among the '
+                 'comparison\n'
+                 '   operators or default implementations; for example, the '
+                 'truth of\n'
+                 '   "(x<y or x==y)" does not imply "x<=y". To automatically '
+                 'generate\n'
+                 '   ordering operations from a single root operation, see\n'
                  '   "functools.total_ordering()".\n'
                  '\n'
                  '   See the paragraph on "__hash__()" for some important '
@@ -8450,22 +8450,22 @@ topics = {'assert': 'The "assert" statement\n'
                  '      def __hash__(self):\n'
                  '          return hash((self.name, self.nick, self.color))\n'
                  '\n'
-                 '   Note:\n' 
-                 '\n'
-                 '     "hash()" truncates the value returned from an object’s ' 
-                 'custom\n' 
-                 '     "__hash__()" method to the size of a "Py_ssize_t".  ' 
-                 'This is\n' 
-                 '     typically 8 bytes on 64-bit builds and 4 bytes on ' 
-                 '32-bit builds.\n' 
-                 '     If an object’s   "__hash__()" must interoperate on ' 
-                 'builds of\n' 
-                 '     different bit sizes, be sure to check the width on all ' 
-                 'supported\n' 
-                 '     builds.  An easy way to do this is with "python -c ' 
-                 '"import sys;\n' 
-                 '     print(sys.hash_info.width)"".\n' 
-                 '\n' 
+                 '   Note:\n'
+                 '\n'
+                 '     "hash()" truncates the value returned from an object’s '
+                 'custom\n'
+                 '     "__hash__()" method to the size of a "Py_ssize_t".  '
+                 'This is\n'
+                 '     typically 8 bytes on 64-bit builds and 4 bytes on '
+                 '32-bit builds.\n'
+                 '     If an object’s   "__hash__()" must interoperate on '
+                 'builds of\n'
+                 '     different bit sizes, be sure to check the width on all '
+                 'supported\n'
+                 '     builds.  An easy way to do this is with "python -c '
+                 '"import sys;\n'
+                 '     print(sys.hash_info.width)"".\n'
+                 '\n'
                  '   If a class does not define an "__eq__()" method it should '
                  'not\n'
                  '   define a "__hash__()" operation either; if it defines '
@@ -8520,22 +8520,22 @@ topics = {'assert': 'The "assert" statement\n'
                  '   hashable by an "isinstance(obj, '
                  'collections.abc.Hashable)" call.\n'
                  '\n'
-                 '   Note:\n' 
-                 '\n' 
-                 '     By default, the "__hash__()" values of str and bytes ' 
-                 'objects are\n' 
-                 '     “salted” with an unpredictable random value.  Although ' 
-                 'they\n' 
-                 '     remain constant within an individual Python process, ' 
-                 'they are not\n' 
-                 '     predictable between repeated invocations of Python.This ' 
-                 'is\n' 
-                 '     intended to provide protection against a ' 
-                 'denial-of-service caused\n' 
-                 '     by carefully-chosen inputs that exploit the worst case\n' 
-                 '     performance of a dict insertion, O(n^2) complexity.  ' 
-                 'See\n' 
-                 '     http://www.ocert.org/advisories/ocert-2011-003.html ' 
+                 '   Note:\n'
+                 '\n'
+                 '     By default, the "__hash__()" values of str and bytes '
+                 'objects are\n'
+                 '     “salted” with an unpredictable random value.  Although '
+                 'they\n'
+                 '     remain constant within an individual Python process, '
+                 'they are not\n'
+                 '     predictable between repeated invocations of Python.This '
+                 'is\n'
+                 '     intended to provide protection against a '
+                 'denial-of-service caused\n'
+                 '     by carefully-chosen inputs that exploit the worst case\n'
+                 '     performance of a dict insertion, O(n^2) complexity.  '
+                 'See\n'
+                 '     http://www.ocert.org/advisories/ocert-2011-003.html '
                  'for\n'
                  '     details.Changing hash values affects the iteration '
                  'order of sets.\n'
@@ -8624,18 +8624,18 @@ topics = {'assert': 'The "assert" statement\n'
                  'needs, for\n'
                  '   example, "object.__getattribute__(self, name)".\n'
                  '\n'
-                 '   Note:\n' 
-                 '\n'
-                 '     This method may still be bypassed when looking up ' 
-                 'special methods\n' 
-                 '     as the result of implicit invocation via language ' 
-                 'syntax or\n' 
-                 '     built-in functions. See Special method lookup.\n' 
-                 '\n' 
-                 '   For certain sensitive attribute accesses, raises an ' 
-                 'auditing event\n' 
-                 '   "object.__getattr__" with arguments "obj" and "name".\n' 
-                 '\n' 
+                 '   Note:\n'
+                 '\n'
+                 '     This method may still be bypassed when looking up '
+                 'special methods\n'
+                 '     as the result of implicit invocation via language '
+                 'syntax or\n'
+                 '     built-in functions. See Special method lookup.\n'
+                 '\n'
+                 '   For certain sensitive attribute accesses, raises an '
+                 'auditing event\n'
+                 '   "object.__getattr__" with arguments "obj" and "name".\n'
+                 '\n'
                  'object.__setattr__(self, name, value)\n'
                  '\n'
                  '   Called when an attribute assignment is attempted.  This '
@@ -8652,11 +8652,11 @@ topics = {'assert': 'The "assert" statement\n'
                  'example,\n'
                  '   "object.__setattr__(self, name, value)".\n'
                  '\n'
-                 '   For certain sensitive attribute assignments, raises an ' 
-                 'auditing\n' 
-                 '   event "object.__setattr__" with arguments "obj", "name", ' 
-                 '"value".\n' 
-                 '\n' 
+                 '   For certain sensitive attribute assignments, raises an '
+                 'auditing\n'
+                 '   event "object.__setattr__" with arguments "obj", "name", '
+                 '"value".\n'
+                 '\n'
                  'object.__delattr__(self, name)\n'
                  '\n'
                  '   Like "__setattr__()" but for attribute deletion instead '
@@ -8665,10 +8665,10 @@ topics = {'assert': 'The "assert" statement\n'
                  'obj.name" is\n'
                  '   meaningful for the object.\n'
                  '\n'
-                 '   For certain sensitive attribute deletions, raises an ' 
-                 'auditing event\n' 
-                 '   "object.__delattr__" with arguments "obj" and "name".\n' 
-                 '\n' 
+                 '   For certain sensitive attribute deletions, raises an '
+                 'auditing event\n'
+                 '   "object.__delattr__" with arguments "obj" and "name".\n'
+                 '\n'
                  'object.__dir__(self)\n'
                  '\n'
                  '   Called when "dir()" is called on the object. A sequence '
@@ -8700,11 +8700,11 @@ topics = {'assert': 'The "assert" statement\n'
                  'returned.\n'
                  '\n'
                  'The "__dir__" function should accept no arguments, and '
-                 'return a\n' 
-                 'sequence of strings that represents the names accessible on ' 
-                 'module. If\n' 
-                 'present, this function overrides the standard "dir()" search ' 
-                 'on a\n' 
+                 'return a\n'
+                 'sequence of strings that represents the names accessible on '
+                 'module. If\n'
+                 'present, this function overrides the standard "dir()" search '
+                 'on a\n'
                  'module.\n'
                  '\n'
                  'For a more fine grained customization of the module behavior '
@@ -8727,17 +8727,17 @@ topics = {'assert': 'The "assert" statement\n'
                  '\n'
                  '   sys.modules[__name__].__class__ = VerboseModule\n'
                  '\n'
-                 'Note:\n' 
-                 '\n'
-                 '  Defining module "__getattr__" and setting module ' 
-                 '"__class__" only\n' 
-                 '  affect lookups made using the attribute access syntax – ' 
-                 'directly\n' 
-                 '  accessing the module globals (whether by code within the ' 
-                 'module, or\n' 
-                 '  via a reference to the module’s globals dictionary) is ' 
-                 'unaffected.\n' 
-                 '\n' 
+                 'Note:\n'
+                 '\n'
+                 '  Defining module "__getattr__" and setting module '
+                 '"__class__" only\n'
+                 '  affect lookups made using the attribute access syntax – '
+                 'directly\n'
+                 '  accessing the module globals (whether by code within the '
+                 'module, or\n'
+                 '  via a reference to the module’s globals dictionary) is '
+                 'unaffected.\n'
+                 '\n'
                  'Changed in version 3.5: "__class__" module attribute is now '
                  'writable.\n'
                  '\n'
@@ -8766,47 +8766,47 @@ topics = {'assert': 'The "assert" statement\n'
                  'whose name is\n'
                  'the key of the property in the owner class’ "__dict__".\n'
                  '\n'
-                 'object.__get__(self, instance, owner=None)\n' 
+                 'object.__get__(self, instance, owner=None)\n'
                  '\n'
                  '   Called to get the attribute of the owner class (class '
                  'attribute\n'
                  '   access) or of an instance of that class (instance '
                  'attribute\n'
-                 '   access). The optional *owner* argument is the owner ' 
-                 'class, while\n' 
-                 '   *instance* is the instance that the attribute was ' 
-                 'accessed through,\n' 
-                 '   or "None" when the attribute is accessed through the ' 
-                 '*owner*.\n' 
-                 '\n'
-                 '   This method should return the computed attribute value or ' 
-                 'raise an\n' 
-                 '   "AttributeError" exception.\n' 
-                 '\n' 
-                 '   **PEP 252** specifies that "__get__()" is callable with ' 
-                 'one or two\n' 
-                 '   arguments.  Python’s own built-in descriptors support ' 
-                 'this\n' 
-                 '   specification; however, it is likely that some ' 
-                 'third-party tools\n' 
-                 '   have descriptors that require both arguments.  Python’s ' 
-                 'own\n' 
-                 '   "__getattribute__()" implementation always passes in both ' 
-                 'arguments\n' 
-                 '   whether they are required or not.\n' 
-                 '\n' 
+                 '   access). The optional *owner* argument is the owner '
+                 'class, while\n'
+                 '   *instance* is the instance that the attribute was '
+                 'accessed through,\n'
+                 '   or "None" when the attribute is accessed through the '
+                 '*owner*.\n'
+                 '\n'
+                 '   This method should return the computed attribute value or '
+                 'raise an\n'
+                 '   "AttributeError" exception.\n'
+                 '\n'
+                 '   **PEP 252** specifies that "__get__()" is callable with '
+                 'one or two\n'
+                 '   arguments.  Python’s own built-in descriptors support '
+                 'this\n'
+                 '   specification; however, it is likely that some '
+                 'third-party tools\n'
+                 '   have descriptors that require both arguments.  Python’s '
+                 'own\n'
+                 '   "__getattribute__()" implementation always passes in both '
+                 'arguments\n'
+                 '   whether they are required or not.\n'
+                 '\n'
                  'object.__set__(self, instance, value)\n'
                  '\n'
                  '   Called to set the attribute on an instance *instance* of '
                  'the owner\n'
                  '   class to a new value, *value*.\n'
                  '\n'
-                 '   Note, adding "__set__()" or "__delete__()" changes the ' 
-                 'kind of\n' 
-                 '   descriptor to a “data descriptor”.  See Invoking ' 
-                 'Descriptors for\n' 
-                 '   more details.\n' 
-                 '\n' 
+                 '   Note, adding "__set__()" or "__delete__()" changes the '
+                 'kind of\n'
+                 '   descriptor to a “data descriptor”.  See Invoking '
+                 'Descriptors for\n'
+                 '   more details.\n'
+                 '\n'
                  'object.__delete__(self, instance)\n'
                  '\n'
                  '   Called to delete the attribute on an instance *instance* '
@@ -8819,24 +8819,24 @@ topics = {'assert': 'The "assert" statement\n'
                  'The\n'
                  '   descriptor has been assigned to *name*.\n'
                  '\n'
-                 '   Note:\n' 
-                 '\n' 
-                 '     "__set_name__()" is only called implicitly as part of ' 
-                 'the "type"\n' 
-                 '     constructor, so it will need to be called explicitly ' 
-                 'with the\n' 
-                 '     appropriate parameters when a descriptor is added to a ' 
-                 'class\n' 
-                 '     after initial creation:\n' 
-                 '\n' 
-                 '        class A:\n' 
-                 '           pass\n' 
-                 '        descr = custom_descriptor()\n' 
-                 '        A.attr = descr\n' 
-                 "        descr.__set_name__(A, 'attr')\n" 
-                 '\n' 
-                 '     See Creating the class object for more details.\n' 
-                 '\n' 
+                 '   Note:\n'
+                 '\n'
+                 '     "__set_name__()" is only called implicitly as part of '
+                 'the "type"\n'
+                 '     constructor, so it will need to be called explicitly '
+                 'with the\n'
+                 '     appropriate parameters when a descriptor is added to a '
+                 'class\n'
+                 '     after initial creation:\n'
+                 '\n'
+                 '        class A:\n'
+                 '           pass\n'
+                 '        descr = custom_descriptor()\n'
+                 '        A.attr = descr\n'
+                 "        descr.__set_name__(A, 'attr')\n"
+                 '\n'
+                 '     See Creating the class object for more details.\n'
+                 '\n'
                  '   New in version 3.6.\n'
                  '\n'
                  'The attribute "__objclass__" is interpreted by the "inspect" '
@@ -8909,16 +8909,16 @@ topics = {'assert': 'The "assert" statement\n'
                  '"super(B,\n'
                  '   obj).m()" searches "obj.__class__.__mro__" for the base '
                  'class "A"\n'
-                 '   immediately following "B" and then invokes the descriptor ' 
+                 '   immediately following "B" and then invokes the descriptor '
                  'with the\n'
                  '   call: "A.__dict__[\'m\'].__get__(obj, obj.__class__)".\n'
                  '\n'
                  'For instance bindings, the precedence of descriptor '
                  'invocation depends\n'
-                 'on which descriptor methods are defined.  A descriptor can ' 
-                 'define any\n' 
-                 'combination of "__get__()", "__set__()" and "__delete__()".  ' 
-                 'If it\n' 
+                 'on which descriptor methods are defined.  A descriptor can '
+                 'define any\n'
+                 'combination of "__get__()", "__set__()" and "__delete__()".  '
+                 'If it\n'
                  'does not define "__get__()", then accessing the attribute '
                  'will return\n'
                  'the descriptor object itself unless there is a value in the '
@@ -8931,22 +8931,22 @@ topics = {'assert': 'The "assert" statement\n'
                  'both\n'
                  '"__get__()" and "__set__()", while non-data descriptors have '
                  'just the\n'
-                 '"__get__()" method.  Data descriptors with "__get__()" and ' 
-                 '"__set__()"\n' 
-                 '(and/or "__delete__()") defined always override a ' 
-                 'redefinition in an\n' 
-                 'instance dictionary.  In contrast, non-data descriptors can ' 
-                 'be\n' 
-                 'overridden by instances.\n' 
-                 '\n'
-                 'Python methods (including those decorated with ' 
-                 '"@staticmethod" and\n' 
-                 '"@classmethod") are implemented as non-data descriptors.  ' 
-                 'Accordingly,\n' 
-                 'instances can redefine and override methods.  This allows ' 
-                 'individual\n' 
-                 'instances to acquire behaviors that differ from other ' 
-                 'instances of the\n' 
+                 '"__get__()" method.  Data descriptors with "__get__()" and '
+                 '"__set__()"\n'
+                 '(and/or "__delete__()") defined always override a '
+                 'redefinition in an\n'
+                 'instance dictionary.  In contrast, non-data descriptors can '
+                 'be\n'
+                 'overridden by instances.\n'
+                 '\n'
+                 'Python methods (including those decorated with '
+                 '"@staticmethod" and\n'
+                 '"@classmethod") are implemented as non-data descriptors.  '
+                 'Accordingly,\n'
+                 'instances can redefine and override methods.  This allows '
+                 'individual\n'
+                 'instances to acquire behaviors that differ from other '
+                 'instances of the\n'
                  'same class.\n'
                  '\n'
                  'The "property()" function is implemented as a data '
@@ -8960,12 +8960,12 @@ topics = {'assert': 'The "assert" statement\n'
                  '\n'
                  '*__slots__* allow us to explicitly declare data members '
                  '(like\n'
-                 'properties) and deny the creation of "__dict__" and ' 
+                 'properties) and deny the creation of "__dict__" and '
                  '*__weakref__*\n'
                  '(unless explicitly declared in *__slots__* or available in a '
                  'parent.)\n'
                  '\n'
-                 'The space saved over using "__dict__" can be significant. ' 
+                 'The space saved over using "__dict__" can be significant. '
                  'Attribute\n'
                  'lookup speed can be significantly improved as well.\n'
                  '\n'
@@ -8977,7 +8977,7 @@ topics = {'assert': 'The "assert" statement\n'
                  '*__slots__*\n'
                  '   reserves space for the declared variables and prevents '
                  'the\n'
-                 '   automatic creation of "__dict__" and *__weakref__* for ' 
+                 '   automatic creation of "__dict__" and *__weakref__* for '
                  'each\n'
                  '   instance.\n'
                  '\n'
@@ -8986,11 +8986,11 @@ topics = {'assert': 'The "assert" statement\n'
                  '~~~~~~~~~~~~~~~~~~~~~~~~~~\n'
                  '\n'
                  '* When inheriting from a class without *__slots__*, the '
-                 '"__dict__" and\n' 
-                 '  *__weakref__* attribute of the instances will always be ' 
-                 'accessible.\n' 
+                 '"__dict__" and\n'
+                 '  *__weakref__* attribute of the instances will always be '
+                 'accessible.\n'
                  '\n'
-                 '* Without a "__dict__" variable, instances cannot be ' 
+                 '* Without a "__dict__" variable, instances cannot be '
                  'assigned new\n'
                  '  variables not listed in the *__slots__* definition.  '
                  'Attempts to\n'
@@ -9002,40 +9002,40 @@ topics = {'assert': 'The "assert" statement\n'
                  '  declaration.\n'
                  '\n'
                  '* Without a *__weakref__* variable for each instance, '
-                 'classes defining\n' 
-                 '  *__slots__* do not support "weak references" to its ' 
-                 'instances. If\n' 
-                 '  weak reference support is needed, then add ' 
-                 '"\'__weakref__\'" to the\n' 
-                 '  sequence of strings in the *__slots__* declaration.\n' 
+                 'classes defining\n'
+                 '  *__slots__* do not support "weak references" to its '
+                 'instances. If\n'
+                 '  weak reference support is needed, then add '
+                 '"\'__weakref__\'" to the\n'
+                 '  sequence of strings in the *__slots__* declaration.\n'
                  '\n'
                  '* *__slots__* are implemented at the class level by '
                  'creating\n'
-                 '  descriptors for each variable name.  As a result, class ' 
-                 'attributes\n' 
-                 '  cannot be used to set default values for instance ' 
-                 'variables defined\n' 
-                 '  by *__slots__*; otherwise, the class attribute would ' 
-                 'overwrite the\n' 
-                 '  descriptor assignment.\n' 
+                 '  descriptors for each variable name.  As a result, class '
+                 'attributes\n'
+                 '  cannot be used to set default values for instance '
+                 'variables defined\n'
+                 '  by *__slots__*; otherwise, the class attribute would '
+                 'overwrite the\n'
+                 '  descriptor assignment.\n'
                  '\n'
                  '* The action of a *__slots__* declaration is not limited to '
-                 'the class\n' 
-                 '  where it is defined.  *__slots__* declared in parents are ' 
-                 'available\n' 
-                 '  in child classes. However, child subclasses will get a ' 
-                 '"__dict__"\n' 
-                 '  and *__weakref__* unless they also define *__slots__* ' 
-                 '(which should\n' 
-                 '  only contain names of any *additional* slots).\n' 
+                 'the class\n'
+                 '  where it is defined.  *__slots__* declared in parents are '
+                 'available\n'
+                 '  in child classes. However, child subclasses will get a '
+                 '"__dict__"\n'
+                 '  and *__weakref__* unless they also define *__slots__* '
+                 '(which should\n'
+                 '  only contain names of any *additional* slots).\n'
                  '\n'
                  '* If a class defines a slot also defined in a base class, '
-                 'the instance\n' 
-                 '  variable defined by the base class slot is inaccessible ' 
-                 '(except by\n' 
-                 '  retrieving its descriptor directly from the base class). ' 
-                 'This\n' 
-                 '  renders the meaning of the program undefined.  In the ' 
+                 'the instance\n'
+                 '  variable defined by the base class slot is inaccessible '
+                 '(except by\n'
+                 '  retrieving its descriptor directly from the base class). '
+                 'This\n'
+                 '  renders the meaning of the program undefined.  In the '
                  'future, a\n'
                  '  check may be added to prevent this.\n'
                  '\n'
@@ -9044,18 +9044,18 @@ topics = {'assert': 'The "assert" statement\n'
                  '  “variable-length” built-in types such as "int", "bytes" '
                  'and "tuple".\n'
                  '\n'
-                 '* Any non-string *iterable* may be assigned to *__slots__*.\n' 
-                 '\n'
-                 '* If a "dictionary" is used to assign *__slots__*, the ' 
-                 'dictionary keys\n' 
-                 '  will be used as the slot names. The values of the ' 
-                 'dictionary can be\n' 
-                 '  used to provide per-attribute docstrings that will be ' 
-                 'recognised by\n' 
-                 '  "inspect.getdoc()" and displayed in the output of ' 
-                 '"help()".\n' 
-                 '\n' 
-                 '* "__class__" assignment works only if both classes have the ' 
+                 '* Any non-string *iterable* may be assigned to *__slots__*.\n'
+                 '\n'
+                 '* If a "dictionary" is used to assign *__slots__*, the '
+                 'dictionary keys\n'
+                 '  will be used as the slot names. The values of the '
+                 'dictionary can be\n'
+                 '  used to provide per-attribute docstrings that will be '
+                 'recognised by\n'
+                 '  "inspect.getdoc()" and displayed in the output of '
+                 '"help()".\n'
+                 '\n'
+                 '* "__class__" assignment works only if both classes have the '
                  'same\n'
                  '  *__slots__*.\n'
                  '\n'
@@ -9067,18 +9067,18 @@ topics = {'assert': 'The "assert" statement\n'
                  'violations\n'
                  '  raise "TypeError".\n'
                  '\n'
-                 '* If an *iterator* is used for *__slots__* then a ' 
-                 '*descriptor* is\n' 
-                 '  created for each of the iterator’s values. However, the ' 
-                 '*__slots__*\n' 
-                 '  attribute will be an empty iterator.\n' 
+                 '* If an *iterator* is used for *__slots__* then a '
+                 '*descriptor* is\n'
+                 '  created for each of the iterator’s values. However, the '
+                 '*__slots__*\n'
+                 '  attribute will be an empty iterator.\n'
+                 '\n'
                  '\n'
-                 '\n' 
                  'Customizing class creation\n'
                  '==========================\n'
                  '\n'
                  'Whenever a class inherits from another class, '
-                 '"__init_subclass__()" is\n' 
+                 '"__init_subclass__()" is\n'
                  'called on that class. This way, it is possible to write '
                  'classes which\n'
                  'change the behavior of subclasses. This is closely related '
@@ -9109,7 +9109,7 @@ topics = {'assert': 'The "assert" statement\n'
                  '   in:\n'
                  '\n'
                  '      class Philosopher:\n'
-                 '          def __init_subclass__(cls, /, default_name, ' 
+                 '          def __init_subclass__(cls, /, default_name, '
                  '**kwargs):\n'
                  '              super().__init_subclass__(**kwargs)\n'
                  '              cls.default_name = default_name\n'
@@ -9122,11 +9122,11 @@ topics = {'assert': 'The "assert" statement\n'
                  'does nothing,\n'
                  '   but raises an error if it is called with any arguments.\n'
                  '\n'
-                 '   Note:\n' 
-                 '\n' 
-                 '     The metaclass hint "metaclass" is consumed by the rest ' 
-                 'of the\n' 
-                 '     type machinery, and is never passed to ' 
+                 '   Note:\n'
+                 '\n'
+                 '     The metaclass hint "metaclass" is consumed by the rest '
+                 'of the\n'
+                 '     type machinery, and is never passed to '
                  '"__init_subclass__"\n'
                  '     implementations. The actual metaclass (rather than the '
                  'explicit\n'
@@ -9170,15 +9170,15 @@ topics = {'assert': 'The "assert" statement\n'
                  'When a class definition is executed, the following steps '
                  'occur:\n'
                  '\n'
-                 '* MRO entries are resolved;\n' 
+                 '* MRO entries are resolved;\n'
                  '\n'
-                 '* the appropriate metaclass is determined;\n' 
+                 '* the appropriate metaclass is determined;\n'
                  '\n'
-                 '* the class namespace is prepared;\n' 
+                 '* the class namespace is prepared;\n'
                  '\n'
-                 '* the class body is executed;\n' 
+                 '* the class body is executed;\n'
                  '\n'
-                 '* the class object is created.\n' 
+                 '* the class object is created.\n'
                  '\n'
                  '\n'
                  'Resolving MRO entries\n'
@@ -9194,12 +9194,12 @@ topics = {'assert': 'The "assert" statement\n'
                  'tuple may\n'
                  'be empty, in such case the original base is ignored.\n'
                  '\n'
-                 'See also:\n' 
+                 'See also:\n'
+                 '\n'
+                 '  **PEP 560** - Core support for typing module and generic '
+                 'types\n'
                  '\n'
-                 '  **PEP 560** - Core support for typing module and generic ' 
-                 'types\n' 
                  '\n'
-                 '\n' 
                  'Determining the appropriate metaclass\n'
                  '-------------------------------------\n'
                  '\n'
@@ -9209,16 +9209,16 @@ topics = {'assert': 'The "assert" statement\n'
                  '\n'
                  '* if no bases and no explicit metaclass are given, then '
                  '"type()" is\n'
-                 '  used;\n' 
+                 '  used;\n'
                  '\n'
                  '* if an explicit metaclass is given and it is *not* an '
                  'instance of\n'
-                 '  "type()", then it is used directly as the metaclass;\n' 
+                 '  "type()", then it is used directly as the metaclass;\n'
                  '\n'
                  '* if an instance of "type()" is given as the explicit '
                  'metaclass, or\n'
                  '  bases are defined, then the most derived metaclass is '
-                 'used.\n' 
+                 'used.\n'
                  '\n'
                  'The most derived metaclass is selected from the explicitly '
                  'specified\n'
@@ -9244,13 +9244,13 @@ topics = {'assert': 'The "assert" statement\n'
                  'bases,\n'
                  '**kwds)" (where the additional keyword arguments, if any, '
                  'come from\n'
-                 'the class definition). The "__prepare__" method should be ' 
-                 'implemented\n' 
-                 'as a "classmethod". The namespace returned by "__prepare__" ' 
-                 'is passed\n' 
-                 'in to "__new__", but when the final class object is created ' 
-                 'the\n' 
-                 'namespace is copied into a new "dict".\n' 
+                 'the class definition). The "__prepare__" method should be '
+                 'implemented\n'
+                 'as a "classmethod". The namespace returned by "__prepare__" '
+                 'is passed\n'
+                 'in to "__new__", but when the final class object is created '
+                 'the\n'
+                 'namespace is copied into a new "dict".\n'
                  '\n'
                  'If the metaclass has no "__prepare__" attribute, then the '
                  'class\n'
@@ -9322,9 +9322,9 @@ topics = {'assert': 'The "assert" statement\n'
                  'up to the\n'
                  '"type.__new__" call in order for the class to be '
                  'initialised\n'
-                 'correctly. Failing to do so will result in a "RuntimeError" ' 
-                 'in Python\n' 
-                 '3.8.\n' 
+                 'correctly. Failing to do so will result in a "RuntimeError" '
+                 'in Python\n'
+                 '3.8.\n'
                  '\n'
                  'When using the default metaclass "type", or any metaclass '
                  'that\n'
@@ -9340,7 +9340,7 @@ topics = {'assert': 'The "assert" statement\n'
                  'with the\n'
                  '  class being defined and the assigned name of that '
                  'particular\n'
-                 '  descriptor;\n' 
+                 '  descriptor;\n'
                  '\n'
                  '* finally, the "__init_subclass__()" hook is called on the '
                  'immediate\n'
@@ -9437,180 +9437,180 @@ topics = {'assert': 'The "assert" statement\n'
                  'Emulating generic types\n'
                  '=======================\n'
                  '\n'
-                 'When using *type annotations*, it is often useful to ' 
-                 '*parameterize* a\n' 
-                 '*generic type* using Python’s square-brackets notation. For ' 
-                 'example,\n' 
-                 'the annotation "list[int]" might be used to signify a "list" ' 
-                 'in which\n' 
-                 'all the elements are of type "int".\n' 
-                 '\n'
-                 'See also:\n' 
-                 '\n' 
-                 '  **PEP 484** - Type Hints\n' 
-                 '     Introducing Python’s framework for type annotations\n' 
-                 '\n' 
-                 '  Generic Alias Types\n' 
-                 '     Documentation for objects representing parameterized ' 
-                 'generic\n' 
-                 '     classes\n' 
-                 '\n' 
-                 '  Generics, user-defined generics and "typing.Generic"\n' 
-                 '     Documentation on how to implement generic classes that ' 
-                 'can be\n' 
-                 '     parameterized at runtime and understood by static ' 
-                 'type-checkers.\n' 
-                 '\n' 
-                 'A class can *generally* only be parameterized if it defines ' 
-                 'the\n' 
-                 'special class method "__class_getitem__()".\n' 
-                 '\n' 
+                 'When using *type annotations*, it is often useful to '
+                 '*parameterize* a\n'
+                 '*generic type* using Python’s square-brackets notation. For '
+                 'example,\n'
+                 'the annotation "list[int]" might be used to signify a "list" '
+                 'in which\n'
+                 'all the elements are of type "int".\n'
+                 '\n'
+                 'See also:\n'
+                 '\n'
+                 '  **PEP 484** - Type Hints\n'
+                 '     Introducing Python’s framework for type annotations\n'
+                 '\n'
+                 '  Generic Alias Types\n'
+                 '     Documentation for objects representing parameterized '
+                 'generic\n'
+                 '     classes\n'
+                 '\n'
+                 '  Generics, user-defined generics and "typing.Generic"\n'
+                 '     Documentation on how to implement generic classes that '
+                 'can be\n'
+                 '     parameterized at runtime and understood by static '
+                 'type-checkers.\n'
+                 '\n'
+                 'A class can *generally* only be parameterized if it defines '
+                 'the\n'
+                 'special class method "__class_getitem__()".\n'
+                 '\n'
                  'classmethod object.__class_getitem__(cls, key)\n'
                  '\n'
                  '   Return an object representing the specialization of a '
                  'generic class\n'
                  '   by type arguments found in *key*.\n'
                  '\n'
-                 '   When defined on a class, "__class_getitem__()" is ' 
-                 'automatically a\n' 
-                 '   class method. As such, there is no need for it to be ' 
-                 'decorated with\n' 
-                 '   "@classmethod" when it is defined.\n' 
-                 '\n'
-                 '\n' 
-                 'The purpose of *__class_getitem__*\n' 
-                 '----------------------------------\n' 
-                 '\n' 
-                 'The purpose of "__class_getitem__()" is to allow runtime\n' 
-                 'parameterization of standard-library generic classes in ' 
-                 'order to more\n' 
-                 'easily apply *type hints* to these classes.\n' 
-                 '\n' 
-                 'To implement custom generic classes that can be ' 
-                 'parameterized at\n' 
-                 'runtime and understood by static type-checkers, users should ' 
-                 'either\n' 
-                 'inherit from a standard library class that already ' 
-                 'implements\n' 
-                 '"__class_getitem__()", or inherit from "typing.Generic", ' 
-                 'which has its\n' 
-                 'own implementation of "__class_getitem__()".\n' 
-                 '\n' 
-                 'Custom implementations of "__class_getitem__()" on classes ' 
-                 'defined\n' 
-                 'outside of the standard library may not be understood by ' 
-                 'third-party\n' 
-                 'type-checkers such as mypy. Using "__class_getitem__()" on ' 
-                 'any class\n' 
-                 'for purposes other than type hinting is discouraged.\n' 
-                 '\n' 
-                 '\n' 
-                 '*__class_getitem__* versus *__getitem__*\n' 
-                 '----------------------------------------\n' 
-                 '\n' 
-                 'Usually, the subscription of an object using square brackets ' 
-                 'will call\n' 
-                 'the "__getitem__()" instance method defined on the object’s ' 
-                 'class.\n' 
-                 'However, if the object being subscribed is itself a class, ' 
-                 'the class\n' 
-                 'method "__class_getitem__()" may be called instead.\n' 
-                 '"__class_getitem__()" should return a GenericAlias object if ' 
-                 'it is\n' 
-                 'properly defined.\n' 
-                 '\n' 
-                 'Presented with the *expression* "obj[x]", the Python ' 
-                 'interpreter\n' 
-                 'follows something like the following process to decide ' 
-                 'whether\n' 
-                 '"__getitem__()" or "__class_getitem__()" should be called:\n' 
-                 '\n' 
-                 '   from inspect import isclass\n' 
-                 '\n' 
-                 '   def subscribe(obj, x):\n' 
-                 '       """Return the result of the expression `obj[x]`"""\n' 
-                 '\n' 
-                 '       class_of_obj = type(obj)\n' 
-                 '\n' 
-                 '       # If the class of obj defines __getitem__,\n' 
-                 '       # call class_of_obj.__getitem__(obj, x)\n' 
-                 "       if hasattr(class_of_obj, '__getitem__'):\n" 
-                 '           return class_of_obj.__getitem__(obj, x)\n' 
-                 '\n' 
-                 '       # Else, if obj is a class and defines ' 
-                 '__class_getitem__,\n' 
-                 '       # call obj.__class_getitem__(x)\n' 
-                 '       elif isclass(obj) and hasattr(obj, ' 
-                 "'__class_getitem__'):\n" 
-                 '           return obj.__class_getitem__(x)\n' 
-                 '\n' 
-                 '       # Else, raise an exception\n' 
-                 '       else:\n' 
-                 '           raise TypeError(\n' 
-                 '               f"\'{class_of_obj.__name__}\' object is not ' 
-                 'subscriptable"\n' 
-                 '           )\n' 
-                 '\n' 
-                 'In Python, all classes are themselves instances of other ' 
-                 'classes. The\n' 
-                 'class of a class is known as that class’s *metaclass*, and ' 
-                 'most\n' 
-                 'classes have the "type" class as their metaclass. "type" ' 
-                 'does not\n' 
-                 'define "__getitem__()", meaning that expressions such as ' 
-                 '"list[int]",\n' 
-                 '"dict[str, float]" and "tuple[str, bytes]" all result in\n' 
-                 '"__class_getitem__()" being called:\n' 
-                 '\n' 
-                 '   >>> # list has class "type" as its metaclass, like most ' 
-                 'classes:\n' 
-                 '   >>> type(list)\n' 
-                 "   <class 'type'>\n" 
-                 '   >>> type(dict) == type(list) == type(tuple) == type(str) ' 
-                 '== type(bytes)\n' 
-                 '   True\n' 
-                 '   >>> # "list[int]" calls "list.__class_getitem__(int)"\n' 
-                 '   >>> list[int]\n' 
-                 '   list[int]\n' 
-                 '   >>> # list.__class_getitem__ returns a GenericAlias ' 
-                 'object:\n' 
-                 '   >>> type(list[int])\n' 
-                 "   <class 'types.GenericAlias'>\n" 
-                 '\n' 
-                 'However, if a class has a custom metaclass that defines\n' 
-                 '"__getitem__()", subscribing the class may result in ' 
-                 'different\n' 
-                 'behaviour. An example of this can be found in the "enum" ' 
-                 'module:\n' 
-                 '\n' 
-                 '   >>> from enum import Enum\n' 
-                 '   >>> class Menu(Enum):\n' 
-                 '   ...     """A breakfast menu"""\n' 
-                 "   ...     SPAM = 'spam'\n" 
-                 "   ...     BACON = 'bacon'\n" 
-                 '   ...\n' 
-                 '   >>> # Enum classes have a custom metaclass:\n' 
-                 '   >>> type(Menu)\n' 
-                 "   <class 'enum.EnumMeta'>\n" 
-                 '   >>> # EnumMeta defines __getitem__,\n' 
-                 '   >>> # so __class_getitem__ is not called,\n' 
-                 '   >>> # and the result is not a GenericAlias object:\n' 
-                 "   >>> Menu['SPAM']\n" 
-                 "   <Menu.SPAM: 'spam'>\n" 
-                 "   >>> type(Menu['SPAM'])\n" 
-                 "   <enum 'Menu'>\n" 
-                 '\n' 
-                 'See also:\n' 
-                 '\n'
-                 '  **PEP 560** - Core Support for typing module and generic ' 
-                 'types\n' 
-                 '     Introducing "__class_getitem__()", and outlining when ' 
-                 'a\n' 
-                 '     subscription results in "__class_getitem__()" being ' 
-                 'called\n' 
-                 '     instead of "__getitem__()"\n' 
-                 '\n'
-                 '\n' 
+                 '   When defined on a class, "__class_getitem__()" is '
+                 'automatically a\n'
+                 '   class method. As such, there is no need for it to be '
+                 'decorated with\n'
+                 '   "@classmethod" when it is defined.\n'
+                 '\n'
+                 '\n'
+                 'The purpose of *__class_getitem__*\n'
+                 '----------------------------------\n'
+                 '\n'
+                 'The purpose of "__class_getitem__()" is to allow runtime\n'
+                 'parameterization of standard-library generic classes in '
+                 'order to more\n'
+                 'easily apply *type hints* to these classes.\n'
+                 '\n'
+                 'To implement custom generic classes that can be '
+                 'parameterized at\n'
+                 'runtime and understood by static type-checkers, users should '
+                 'either\n'
+                 'inherit from a standard library class that already '
+                 'implements\n'
+                 '"__class_getitem__()", or inherit from "typing.Generic", '
+                 'which has its\n'
+                 'own implementation of "__class_getitem__()".\n'
+                 '\n'
+                 'Custom implementations of "__class_getitem__()" on classes '
+                 'defined\n'
+                 'outside of the standard library may not be understood by '
+                 'third-party\n'
+                 'type-checkers such as mypy. Using "__class_getitem__()" on '
+                 'any class\n'
+                 'for purposes other than type hinting is discouraged.\n'
+                 '\n'
+                 '\n'
+                 '*__class_getitem__* versus *__getitem__*\n'
+                 '----------------------------------------\n'
+                 '\n'
+                 'Usually, the subscription of an object using square brackets '
+                 'will call\n'
+                 'the "__getitem__()" instance method defined on the object’s '
+                 'class.\n'
+                 'However, if the object being subscribed is itself a class, '
+                 'the class\n'
+                 'method "__class_getitem__()" may be called instead.\n'
+                 '"__class_getitem__()" should return a GenericAlias object if '
+                 'it is\n'
+                 'properly defined.\n'
+                 '\n'
+                 'Presented with the *expression* "obj[x]", the Python '
+                 'interpreter\n'
+                 'follows something like the following process to decide '
+                 'whether\n'
+                 '"__getitem__()" or "__class_getitem__()" should be called:\n'
+                 '\n'
+                 '   from inspect import isclass\n'
+                 '\n'
+                 '   def subscribe(obj, x):\n'
+                 '       """Return the result of the expression `obj[x]`"""\n'
+                 '\n'
+                 '       class_of_obj = type(obj)\n'
+                 '\n'
+                 '       # If the class of obj defines __getitem__,\n'
+                 '       # call class_of_obj.__getitem__(obj, x)\n'
+                 "       if hasattr(class_of_obj, '__getitem__'):\n"
+                 '           return class_of_obj.__getitem__(obj, x)\n'
+                 '\n'
+                 '       # Else, if obj is a class and defines '
+                 '__class_getitem__,\n'
+                 '       # call obj.__class_getitem__(x)\n'
+                 '       elif isclass(obj) and hasattr(obj, '
+                 "'__class_getitem__'):\n"
+                 '           return obj.__class_getitem__(x)\n'
+                 '\n'
+                 '       # Else, raise an exception\n'
+                 '       else:\n'
+                 '           raise TypeError(\n'
+                 '               f"\'{class_of_obj.__name__}\' object is not '
+                 'subscriptable"\n'
+                 '           )\n'
+                 '\n'
+                 'In Python, all classes are themselves instances of other '
+                 'classes. The\n'
+                 'class of a class is known as that class’s *metaclass*, and '
+                 'most\n'
+                 'classes have the "type" class as their metaclass. "type" '
+                 'does not\n'
+                 'define "__getitem__()", meaning that expressions such as '
+                 '"list[int]",\n'
+                 '"dict[str, float]" and "tuple[str, bytes]" all result in\n'
+                 '"__class_getitem__()" being called:\n'
+                 '\n'
+                 '   >>> # list has class "type" as its metaclass, like most '
+                 'classes:\n'
+                 '   >>> type(list)\n'
+                 "   <class 'type'>\n"
+                 '   >>> type(dict) == type(list) == type(tuple) == type(str) '
+                 '== type(bytes)\n'
+                 '   True\n'
+                 '   >>> # "list[int]" calls "list.__class_getitem__(int)"\n'
+                 '   >>> list[int]\n'
+                 '   list[int]\n'
+                 '   >>> # list.__class_getitem__ returns a GenericAlias '
+                 'object:\n'
+                 '   >>> type(list[int])\n'
+                 "   <class 'types.GenericAlias'>\n"
+                 '\n'
+                 'However, if a class has a custom metaclass that defines\n'
+                 '"__getitem__()", subscribing the class may result in '
+                 'different\n'
+                 'behaviour. An example of this can be found in the "enum" '
+                 'module:\n'
+                 '\n'
+                 '   >>> from enum import Enum\n'
+                 '   >>> class Menu(Enum):\n'
+                 '   ...     """A breakfast menu"""\n'
+                 "   ...     SPAM = 'spam'\n"
+                 "   ...     BACON = 'bacon'\n"
+                 '   ...\n'
+                 '   >>> # Enum classes have a custom metaclass:\n'
+                 '   >>> type(Menu)\n'
+                 "   <class 'enum.EnumMeta'>\n"
+                 '   >>> # EnumMeta defines __getitem__,\n'
+                 '   >>> # so __class_getitem__ is not called,\n'
+                 '   >>> # and the result is not a GenericAlias object:\n'
+                 "   >>> Menu['SPAM']\n"
+                 "   <Menu.SPAM: 'spam'>\n"
+                 "   >>> type(Menu['SPAM'])\n"
+                 "   <enum 'Menu'>\n"
+                 '\n'
+                 'See also:\n'
+                 '\n'
+                 '  **PEP 560** - Core Support for typing module and generic '
+                 'types\n'
+                 '     Introducing "__class_getitem__()", and outlining when '
+                 'a\n'
+                 '     subscription results in "__class_getitem__()" being '
+                 'called\n'
+                 '     instead of "__getitem__()"\n'
+                 '\n'
+                 '\n'
                  'Emulating callable objects\n'
                  '==========================\n'
                  '\n'
@@ -9618,8 +9618,8 @@ topics = {'assert': 'The "assert" statement\n'
                  '\n'
                  '   Called when the instance is “called” as a function; if '
                  'this method\n'
-                 '   is defined, "x(arg1, arg2, ...)" roughly translates to\n' 
-                 '   "type(x).__call__(x, arg1, ...)".\n' 
+                 '   is defined, "x(arg1, arg2, ...)" roughly translates to\n'
+                 '   "type(x).__call__(x, arg1, ...)".\n'
                  '\n'
                  '\n'
                  'Emulating container types\n'
@@ -9627,60 +9627,60 @@ topics = {'assert': 'The "assert" statement\n'
                  '\n'
                  'The following methods can be defined to implement container '
                  'objects.\n'
-                 'Containers usually are *sequences* (such as "lists" or ' 
-                 '"tuples") or\n' 
-                 '*mappings* (like "dictionaries"), but can represent other ' 
-                 'containers\n' 
-                 'as well.  The first set of methods is used either to emulate ' 
-                 'a\n' 
-                 'sequence or to emulate a mapping; the difference is that for ' 
-                 'a\n' 
-                 'sequence, the allowable keys should be the integers *k* for ' 
-                 'which "0\n' 
-                 '<= k < N" where *N* is the length of the sequence, or ' 
-                 '"slice" objects,\n' 
-                 'which define a range of items.  It is also recommended that ' 
-                 'mappings\n' 
-                 'provide the methods "keys()", "values()", "items()", ' 
-                 '"get()",\n' 
-                 '"clear()", "setdefault()", "pop()", "popitem()", "copy()", ' 
-                 'and\n' 
-                 '"update()" behaving similar to those for Python’s standard\n' 
-                 '"dictionary" objects.  The "collections.abc" module provides ' 
-                 'a\n' 
-                 '"MutableMapping" *abstract base class* to help create those ' 
-                 'methods\n' 
-                 'from a base set of "__getitem__()", "__setitem__()", ' 
-                 '"__delitem__()",\n' 
-                 'and "keys()". Mutable sequences should provide methods ' 
-                 '"append()",\n' 
-                 '"count()", "index()", "extend()", "insert()", "pop()", ' 
-                 '"remove()",\n' 
-                 '"reverse()" and "sort()", like Python standard "list" ' 
-                 'objects.\n' 
-                 'Finally, sequence types should implement addition (meaning\n' 
-                 'concatenation) and multiplication (meaning repetition) by ' 
-                 'defining the\n' 
-                 'methods "__add__()", "__radd__()", "__iadd__()", ' 
-                 '"__mul__()",\n' 
-                 '"__rmul__()" and "__imul__()" described below; they should ' 
-                 'not define\n' 
-                 'other numerical operators.  It is recommended that both ' 
-                 'mappings and\n' 
-                 'sequences implement the "__contains__()" method to allow ' 
-                 'efficient use\n' 
-                 'of the "in" operator; for mappings, "in" should search the ' 
-                 'mapping’s\n' 
-                 'keys; for sequences, it should search through the values.  ' 
-                 'It is\n' 
-                 'further recommended that both mappings and sequences ' 
-                 'implement the\n' 
-                 '"__iter__()" method to allow efficient iteration through ' 
+                 'Containers usually are *sequences* (such as "lists" or '
+                 '"tuples") or\n'
+                 '*mappings* (like "dictionaries"), but can represent other '
+                 'containers\n'
+                 'as well.  The first set of methods is used either to emulate '
+                 'a\n'
+                 'sequence or to emulate a mapping; the difference is that for '
+                 'a\n'
+                 'sequence, the allowable keys should be the integers *k* for '
+                 'which "0\n'
+                 '<= k < N" where *N* is the length of the sequence, or '
+                 '"slice" objects,\n'
+                 'which define a range of items.  It is also recommended that '
+                 'mappings\n'
+                 'provide the methods "keys()", "values()", "items()", '
+                 '"get()",\n'
+                 '"clear()", "setdefault()", "pop()", "popitem()", "copy()", '
+                 'and\n'
+                 '"update()" behaving similar to those for Python’s standard\n'
+                 '"dictionary" objects.  The "collections.abc" module provides '
+                 'a\n'
+                 '"MutableMapping" *abstract base class* to help create those '
+                 'methods\n'
+                 'from a base set of "__getitem__()", "__setitem__()", '
+                 '"__delitem__()",\n'
+                 'and "keys()". Mutable sequences should provide methods '
+                 '"append()",\n'
+                 '"count()", "index()", "extend()", "insert()", "pop()", '
+                 '"remove()",\n'
+                 '"reverse()" and "sort()", like Python standard "list" '
+                 'objects.\n'
+                 'Finally, sequence types should implement addition (meaning\n'
+                 'concatenation) and multiplication (meaning repetition) by '
+                 'defining the\n'
+                 'methods "__add__()", "__radd__()", "__iadd__()", '
+                 '"__mul__()",\n'
+                 '"__rmul__()" and "__imul__()" described below; they should '
+                 'not define\n'
+                 'other numerical operators.  It is recommended that both '
+                 'mappings and\n'
+                 'sequences implement the "__contains__()" method to allow '
+                 'efficient use\n'
+                 'of the "in" operator; for mappings, "in" should search the '
+                 'mapping’s\n'
+                 'keys; for sequences, it should search through the values.  '
+                 'It is\n'
+                 'further recommended that both mappings and sequences '
+                 'implement the\n'
+                 '"__iter__()" method to allow efficient iteration through '
+                 'the\n'
+                 'container; for mappings, "__iter__()" should iterate through '
                  'the\n'
-                 'container; for mappings, "__iter__()" should iterate through ' 
-                 'the\n' 
-                 'object’s keys; for sequences, it should iterate through the ' 
-                 'values.\n' 
+                 'object’s keys; for sequences, it should iterate through the '
+                 'values.\n'
                  '\n'
                  'object.__len__(self)\n'
                  '\n'
@@ -9709,23 +9709,23 @@ topics = {'assert': 'The "assert" statement\n'
                  '   estimated length for the object (which may be greater or '
                  'less than\n'
                  '   the actual length). The length must be an integer ">=" 0. '
-                 'The\n' 
-                 '   return value may also be "NotImplemented", which is ' 
-                 'treated the\n' 
-                 '   same as if the "__length_hint__" method didn’t exist at ' 
-                 'all. This\n' 
+                 'The\n'
+                 '   return value may also be "NotImplemented", which is '
+                 'treated the\n'
+                 '   same as if the "__length_hint__" method didn’t exist at '
+                 'all. This\n'
                  '   method is purely an optimization and is never required '
                  'for\n'
                  '   correctness.\n'
                  '\n'
                  '   New in version 3.4.\n'
                  '\n'
-                 'Note:\n' 
+                 'Note:\n'
+                 '\n'
+                 '  Slicing is done exclusively with the following three '
+                 'methods.  A\n'
+                 '  call like\n'
                  '\n'
-                 '  Slicing is done exclusively with the following three ' 
-                 'methods.  A\n' 
-                 '  call like\n' 
-                 '\n' 
                  '     a[1:2] = b\n'
                  '\n'
                  '  is translated to\n'
@@ -9738,40 +9738,40 @@ topics = {'assert': 'The "assert" statement\n'
                  'object.__getitem__(self, key)\n'
                  '\n'
                  '   Called to implement evaluation of "self[key]". For '
-                 '*sequence*\n' 
-                 '   types, the accepted keys should be integers and slice ' 
-                 'objects.\n' 
-                 '   Note that the special interpretation of negative indexes ' 
-                 '(if the\n' 
-                 '   class wishes to emulate a *sequence* type) is up to the\n' 
-                 '   "__getitem__()" method. If *key* is of an inappropriate ' 
-                 'type,\n' 
-                 '   "TypeError" may be raised; if of a value outside the set ' 
-                 'of indexes\n' 
-                 '   for the sequence (after any special interpretation of ' 
-                 'negative\n' 
-                 '   values), "IndexError" should be raised. For *mapping* ' 
-                 'types, if\n' 
-                 '   *key* is missing (not in the container), "KeyError" ' 
+                 '*sequence*\n'
+                 '   types, the accepted keys should be integers and slice '
+                 'objects.\n'
+                 '   Note that the special interpretation of negative indexes '
+                 '(if the\n'
+                 '   class wishes to emulate a *sequence* type) is up to the\n'
+                 '   "__getitem__()" method. If *key* is of an inappropriate '
+                 'type,\n'
+                 '   "TypeError" may be raised; if of a value outside the set '
+                 'of indexes\n'
+                 '   for the sequence (after any special interpretation of '
+                 'negative\n'
+                 '   values), "IndexError" should be raised. For *mapping* '
+                 'types, if\n'
+                 '   *key* is missing (not in the container), "KeyError" '
                  'should be\n'
-                 '   raised.\n' 
+                 '   raised.\n'
+                 '\n'
+                 '   Note:\n'
                  '\n'
-                 '   Note:\n' 
-                 '\n' 
-                 '     "for" loops expect that an "IndexError" will be raised ' 
-                 'for\n' 
+                 '     "for" loops expect that an "IndexError" will be raised '
+                 'for\n'
                  '     illegal indexes to allow proper detection of the end of '
                  'the\n'
                  '     sequence.\n'
                  '\n'
-                 '   Note:\n' 
-                 '\n' 
-                 '     When subscripting a *class*, the special class method\n' 
-                 '     "__class_getitem__()" may be called instead of ' 
-                 '"__getitem__()".\n' 
-                 '     See __class_getitem__ versus __getitem__ for more ' 
-                 'details.\n' 
-                 '\n' 
+                 '   Note:\n'
+                 '\n'
+                 '     When subscripting a *class*, the special class method\n'
+                 '     "__class_getitem__()" may be called instead of '
+                 '"__getitem__()".\n'
+                 '     See __class_getitem__ versus __getitem__ for more '
+                 'details.\n'
+                 '\n'
                  'object.__setitem__(self, key, value)\n'
                  '\n'
                  '   Called to implement assignment to "self[key]".  Same note '
@@ -9844,12 +9844,12 @@ topics = {'assert': 'The "assert" statement\n'
                  '\n'
                  'The membership test operators ("in" and "not in") are '
                  'normally\n'
-                 'implemented as an iteration through a container. However, ' 
+                 'implemented as an iteration through a container. However, '
                  'container\n'
                  'objects can supply the following special method with a more '
                  'efficient\n'
-                 'implementation, which also does not require the object be ' 
-                 'iterable.\n' 
+                 'implementation, which also does not require the object be '
+                 'iterable.\n'
                  '\n'
                  'object.__contains__(self, item)\n'
                  '\n'
@@ -9928,7 +9928,7 @@ topics = {'assert': 'The "assert" statement\n'
                  'object.__rfloordiv__(self, other)\n'
                  'object.__rmod__(self, other)\n'
                  'object.__rdivmod__(self, other)\n'
-                 'object.__rpow__(self, other[, modulo])\n' 
+                 'object.__rpow__(self, other[, modulo])\n'
                  'object.__rlshift__(self, other)\n'
                  'object.__rrshift__(self, other)\n'
                  'object.__rand__(self, other)\n'
@@ -9957,19 +9957,19 @@ topics = {'assert': 'The "assert" statement\n'
                  '"__rpow__()" (the\n'
                  '   coercion rules would become too complicated).\n'
                  '\n'
-                 '   Note:\n' 
-                 '\n'
-                 '     If the right operand’s type is a subclass of the left ' 
-                 'operand’s\n' 
-                 '     type and that subclass provides a different ' 
-                 'implementation of the\n' 
-                 '     reflected method for the operation, this method will be ' 
-                 'called\n' 
-                 '     before the left operand’s non-reflected method. This ' 
-                 'behavior\n' 
-                 '     allows subclasses to override their ancestors’ ' 
-                 'operations.\n' 
-                 '\n' 
+                 '   Note:\n'
+                 '\n'
+                 '     If the right operand’s type is a subclass of the left '
+                 'operand’s\n'
+                 '     type and that subclass provides a different '
+                 'implementation of the\n'
+                 '     reflected method for the operation, this method will be '
+                 'called\n'
+                 '     before the left operand’s non-reflected method. This '
+                 'behavior\n'
+                 '     allows subclasses to override their ancestors’ '
+                 'operations.\n'
+                 '\n'
                  'object.__iadd__(self, other)\n'
                  'object.__isub__(self, other)\n'
                  'object.__imul__(self, other)\n'
@@ -10012,16 +10012,16 @@ topics = {'assert': 'The "assert" statement\n'
                  'the data\n'
                  '   model.\n'
                  '\n'
-                 '   Note:\n' 
-                 '\n' 
-                 '     Due to a bug in the dispatching mechanism for "**=", a ' 
-                 'class that\n' 
-                 '     defines "__ipow__()" but returns "NotImplemented" would ' 
-                 'fail to\n' 
-                 '     fall back to "x.__pow__(y)" and "y.__rpow__(x)". This ' 
-                 'bug is\n' 
-                 '     fixed in Python 3.10.\n' 
-                 '\n' 
+                 '   Note:\n'
+                 '\n'
+                 '     Due to a bug in the dispatching mechanism for "**=", a '
+                 'class that\n'
+                 '     defines "__ipow__()" but returns "NotImplemented" would '
+                 'fail to\n'
+                 '     fall back to "x.__pow__(y)" and "y.__rpow__(x)". This '
+                 'bug is\n'
+                 '     fixed in Python 3.10.\n'
+                 '\n'
                  'object.__neg__(self)\n'
                  'object.__pos__(self)\n'
                  'object.__abs__(self)\n'
@@ -10052,11 +10052,11 @@ topics = {'assert': 'The "assert" statement\n'
                  'numeric\n'
                  '   object is an integer type.  Must return an integer.\n'
                  '\n'
-                 '   If "__int__()", "__float__()" and "__complex__()" are not ' 
-                 'defined\n' 
-                 '   then corresponding built-in functions "int()", "float()" ' 
-                 'and\n' 
-                 '   "complex()" fall back to "__index__()".\n' 
+                 '   If "__int__()", "__float__()" and "__complex__()" are not '
+                 'defined\n'
+                 '   then corresponding built-in functions "int()", "float()" '
+                 'and\n'
+                 '   "complex()" fall back to "__index__()".\n'
                  '\n'
                  'object.__round__(self[, ndigits])\n'
                  'object.__trunc__(self)\n'
@@ -10072,9 +10072,9 @@ topics = {'assert': 'The "assert" statement\n'
                  '   of the object truncated to an "Integral" (typically an '
                  '"int").\n'
                  '\n'
-                 '   The built-in function "int()" falls back to "__trunc__()" ' 
-                 'if\n' 
-                 '   neither "__int__()" nor "__index__()" is defined.\n' 
+                 '   The built-in function "int()" falls back to "__trunc__()" '
+                 'if\n'
+                 '   neither "__int__()" nor "__index__()" is defined.\n'
                  '\n'
                  '\n'
                  'With Statement Context Managers\n'
@@ -10262,14 +10262,14 @@ topics = {'assert': 'The "assert" statement\n'
                    'capitalized\n'
                    '   and the rest lowercased.\n'
                    '\n'
-                   '   Changed in version 3.8: The first character is now put ' 
-                   'into\n' 
-                   '   titlecase rather than uppercase. This means that ' 
-                   'characters like\n' 
-                   '   digraphs will only have their first letter capitalized, ' 
-                   'instead of\n' 
-                   '   the full character.\n' 
-                   '\n' 
+                   '   Changed in version 3.8: The first character is now put '
+                   'into\n'
+                   '   titlecase rather than uppercase. This means that '
+                   'characters like\n'
+                   '   digraphs will only have their first letter capitalized, '
+                   'instead of\n'
+                   '   the full character.\n'
+                   '\n'
                    'str.casefold()\n'
                    '\n'
                    '   Return a casefolded copy of the string. Casefolded '
@@ -10310,7 +10310,7 @@ topics = {'assert': 'The "assert" statement\n'
                    '*start* and\n'
                    '   *end* are interpreted as in slice notation.\n'
                    '\n'
-                   'str.encode(encoding="utf-8", errors="strict")\n' 
+                   'str.encode(encoding="utf-8", errors="strict")\n'
                    '\n'
                    '   Return an encoded version of the string as a bytes '
                    'object. Default\n'
@@ -10328,20 +10328,20 @@ topics = {'assert': 'The "assert" statement\n'
                    'For a list\n'
                    '   of possible encodings, see section Standard Encodings.\n'
                    '\n'
-                   '   By default, the *errors* argument is not checked for ' 
-                   'best\n' 
-                   '   performances, but only used at the first encoding ' 
-                   'error. Enable the\n' 
-                   '   Python Development Mode, or use a debug build to check ' 
-                   '*errors*.\n' 
-                   '\n' 
+                   '   By default, the *errors* argument is not checked for '
+                   'best\n'
+                   '   performances, but only used at the first encoding '
+                   'error. Enable the\n'
+                   '   Python Development Mode, or use a debug build to check '
+                   '*errors*.\n'
+                   '\n'
                    '   Changed in version 3.1: Support for keyword arguments '
                    'added.\n'
                    '\n'
-                   '   Changed in version 3.9: The *errors* is now checked in ' 
-                   'development\n' 
-                   '   mode and in debug mode.\n' 
-                   '\n' 
+                   '   Changed in version 3.9: The *errors* is now checked in '
+                   'development\n'
+                   '   mode and in debug mode.\n'
+                   '\n'
                    'str.endswith(suffix[, start[, end]])\n'
                    '\n'
                    '   Return "True" if the string ends with the specified '
@@ -10396,14 +10396,14 @@ topics = {'assert': 'The "assert" statement\n'
                    '"-1" if\n'
                    '   *sub* is not found.\n'
                    '\n'
-                   '   Note:\n' 
+                   '   Note:\n'
+                   '\n'
+                   '     The "find()" method should be used only if you need '
+                   'to know the\n'
+                   '     position of *sub*.  To check if *sub* is a substring '
+                   'or not, use\n'
+                   '     the "in" operator:\n'
                    '\n'
-                   '     The "find()" method should be used only if you need ' 
-                   'to know the\n' 
-                   '     position of *sub*.  To check if *sub* is a substring ' 
-                   'or not, use\n' 
-                   '     the "in" operator:\n' 
-                   '\n' 
                    "        >>> 'Py' in 'Python'\n"
                    '        True\n'
                    '\n'
@@ -10431,9 +10431,9 @@ topics = {'assert': 'The "assert" statement\n'
                    '   formatting options that can be specified in format '
                    'strings.\n'
                    '\n'
-                   '   Note:\n' 
-                   '\n' 
-                   '     When formatting a number ("int", "float", "complex",\n' 
+                   '   Note:\n'
+                   '\n'
+                   '     When formatting a number ("int", "float", "complex",\n'
                    '     "decimal.Decimal" and subclasses) with the "n" type '
                    '(ex:\n'
                    '     "\'{:n}\'.format(1234)"), the function temporarily '
@@ -10480,20 +10480,20 @@ topics = {'assert': 'The "assert" statement\n'
                    '\n'
                    'str.isalnum()\n'
                    '\n'
-                   '   Return "True" if all characters in the string are ' 
+                   '   Return "True" if all characters in the string are '
                    'alphanumeric and\n'
-                   '   there is at least one character, "False" otherwise.  A ' 
-                   'character\n' 
-                   '   "c" is alphanumeric if one of the following returns ' 
+                   '   there is at least one character, "False" otherwise.  A '
+                   'character\n'
+                   '   "c" is alphanumeric if one of the following returns '
                    '"True":\n'
                    '   "c.isalpha()", "c.isdecimal()", "c.isdigit()", or '
                    '"c.isnumeric()".\n'
                    '\n'
                    'str.isalpha()\n'
                    '\n'
-                   '   Return "True" if all characters in the string are ' 
+                   '   Return "True" if all characters in the string are '
                    'alphabetic and\n'
-                   '   there is at least one character, "False" otherwise.  ' 
+                   '   there is at least one character, "False" otherwise.  '
                    'Alphabetic\n'
                    '   characters are those characters defined in the Unicode '
                    'character\n'
@@ -10507,91 +10507,91 @@ topics = {'assert': 'The "assert" statement\n'
                    '\n'
                    'str.isascii()\n'
                    '\n'
-                   '   Return "True" if the string is empty or all characters ' 
-                   'in the\n' 
-                   '   string are ASCII, "False" otherwise. ASCII characters ' 
-                   'have code\n' 
-                   '   points in the range U+0000-U+007F.\n' 
+                   '   Return "True" if the string is empty or all characters '
+                   'in the\n'
+                   '   string are ASCII, "False" otherwise. ASCII characters '
+                   'have code\n'
+                   '   points in the range U+0000-U+007F.\n'
                    '\n'
                    '   New in version 3.7.\n'
                    '\n'
                    'str.isdecimal()\n'
                    '\n'
-                   '   Return "True" if all characters in the string are ' 
-                   'decimal\n' 
-                   '   characters and there is at least one character, "False" ' 
-                   'otherwise.\n' 
-                   '   Decimal characters are those that can be used to form ' 
-                   'numbers in\n' 
-                   '   base 10, e.g. U+0660, ARABIC-INDIC DIGIT ZERO.  ' 
-                   'Formally a decimal\n' 
-                   '   character is a character in the Unicode General ' 
-                   'Category “Nd”.\n' 
+                   '   Return "True" if all characters in the string are '
+                   'decimal\n'
+                   '   characters and there is at least one character, "False" '
+                   'otherwise.\n'
+                   '   Decimal characters are those that can be used to form '
+                   'numbers in\n'
+                   '   base 10, e.g. U+0660, ARABIC-INDIC DIGIT ZERO.  '
+                   'Formally a decimal\n'
+                   '   character is a character in the Unicode General '
+                   'Category “Nd”.\n'
                    '\n'
                    'str.isdigit()\n'
                    '\n'
-                   '   Return "True" if all characters in the string are ' 
-                   'digits and there\n' 
-                   '   is at least one character, "False" otherwise.  Digits ' 
-                   'include\n' 
-                   '   decimal characters and digits that need special ' 
-                   'handling, such as\n' 
-                   '   the compatibility superscript digits. This covers ' 
-                   'digits which\n' 
-                   '   cannot be used to form numbers in base 10, like the ' 
-                   'Kharosthi\n' 
-                   '   numbers.  Formally, a digit is a character that has the ' 
-                   'property\n' 
-                   '   value Numeric_Type=Digit or Numeric_Type=Decimal.\n' 
+                   '   Return "True" if all characters in the string are '
+                   'digits and there\n'
+                   '   is at least one character, "False" otherwise.  Digits '
+                   'include\n'
+                   '   decimal characters and digits that need special '
+                   'handling, such as\n'
+                   '   the compatibility superscript digits. This covers '
+                   'digits which\n'
+                   '   cannot be used to form numbers in base 10, like the '
+                   'Kharosthi\n'
+                   '   numbers.  Formally, a digit is a character that has the '
+                   'property\n'
+                   '   value Numeric_Type=Digit or Numeric_Type=Decimal.\n'
                    '\n'
                    'str.isidentifier()\n'
                    '\n'
-                   '   Return "True" if the string is a valid identifier ' 
+                   '   Return "True" if the string is a valid identifier '
                    'according to the\n'
                    '   language definition, section Identifiers and keywords.\n'
                    '\n'
-                   '   Call "keyword.iskeyword()" to test whether string "s" ' 
-                   'is a reserved\n' 
-                   '   identifier, such as "def" and "class".\n' 
-                   '\n'
-                   '   Example:\n' 
-                   '\n' 
-                   '      >>> from keyword import iskeyword\n' 
-                   '\n' 
-                   "      >>> 'hello'.isidentifier(), iskeyword('hello')\n" 
-                   '      (True, False)\n' 
-                   "      >>> 'def'.isidentifier(), iskeyword('def')\n" 
-                   '      (True, True)\n' 
-                   '\n' 
+                   '   Call "keyword.iskeyword()" to test whether string "s" '
+                   'is a reserved\n'
+                   '   identifier, such as "def" and "class".\n'
+                   '\n'
+                   '   Example:\n'
+                   '\n'
+                   '      >>> from keyword import iskeyword\n'
+                   '\n'
+                   "      >>> 'hello'.isidentifier(), iskeyword('hello')\n"
+                   '      (True, False)\n'
+                   "      >>> 'def'.isidentifier(), iskeyword('def')\n"
+                   '      (True, True)\n'
+                   '\n'
                    'str.islower()\n'
                    '\n'
-                   '   Return "True" if all cased characters [4] in the string ' 
-                   'are\n' 
-                   '   lowercase and there is at least one cased character, ' 
-                   '"False"\n' 
-                   '   otherwise.\n' 
+                   '   Return "True" if all cased characters [4] in the string '
+                   'are\n'
+                   '   lowercase and there is at least one cased character, '
+                   '"False"\n'
+                   '   otherwise.\n'
                    '\n'
                    'str.isnumeric()\n'
                    '\n'
-                   '   Return "True" if all characters in the string are ' 
-                   'numeric\n' 
-                   '   characters, and there is at least one character, ' 
-                   '"False" otherwise.\n' 
-                   '   Numeric characters include digit characters, and all ' 
-                   'characters\n' 
-                   '   that have the Unicode numeric value property, e.g. ' 
-                   'U+2155, VULGAR\n' 
-                   '   FRACTION ONE FIFTH.  Formally, numeric characters are ' 
-                   'those with\n' 
-                   '   the property value Numeric_Type=Digit, ' 
-                   'Numeric_Type=Decimal or\n' 
+                   '   Return "True" if all characters in the string are '
+                   'numeric\n'
+                   '   characters, and there is at least one character, '
+                   '"False" otherwise.\n'
+                   '   Numeric characters include digit characters, and all '
+                   'characters\n'
+                   '   that have the Unicode numeric value property, e.g. '
+                   'U+2155, VULGAR\n'
+                   '   FRACTION ONE FIFTH.  Formally, numeric characters are '
+                   'those with\n'
+                   '   the property value Numeric_Type=Digit, '
+                   'Numeric_Type=Decimal or\n'
                    '   Numeric_Type=Numeric.\n'
                    '\n'
                    'str.isprintable()\n'
                    '\n'
-                   '   Return "True" if all characters in the string are ' 
+                   '   Return "True" if all characters in the string are '
                    'printable or the\n'
-                   '   string is empty, "False" otherwise.  Nonprintable ' 
+                   '   string is empty, "False" otherwise.  Nonprintable '
                    'characters are\n'
                    '   those characters defined in the Unicode character '
                    'database as\n'
@@ -10607,46 +10607,46 @@ topics = {'assert': 'The "assert" statement\n'
                    '\n'
                    'str.isspace()\n'
                    '\n'
-                   '   Return "True" if there are only whitespace characters ' 
-                   'in the string\n' 
-                   '   and there is at least one character, "False" ' 
-                   'otherwise.\n' 
-                   '\n'
-                   '   A character is *whitespace* if in the Unicode character ' 
-                   'database\n' 
-                   '   (see "unicodedata"), either its general category is ' 
-                   '"Zs"\n' 
-                   '   (“Separator, space”), or its bidirectional class is one ' 
-                   'of "WS",\n' 
-                   '   "B", or "S".\n' 
-                   '\n' 
+                   '   Return "True" if there are only whitespace characters '
+                   'in the string\n'
+                   '   and there is at least one character, "False" '
+                   'otherwise.\n'
+                   '\n'
+                   '   A character is *whitespace* if in the Unicode character '
+                   'database\n'
+                   '   (see "unicodedata"), either its general category is '
+                   '"Zs"\n'
+                   '   (“Separator, space”), or its bidirectional class is one '
+                   'of "WS",\n'
+                   '   "B", or "S".\n'
+                   '\n'
                    'str.istitle()\n'
                    '\n'
-                   '   Return "True" if the string is a titlecased string and ' 
+                   '   Return "True" if the string is a titlecased string and '
                    'there is at\n'
                    '   least one character, for example uppercase characters '
                    'may only\n'
                    '   follow uncased characters and lowercase characters only '
                    'cased ones.\n'
-                   '   Return "False" otherwise.\n' 
+                   '   Return "False" otherwise.\n'
                    '\n'
                    'str.isupper()\n'
                    '\n'
-                   '   Return "True" if all cased characters [4] in the string ' 
-                   'are\n' 
-                   '   uppercase and there is at least one cased character, ' 
-                   '"False"\n' 
-                   '   otherwise.\n' 
-                   '\n'
-                   "   >>> 'BANANA'.isupper()\n" 
-                   '   True\n' 
-                   "   >>> 'banana'.isupper()\n" 
-                   '   False\n' 
-                   "   >>> 'baNana'.isupper()\n" 
-                   '   False\n' 
-                   "   >>> ' '.isupper()\n" 
-                   '   False\n' 
-                   '\n' 
+                   '   Return "True" if all cased characters [4] in the string '
+                   'are\n'
+                   '   uppercase and there is at least one cased character, '
+                   '"False"\n'
+                   '   otherwise.\n'
+                   '\n'
+                   "   >>> 'BANANA'.isupper()\n"
+                   '   True\n'
+                   "   >>> 'banana'.isupper()\n"
+                   '   False\n'
+                   "   >>> 'baNana'.isupper()\n"
+                   '   False\n'
+                   "   >>> ' '.isupper()\n"
+                   '   False\n'
+                   '\n'
                    'str.join(iterable)\n'
                    '\n'
                    '   Return a string which is the concatenation of the '
@@ -10695,16 +10695,16 @@ topics = {'assert': 'The "assert" statement\n'
                    "      >>> 'www.example.com'.lstrip('cmowz.')\n"
                    "      'example.com'\n"
                    '\n'
-                   '   See "str.removeprefix()" for a method that will remove ' 
-                   'a single\n' 
-                   '   prefix string rather than all of a set of characters.  ' 
-                   'For example:\n' 
-                   '\n' 
-                   "      >>> 'Arthur: three!'.lstrip('Arthur: ')\n" 
-                   "      'ee!'\n" 
-                   "      >>> 'Arthur: three!'.removeprefix('Arthur: ')\n" 
-                   "      'three!'\n" 
-                   '\n' 
+                   '   See "str.removeprefix()" for a method that will remove '
+                   'a single\n'
+                   '   prefix string rather than all of a set of characters.  '
+                   'For example:\n'
+                   '\n'
+                   "      >>> 'Arthur: three!'.lstrip('Arthur: ')\n"
+                   "      'ee!'\n"
+                   "      >>> 'Arthur: three!'.removeprefix('Arthur: ')\n"
+                   "      'three!'\n"
+                   '\n'
                    'static str.maketrans(x[, y[, z]])\n'
                    '\n'
                    '   This static method returns a translation table usable '
@@ -10741,35 +10741,35 @@ topics = {'assert': 'The "assert" statement\n'
                    'followed by\n'
                    '   two empty strings.\n'
                    '\n'
-                   'str.removeprefix(prefix, /)\n' 
-                   '\n' 
-                   '   If the string starts with the *prefix* string, return\n' 
-                   '   "string[len(prefix):]". Otherwise, return a copy of the ' 
-                   'original\n' 
-                   '   string:\n' 
-                   '\n' 
-                   "      >>> 'TestHook'.removeprefix('Test')\n" 
-                   "      'Hook'\n" 
-                   "      >>> 'BaseTestCase'.removeprefix('Test')\n" 
-                   "      'BaseTestCase'\n" 
-                   '\n' 
-                   '   New in version 3.9.\n' 
-                   '\n' 
-                   'str.removesuffix(suffix, /)\n' 
-                   '\n' 
-                   '   If the string ends with the *suffix* string and that ' 
-                   '*suffix* is\n' 
-                   '   not empty, return "string[:-len(suffix)]". Otherwise, ' 
-                   'return a copy\n' 
-                   '   of the original string:\n' 
-                   '\n' 
-                   "      >>> 'MiscTests'.removesuffix('Tests')\n" 
-                   "      'Misc'\n" 
-                   "      >>> 'TmpDirMixin'.removesuffix('Tests')\n" 
-                   "      'TmpDirMixin'\n" 
-                   '\n' 
-                   '   New in version 3.9.\n' 
-                   '\n' 
+                   'str.removeprefix(prefix, /)\n'
+                   '\n'
+                   '   If the string starts with the *prefix* string, return\n'
+                   '   "string[len(prefix):]". Otherwise, return a copy of the '
+                   'original\n'
+                   '   string:\n'
+                   '\n'
+                   "      >>> 'TestHook'.removeprefix('Test')\n"
+                   "      'Hook'\n"
+                   "      >>> 'BaseTestCase'.removeprefix('Test')\n"
+                   "      'BaseTestCase'\n"
+                   '\n'
+                   '   New in version 3.9.\n'
+                   '\n'
+                   'str.removesuffix(suffix, /)\n'
+                   '\n'
+                   '   If the string ends with the *suffix* string and that '
+                   '*suffix* is\n'
+                   '   not empty, return "string[:-len(suffix)]". Otherwise, '
+                   'return a copy\n'
+                   '   of the original string:\n'
+                   '\n'
+                   "      >>> 'MiscTests'.removesuffix('Tests')\n"
+                   "      'Misc'\n"
+                   "      >>> 'TmpDirMixin'.removesuffix('Tests')\n"
+                   "      'TmpDirMixin'\n"
+                   '\n'
+                   '   New in version 3.9.\n'
+                   '\n'
                    'str.replace(old, new[, count])\n'
                    '\n'
                    '   Return a copy of the string with all occurrences of '
@@ -10816,7 +10816,7 @@ topics = {'assert': 'The "assert" statement\n'
                    'followed by\n'
                    '   the string itself.\n'
                    '\n'
-                   'str.rsplit(sep=None, maxsplit=-1)\n' 
+                   'str.rsplit(sep=None, maxsplit=-1)\n'
                    '\n'
                    '   Return a list of the words in the string, using *sep* '
                    'as the\n'
@@ -10847,17 +10847,17 @@ topics = {'assert': 'The "assert" statement\n'
                    "      >>> 'mississippi'.rstrip('ipz')\n"
                    "      'mississ'\n"
                    '\n'
-                   '   See "str.removesuffix()" for a method that will remove ' 
-                   'a single\n' 
-                   '   suffix string rather than all of a set of characters.  ' 
-                   'For example:\n' 
-                   '\n' 
-                   "      >>> 'Monty Python'.rstrip(' Python')\n" 
-                   "      'M'\n" 
-                   "      >>> 'Monty Python'.removesuffix(' Python')\n" 
-                   "      'Monty'\n" 
-                   '\n' 
-                   'str.split(sep=None, maxsplit=-1)\n' 
+                   '   See "str.removesuffix()" for a method that will remove '
+                   'a single\n'
+                   '   suffix string rather than all of a set of characters.  '
+                   'For example:\n'
+                   '\n'
+                   "      >>> 'Monty Python'.rstrip(' Python')\n"
+                   "      'M'\n"
+                   "      >>> 'Monty Python'.removesuffix(' Python')\n"
+                   "      'Monty'\n"
+                   '\n'
+                   'str.split(sep=None, maxsplit=-1)\n'
                    '\n'
                    '   Return a list of the words in the string, using *sep* '
                    'as the\n'
@@ -10912,7 +10912,7 @@ topics = {'assert': 'The "assert" statement\n'
                    "      >>> '   1   2   3   '.split()\n"
                    "      ['1', '2', '3']\n"
                    '\n'
-                   'str.splitlines(keepends=False)\n' 
+                   'str.splitlines(keepends=False)\n'
                    '\n'
                    '   Return a list of the lines in the string, breaking at '
                    'line\n'
@@ -10930,7 +10930,7 @@ topics = {'assert': 'The "assert" statement\n'
                    '   | Representation          | '
                    'Description                   |\n'
                    '   '
-                   '|=========================|===============================|\n' 
+                   '|=========================|===============================|\n'
                    '   | "\\n"                    | Line '
                    'Feed                     |\n'
                    '   '
@@ -11092,7 +11092,7 @@ topics = {'assert': 'The "assert" statement\n'
                    '      >>> def titlecase(s):\n'
                    '      ...     return re.sub(r"[A-Za-z]+(\'[A-Za-z]+)?",\n'
                    '      ...                   lambda mo: '
-                   'mo.group(0).capitalize(),\n' 
+                   'mo.group(0).capitalize(),\n'
                    '      ...                   s)\n'
                    '      ...\n'
                    '      >>> titlecase("they\'re bill\'s friends.")\n'
@@ -11269,7 +11269,7 @@ topics = {'assert': 'The "assert" statement\n'
             '+-------------------+-----------------------------------+---------+\n'
             '| Escape Sequence   | Meaning                           | Notes   '
             '|\n'
-            '|===================|===================================|=========|\n' 
+            '|===================|===================================|=========|\n'
             '| "\\newline"        | Backslash and newline ignored     '
             '|         |\n'
             '+-------------------+-----------------------------------+---------+\n'
@@ -11315,7 +11315,7 @@ topics = {'assert': 'The "assert" statement\n'
             '+-------------------+-----------------------------------+---------+\n'
             '| Escape Sequence   | Meaning                           | Notes   '
             '|\n'
-            '|===================|===================================|=========|\n' 
+            '|===================|===================================|=========|\n'
             '| "\\N{name}"        | Character named *name* in the     | '
             '(4)     |\n'
             '|                   | Unicode database                  |         '
@@ -11338,20 +11338,20 @@ topics = {'assert': 'The "assert" statement\n'
             '\n'
             '2. Unlike in Standard C, exactly two hex digits are required.\n'
             '\n'
-            '3. In a bytes literal, hexadecimal and octal escapes denote the ' 
-            'byte\n' 
-            '   with the given value. In a string literal, these escapes ' 
-            'denote a\n' 
-            '   Unicode character with the given value.\n' 
+            '3. In a bytes literal, hexadecimal and octal escapes denote the '
+            'byte\n'
+            '   with the given value. In a string literal, these escapes '
+            'denote a\n'
+            '   Unicode character with the given value.\n'
             '\n'
             '4. Changed in version 3.3: Support for name aliases [1] has been\n'
             '   added.\n'
             '\n'
             '5. Exactly four hex digits are required.\n'
             '\n'
-            '6. Any Unicode character can be encoded this way.  Exactly eight ' 
-            'hex\n' 
-            '   digits are required.\n' 
+            '6. Any Unicode character can be encoded this way.  Exactly eight '
+            'hex\n'
+            '   digits are required.\n'
             '\n'
             'Unlike Standard C, all unrecognized escape sequences are left in '
             'the\n'
@@ -11369,9 +11369,9 @@ topics = {'assert': 'The "assert" statement\n'
             '\n'
             '   Changed in version 3.6: Unrecognized escape sequences produce '
             'a\n'
-            '   "DeprecationWarning".  In a future Python version they will be ' 
-            'a\n' 
-            '   "SyntaxWarning" and eventually a "SyntaxError".\n' 
+            '   "DeprecationWarning".  In a future Python version they will be '
+            'a\n'
+            '   "SyntaxWarning" and eventually a "SyntaxError".\n'
             '\n'
             'Even in a raw literal, quotes can be escaped with a backslash, '
             'but the\n'
@@ -11393,10 +11393,10 @@ topics = {'assert': 'The "assert" statement\n'
  'subscriptions': 'Subscriptions\n'
                   '*************\n'
                   '\n'
-                  'Subscription of a sequence (string, tuple or list) or ' 
-                  'mapping\n' 
-                  '(dictionary) object usually selects an item from the ' 
-                  'collection:\n' 
+                  'Subscription of a sequence (string, tuple or list) or '
+                  'mapping\n'
+                  '(dictionary) object usually selects an item from the '
+                  'collection:\n'
                   '\n'
                   '   subscription ::= primary "[" expression_list "]"\n'
                   '\n'
@@ -11447,13 +11447,13 @@ topics = {'assert': 'The "assert" statement\n'
                   '\n'
                   'A string’s items are characters.  A character is not a '
                   'separate data\n'
-                  'type but a string of exactly one character.\n' 
-                  '\n' 
-                  'Subscription of certain *classes* or *types* creates a ' 
-                  'generic alias.\n' 
-                  'In this case, user-defined classes can support subscription ' 
-                  'by\n' 
-                  'providing a "__class_getitem__()" classmethod.\n', 
+                  'type but a string of exactly one character.\n'
+                  '\n'
+                  'Subscription of certain *classes* or *types* creates a '
+                  'generic alias.\n'
+                  'In this case, user-defined classes can support subscription '
+                  'by\n'
+                  'providing a "__class_getitem__()" classmethod.\n',
  'truth': 'Truth Value Testing\n'
           '*******************\n'
           '\n'
@@ -11511,8 +11511,8 @@ topics = {'assert': 'The "assert" statement\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 that is the class or a base\n' 
-        'class of the exception object.\n' 
+        'object, or a tuple containing an item that is the class or a base\n'
+        'class of the exception object.\n'
         '\n'
         'If no except clause matches the exception, the search for an '
         'exception\n'
@@ -11590,9 +11590,9 @@ topics = {'assert': 'The "assert" statement\n'
         'clause.  If the "finally" clause raises another exception, the saved\n'
         'exception is set as the context of the new exception. If the '
         '"finally"\n'
-        'clause executes a "return", "break" or "continue" statement, the ' 
-        'saved\n' 
-        'exception is discarded:\n' 
+        'clause executes a "return", "break" or "continue" statement, the '
+        'saved\n'
+        'exception is discarded:\n'
         '\n'
         '   >>> def f():\n'
         '   ...     try:\n'
@@ -11608,7 +11608,7 @@ topics = {'assert': 'The "assert" statement\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.’\n' 
+        'also executed ‘on the way out.’\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'
@@ -11628,11 +11628,11 @@ topics = {'assert': 'The "assert" statement\n'
         'Additional information on exceptions can be found in section\n'
         'Exceptions, and information on using the "raise" statement to '
         'generate\n'
-        'exceptions may be found in section The raise statement.\n' 
-        '\n' 
-        'Changed in version 3.8: Prior to Python 3.8, a "continue" statement\n' 
-        'was illegal in the "finally" clause due to a problem with the\n' 
-        'implementation.\n', 
+        'exceptions may be found in section The raise statement.\n'
+        '\n'
+        'Changed in version 3.8: Prior to Python 3.8, a "continue" statement\n'
+        'was illegal in the "finally" clause due to a problem with the\n'
+        'implementation.\n',
  'types': 'The standard type hierarchy\n'
           '***************************\n'
           '\n'
@@ -11672,17 +11672,17 @@ topics = {'assert': 'The "assert" statement\n'
           'for\n'
           '   the operands provided.  (The interpreter will then try the\n'
           '   reflected operation, or some other fallback, depending on the\n'
-          '   operator.)  It should not be evaluated in a boolean context.\n' 
+          '   operator.)  It should not be evaluated in a boolean context.\n'
           '\n'
           '   See Implementing the arithmetic operations for more details.\n'
           '\n'
-          '   Changed in version 3.9: Evaluating "NotImplemented" in a ' 
-          'boolean\n' 
-          '   context is deprecated. While it currently evaluates as true, it\n' 
-          '   will emit a "DeprecationWarning". It will raise a "TypeError" in ' 
-          'a\n' 
-          '   future version of Python.\n' 
-          '\n' 
+          '   Changed in version 3.9: Evaluating "NotImplemented" in a '
+          'boolean\n'
+          '   context is deprecated. While it currently evaluates as true, it\n'
+          '   will emit a "DeprecationWarning". It will raise a "TypeError" in '
+          'a\n'
+          '   future version of Python.\n'
+          '\n'
           'Ellipsis\n'
           '   This type has a single value.  There is a single object with '
           'this\n'
@@ -11700,27 +11700,27 @@ topics = {'assert': 'The "assert" statement\n'
           'representation\n'
           '   in computers.\n'
           '\n'
-          '   The string representations of the numeric classes, computed by\n' 
-          '   "__repr__()" and "__str__()", have the following properties:\n' 
-          '\n' 
-          '   * They are valid numeric literals which, when passed to their ' 
-          'class\n' 
-          '     constructor, produce an object having the value of the ' 
-          'original\n' 
-          '     numeric.\n' 
-          '\n' 
-          '   * The representation is in base 10, when possible.\n' 
-          '\n' 
-          '   * Leading zeros, possibly excepting a single zero before a ' 
-          'decimal\n' 
-          '     point, are not shown.\n' 
-          '\n' 
-          '   * Trailing zeros, possibly excepting a single zero after a ' 
-          'decimal\n' 
-          '     point, are not shown.\n' 
-          '\n' 
-          '   * A sign is shown only when the number is negative.\n' 
-          '\n' 
+          '   The string representations of the numeric classes, computed by\n'
+          '   "__repr__()" and "__str__()", have the following properties:\n'
+          '\n'
+          '   * They are valid numeric literals which, when passed to their '
+          'class\n'
+          '     constructor, produce an object having the value of the '
+          'original\n'
+          '     numeric.\n'
+          '\n'
+          '   * The representation is in base 10, when possible.\n'
+          '\n'
+          '   * Leading zeros, possibly excepting a single zero before a '
+          'decimal\n'
+          '     point, are not shown.\n'
+          '\n'
+          '   * Trailing zeros, possibly excepting a single zero after a '
+          'decimal\n'
+          '     point, are not shown.\n'
+          '\n'
+          '   * A sign is shown only when the number is negative.\n'
+          '\n'
           '   Python distinguishes between integers, floating point numbers, '
           'and\n'
           '   complex numbers:\n'
@@ -11829,7 +11829,7 @@ topics = {'assert': 'The "assert" statement\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 '
-          '"char"\n' 
+          '"char"\n'
           '         type; instead, every code point in the string is '
           'represented\n'
           '         as a string object with length "1".  The built-in '
@@ -11961,16 +11961,16 @@ topics = {'assert': 'The "assert" statement\n'
           '      then they can be used interchangeably to index the same\n'
           '      dictionary entry.\n'
           '\n'
-          '      Dictionaries preserve insertion order, meaning that keys will ' 
-          'be\n' 
-          '      produced in the same order they were added sequentially over ' 
-          'the\n' 
-          '      dictionary. Replacing an existing key does not change the ' 
-          'order,\n' 
-          '      however removing a key and re-inserting it will add it to ' 
-          'the\n' 
-          '      end instead of keeping its old place.\n' 
-          '\n' 
+          '      Dictionaries preserve insertion order, meaning that keys will '
+          'be\n'
+          '      produced in the same order they were added sequentially over '
+          'the\n'
+          '      dictionary. Replacing an existing key does not change the '
+          'order,\n'
+          '      however removing a key and re-inserting it will add it to '
+          'the\n'
+          '      end instead of keeping its old place.\n'
+          '\n'
           '      Dictionaries are mutable; they can be created by the "{...}"\n'
           '      notation (see section Dictionary displays).\n'
           '\n'
@@ -11979,13 +11979,13 @@ topics = {'assert': 'The "assert" statement\n'
           '"collections"\n'
           '      module.\n'
           '\n'
-          '      Changed in version 3.7: Dictionaries did not preserve ' 
-          'insertion\n' 
-          '      order in versions of Python before 3.6. In CPython 3.6,\n' 
-          '      insertion order was preserved, but it was considered an\n' 
-          '      implementation detail at that time rather than a language\n' 
-          '      guarantee.\n' 
-          '\n' 
+          '      Changed in version 3.7: Dictionaries did not preserve '
+          'insertion\n'
+          '      order in versions of Python before 3.6. In CPython 3.6,\n'
+          '      insertion order was preserved, but it was considered an\n'
+          '      implementation detail at that time rather than a language\n'
+          '      guarantee.\n'
+          '\n'
           'Callable types\n'
           '   These are the types to which the function call operation (see\n'
           '   section Calls) can be applied:\n'
@@ -12004,24 +12004,24 @@ topics = {'assert': 'The "assert" statement\n'
           '      | Attribute                 | Meaning                         '
           '|             |\n'
           '      '
-          '|===========================|=================================|=============|\n' 
+          '|===========================|=================================|=============|\n'
           '      | "__doc__"                 | The function’s documentation    '
           '| Writable    |\n'
           '      |                           | string, or "None" if            '
           '|             |\n'
           '      |                           | unavailable; not inherited by   '
           '|             |\n'
-          '      |                           | subclasses.                     ' 
+          '      |                           | subclasses.                     '
           '|             |\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | "__name__"                | The function’s name.            ' 
+          '      | "__name__"                | The function’s name.            '
           '| Writable    |\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
-          '      | "__qualname__"            | The function’s *qualified       ' 
+          '      | "__qualname__"            | The function’s *qualified       '
           '| Writable    |\n'
-          '      |                           | name*.  New in version 3.3.     ' 
+          '      |                           | name*.  New in version 3.3.     '
           '|             |\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
@@ -12041,7 +12041,7 @@ topics = {'assert': 'The "assert" statement\n'
           '|             |\n'
           '      |                           | or "None" if no arguments have  '
           '|             |\n'
-          '      |                           | a default value.                ' 
+          '      |                           | a default value.                '
           '|             |\n'
           '      '
           '+---------------------------+---------------------------------+-------------+\n'
@@ -12122,8 +12122,8 @@ topics = {'assert': 'The "assert" statement\n'
           '      Additional information about a function’s definition can be\n'
           '      retrieved from its code object; see the description of '
           'internal\n'
-          '      types below. The "cell" type can be accessed in the "types"\n' 
-          '      module.\n' 
+          '      types below. The "cell" type can be accessed in the "types"\n'
+          '      module.\n'
           '\n'
           '   Instance methods\n'
           '      An instance method object combines a class, a class instance '
@@ -12243,14 +12243,14 @@ topics = {'assert': 'The "assert" statement\n'
           'for"\n'
           '      statement to execute the body of the function.\n'
           '\n'
-          '      Calling the asynchronous iterator’s "aiterator.__anext__" ' 
-          'method\n' 
-          '      will return an *awaitable* which when awaited will execute ' 
-          'until\n' 
-          '      it provides a value using the "yield" expression.  When the\n' 
-          '      function executes an empty "return" statement or falls off ' 
+          '      Calling the asynchronous iterator’s "aiterator.__anext__" '
+          'method\n'
+          '      will return an *awaitable* which when awaited will execute '
+          'until\n'
+          '      it provides a value using the "yield" expression.  When the\n'
+          '      function executes an empty "return" statement or falls off '
           'the\n'
-          '      end, a "StopAsyncIteration" exception is raised and the\n' 
+          '      end, a "StopAsyncIteration" exception is raised and the\n'
           '      asynchronous iterator will have reached the end of the set '
           'of\n'
           '      values to be yielded.\n'
@@ -12481,37 +12481,37 @@ topics = {'assert': 'The "assert" statement\n'
           '\n'
           '      Special read-only attributes: "co_name" gives the function '
           'name;\n'
-          '      "co_argcount" is the total number of positional arguments\n' 
-          '      (including positional-only arguments and arguments with ' 
-          'default\n' 
-          '      values); "co_posonlyargcount" is the number of ' 
-          'positional-only\n' 
-          '      arguments (including arguments with default values);\n' 
-          '      "co_kwonlyargcount" is the number of keyword-only arguments\n' 
-          '      (including arguments with default values); "co_nlocals" is ' 
+          '      "co_argcount" is the total number of positional arguments\n'
+          '      (including positional-only arguments and arguments with '
+          'default\n'
+          '      values); "co_posonlyargcount" is the number of '
+          'positional-only\n'
+          '      arguments (including arguments with default values);\n'
+          '      "co_kwonlyargcount" is the number of keyword-only arguments\n'
+          '      (including arguments with default values); "co_nlocals" is '
           'the\n'
-          '      number of local variables used by the function (including\n' 
-          '      arguments); "co_varnames" is a tuple containing the names of ' 
-          'the\n' 
-          '      local variables (starting with the argument names);\n' 
-          '      "co_cellvars" is a tuple containing the names of local ' 
-          'variables\n' 
-          '      that are referenced by nested functions; "co_freevars" is a\n' 
-          '      tuple containing the names of free variables; "co_code" is a\n' 
-          '      string representing the sequence of bytecode instructions;\n' 
-          '      "co_consts" is a tuple containing the literals used by the\n' 
-          '      bytecode; "co_names" is a tuple containing the names used by ' 
-          'the\n' 
-          '      bytecode; "co_filename" is the filename from which the code ' 
-          'was\n' 
-          '      compiled; "co_firstlineno" is the first line number of the\n' 
-          '      function; "co_lnotab" is a string encoding the mapping from\n' 
-          '      bytecode offsets to line numbers (for details see the source\n' 
-          '      code of the interpreter); "co_stacksize" is the required ' 
-          'stack\n' 
-          '      size; "co_flags" is an integer encoding a number of flags ' 
-          'for\n' 
-          '      the interpreter.\n' 
+          '      number of local variables used by the function (including\n'
+          '      arguments); "co_varnames" is a tuple containing the names of '
+          'the\n'
+          '      local variables (starting with the argument names);\n'
+          '      "co_cellvars" is a tuple containing the names of local '
+          'variables\n'
+          '      that are referenced by nested functions; "co_freevars" is a\n'
+          '      tuple containing the names of free variables; "co_code" is a\n'
+          '      string representing the sequence of bytecode instructions;\n'
+          '      "co_consts" is a tuple containing the literals used by the\n'
+          '      bytecode; "co_names" is a tuple containing the names used by '
+          'the\n'
+          '      bytecode; "co_filename" is the filename from which the code '
+          'was\n'
+          '      compiled; "co_firstlineno" is the first line number of the\n'
+          '      function; "co_lnotab" is a string encoding the mapping from\n'
+          '      bytecode offsets to line numbers (for details see the source\n'
+          '      code of the interpreter); "co_stacksize" is the required '
+          'stack\n'
+          '      size; "co_flags" is an integer encoding a number of flags '
+          'for\n'
+          '      the interpreter.\n'
           '\n'
           '      The following flag bits are defined for "co_flags": bit '
           '"0x04"\n'
@@ -12559,10 +12559,10 @@ topics = {'assert': 'The "assert" statement\n'
           '      gives the precise instruction (this is an index into the\n'
           '      bytecode string of the code object).\n'
           '\n'
-          '      Accessing "f_code" raises an auditing event ' 
-          '"object.__getattr__"\n' 
-          '      with arguments "obj" and ""f_code"".\n' 
-          '\n' 
+          '      Accessing "f_code" raises an auditing event '
+          '"object.__getattr__"\n'
+          '      with arguments "obj" and ""f_code"".\n'
+          '\n'
           '      Special writable attributes: "f_trace", if not "None", is a\n'
           '      function called for various events during code execution '
           '(this\n'
@@ -12646,9 +12646,9 @@ topics = {'assert': 'The "assert" statement\n'
           '      the exception occurred in a "try" statement with no matching\n'
           '      except clause or with a finally clause.\n'
           '\n'
-          '      Accessing "tb_frame" raises an auditing event\n' 
-          '      "object.__getattr__" with arguments "obj" and ""tb_frame"".\n' 
-          '\n' 
+          '      Accessing "tb_frame" raises an auditing event\n'
+          '      "object.__getattr__" with arguments "obj" and ""tb_frame"".\n'
+          '\n'
           '      Special writable attribute: "tb_next" is the next level in '
           'the\n'
           '      stack trace (towards the frame where the exception occurred), '
@@ -12770,29 +12770,29 @@ topics = {'assert': 'The "assert" statement\n'
                  '"dict"\n'
                  'constructor.\n'
                  '\n'
-                 'class dict(**kwargs)\n' 
-                 'class dict(mapping, **kwargs)\n' 
-                 'class dict(iterable, **kwargs)\n' 
+                 'class dict(**kwargs)\n'
+                 'class dict(mapping, **kwargs)\n'
+                 'class dict(iterable, **kwargs)\n'
                  '\n'
                  '   Return a new dictionary initialized from an optional '
                  'positional\n'
                  '   argument and a possibly empty set of keyword arguments.\n'
                  '\n'
-                 '   Dictionaries can be created by several means:\n' 
-                 '\n' 
-                 '   * Use a comma-separated list of "key: value" pairs within ' 
-                 'braces:\n' 
-                 '     "{\'jack\': 4098, \'sjoerd\': 4127}" or "{4098: ' 
-                 "'jack', 4127:\n" 
-                 '     \'sjoerd\'}"\n' 
-                 '\n' 
-                 '   * Use a dict comprehension: "{}", "{x: x ** 2 for x in ' 
-                 'range(10)}"\n' 
-                 '\n' 
-                 '   * Use the type constructor: "dict()", "dict([(\'foo\', ' 
-                 "100), ('bar',\n" 
-                 '     200)])", "dict(foo=100, bar=200)"\n' 
-                 '\n' 
+                 '   Dictionaries can be created by several means:\n'
+                 '\n'
+                 '   * Use a comma-separated list of "key: value" pairs within '
+                 'braces:\n'
+                 '     "{\'jack\': 4098, \'sjoerd\': 4127}" or "{4098: '
+                 "'jack', 4127:\n"
+                 '     \'sjoerd\'}"\n'
+                 '\n'
+                 '   * Use a dict comprehension: "{}", "{x: x ** 2 for x in '
+                 'range(10)}"\n'
+                 '\n'
+                 '   * Use the type constructor: "dict()", "dict([(\'foo\', '
+                 "100), ('bar',\n"
+                 '     200)])", "dict(foo=100, bar=200)"\n'
+                 '\n'
                  '   If no positional argument is given, an empty dictionary '
                  'is created.\n'
                  '   If a positional argument is given and it is a mapping '
@@ -12830,8 +12830,8 @@ topics = {'assert': 'The "assert" statement\n'
                  "      >>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))\n"
                  "      >>> d = dict([('two', 2), ('one', 1), ('three', 3)])\n"
                  "      >>> e = dict({'three': 3, 'one': 1, 'two': 2})\n"
-                 "      >>> f = dict({'one': 1, 'three': 3}, two=2)\n" 
-                 '      >>> a == b == c == d == e == f\n' 
+                 "      >>> f = dict({'one': 1, 'three': 3}, two=2)\n"
+                 '      >>> a == b == c == d == e == f\n'
                  '      True\n'
                  '\n'
                  '   Providing keyword arguments as in the first example only '
@@ -12844,11 +12844,11 @@ topics = {'assert': 'The "assert" statement\n'
                  'therefore,\n'
                  '   custom mapping types should support too):\n'
                  '\n'
-                 '   list(d)\n' 
-                 '\n' 
-                 '      Return a list of all the keys used in the dictionary ' 
-                 '*d*.\n' 
-                 '\n' 
+                 '   list(d)\n'
+                 '\n'
+                 '      Return a list of all the keys used in the dictionary '
+                 '*d*.\n'
+                 '\n'
                  '   len(d)\n'
                  '\n'
                  '      Return the number of items in the dictionary *d*.\n'
@@ -12929,13 +12929,13 @@ topics = {'assert': 'The "assert" statement\n'
                  '\n'
                  '      "fromkeys()" is a class method that returns a new '
                  'dictionary.\n'
-                 '      *value* defaults to "None".  All of the values refer ' 
-                 'to just a\n' 
-                 '      single instance, so it generally doesn’t make sense ' 
-                 'for *value*\n' 
-                 '      to be a mutable object such as an empty list.  To get ' 
-                 'distinct\n' 
-                 '      values, use a dict comprehension instead.\n' 
+                 '      *value* defaults to "None".  All of the values refer '
+                 'to just a\n'
+                 '      single instance, so it generally doesn’t make sense '
+                 'for *value*\n'
+                 '      to be a mutable object such as an empty list.  To get '
+                 'distinct\n'
+                 '      values, use a dict comprehension instead.\n'
                  '\n'
                  '   get(key[, default])\n'
                  '\n'
@@ -12981,14 +12981,14 @@ topics = {'assert': 'The "assert" statement\n'
                  '      versions, "popitem()" would return an arbitrary '
                  'key/value pair.\n'
                  '\n'
-                 '   reversed(d)\n' 
-                 '\n' 
-                 '      Return a reverse iterator over the keys of the ' 
-                 'dictionary. This\n' 
-                 '      is a shortcut for "reversed(d.keys())".\n' 
-                 '\n' 
-                 '      New in version 3.8.\n' 
-                 '\n' 
+                 '   reversed(d)\n'
+                 '\n'
+                 '      Return a reverse iterator over the keys of the '
+                 'dictionary. This\n'
+                 '      is a shortcut for "reversed(d.keys())".\n'
+                 '\n'
+                 '      New in version 3.8.\n'
+                 '\n'
                  '   setdefault(key[, default])\n'
                  '\n'
                  '      If *key* is in the dictionary, return its value.  If '
@@ -13019,44 +13019,44 @@ topics = {'assert': 'The "assert" statement\n'
                  'the\n'
                  '      documentation of view objects.\n'
                  '\n'
-                 '      An equality comparison between one "dict.values()" ' 
-                 'view and\n' 
-                 '      another will always return "False". This also applies ' 
-                 'when\n' 
-                 '      comparing "dict.values()" to itself:\n' 
-                 '\n' 
-                 "         >>> d = {'a': 1}\n" 
-                 '         >>> d.values() == d.values()\n' 
-                 '         False\n' 
-                 '\n' 
-                 '   d | other\n' 
-                 '\n' 
-                 '      Create a new dictionary with the merged keys and ' 
-                 'values of *d*\n' 
-                 '      and *other*, which must both be dictionaries. The ' 
-                 'values of\n' 
-                 '      *other* take priority when *d* and *other* share ' 
-                 'keys.\n' 
-                 '\n' 
-                 '      New in version 3.9.\n' 
-                 '\n' 
-                 '   d |= other\n' 
-                 '\n' 
-                 '      Update the dictionary *d* with keys and values from ' 
-                 '*other*,\n' 
-                 '      which may be either a *mapping* or an *iterable* of ' 
-                 'key/value\n' 
-                 '      pairs. The values of *other* take priority when *d* ' 
-                 'and *other*\n' 
-                 '      share keys.\n' 
-                 '\n' 
-                 '      New in version 3.9.\n' 
-                 '\n' 
+                 '      An equality comparison between one "dict.values()" '
+                 'view and\n'
+                 '      another will always return "False". This also applies '
+                 'when\n'
+                 '      comparing "dict.values()" to itself:\n'
+                 '\n'
+                 "         >>> d = {'a': 1}\n"
+                 '         >>> d.values() == d.values()\n'
+                 '         False\n'
+                 '\n'
+                 '   d | other\n'
+                 '\n'
+                 '      Create a new dictionary with the merged keys and '
+                 'values of *d*\n'
+                 '      and *other*, which must both be dictionaries. The '
+                 'values of\n'
+                 '      *other* take priority when *d* and *other* share '
+                 'keys.\n'
+                 '\n'
+                 '      New in version 3.9.\n'
+                 '\n'
+                 '   d |= other\n'
+                 '\n'
+                 '      Update the dictionary *d* with keys and values from '
+                 '*other*,\n'
+                 '      which may be either a *mapping* or an *iterable* of '
+                 'key/value\n'
+                 '      pairs. The values of *other* take priority when *d* '
+                 'and *other*\n'
+                 '      share keys.\n'
+                 '\n'
+                 '      New in version 3.9.\n'
+                 '\n'
                  '   Dictionaries compare equal if and only if they have the '
                  'same "(key,\n'
-                 '   value)" pairs (regardless of ordering). Order comparisons ' 
-                 '(‘<’,\n' 
-                 '   ‘<=’, ‘>=’, ‘>’) raise "TypeError".\n' 
+                 '   value)" pairs (regardless of ordering). Order comparisons '
+                 '(‘<’,\n'
+                 '   ‘<=’, ‘>=’, ‘>’) raise "TypeError".\n'
                  '\n'
                  '   Dictionaries preserve insertion order.  Note that '
                  'updating a key\n'
@@ -13085,27 +13085,27 @@ topics = {'assert': 'The "assert" statement\n'
                  'detail of\n'
                  '   CPython from 3.6.\n'
                  '\n'
-                 '   Dictionaries and dictionary views are reversible.\n' 
-                 '\n' 
-                 '      >>> d = {"one": 1, "two": 2, "three": 3, "four": 4}\n' 
-                 '      >>> d\n' 
-                 "      {'one': 1, 'two': 2, 'three': 3, 'four': 4}\n" 
-                 '      >>> list(reversed(d))\n' 
-                 "      ['four', 'three', 'two', 'one']\n" 
-                 '      >>> list(reversed(d.values()))\n' 
-                 '      [4, 3, 2, 1]\n' 
-                 '      >>> list(reversed(d.items()))\n' 
-                 "      [('four', 4), ('three', 3), ('two', 2), ('one', 1)]\n" 
-                 '\n' 
-                 '   Changed in version 3.8: Dictionaries are now reversible.\n' 
-                 '\n' 
-                 'See also:\n' 
-                 '\n'
-                 '  "types.MappingProxyType" can be used to create a read-only ' 
-                 'view of a\n' 
-                 '  "dict".\n' 
-                 '\n'
-                 '\n' 
+                 '   Dictionaries and dictionary views are reversible.\n'
+                 '\n'
+                 '      >>> d = {"one": 1, "two": 2, "three": 3, "four": 4}\n'
+                 '      >>> d\n'
+                 "      {'one': 1, 'two': 2, 'three': 3, 'four': 4}\n"
+                 '      >>> list(reversed(d))\n'
+                 "      ['four', 'three', 'two', 'one']\n"
+                 '      >>> list(reversed(d.values()))\n'
+                 '      [4, 3, 2, 1]\n'
+                 '      >>> list(reversed(d.items()))\n'
+                 "      [('four', 4), ('three', 3), ('two', 2), ('one', 1)]\n"
+                 '\n'
+                 '   Changed in version 3.8: Dictionaries are now reversible.\n'
+                 '\n'
+                 'See also:\n'
+                 '\n'
+                 '  "types.MappingProxyType" can be used to create a read-only '
+                 'view of a\n'
+                 '  "dict".\n'
+                 '\n'
+                 '\n'
                  'Dictionary view objects\n'
                  '=======================\n'
                  '\n'
@@ -13155,17 +13155,17 @@ topics = {'assert': 'The "assert" statement\n'
                  'value)"\n'
                  '   tuple).\n'
                  '\n'
-                 'reversed(dictview)\n' 
-                 '\n' 
-                 '   Return a reverse iterator over the keys, values or items ' 
-                 'of the\n' 
-                 '   dictionary. The view will be iterated in reverse order of ' 
-                 'the\n' 
-                 '   insertion.\n' 
-                 '\n' 
-                 '   Changed in version 3.8: Dictionary views are now ' 
-                 'reversible.\n' 
-                 '\n' 
+                 'reversed(dictview)\n'
+                 '\n'
+                 '   Return a reverse iterator over the keys, values or items '
+                 'of the\n'
+                 '   dictionary. The view will be iterated in reverse order of '
+                 'the\n'
+                 '   insertion.\n'
+                 '\n'
+                 '   Changed in version 3.8: Dictionary views are now '
+                 'reversible.\n'
+                 '\n'
                  'Keys views are set-like since their entries are unique and '
                  'hashable.\n'
                  'If all values are hashable, so that "(key, value)" pairs are '
@@ -13344,7 +13344,7 @@ topics = {'assert': 'The "assert" statement\n'
              '+----------------------------+----------------------------------+------------+\n'
              '| Operation                  | Result                           '
              '| Notes      |\n'
-             '|============================|==================================|============|\n' 
+             '|============================|==================================|============|\n'
              '| "x in s"                   | "True" if an item of *s* is      '
              '| (1)        |\n'
              '|                            | equal to *x*, else "False"       '
@@ -13487,14 +13487,14 @@ topics = {'assert': 'The "assert" statement\n'
              '"None", it\n'
              '   is treated like "1".\n'
              '\n'
-             '6. Concatenating immutable sequences always results in a new ' 
-             'object.\n' 
-             '   This means that building up a sequence by repeated ' 
-             'concatenation\n' 
-             '   will have a quadratic runtime cost in the total sequence ' 
-             'length.\n' 
-             '   To get a linear runtime cost, you must switch to one of the\n' 
-             '   alternatives below:\n' 
+             '6. Concatenating immutable sequences always results in a new '
+             'object.\n'
+             '   This means that building up a sequence by repeated '
+             'concatenation\n'
+             '   will have a quadratic runtime cost in the total sequence '
+             'length.\n'
+             '   To get a linear runtime cost, you must switch to one of the\n'
+             '   alternatives below:\n'
              '\n'
              '   * if concatenating "str" objects, you can build a list and '
              'use\n'
@@ -13512,27 +13512,27 @@ topics = {'assert': 'The "assert" statement\n'
              '   * for other types, investigate the relevant class '
              'documentation\n'
              '\n'
-             '7. Some sequence types (such as "range") only support item ' 
-             'sequences\n' 
-             '   that follow specific patterns, and hence don’t support ' 
+             '7. Some sequence types (such as "range") only support item '
+             'sequences\n'
+             '   that follow specific patterns, and hence don’t support '
              'sequence\n'
-             '   concatenation or repetition.\n' 
-             '\n'
-             '8. "index" raises "ValueError" when *x* is not found in *s*. Not ' 
-             'all\n' 
-             '   implementations support passing the additional arguments *i* ' 
-             'and\n' 
-             '   *j*. These arguments allow efficient searching of subsections ' 
-             'of\n' 
-             '   the sequence. Passing the extra arguments is roughly ' 
-             'equivalent to\n' 
-             '   using "s[i:j].index(x)", only without copying any data and ' 
-             'with the\n' 
-             '   returned index being relative to the start of the sequence ' 
-             'rather\n' 
-             '   than the start of the slice.\n' 
-             '\n'
-             '\n' 
+             '   concatenation or repetition.\n'
+             '\n'
+             '8. "index" raises "ValueError" when *x* is not found in *s*. Not '
+             'all\n'
+             '   implementations support passing the additional arguments *i* '
+             'and\n'
+             '   *j*. These arguments allow efficient searching of subsections '
+             'of\n'
+             '   the sequence. Passing the extra arguments is roughly '
+             'equivalent to\n'
+             '   using "s[i:j].index(x)", only without copying any data and '
+             'with the\n'
+             '   returned index being relative to the start of the sequence '
+             'rather\n'
+             '   than the start of the slice.\n'
+             '\n'
+             '\n'
              'Immutable Sequence Types\n'
              '========================\n'
              '\n'
@@ -13575,7 +13575,7 @@ topics = {'assert': 'The "assert" statement\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
              '| Operation                      | '
              'Result                           | Notes                 |\n'
-             '|================================|==================================|=======================|\n' 
+             '|================================|==================================|=======================|\n'
              '| "s[i] = x"                     | item *i* of *s* is replaced '
              'by   |                       |\n'
              '|                                | '
@@ -13637,7 +13637,7 @@ topics = {'assert': 'The "assert" statement\n'
              '|                                | "s[i:i] = '
              '[x]")                  |                       |\n'
              '+--------------------------------+----------------------------------+-----------------------+\n'
-             '| "s.pop()" or "s.pop(i)"        | retrieves the item at *i* ' 
+             '| "s.pop()" or "s.pop(i)"        | retrieves the item at *i* '
              'and    | (2)                   |\n'
              '|                                | also removes it from '
              '*s*         |                       |\n'
@@ -13658,25 +13658,25 @@ topics = {'assert': 'The "assert" statement\n'
              '1. *t* must have the same length as the slice it is replacing.\n'
              '\n'
              '2. The optional argument *i* defaults to "-1", so that by '
-             'default the\n' 
-             '   last item is removed and returned.\n' 
+             'default the\n'
+             '   last item is removed and returned.\n'
              '\n'
-             '3. "remove()" raises "ValueError" when *x* is not found in *s*.\n' 
+             '3. "remove()" raises "ValueError" when *x* is not found in *s*.\n'
              '\n'
-             '4. The "reverse()" method modifies the sequence in place for ' 
-             'economy\n' 
-             '   of space when reversing a large sequence.  To remind users ' 
-             'that it\n' 
-             '   operates by side effect, it does not return the reversed ' 
-             'sequence.\n' 
+             '4. The "reverse()" method modifies the sequence in place for '
+             'economy\n'
+             '   of space when reversing a large sequence.  To remind users '
+             'that it\n'
+             '   operates by side effect, it does not return the reversed '
+             'sequence.\n'
              '\n'
              '5. "clear()" and "copy()" are included for consistency with the\n'
              '   interfaces of mutable containers that don’t support slicing\n'
-             '   operations (such as "dict" and "set"). "copy()" is not part ' 
-             'of the\n' 
-             '   "collections.abc.MutableSequence" ABC, but most concrete ' 
-             'mutable\n' 
-             '   sequence classes provide it.\n' 
+             '   operations (such as "dict" and "set"). "copy()" is not part '
+             'of the\n'
+             '   "collections.abc.MutableSequence" ABC, but most concrete '
+             'mutable\n'
+             '   sequence classes provide it.\n'
              '\n'
              '   New in version 3.3: "clear()" and "copy()" methods.\n'
              '\n'
@@ -13705,9 +13705,9 @@ topics = {'assert': 'The "assert" statement\n'
              '   * Using a pair of square brackets to denote the empty list: '
              '"[]"\n'
              '\n'
-             '   * Using square brackets, separating items with commas: "[a]", ' 
-             '"[a,\n' 
-             '     b, c]"\n' 
+             '   * Using square brackets, separating items with commas: "[a]", '
+             '"[a,\n'
+             '     b, c]"\n'
              '\n'
              '   * Using a list comprehension: "[x for x in iterable]"\n'
              '\n'
@@ -13788,10 +13788,10 @@ topics = {'assert': 'The "assert" statement\n'
              'salary\n'
              '      grade).\n'
              '\n'
-             '      For sorting examples and a brief sorting tutorial, see ' 
-             'Sorting\n' 
-             '      HOW TO.\n' 
-             '\n' 
+             '      For sorting examples and a brief sorting tutorial, see '
+             'Sorting\n'
+             '      HOW TO.\n'
+             '\n'
              '      **CPython implementation detail:** While a list is being '
              'sorted,\n'
              '      the effect of attempting to mutate, or even inspect, the '
@@ -13877,8 +13877,8 @@ topics = {'assert': 'The "assert" statement\n'
              '\n'
              '   The arguments to the range constructor must be integers '
              '(either\n'
-             '   built-in "int" or any object that implements the ' 
-             '"__index__()"\n' 
+             '   built-in "int" or any object that implements the '
+             '"__index__()"\n'
              '   special method).  If the *step* argument is omitted, it '
              'defaults to\n'
              '   "1". If the *start* argument is omitted, it defaults to "0". '
@@ -14011,9 +14011,9 @@ topics = {'assert': 'The "assert" statement\n'
              '\n'
              'See also:\n'
              '\n'
-             '  * The linspace recipe shows how to implement a lazy version of ' 
-             'range\n' 
-             '    suitable for floating point applications.\n', 
+             '  * The linspace recipe shows how to implement a lazy version of '
+             'range\n'
+             '    suitable for floating point applications.\n',
  'typesseq-mutable': 'Mutable Sequence Types\n'
                      '**********************\n'
                      '\n'
@@ -14038,7 +14038,7 @@ topics = {'assert': 'The "assert" statement\n'
                      '| Operation                      | '
                      'Result                           | Notes                 '
                      '|\n'
-                     '|================================|==================================|=======================|\n' 
+                     '|================================|==================================|=======================|\n'
                      '| "s[i] = x"                     | item *i* of *s* is '
                      'replaced by   |                       |\n'
                      '|                                | '
@@ -14101,7 +14101,7 @@ topics = {'assert': 'The "assert" statement\n'
                      '|                                | "s[i:i] = '
                      '[x]")                  |                       |\n'
                      '+--------------------------------+----------------------------------+-----------------------+\n'
-                     '| "s.pop()" or "s.pop(i)"        | retrieves the item at ' 
+                     '| "s.pop()" or "s.pop(i)"        | retrieves the item at '
                      '*i* and    | (2)                   |\n'
                      '|                                | also removes it from '
                      '*s*         |                       |\n'
@@ -14124,28 +14124,28 @@ topics = {'assert': 'The "assert" statement\n'
                      'replacing.\n'
                      '\n'
                      '2. The optional argument *i* defaults to "-1", so that '
-                     'by default the\n' 
-                     '   last item is removed and returned.\n' 
+                     'by default the\n'
+                     '   last item is removed and returned.\n'
                      '\n'
-                     '3. "remove()" raises "ValueError" when *x* is not found ' 
-                     'in *s*.\n' 
+                     '3. "remove()" raises "ValueError" when *x* is not found '
+                     'in *s*.\n'
                      '\n'
                      '4. The "reverse()" method modifies the sequence in place '
-                     'for economy\n' 
-                     '   of space when reversing a large sequence.  To remind ' 
-                     'users that it\n' 
-                     '   operates by side effect, it does not return the ' 
-                     'reversed sequence.\n' 
+                     'for economy\n'
+                     '   of space when reversing a large sequence.  To remind '
+                     'users that it\n'
+                     '   operates by side effect, it does not return the '
+                     'reversed sequence.\n'
                      '\n'
                      '5. "clear()" and "copy()" are included for consistency '
                      'with the\n'
                      '   interfaces of mutable containers that don’t support '
                      'slicing\n'
-                     '   operations (such as "dict" and "set"). "copy()" is ' 
-                     'not part of the\n' 
-                     '   "collections.abc.MutableSequence" ABC, but most ' 
-                     'concrete mutable\n' 
-                     '   sequence classes provide it.\n' 
+                     '   operations (such as "dict" and "set"). "copy()" is '
+                     'not part of the\n'
+                     '   "collections.abc.MutableSequence" ABC, but most '
+                     'concrete mutable\n'
+                     '   sequence classes provide it.\n'
                      '\n'
                      '   New in version 3.3: "clear()" and "copy()" methods.\n'
                      '\n'
@@ -14166,21 +14166,21 @@ topics = {'assert': 'The "assert" statement\n'
           '   u_expr ::= power | "-" u_expr | "+" u_expr | "~" u_expr\n'
           '\n'
           'The unary "-" (minus) operator yields the negation of its numeric\n'
-          'argument; the operation can be overridden with the "__neg__()" ' 
-          'special\n' 
-          'method.\n' 
+          'argument; the operation can be overridden with the "__neg__()" '
+          'special\n'
+          'method.\n'
           '\n'
           'The unary "+" (plus) operator yields its numeric argument '
-          'unchanged;\n' 
-          'the operation can be overridden with the "__pos__()" special ' 
-          'method.\n' 
+          'unchanged;\n'
+          'the operation can be overridden with the "__pos__()" special '
+          'method.\n'
           '\n'
           'The unary "~" (invert) operator yields the bitwise inversion of '
           'its\n'
           'integer argument.  The bitwise inversion of "x" is defined as\n'
-          '"-(x+1)".  It only applies to integral numbers or to custom ' 
-          'objects\n' 
-          'that override the "__invert__()" special method.\n' 
+          '"-(x+1)".  It only applies to integral numbers or to custom '
+          'objects\n'
+          'that override the "__invert__()" special method.\n'
           '\n'
           'In all three cases, if the argument does not have the proper type, '
           'a\n'
@@ -14191,7 +14191,7 @@ topics = {'assert': 'The "assert" statement\n'
           'The "while" statement is used for repeated execution as long as an\n'
           'expression is true:\n'
           '\n'
-          '   while_stmt ::= "while" assignment_expression ":" suite\n' 
+          '   while_stmt ::= "while" assignment_expression ":" suite\n'
           '                  ["else" ":" suite]\n'
           '\n'
           'This repeatedly tests the expression and, if it is true, executes '
@@ -14224,32 +14224,32 @@ topics = {'assert': 'The "assert" statement\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") ' 
-         'is\n' 
-         '   evaluated to obtain a context manager.\n' 
+         '1. The context expression (the expression given in the "with_item") '
+         'is\n'
+         '   evaluated to obtain a context manager.\n'
+         '\n'
+         '2. The context manager’s "__enter__()" is loaded for later use.\n'
          '\n'
-         '2. The context manager’s "__enter__()" is loaded for later use.\n' 
+         '3. The context manager’s "__exit__()" is loaded for later use.\n'
          '\n'
-         '3. The context manager’s "__exit__()" is loaded for later use.\n' 
+         '4. The context manager’s "__enter__()" method is invoked.\n'
          '\n'
-         '4. The context manager’s "__enter__()" method is invoked.\n' 
-         '\n' 
-         '5. If a target was included in the "with" statement, the return ' 
-         'value\n' 
-         '   from "__enter__()" is assigned to it.\n' 
+         '5. If a target was included in the "with" statement, the return '
+         'value\n'
+         '   from "__enter__()" is assigned to it.\n'
          '\n'
-         '   Note:\n' 
-         '\n' 
-         '     The "with" statement guarantees that if the "__enter__()" ' 
-         'method\n' 
-         '     returns without an error, then "__exit__()" will always be\n' 
+         '   Note:\n'
+         '\n'
+         '     The "with" statement guarantees that if the "__enter__()" '
+         'method\n'
+         '     returns without an error, then "__exit__()" will always be\n'
          '     called. Thus, if an error occurs during the assignment to the\n'
          '     target list, it will be treated the same as an error occurring\n'
          '     within the suite would be. See step 6 below.\n'
          '\n'
-         '6. The suite is executed.\n' 
+         '6. The suite is executed.\n'
          '\n'
-         '7. The context manager’s "__exit__()" method is invoked.  If an\n' 
+         '7. 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'
@@ -14269,41 +14269,41 @@ topics = {'assert': 'The "assert" statement\n'
          'proceeds\n'
          '   at the normal location for the kind of exit that was taken.\n'
          '\n'
-         'The following code:\n' 
-         '\n' 
-         '   with EXPRESSION as TARGET:\n' 
-         '       SUITE\n' 
-         '\n' 
-         'is semantically equivalent to:\n' 
-         '\n' 
-         '   manager = (EXPRESSION)\n' 
-         '   enter = type(manager).__enter__\n' 
-         '   exit = type(manager).__exit__\n' 
-         '   value = enter(manager)\n' 
-         '   hit_except = False\n' 
-         '\n' 
-         '   try:\n' 
-         '       TARGET = value\n' 
-         '       SUITE\n' 
-         '   except:\n' 
-         '       hit_except = True\n' 
-         '       if not exit(manager, *sys.exc_info()):\n' 
-         '           raise\n' 
-         '   finally:\n' 
-         '       if not hit_except:\n' 
-         '           exit(manager, None, None, None)\n' 
-         '\n' 
+         'The following code:\n'
+         '\n'
+         '   with EXPRESSION as TARGET:\n'
+         '       SUITE\n'
+         '\n'
+         'is semantically equivalent to:\n'
+         '\n'
+         '   manager = (EXPRESSION)\n'
+         '   enter = type(manager).__enter__\n'
+         '   exit = type(manager).__exit__\n'
+         '   value = enter(manager)\n'
+         '   hit_except = False\n'
+         '\n'
+         '   try:\n'
+         '       TARGET = value\n'
+         '       SUITE\n'
+         '   except:\n'
+         '       hit_except = True\n'
+         '       if not exit(manager, *sys.exc_info()):\n'
+         '           raise\n'
+         '   finally:\n'
+         '       if not hit_except:\n'
+         '           exit(manager, None, None, None)\n'
+         '\n'
          'With more than one item, the context managers are processed as if\n'
          'multiple "with" statements were nested:\n'
          '\n'
          '   with A() as a, B() as b:\n'
-         '       SUITE\n' 
+         '       SUITE\n'
          '\n'
-         'is semantically equivalent to:\n' 
+         'is semantically equivalent to:\n'
          '\n'
          '   with A() as a:\n'
          '       with B() as b:\n'
-         '           SUITE\n' 
+         '           SUITE\n'
          '\n'
          'Changed in version 3.1: Support for multiple context expressions.\n'
          '\n'
-- 
cgit v1.2.3