# -*- coding: utf-8 -*-
# Autogenerated by Sphinx on Tue Dec 17 11:49:52 2024
# as part of the release process.
topics = {'assert': 'The "assert" statement\n'
           '**********************\n'
           '\n'
           'Assert statements are a convenient way to insert debugging '
           'assertions\n'
           'into a program:\n'
           '\n'
           '   assert_stmt ::= "assert" expression ["," expression]\n'
           '\n'
           'The simple form, "assert expression", is equivalent to\n'
           '\n'
           '   if __debug__:\n'
           '       if not expression: raise AssertionError\n'
           '\n'
           'The extended form, "assert expression1, expression2", is '
           'equivalent to\n'
           '\n'
           '   if __debug__:\n'
           '       if not expression1: raise AssertionError(expression2)\n'
           '\n'
           'These equivalences assume that "__debug__" and "AssertionError" '
           'refer\n'
           'to the built-in variables with those names.  In the current\n'
           'implementation, the built-in variable "__debug__" is "True" under\n'
           'normal circumstances, "False" when optimization is requested '
           '(command\n'
           'line option "-O").  The current code generator emits no code for '
           'an\n'
           '"assert" statement when optimization is requested at compile '
           'time.\n'
           'Note that it is unnecessary to include the source code for the\n'
           'expression that failed in the error message; it will be displayed '
           'as\n'
           'part of the stack trace.\n'
           '\n'
           'Assignments to "__debug__" are illegal.  The value for the '
           'built-in\n'
           'variable is determined when the interpreter starts.\n',
 'assignment': 'Assignment statements\n'
               '*********************\n'
               '\n'
               'Assignment statements are used to (re)bind names to values and '
               'to\n'
               'modify attributes or items of mutable objects:\n'
               '\n'
               '   assignment_stmt ::= (target_list "=")+ (starred_expression '
               '| yield_expression)\n'
               '   target_list     ::= target ("," target)* [","]\n'
               '   target          ::= identifier\n'
               '              | "(" [target_list] ")"\n'
               '              | "[" [target_list] "]"\n'
               '              | attributeref\n'
               '              | subscription\n'
               '              | slicing\n'
               '              | "*" target\n'
               '\n'
               '(See section Primaries for the syntax definitions for '
               '*attributeref*,\n'
               '*subscription*, and *slicing*.)\n'
               '\n'
               'An assignment statement evaluates the expression list '
               '(remember that\n'
               'this can be a single expression or a comma-separated list, the '
               'latter\n'
               'yielding a tuple) and assigns the single resulting object to '
               'each of\n'
               'the target lists, from left to right.\n'
               '\n'
               'Assignment is defined recursively depending on the form of the '
               'target\n'
               '(list). When a target is part of a mutable object (an '
               'attribute\n'
               'reference, subscription or slicing), the mutable object must\n'
               'ultimately perform the assignment and decide about its '
               'validity, and\n'
               'may raise an exception if the assignment is unacceptable.  The '
               'rules\n'
               'observed by various types and the exceptions raised are given '
               'with the\n'
               'definition of the object types (see section The standard type\n'
               'hierarchy).\n'
               '\n'
               'Assignment of an object to a target list, optionally enclosed '
               'in\n'
               'parentheses or square brackets, is recursively defined as '
               'follows.\n'
               '\n'
               '* If the target list is a single target with no trailing '
               'comma,\n'
               '  optionally in parentheses, the object is assigned to that '
               'target.\n'
               '\n'
               '* Else:\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 '
               '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'
               '\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'
               '    assigned, from left to right, to the corresponding '
               'targets.\n'
               '\n'
               'Assignment of an object to a single target is recursively '
               'defined as\n'
               'follows.\n'
               '\n'
               '* If the target is an identifier (name):\n'
               '\n'
               '  * If the name does not occur in a "global" or "nonlocal" '
               'statement\n'
               '    in the current code block: the name is bound to the object '
               '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'
               '\n'
               '  The name is rebound if it was already bound.  This may cause '
               'the\n'
               '  reference count for the object previously bound to the name '
               'to reach\n'
               '  zero, causing the object to be deallocated and its '
               'destructor (if it\n'
               '  has one) to be called.\n'
               '\n'
               '* If the target is an attribute reference: The primary '
               'expression in\n'
               '  the reference is evaluated.  It should yield an object with\n'
               '  assignable attributes; if this is not the case, "TypeError" '
               'is\n'
               '  raised.  That object is then asked to assign the assigned '
               'object to\n'
               '  the given attribute; if it cannot perform the assignment, it '
               'raises\n'
               '  an exception (usually but not necessarily '
               '"AttributeError").\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'
               '\n'
               '     class Cls:\n'
               '         x = 3             # class variable\n'
               '     inst = Cls()\n'
               '     inst.x = inst.x + 1   # writes inst.x as 4 leaving Cls.x '
               'as 3\n'
               '\n'
               '  This description does not necessarily apply to descriptor\n'
               '  attributes, such as properties created with "property()".\n'
               '\n'
               '* If the target is a subscription: The primary expression in '
               'the\n'
               '  reference is evaluated.  It should yield either a mutable '
               'sequence\n'
               '  object (such as a list) or a mapping object (such as a '
               'dictionary).\n'
               '  Next, the subscript expression is evaluated.\n'
               '\n'
               '  If the primary is a mutable sequence object (such as a '
               'list), the\n'
               '  subscript must yield an integer.  If it is negative, the '
               'sequence’s\n'
               '  length is added to it.  The resulting value must be a '
               'nonnegative\n'
               '  integer less than the sequence’s length, and the sequence is '
               'asked\n'
               '  to assign the assigned object to its item with that index.  '
               'If the\n'
               '  index is out of range, "IndexError" is raised (assignment to '
               'a\n'
               '  subscripted sequence cannot add new items to a list).\n'
               '\n'
               '  If the primary is a mapping object (such as a dictionary), '
               'the\n'
               '  subscript must have a type compatible with the mapping’s key '
               'type,\n'
               '  and the mapping is then asked to create a key/value pair '
               'which maps\n'
               '  the subscript to the assigned object.  This can either '
               'replace an\n'
               '  existing key/value pair with the same key value, or insert a '
               'new\n'
               '  key/value pair (if no key with the same value existed).\n'
               '\n'
               '  For user-defined objects, the "__setitem__()" method is '
               '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 '
               '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 '
               'sequence,\n'
               '  thus changing the length of the target sequence, if the '
               'target\n'
               '  sequence allows it.\n'
               '\n'
               '**CPython implementation detail:** In the current '
               'implementation, the\n'
               'syntax for targets is taken to be the same as for expressions, '
               'and\n'
               'invalid syntax is rejected during the code generation phase, '
               'causing\n'
               'less detailed error messages.\n'
               '\n'
               'Although the definition of assignment implies that overlaps '
               'between\n'
               'the left-hand side and the right-hand side are ‘simultaneous’ '
               '(for\n'
               'example "a, b = b, a" swaps two variables), overlaps *within* '
               'the\n'
               'collection of assigned-to variables occur left-to-right, '
               'sometimes\n'
               'resulting in confusion.  For instance, the following program '
               'prints\n'
               '"[0, 2]":\n'
               '\n'
               '   x = [0, 1]\n'
               '   i = 0\n'
               '   i, x[i] = 1, 2         # i is updated, then x[i] is '
               'updated\n'
               '   print(x)\n'
               '\n'
               'See also:\n'
               '\n'
               '  **PEP 3132** - Extended Iterable Unpacking\n'
               '     The specification for the "*target" feature.\n'
               '\n'
               '\n'
               'Augmented assignment statements\n'
               '===============================\n'
               '\n'
               'Augmented assignment is the combination, in a single '
               'statement, of a\n'
               'binary operation and an assignment statement:\n'
               '\n'
               '   augmented_assignment_stmt ::= augtarget augop '
               '(expression_list | yield_expression)\n'
               '   augtarget                 ::= identifier | attributeref | '
               'subscription | slicing\n'
               '   augop                     ::= "+=" | "-=" | "*=" | "@=" | '
               '"/=" | "//=" | "%=" | "**="\n'
               '             | ">>=" | "<<=" | "&=" | "^=" | "|="\n'
               '\n'
               '(See section Primaries for the syntax definitions of the last '
               'three\n'
               'symbols.)\n'
               '\n'
               'An augmented assignment evaluates the target (which, unlike '
               'normal\n'
               'assignment statements, cannot be an unpacking) and the '
               'expression\n'
               'list, performs the binary operation specific to the type of '
               'assignment\n'
               'on the two operands, and assigns the result to the original '
               'target.\n'
               'The target is only evaluated once.\n'
               '\n'
               'An augmented assignment statement like "x += 1" can be '
               'rewritten as "x\n'
               '= x + 1" to achieve a similar, but not exactly equal effect. '
               'In the\n'
               'augmented version, "x" is only evaluated once. Also, when '
               'possible,\n'
               'the actual operation is performed *in-place*, meaning that '
               'rather than\n'
               'creating a new object and assigning that to the target, the '
               'old object\n'
               'is modified instead.\n'
               '\n'
               'Unlike normal assignments, augmented assignments evaluate the '
               'left-\n'
               'hand side *before* evaluating the right-hand side.  For '
               'example, "a[i]\n'
               '+= f(x)" first looks-up "a[i]", then it evaluates "f(x)" and '
               'performs\n'
               'the addition, and lastly, it writes the result back to '
               '"a[i]".\n'
               '\n'
               'With the exception of assigning to tuples and multiple targets '
               'in a\n'
               'single statement, the assignment done by augmented assignment\n'
               'statements is handled the same way as normal assignments. '
               'Similarly,\n'
               'with the exception of the possible *in-place* behavior, the '
               'binary\n'
               'operation performed by augmented assignment is the same as the '
               'normal\n'
               'binary operations.\n'
               '\n'
               'For targets which are attribute references, the same caveat '
               'about\n'
               'class and instance attributes applies as for regular '
               'assignments.\n'
               '\n'
               '\n'
               'Annotated assignment statements\n'
               '===============================\n'
               '\n'
               '*Annotation* assignment is the combination, in a single '
               'statement, of\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'
               '\n'
               'The difference from normal Assignment statements is that only '
               'a single\n'
               'target is allowed.\n'
               '\n'
               'The assignment target is considered “simple” if it consists of '
               'a\n'
               'single name that is not enclosed in parentheses. For simple '
               'assignment\n'
               'targets, if in class or module scope, the annotations are '
               'gathered in\n'
               'a lazily evaluated annotation scope. The annotations can be '
               'evaluated\n'
               'using the "__annotations__" attribute of a class or module, or '
               'using\n'
               'the facilities in the "annotationlib" module.\n'
               '\n'
               'If the assignment target is not simple (an attribute, '
               'subscript node,\n'
               'or parenthesized name), the annotation is never evaluated.\n'
               '\n'
               'If a name is annotated in a function scope, then this name is '
               'local\n'
               'for that scope. Annotations are never evaluated and stored in '
               'function\n'
               'scopes.\n'
               '\n'
               'If the right hand side is present, an annotated assignment '
               'performs\n'
               'the actual assignment as if there was no annotation present. '
               'If the\n'
               'right hand side is not present for an expression target, then '
               'the\n'
               'interpreter evaluates the target except for the last '
               '"__setitem__()"\n'
               'or "__setattr__()" call.\n'
               '\n'
               'See also:\n'
               '\n'
               '  **PEP 526** - Syntax for Variable Annotations\n'
               '     The proposal that added syntax for annotating the types '
               'of\n'
               '     variables (including class variables and instance '
               'variables),\n'
               '     instead of expressing them through comments.\n'
               '\n'
               '  **PEP 484** - Type hints\n'
               '     The proposal that added the "typing" module to provide a '
               '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 the '
               'same\n'
               'expressions in the right hand side as regular assignments. '
               'Previously,\n'
               'some expressions (like un-parenthesized tuple expressions) '
               'caused a\n'
               'syntax error.\n'
               '\n'
               'Changed in version 3.14: Annotations are now lazily evaluated '
               'in a\n'
               'separate annotation scope. If the assignment target is not '
               'simple,\n'
               'annotations are never evaluated.\n',
 'assignment-expressions': 'Assignment expressions\n'
                           '**********************\n'
                           '\n'
                           '   assignment_expression ::= [identifier ":="] '
                           'expression\n'
                           '\n'
                           'An assignment expression (sometimes also called a '
                           '“named expression”\n'
                           'or “walrus”) assigns an "expression" to an '
                           '"identifier", while also\n'
                           'returning the value of the "expression".\n'
                           '\n'
                           'One common use case is when handling matched '
                           'regular expressions:\n'
                           '\n'
                           '   if matching := pattern.search(data):\n'
                           '       do_something(matching)\n'
                           '\n'
                           'Or, when processing a file stream in chunks:\n'
                           '\n'
                           '   while chunk := file.read(9000):\n'
                           '       process(chunk)\n'
                           '\n'
                           'Assignment expressions must be surrounded by '
                           'parentheses when used as\n'
                           'expression statements and when used as '
                           'sub-expressions in slicing,\n'
                           'conditional, lambda, keyword-argument, and '
                           'comprehension-if\n'
                           'expressions and in "assert", "with", and '
                           '"assignment" statements. In\n'
                           'all other places where they can be used, '
                           'parentheses are not required,\n'
                           'including in "if" and "while" statements.\n'
                           '\n'
                           'Added in version 3.8: See **PEP 572** for more '
                           'details about\n'
                           'assignment expressions.\n',
 'async': 'Coroutines\n'
          '**********\n'
          '\n'
          'Added in version 3.5.\n'
          '\n'
          '\n'
          'Coroutine function definition\n'
          '=============================\n'
          '\n'
          '   async_funcdef ::= [decorators] "async" "def" funcname "(" '
          '[parameter_list] ")"\n'
          '                     ["->" expression] ":" suite\n'
          '\n'
          'Execution of Python coroutines can be suspended and resumed at '
          'many\n'
          'points (see *coroutine*). "await" expressions, "async for" and '
          '"async\n'
          'with" can only be used in the body of a coroutine function.\n'
          '\n'
          'Functions defined with "async def" syntax are always coroutine\n'
          'functions, even if they do not contain "await" or "async" '
          'keywords.\n'
          '\n'
          'It is a "SyntaxError" to use a "yield from" expression inside the '
          'body\n'
          'of a coroutine function.\n'
          '\n'
          'An example of a coroutine function:\n'
          '\n'
          '   async def func(param1, param2):\n'
          '       do_stuff()\n'
          '       await some_coroutine()\n'
          '\n'
          'Changed in version 3.7: "await" and "async" are now keywords;\n'
          'previously they were only treated as such inside the body of a\n'
          'coroutine function.\n'
          '\n'
          '\n'
          'The "async for" statement\n'
          '=========================\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'
          '\n'
          'The "async for" statement allows convenient iteration over\n'
          'asynchronous iterables.\n'
          '\n'
          'The following code:\n'
          '\n'
          '   async for TARGET in ITER:\n'
          '       SUITE\n'
          '   else:\n'
          '       SUITE2\n'
          '\n'
          'Is semantically equivalent to:\n'
          '\n'
          '   iter = (ITER)\n'
          '   iter = type(iter).__aiter__(iter)\n'
          '   running = True\n'
          '\n'
          '   while running:\n'
          '       try:\n'
          '           TARGET = await type(iter).__anext__(iter)\n'
          '       except StopAsyncIteration:\n'
          '           running = False\n'
          '       else:\n'
          '           SUITE\n'
          '   else:\n'
          '       SUITE2\n'
          '\n'
          'See also "__aiter__()" and "__anext__()" for details.\n'
          '\n'
          'It is a "SyntaxError" to use an "async for" statement outside the '
          'body\n'
          'of a coroutine function.\n'
          '\n'
          '\n'
          'The "async with" statement\n'
          '==========================\n'
          '\n'
          '   async_with_stmt ::= "async" with_stmt\n'
          '\n'
          'An *asynchronous context manager* is a *context manager* that is '
          'able\n'
          'to suspend execution in its *enter* and *exit* methods.\n'
          '\n'
          'The following code:\n'
          '\n'
          '   async with EXPRESSION as TARGET:\n'
          '       SUITE\n'
          '\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'
          '\n'
          '   try:\n'
          '       TARGET = value\n'
          '       SUITE\n'
          '   except:\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'
          '\n'
          'See also "__aenter__()" and "__aexit__()" for details.\n'
          '\n'
          'It is a "SyntaxError" to use an "async with" statement outside the\n'
          'body of a coroutine function.\n'
          '\n'
          'See also:\n'
          '\n'
          '  **PEP 492** - Coroutines with async and await syntax\n'
          '     The proposal that made coroutines a proper standalone concept '
          'in\n'
          '     Python, and added supporting syntax.\n',
 'atom-identifiers': 'Identifiers (Names)\n'
                     '*******************\n'
                     '\n'
                     'An identifier occurring as an atom is a name.  See '
                     'section Identifiers\n'
                     'and keywords for lexical definition and section Naming '
                     'and binding for\n'
                     'documentation of naming and binding.\n'
                     '\n'
                     'When the name is bound to an object, evaluation of the '
                     'atom yields\n'
                     'that object. When a name is not bound, an attempt to '
                     'evaluate it\n'
                     'raises a "NameError" exception.\n'
                     '\n'
                     '\n'
                     'Private name mangling\n'
                     '=====================\n'
                     '\n'
                     'When an identifier that textually occurs in a class '
                     'definition begins\n'
                     'with two or more underscore characters and does not end '
                     'in two or more\n'
                     'underscores, it is considered a *private name* of that '
                     'class.\n'
                     '\n'
                     'See also: The class specifications.\n'
                     '\n'
                     'More precisely, private names are transformed to a '
                     'longer form before\n'
                     'code is generated for them.  If the transformed name is '
                     'longer than\n'
                     '255 characters, implementation-defined truncation may '
                     'happen.\n'
                     '\n'
                     'The transformation is independent of the syntactical '
                     'context in which\n'
                     'the identifier is used but only the following private '
                     'identifiers are\n'
                     'mangled:\n'
                     '\n'
                     '* Any name used as the name of a variable that is '
                     'assigned or read or\n'
                     '  any name of an attribute being accessed.\n'
                     '\n'
                     '  The "__name__" attribute of nested functions, classes, '
                     'and type\n'
                     '  aliases is however not mangled.\n'
                     '\n'
                     '* The name of imported modules, e.g., "__spam" in '
                     '"import __spam". If\n'
                     '  the module is part of a package (i.e., its name '
                     'contains a dot), the\n'
                     '  name is *not* mangled, e.g., the "__foo" in "import '
                     '__foo.bar" is\n'
                     '  not mangled.\n'
                     '\n'
                     '* The name of an imported member, e.g., "__f" in "from '
                     'spam import\n'
                     '  __f".\n'
                     '\n'
                     'The transformation rule is defined as follows:\n'
                     '\n'
                     '* The class name, with leading underscores removed and a '
                     'single\n'
                     '  leading underscore inserted, is inserted in front of '
                     'the identifier,\n'
                     '  e.g., the identifier "__spam" occurring in a class '
                     'named "Foo",\n'
                     '  "_Foo" or "__Foo" is transformed to "_Foo__spam".\n'
                     '\n'
                     '* If the class name consists only of underscores, the '
                     'transformation\n'
                     '  is the identity, e.g., the identifier "__spam" '
                     'occurring in a class\n'
                     '  named "_" or "__" is left as is.\n',
 'atom-literals': 'Literals\n'
                  '********\n'
                  '\n'
                  'Python supports string and bytes literals and various '
                  'numeric\n'
                  'literals:\n'
                  '\n'
                  '   literal ::= stringliteral | bytesliteral\n'
                  '               | integer | floatnumber | imagnumber\n'
                  '\n'
                  'Evaluation of a literal yields an object of the given type '
                  '(string,\n'
                  'bytes, integer, floating-point number, complex number) with '
                  'the given\n'
                  'value.  The value may be approximated in the case of '
                  'floating-point\n'
                  'and imaginary (complex) literals.  See section Literals for '
                  'details.\n'
                  '\n'
                  'All literals correspond to immutable data types, and hence '
                  'the\n'
                  'object’s identity is less important than its value.  '
                  'Multiple\n'
                  'evaluations of literals with the same value (either the '
                  'same\n'
                  'occurrence in the program text or a different occurrence) '
                  'may obtain\n'
                  'the same object or a different object with the same '
                  'value.\n',
 'attribute-access': 'Customizing attribute access\n'
                     '****************************\n'
                     '\n'
                     'The following methods can be defined to customize the '
                     'meaning of\n'
                     'attribute access (use of, assignment to, or deletion of '
                     '"x.name") for\n'
                     'class instances.\n'
                     '\n'
                     'object.__getattr__(self, name)\n'
                     '\n'
                     '   Called when the default attribute access fails with '
                     'an\n'
                     '   "AttributeError" (either "__getattribute__()" raises '
                     'an\n'
                     '   "AttributeError" because *name* is not an instance '
                     'attribute or an\n'
                     '   attribute in the class tree for "self"; or '
                     '"__get__()" of a *name*\n'
                     '   property raises "AttributeError").  This method '
                     'should either\n'
                     '   return the (computed) attribute value or raise an '
                     '"AttributeError"\n'
                     '   exception. The "object" class itself does not provide '
                     'this method.\n'
                     '\n'
                     '   Note that if the attribute is found through the '
                     'normal mechanism,\n'
                     '   "__getattr__()" is not called.  (This is an '
                     'intentional asymmetry\n'
                     '   between "__getattr__()" and "__setattr__()".) This is '
                     'done both for\n'
                     '   efficiency reasons and because otherwise '
                     '"__getattr__()" would have\n'
                     '   no way to access other attributes of the instance.  '
                     'Note that at\n'
                     '   least for instance variables, you can take total '
                     'control by not\n'
                     '   inserting any values in the instance attribute '
                     'dictionary (but\n'
                     '   instead inserting them in another object).  See the\n'
                     '   "__getattribute__()" method below for a way to '
                     'actually get total\n'
                     '   control over attribute access.\n'
                     '\n'
                     'object.__getattribute__(self, name)\n'
                     '\n'
                     '   Called unconditionally to implement attribute '
                     'accesses for\n'
                     '   instances of the class. If the class also defines '
                     '"__getattr__()",\n'
                     '   the latter will not be called unless '
                     '"__getattribute__()" either\n'
                     '   calls it explicitly or raises an "AttributeError". '
                     'This method\n'
                     '   should return the (computed) attribute value or raise '
                     'an\n'
                     '   "AttributeError" exception. In order to avoid '
                     'infinite recursion in\n'
                     '   this method, its implementation should always call '
                     'the base class\n'
                     '   method with the same name to access any attributes it '
                     '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'
                     'object.__setattr__(self, name, value)\n'
                     '\n'
                     '   Called when an attribute assignment is attempted.  '
                     'This is called\n'
                     '   instead of the normal mechanism (i.e. store the value '
                     'in the\n'
                     '   instance dictionary). *name* is the attribute name, '
                     '*value* is the\n'
                     '   value to be assigned to it.\n'
                     '\n'
                     '   If "__setattr__()" wants to assign to an instance '
                     'attribute, it\n'
                     '   should call the base class method with the same name, '
                     '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'
                     'object.__delattr__(self, name)\n'
                     '\n'
                     '   Like "__setattr__()" but for attribute deletion '
                     'instead of\n'
                     '   assignment.  This should only be implemented if "del '
                     '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'
                     'object.__dir__(self)\n'
                     '\n'
                     '   Called when "dir()" is called on the object. An '
                     'iterable must be\n'
                     '   returned. "dir()" converts the returned iterable to a '
                     'list and\n'
                     '   sorts it.\n'
                     '\n'
                     '\n'
                     'Customizing module attribute access\n'
                     '===================================\n'
                     '\n'
                     'Special names "__getattr__" and "__dir__" can be also '
                     'used to\n'
                     'customize access to module attributes. The "__getattr__" '
                     'function at\n'
                     'the module level should accept one argument which is the '
                     'name of an\n'
                     'attribute and return the computed value or raise an '
                     '"AttributeError".\n'
                     'If an attribute is not found on a module object through '
                     'the normal\n'
                     'lookup, i.e. "object.__getattribute__()", then '
                     '"__getattr__" is\n'
                     'searched in the module "__dict__" before raising an '
                     '"AttributeError".\n'
                     'If found, it is called with the attribute name and the '
                     'result is\n'
                     'returned.\n'
                     '\n'
                     'The "__dir__" function should accept no arguments, and '
                     'return an\n'
                     'iterable 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 (setting\n'
                     'attributes, properties, etc.), one can set the '
                     '"__class__" attribute\n'
                     'of a module object to a subclass of "types.ModuleType". '
                     'For example:\n'
                     '\n'
                     '   import sys\n'
                     '   from types import ModuleType\n'
                     '\n'
                     '   class VerboseModule(ModuleType):\n'
                     '       def __repr__(self):\n'
                     "           return f'Verbose {self.__name__}'\n"
                     '\n'
                     '       def __setattr__(self, attr, value):\n'
                     "           print(f'Setting {attr}...')\n"
                     '           super().__setattr__(attr, value)\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'
                     'Changed in version 3.5: "__class__" module attribute is '
                     'now writable.\n'
                     '\n'
                     'Added in version 3.7: "__getattr__" and "__dir__" module '
                     'attributes.\n'
                     '\n'
                     'See also:\n'
                     '\n'
                     '  **PEP 562** - Module __getattr__ and __dir__\n'
                     '     Describes the "__getattr__" and "__dir__" functions '
                     'on modules.\n'
                     '\n'
                     '\n'
                     'Implementing Descriptors\n'
                     '========================\n'
                     '\n'
                     'The following methods only apply when an instance of the '
                     'class\n'
                     'containing the method (a so-called *descriptor* class) '
                     'appears in an\n'
                     '*owner* class (the descriptor must be in either the '
                     'owner’s class\n'
                     'dictionary or in the class dictionary for one of its '
                     'parents).  In the\n'
                     'examples below, “the attribute” refers to the attribute '
                     'whose name is\n'
                     'the key of the property in the owner class’ "__dict__".  '
                     'The "object"\n'
                     'class itself does not implement any of these protocols.\n'
                     '\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'
                     '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'
                     'object.__delete__(self, instance)\n'
                     '\n'
                     '   Called to delete the attribute on an instance '
                     '*instance* of the\n'
                     '   owner class.\n'
                     '\n'
                     'Instances of descriptors may also have the '
                     '"__objclass__" attribute\n'
                     'present:\n'
                     '\n'
                     'object.__objclass__\n'
                     '\n'
                     '   The attribute "__objclass__" is interpreted by the '
                     '"inspect" module\n'
                     '   as specifying the class where this object was defined '
                     '(setting this\n'
                     '   appropriately can assist in runtime introspection of '
                     'dynamic class\n'
                     '   attributes). For callables, it may indicate that an '
                     'instance of the\n'
                     '   given type (or a subclass) is expected or required as '
                     'the first\n'
                     '   positional argument (for example, CPython sets this '
                     'attribute for\n'
                     '   unbound methods that are implemented in C).\n'
                     '\n'
                     '\n'
                     'Invoking Descriptors\n'
                     '====================\n'
                     '\n'
                     'In general, a descriptor is an object attribute with '
                     '“binding\n'
                     'behavior”, one whose attribute access has been '
                     'overridden by methods\n'
                     'in the descriptor protocol:  "__get__()", "__set__()", '
                     'and\n'
                     '"__delete__()". If any of those methods are defined for '
                     'an object, it\n'
                     'is said to be a descriptor.\n'
                     '\n'
                     'The default behavior for attribute access is to get, '
                     'set, or delete\n'
                     'the attribute from an object’s dictionary. For instance, '
                     '"a.x" has a\n'
                     'lookup chain starting with "a.__dict__[\'x\']", then\n'
                     '"type(a).__dict__[\'x\']", and continuing through the '
                     'base classes of\n'
                     '"type(a)" excluding metaclasses.\n'
                     '\n'
                     'However, if the looked-up value is an object defining '
                     'one of the\n'
                     'descriptor methods, then Python may override the default '
                     'behavior and\n'
                     'invoke the descriptor method instead.  Where this occurs '
                     'in the\n'
                     'precedence chain depends on which descriptor methods '
                     'were defined and\n'
                     'how they were called.\n'
                     '\n'
                     'The starting point for descriptor invocation is a '
                     'binding, "a.x". How\n'
                     'the arguments are assembled depends on "a":\n'
                     '\n'
                     'Direct Call\n'
                     '   The simplest and least common call is when user code '
                     'directly\n'
                     '   invokes a descriptor method:    "x.__get__(a)".\n'
                     '\n'
                     'Instance Binding\n'
                     '   If binding to an object instance, "a.x" is '
                     'transformed into the\n'
                     '   call: "type(a).__dict__[\'x\'].__get__(a, type(a))".\n'
                     '\n'
                     'Class Binding\n'
                     '   If binding to a class, "A.x" is transformed into the '
                     'call:\n'
                     '   "A.__dict__[\'x\'].__get__(None, A)".\n'
                     '\n'
                     'Super Binding\n'
                     '   A dotted lookup such as "super(A, a).x" searches\n'
                     '   "a.__class__.__mro__" for a base class "B" following '
                     '"A" and then\n'
                     '   returns "B.__dict__[\'x\'].__get__(a, A)".  If not a '
                     'descriptor, "x"\n'
                     '   is returned unchanged.\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'
                     'does not define "__get__()", then accessing the '
                     'attribute will return\n'
                     'the descriptor object itself unless there is a value in '
                     'the object’s\n'
                     'instance dictionary.  If the descriptor defines '
                     '"__set__()" and/or\n'
                     '"__delete__()", it is a data descriptor; if it defines '
                     'neither, it is\n'
                     'a non-data descriptor.  Normally, data descriptors '
                     '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'
                     '\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'
                     'Accordingly, instances cannot override the behavior of a '
                     'property.\n'
                     '\n'
                     '\n'
                     '__slots__\n'
                     '=========\n'
                     '\n'
                     '*__slots__* allow us to explicitly declare data members '
                     '(like\n'
                     '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. Attribute\n'
                     'lookup speed can be significantly improved as well.\n'
                     '\n'
                     'object.__slots__\n'
                     '\n'
                     '   This class variable can be assigned a string, '
                     'iterable, or sequence\n'
                     '   of strings with variable names used by instances.  '
                     '*__slots__*\n'
                     '   reserves space for the declared variables and '
                     'prevents the\n'
                     '   automatic creation of "__dict__" and *__weakref__* '
                     'for each\n'
                     '   instance.\n'
                     '\n'
                     'Notes on using *__slots__*:\n'
                     '\n'
                     '* When inheriting from a class without *__slots__*, the '
                     '"__dict__" and\n'
                     '  *__weakref__* attribute of the instances will always '
                     'be accessible.\n'
                     '\n'
                     '* Without a "__dict__" variable, instances cannot be '
                     'assigned new\n'
                     '  variables not listed in the *__slots__* definition.  '
                     'Attempts to\n'
                     '  assign to an unlisted variable name raises '
                     '"AttributeError". If\n'
                     '  dynamic assignment of new variables is desired, then '
                     'add\n'
                     '  "\'__dict__\'" to the sequence of strings in the '
                     '*__slots__*\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'
                     '\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'
                     '\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, instances of a child '
                     'subclass will get a\n'
                     '  "__dict__" and *__weakref__* unless the subclass also '
                     'defines\n'
                     '  *__slots__* (which should only contain names of any '
                     '*additional*\n'
                     '  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'
                     '  check may be added to prevent this.\n'
                     '\n'
                     '* "TypeError" will be raised if nonempty *__slots__* are '
                     'defined for a\n'
                     '  class derived from a ""variable-length" built-in type" '
                     'such as\n'
                     '  "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 same\n'
                     '  *__slots__*.\n'
                     '\n'
                     '* Multiple inheritance with multiple slotted parent '
                     'classes can be\n'
                     '  used, but only one parent is allowed to have '
                     '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',
 'attribute-references': 'Attribute references\n'
                         '********************\n'
                         '\n'
                         'An attribute reference is a primary followed by a '
                         'period and a name:\n'
                         '\n'
                         '   attributeref ::= primary "." identifier\n'
                         '\n'
                         'The primary must evaluate to an object of a type '
                         'that supports\n'
                         'attribute references, which most objects do.  This '
                         'object is then\n'
                         'asked to produce the attribute whose name is the '
                         'identifier. The type\n'
                         'and value produced is determined by the object.  '
                         'Multiple evaluations\n'
                         'of the same attribute reference may yield different '
                         'objects.\n'
                         '\n'
                         'This production can be customized by overriding the\n'
                         '"__getattribute__()" method or the "__getattr__()" '
                         'method.  The\n'
                         '"__getattribute__()" method is called first and '
                         'either returns a value\n'
                         'or raises "AttributeError" if the attribute is not '
                         'available.\n'
                         '\n'
                         'If an "AttributeError" is raised and the object has '
                         'a "__getattr__()"\n'
                         'method, that method is called as a fallback.\n',
 'augassign': 'Augmented assignment statements\n'
              '*******************************\n'
              '\n'
              'Augmented assignment is the combination, in a single statement, '
              'of a\n'
              'binary operation and an assignment statement:\n'
              '\n'
              '   augmented_assignment_stmt ::= augtarget augop '
              '(expression_list | yield_expression)\n'
              '   augtarget                 ::= identifier | attributeref | '
              'subscription | slicing\n'
              '   augop                     ::= "+=" | "-=" | "*=" | "@=" | '
              '"/=" | "//=" | "%=" | "**="\n'
              '             | ">>=" | "<<=" | "&=" | "^=" | "|="\n'
              '\n'
              '(See section Primaries for the syntax definitions of the last '
              'three\n'
              'symbols.)\n'
              '\n'
              'An augmented assignment evaluates the target (which, unlike '
              'normal\n'
              'assignment statements, cannot be an unpacking) and the '
              'expression\n'
              'list, performs the binary operation specific to the type of '
              'assignment\n'
              'on the two operands, and assigns the result to the original '
              'target.\n'
              'The target is only evaluated once.\n'
              '\n'
              'An augmented assignment statement like "x += 1" can be '
              'rewritten as "x\n'
              '= x + 1" to achieve a similar, but not exactly equal effect. In '
              'the\n'
              'augmented version, "x" is only evaluated once. Also, when '
              'possible,\n'
              'the actual operation is performed *in-place*, meaning that '
              'rather than\n'
              'creating a new object and assigning that to the target, the old '
              'object\n'
              'is modified instead.\n'
              '\n'
              'Unlike normal assignments, augmented assignments evaluate the '
              'left-\n'
              'hand side *before* evaluating the right-hand side.  For '
              'example, "a[i]\n'
              '+= f(x)" first looks-up "a[i]", then it evaluates "f(x)" and '
              'performs\n'
              'the addition, and lastly, it writes the result back to "a[i]".\n'
              '\n'
              'With the exception of assigning to tuples and multiple targets '
              'in a\n'
              'single statement, the assignment done by augmented assignment\n'
              'statements is handled the same way as normal assignments. '
              'Similarly,\n'
              'with the exception of the possible *in-place* behavior, the '
              'binary\n'
              'operation performed by augmented assignment is the same as the '
              'normal\n'
              'binary operations.\n'
              '\n'
              'For targets which are attribute references, the same caveat '
              'about\n'
              'class and instance attributes applies as for regular '
              'assignments.\n',
 'await': 'Await expression\n'
          '****************\n'
          '\n'
          'Suspend the execution of *coroutine* on an *awaitable* object. Can\n'
          'only be used inside a *coroutine function*.\n'
          '\n'
          '   await_expr ::= "await" primary\n'
          '\n'
          'Added in version 3.5.\n',
 'binary': 'Binary arithmetic operations\n'
           '****************************\n'
           '\n'
           'The binary arithmetic operations have the conventional priority\n'
           'levels.  Note that some of these operations also apply to certain '
           'non-\n'
           'numeric types.  Apart from the power operator, there are only two\n'
           'levels, one for multiplicative operators and one for additive\n'
           'operators:\n'
           '\n'
           '   m_expr ::= u_expr | m_expr "*" u_expr | m_expr "@" m_expr |\n'
           '              m_expr "//" u_expr | m_expr "/" u_expr |\n'
           '              m_expr "%" u_expr\n'
           '   a_expr ::= m_expr | a_expr "+" m_expr | a_expr "-" m_expr\n'
           '\n'
           'The "*" (multiplication) operator yields the product of its '
           'arguments.\n'
           'The arguments must either both be numbers, or one argument must be '
           'an\n'
           'integer and the other must be a sequence. In the former case, the\n'
           'numbers are converted to a common real type and then multiplied\n'
           'together.  In the latter case, sequence repetition is performed; '
           'a\n'
           'negative repetition factor yields an empty sequence.\n'
           '\n'
           'This operation can be customized using the special "__mul__()" '
           'and\n'
           '"__rmul__()" methods.\n'
           '\n'
           'Changed in version 3.14: If only one operand is a complex number, '
           'the\n'
           'other operand is converted to a floating-point number.\n'
           '\n'
           'The "@" (at) operator is intended to be used for matrix\n'
           'multiplication.  No builtin Python types implement this operator.\n'
           '\n'
           'This operation can be customized using the special "__matmul__()" '
           'and\n'
           '"__rmatmul__()" methods.\n'
           '\n'
           'Added in version 3.5.\n'
           '\n'
           'The "/" (division) and "//" (floor division) operators yield the\n'
           'quotient of their arguments.  The numeric arguments are first\n'
           'converted to a common type. Division of integers yields a float, '
           'while\n'
           'floor division of integers results in an integer; the result is '
           'that\n'
           'of mathematical division with the ‘floor’ function applied to the\n'
           'result.  Division by zero raises the "ZeroDivisionError" '
           'exception.\n'
           '\n'
           'The division operation can be customized using the special\n'
           '"__truediv__()" and "__rtruediv__()" methods. The floor division\n'
           'operation can be customized using the special "__floordiv__()" '
           'and\n'
           '"__rfloordiv__()" methods.\n'
           '\n'
           'The "%" (modulo) operator yields the remainder from the division '
           'of\n'
           'the first argument by the second.  The numeric arguments are '
           'first\n'
           'converted to a common type.  A zero right argument raises the\n'
           '"ZeroDivisionError" exception.  The arguments may be '
           'floating-point\n'
           'numbers, e.g., "3.14%0.7" equals "0.34" (since "3.14" equals '
           '"4*0.7 +\n'
           '0.34".)  The modulo operator always yields a result with the same '
           'sign\n'
           'as its second operand (or zero); the absolute value of the result '
           'is\n'
           'strictly smaller than the absolute value of the second operand '
           '[1].\n'
           '\n'
           'The floor division and modulo operators are connected by the '
           'following\n'
           'identity: "x == (x//y)*y + (x%y)".  Floor division and modulo are '
           'also\n'
           'connected with the built-in function "divmod()": "divmod(x, y) ==\n'
           '(x//y, x%y)". [2].\n'
           '\n'
           'In addition to performing the modulo operation on numbers, the '
           '"%"\n'
           'operator is also overloaded by string objects to perform '
           'old-style\n'
           'string formatting (also known as interpolation).  The syntax for\n'
           'string formatting is described in the Python Library Reference,\n'
           'section printf-style String Formatting.\n'
           '\n'
           'The *modulo* operation can be customized using the special '
           '"__mod__()"\n'
           'and "__rmod__()" methods.\n'
           '\n'
           'The floor division operator, the modulo operator, and the '
           '"divmod()"\n'
           'function are not defined for complex numbers.  Instead, convert to '
           'a\n'
           'floating-point number using the "abs()" function if appropriate.\n'
           '\n'
           'The "+" (addition) operator yields the sum of its arguments.  The\n'
           'arguments must either both be numbers or both be sequences of the '
           'same\n'
           'type.  In the former case, the numbers are converted to a common '
           'real\n'
           'type 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'
           'Changed in version 3.14: If only one operand is a complex number, '
           'the\n'
           'other operand is converted to a floating-point number.\n'
           '\n'
           'The "-" (subtraction) operator yields the difference of its '
           'arguments.\n'
           'The numeric arguments are first converted to a common real type.\n'
           '\n'
           'This operation can be customized using the special "__sub__()" '
           'and\n'
           '"__rsub__()" methods.\n'
           '\n'
           'Changed in version 3.14: If only one operand is a complex number, '
           'the\n'
           'other operand is converted to a floating-point number.\n',
 'bitwise': 'Binary bitwise operations\n'
            '*************************\n'
            '\n'
            'Each of the three bitwise operations has a different priority '
            'level:\n'
            '\n'
            '   and_expr ::= shift_expr | and_expr "&" shift_expr\n'
            '   xor_expr ::= and_expr | xor_expr "^" and_expr\n'
            '   or_expr  ::= xor_expr | or_expr "|" xor_expr\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'
            '\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'
            '\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',
 'bltin-code-objects': 'Code Objects\n'
                       '************\n'
                       '\n'
                       'Code objects are used by the implementation to '
                       'represent “pseudo-\n'
                       'compiled” executable Python code such as a function '
                       'body. They differ\n'
                       'from function objects because they don’t contain a '
                       'reference to their\n'
                       'global execution environment.  Code objects are '
                       'returned by the built-\n'
                       'in "compile()" function and can be extracted from '
                       'function objects\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'
                       'A code object can be executed or evaluated by passing '
                       'it (instead of a\n'
                       'source string) to the "exec()" or "eval()"  built-in '
                       'functions.\n'
                       '\n'
                       'See The standard type hierarchy for more '
                       'information.\n',
 'bltin-ellipsis-object': 'The Ellipsis Object\n'
                          '*******************\n'
                          '\n'
                          'This object is commonly used by slicing (see '
                          'Slicings).  It supports\n'
                          'no special operations.  There is exactly one '
                          'ellipsis object, named\n'
                          '"Ellipsis" (a built-in name).  "type(Ellipsis)()" '
                          'produces the\n'
                          '"Ellipsis" singleton.\n'
                          '\n'
                          'It is written as "Ellipsis" or "...".\n',
 'bltin-null-object': 'The Null Object\n'
                      '***************\n'
                      '\n'
                      'This object is returned by functions that don’t '
                      'explicitly return a\n'
                      'value.  It supports no special operations.  There is '
                      'exactly one null\n'
                      'object, named "None" (a built-in name).  "type(None)()" '
                      'produces the\n'
                      'same singleton.\n'
                      '\n'
                      'It is written as "None".\n',
 'bltin-type-objects': 'Type Objects\n'
                       '************\n'
                       '\n'
                       'Type objects represent the various object types.  An '
                       'object’s type is\n'
                       'accessed by the built-in function "type()".  There are '
                       'no special\n'
                       'operations on types.  The standard module "types" '
                       'defines names for\n'
                       'all standard built-in types.\n'
                       '\n'
                       'Types are written like this: "<class \'int\'>".\n',
 'booleans': 'Boolean operations\n'
             '******************\n'
             '\n'
             '   or_test  ::= and_test | or_test "or" and_test\n'
             '   and_test ::= not_test | and_test "and" not_test\n'
             '   not_test ::= comparison | "not" not_test\n'
             '\n'
             'In the context of Boolean operations, and also when expressions '
             'are\n'
             'used by control flow statements, the following values are '
             'interpreted\n'
             'as false: "False", "None", numeric zero of all types, and empty\n'
             'strings and containers (including strings, tuples, lists,\n'
             'dictionaries, sets and frozensets).  All other values are '
             'interpreted\n'
             'as true.  User-defined objects can customize their truth value '
             'by\n'
             'providing a "__bool__()" method.\n'
             '\n'
             'The operator "not" yields "True" if its argument is false, '
             '"False"\n'
             'otherwise.\n'
             '\n'
             'The expression "x and y" first evaluates *x*; if *x* is false, '
             'its\n'
             'value is returned; otherwise, *y* is evaluated and the resulting '
             'value\n'
             'is returned.\n'
             '\n'
             'The expression "x or y" first evaluates *x*; if *x* is true, its '
             'value\n'
             'is returned; otherwise, *y* is evaluated and the resulting value '
             'is\n'
             'returned.\n'
             '\n'
             'Note that neither "and" nor "or" restrict the value and type '
             'they\n'
             'return to "False" and "True", but rather return the last '
             'evaluated\n'
             'argument.  This is sometimes useful, e.g., if "s" is a string '
             'that\n'
             'should be replaced by a default value if it is empty, the '
             'expression\n'
             '"s or \'foo\'" yields the desired value.  Because "not" has to '
             'create a\n'
             'new value, it returns a boolean value regardless of the type of '
             'its\n'
             'argument (for example, "not \'foo\'" produces "False" rather '
             'than "\'\'".)\n',
 'break': 'The "break" statement\n'
          '*********************\n'
          '\n'
          '   break_stmt ::= "break"\n'
          '\n'
          '"break" 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.\n'
          '\n'
          'It terminates the nearest enclosing loop, skipping the optional '
          '"else"\n'
          'clause if the loop has one.\n'
          '\n'
          'If a "for" loop is terminated by "break", the loop control target\n'
          'keeps its current value.\n'
          '\n'
          'When "break" passes control out of a "try" statement with a '
          '"finally"\n'
          'clause, that "finally" clause is executed before really leaving '
          'the\n'
          'loop.\n',
 'callable-types': 'Emulating callable objects\n'
                   '**************************\n'
                   '\n'
                   'object.__call__(self[, args...])\n'
                   '\n'
                   '   Called when the instance is “called” as a function; if '
                   'this method\n'
                   '   is defined, "x(arg1, arg2, ...)" roughly translates to\n'
                   '   "type(x).__call__(x, arg1, ...)". The "object" class '
                   'itself does\n'
                   '   not provide this method.\n',
 'calls': 'Calls\n'
          '*****\n'
          '\n'
          'A call calls a callable object (e.g., a *function*) with a '
          'possibly\n'
          'empty series of *arguments*:\n'
          '\n'
          '   call                 ::= primary "(" [argument_list [","] | '
          'comprehension] ")"\n'
          '   argument_list        ::= positional_arguments ["," '
          'starred_and_keywords]\n'
          '                       ["," keywords_arguments]\n'
          '                     | starred_and_keywords ["," '
          'keywords_arguments]\n'
          '                     | keywords_arguments\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'
          '   keywords_arguments   ::= (keyword_item | "**" expression)\n'
          '                          ("," keyword_item | "," "**" '
          'expression)*\n'
          '   keyword_item         ::= identifier "=" expression\n'
          '\n'
          'An optional trailing comma may be present after the positional and\n'
          'keyword arguments but does not affect the semantics.\n'
          '\n'
          'The primary must evaluate to a callable object (user-defined\n'
          'functions, built-in functions, methods of built-in objects, class\n'
          'objects, methods of class instances, and all objects having a\n'
          '"__call__()" method are callable).  All argument expressions are\n'
          'evaluated before the call is attempted.  Please refer to section\n'
          'Function definitions for the syntax of formal *parameter* lists.\n'
          '\n'
          'If keyword arguments are present, they are first converted to\n'
          'positional arguments, as follows.  First, a list of unfilled slots '
          'is\n'
          'created for the formal parameters.  If there are N positional\n'
          'arguments, they are placed in the first N slots.  Next, for each\n'
          'keyword argument, the identifier is used to determine the\n'
          'corresponding slot (if the identifier is the same as the first '
          'formal\n'
          'parameter name, the first slot is used, and so on).  If the slot '
          'is\n'
          'already filled, a "TypeError" exception is raised. Otherwise, the\n'
          'argument is placed in the slot, filling it (even if the expression '
          'is\n'
          '"None", it fills the slot).  When all arguments have been '
          'processed,\n'
          'the slots that are still unfilled are filled with the '
          'corresponding\n'
          'default value from the function definition.  (Default values are\n'
          'calculated, once, when the function is defined; thus, a mutable '
          'object\n'
          'such as a list or dictionary used as default value will be shared '
          'by\n'
          'all calls that don’t specify an argument value for the '
          'corresponding\n'
          'slot; this should usually be avoided.)  If there are any unfilled\n'
          'slots for which no default value is specified, a "TypeError" '
          'exception\n'
          'is raised.  Otherwise, the list of filled slots is used as the\n'
          'argument list for the call.\n'
          '\n'
          '**CPython implementation detail:** An implementation may provide\n'
          'built-in functions whose positional parameters do not have names, '
          'even\n'
          'if they are ‘named’ for the purpose of documentation, and which\n'
          'therefore cannot be supplied by keyword.  In CPython, this is the '
          'case\n'
          'for functions implemented in C that use "PyArg_ParseTuple()" to '
          'parse\n'
          'their arguments.\n'
          '\n'
          'If there are more positional arguments than there are formal '
          'parameter\n'
          'slots, a "TypeError" exception is raised, unless a formal '
          'parameter\n'
          'using the syntax "*identifier" is present; in this case, that '
          'formal\n'
          'parameter receives a tuple containing the excess positional '
          'arguments\n'
          '(or an empty tuple if there were no excess positional arguments).\n'
          '\n'
          'If any keyword argument does not correspond to a formal parameter\n'
          'name, a "TypeError" exception is raised, unless a formal parameter\n'
          'using the syntax "**identifier" is present; in this case, that '
          'formal\n'
          'parameter receives a dictionary containing the excess keyword\n'
          'arguments (using the keywords as keys and the argument values as\n'
          'corresponding values), or a (new) empty dictionary if there were '
          'no\n'
          'excess keyword arguments.\n'
          '\n'
          'If the syntax "*expression" appears in the function call, '
          '"expression"\n'
          'must evaluate to an *iterable*.  Elements from these iterables are\n'
          'treated as if they were additional positional arguments.  For the '
          'call\n'
          '"f(x1, x2, *y, x3, x4)", if *y* evaluates to a sequence *y1*, …, '
          '*yM*,\n'
          'this is equivalent to a call with M+4 positional arguments *x1*, '
          '*x2*,\n'
          '*y1*, …, *yM*, *x3*, *x4*.\n'
          '\n'
          'A consequence of this is that although the "*expression" syntax '
          'may\n'
          'appear *after* explicit keyword arguments, it is processed '
          '*before*\n'
          'the keyword arguments (and any "**expression" arguments – see '
          'below).\n'
          'So:\n'
          '\n'
          '   >>> def f(a, b):\n'
          '   ...     print(a, b)\n'
          '   ...\n'
          '   >>> f(b=1, *(2,))\n'
          '   2 1\n'
          '   >>> f(a=1, *(2,))\n'
          '   Traceback (most recent call last):\n'
          '     File "<stdin>", line 1, in <module>\n'
          "   TypeError: f() got multiple values for keyword argument 'a'\n"
          '   >>> f(1, *(2,))\n'
          '   1 2\n'
          '\n'
          'It is unusual for both keyword arguments and the "*expression" '
          'syntax\n'
          'to be used in the same call, so in practice this confusion does '
          'not\n'
          'often arise.\n'
          '\n'
          'If the syntax "**expression" appears in the function call,\n'
          '"expression" must evaluate to a *mapping*, the contents of which '
          'are\n'
          'treated as additional keyword arguments. If a parameter matching a '
          'key\n'
          'has already been given a value (by an explicit keyword argument, '
          'or\n'
          'from another unpacking), a "TypeError" exception is raised.\n'
          '\n'
          'When "**expression" is used, each key in this mapping must be a\n'
          'string. Each value from the mapping is assigned to the first '
          'formal\n'
          'parameter eligible for keyword assignment whose name is equal to '
          'the\n'
          'key. A key need not be a Python identifier (e.g. ""max-temp °F"" '
          'is\n'
          'acceptable, although it will not match any formal parameter that '
          'could\n'
          'be declared). If there is no match to a formal parameter the '
          'key-value\n'
          'pair is collected by the "**" parameter, if there is one, or if '
          'there\n'
          'is not, a "TypeError" exception is raised.\n'
          '\n'
          'Formal parameters using the syntax "*identifier" or "**identifier"\n'
          'cannot be used as positional argument slots or as keyword argument\n'
          'names.\n'
          '\n'
          'Changed in version 3.5: Function calls accept any number of "*" '
          'and\n'
          '"**" unpackings, positional arguments may follow iterable '
          'unpackings\n'
          '("*"), and keyword arguments may follow dictionary unpackings '
          '("**").\n'
          'Originally proposed by **PEP 448**.\n'
          '\n'
          'A call always returns some value, possibly "None", unless it raises '
          'an\n'
          'exception.  How this value is computed depends on the type of the\n'
          'callable object.\n'
          '\n'
          'If it is—\n'
          '\n'
          'a user-defined function:\n'
          '   The code block for the function is executed, passing it the\n'
          '   argument list.  The first thing the code block will do is bind '
          'the\n'
          '   formal parameters to the arguments; this is described in '
          'section\n'
          '   Function definitions.  When the code block executes a "return"\n'
          '   statement, this specifies the return value of the function '
          'call.\n'
          '   If execution reaches the end of the code block without executing '
          'a\n'
          '   "return" statement, the return value is "None".\n'
          '\n'
          'a built-in function or method:\n'
          '   The result is up to the interpreter; see Built-in Functions for '
          'the\n'
          '   descriptions of built-in functions and methods.\n'
          '\n'
          'a class object:\n'
          '   A new instance of that class is returned.\n'
          '\n'
          'a class instance method:\n'
          '   The corresponding user-defined function is called, with an '
          'argument\n'
          '   list that is one longer than the argument list of the call: the\n'
          '   instance becomes the first argument.\n'
          '\n'
          'a class instance:\n'
          '   The class must define a "__call__()" method; the effect is then '
          'the\n'
          '   same as if that method was called.\n',
 'class': 'Class definitions\n'
          '*****************\n'
          '\n'
          'A class definition defines a class object (see section The '
          'standard\n'
          'type hierarchy):\n'
          '\n'
          '   classdef    ::= [decorators] "class" classname [type_params] '
          '[inheritance] ":" suite\n'
          '   inheritance ::= "(" [argument_list] ")"\n'
          '   classname   ::= identifier\n'
          '\n'
          'A class definition is an executable statement.  The inheritance '
          'list\n'
          'usually gives a list of base classes (see Metaclasses for more\n'
          'advanced uses), so each item in the list should evaluate to a '
          'class\n'
          'object which allows subclassing.  Classes without an inheritance '
          'list\n'
          'inherit, by default, from the base class "object"; hence,\n'
          '\n'
          '   class Foo:\n'
          '       pass\n'
          '\n'
          'is equivalent to\n'
          '\n'
          '   class Foo(object):\n'
          '       pass\n'
          '\n'
          'The class’s suite is then executed in a new execution frame (see\n'
          'Naming and binding), using a newly created local namespace and the\n'
          'original global namespace. (Usually, the suite contains mostly\n'
          'function definitions.)  When the class’s suite finishes execution, '
          'its\n'
          'execution frame is discarded but its local namespace is saved. [5] '
          'A\n'
          'class object is then created using the inheritance list for the '
          'base\n'
          'classes and the saved local namespace for the attribute '
          'dictionary.\n'
          'The class name is bound to this class object in the original local\n'
          'namespace.\n'
          '\n'
          'The order in which attributes are defined in the class body is\n'
          'preserved in the new class’s "__dict__".  Note that this is '
          'reliable\n'
          'only right after the class is created and only for classes that '
          'were\n'
          'defined using the definition syntax.\n'
          '\n'
          'Class creation can be customized heavily using metaclasses.\n'
          '\n'
          'Classes can also be decorated: just like when decorating '
          'functions,\n'
          '\n'
          '   @f1(arg)\n'
          '   @f2\n'
          '   class Foo: pass\n'
          '\n'
          'is roughly equivalent to\n'
          '\n'
          '   class Foo: pass\n'
          '   Foo = f1(arg)(f2(Foo))\n'
          '\n'
          'The evaluation rules for the decorator expressions are the same as '
          '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'
          'A list of type parameters may be given in square brackets '
          'immediately\n'
          'after the class’s name. This indicates to static type checkers '
          'that\n'
          'the class is generic. At runtime, the type parameters can be '
          'retrieved\n'
          'from the class’s "__type_params__" attribute. See Generic classes '
          'for\n'
          'more.\n'
          '\n'
          'Changed in version 3.12: Type parameter lists are new in Python '
          '3.12.\n'
          '\n'
          '**Programmer’s note:** Variables defined in the class definition '
          'are\n'
          'class attributes; they are shared by instances.  Instance '
          'attributes\n'
          'can be set in a method with "self.name = value".  Both class and\n'
          'instance attributes are accessible through the notation '
          '“"self.name"”,\n'
          'and an instance attribute hides a class attribute with the same '
          'name\n'
          'when accessed in this way.  Class attributes can be used as '
          'defaults\n'
          'for instance attributes, but using mutable values there can lead '
          'to\n'
          'unexpected results.  Descriptors can be used to create instance\n'
          'variables with different implementation details.\n'
          '\n'
          'See also:\n'
          '\n'
          '  **PEP 3115** - Metaclasses in Python 3000\n'
          '     The proposal that changed the declaration of metaclasses to '
          'the\n'
          '     current syntax, and the semantics for how classes with\n'
          '     metaclasses are constructed.\n'
          '\n'
          '  **PEP 3129** - Class Decorators\n'
          '     The proposal that added class decorators.  Function and '
          'method\n'
          '     decorators were introduced in **PEP 318**.\n',
 'comparisons': 'Comparisons\n'
                '***********\n'
                '\n'
                'Unlike C, all comparison operations in Python have the same '
                'priority,\n'
                'which is lower than that of any arithmetic, shifting or '
                'bitwise\n'
                'operation.  Also unlike C, expressions like "a < b < c" have '
                'the\n'
                'interpretation that is conventional in mathematics:\n'
                '\n'
                '   comparison    ::= or_expr (comp_operator or_expr)*\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'
                '\n'
                'Comparisons can be chained arbitrarily, e.g., "x < y <= z" '
                'is\n'
                'equivalent to "x < y and y <= z", except that "y" is '
                'evaluated only\n'
                'once (but in both cases "z" is not evaluated at all when "x < '
                'y" is\n'
                'found to be false).\n'
                '\n'
                'Formally, if *a*, *b*, *c*, …, *y*, *z* are expressions and '
                '*op1*,\n'
                '*op2*, …, *opN* are comparison operators, then "a op1 b op2 c '
                '... y\n'
                'opN z" is equivalent to "a op1 b and b op2 c and ... y opN '
                'z", except\n'
                'that each expression is evaluated at most once.\n'
                '\n'
                'Note that "a op1 b op2 c" doesn’t imply any kind of '
                'comparison between\n'
                '*a* and *c*, so that, e.g., "x < y > z" is perfectly legal '
                '(though\n'
                'perhaps not pretty).\n'
                '\n'
                '\n'
                'Value comparisons\n'
                '=================\n'
                '\n'
                'The operators "<", ">", "==", ">=", "<=", and "!=" compare '
                'the values\n'
                'of two objects.  The objects do not need to have the same '
                'type.\n'
                '\n'
                'Chapter Objects, values and types states that objects have a '
                'value (in\n'
                'addition to type and identity).  The value of an object is a '
                'rather\n'
                'abstract notion in Python: For example, there is no canonical '
                'access\n'
                'method for an object’s value.  Also, there is no requirement '
                'that the\n'
                'value of an object should be constructed in a particular way, '
                'e.g.\n'
                'comprised of all its data attributes. Comparison operators '
                'implement a\n'
                'particular notion of what the value of an object is.  One can '
                'think of\n'
                'them as defining the value of an object indirectly, by means '
                'of their\n'
                'comparison implementation.\n'
                '\n'
                'Because all types are (direct or indirect) subtypes of '
                '"object", they\n'
                'inherit the default comparison behavior from "object".  Types '
                'can\n'
                'customize their comparison behavior by implementing *rich '
                'comparison\n'
                'methods* like "__lt__()", described in Basic customization.\n'
                '\n'
                'The default behavior for equality comparison ("==" and "!=") '
                'is based\n'
                'on the identity of the objects.  Hence, equality comparison '
                'of\n'
                'instances with the same identity results in equality, and '
                'equality\n'
                'comparison of instances with different identities results in\n'
                'inequality.  A motivation for this default behavior is the '
                'desire that\n'
                'all objects should be reflexive (i.e. "x is y" implies "x == '
                'y").\n'
                '\n'
                'A default order comparison ("<", ">", "<=", and ">=") is not '
                'provided;\n'
                'an attempt raises "TypeError".  A motivation for this default '
                'behavior\n'
                'is the lack of a similar invariant as for equality.\n'
                '\n'
                'The behavior of the default equality comparison, that '
                'instances with\n'
                'different identities are always unequal, may be in contrast '
                'to what\n'
                'types will need that have a sensible definition of object '
                'value and\n'
                'value-based equality.  Such types will need to customize '
                'their\n'
                'comparison behavior, and in fact, a number of built-in types '
                'have done\n'
                'that.\n'
                '\n'
                'The following list describes the comparison behavior of the '
                'most\n'
                'important built-in types.\n'
                '\n'
                '* Numbers of built-in numeric types (Numeric Types — int, '
                'float,\n'
                '  complex) and of the standard library types '
                '"fractions.Fraction" and\n'
                '  "decimal.Decimal" can be compared within and across their '
                'types,\n'
                '  with the restriction that complex numbers do not support '
                'order\n'
                '  comparison.  Within the limits of the types involved, they '
                'compare\n'
                '  mathematically (algorithmically) correct without loss of '
                'precision.\n'
                '\n'
                '  The not-a-number values "float(\'NaN\')" and '
                '"decimal.Decimal(\'NaN\')"\n'
                '  are special.  Any ordered comparison of a number to a '
                'not-a-number\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'
                '\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'
                '  lexicographically using the numeric values of their '
                'elements.\n'
                '\n'
                '* Strings (instances of "str") compare lexicographically '
                'using the\n'
                '  numerical Unicode code points (the result of the built-in '
                'function\n'
                '  "ord()") of their characters. [3]\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'
                '\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'
                '\n'
                '  Lexicographical comparison between built-in collections '
                'works as\n'
                '  follows:\n'
                '\n'
                '  * For two collections to compare equal, they must be of the '
                'same\n'
                '    type, have the same length, and each pair of '
                'corresponding\n'
                '    elements must compare equal (for example, "[1,2] == '
                '(1,2)" is\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] <= '
                '[1,2,y]"\n'
                '    has the same value as "x <= y").  If a corresponding '
                'element does\n'
                '    not exist, the shorter collection is ordered first (for '
                'example,\n'
                '    "[1,2] < [1,2,3]" is true).\n'
                '\n'
                '* Mappings (instances of "dict") compare equal if and only if '
                'they\n'
                '  have equal "(key, value)" pairs. Equality comparison of the '
                'keys and\n'
                '  values enforces reflexivity.\n'
                '\n'
                '  Order comparisons ("<", ">", "<=", and ">=") raise '
                '"TypeError".\n'
                '\n'
                '* Sets (instances of "set" or "frozenset") can be compared '
                'within and\n'
                '  across their types.\n'
                '\n'
                '  They define order comparison operators to mean subset and '
                'superset\n'
                '  tests.  Those relations do not define total orderings (for '
                'example,\n'
                '  the two sets "{1,2}" and "{2,3}" are not equal, nor subsets '
                'of one\n'
                '  another, nor supersets of one another).  Accordingly, sets '
                'are not\n'
                '  appropriate arguments for functions which depend on total '
                'ordering\n'
                '  (for example, "min()", "max()", and "sorted()" produce '
                'undefined\n'
                '  results given a list of sets as inputs).\n'
                '\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'
                '\n'
                'User-defined classes that customize their comparison behavior '
                'should\n'
                'follow some consistency rules, if possible:\n'
                '\n'
                '* Equality comparison should be reflexive. In other words, '
                'identical\n'
                '  objects should compare equal:\n'
                '\n'
                '     "x is y" implies "x == y"\n'
                '\n'
                '* Comparison should be symmetric. In other words, the '
                'following\n'
                '  expressions should have the same result:\n'
                '\n'
                '     "x == y" and "y == x"\n'
                '\n'
                '     "x != y" and "y != x"\n'
                '\n'
                '     "x < y" and "y > x"\n'
                '\n'
                '     "x <= y" and "y >= x"\n'
                '\n'
                '* Comparison should be transitive. The following '
                '(non-exhaustive)\n'
                '  examples illustrate that:\n'
                '\n'
                '     "x > y and y > z" implies "x > z"\n'
                '\n'
                '     "x < y and y <= z" implies "x < z"\n'
                '\n'
                '* Inverse comparison should result in the boolean negation. '
                'In other\n'
                '  words, the following expressions should have the same '
                'result:\n'
                '\n'
                '     "x == y" and "not x != y"\n'
                '\n'
                '     "x < y" and "not x >= y" (for total ordering)\n'
                '\n'
                '     "x > y" and "not x <= y" (for total ordering)\n'
                '\n'
                '  The last two expressions apply to totally ordered '
                'collections (e.g.\n'
                '  to sequences, but not to sets or mappings). See also the\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'
                '\n'
                'Python does not enforce these consistency rules. In fact, '
                'the\n'
                'not-a-number values are an example for not following these '
                'rules.\n'
                '\n'
                '\n'
                'Membership test operations\n'
                '==========================\n'
                '\n'
                'The operators "in" and "not in" test for membership.  "x in '
                's"\n'
                'evaluates to "True" if *x* is a member of *s*, and "False" '
                'otherwise.\n'
                '"x not in s" returns the negation of "x in s".  All built-in '
                'sequences\n'
                'and set types support this as well as dictionary, for which '
                '"in" tests\n'
                'whether the dictionary has a given key. For container types '
                'such as\n'
                'list, tuple, set, frozenset, dict, or collections.deque, the\n'
                'expression "x in y" is equivalent to "any(x is e or x == e '
                'for e in\n'
                'y)".\n'
                '\n'
                'For the string and bytes types, "x in y" is "True" if and '
                'only if *x*\n'
                'is a substring of *y*.  An equivalent test is "y.find(x) != '
                '-1".\n'
                'Empty strings are always considered to be a substring of any '
                'other\n'
                'string, so """ in "abc"" will return "True".\n'
                '\n'
                'For user-defined classes which define the "__contains__()" '
                'method, "x\n'
                'in y" returns "True" if "y.__contains__(x)" returns a true '
                'value, and\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'
                '\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'
                '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'
                '"in".\n'
                '\n'
                '\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',
 'compound': 'Compound statements\n'
             '*******************\n'
             '\n'
             'Compound statements contain (groups of) other statements; they '
             'affect\n'
             'or control the execution of those other statements in some way.  '
             'In\n'
             'general, compound statements span multiple lines, although in '
             'simple\n'
             'incarnations a whole compound statement may be contained in one '
             'line.\n'
             '\n'
             'The "if", "while" and "for" statements implement traditional '
             'control\n'
             'flow constructs.  "try" specifies exception handlers and/or '
             'cleanup\n'
             'code for a group of statements, while the "with" statement '
             'allows the\n'
             'execution of initialization and finalization code around a block '
             'of\n'
             'code.  Function and class definitions are also syntactically '
             'compound\n'
             'statements.\n'
             '\n'
             'A compound statement consists of one or more ‘clauses.’  A '
             'clause\n'
             'consists of a header and a ‘suite.’  The clause headers of a\n'
             'particular compound statement are all at the same indentation '
             'level.\n'
             'Each clause header begins with a uniquely identifying keyword '
             'and ends\n'
             'with a colon.  A suite is a group of statements controlled by a\n'
             'clause.  A suite can be one or more semicolon-separated simple\n'
             'statements on the same line as the header, following the '
             'header’s\n'
             'colon, or it can be one or more indented statements on '
             'subsequent\n'
             'lines.  Only the latter form of a suite can contain nested '
             'compound\n'
             'statements; the following is illegal, mostly because it wouldn’t '
             'be\n'
             'clear to which "if" clause a following "else" clause would '
             'belong:\n'
             '\n'
             '   if test1: if test2: print(x)\n'
             '\n'
             'Also note that the semicolon binds tighter than the colon in '
             'this\n'
             'context, so that in the following example, either all or none of '
             'the\n'
             '"print()" calls are executed:\n'
             '\n'
             '   if x < y < z: print(x); print(y); print(z)\n'
             '\n'
             'Summarizing:\n'
             '\n'
             '   compound_stmt ::= if_stmt\n'
             '                     | while_stmt\n'
             '                     | for_stmt\n'
             '                     | try_stmt\n'
             '                     | with_stmt\n'
             '                     | match_stmt\n'
             '                     | funcdef\n'
             '                     | classdef\n'
             '                     | async_with_stmt\n'
             '                     | async_for_stmt\n'
             '                     | async_funcdef\n'
             '   suite         ::= stmt_list NEWLINE | NEWLINE INDENT '
             'statement+ DEDENT\n'
             '   statement     ::= stmt_list NEWLINE | compound_stmt\n'
             '   stmt_list     ::= simple_stmt (";" simple_stmt)* [";"]\n'
             '\n'
             'Note that statements always end in a "NEWLINE" possibly followed '
             'by a\n'
             '"DEDENT".  Also note that optional continuation clauses always '
             'begin\n'
             'with a keyword that cannot start a statement, thus there are no\n'
             'ambiguities (the ‘dangling "else"’ problem is solved in Python '
             'by\n'
             'requiring nested "if" statements to be indented).\n'
             '\n'
             'The formatting of the grammar rules in the following sections '
             'places\n'
             'each clause on a separate line for clarity.\n'
             '\n'
             '\n'
             'The "if" statement\n'
             '==================\n'
             '\n'
             'The "if" statement is used for conditional execution:\n'
             '\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 one\n'
             'by one until one is found to be true (see section Boolean '
             'operations\n'
             'for the definition of true and false); then that suite is '
             'executed\n'
             '(and no other part of the "if" statement is executed or '
             'evaluated).\n'
             'If all expressions are false, the suite of the "else" clause, '
             'if\n'
             'present, is executed.\n'
             '\n'
             '\n'
             'The "while" statement\n'
             '=====================\n'
             '\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'
             '                  ["else" ":" suite]\n'
             '\n'
             'This repeatedly tests the expression and, if it is true, '
             'executes the\n'
             'first suite; if the expression is false (which may be the first '
             'time\n'
             'it is tested) the suite of the "else" clause, if present, is '
             'executed\n'
             'and the loop terminates.\n'
             '\n'
             'A "break" statement executed in the first suite terminates the '
             'loop\n'
             'without executing the "else" clause’s suite.  A "continue" '
             'statement\n'
             'executed in the first suite skips the rest of the suite and goes '
             'back\n'
             'to testing the expression.\n'
             '\n'
             '\n'
             'The "for" statement\n'
             '===================\n'
             '\n'
             'The "for" statement is used to iterate over the elements of a '
             'sequence\n'
             '(such as a string, tuple or list) or other iterable object:\n'
             '\n'
             '   for_stmt ::= "for" target_list "in" starred_list ":" suite\n'
             '                ["else" ":" suite]\n'
             '\n'
             'The "starred_list" expression is evaluated once; it should yield '
             'an\n'
             '*iterable* object.  An *iterator* is created for that iterable. '
             'The\n'
             'first item provided by the iterator is then assigned to the '
             'target\n'
             'list using the standard rules for assignments (see Assignment\n'
             'statements), and the suite is executed.  This repeats for each '
             'item\n'
             'provided by the iterator.  When the iterator is exhausted, the '
             'suite\n'
             'in the "else" clause, if present, is executed, and the loop\n'
             'terminates.\n'
             '\n'
             'A "break" statement executed in the first suite terminates the '
             'loop\n'
             'without executing the "else" clause’s suite.  A "continue" '
             'statement\n'
             'executed in the first suite skips the rest of the suite and '
             'continues\n'
             'with the next item, or with the "else" clause if there is no '
             'next\n'
             'item.\n'
             '\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'
             '\n'
             '   for i in range(10):\n'
             '       print(i)\n'
             '       i = 5             # this will not affect the for-loop\n'
             '                         # because i will be overwritten with '
             'the next\n'
             '                         # index in the range\n'
             '\n'
             'Names in the target list are not deleted when the loop is '
             'finished,\n'
             'but if the sequence is empty, they will not have been assigned '
             'to at\n'
             'all by the loop.  Hint: the built-in type "range()" represents\n'
             'immutable arithmetic sequences of integers. For instance, '
             'iterating\n'
             '"range(3)" successively yields 0, 1, and then 2.\n'
             '\n'
             'Changed in version 3.11: Starred elements are now allowed in '
             'the\n'
             'expression list.\n'
             '\n'
             '\n'
             'The "try" statement\n'
             '===================\n'
             '\n'
             'The "try" statement specifies exception handlers and/or cleanup '
             'code\n'
             'for a group of statements:\n'
             '\n'
             '   try_stmt  ::= try1_stmt | try2_stmt | try3_stmt\n'
             '   try1_stmt ::= "try" ":" suite\n'
             '                 ("except" [expression ["as" identifier]] ":" '
             'suite)+\n'
             '                 ["else" ":" suite]\n'
             '                 ["finally" ":" suite]\n'
             '   try2_stmt ::= "try" ":" suite\n'
             '                 ("except" "*" expression ["as" identifier] ":" '
             'suite)+\n'
             '                 ["else" ":" suite]\n'
             '                 ["finally" ":" suite]\n'
             '   try3_stmt ::= "try" ":" suite\n'
             '                 "finally" ":" suite\n'
             '\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'
             '\n'
             '"except" clause\n'
             '---------------\n'
             '\n'
             'The "except" clause(s) specify one or more exception handlers. '
             'When no\n'
             'exception occurs in the "try" clause, no exception handler is\n'
             'executed. When an exception occurs in the "try" suite, a search '
             'for an\n'
             'exception handler is started. This search inspects the "except"\n'
             'clauses in turn until one is found that matches the exception. '
             'An\n'
             'expression-less "except" clause, if present, must be last; it '
             'matches\n'
             'any exception.\n'
             '\n'
             'For an "except" clause with an expression, the expression must\n'
             'evaluate to an exception type or a tuple of exception types. '
             'The\n'
             'raised exception matches an "except" clause whose expression '
             'evaluates\n'
             'to the class or a *non-virtual base class* of the exception '
             'object, or\n'
             'to a tuple that contains such a class.\n'
             '\n'
             'If no "except" clause matches the exception, the search for an\n'
             'exception handler continues in the surrounding code and on the\n'
             'invocation stack.  [1]\n'
             '\n'
             'If the evaluation of an expression in the header of an "except" '
             'clause\n'
             'raises an exception, the original search for a handler is '
             'canceled and\n'
             'a search starts for the new exception in the surrounding code '
             'and on\n'
             'the call stack (it is treated as if the entire "try" statement '
             'raised\n'
             'the exception).\n'
             '\n'
             'When a matching "except" clause is found, the exception is '
             'assigned to\n'
             'the target specified after the "as" keyword in that "except" '
             'clause,\n'
             'if present, and the "except" clause’s suite is executed. All '
             '"except"\n'
             'clauses must have an executable block. When the end of this '
             'block is\n'
             'reached, execution continues normally after the entire "try"\n'
             'statement. (This means that if two nested handlers exist for the '
             'same\n'
             'exception, and the exception occurs in the "try" clause of the '
             'inner\n'
             'handler, the outer handler will not handle the exception.)\n'
             '\n'
             'When an exception has been assigned using "as target", it is '
             'cleared\n'
             'at the end of the "except" clause.  This is as if\n'
             '\n'
             '   except E as N:\n'
             '       foo\n'
             '\n'
             'was translated to\n'
             '\n'
             '   except E as N:\n'
             '       try:\n'
             '           foo\n'
             '       finally:\n'
             '           del N\n'
             '\n'
             'This means the exception must be assigned to a different name to '
             'be\n'
             'able to refer to it after the "except" clause. Exceptions are '
             'cleared\n'
             'because with the traceback attached to them, they form a '
             'reference\n'
             'cycle with the stack frame, keeping all locals in that frame '
             'alive\n'
             'until the next garbage collection occurs.\n'
             '\n'
             'Before an "except" clause’s suite is executed, the exception is '
             'stored\n'
             'in the "sys" module, where it can be accessed from within the '
             'body of\n'
             'the "except" clause by calling "sys.exception()". When leaving '
             'an\n'
             'exception handler, the exception stored in the "sys" module is '
             'reset\n'
             'to its previous value:\n'
             '\n'
             '   >>> print(sys.exception())\n'
             '   None\n'
             '   >>> try:\n'
             '   ...     raise TypeError\n'
             '   ... except:\n'
             '   ...     print(repr(sys.exception()))\n'
             '   ...     try:\n'
             '   ...          raise ValueError\n'
             '   ...     except:\n'
             '   ...         print(repr(sys.exception()))\n'
             '   ...     print(repr(sys.exception()))\n'
             '   ...\n'
             '   TypeError()\n'
             '   ValueError()\n'
             '   TypeError()\n'
             '   >>> print(sys.exception())\n'
             '   None\n'
             '\n'
             '\n'
             '"except*" clause\n'
             '----------------\n'
             '\n'
             'The "except*" clause(s) are used for handling "ExceptionGroup"s. '
             'The\n'
             'exception type for matching is interpreted as in the case of '
             '"except",\n'
             'but in the case of exception groups we can have partial matches '
             'when\n'
             'the type matches some of the exceptions in the group. This means '
             'that\n'
             'multiple "except*" clauses can execute, each handling part of '
             'the\n'
             'exception group. Each clause executes at most once and handles '
             'an\n'
             'exception group of all matching exceptions.  Each exception in '
             'the\n'
             'group is handled by at most one "except*" clause, the first '
             'that\n'
             'matches it.\n'
             '\n'
             '   >>> try:\n'
             '   ...     raise ExceptionGroup("eg",\n'
             '   ...         [ValueError(1), TypeError(2), OSError(3), '
             'OSError(4)])\n'
             '   ... except* TypeError as e:\n'
             "   ...     print(f'caught {type(e)} with nested "
             "{e.exceptions}')\n"
             '   ... except* OSError as e:\n'
             "   ...     print(f'caught {type(e)} with nested "
             "{e.exceptions}')\n"
             '   ...\n'
             "   caught <class 'ExceptionGroup'> with nested (TypeError(2),)\n"
             "   caught <class 'ExceptionGroup'> with nested (OSError(3), "
             'OSError(4))\n'
             '     + Exception Group Traceback (most recent call last):\n'
             '     |   File "<stdin>", line 2, in <module>\n'
             '     | ExceptionGroup: eg\n'
             '     +-+---------------- 1 ----------------\n'
             '       | ValueError: 1\n'
             '       +------------------------------------\n'
             '\n'
             'Any remaining exceptions that were not handled by any "except*" '
             'clause\n'
             'are re-raised at the end, along with all exceptions that were '
             'raised\n'
             'from within the "except*" clauses. If this list contains more '
             'than one\n'
             'exception to reraise, they are combined into an exception '
             'group.\n'
             '\n'
             'If the raised exception is not an exception group and its type '
             'matches\n'
             'one of the "except*" clauses, it is caught and wrapped by an '
             'exception\n'
             'group with an empty message string.\n'
             '\n'
             '   >>> try:\n'
             '   ...     raise BlockingIOError\n'
             '   ... except* BlockingIOError as e:\n'
             '   ...     print(repr(e))\n'
             '   ...\n'
             "   ExceptionGroup('', (BlockingIOError()))\n"
             '\n'
             'An "except*" clause must have a matching expression; it cannot '
             'be\n'
             '"except*:". Furthermore, this expression cannot contain '
             'exception\n'
             'group types, because that would have ambiguous semantics.\n'
             '\n'
             'It is not possible to mix "except" and "except*" in the same '
             '"try".\n'
             '"break", "continue" and "return" cannot appear in an "except*" '
             'clause.\n'
             '\n'
             '\n'
             '"else" clause\n'
             '-------------\n'
             '\n'
             'The optional "else" clause is executed if the control flow '
             'leaves the\n'
             '"try" suite, no exception was raised, and no "return", '
             '"continue", or\n'
             '"break" statement was executed.  Exceptions in the "else" clause '
             'are\n'
             'not handled by the preceding "except" clauses.\n'
             '\n'
             '\n'
             '"finally" clause\n'
             '----------------\n'
             '\n'
             'If "finally" is present, it specifies a ‘cleanup’ handler.  The '
             '"try"\n'
             'clause is executed, including any "except" and "else" clauses.  '
             'If an\n'
             'exception occurs in any of the clauses and is not handled, the\n'
             'exception is temporarily saved. The "finally" clause is '
             'executed.  If\n'
             'there is a saved exception it is re-raised at the end of the '
             '"finally"\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'
             '\n'
             '   >>> def f():\n'
             '   ...     try:\n'
             '   ...         1/0\n'
             '   ...     finally:\n'
             '   ...         return 42\n'
             '   ...\n'
             '   >>> f()\n'
             '   42\n'
             '\n'
             'The exception information is not available to the program '
             'during\n'
             'execution of the "finally" clause.\n'
             '\n'
             'When a "return", "break" or "continue" statement is executed in '
             'the\n'
             '"try" suite of a "try"…"finally" statement, the "finally" clause '
             'is\n'
             'also executed ‘on the way out.’\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'
             '"return" statement executed in the "finally" clause will always '
             'be the\n'
             'last one executed:\n'
             '\n'
             '   >>> def foo():\n'
             '   ...     try:\n'
             "   ...         return 'try'\n"
             '   ...     finally:\n'
             "   ...         return 'finally'\n"
             '   ...\n'
             '   >>> foo()\n'
             "   'finally'\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'
             '\n'
             '\n'
             'The "with" statement\n'
             '====================\n'
             '\n'
             'The "with" statement is used to wrap the execution of a block '
             'with\n'
             'methods defined by a context manager (see section With '
             'Statement\n'
             'Context Managers). This allows common "try"…"except"…"finally" '
             'usage\n'
             'patterns to be encapsulated for convenient reuse.\n'
             '\n'
             '   with_stmt          ::= "with" ( "(" with_stmt_contents ","? '
             '")" | with_stmt_contents ) ":" suite\n'
             '   with_stmt_contents ::= with_item ("," with_item)*\n'
             '   with_item          ::= expression ["as" target]\n'
             '\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'
             '\n'
             '2. The context manager’s "__enter__()" is loaded for later use.\n'
             '\n'
             '3. The context manager’s "__exit__()" is loaded for later use.\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'
             '\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 7 below.\n'
             '\n'
             '6. The suite is executed.\n'
             '\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'
             '   "None" arguments are supplied.\n'
             '\n'
             '   If the suite was exited due to an exception, and the return '
             'value\n'
             '   from the "__exit__()" method was false, the exception is '
             'reraised.\n'
             '   If the return value was true, the exception is suppressed, '
             'and\n'
             '   execution continues with the statement following the "with"\n'
             '   statement.\n'
             '\n'
             '   If the suite was exited for any reason other than an '
             'exception, the\n'
             '   return value from "__exit__()" is ignored, and execution '
             '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'
             '\n'
             '   try:\n'
             '       TARGET = value\n'
             '       SUITE\n'
             '   except:\n'
             '       if not exit(manager, *sys.exc_info()):\n'
             '           raise\n'
             '   else:\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'
             '\n'
             'is semantically equivalent to:\n'
             '\n'
             '   with A() as a:\n'
             '       with B() as b:\n'
             '           SUITE\n'
             '\n'
             'You can also write multi-item context managers in multiple lines '
             'if\n'
             'the items are surrounded by parentheses. For example:\n'
             '\n'
             '   with (\n'
             '       A() as a,\n'
             '       B() as b,\n'
             '   ):\n'
             '       SUITE\n'
             '\n'
             'Changed in version 3.1: Support for multiple context '
             'expressions.\n'
             '\n'
             'Changed in version 3.10: Support for using grouping parentheses '
             'to\n'
             'break the statement in multiple lines.\n'
             '\n'
             'See also:\n'
             '\n'
             '  **PEP 343** - The “with” statement\n'
             '     The specification, background, and examples for the Python '
             '"with"\n'
             '     statement.\n'
             '\n'
             '\n'
             'The "match" statement\n'
             '=====================\n'
             '\n'
             'Added in version 3.10.\n'
             '\n'
             'The match statement is used for pattern matching.  Syntax:\n'
             '\n'
             '   match_stmt   ::= \'match\' subject_expr ":" NEWLINE INDENT '
             'case_block+ DEDENT\n'
             '   subject_expr ::= star_named_expression "," '
             'star_named_expressions?\n'
             '                    | named_expression\n'
             '   case_block   ::= \'case\' patterns [guard] ":" block\n'
             '\n'
             'Note:\n'
             '\n'
             '  This section uses single quotes to denote soft keywords.\n'
             '\n'
             'Pattern matching takes a pattern as input (following "case") and '
             'a\n'
             'subject value (following "match").  The pattern (which may '
             'contain\n'
             'subpatterns) is matched against the subject value.  The outcomes '
             'are:\n'
             '\n'
             '* A match success or failure (also termed a pattern success or\n'
             '  failure).\n'
             '\n'
             '* Possible binding of matched values to a name.  The '
             'prerequisites for\n'
             '  this are further discussed below.\n'
             '\n'
             'The "match" and "case" keywords are soft keywords.\n'
             '\n'
             'See also:\n'
             '\n'
             '  * **PEP 634** – Structural Pattern Matching: Specification\n'
             '\n'
             '  * **PEP 636** – Structural Pattern Matching: Tutorial\n'
             '\n'
             '\n'
             'Overview\n'
             '--------\n'
             '\n'
             'Here’s an overview of the logical flow of a match statement:\n'
             '\n'
             '1. The subject expression "subject_expr" is evaluated and a '
             'resulting\n'
             '   subject value obtained. If the subject expression contains a '
             'comma,\n'
             '   a tuple is constructed using the standard rules.\n'
             '\n'
             '2. Each pattern in a "case_block" is attempted to match with '
             'the\n'
             '   subject value. The specific rules for success or failure are\n'
             '   described below. The match attempt can also bind some or all '
             'of the\n'
             '   standalone names within the pattern. The precise pattern '
             'binding\n'
             '   rules vary per pattern type and are specified below.  **Name\n'
             '   bindings made during a successful pattern match outlive the\n'
             '   executed block and can be used after the match statement**.\n'
             '\n'
             '   Note:\n'
             '\n'
             '     During failed pattern matches, some subpatterns may '
             'succeed.  Do\n'
             '     not rely on bindings being made for a failed match.  '
             'Conversely,\n'
             '     do not rely on variables remaining unchanged after a '
             'failed\n'
             '     match.  The exact behavior is dependent on implementation '
             'and may\n'
             '     vary.  This is an intentional decision made to allow '
             'different\n'
             '     implementations to add optimizations.\n'
             '\n'
             '3. If the pattern succeeds, the corresponding guard (if present) '
             'is\n'
             '   evaluated. In this case all name bindings are guaranteed to '
             'have\n'
             '   happened.\n'
             '\n'
             '   * If the guard evaluates as true or is missing, the "block" '
             'inside\n'
             '     "case_block" is executed.\n'
             '\n'
             '   * Otherwise, the next "case_block" is attempted as described '
             'above.\n'
             '\n'
             '   * If there are no further case blocks, the match statement '
             'is\n'
             '     completed.\n'
             '\n'
             'Note:\n'
             '\n'
             '  Users should generally never rely on a pattern being '
             'evaluated.\n'
             '  Depending on implementation, the interpreter may cache values '
             'or use\n'
             '  other optimizations which skip repeated evaluations.\n'
             '\n'
             'A sample match statement:\n'
             '\n'
             '   >>> flag = False\n'
             '   >>> match (100, 200):\n'
             '   ...    case (100, 300):  # Mismatch: 200 != 300\n'
             "   ...        print('Case 1')\n"
             '   ...    case (100, 200) if flag:  # Successful match, but '
             'guard fails\n'
             "   ...        print('Case 2')\n"
             '   ...    case (100, y):  # Matches and binds y to 200\n'
             "   ...        print(f'Case 3, y: {y}')\n"
             '   ...    case _:  # Pattern not attempted\n'
             "   ...        print('Case 4, I match anything!')\n"
             '   ...\n'
             '   Case 3, y: 200\n'
             '\n'
             'In this case, "if flag" is a guard.  Read more about that in the '
             'next\n'
             'section.\n'
             '\n'
             '\n'
             'Guards\n'
             '------\n'
             '\n'
             '   guard ::= "if" named_expression\n'
             '\n'
             'A "guard" (which is part of the "case") must succeed for code '
             'inside\n'
             'the "case" block to execute.  It takes the form: "if" followed '
             'by an\n'
             'expression.\n'
             '\n'
             'The logical flow of a "case" block with a "guard" follows:\n'
             '\n'
             '1. Check that the pattern in the "case" block succeeded.  If '
             'the\n'
             '   pattern failed, the "guard" is not evaluated and the next '
             '"case"\n'
             '   block is checked.\n'
             '\n'
             '2. If the pattern succeeded, evaluate the "guard".\n'
             '\n'
             '   * If the "guard" condition evaluates as true, the case block '
             'is\n'
             '     selected.\n'
             '\n'
             '   * If the "guard" condition evaluates as false, the case block '
             'is\n'
             '     not selected.\n'
             '\n'
             '   * If the "guard" raises an exception during evaluation, the\n'
             '     exception bubbles up.\n'
             '\n'
             'Guards are allowed to have side effects as they are '
             'expressions.\n'
             'Guard evaluation must proceed from the first to the last case '
             'block,\n'
             'one at a time, skipping case blocks whose pattern(s) don’t all\n'
             'succeed. (I.e., guard evaluation must happen in order.) Guard\n'
             'evaluation must stop once a case block is selected.\n'
             '\n'
             '\n'
             'Irrefutable Case Blocks\n'
             '-----------------------\n'
             '\n'
             'An irrefutable case block is a match-all case block.  A match\n'
             'statement may have at most one irrefutable case block, and it '
             'must be\n'
             'last.\n'
             '\n'
             'A case block is considered irrefutable if it has no guard and '
             'its\n'
             'pattern is irrefutable.  A pattern is considered irrefutable if '
             'we can\n'
             'prove from its syntax alone that it will always succeed.  Only '
             'the\n'
             'following patterns are irrefutable:\n'
             '\n'
             '* AS Patterns whose left-hand side is irrefutable\n'
             '\n'
             '* OR Patterns containing at least one irrefutable pattern\n'
             '\n'
             '* Capture Patterns\n'
             '\n'
             '* Wildcard Patterns\n'
             '\n'
             '* parenthesized irrefutable patterns\n'
             '\n'
             '\n'
             'Patterns\n'
             '--------\n'
             '\n'
             'Note:\n'
             '\n'
             '  This section uses grammar notations beyond standard EBNF:\n'
             '\n'
             '  * the notation "SEP.RULE+" is shorthand for "RULE (SEP '
             'RULE)*"\n'
             '\n'
             '  * the notation "!RULE" is shorthand for a negative lookahead\n'
             '    assertion\n'
             '\n'
             'The top-level syntax for "patterns" is:\n'
             '\n'
             '   patterns       ::= open_sequence_pattern | pattern\n'
             '   pattern        ::= as_pattern | or_pattern\n'
             '   closed_pattern ::= | literal_pattern\n'
             '                      | capture_pattern\n'
             '                      | wildcard_pattern\n'
             '                      | value_pattern\n'
             '                      | group_pattern\n'
             '                      | sequence_pattern\n'
             '                      | mapping_pattern\n'
             '                      | class_pattern\n'
             '\n'
             'The descriptions below will include a description “in simple '
             'terms” of\n'
             'what a pattern does for illustration purposes (credits to '
             'Raymond\n'
             'Hettinger for a document that inspired most of the '
             'descriptions). Note\n'
             'that these descriptions are purely for illustration purposes and '
             '**may\n'
             'not** reflect the underlying implementation.  Furthermore, they '
             'do not\n'
             'cover all valid forms.\n'
             '\n'
             '\n'
             'OR Patterns\n'
             '~~~~~~~~~~~\n'
             '\n'
             'An OR pattern is two or more patterns separated by vertical bars '
             '"|".\n'
             'Syntax:\n'
             '\n'
             '   or_pattern ::= "|".closed_pattern+\n'
             '\n'
             'Only the final subpattern may be irrefutable, and each '
             'subpattern must\n'
             'bind the same set of names to avoid ambiguity.\n'
             '\n'
             'An OR pattern matches each of its subpatterns in turn to the '
             'subject\n'
             'value, until one succeeds.  The OR pattern is then considered\n'
             'successful.  Otherwise, if none of the subpatterns succeed, the '
             'OR\n'
             'pattern fails.\n'
             '\n'
             'In simple terms, "P1 | P2 | ..." will try to match "P1", if it '
             'fails\n'
             'it will try to match "P2", succeeding immediately if any '
             'succeeds,\n'
             'failing otherwise.\n'
             '\n'
             '\n'
             'AS Patterns\n'
             '~~~~~~~~~~~\n'
             '\n'
             'An AS pattern matches an OR pattern on the left of the "as" '
             'keyword\n'
             'against a subject.  Syntax:\n'
             '\n'
             '   as_pattern ::= or_pattern "as" capture_pattern\n'
             '\n'
             'If the OR pattern fails, the AS pattern fails.  Otherwise, the '
             'AS\n'
             'pattern binds the subject to the name on the right of the as '
             'keyword\n'
             'and succeeds. "capture_pattern" cannot be a "_".\n'
             '\n'
             'In simple terms "P as NAME" will match with "P", and on success '
             'it\n'
             'will set "NAME = <subject>".\n'
             '\n'
             '\n'
             'Literal Patterns\n'
             '~~~~~~~~~~~~~~~~\n'
             '\n'
             'A literal pattern corresponds to most literals in Python.  '
             'Syntax:\n'
             '\n'
             '   literal_pattern ::= signed_number\n'
             '                       | signed_number "+" NUMBER\n'
             '                       | signed_number "-" NUMBER\n'
             '                       | strings\n'
             '                       | "None"\n'
             '                       | "True"\n'
             '                       | "False"\n'
             '   signed_number   ::= ["-"] NUMBER\n'
             '\n'
             'The rule "strings" and the token "NUMBER" are defined in the '
             'standard\n'
             'Python grammar.  Triple-quoted strings are supported.  Raw '
             'strings and\n'
             'byte strings are supported.  f-strings are not supported.\n'
             '\n'
             'The forms "signed_number \'+\' NUMBER" and "signed_number \'-\' '
             'NUMBER"\n'
             'are for expressing complex numbers; they require a real number '
             'on the\n'
             'left and an imaginary number on the right. E.g. "3 + 4j".\n'
             '\n'
             'In simple terms, "LITERAL" will succeed only if "<subject> ==\n'
             'LITERAL". For the singletons "None", "True" and "False", the '
             '"is"\n'
             'operator is used.\n'
             '\n'
             '\n'
             'Capture Patterns\n'
             '~~~~~~~~~~~~~~~~\n'
             '\n'
             'A capture pattern binds the subject value to a name. Syntax:\n'
             '\n'
             "   capture_pattern ::= !'_' NAME\n"
             '\n'
             'A single underscore "_" is not a capture pattern (this is what '
             '"!\'_\'"\n'
             'expresses). It is instead treated as a "wildcard_pattern".\n'
             '\n'
             'In a given pattern, a given name can only be bound once.  E.g. '
             '"case\n'
             'x, x: ..." is invalid while "case [x] | x: ..." is allowed.\n'
             '\n'
             'Capture patterns always succeed.  The binding follows scoping '
             'rules\n'
             'established by the assignment expression operator in **PEP '
             '572**; the\n'
             'name becomes a local variable in the closest containing function '
             'scope\n'
             'unless there’s an applicable "global" or "nonlocal" statement.\n'
             '\n'
             'In simple terms "NAME" will always succeed and it will set "NAME '
             '=\n'
             '<subject>".\n'
             '\n'
             '\n'
             'Wildcard Patterns\n'
             '~~~~~~~~~~~~~~~~~\n'
             '\n'
             'A wildcard pattern always succeeds (matches anything) and binds '
             'no\n'
             'name.  Syntax:\n'
             '\n'
             "   wildcard_pattern ::= '_'\n"
             '\n'
             '"_" is a soft keyword within any pattern, but only within '
             'patterns.\n'
             'It is an identifier, as usual, even within "match" subject\n'
             'expressions, "guard"s, and "case" blocks.\n'
             '\n'
             'In simple terms, "_" will always succeed.\n'
             '\n'
             '\n'
             'Value Patterns\n'
             '~~~~~~~~~~~~~~\n'
             '\n'
             'A value pattern represents a named value in Python. Syntax:\n'
             '\n'
             '   value_pattern ::= attr\n'
             '   attr          ::= name_or_attr "." NAME\n'
             '   name_or_attr  ::= attr | NAME\n'
             '\n'
             'The dotted name in the pattern is looked up using standard '
             'Python name\n'
             'resolution rules.  The pattern succeeds if the value found '
             'compares\n'
             'equal to the subject value (using the "==" equality operator).\n'
             '\n'
             'In simple terms "NAME1.NAME2" will succeed only if "<subject> '
             '==\n'
             'NAME1.NAME2"\n'
             '\n'
             'Note:\n'
             '\n'
             '  If the same value occurs multiple times in the same match '
             'statement,\n'
             '  the interpreter may cache the first value found and reuse it '
             'rather\n'
             '  than repeat the same lookup.  This cache is strictly tied to a '
             'given\n'
             '  execution of a given match statement.\n'
             '\n'
             '\n'
             'Group Patterns\n'
             '~~~~~~~~~~~~~~\n'
             '\n'
             'A group pattern allows users to add parentheses around patterns '
             'to\n'
             'emphasize the intended grouping.  Otherwise, it has no '
             'additional\n'
             'syntax. Syntax:\n'
             '\n'
             '   group_pattern ::= "(" pattern ")"\n'
             '\n'
             'In simple terms "(P)" has the same effect as "P".\n'
             '\n'
             '\n'
             'Sequence Patterns\n'
             '~~~~~~~~~~~~~~~~~\n'
             '\n'
             'A sequence pattern contains several subpatterns to be matched '
             'against\n'
             'sequence elements. The syntax is similar to the unpacking of a '
             'list or\n'
             'tuple.\n'
             '\n'
             '   sequence_pattern       ::= "[" [maybe_sequence_pattern] "]"\n'
             '                        | "(" [open_sequence_pattern] ")"\n'
             '   open_sequence_pattern  ::= maybe_star_pattern "," '
             '[maybe_sequence_pattern]\n'
             '   maybe_sequence_pattern ::= ",".maybe_star_pattern+ ","?\n'
             '   maybe_star_pattern     ::= star_pattern | pattern\n'
             '   star_pattern           ::= "*" (capture_pattern | '
             'wildcard_pattern)\n'
             '\n'
             'There is no difference if parentheses  or square brackets are '
             'used for\n'
             'sequence patterns (i.e. "(...)" vs "[...]" ).\n'
             '\n'
             'Note:\n'
             '\n'
             '  A single pattern enclosed in parentheses without a trailing '
             'comma\n'
             '  (e.g. "(3 | 4)") is a group pattern. While a single pattern '
             'enclosed\n'
             '  in square brackets (e.g. "[3 | 4]") is still a sequence '
             'pattern.\n'
             '\n'
             'At most one star subpattern may be in a sequence pattern.  The '
             'star\n'
             'subpattern may occur in any position. If no star subpattern is\n'
             'present, the sequence pattern is a fixed-length sequence '
             'pattern;\n'
             'otherwise it is a variable-length sequence pattern.\n'
             '\n'
             'The following is the logical flow for matching a sequence '
             'pattern\n'
             'against a subject value:\n'
             '\n'
             '1. If the subject value is not a sequence [2], the sequence '
             'pattern\n'
             '   fails.\n'
             '\n'
             '2. If the subject value is an instance of "str", "bytes" or\n'
             '   "bytearray" the sequence pattern fails.\n'
             '\n'
             '3. The subsequent steps depend on whether the sequence pattern '
             'is\n'
             '   fixed or variable-length.\n'
             '\n'
             '   If the sequence pattern is fixed-length:\n'
             '\n'
             '   1. If the length of the subject sequence is not equal to the '
             'number\n'
             '      of subpatterns, the sequence pattern fails\n'
             '\n'
             '   2. Subpatterns in the sequence pattern are matched to their\n'
             '      corresponding items in the subject sequence from left to '
             'right.\n'
             '      Matching stops as soon as a subpattern fails.  If all\n'
             '      subpatterns succeed in matching their corresponding item, '
             'the\n'
             '      sequence pattern succeeds.\n'
             '\n'
             '   Otherwise, if the sequence pattern is variable-length:\n'
             '\n'
             '   1. If the length of the subject sequence is less than the '
             'number of\n'
             '      non-star subpatterns, the sequence pattern fails.\n'
             '\n'
             '   2. The leading non-star subpatterns are matched to their\n'
             '      corresponding items as for fixed-length sequences.\n'
             '\n'
             '   3. If the previous step succeeds, the star subpattern matches '
             'a\n'
             '      list formed of the remaining subject items, excluding the\n'
             '      remaining items corresponding to non-star subpatterns '
             'following\n'
             '      the star subpattern.\n'
             '\n'
             '   4. Remaining non-star subpatterns are matched to their\n'
             '      corresponding subject items, as for a fixed-length '
             'sequence.\n'
             '\n'
             '   Note:\n'
             '\n'
             '     The length of the subject sequence is obtained via "len()" '
             '(i.e.\n'
             '     via the "__len__()" protocol).  This length may be cached '
             'by the\n'
             '     interpreter in a similar manner as value patterns.\n'
             '\n'
             'In simple terms "[P1, P2, P3," … ", P<N>]" matches only if all '
             'the\n'
             'following happens:\n'
             '\n'
             '* check "<subject>" is a sequence\n'
             '\n'
             '* "len(subject) == <N>"\n'
             '\n'
             '* "P1" matches "<subject>[0]" (note that this match can also '
             'bind\n'
             '  names)\n'
             '\n'
             '* "P2" matches "<subject>[1]" (note that this match can also '
             'bind\n'
             '  names)\n'
             '\n'
             '* … and so on for the corresponding pattern/element.\n'
             '\n'
             '\n'
             'Mapping Patterns\n'
             '~~~~~~~~~~~~~~~~\n'
             '\n'
             'A mapping pattern contains one or more key-value patterns.  The '
             'syntax\n'
             'is similar to the construction of a dictionary. Syntax:\n'
             '\n'
             '   mapping_pattern     ::= "{" [items_pattern] "}"\n'
             '   items_pattern       ::= ",".key_value_pattern+ ","?\n'
             '   key_value_pattern   ::= (literal_pattern | value_pattern) ":" '
             'pattern\n'
             '                         | double_star_pattern\n'
             '   double_star_pattern ::= "**" capture_pattern\n'
             '\n'
             'At most one double star pattern may be in a mapping pattern.  '
             'The\n'
             'double star pattern must be the last subpattern in the mapping\n'
             'pattern.\n'
             '\n'
             'Duplicate keys in mapping patterns are disallowed. Duplicate '
             'literal\n'
             'keys will raise a "SyntaxError". Two keys that otherwise have '
             'the same\n'
             'value will raise a "ValueError" at runtime.\n'
             '\n'
             'The following is the logical flow for matching a mapping '
             'pattern\n'
             'against a subject value:\n'
             '\n'
             '1. If the subject value is not a mapping [3],the mapping '
             'pattern\n'
             '   fails.\n'
             '\n'
             '2. If every key given in the mapping pattern is present in the '
             'subject\n'
             '   mapping, and the pattern for each key matches the '
             'corresponding\n'
             '   item of the subject mapping, the mapping pattern succeeds.\n'
             '\n'
             '3. If duplicate keys are detected in the mapping pattern, the '
             'pattern\n'
             '   is considered invalid. A "SyntaxError" is raised for '
             'duplicate\n'
             '   literal values; or a "ValueError" for named keys of the same '
             'value.\n'
             '\n'
             'Note:\n'
             '\n'
             '  Key-value pairs are matched using the two-argument form of '
             'the\n'
             '  mapping subject’s "get()" method.  Matched key-value pairs '
             'must\n'
             '  already be present in the mapping, and not created on-the-fly '
             'via\n'
             '  "__missing__()" or "__getitem__()".\n'
             '\n'
             'In simple terms "{KEY1: P1, KEY2: P2, ... }" matches only if all '
             'the\n'
             'following happens:\n'
             '\n'
             '* check "<subject>" is a mapping\n'
             '\n'
             '* "KEY1 in <subject>"\n'
             '\n'
             '* "P1" matches "<subject>[KEY1]"\n'
             '\n'
             '* … and so on for the corresponding KEY/pattern pair.\n'
             '\n'
             '\n'
             'Class Patterns\n'
             '~~~~~~~~~~~~~~\n'
             '\n'
             'A class pattern represents a class and its positional and '
             'keyword\n'
             'arguments (if any).  Syntax:\n'
             '\n'
             '   class_pattern       ::= name_or_attr "(" [pattern_arguments '
             '","?] ")"\n'
             '   pattern_arguments   ::= positional_patterns ["," '
             'keyword_patterns]\n'
             '                         | keyword_patterns\n'
             '   positional_patterns ::= ",".pattern+\n'
             '   keyword_patterns    ::= ",".keyword_pattern+\n'
             '   keyword_pattern     ::= NAME "=" pattern\n'
             '\n'
             'The same keyword should not be repeated in class patterns.\n'
             '\n'
             'The following is the logical flow for matching a class pattern '
             'against\n'
             'a subject value:\n'
             '\n'
             '1. If "name_or_attr" is not an instance of the builtin "type" , '
             'raise\n'
             '   "TypeError".\n'
             '\n'
             '2. If the subject value is not an instance of "name_or_attr" '
             '(tested\n'
             '   via "isinstance()"), the class pattern fails.\n'
             '\n'
             '3. If no pattern arguments are present, the pattern succeeds.\n'
             '   Otherwise, the subsequent steps depend on whether keyword or\n'
             '   positional argument patterns are present.\n'
             '\n'
             '   For a number of built-in types (specified below), a single\n'
             '   positional subpattern is accepted which will match the '
             'entire\n'
             '   subject; for these types keyword patterns also work as for '
             'other\n'
             '   types.\n'
             '\n'
             '   If only keyword patterns are present, they are processed as\n'
             '   follows, one by one:\n'
             '\n'
             '   I. The keyword is looked up as an attribute on the subject.\n'
             '\n'
             '      * If this raises an exception other than "AttributeError", '
             'the\n'
             '        exception bubbles up.\n'
             '\n'
             '      * If this raises "AttributeError", the class pattern has '
             'failed.\n'
             '\n'
             '      * Else, the subpattern associated with the keyword pattern '
             'is\n'
             '        matched against the subject’s attribute value.  If this '
             'fails,\n'
             '        the class pattern fails; if this succeeds, the match '
             'proceeds\n'
             '        to the next keyword.\n'
             '\n'
             '   II. If all keyword patterns succeed, the class pattern '
             'succeeds.\n'
             '\n'
             '   If any positional patterns are present, they are converted '
             'to\n'
             '   keyword patterns using the "__match_args__" attribute on the '
             'class\n'
             '   "name_or_attr" before matching:\n'
             '\n'
             '   I. The equivalent of "getattr(cls, "__match_args__", ())" is\n'
             '   called.\n'
             '\n'
             '      * If this raises an exception, the exception bubbles up.\n'
             '\n'
             '      * If the returned value is not a tuple, the conversion '
             'fails and\n'
             '        "TypeError" is raised.\n'
             '\n'
             '      * If there are more positional patterns than\n'
             '        "len(cls.__match_args__)", "TypeError" is raised.\n'
             '\n'
             '      * Otherwise, positional pattern "i" is converted to a '
             'keyword\n'
             '        pattern using "__match_args__[i]" as the keyword.\n'
             '        "__match_args__[i]" must be a string; if not "TypeError" '
             'is\n'
             '        raised.\n'
             '\n'
             '      * If there are duplicate keywords, "TypeError" is raised.\n'
             '\n'
             '      See also:\n'
             '\n'
             '        Customizing positional arguments in class pattern '
             'matching\n'
             '\n'
             '   II. Once all positional patterns have been converted to '
             'keyword\n'
             '   patterns,\n'
             '      the match proceeds as if there were only keyword '
             'patterns.\n'
             '\n'
             '   For the following built-in types the handling of positional\n'
             '   subpatterns is different:\n'
             '\n'
             '   * "bool"\n'
             '\n'
             '   * "bytearray"\n'
             '\n'
             '   * "bytes"\n'
             '\n'
             '   * "dict"\n'
             '\n'
             '   * "float"\n'
             '\n'
             '   * "frozenset"\n'
             '\n'
             '   * "int"\n'
             '\n'
             '   * "list"\n'
             '\n'
             '   * "set"\n'
             '\n'
             '   * "str"\n'
             '\n'
             '   * "tuple"\n'
             '\n'
             '   These classes accept a single positional argument, and the '
             'pattern\n'
             '   there is matched against the whole object rather than an '
             'attribute.\n'
             '   For example "int(0|1)" matches the value "0", but not the '
             'value\n'
             '   "0.0".\n'
             '\n'
             'In simple terms "CLS(P1, attr=P2)" matches only if the '
             'following\n'
             'happens:\n'
             '\n'
             '* "isinstance(<subject>, CLS)"\n'
             '\n'
             '* convert "P1" to a keyword pattern using "CLS.__match_args__"\n'
             '\n'
             '* For each keyword argument "attr=P2":\n'
             '\n'
             '  * "hasattr(<subject>, "attr")"\n'
             '\n'
             '  * "P2" matches "<subject>.attr"\n'
             '\n'
             '* … and so on for the corresponding keyword argument/pattern '
             'pair.\n'
             '\n'
             'See also:\n'
             '\n'
             '  * **PEP 634** – Structural Pattern Matching: Specification\n'
             '\n'
             '  * **PEP 636** – Structural Pattern Matching: Tutorial\n'
             '\n'
             '\n'
             'Function definitions\n'
             '====================\n'
             '\n'
             'A function definition defines a user-defined function object '
             '(see\n'
             'section The standard type hierarchy):\n'
             '\n'
             '   funcdef                   ::= [decorators] "def" funcname '
             '[type_params] "(" [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   ::= "*" [star_parameter] ("," '
             'defparameter)* ["," ["**" parameter [","]]]\n'
             '                               | "**" parameter [","]\n'
             '   parameter                 ::= identifier [":" expression]\n'
             '   star_parameter            ::= identifier [":" ["*"] '
             'expression]\n'
             '   defparameter              ::= parameter ["=" expression]\n'
             '   funcname                  ::= identifier\n'
             '\n'
             'A function definition is an executable statement.  Its execution '
             'binds\n'
             'the function name in the current local namespace to a function '
             'object\n'
             '(a wrapper around the executable code for the function).  This\n'
             'function object contains a reference to the current global '
             'namespace\n'
             'as the global namespace to be used when the function is called.\n'
             '\n'
             'The function definition does not execute the function body; this '
             'gets\n'
             'executed only when the function is called. [4]\n'
             '\n'
             'A function definition may be wrapped by one or more *decorator*\n'
             'expressions. Decorator expressions are evaluated when the '
             'function is\n'
             'defined, in the scope that contains the function definition.  '
             'The\n'
             'result must be a callable, which is invoked with the function '
             'object\n'
             'as the only argument. The returned value is bound to the '
             'function name\n'
             'instead of the function object.  Multiple decorators are applied '
             'in\n'
             'nested fashion. For example, the following code\n'
             '\n'
             '   @f1(arg)\n'
             '   @f2\n'
             '   def func(): pass\n'
             '\n'
             'is roughly equivalent to\n'
             '\n'
             '   def func(): pass\n'
             '   func = f1(arg)(f2(func))\n'
             '\n'
             'except that the original function is not temporarily bound to '
             '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'
             'A list of type parameters may be given in square brackets '
             'between the\n'
             'function’s name and the opening parenthesis for its parameter '
             'list.\n'
             'This indicates to static type checkers that the function is '
             'generic.\n'
             'At runtime, the type parameters can be retrieved from the '
             'function’s\n'
             '"__type_params__" attribute. See Generic functions for more.\n'
             '\n'
             'Changed in version 3.12: Type parameter lists are new in Python '
             '3.12.\n'
             '\n'
             'When one or more *parameters* have the form *parameter* "="\n'
             '*expression*, the function is said to have “default parameter '
             'values.”\n'
             'For a parameter with a default value, the corresponding '
             '*argument* may\n'
             'be omitted from a call, in which case the parameter’s default '
             'value is\n'
             'substituted.  If a parameter has a default value, all following\n'
             'parameters up until the “"*"” must also have a default value — '
             'this is\n'
             'a syntactic restriction that is not expressed by the grammar.\n'
             '\n'
             '**Default parameter values are evaluated from left to right when '
             'the\n'
             'function definition is executed.** This means that the '
             'expression is\n'
             'evaluated once, when the function is defined, and that the same '
             '“pre-\n'
             'computed” value is used for each call.  This is especially '
             'important\n'
             'to understand when a default parameter value is a mutable '
             'object, such\n'
             'as a list or a dictionary: if the function modifies the object '
             '(e.g.\n'
             'by appending an item to a list), the default parameter value is '
             'in\n'
             'effect modified.  This is generally not what was intended.  A '
             'way\n'
             'around this is to use "None" as the default, and explicitly test '
             'for\n'
             'it in the body of the function, e.g.:\n'
             '\n'
             '   def whats_on_the_telly(penguin=None):\n'
             '       if penguin is None:\n'
             '           penguin = []\n'
             '       penguin.append("property of the zoo")\n'
             '       return penguin\n'
             '\n'
             'Function call semantics are described in more detail in section '
             'Calls.\n'
             'A function call always assigns values to all parameters '
             'mentioned in\n'
             'the parameter list, either from positional arguments, from '
             'keyword\n'
             'arguments, or from default values.  If the form “"*identifier"” '
             'is\n'
             'present, it is initialized to a tuple receiving any excess '
             'positional\n'
             'parameters, defaulting to the empty tuple. If the form\n'
             '“"**identifier"” is present, it is initialized to a new ordered\n'
             'mapping receiving any excess keyword arguments, defaulting to a '
             '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'
             'Parameters may have an *annotation* of the form “": '
             'expression"”\n'
             'following the parameter name.  Any parameter may have an '
             'annotation,\n'
             'even those of the form "*identifier" or "**identifier". (As a '
             'special\n'
             'case, parameters of the form "*identifier" may have an '
             'annotation “":\n'
             '*expression"”.) Functions may have “return” annotation of the '
             'form\n'
             '“"-> expression"” after the parameter list.  These annotations '
             'can be\n'
             'any valid Python expression.  The presence of annotations does '
             'not\n'
             'change the semantics of a function. See Annotations for more\n'
             'information on annotations.\n'
             '\n'
             'Changed in version 3.11: Parameters of the form “"*identifier"” '
             'may\n'
             'have an annotation “": *expression"”. See **PEP 646**.\n'
             '\n'
             'It is also possible to create anonymous functions (functions not '
             'bound\n'
             'to a name), for immediate use in expressions.  This uses lambda\n'
             'expressions, described in section Lambdas.  Note that the '
             'lambda\n'
             'expression is merely a shorthand for a simplified function '
             'definition;\n'
             'a function defined in a “"def"” statement can be passed around '
             'or\n'
             'assigned to another name just like a function defined by a '
             'lambda\n'
             'expression.  The “"def"” form is actually more powerful since '
             'it\n'
             'allows the execution of multiple statements and annotations.\n'
             '\n'
             '**Programmer’s note:** Functions are first-class objects.  A '
             '“"def"”\n'
             'statement executed inside a function definition defines a local\n'
             'function that can be returned or passed around.  Free variables '
             'used\n'
             'in the nested function can access the local variables of the '
             'function\n'
             'containing the def.  See section Naming and binding for '
             'details.\n'
             '\n'
             'See also:\n'
             '\n'
             '  **PEP 3107** - Function Annotations\n'
             '     The original specification for function annotations.\n'
             '\n'
             '  **PEP 484** - Type Hints\n'
             '     Definition of a standard meaning for annotations: type '
             'hints.\n'
             '\n'
             '  **PEP 526** - Syntax for Variable Annotations\n'
             '     Ability to type hint variable declarations, including '
             'class\n'
             '     variables and instance variables.\n'
             '\n'
             '  **PEP 563** - Postponed Evaluation of Annotations\n'
             '     Support for forward references within annotations by '
             'preserving\n'
             '     annotations in a string form at runtime instead of eager\n'
             '     evaluation.\n'
             '\n'
             '  **PEP 318** - Decorators for Functions and Methods\n'
             '     Function and method decorators were introduced. Class '
             'decorators\n'
             '     were introduced in **PEP 3129**.\n'
             '\n'
             '\n'
             'Class definitions\n'
             '=================\n'
             '\n'
             'A class definition defines a class object (see section The '
             'standard\n'
             'type hierarchy):\n'
             '\n'
             '   classdef    ::= [decorators] "class" classname [type_params] '
             '[inheritance] ":" suite\n'
             '   inheritance ::= "(" [argument_list] ")"\n'
             '   classname   ::= identifier\n'
             '\n'
             'A class definition is an executable statement.  The inheritance '
             'list\n'
             'usually gives a list of base classes (see Metaclasses for more\n'
             'advanced uses), so each item in the list should evaluate to a '
             'class\n'
             'object which allows subclassing.  Classes without an inheritance '
             'list\n'
             'inherit, by default, from the base class "object"; hence,\n'
             '\n'
             '   class Foo:\n'
             '       pass\n'
             '\n'
             'is equivalent to\n'
             '\n'
             '   class Foo(object):\n'
             '       pass\n'
             '\n'
             'The class’s suite is then executed in a new execution frame '
             '(see\n'
             'Naming and binding), using a newly created local namespace and '
             'the\n'
             'original global namespace. (Usually, the suite contains mostly\n'
             'function definitions.)  When the class’s suite finishes '
             'execution, its\n'
             'execution frame is discarded but its local namespace is saved. '
             '[5] A\n'
             'class object is then created using the inheritance list for the '
             'base\n'
             'classes and the saved local namespace for the attribute '
             'dictionary.\n'
             'The class name is bound to this class object in the original '
             'local\n'
             'namespace.\n'
             '\n'
             'The order in which attributes are defined in the class body is\n'
             'preserved in the new class’s "__dict__".  Note that this is '
             'reliable\n'
             'only right after the class is created and only for classes that '
             'were\n'
             'defined using the definition syntax.\n'
             '\n'
             'Class creation can be customized heavily using metaclasses.\n'
             '\n'
             'Classes can also be decorated: just like when decorating '
             'functions,\n'
             '\n'
             '   @f1(arg)\n'
             '   @f2\n'
             '   class Foo: pass\n'
             '\n'
             'is roughly equivalent to\n'
             '\n'
             '   class Foo: pass\n'
             '   Foo = f1(arg)(f2(Foo))\n'
             '\n'
             'The evaluation rules for the decorator expressions are the same '
             'as 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'
             'A list of type parameters may be given in square brackets '
             'immediately\n'
             'after the class’s name. This indicates to static type checkers '
             'that\n'
             'the class is generic. At runtime, the type parameters can be '
             'retrieved\n'
             'from the class’s "__type_params__" attribute. See Generic '
             'classes for\n'
             'more.\n'
             '\n'
             'Changed in version 3.12: Type parameter lists are new in Python '
             '3.12.\n'
             '\n'
             '**Programmer’s note:** Variables defined in the class definition '
             'are\n'
             'class attributes; they are shared by instances.  Instance '
             'attributes\n'
             'can be set in a method with "self.name = value".  Both class '
             'and\n'
             'instance attributes are accessible through the notation '
             '“"self.name"”,\n'
             'and an instance attribute hides a class attribute with the same '
             'name\n'
             'when accessed in this way.  Class attributes can be used as '
             'defaults\n'
             'for instance attributes, but using mutable values there can lead '
             'to\n'
             'unexpected results.  Descriptors can be used to create instance\n'
             'variables with different implementation details.\n'
             '\n'
             'See also:\n'
             '\n'
             '  **PEP 3115** - Metaclasses in Python 3000\n'
             '     The proposal that changed the declaration of metaclasses to '
             'the\n'
             '     current syntax, and the semantics for how classes with\n'
             '     metaclasses are constructed.\n'
             '\n'
             '  **PEP 3129** - Class Decorators\n'
             '     The proposal that added class decorators.  Function and '
             'method\n'
             '     decorators were introduced in **PEP 318**.\n'
             '\n'
             '\n'
             'Coroutines\n'
             '==========\n'
             '\n'
             'Added in version 3.5.\n'
             '\n'
             '\n'
             'Coroutine function definition\n'
             '-----------------------------\n'
             '\n'
             '   async_funcdef ::= [decorators] "async" "def" funcname "(" '
             '[parameter_list] ")"\n'
             '                     ["->" expression] ":" suite\n'
             '\n'
             'Execution of Python coroutines can be suspended and resumed at '
             'many\n'
             'points (see *coroutine*). "await" expressions, "async for" and '
             '"async\n'
             'with" can only be used in the body of a coroutine function.\n'
             '\n'
             'Functions defined with "async def" syntax are always coroutine\n'
             'functions, even if they do not contain "await" or "async" '
             'keywords.\n'
             '\n'
             'It is a "SyntaxError" to use a "yield from" expression inside '
             'the body\n'
             'of a coroutine function.\n'
             '\n'
             'An example of a coroutine function:\n'
             '\n'
             '   async def func(param1, param2):\n'
             '       do_stuff()\n'
             '       await some_coroutine()\n'
             '\n'
             'Changed in version 3.7: "await" and "async" are now keywords;\n'
             'previously they were only treated as such inside the body of a\n'
             'coroutine function.\n'
             '\n'
             '\n'
             'The "async for" statement\n'
             '-------------------------\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'
             '\n'
             'The "async for" statement allows convenient iteration over\n'
             'asynchronous iterables.\n'
             '\n'
             'The following code:\n'
             '\n'
             '   async for TARGET in ITER:\n'
             '       SUITE\n'
             '   else:\n'
             '       SUITE2\n'
             '\n'
             'Is semantically equivalent to:\n'
             '\n'
             '   iter = (ITER)\n'
             '   iter = type(iter).__aiter__(iter)\n'
             '   running = True\n'
             '\n'
             '   while running:\n'
             '       try:\n'
             '           TARGET = await type(iter).__anext__(iter)\n'
             '       except StopAsyncIteration:\n'
             '           running = False\n'
             '       else:\n'
             '           SUITE\n'
             '   else:\n'
             '       SUITE2\n'
             '\n'
             'See also "__aiter__()" and "__anext__()" for details.\n'
             '\n'
             'It is a "SyntaxError" to use an "async for" statement outside '
             'the body\n'
             'of a coroutine function.\n'
             '\n'
             '\n'
             'The "async with" statement\n'
             '--------------------------\n'
             '\n'
             '   async_with_stmt ::= "async" with_stmt\n'
             '\n'
             'An *asynchronous context manager* is a *context manager* that is '
             'able\n'
             'to suspend execution in its *enter* and *exit* methods.\n'
             '\n'
             'The following code:\n'
             '\n'
             '   async with EXPRESSION as TARGET:\n'
             '       SUITE\n'
             '\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'
             '\n'
             '   try:\n'
             '       TARGET = value\n'
             '       SUITE\n'
             '   except:\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'
             '\n'
             'See also "__aenter__()" and "__aexit__()" for details.\n'
             '\n'
             'It is a "SyntaxError" to use an "async with" statement outside '
             'the\n'
             'body of a coroutine function.\n'
             '\n'
             'See also:\n'
             '\n'
             '  **PEP 492** - Coroutines with async and await syntax\n'
             '     The proposal that made coroutines a proper standalone '
             'concept in\n'
             '     Python, and added supporting syntax.\n'
             '\n'
             '\n'
             'Type parameter lists\n'
             '====================\n'
             '\n'
             'Added in version 3.12.\n'
             '\n'
             'Changed in version 3.13: Support for default values was added '
             '(see\n'
             '**PEP 696**).\n'
             '\n'
             '   type_params  ::= "[" type_param ("," type_param)* "]"\n'
             '   type_param   ::= typevar | typevartuple | paramspec\n'
             '   typevar      ::= identifier (":" expression)? ("=" '
             'expression)?\n'
             '   typevartuple ::= "*" identifier ("=" expression)?\n'
             '   paramspec    ::= "**" identifier ("=" expression)?\n'
             '\n'
             'Functions (including coroutines), classes and type aliases may '
             'contain\n'
             'a type parameter list:\n'
             '\n'
             '   def max[T](args: list[T]) -> T:\n'
             '       ...\n'
             '\n'
             '   async def amax[T](args: list[T]) -> T:\n'
             '       ...\n'
             '\n'
             '   class Bag[T]:\n'
             '       def __iter__(self) -> Iterator[T]:\n'
             '           ...\n'
             '\n'
             '       def add(self, arg: T) -> None:\n'
             '           ...\n'
             '\n'
             '   type ListOrSet[T] = list[T] | set[T]\n'
             '\n'
             'Semantically, this indicates that the function, class, or type '
             'alias\n'
             'is generic over a type variable. This information is primarily '
             'used by\n'
             'static type checkers, and at runtime, generic objects behave '
             'much like\n'
             'their non-generic counterparts.\n'
             '\n'
             'Type parameters are declared in square brackets ("[]") '
             'immediately\n'
             'after the name of the function, class, or type alias. The type\n'
             'parameters are accessible within the scope of the generic '
             'object, but\n'
             'not elsewhere. Thus, after a declaration "def func[T](): pass", '
             'the\n'
             'name "T" is not available in the module scope. Below, the '
             'semantics of\n'
             'generic objects are described with more precision. The scope of '
             'type\n'
             'parameters is modeled with a special function (technically, an\n'
             'annotation scope) that wraps the creation of the generic '
             'object.\n'
             '\n'
             'Generic functions, classes, and type aliases have a '
             '"__type_params__"\n'
             'attribute listing their type parameters.\n'
             '\n'
             'Type parameters come in three kinds:\n'
             '\n'
             '* "typing.TypeVar", introduced by a plain name (e.g., "T").\n'
             '  Semantically, this represents a single type to a type '
             'checker.\n'
             '\n'
             '* "typing.TypeVarTuple", introduced by a name prefixed with a '
             'single\n'
             '  asterisk (e.g., "*Ts"). Semantically, this stands for a tuple '
             'of any\n'
             '  number of types.\n'
             '\n'
             '* "typing.ParamSpec", introduced by a name prefixed with two '
             'asterisks\n'
             '  (e.g., "**P"). Semantically, this stands for the parameters of '
             'a\n'
             '  callable.\n'
             '\n'
             '"typing.TypeVar" declarations can define *bounds* and '
             '*constraints*\n'
             'with a colon (":") followed by an expression. A single '
             'expression\n'
             'after the colon indicates a bound (e.g. "T: int"). Semantically, '
             'this\n'
             'means that the "typing.TypeVar" can only represent types that '
             'are a\n'
             'subtype of this bound. A parenthesized tuple of expressions '
             'after the\n'
             'colon indicates a set of constraints (e.g. "T: (str, bytes)"). '
             'Each\n'
             'member of the tuple should be a type (again, this is not '
             'enforced at\n'
             'runtime). Constrained type variables can only take on one of the '
             'types\n'
             'in the list of constraints.\n'
             '\n'
             'For "typing.TypeVar"s declared using the type parameter list '
             'syntax,\n'
             'the bound and constraints are not evaluated when the generic '
             'object is\n'
             'created, but only when the value is explicitly accessed through '
             'the\n'
             'attributes "__bound__" and "__constraints__". To accomplish '
             'this, the\n'
             'bounds or constraints are evaluated in a separate annotation '
             'scope.\n'
             '\n'
             '"typing.TypeVarTuple"s and "typing.ParamSpec"s cannot have '
             'bounds or\n'
             'constraints.\n'
             '\n'
             'All three flavors of type parameters can also have a *default '
             'value*,\n'
             'which is used when the type parameter is not explicitly '
             'provided. This\n'
             'is added by appending a single equals sign ("=") followed by an\n'
             'expression. Like the bounds and constraints of type variables, '
             'the\n'
             'default value is not evaluated when the object is created, but '
             'only\n'
             'when the type parameter’s "__default__" attribute is accessed. '
             'To this\n'
             'end, the default value is evaluated in a separate annotation '
             'scope. If\n'
             'no default value is specified for a type parameter, the '
             '"__default__"\n'
             'attribute is set to the special sentinel object '
             '"typing.NoDefault".\n'
             '\n'
             'The following example indicates the full set of allowed type '
             'parameter\n'
             'declarations:\n'
             '\n'
             '   def overly_generic[\n'
             '      SimpleTypeVar,\n'
             '      TypeVarWithDefault = int,\n'
             '      TypeVarWithBound: int,\n'
             '      TypeVarWithConstraints: (str, bytes),\n'
             '      *SimpleTypeVarTuple = (int, float),\n'
             '      **SimpleParamSpec = (str, bytearray),\n'
             '   ](\n'
             '      a: SimpleTypeVar,\n'
             '      b: TypeVarWithDefault,\n'
             '      c: TypeVarWithBound,\n'
             '      d: Callable[SimpleParamSpec, TypeVarWithConstraints],\n'
             '      *e: SimpleTypeVarTuple,\n'
             '   ): ...\n'
             '\n'
             '\n'
             'Generic functions\n'
             '-----------------\n'
             '\n'
             'Generic functions are declared as follows:\n'
             '\n'
             '   def func[T](arg: T): ...\n'
             '\n'
             'This syntax is equivalent to:\n'
             '\n'
             '   annotation-def TYPE_PARAMS_OF_func():\n'
             '       T = typing.TypeVar("T")\n'
             '       def func(arg: T): ...\n'
             '       func.__type_params__ = (T,)\n'
             '       return func\n'
             '   func = TYPE_PARAMS_OF_func()\n'
             '\n'
             'Here "annotation-def" indicates an annotation scope, which is '
             'not\n'
             'actually bound to any name at runtime. (One other liberty is '
             'taken in\n'
             'the translation: the syntax does not go through attribute access '
             'on\n'
             'the "typing" module, but creates an instance of '
             '"typing.TypeVar"\n'
             'directly.)\n'
             '\n'
             'The annotations of generic functions are evaluated within the\n'
             'annotation scope used for declaring the type parameters, but '
             'the\n'
             'function’s defaults and decorators are not.\n'
             '\n'
             'The following example illustrates the scoping rules for these '
             'cases,\n'
             'as well as for additional flavors of type parameters:\n'
             '\n'
             '   @decorator\n'
             '   def func[T: int, *Ts, **P](*args: *Ts, arg: Callable[P, T] = '
             'some_default):\n'
             '       ...\n'
             '\n'
             'Except for the lazy evaluation of the "TypeVar" bound, this is\n'
             'equivalent to:\n'
             '\n'
             '   DEFAULT_OF_arg = some_default\n'
             '\n'
             '   annotation-def TYPE_PARAMS_OF_func():\n'
             '\n'
             '       annotation-def BOUND_OF_T():\n'
             '           return int\n'
             '       # In reality, BOUND_OF_T() is evaluated only on demand.\n'
             '       T = typing.TypeVar("T", bound=BOUND_OF_T())\n'
             '\n'
             '       Ts = typing.TypeVarTuple("Ts")\n'
             '       P = typing.ParamSpec("P")\n'
             '\n'
             '       def func(*args: *Ts, arg: Callable[P, T] = '
             'DEFAULT_OF_arg):\n'
             '           ...\n'
             '\n'
             '       func.__type_params__ = (T, Ts, P)\n'
             '       return func\n'
             '   func = decorator(TYPE_PARAMS_OF_func())\n'
             '\n'
             'The capitalized names like "DEFAULT_OF_arg" are not actually '
             'bound at\n'
             'runtime.\n'
             '\n'
             '\n'
             'Generic classes\n'
             '---------------\n'
             '\n'
             'Generic classes are declared as follows:\n'
             '\n'
             '   class Bag[T]: ...\n'
             '\n'
             'This syntax is equivalent to:\n'
             '\n'
             '   annotation-def TYPE_PARAMS_OF_Bag():\n'
             '       T = typing.TypeVar("T")\n'
             '       class Bag(typing.Generic[T]):\n'
             '           __type_params__ = (T,)\n'
             '           ...\n'
             '       return Bag\n'
             '   Bag = TYPE_PARAMS_OF_Bag()\n'
             '\n'
             'Here again "annotation-def" (not a real keyword) indicates an\n'
             'annotation scope, and the name "TYPE_PARAMS_OF_Bag" is not '
             'actually\n'
             'bound at runtime.\n'
             '\n'
             'Generic classes implicitly inherit from "typing.Generic". The '
             'base\n'
             'classes and keyword arguments of generic classes are evaluated '
             'within\n'
             'the type scope for the type parameters, and decorators are '
             'evaluated\n'
             'outside that scope. This is illustrated by this example:\n'
             '\n'
             '   @decorator\n'
             '   class Bag(Base[T], arg=T): ...\n'
             '\n'
             'This is equivalent to:\n'
             '\n'
             '   annotation-def TYPE_PARAMS_OF_Bag():\n'
             '       T = typing.TypeVar("T")\n'
             '       class Bag(Base[T], typing.Generic[T], arg=T):\n'
             '           __type_params__ = (T,)\n'
             '           ...\n'
             '       return Bag\n'
             '   Bag = decorator(TYPE_PARAMS_OF_Bag())\n'
             '\n'
             '\n'
             'Generic type aliases\n'
             '--------------------\n'
             '\n'
             'The "type" statement can also be used to create a generic type '
             'alias:\n'
             '\n'
             '   type ListOrSet[T] = list[T] | set[T]\n'
             '\n'
             'Except for the lazy evaluation of the value, this is equivalent '
             'to:\n'
             '\n'
             '   annotation-def TYPE_PARAMS_OF_ListOrSet():\n'
             '       T = typing.TypeVar("T")\n'
             '\n'
             '       annotation-def VALUE_OF_ListOrSet():\n'
             '           return list[T] | set[T]\n'
             '       # In reality, the value is lazily evaluated\n'
             '       return typing.TypeAliasType("ListOrSet", '
             'VALUE_OF_ListOrSet(), type_params=(T,))\n'
             '   ListOrSet = TYPE_PARAMS_OF_ListOrSet()\n'
             '\n'
             'Here, "annotation-def" (not a real keyword) indicates an '
             'annotation\n'
             'scope. The capitalized names like "TYPE_PARAMS_OF_ListOrSet" are '
             'not\n'
             'actually bound at runtime.\n'
             '\n'
             '\n'
             'Annotations\n'
             '===========\n'
             '\n'
             'Changed in version 3.14: Annotations are now lazily evaluated '
             'by\n'
             'default.\n'
             '\n'
             'Variables and function parameters may carry *annotations*, '
             'created by\n'
             'adding a colon after the name, followed by an expression:\n'
             '\n'
             '   x: annotation = 1\n'
             '   def f(param: annotation): ...\n'
             '\n'
             'Functions may also carry a return annotation following an '
             'arrow:\n'
             '\n'
             '   def f() -> annotation: ...\n'
             '\n'
             'Annotations are conventionally used for *type hints*, but this '
             'is not\n'
             'enforced by the language, and in general annotations may '
             'contain\n'
             'arbitrary expressions. The presence of annotations does not '
             'change the\n'
             'runtime semantics of the code, except if some mechanism is used '
             'that\n'
             'introspects and uses the annotations (such as "dataclasses" or\n'
             '"functools.singledispatch()").\n'
             '\n'
             'By default, annotations are lazily evaluated in a annotation '
             'scope.\n'
             'This means that they are not evaluated when the code containing '
             'the\n'
             'annotation is evaluated. Instead, the interpreter saves '
             'information\n'
             'that can be used to evaluate the annotation later if requested. '
             'The\n'
             '"annotationlib" module provides tools for evaluating '
             'annotations.\n'
             '\n'
             'If the future statement "from __future__ import annotations" is\n'
             'present, all annotations are instead stored as strings:\n'
             '\n'
             '   >>> from __future__ import annotations\n'
             '   >>> def f(param: annotation): ...\n'
             '   >>> f.__annotations__\n'
             "   {'param': 'annotation'}\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'
             '\n'
             '[2] In pattern matching, a sequence is defined as one of the\n'
             '    following:\n'
             '\n'
             '    * a class that inherits from "collections.abc.Sequence"\n'
             '\n'
             '    * a Python class that has been registered as\n'
             '      "collections.abc.Sequence"\n'
             '\n'
             '    * a builtin class that has its (CPython) '
             '"Py_TPFLAGS_SEQUENCE" bit\n'
             '      set\n'
             '\n'
             '    * a class that inherits from any of the above\n'
             '\n'
             '    The following standard library classes are sequences:\n'
             '\n'
             '    * "array.array"\n'
             '\n'
             '    * "collections.deque"\n'
             '\n'
             '    * "list"\n'
             '\n'
             '    * "memoryview"\n'
             '\n'
             '    * "range"\n'
             '\n'
             '    * "tuple"\n'
             '\n'
             '    Note:\n'
             '\n'
             '      Subject values of type "str", "bytes", and "bytearray" do '
             'not\n'
             '      match sequence patterns.\n'
             '\n'
             '[3] In pattern matching, a mapping is defined as one of the '
             'following:\n'
             '\n'
             '    * a class that inherits from "collections.abc.Mapping"\n'
             '\n'
             '    * a Python class that has been registered as\n'
             '      "collections.abc.Mapping"\n'
             '\n'
             '    * a builtin class that has its (CPython) '
             '"Py_TPFLAGS_MAPPING" bit\n'
             '      set\n'
             '\n'
             '    * a class that inherits from any of the above\n'
             '\n'
             '    The standard library classes "dict" and '
             '"types.MappingProxyType"\n'
             '    are mappings.\n'
             '\n'
             '[4] 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'
             '[5] A string literal appearing as the first statement in the '
             'class\n'
             '    body is transformed into the namespace’s "__doc__" item and\n'
             '    therefore the class’s *docstring*.\n',
 'context-managers': 'With Statement Context Managers\n'
                     '*******************************\n'
                     '\n'
                     'A *context manager* is an object that defines the '
                     'runtime context to\n'
                     'be established when executing a "with" statement. The '
                     'context manager\n'
                     'handles the entry into, and the exit from, the desired '
                     'runtime context\n'
                     'for the execution of the block of code.  Context '
                     'managers are normally\n'
                     'invoked using the "with" statement (described in section '
                     'The with\n'
                     'statement), but can also be used by directly invoking '
                     'their methods.\n'
                     '\n'
                     'Typical uses of context managers include saving and '
                     'restoring various\n'
                     'kinds of global state, locking and unlocking resources, '
                     'closing opened\n'
                     'files, etc.\n'
                     '\n'
                     'For more information on context managers, see Context '
                     'Manager Types.\n'
                     'The "object" class itself does not provide the context '
                     'manager\n'
                     'methods.\n'
                     '\n'
                     'object.__enter__(self)\n'
                     '\n'
                     '   Enter the runtime context related to this object. The '
                     '"with"\n'
                     '   statement will bind this method’s return value to the '
                     'target(s)\n'
                     '   specified in the "as" clause of the statement, if '
                     'any.\n'
                     '\n'
                     'object.__exit__(self, exc_type, exc_value, traceback)\n'
                     '\n'
                     '   Exit the runtime context related to this object. The '
                     'parameters\n'
                     '   describe the exception that caused the context to be '
                     'exited. If the\n'
                     '   context was exited without an exception, all three '
                     'arguments will\n'
                     '   be "None".\n'
                     '\n'
                     '   If an exception is supplied, and the method wishes to '
                     'suppress the\n'
                     '   exception (i.e., prevent it from being propagated), '
                     'it should\n'
                     '   return a true value. Otherwise, the exception will be '
                     'processed\n'
                     '   normally upon exit from this method.\n'
                     '\n'
                     '   Note that "__exit__()" methods should not reraise the '
                     'passed-in\n'
                     '   exception; this is the caller’s responsibility.\n'
                     '\n'
                     'See also:\n'
                     '\n'
                     '  **PEP 343** - The “with” statement\n'
                     '     The specification, background, and examples for the '
                     'Python "with"\n'
                     '     statement.\n',
 'continue': 'The "continue" statement\n'
             '************************\n'
             '\n'
             '   continue_stmt ::= "continue"\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'
             '\n'
             'When "continue" passes control out of a "try" statement with a\n'
             '"finally" clause, that "finally" clause is executed before '
             'really\n'
             'starting the next loop cycle.\n',
 'conversions': 'Arithmetic conversions\n'
                '**********************\n'
                '\n'
                'When a description of an arithmetic operator below uses the '
                'phrase\n'
                '“the numeric arguments are converted to a common real type”, '
                'this\n'
                'means that the operator implementation for built-in types '
                'works as\n'
                'follows:\n'
                '\n'
                '* If both arguments are complex numbers, no conversion is '
                'performed;\n'
                '\n'
                '* if either argument is a complex or a floating-point number, '
                'the\n'
                '  other is converted to a floating-point number;\n'
                '\n'
                '* otherwise, both must be integers and no conversion is '
                'necessary.\n'
                '\n'
                'Some additional rules apply for certain operators (e.g., a '
                'string as a\n'
                'left argument to the ‘%’ operator).  Extensions must define '
                'their own\n'
                'conversion behavior.\n',
 'customization': 'Basic customization\n'
                  '*******************\n'
                  '\n'
                  'object.__new__(cls[, ...])\n'
                  '\n'
                  '   Called to create a new instance of class *cls*.  '
                  '"__new__()" is a\n'
                  '   static method (special-cased so you need not declare it '
                  'as such)\n'
                  '   that takes the class of which an instance was requested '
                  'as its\n'
                  '   first argument.  The remaining arguments are those '
                  'passed to the\n'
                  '   object constructor expression (the call to the class).  '
                  'The return\n'
                  '   value of "__new__()" should be the new object instance '
                  '(usually an\n'
                  '   instance of *cls*).\n'
                  '\n'
                  '   Typical implementations create a new instance of the '
                  'class by\n'
                  '   invoking the superclass’s "__new__()" method using\n'
                  '   "super().__new__(cls[, ...])" with appropriate arguments '
                  'and then\n'
                  '   modifying the newly created instance as necessary before '
                  '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'
                  '\n'
                  '   If "__new__()" does not return an instance of *cls*, '
                  'then the new\n'
                  '   instance’s "__init__()" method will not be invoked.\n'
                  '\n'
                  '   "__new__()" is intended mainly to allow subclasses of '
                  'immutable\n'
                  '   types (like int, str, or tuple) to customize instance '
                  'creation.  It\n'
                  '   is also commonly overridden in custom metaclasses in '
                  'order to\n'
                  '   customize class creation.\n'
                  '\n'
                  'object.__init__(self[, ...])\n'
                  '\n'
                  '   Called after the instance has been created (by '
                  '"__new__()"), but\n'
                  '   before it is returned to the caller.  The arguments are '
                  'those\n'
                  '   passed to the class constructor expression.  If a base '
                  'class has an\n'
                  '   "__init__()" method, the derived class’s "__init__()" '
                  'method, if\n'
                  '   any, must explicitly call it to ensure proper '
                  'initialization of the\n'
                  '   base class part of the instance; for example:\n'
                  '   "super().__init__([args...])".\n'
                  '\n'
                  '   Because "__new__()" and "__init__()" work together in '
                  'constructing\n'
                  '   objects ("__new__()" to create it, and "__init__()" to '
                  'customize\n'
                  '   it), no non-"None" value may be returned by '
                  '"__init__()"; doing so\n'
                  '   will cause a "TypeError" to be raised at runtime.\n'
                  '\n'
                  'object.__del__(self)\n'
                  '\n'
                  '   Called when the instance is about to be destroyed.  This '
                  'is also\n'
                  '   called a finalizer or (improperly) a destructor.  If a '
                  'base class\n'
                  '   has a "__del__()" method, the derived class’s '
                  '"__del__()" method,\n'
                  '   if any, must explicitly call it to ensure proper '
                  'deletion of the\n'
                  '   base class part of the instance.\n'
                  '\n'
                  '   It is possible (though not recommended!) for the '
                  '"__del__()" method\n'
                  '   to postpone destruction of the instance by creating a '
                  'new reference\n'
                  '   to it.  This is called object *resurrection*.  It is\n'
                  '   implementation-dependent whether "__del__()" is called a '
                  'second\n'
                  '   time when a resurrected object is about to be destroyed; '
                  'the\n'
                  '   current *CPython* implementation only calls it once.\n'
                  '\n'
                  '   It is not guaranteed that "__del__()" methods are called '
                  'for\n'
                  '   objects that still exist when the interpreter exits.\n'
                  '   "weakref.finalize" provides a straightforward way to '
                  'register a\n'
                  '   cleanup function to be called when an object is garbage '
                  'collected.\n'
                  '\n'
                  '   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'
                  '     only called when "x"’s reference count reaches zero.\n'
                  '\n'
                  '   **CPython implementation detail:** It is possible for a '
                  'reference\n'
                  '   cycle to prevent the reference count of an object from '
                  'going to\n'
                  '   zero.  In this case, the cycle will be later detected '
                  'and deleted\n'
                  '   by the *cyclic garbage collector*.  A common cause of '
                  'reference\n'
                  '   cycles is when an exception has been caught in a local '
                  'variable.\n'
                  '   The frame’s locals then reference the exception, which '
                  'references\n'
                  '   its own traceback, which references the locals of all '
                  'frames caught\n'
                  '   in the traceback.\n'
                  '\n'
                  '   See also: Documentation for the "gc" module.\n'
                  '\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'
                  '     * "__del__()" can be invoked when arbitrary code is '
                  'being\n'
                  '       executed, including from any arbitrary thread.  If '
                  '"__del__()"\n'
                  '       needs to take a lock or invoke any other blocking '
                  'resource, it\n'
                  '       may deadlock as the resource may already be taken by '
                  'the code\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'
                  '\n'
                  'object.__repr__(self)\n'
                  '\n'
                  '   Called by the "repr()" built-in function to compute the '
                  '“official”\n'
                  '   string representation of an object.  If at all possible, '
                  'this\n'
                  '   should look like a valid Python expression that could be '
                  'used to\n'
                  '   recreate an object with the same value (given an '
                  'appropriate\n'
                  '   environment).  If this is not possible, a string of the '
                  'form\n'
                  '   "<...some useful description...>" should be returned. '
                  'The return\n'
                  '   value must be a string object. If a class defines '
                  '"__repr__()" but\n'
                  '   not "__str__()", then "__repr__()" is also used when an '
                  '“informal”\n'
                  '   string representation of instances of that class is '
                  'required.\n'
                  '\n'
                  '   This is typically used for debugging, so it is important '
                  'that the\n'
                  '   representation is information-rich and unambiguous. A '
                  'default\n'
                  '   implementation is provided by the "object" class '
                  'itself.\n'
                  '\n'
                  'object.__str__(self)\n'
                  '\n'
                  '   Called by "str(object)", the default "__format__()" '
                  'implementation,\n'
                  '   and the built-in function "print()", to compute the '
                  '“informal” or\n'
                  '   nicely printable string representation of an object.  '
                  'The return\n'
                  '   value must be a str object.\n'
                  '\n'
                  '   This method differs from "object.__repr__()" in that '
                  'there is no\n'
                  '   expectation that "__str__()" return a valid Python '
                  'expression: a\n'
                  '   more convenient or concise representation can be used.\n'
                  '\n'
                  '   The default implementation defined by the built-in type '
                  '"object"\n'
                  '   calls "object.__repr__()".\n'
                  '\n'
                  'object.__bytes__(self)\n'
                  '\n'
                  '   Called by bytes to compute a byte-string representation '
                  'of an\n'
                  '   object. This should return a "bytes" object. The '
                  '"object" class\n'
                  '   itself does not provide this method.\n'
                  '\n'
                  'object.__format__(self, format_spec)\n'
                  '\n'
                  '   Called by the "format()" built-in function, and by '
                  'extension,\n'
                  '   evaluation of formatted string literals and the '
                  '"str.format()"\n'
                  '   method, to produce a “formatted” string representation '
                  'of an\n'
                  '   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 '
                  'implementing\n'
                  '   "__format__()", however most classes will either '
                  'delegate\n'
                  '   formatting to one of the built-in types, or use a '
                  'similar\n'
                  '   formatting option syntax.\n'
                  '\n'
                  '   See Format Specification Mini-Language for a description '
                  'of the\n'
                  '   standard formatting syntax.\n'
                  '\n'
                  '   The return value must be a string object.\n'
                  '\n'
                  '   The default implementation by the "object" class should '
                  'be given an\n'
                  '   empty *format_spec* string. It delegates to '
                  '"__str__()".\n'
                  '\n'
                  '   Changed in version 3.4: The __format__ method of '
                  '"object" itself\n'
                  '   raises a "TypeError" if passed any non-empty string.\n'
                  '\n'
                  '   Changed in version 3.7: "object.__format__(x, \'\')" is '
                  'now\n'
                  '   equivalent to "str(x)" rather than "format(str(x), '
                  '\'\')".\n'
                  '\n'
                  'object.__lt__(self, other)\n'
                  'object.__le__(self, other)\n'
                  'object.__eq__(self, other)\n'
                  'object.__ne__(self, other)\n'
                  'object.__gt__(self, other)\n'
                  'object.__ge__(self, other)\n'
                  '\n'
                  '   These are the so-called “rich comparison” methods. The\n'
                  '   correspondence between operator symbols and method names '
                  'is as\n'
                  '   follows: "x<y" calls "x.__lt__(y)", "x<=y" calls '
                  '"x.__le__(y)",\n'
                  '   "x==y" calls "x.__eq__(y)", "x!=y" calls "x.__ne__(y)", '
                  '"x>y" calls\n'
                  '   "x.__gt__(y)", and "x>=y" calls "x.__ge__(y)".\n'
                  '\n'
                  '   A rich comparison method may return the singleton '
                  '"NotImplemented"\n'
                  '   if it does not implement the operation for a given pair '
                  'of\n'
                  '   arguments. By convention, "False" and "True" are '
                  'returned for a\n'
                  '   successful comparison. However, these methods can return '
                  'any value,\n'
                  '   so if the comparison operator is used in a Boolean '
                  'context (e.g.,\n'
                  '   in the condition of an "if" statement), Python will call '
                  '"bool()"\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'
                  '   "functools.total_ordering()".\n'
                  '\n'
                  '   By default, the "object" class provides implementations '
                  'consistent\n'
                  '   with Value comparisons: equality compares according to '
                  'object\n'
                  '   identity, and order comparisons raise "TypeError". Each '
                  'default\n'
                  '   method may generate these results directly, but may also '
                  'return\n'
                  '   "NotImplemented".\n'
                  '\n'
                  '   See the paragraph on "__hash__()" for some important '
                  'notes on\n'
                  '   creating *hashable* objects which support custom '
                  'comparison\n'
                  '   operations and are usable as dictionary keys.\n'
                  '\n'
                  '   There are no swapped-argument versions of these methods '
                  '(to be used\n'
                  '   when the left argument does not support the operation '
                  'but the right\n'
                  '   argument does); rather, "__lt__()" and "__gt__()" are '
                  'each other’s\n'
                  '   reflection, "__le__()" and "__ge__()" are each other’s '
                  'reflection,\n'
                  '   and "__eq__()" and "__ne__()" are their own reflection. '
                  'If the\n'
                  '   operands are of different types, and the right operand’s '
                  'type is a\n'
                  '   direct or indirect subclass of the left operand’s type, '
                  'the\n'
                  '   reflected method of the right operand has priority, '
                  'otherwise the\n'
                  '   left operand’s method has priority.  Virtual subclassing '
                  'is not\n'
                  '   considered.\n'
                  '\n'
                  '   When no appropriate method returns any value other than\n'
                  '   "NotImplemented", the "==" and "!=" operators will fall '
                  'back to\n'
                  '   "is" and "is not", respectively.\n'
                  '\n'
                  'object.__hash__(self)\n'
                  '\n'
                  '   Called by built-in function "hash()" and for operations '
                  'on members\n'
                  '   of hashed collections including "set", "frozenset", and '
                  '"dict".\n'
                  '   The "__hash__()" method should return an integer. The '
                  'only required\n'
                  '   property is that objects which compare equal have the '
                  'same hash\n'
                  '   value; it is advised to mix together the hash values of '
                  'the\n'
                  '   components of the object that also play a part in '
                  'comparison of\n'
                  '   objects by packing them into a tuple and hashing the '
                  'tuple.\n'
                  '   Example:\n'
                  '\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'
                  '   If a class does not define an "__eq__()" method it '
                  'should not\n'
                  '   define a "__hash__()" operation either; if it defines '
                  '"__eq__()"\n'
                  '   but not "__hash__()", its instances will not be usable '
                  'as items in\n'
                  '   hashable collections.  If a class defines mutable '
                  'objects and\n'
                  '   implements an "__eq__()" method, it should not '
                  'implement\n'
                  '   "__hash__()", since the implementation of *hashable* '
                  'collections\n'
                  '   requires that a key’s hash value is immutable (if the '
                  'object’s hash\n'
                  '   value changes, it will be in the wrong hash bucket).\n'
                  '\n'
                  '   User-defined classes have "__eq__()" and "__hash__()" '
                  'methods by\n'
                  '   default (inherited from the "object" class); with them, '
                  'all objects\n'
                  '   compare unequal (except with themselves) and '
                  '"x.__hash__()" returns\n'
                  '   an appropriate value such that "x == y" implies both '
                  'that "x is y"\n'
                  '   and "hash(x) == hash(y)".\n'
                  '\n'
                  '   A class that overrides "__eq__()" and does not define '
                  '"__hash__()"\n'
                  '   will have its "__hash__()" implicitly set to "None".  '
                  'When the\n'
                  '   "__hash__()" method of a class is "None", instances of '
                  'the class\n'
                  '   will raise an appropriate "TypeError" when a program '
                  'attempts to\n'
                  '   retrieve their hash value, and will also be correctly '
                  'identified as\n'
                  '   unhashable when checking "isinstance(obj,\n'
                  '   collections.abc.Hashable)".\n'
                  '\n'
                  '   If a class that overrides "__eq__()" needs to retain '
                  'the\n'
                  '   implementation of "__hash__()" from a parent class, the '
                  'interpreter\n'
                  '   must be told this explicitly by setting "__hash__ =\n'
                  '   <ParentClass>.__hash__".\n'
                  '\n'
                  '   If a class that does not override "__eq__()" wishes to '
                  'suppress\n'
                  '   hash support, it should include "__hash__ = None" in the '
                  'class\n'
                  '   definition. A class which defines its own "__hash__()" '
                  'that\n'
                  '   explicitly raises a "TypeError" would be incorrectly '
                  'identified as\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://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 '
                  '(and it\n'
                  '     typically varies between 32-bit and 64-bit builds).See '
                  'also\n'
                  '     "PYTHONHASHSEED".\n'
                  '\n'
                  '   Changed in version 3.3: Hash randomization is enabled by '
                  'default.\n'
                  '\n'
                  'object.__bool__(self)\n'
                  '\n'
                  '   Called to implement truth value testing and the built-in '
                  'operation\n'
                  '   "bool()"; should return "False" or "True".  When this '
                  'method is not\n'
                  '   defined, "__len__()" is called, if it is defined, and '
                  'the object is\n'
                  '   considered true if its result is nonzero.  If a class '
                  'defines\n'
                  '   neither "__len__()" nor "__bool__()" (which is true of '
                  'the "object"\n'
                  '   class itself), all its instances are considered true.\n',
 'debugger': '"pdb" — The Python Debugger\n'
             '***************************\n'
             '\n'
             '**Source code:** Lib/pdb.py\n'
             '\n'
             '======================================================================\n'
             '\n'
             'The module "pdb" defines an interactive source code debugger '
             'for\n'
             'Python programs.  It supports setting (conditional) breakpoints '
             'and\n'
             'single stepping at the source line level, inspection of stack '
             'frames,\n'
             'source code listing, and evaluation of arbitrary Python code in '
             'the\n'
             'context of any stack frame.  It also supports post-mortem '
             'debugging\n'
             'and can be called under program control.\n'
             '\n'
             'The debugger is extensible – it is actually defined as the '
             'class\n'
             '"Pdb". This is currently undocumented but easily understood by '
             'reading\n'
             'the source.  The extension interface uses the modules "bdb" and '
             '"cmd".\n'
             '\n'
             'See also:\n'
             '\n'
             '  Module "faulthandler"\n'
             '     Used to dump Python tracebacks explicitly, on a fault, '
             'after a\n'
             '     timeout, or on a user signal.\n'
             '\n'
             '  Module "traceback"\n'
             '     Standard interface to extract, format and print stack '
             'traces of\n'
             '     Python programs.\n'
             '\n'
             'The typical usage to break into the debugger is to insert:\n'
             '\n'
             '   import pdb; pdb.set_trace()\n'
             '\n'
             'Or:\n'
             '\n'
             '   breakpoint()\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'
             '\n'
             'Changed in version 3.7: The built-in "breakpoint()", when called '
             'with\n'
             'defaults, can be used instead of "import pdb; pdb.set_trace()".\n'
             '\n'
             '   def double(x):\n'
             '      breakpoint()\n'
             '      return x * 2\n'
             '   val = 3\n'
             '   print(f"{val} * 2 is {double(val)}")\n'
             '\n'
             'The debugger’s prompt is "(Pdb)", which is the indicator that '
             'you are\n'
             'in debug mode:\n'
             '\n'
             '   > ...(2)double()\n'
             '   -> breakpoint()\n'
             '   (Pdb) p x\n'
             '   3\n'
             '   (Pdb) continue\n'
             '   3 * 2 is 6\n'
             '\n'
             'Changed in version 3.3: Tab-completion via the "readline" module '
             'is\n'
             'available for commands and command arguments, e.g. the current '
             'global\n'
             'and local names are offered as arguments of the "p" command.\n'
             '\n'
             'You can also invoke "pdb" from the command line to debug other\n'
             'scripts.  For example:\n'
             '\n'
             '   python -m pdb myscript.py\n'
             '\n'
             'When invoked as a module, pdb will automatically enter '
             'post-mortem\n'
             'debugging if the program being debugged exits abnormally.  After '
             'post-\n'
             'mortem debugging (or after normal exit of the program), pdb '
             'will\n'
             'restart the program.  Automatic restarting preserves pdb’s state '
             '(such\n'
             'as breakpoints) and in most cases is more useful than quitting '
             'the\n'
             'debugger upon program’s exit.\n'
             '\n'
             'Changed in version 3.2: Added the "-c" option to execute '
             'commands as\n'
             'if given in a ".pdbrc" file; see Debugger Commands.\n'
             '\n'
             'Changed in version 3.7: Added the "-m" option to execute '
             'modules\n'
             'similar to the way "python -m" does. As with a script, the '
             'debugger\n'
             'will pause execution just before the first line of the module.\n'
             '\n'
             'Typical usage to execute a statement under control of the '
             'debugger is:\n'
             '\n'
             '   >>> import pdb\n'
             '   >>> def f(x):\n'
             '   ...     print(1 / x)\n'
             '   >>> pdb.run("f(2)")\n'
             '   > <string>(1)<module>()\n'
             '   (Pdb) continue\n'
             '   0.5\n'
             '   >>>\n'
             '\n'
             'The typical usage to inspect a crashed program is:\n'
             '\n'
             '   >>> import pdb\n'
             '   >>> def f(x):\n'
             '   ...     print(1 / x)\n'
             '   ...\n'
             '   >>> f(0)\n'
             '   Traceback (most recent call last):\n'
             '     File "<stdin>", line 1, in <module>\n'
             '     File "<stdin>", line 2, in f\n'
             '   ZeroDivisionError: division by zero\n'
             '   >>> pdb.pm()\n'
             '   > <stdin>(2)f()\n'
             '   (Pdb) p x\n'
             '   0\n'
             '   (Pdb)\n'
             '\n'
             'Changed in version 3.13: The implementation of **PEP 667** means '
             'that\n'
             'name assignments made via "pdb" will immediately affect the '
             'active\n'
             'scope, even when running inside an *optimized scope*.\n'
             '\n'
             'The module defines the following functions; each enters the '
             'debugger\n'
             'in a slightly different way:\n'
             '\n'
             'pdb.run(statement, globals=None, locals=None)\n'
             '\n'
             '   Execute the *statement* (given as a string or a code object) '
             'under\n'
             '   debugger control.  The debugger prompt appears before any '
             'code is\n'
             '   executed; you can set breakpoints and type "continue", or you '
             'can\n'
             '   step through the statement using "step" or "next" (all these\n'
             '   commands are explained below).  The optional *globals* and '
             '*locals*\n'
             '   arguments specify the environment in which the code is '
             'executed; by\n'
             '   default the dictionary of the module "__main__" is used.  '
             '(See the\n'
             '   explanation of the built-in "exec()" or "eval()" functions.)\n'
             '\n'
             'pdb.runeval(expression, globals=None, locals=None)\n'
             '\n'
             '   Evaluate the *expression* (given as a string or a code '
             'object)\n'
             '   under debugger control.  When "runeval()" returns, it returns '
             'the\n'
             '   value of the *expression*.  Otherwise this function is '
             'similar to\n'
             '   "run()".\n'
             '\n'
             'pdb.runcall(function, *args, **kwds)\n'
             '\n'
             '   Call the *function* (a function or method object, not a '
             'string)\n'
             '   with the given arguments.  When "runcall()" returns, it '
             'returns\n'
             '   whatever the function call returned.  The debugger prompt '
             'appears\n'
             '   as soon as the function is entered.\n'
             '\n'
             'pdb.set_trace(*, header=None, commands=None)\n'
             '\n'
             '   Enter the debugger at the calling stack frame.  This is '
             'useful to\n'
             '   hard-code a breakpoint at a given point in a program, even if '
             'the\n'
             '   code is not otherwise being debugged (e.g. when an assertion\n'
             '   fails).  If given, *header* is printed to the console just '
             'before\n'
             '   debugging begins. The *commands* argument, if given, is a '
             'list of\n'
             '   commands to execute when the debugger starts.\n'
             '\n'
             '   Changed in version 3.7: The keyword-only argument *header*.\n'
             '\n'
             '   Changed in version 3.13: "set_trace()" will enter the '
             'debugger\n'
             '   immediately, rather than on the next line of code to be '
             'executed.\n'
             '\n'
             '   Added in version 3.14: The *commands* argument.\n'
             '\n'
             'pdb.post_mortem(traceback=None)\n'
             '\n'
             '   Enter post-mortem debugging of the given *traceback* object.  '
             'If no\n'
             '   *traceback* is given, it uses the one of the exception that '
             'is\n'
             '   currently being handled (an exception must be being handled '
             'if the\n'
             '   default is to be used).\n'
             '\n'
             'pdb.pm()\n'
             '\n'
             '   Enter post-mortem debugging of the exception found in\n'
             '   "sys.last_exc".\n'
             '\n'
             'The "run*" functions and "set_trace()" are aliases for '
             'instantiating\n'
             'the "Pdb" class and calling the method of the same name.  If you '
             'want\n'
             'to access further features, you have to do this yourself:\n'
             '\n'
             "class pdb.Pdb(completekey='tab', stdin=None, stdout=None, "
             'skip=None, nosigint=False, readrc=True, mode=None)\n'
             '\n'
             '   "Pdb" is the debugger class.\n'
             '\n'
             '   The *completekey*, *stdin* and *stdout* arguments are passed '
             'to the\n'
             '   underlying "cmd.Cmd" class; see the description there.\n'
             '\n'
             '   The *skip* argument, if given, must be an iterable of '
             'glob-style\n'
             '   module name patterns.  The debugger will not step into frames '
             'that\n'
             '   originate in a module that matches one of these patterns. '
             '[1]\n'
             '\n'
             '   By default, Pdb sets a handler for the SIGINT signal (which '
             'is sent\n'
             '   when the user presses "Ctrl-C" on the console) when you give '
             'a\n'
             '   "continue" command. This allows you to break into the '
             'debugger\n'
             '   again by pressing "Ctrl-C".  If you want Pdb not to touch '
             'the\n'
             '   SIGINT handler, set *nosigint* to true.\n'
             '\n'
             '   The *readrc* argument defaults to true and controls whether '
             'Pdb\n'
             '   will load .pdbrc files from the filesystem.\n'
             '\n'
             '   The *mode* argument specifies how the debugger was invoked. '
             'It\n'
             '   impacts the workings of some debugger commands. Valid values '
             'are\n'
             '   "\'inline\'" (used by the breakpoint() builtin), "\'cli\'" '
             '(used by the\n'
             '   command line invocation) or "None" (for backwards compatible\n'
             '   behaviour, as before the *mode* argument was added).\n'
             '\n'
             '   Example call to enable tracing with *skip*:\n'
             '\n'
             "      import pdb; pdb.Pdb(skip=['django.*']).set_trace()\n"
             '\n'
             '   Raises an auditing event "pdb.Pdb" with no arguments.\n'
             '\n'
             '   Changed in version 3.1: Added the *skip* parameter.\n'
             '\n'
             '   Changed in version 3.2: Added the *nosigint* parameter. '
             'Previously,\n'
             '   a SIGINT handler was never set by Pdb.\n'
             '\n'
             '   Changed in version 3.6: The *readrc* argument.\n'
             '\n'
             '   Added in version 3.14: Added the *mode* argument.\n'
             '\n'
             '   run(statement, globals=None, locals=None)\n'
             '   runeval(expression, globals=None, locals=None)\n'
             '   runcall(function, *args, **kwds)\n'
             '   set_trace()\n'
             '\n'
             '      See the documentation for the functions explained above.\n'
             '\n'
             '\n'
             'Debugger Commands\n'
             '=================\n'
             '\n'
             'The commands recognized by the debugger are listed below.  Most\n'
             'commands can be abbreviated to one or two letters as indicated; '
             'e.g.\n'
             '"h(elp)" means that either "h" or "help" can be used to enter '
             'the help\n'
             'command (but not "he" or "hel", nor "H" or "Help" or "HELP").\n'
             'Arguments to commands must be separated by whitespace (spaces '
             'or\n'
             'tabs).  Optional arguments are enclosed in square brackets '
             '("[]") in\n'
             'the command syntax; the square brackets must not be typed.\n'
             'Alternatives in the command syntax are separated by a vertical '
             'bar\n'
             '("|").\n'
             '\n'
             'Entering a blank line repeats the last command entered.  '
             'Exception: if\n'
             'the last command was a "list" command, the next 11 lines are '
             'listed.\n'
             '\n'
             'Commands that the debugger doesn’t recognize are assumed to be '
             'Python\n'
             'statements and are executed in the context of the program being\n'
             'debugged.  Python statements can also be prefixed with an '
             'exclamation\n'
             'point ("!").  This is a powerful way to inspect the program '
             'being\n'
             'debugged; it is even possible to change a variable or call a '
             'function.\n'
             'When an exception occurs in such a statement, the exception name '
             'is\n'
             'printed but the debugger’s state is not changed.\n'
             '\n'
             'Changed in version 3.13: Expressions/Statements whose prefix is '
             'a pdb\n'
             'command are now correctly identified and executed.\n'
             '\n'
             'The debugger supports aliases.  Aliases can have parameters '
             'which\n'
             'allows one a certain level of adaptability to the context under\n'
             'examination.\n'
             '\n'
             'Multiple commands may be entered on a single line, separated by '
             '";;".\n'
             '(A single ";" is not used as it is the separator for multiple '
             'commands\n'
             'in a line that is passed to the Python parser.)  No intelligence '
             'is\n'
             'applied to separating the commands; the input is split at the '
             'first\n'
             '";;" pair, even if it is in the middle of a quoted string. A\n'
             'workaround for strings with double semicolons is to use '
             'implicit\n'
             'string concatenation "\';\'\';\'" or "";"";"".\n'
             '\n'
             'To set a temporary global variable, use a *convenience '
             'variable*. A\n'
             '*convenience variable* is a variable whose name starts with '
             '"$".  For\n'
             'example, "$foo = 1" sets a global variable "$foo" which you can '
             'use in\n'
             'the debugger session.  The *convenience variables* are cleared '
             'when\n'
             'the program resumes execution so it’s less likely to interfere '
             'with\n'
             'your program compared to using normal variables like "foo = 1".\n'
             '\n'
             'There are three preset *convenience variables*:\n'
             '\n'
             '* "$_frame": the current frame you are debugging\n'
             '\n'
             '* "$_retval": the return value if the frame is returning\n'
             '\n'
             '* "$_exception": the exception if the frame is raising an '
             'exception\n'
             '\n'
             'Added in version 3.12: Added the *convenience variable* '
             'feature.\n'
             '\n'
             'If a file ".pdbrc" exists in the user’s home directory or in '
             'the\n'
             'current directory, it is read with "\'utf-8\'" encoding and '
             'executed as\n'
             'if it had been typed at the debugger prompt, with the exception '
             'that\n'
             'empty lines and lines starting with "#" are ignored.  This is\n'
             'particularly useful for aliases.  If both files exist, the one '
             'in the\n'
             'home directory is read first and aliases defined there can be\n'
             'overridden by the local file.\n'
             '\n'
             'Changed in version 3.2: ".pdbrc" can now contain commands that\n'
             'continue debugging, such as "continue" or "next".  Previously, '
             'these\n'
             'commands had no effect.\n'
             '\n'
             'Changed in version 3.11: ".pdbrc" is now read with "\'utf-8\'" '
             'encoding.\n'
             'Previously, it was read with the system locale encoding.\n'
             '\n'
             'h(elp) [command]\n'
             '\n'
             '   Without argument, print the list of available commands.  With '
             'a\n'
             '   *command* as argument, print help about that command.  "help '
             'pdb"\n'
             '   displays the full documentation (the docstring of the "pdb"\n'
             '   module).  Since the *command* argument must be an identifier, '
             '"help\n'
             '   exec" must be entered to get help on the "!" command.\n'
             '\n'
             'w(here) [count]\n'
             '\n'
             '   Print a stack trace, with the most recent frame at the '
             'bottom.  if\n'
             '   *count* is 0, print the current frame entry. If *count* is\n'
             '   negative, print the least recent - *count* frames. If *count* '
             'is\n'
             '   positive, print the most recent *count* frames.  An arrow '
             '(">")\n'
             '   indicates the current frame, which determines the context of '
             'most\n'
             '   commands.\n'
             '\n'
             '   Changed in version 3.14: *count* argument is added.\n'
             '\n'
             'd(own) [count]\n'
             '\n'
             '   Move the current frame *count* (default one) levels down in '
             'the\n'
             '   stack trace (to a newer frame).\n'
             '\n'
             'u(p) [count]\n'
             '\n'
             '   Move the current frame *count* (default one) levels up in the '
             'stack\n'
             '   trace (to an older frame).\n'
             '\n'
             'b(reak) [([filename:]lineno | function) [, condition]]\n'
             '\n'
             '   With a *lineno* argument, set a break at line *lineno* in '
             'the\n'
             '   current file. The line number may be prefixed with a '
             '*filename* and\n'
             '   a colon, to specify a breakpoint in another file (possibly '
             'one that\n'
             '   hasn’t been loaded yet).  The file is searched on '
             '"sys.path".\n'
             '   Acceptable forms of *filename* are "/abspath/to/file.py",\n'
             '   "relpath/file.py", "module" and "package.module".\n'
             '\n'
             '   With a *function* argument, set a break at the first '
             'executable\n'
             '   statement within that function. *function* can be any '
             'expression\n'
             '   that evaluates to a function in the current namespace.\n'
             '\n'
             '   If a second argument is present, it is an expression which '
             'must\n'
             '   evaluate to true before the breakpoint is honored.\n'
             '\n'
             '   Without argument, list all breaks, including for each '
             'breakpoint,\n'
             '   the number of times that breakpoint has been hit, the '
             'current\n'
             '   ignore count, and the associated condition if any.\n'
             '\n'
             '   Each breakpoint is assigned a number to which all the other\n'
             '   breakpoint commands refer.\n'
             '\n'
             'tbreak [([filename:]lineno | function) [, condition]]\n'
             '\n'
             '   Temporary breakpoint, which is removed automatically when it '
             'is\n'
             '   first hit. The arguments are the same as for "break".\n'
             '\n'
             'cl(ear) [filename:lineno | bpnumber ...]\n'
             '\n'
             '   With a *filename:lineno* argument, clear all the breakpoints '
             'at\n'
             '   this line. With a space separated list of breakpoint numbers, '
             'clear\n'
             '   those breakpoints. Without argument, clear all breaks (but '
             'first\n'
             '   ask confirmation).\n'
             '\n'
             'disable bpnumber [bpnumber ...]\n'
             '\n'
             '   Disable the breakpoints given as a space separated list of\n'
             '   breakpoint numbers.  Disabling a breakpoint means it cannot '
             'cause\n'
             '   the program to stop execution, but unlike clearing a '
             'breakpoint, it\n'
             '   remains in the list of breakpoints and can be (re-)enabled.\n'
             '\n'
             'enable bpnumber [bpnumber ...]\n'
             '\n'
             '   Enable the breakpoints specified.\n'
             '\n'
             'ignore bpnumber [count]\n'
             '\n'
             '   Set the ignore count for the given breakpoint number.  If '
             '*count*\n'
             '   is omitted, the ignore count is set to 0.  A breakpoint '
             'becomes\n'
             '   active when the ignore count is zero.  When non-zero, the '
             '*count*\n'
             '   is decremented each time the breakpoint is reached and the\n'
             '   breakpoint is not disabled and any associated condition '
             'evaluates\n'
             '   to true.\n'
             '\n'
             'condition bpnumber [condition]\n'
             '\n'
             '   Set a new *condition* for the breakpoint, an expression which '
             'must\n'
             '   evaluate to true before the breakpoint is honored.  If '
             '*condition*\n'
             '   is absent, any existing condition is removed; i.e., the '
             'breakpoint\n'
             '   is made unconditional.\n'
             '\n'
             'commands [bpnumber]\n'
             '\n'
             '   Specify a list of commands for breakpoint number *bpnumber*.  '
             'The\n'
             '   commands themselves appear on the following lines.  Type a '
             'line\n'
             '   containing just "end" to terminate the commands. An example:\n'
             '\n'
             '      (Pdb) commands 1\n'
             '      (com) p some_variable\n'
             '      (com) end\n'
             '      (Pdb)\n'
             '\n'
             '   To remove all commands from a breakpoint, type "commands" '
             'and\n'
             '   follow it immediately with "end"; that is, give no commands.\n'
             '\n'
             '   With no *bpnumber* argument, "commands" refers to the last\n'
             '   breakpoint set.\n'
             '\n'
             '   You can use breakpoint commands to start your program up '
             'again.\n'
             '   Simply use the "continue" command, or "step", or any other '
             'command\n'
             '   that resumes execution.\n'
             '\n'
             '   Specifying any command resuming execution (currently '
             '"continue",\n'
             '   "step", "next", "return", "until", "jump", "quit" and their\n'
             '   abbreviations) terminates the command list (as if that '
             'command was\n'
             '   immediately followed by end). This is because any time you '
             'resume\n'
             '   execution (even with a simple next or step), you may '
             'encounter\n'
             '   another breakpoint—which could have its own command list, '
             'leading\n'
             '   to ambiguities about which list to execute.\n'
             '\n'
             '   If the list of commands contains the "silent" command, or a '
             'command\n'
             '   that resumes execution, then the breakpoint message '
             'containing\n'
             '   information about the frame is not displayed.\n'
             '\n'
             '   Changed in version 3.14: Frame information will not be '
             'displayed if\n'
             '   a command that resumes execution is present in the command '
             'list.\n'
             '\n'
             's(tep)\n'
             '\n'
             '   Execute the current line, stop at the first possible '
             'occasion\n'
             '   (either in a function that is called or on the next line in '
             'the\n'
             '   current function).\n'
             '\n'
             'n(ext)\n'
             '\n'
             '   Continue execution until the next line in the current '
             'function is\n'
             '   reached or it returns.  (The difference between "next" and '
             '"step"\n'
             '   is that "step" stops inside a called function, while "next"\n'
             '   executes called functions at (nearly) full speed, only '
             'stopping at\n'
             '   the next line in the current function.)\n'
             '\n'
             'unt(il) [lineno]\n'
             '\n'
             '   Without argument, continue execution until the line with a '
             'number\n'
             '   greater than the current one is reached.\n'
             '\n'
             '   With *lineno*, continue execution until a line with a number\n'
             '   greater or equal to *lineno* is reached.  In both cases, also '
             'stop\n'
             '   when the current frame returns.\n'
             '\n'
             '   Changed in version 3.2: Allow giving an explicit line '
             'number.\n'
             '\n'
             'r(eturn)\n'
             '\n'
             '   Continue execution until the current function returns.\n'
             '\n'
             'c(ont(inue))\n'
             '\n'
             '   Continue execution, only stop when a breakpoint is '
             'encountered.\n'
             '\n'
             'j(ump) lineno\n'
             '\n'
             '   Set the next line that will be executed.  Only available in '
             'the\n'
             '   bottom-most frame.  This lets you jump back and execute code '
             'again,\n'
             '   or jump forward to skip code that you don’t want to run.\n'
             '\n'
             '   It should be noted that not all jumps are allowed – for '
             'instance it\n'
             '   is not possible to jump into the middle of a "for" loop or '
             'out of a\n'
             '   "finally" clause.\n'
             '\n'
             'l(ist) [first[, last]]\n'
             '\n'
             '   List source code for the current file.  Without arguments, '
             'list 11\n'
             '   lines around the current line or continue the previous '
             'listing.\n'
             '   With "." as argument, list 11 lines around the current line.  '
             'With\n'
             '   one argument, list 11 lines around at that line.  With two\n'
             '   arguments, list the given range; if the second argument is '
             'less\n'
             '   than the first, it is interpreted as a count.\n'
             '\n'
             '   The current line in the current frame is indicated by "->".  '
             'If an\n'
             '   exception is being debugged, the line where the exception '
             'was\n'
             '   originally raised or propagated is indicated by ">>", if it '
             'differs\n'
             '   from the current line.\n'
             '\n'
             '   Changed in version 3.2: Added the ">>" marker.\n'
             '\n'
             'll | longlist\n'
             '\n'
             '   List all source code for the current function or frame.\n'
             '   Interesting lines are marked as for "list".\n'
             '\n'
             '   Added in version 3.2.\n'
             '\n'
             'a(rgs)\n'
             '\n'
             '   Print the arguments of the current function and their '
             'current\n'
             '   values.\n'
             '\n'
             'p expression\n'
             '\n'
             '   Evaluate *expression* in the current context and print its '
             'value.\n'
             '\n'
             '   Note:\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 *expression* is '
             'pretty-\n'
             '   printed using the "pprint" module.\n'
             '\n'
             'whatis expression\n'
             '\n'
             '   Print the type of *expression*.\n'
             '\n'
             'source expression\n'
             '\n'
             '   Try to get source code of *expression* and display it.\n'
             '\n'
             '   Added in version 3.2.\n'
             '\n'
             'display [expression]\n'
             '\n'
             '   Display the value of *expression* if it changed, each time\n'
             '   execution stops in the current frame.\n'
             '\n'
             '   Without *expression*, list all display expressions for the '
             'current\n'
             '   frame.\n'
             '\n'
             '   Note:\n'
             '\n'
             '     Display evaluates *expression* and compares to the result '
             'of the\n'
             '     previous evaluation of *expression*, so when the result is\n'
             '     mutable, display may not be able to pick up the changes.\n'
             '\n'
             '   Example:\n'
             '\n'
             '      lst = []\n'
             '      breakpoint()\n'
             '      pass\n'
             '      lst.append(1)\n'
             '      print(lst)\n'
             '\n'
             '   Display won’t realize "lst" has been changed because the '
             'result of\n'
             '   evaluation is modified in place by "lst.append(1)" before '
             'being\n'
             '   compared:\n'
             '\n'
             '      > example.py(3)<module>()\n'
             '      -> pass\n'
             '      (Pdb) display lst\n'
             '      display lst: []\n'
             '      (Pdb) n\n'
             '      > example.py(4)<module>()\n'
             '      -> lst.append(1)\n'
             '      (Pdb) n\n'
             '      > example.py(5)<module>()\n'
             '      -> print(lst)\n'
             '      (Pdb)\n'
             '\n'
             '   You can do some tricks with copy mechanism to make it work:\n'
             '\n'
             '      > example.py(3)<module>()\n'
             '      -> pass\n'
             '      (Pdb) display lst[:]\n'
             '      display lst[:]: []\n'
             '      (Pdb) n\n'
             '      > example.py(4)<module>()\n'
             '      -> lst.append(1)\n'
             '      (Pdb) n\n'
             '      > example.py(5)<module>()\n'
             '      -> print(lst)\n'
             '      display lst[:]: [1]  [old: []]\n'
             '      (Pdb)\n'
             '\n'
             '   Added in version 3.2.\n'
             '\n'
             'undisplay [expression]\n'
             '\n'
             '   Do not display *expression* anymore in the current frame.  '
             'Without\n'
             '   *expression*, clear all display expressions for the current '
             'frame.\n'
             '\n'
             '   Added in version 3.2.\n'
             '\n'
             'interact\n'
             '\n'
             '   Start an interactive interpreter (using the "code" module) in '
             'a new\n'
             '   global namespace initialised from the local and global '
             'namespaces\n'
             '   for the current scope. Use "exit()" or "quit()" to exit the\n'
             '   interpreter and return to the debugger.\n'
             '\n'
             '   Note:\n'
             '\n'
             '     As "interact" creates a new dedicated namespace for code\n'
             '     execution, assignments to variables will not affect the '
             'original\n'
             '     namespaces. However, modifications to any referenced '
             'mutable\n'
             '     objects will be reflected in the original namespaces as '
             'usual.\n'
             '\n'
             '   Added in version 3.2.\n'
             '\n'
             '   Changed in version 3.13: "exit()" and "quit()" can be used to '
             'exit\n'
             '   the "interact" command.\n'
             '\n'
             '   Changed in version 3.13: "interact" directs its output to '
             'the\n'
             '   debugger’s output channel rather than "sys.stderr".\n'
             '\n'
             'alias [name [command]]\n'
             '\n'
             '   Create an alias called *name* that executes *command*.  The\n'
             '   *command* must *not* be enclosed in quotes.  Replaceable '
             'parameters\n'
             '   can be indicated by "%1", "%2", … and "%9", while "%*" is '
             'replaced\n'
             '   by all the parameters. If *command* is omitted, the current '
             'alias\n'
             '   for *name* is shown. If no arguments are given, all aliases '
             'are\n'
             '   listed.\n'
             '\n'
             '   Aliases may be nested and can contain anything that can be '
             'legally\n'
             '   typed at the pdb prompt.  Note that internal pdb commands '
             '*can* be\n'
             '   overridden by aliases.  Such a command is then hidden until '
             'the\n'
             '   alias is removed.  Aliasing is recursively applied to the '
             'first\n'
             '   word of the command line; all other words in the line are '
             'left\n'
             '   alone.\n'
             '\n'
             '   As an example, here are two useful aliases (especially when '
             'placed\n'
             '   in the ".pdbrc" file):\n'
             '\n'
             '      # Print instance variables (usage "pi classInst")\n'
             '      alias pi for k in %1.__dict__.keys(): print(f"%1.{k} = '
             '{%1.__dict__[k]}")\n'
             '      # Print instance variables in self\n'
             '      alias ps pi self\n'
             '\n'
             'unalias name\n'
             '\n'
             '   Delete the specified alias *name*.\n'
             '\n'
             '! statement\n'
             '\n'
             '   Execute the (one-line) *statement* in the context of the '
             'current\n'
             '   stack frame. The exclamation point can be omitted unless the '
             'first\n'
             '   word of the statement resembles a debugger command, e.g.:\n'
             '\n'
             '      (Pdb) ! n=42\n'
             '      (Pdb)\n'
             '\n'
             '   To set a global variable, you can prefix the assignment '
             'command\n'
             '   with a "global" statement on the same line, e.g.:\n'
             '\n'
             "      (Pdb) global list_options; list_options = ['-l']\n"
             '      (Pdb)\n'
             '\n'
             'run [args ...]\n'
             'restart [args ...]\n'
             '\n'
             '   Restart the debugged Python program.  If *args* is supplied, '
             'it is\n'
             '   split with "shlex" and the result is used as the new '
             '"sys.argv".\n'
             '   History, breakpoints, actions and debugger options are '
             'preserved.\n'
             '   "restart" is an alias for "run".\n'
             '\n'
             '   Changed in version 3.14: "run" and "restart" commands are '
             'disabled\n'
             '   when the debugger is invoked in "\'inline\'" mode.\n'
             '\n'
             'q(uit)\n'
             '\n'
             '   Quit from the debugger.  The program being executed is '
             'aborted.\n'
             '\n'
             'debug code\n'
             '\n'
             '   Enter a recursive debugger that steps through *code* (which '
             'is an\n'
             '   arbitrary expression or statement to be executed in the '
             'current\n'
             '   environment).\n'
             '\n'
             'retval\n'
             '\n'
             '   Print the return value for the last return of the current '
             'function.\n'
             '\n'
             'exceptions [excnumber]\n'
             '\n'
             '   List or jump between chained exceptions.\n'
             '\n'
             '   When using "pdb.pm()"  or "Pdb.post_mortem(...)" with a '
             'chained\n'
             '   exception instead of a traceback, it allows the user to move\n'
             '   between the chained exceptions using "exceptions" command to '
             'list\n'
             '   exceptions, and "exception <number>" to switch to that '
             'exception.\n'
             '\n'
             '   Example:\n'
             '\n'
             '      def out():\n'
             '          try:\n'
             '              middle()\n'
             '          except Exception as e:\n'
             '              raise ValueError("reraise middle() error") from e\n'
             '\n'
             '      def middle():\n'
             '          try:\n'
             '              return inner(0)\n'
             '          except Exception as e:\n'
             '              raise ValueError("Middle fail")\n'
             '\n'
             '      def inner(x):\n'
             '          1 / x\n'
             '\n'
             '       out()\n'
             '\n'
             '   calling "pdb.pm()" will allow to move between exceptions:\n'
             '\n'
             '      > example.py(5)out()\n'
             '      -> raise ValueError("reraise middle() error") from e\n'
             '\n'
             '      (Pdb) exceptions\n'
             "        0 ZeroDivisionError('division by zero')\n"
             "        1 ValueError('Middle fail')\n"
             "      > 2 ValueError('reraise middle() error')\n"
             '\n'
             '      (Pdb) exceptions 0\n'
             '      > example.py(16)inner()\n'
             '      -> 1 / x\n'
             '\n'
             '      (Pdb) up\n'
             '      > example.py(10)middle()\n'
             '      -> return inner(0)\n'
             '\n'
             '   Added in version 3.13.\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',
 'del': 'The "del" statement\n'
        '*******************\n'
        '\n'
        '   del_stmt ::= "del" target_list\n'
        '\n'
        'Deletion is recursively defined very similar to the way assignment '
        'is\n'
        'defined. Rather than spelling it out in full details, here are some\n'
        'hints.\n'
        '\n'
        'Deletion of a target list recursively deletes each target, from left\n'
        'to right.\n'
        '\n'
        'Deletion of a name removes the binding of that name from the local '
        'or\n'
        'global namespace, depending on whether the name occurs in a "global"\n'
        'statement in the same code block.  If the name is unbound, a\n'
        '"NameError" exception will be raised.\n'
        '\n'
        'Deletion of attribute references, subscriptions and slicings is '
        'passed\n'
        'to the primary object involved; deletion of a slicing is in general\n'
        'equivalent to assignment of an empty slice of the right type (but '
        'even\n'
        'this is determined by the sliced object).\n'
        '\n'
        'Changed in version 3.2: Previously it was illegal to delete a name\n'
        'from the local namespace if it occurs as a free variable in a nested\n'
        'block.\n',
 'dict': 'Dictionary displays\n'
         '*******************\n'
         '\n'
         'A dictionary display is a possibly empty series of dict items\n'
         '(key/value pairs) enclosed in curly braces:\n'
         '\n'
         '   dict_display       ::= "{" [dict_item_list | dict_comprehension] '
         '"}"\n'
         '   dict_item_list     ::= dict_item ("," dict_item)* [","]\n'
         '   dict_item          ::= expression ":" expression | "**" or_expr\n'
         '   dict_comprehension ::= expression ":" expression comp_for\n'
         '\n'
         'A dictionary display yields a new dictionary object.\n'
         '\n'
         'If a comma-separated sequence of dict items is given, they are\n'
         'evaluated from left to right to define the entries of the '
         'dictionary:\n'
         'each key object is used as a key into the dictionary to store the\n'
         'corresponding value.  This means that you can specify the same key\n'
         'multiple times in the dict item list, and the final dictionary’s '
         'value\n'
         'for that key will be the last one given.\n'
         '\n'
         'A double asterisk "**" denotes *dictionary unpacking*. Its operand\n'
         'must be a *mapping*.  Each mapping item is added to the new\n'
         'dictionary.  Later values replace values already set by earlier '
         'dict\n'
         'items and earlier dictionary unpackings.\n'
         '\n'
         'Added in version 3.5: Unpacking into dictionary displays, '
         'originally\n'
         'proposed by **PEP 448**.\n'
         '\n'
         'A dict comprehension, in contrast to list and set comprehensions,\n'
         'needs two expressions separated with a colon followed by the usual\n'
         '“for” and “if” clauses. When the comprehension is run, the '
         'resulting\n'
         'key and value elements are inserted in the new dictionary in the '
         'order\n'
         'they are produced.\n'
         '\n'
         'Restrictions on the types of the key values are listed earlier in\n'
         'section The standard type hierarchy.  (To summarize, the key type\n'
         'should be *hashable*, which excludes all mutable objects.)  Clashes\n'
         'between duplicate keys are not detected; the last value (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',
 'dynamic-features': 'Interaction with dynamic features\n'
                     '*********************************\n'
                     '\n'
                     'Name resolution of free variables occurs at runtime, not '
                     'at compile\n'
                     'time. This means that the following code will print 42:\n'
                     '\n'
                     '   i = 10\n'
                     '   def f():\n'
                     '       print(i)\n'
                     '   i = 42\n'
                     '   f()\n'
                     '\n'
                     'The "eval()" and "exec()" functions do not have access '
                     'to the full\n'
                     'environment for resolving names.  Names may be resolved '
                     'in the local\n'
                     'and global namespaces of the caller.  Free variables are '
                     'not resolved\n'
                     'in the nearest enclosing namespace, but in the global '
                     'namespace.  [1]\n'
                     'The "exec()" and "eval()" functions have optional '
                     'arguments to\n'
                     'override the global and local namespace.  If only one '
                     'namespace is\n'
                     'specified, it is used for both.\n',
 'else': 'The "if" statement\n'
         '******************\n'
         '\n'
         'The "if" statement is used for conditional execution:\n'
         '\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 '
         'one\n'
         'by one until one is found to be true (see section Boolean '
         'operations\n'
         'for the definition of true and false); then that suite is executed\n'
         '(and no other part of the "if" statement is executed or evaluated).\n'
         'If all expressions are false, the suite of the "else" clause, if\n'
         'present, is executed.\n',
 'exceptions': 'Exceptions\n'
               '**********\n'
               '\n'
               'Exceptions are a means of breaking out of the normal flow of '
               'control\n'
               'of a code block in order to handle errors or other '
               'exceptional\n'
               'conditions.  An exception is *raised* at the point where the '
               'error is\n'
               'detected; it may be *handled* by the surrounding code block or '
               'by any\n'
               'code block that directly or indirectly invoked the code block '
               'where\n'
               'the error occurred.\n'
               '\n'
               'The Python interpreter raises an exception when it detects a '
               'run-time\n'
               'error (such as division by zero).  A Python program can also\n'
               'explicitly raise an exception with the "raise" statement. '
               'Exception\n'
               'handlers are specified with the "try" … "except" statement.  '
               'The\n'
               '"finally" clause of such a statement can be used to specify '
               'cleanup\n'
               'code which does not handle the exception, but is executed '
               'whether an\n'
               'exception occurred or not in the preceding code.\n'
               '\n'
               'Python uses the “termination” model of error handling: an '
               'exception\n'
               'handler can find out what happened and continue execution at '
               'an outer\n'
               'level, but it cannot repair the cause of the error and retry '
               'the\n'
               'failing operation (except by re-entering the offending piece '
               'of code\n'
               'from the top).\n'
               '\n'
               'When an exception is not handled at all, the interpreter '
               '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 '
               'exception is\n'
               '"SystemExit".\n'
               '\n'
               'Exceptions are identified by class instances.  The "except" '
               'clause is\n'
               'selected depending on the class of the instance: it must '
               'reference the\n'
               'class of the instance or a *non-virtual base class* thereof. '
               'The\n'
               'instance can be received by the handler and can carry '
               'additional\n'
               'information about the exceptional condition.\n'
               '\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'
               'See also the description of the "try" statement in section The '
               'try\n'
               'statement and "raise" statement in section The raise '
               'statement.\n'
               '\n'
               '-[ Footnotes ]-\n'
               '\n'
               '[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',
 'execmodel': 'Execution model\n'
              '***************\n'
              '\n'
              '\n'
              'Structure of a program\n'
              '======================\n'
              '\n'
              'A Python program is constructed from code blocks. A *block* is '
              'a piece\n'
              'of Python program text that is executed as a unit. The '
              'following are\n'
              'blocks: a module, a function body, and a class definition. '
              'Each\n'
              'command typed interactively is a block.  A script file (a file '
              'given\n'
              'as standard input to the interpreter or specified as a command '
              'line\n'
              'argument to the interpreter) is a code block.  A script command '
              '(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'
              '\n'
              'A code block is executed in an *execution frame*.  A frame '
              'contains\n'
              'some administrative information (used for debugging) and '
              'determines\n'
              'where and how execution continues after the code block’s '
              'execution has\n'
              'completed.\n'
              '\n'
              '\n'
              'Naming and binding\n'
              '==================\n'
              '\n'
              '\n'
              'Binding of names\n'
              '----------------\n'
              '\n'
              '*Names* refer to objects.  Names are introduced by name '
              'binding\n'
              'operations.\n'
              '\n'
              'The following constructs bind names:\n'
              '\n'
              '* formal parameters to functions,\n'
              '\n'
              '* class definitions,\n'
              '\n'
              '* function definitions,\n'
              '\n'
              '* assignment expressions,\n'
              '\n'
              '* targets that are identifiers if occurring in an assignment:\n'
              '\n'
              '  * "for" loop header,\n'
              '\n'
              '  * after "as" in a "with" statement, "except" clause, '
              '"except*"\n'
              '    clause, or in the as-pattern in structural pattern '
              'matching,\n'
              '\n'
              '  * in a capture pattern in structural pattern matching\n'
              '\n'
              '* "import" statements.\n'
              '\n'
              '* "type" statements.\n'
              '\n'
              '* type parameter lists.\n'
              '\n'
              'The "import" statement of the form "from ... import *" binds '
              'all names\n'
              'defined in the imported module, except those beginning with an\n'
              'underscore. This form may only be used at the module level.\n'
              '\n'
              'A target occurring in a "del" statement is also considered '
              'bound for\n'
              'this purpose (though the actual semantics are to unbind the '
              'name).\n'
              '\n'
              'Each assignment or import statement occurs within a block '
              'defined by a\n'
              'class or function definition or at the module level (the '
              'top-level\n'
              'code block).\n'
              '\n'
              'If a name is bound in a block, it is a local variable of that '
              'block,\n'
              'unless declared as "nonlocal" or "global".  If a name is bound '
              'at the\n'
              'module level, it is a global variable.  (The variables of the '
              'module\n'
              'code block are local and global.)  If a variable is used in a '
              'code\n'
              'block but not defined there, it is a *free variable*.\n'
              '\n'
              'Each occurrence of a name in the program text refers to the '
              '*binding*\n'
              'of that name established by the following name resolution '
              'rules.\n'
              '\n'
              '\n'
              'Resolution of names\n'
              '-------------------\n'
              '\n'
              'A *scope* defines the visibility of a name within a block.  If '
              'a local\n'
              'variable is defined in a block, its scope includes that block.  '
              'If the\n'
              'definition occurs in a function block, the scope extends to any '
              'blocks\n'
              'contained within the defining one, unless a contained block '
              'introduces\n'
              'a different binding for the name.\n'
              '\n'
              'When a name is used in a code block, it is resolved using the '
              'nearest\n'
              'enclosing scope.  The set of all such scopes visible to a code '
              'block\n'
              'is called the block’s *environment*.\n'
              '\n'
              'When a name is not found at all, a "NameError" exception is '
              'raised. If\n'
              'the current scope is a function scope, and the name refers to a '
              'local\n'
              'variable that has not yet been bound to a value at the point '
              'where the\n'
              'name is used, an "UnboundLocalError" exception is raised.\n'
              '"UnboundLocalError" is a subclass of "NameError".\n'
              '\n'
              'If a name binding operation occurs anywhere within a code '
              'block, all\n'
              'uses of the name within the block are treated as references to '
              'the\n'
              'current block.  This can lead to errors when a name is used '
              'within a\n'
              'block before it is bound.  This rule is subtle.  Python lacks\n'
              'declarations and allows name binding operations to occur '
              'anywhere\n'
              'within a code block.  The local variables of a code block can '
              'be\n'
              'determined by scanning the entire text of the block for name '
              'binding\n'
              'operations. See the FAQ entry on UnboundLocalError for '
              'examples.\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'
              'top-level namespace.  Names are resolved in the top-level '
              'namespace by\n'
              'searching the global namespace, i.e. the namespace of the '
              'module\n'
              'containing the code block, and the builtins namespace, the '
              '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'
              'next. If the names are also not found in the builtins '
              'namespace, new\n'
              'variables are created in the global namespace. The global '
              'statement\n'
              'must precede all uses of the listed names.\n'
              '\n'
              'The "global" statement has the same scope as a name binding '
              'operation\n'
              'in the same block.  If the nearest enclosing scope for a free '
              'variable\n'
              'contains a global statement, the free variable is treated as a '
              'global.\n'
              '\n'
              'The "nonlocal" statement causes corresponding names to refer '
              'to\n'
              'previously bound variables in the nearest enclosing function '
              'scope.\n'
              '"SyntaxError" is raised at compile time if the given name does '
              'not\n'
              'exist in any enclosing function scope. Type parameters cannot '
              'be\n'
              'rebound with the "nonlocal" statement.\n'
              '\n'
              'The namespace for a module is automatically created the first '
              'time a\n'
              'module is imported.  The main module for a script is always '
              'called\n'
              '"__main__".\n'
              '\n'
              'Class definition blocks and arguments to "exec()" and "eval()" '
              'are\n'
              'special in the context of name resolution. A class definition '
              'is an\n'
              'executable statement that may use and define names. These '
              'references\n'
              'follow the normal rules for name resolution with an exception '
              'that\n'
              'unbound local variables are looked up in the global namespace. '
              'The\n'
              'namespace of the class definition becomes the attribute '
              'dictionary of\n'
              'the class. The scope of names defined in a class block is '
              'limited to\n'
              'the class block; it does not extend to the code blocks of '
              'methods.\n'
              'This includes comprehensions and generator expressions, but it '
              'does\n'
              'not include annotation scopes, which have access to their '
              'enclosing\n'
              'class scopes. This means that the following will fail:\n'
              '\n'
              '   class A:\n'
              '       a = 42\n'
              '       b = list(a + i for i in range(10))\n'
              '\n'
              'However, the following will succeed:\n'
              '\n'
              '   class A:\n'
              '       type Alias = Nested\n'
              '       class Nested: pass\n'
              '\n'
              "   print(A.Alias.__value__)  # <type 'A.Nested'>\n"
              '\n'
              '\n'
              'Annotation scopes\n'
              '-----------------\n'
              '\n'
              '*Annotations*, type parameter lists and "type" statements '
              'introduce\n'
              '*annotation scopes*, which behave mostly like function scopes, '
              'but\n'
              'with some exceptions discussed below.\n'
              '\n'
              'Annotation scopes are used in the following contexts:\n'
              '\n'
              '* *Function annotations*.\n'
              '\n'
              '* *Variable annotations*.\n'
              '\n'
              '* Type parameter lists for generic type aliases.\n'
              '\n'
              '* Type parameter lists for generic functions. A generic '
              'function’s\n'
              '  annotations are executed within the annotation scope, but '
              'its\n'
              '  defaults and decorators are not.\n'
              '\n'
              '* Type parameter lists for generic classes. A generic class’s '
              'base\n'
              '  classes and keyword arguments are executed within the '
              'annotation\n'
              '  scope, but its decorators are not.\n'
              '\n'
              '* The bounds, constraints, and default values for type '
              'parameters\n'
              '  (lazily evaluated).\n'
              '\n'
              '* The value of type aliases (lazily evaluated).\n'
              '\n'
              'Annotation scopes differ from function scopes in the following '
              'ways:\n'
              '\n'
              '* Annotation scopes have access to their enclosing class '
              'namespace. If\n'
              '  an annotation scope is immediately within a class scope, or '
              'within\n'
              '  another annotation scope that is immediately within a class '
              'scope,\n'
              '  the code in the annotation scope can use names defined in the '
              'class\n'
              '  scope as if it were executed directly within the class body. '
              'This\n'
              '  contrasts with regular functions defined within classes, '
              'which\n'
              '  cannot access names defined in the class scope.\n'
              '\n'
              '* Expressions in annotation scopes cannot contain "yield", '
              '"yield\n'
              '  from", "await", or ":=" expressions. (These expressions are '
              'allowed\n'
              '  in other scopes contained within the annotation scope.)\n'
              '\n'
              '* Names defined in annotation scopes cannot be rebound with '
              '"nonlocal"\n'
              '  statements in inner scopes. This includes only type '
              'parameters, as\n'
              '  no other syntactic elements that can appear within annotation '
              'scopes\n'
              '  can introduce new names.\n'
              '\n'
              '* While annotation scopes have an internal name, that name is '
              'not\n'
              '  reflected in the *qualified name* of objects defined within '
              'the\n'
              '  scope. Instead, the "__qualname__" of such objects is as if '
              'the\n'
              '  object were defined in the enclosing scope.\n'
              '\n'
              'Added in version 3.12: Annotation scopes were introduced in '
              'Python\n'
              '3.12 as part of **PEP 695**.\n'
              '\n'
              'Changed in version 3.13: Annotation scopes are also used for '
              'type\n'
              'parameter defaults, as introduced by **PEP 696**.\n'
              '\n'
              'Changed in version 3.14: Annotation scopes are now also used '
              'for\n'
              'annotations, as specified in **PEP 649** and **PEP 749**.\n'
              '\n'
              '\n'
              'Lazy evaluation\n'
              '---------------\n'
              '\n'
              'Most annotation scopes are *lazily evaluated*. This includes\n'
              'annotations, the values of type aliases created through the '
              '"type"\n'
              'statement, and the bounds, constraints, and default values of '
              'type\n'
              'variables created through the type parameter syntax. This means '
              'that\n'
              'they are not evaluated when the type alias or type variable is\n'
              'created, or when the object carrying annotations is created. '
              'Instead,\n'
              'they are only evaluated when necessary, for example when the\n'
              '"__value__" attribute on a type alias is accessed.\n'
              '\n'
              'Example:\n'
              '\n'
              '   >>> type Alias = 1/0\n'
              '   >>> Alias.__value__\n'
              '   Traceback (most recent call last):\n'
              '     ...\n'
              '   ZeroDivisionError: division by zero\n'
              '   >>> def func[T: 1/0](): pass\n'
              '   >>> T = func.__type_params__[0]\n'
              '   >>> T.__bound__\n'
              '   Traceback (most recent call last):\n'
              '     ...\n'
              '   ZeroDivisionError: division by zero\n'
              '\n'
              'Here the exception is raised only when the "__value__" '
              'attribute of\n'
              'the type alias or the "__bound__" attribute of the type '
              'variable is\n'
              'accessed.\n'
              '\n'
              'This behavior is primarily useful for references to types that '
              'have\n'
              'not yet been defined when the type alias or type variable is '
              'created.\n'
              'For example, lazy evaluation enables creation of mutually '
              'recursive\n'
              'type aliases:\n'
              '\n'
              '   from typing import Literal\n'
              '\n'
              '   type SimpleExpr = int | Parenthesized\n'
              '   type Parenthesized = tuple[Literal["("], Expr, '
              'Literal[")"]]\n'
              '   type Expr = SimpleExpr | tuple[SimpleExpr, Literal["+", '
              '"-"], Expr]\n'
              '\n'
              'Lazily evaluated values are evaluated in annotation scope, '
              'which means\n'
              'that names that appear inside the lazily evaluated value are '
              'looked up\n'
              'as if they were used in the immediately enclosing scope.\n'
              '\n'
              'Added in version 3.12.\n'
              '\n'
              '\n'
              'Builtins and restricted execution\n'
              '---------------------------------\n'
              '\n'
              '**CPython implementation detail:** Users should not touch\n'
              '"__builtins__"; it is strictly an implementation detail.  '
              'Users\n'
              'wanting to override values in the builtins namespace should '
              '"import"\n'
              'the "builtins" module and modify its attributes appropriately.\n'
              '\n'
              'The builtins namespace associated with the execution of a code '
              'block\n'
              'is actually found by looking up the name "__builtins__" in its '
              'global\n'
              'namespace; this should be a dictionary or a module (in the '
              'latter case\n'
              'the module’s dictionary is used).  By default, when in the '
              '"__main__"\n'
              'module, "__builtins__" is the built-in module "builtins"; when '
              'in any\n'
              'other module, "__builtins__" is an alias for the dictionary of '
              'the\n'
              '"builtins" module itself.\n'
              '\n'
              '\n'
              'Interaction with dynamic features\n'
              '---------------------------------\n'
              '\n'
              'Name resolution of free variables occurs at runtime, not at '
              'compile\n'
              'time. This means that the following code will print 42:\n'
              '\n'
              '   i = 10\n'
              '   def f():\n'
              '       print(i)\n'
              '   i = 42\n'
              '   f()\n'
              '\n'
              'The "eval()" and "exec()" functions do not have access to the '
              'full\n'
              'environment for resolving names.  Names may be resolved in the '
              'local\n'
              'and global namespaces of the caller.  Free variables are not '
              'resolved\n'
              'in the nearest enclosing namespace, but in the global '
              'namespace.  [1]\n'
              'The "exec()" and "eval()" functions have optional arguments to\n'
              'override the global and local namespace.  If only one namespace '
              'is\n'
              'specified, it is used for both.\n'
              '\n'
              '\n'
              'Exceptions\n'
              '==========\n'
              '\n'
              'Exceptions are a means of breaking out of the normal flow of '
              'control\n'
              'of a code block in order to handle errors or other exceptional\n'
              'conditions.  An exception is *raised* at the point where the '
              'error is\n'
              'detected; it may be *handled* by the surrounding code block or '
              'by any\n'
              'code block that directly or indirectly invoked the code block '
              'where\n'
              'the error occurred.\n'
              '\n'
              'The Python interpreter raises an exception when it detects a '
              'run-time\n'
              'error (such as division by zero).  A Python program can also\n'
              'explicitly raise an exception with the "raise" statement. '
              'Exception\n'
              'handlers are specified with the "try" … "except" statement.  '
              'The\n'
              '"finally" clause of such a statement can be used to specify '
              'cleanup\n'
              'code which does not handle the exception, but is executed '
              'whether an\n'
              'exception occurred or not in the preceding code.\n'
              '\n'
              'Python uses the “termination” model of error handling: an '
              'exception\n'
              'handler can find out what happened and continue execution at an '
              'outer\n'
              'level, but it cannot repair the cause of the error and retry '
              'the\n'
              'failing operation (except by re-entering the offending piece of '
              'code\n'
              'from the top).\n'
              '\n'
              'When an exception is not handled at all, the interpreter '
              '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 '
              'exception is\n'
              '"SystemExit".\n'
              '\n'
              'Exceptions are identified by class instances.  The "except" '
              'clause is\n'
              'selected depending on the class of the instance: it must '
              'reference the\n'
              'class of the instance or a *non-virtual base class* thereof. '
              'The\n'
              'instance can be received by the handler and can carry '
              'additional\n'
              'information about the exceptional condition.\n'
              '\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'
              'See also the description of the "try" statement in section The '
              'try\n'
              'statement and "raise" statement in section The raise '
              'statement.\n'
              '\n'
              '-[ Footnotes ]-\n'
              '\n'
              '[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'
              '   starred_expression       ::= ["*"] or_expr\n'
              '   flexible_expression      ::= assignment_expression | '
              'starred_expression\n'
              '   flexible_expression_list ::= flexible_expression ("," '
              'flexible_expression)* [","]\n'
              '   starred_expression_list  ::= starred_expression ("," '
              'starred_expression)* [","]\n'
              '   expression_list          ::= expression ("," expression)* '
              '[","]\n'
              '   yield_list               ::= expression_list | '
              'starred_expression "," [starred_expression_list]\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 '
              'the tuple\n'
              'is the number of expressions in the list.  The expressions are\n'
              'evaluated from left to right.\n'
              '\n'
              'An asterisk "*" denotes *iterable unpacking*.  Its operand must '
              'be an\n'
              '*iterable*.  The iterable is expanded into a sequence of items, '
              'which\n'
              'are included in the new tuple, list, or set, at the site of '
              'the\n'
              'unpacking.\n'
              '\n'
              'Added in version 3.5: Iterable unpacking in expression lists,\n'
              'originally proposed by **PEP 448**.\n'
              '\n'
              'Added in version 3.11: Any item in an expression list may be '
              'starred.\n'
              'See **PEP 646**.\n'
              '\n'
              'A trailing comma is required only to create a one-item tuple, '
              'such as\n'
              '"1,"; it is optional in all other cases. A single expression '
              'without a\n'
              'trailing comma doesn’t create a tuple, but rather yields the '
              'value of\n'
              'that expression. (To create an empty tuple, use an empty pair '
              'of\n'
              'parentheses: "()".)\n',
 'floating': 'Floating-point literals\n'
             '***********************\n'
             '\n'
             'Floating-point literals are described by the following lexical\n'
             'definitions:\n'
             '\n'
             '   floatnumber   ::= pointfloat | exponentfloat\n'
             '   pointfloat    ::= [digitpart] fraction | digitpart "."\n'
             '   exponentfloat ::= (digitpart | pointfloat) exponent\n'
             '   digitpart     ::= digit (["_"] digit)*\n'
             '   fraction      ::= "." digitpart\n'
             '   exponent      ::= ("e" | "E") ["+" | "-"] digitpart\n'
             '\n'
             'Note that the integer and exponent parts are always interpreted '
             'using\n'
             'radix 10. For example, "077e010" is legal, and denotes the same '
             'number\n'
             'as "77e10". The allowed range of floating-point literals is\n'
             'implementation-dependent.  As in integer literals, underscores '
             'are\n'
             'supported for digit grouping.\n'
             '\n'
             'Some examples of floating-point literals:\n'
             '\n'
             '   3.14    10.    .001    1e100    3.14e-10    0e0    '
             '3.14_15_93\n'
             '\n'
             'Changed in version 3.6: Underscores are now allowed for '
             'grouping\n'
             'purposes in literals.\n',
 'for': 'The "for" statement\n'
        '*******************\n'
        '\n'
        'The "for" statement is used to iterate over the elements of a '
        'sequence\n'
        '(such as a string, tuple or list) or other iterable object:\n'
        '\n'
        '   for_stmt ::= "for" target_list "in" starred_list ":" suite\n'
        '                ["else" ":" suite]\n'
        '\n'
        'The "starred_list" expression is evaluated once; it should yield an\n'
        '*iterable* object.  An *iterator* is created for that iterable. The\n'
        'first item provided by the iterator is then assigned to the target\n'
        'list using the standard rules for assignments (see Assignment\n'
        'statements), and the suite is executed.  This repeats for each item\n'
        'provided by the iterator.  When the iterator is exhausted, the suite\n'
        'in the "else" clause, if present, is executed, and the loop\n'
        'terminates.\n'
        '\n'
        'A "break" statement executed in the first suite terminates the loop\n'
        'without executing the "else" clause’s suite.  A "continue" statement\n'
        'executed in the first suite skips the rest of the suite and '
        'continues\n'
        'with the next item, or with the "else" clause if there is no next\n'
        'item.\n'
        '\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'
        '\n'
        '   for i in range(10):\n'
        '       print(i)\n'
        '       i = 5             # this will not affect the for-loop\n'
        '                         # because i will be overwritten with the '
        'next\n'
        '                         # index in the range\n'
        '\n'
        'Names in the target list are not deleted when the loop is finished,\n'
        'but if the sequence is empty, they will not have been assigned to at\n'
        'all by the loop.  Hint: the built-in type "range()" represents\n'
        'immutable arithmetic sequences of integers. For instance, iterating\n'
        '"range(3)" successively yields 0, 1, and then 2.\n'
        '\n'
        'Changed in version 3.11: Starred elements are now allowed in the\n'
        'expression list.\n',
 'formatstrings': 'Format String Syntax\n'
                  '********************\n'
                  '\n'
                  'The "str.format()" method and the "Formatter" class share '
                  'the same\n'
                  'syntax for format strings (although in the case of '
                  '"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'
                  '\n'
                  'Format strings contain “replacement fields” surrounded by '
                  'curly braces\n'
                  '"{}". Anything that is not contained in braces is '
                  'considered literal\n'
                  'text, which is copied unchanged to the output.  If you need '
                  'to include\n'
                  'a brace character in the literal text, it can be escaped by '
                  'doubling:\n'
                  '"{{" and "}}".\n'
                  '\n'
                  'The grammar for a replacement field is as follows:\n'
                  '\n'
                  '   replacement_field ::= "{" [field_name] ["!" conversion] '
                  '[":" format_spec] "}"\n'
                  '   field_name        ::= arg_name ("." attribute_name | "[" '
                  'element_index "]")*\n'
                  '   arg_name          ::= [identifier | digit+]\n'
                  '   attribute_name    ::= identifier\n'
                  '   element_index     ::= digit+ | index_string\n'
                  '   index_string      ::= <any source character except "]"> '
                  '+\n'
                  '   conversion        ::= "r" | "s" | "a"\n'
                  '   format_spec       ::= format-spec:format_spec\n'
                  '\n'
                  'In less formal terms, the replacement field can start with '
                  'a\n'
                  '*field_name* that specifies the object whose value is to be '
                  'formatted\n'
                  'and inserted into the output instead of the replacement '
                  'field. The\n'
                  '*field_name* is optionally followed by a  *conversion* '
                  'field, which is\n'
                  'preceded by an exclamation point "\'!\'", and a '
                  '*format_spec*, which is\n'
                  'preceded by a colon "\':\'".  These specify a non-default '
                  'format for the\n'
                  'replacement value.\n'
                  '\n'
                  'See also the Format Specification Mini-Language section.\n'
                  '\n'
                  'The *field_name* itself begins with an *arg_name* that is '
                  'either a\n'
                  'number or a keyword.  If it’s a number, it refers to a '
                  'positional\n'
                  'argument, and if it’s a keyword, it refers to a named '
                  'keyword\n'
                  'argument. An *arg_name* is treated as a number if a call '
                  'to\n'
                  '"str.isdecimal()" on the string would return true. If the '
                  'numerical\n'
                  'arg_names in a format string are 0, 1, 2, … in sequence, '
                  'they can all\n'
                  'be omitted (not just some) and the numbers 0, 1, 2, … will '
                  'be\n'
                  'automatically inserted in that order. Because *arg_name* is '
                  'not quote-\n'
                  'delimited, it is not possible to specify arbitrary '
                  'dictionary keys\n'
                  '(e.g., the strings "\'10\'" or "\':-]\'") within a format '
                  'string. The\n'
                  '*arg_name* can be followed by any number of index or '
                  'attribute\n'
                  'expressions. An expression of the form "\'.name\'" selects '
                  'the named\n'
                  'attribute using "getattr()", while an expression of the '
                  'form\n'
                  '"\'[index]\'" does an index lookup using "__getitem__()".\n'
                  '\n'
                  'Changed in version 3.1: The positional argument specifiers '
                  'can be\n'
                  'omitted for "str.format()", so "\'{} {}\'.format(a, b)" is '
                  'equivalent to\n'
                  '"\'{0} {1}\'.format(a, b)".\n'
                  '\n'
                  'Changed in version 3.4: The positional argument specifiers '
                  'can be\n'
                  'omitted for "Formatter".\n'
                  '\n'
                  'Some simple format string examples:\n'
                  '\n'
                  '   "First, thou shalt count to {0}"  # References first '
                  'positional argument\n'
                  '   "Bring me a {}"                   # Implicitly '
                  'references the first positional argument\n'
                  '   "From {} to {}"                   # Same as "From {0} to '
                  '{1}"\n'
                  '   "My quest is {name}"              # References keyword '
                  "argument 'name'\n"
                  '   "Weight in tons {0.weight}"       # \'weight\' attribute '
                  'of first positional arg\n'
                  '   "Units destroyed: {players[0]}"   # First element of '
                  "keyword argument 'players'.\n"
                  '\n'
                  'The *conversion* field causes a type coercion before '
                  'formatting.\n'
                  'Normally, the job of formatting a value is done by the '
                  '"__format__()"\n'
                  'method of the value itself.  However, in some cases it is '
                  'desirable to\n'
                  'force a type to be formatted as a string, overriding its '
                  'own\n'
                  'definition of formatting.  By converting the value to a '
                  'string before\n'
                  'calling "__format__()", the normal formatting logic is '
                  'bypassed.\n'
                  '\n'
                  'Three conversion flags are currently supported: "\'!s\'" '
                  'which calls\n'
                  '"str()" on the value, "\'!r\'" which calls "repr()" and '
                  '"\'!a\'" which\n'
                  'calls "ascii()".\n'
                  '\n'
                  'Some examples:\n'
                  '\n'
                  '   "Harold\'s a clever {0!s}"        # Calls str() on the '
                  'argument first\n'
                  '   "Bring out the holy {name!r}"    # Calls repr() on the '
                  'argument first\n'
                  '   "More {!a}"                      # Calls ascii() on the '
                  'argument first\n'
                  '\n'
                  'The *format_spec* field contains a specification of how the '
                  'value\n'
                  'should be presented, including such details as field width, '
                  'alignment,\n'
                  'padding, decimal precision and so on.  Each value type can '
                  'define its\n'
                  'own “formatting mini-language” or interpretation of the '
                  '*format_spec*.\n'
                  '\n'
                  'Most built-in types support a common formatting '
                  'mini-language, which\n'
                  'is described in the next section.\n'
                  '\n'
                  'A *format_spec* field can also include nested replacement '
                  'fields\n'
                  'within it. These nested replacement fields may contain a '
                  'field name,\n'
                  'conversion flag and format specification, but deeper '
                  'nesting is not\n'
                  'allowed.  The replacement fields within the format_spec '
                  'are\n'
                  'substituted before the *format_spec* string is interpreted. '
                  'This\n'
                  'allows the formatting of a value to be dynamically '
                  'specified.\n'
                  '\n'
                  'See the Format examples section for some examples.\n'
                  '\n'
                  '\n'
                  'Format Specification Mini-Language\n'
                  '==================================\n'
                  '\n'
                  '“Format specifications” are used within replacement fields '
                  'contained\n'
                  'within a format string to define how individual values are '
                  'presented\n'
                  '(see Format String Syntax and f-strings). They can also be '
                  'passed\n'
                  'directly to the built-in "format()" function.  Each '
                  'formattable type\n'
                  'may define how the format specification is to be '
                  'interpreted.\n'
                  '\n'
                  'Most built-in types implement the following options for '
                  'format\n'
                  'specifications, although some of the formatting options are '
                  'only\n'
                  'supported by the numeric types.\n'
                  '\n'
                  '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'
                  '\n'
                  'The general form of a *standard format specifier* is:\n'
                  '\n'
                  '   format_spec     ::= '
                  '[[fill]align][sign]["z"]["#"]["0"][width][grouping_option]["." '
                  'precision][type]\n'
                  '   fill            ::= <any character>\n'
                  '   align           ::= "<" | ">" | "=" | "^"\n'
                  '   sign            ::= "+" | "-" | " "\n'
                  '   width           ::= digit+\n'
                  '   grouping_option ::= "_" | ","\n'
                  '   precision       ::= digit+\n'
                  '   type            ::= "b" | "c" | "d" | "e" | "E" | "f" | '
                  '"F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"\n'
                  '\n'
                  'If a valid *align* value is specified, it can be preceded '
                  'by a *fill*\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'
                  '“"}"”) as the *fill* character in a formatted string '
                  'literal or when\n'
                  'using the "str.format()" method.  However, it is possible '
                  'to insert a\n'
                  'curly brace with a nested replacement field.  This '
                  'limitation doesn’t\n'
                  'affect the "format()" function.\n'
                  '\n'
                  'The meaning of the various alignment options is as '
                  'follows:\n'
                  '\n'
                  '+-----------+------------------------------------------------------------+\n'
                  '| Option    | '
                  'Meaning                                                    '
                  '|\n'
                  '|===========|============================================================|\n'
                  '| "\'<\'"     | Forces the field to be left-aligned within '
                  'the available   |\n'
                  '|           | space (this is the default for most '
                  'objects).              |\n'
                  '+-----------+------------------------------------------------------------+\n'
                  '| "\'>\'"     | Forces the field to be right-aligned within '
                  'the available  |\n'
                  '|           | space (this is the default for '
                  'numbers).                   |\n'
                  '+-----------+------------------------------------------------------------+\n'
                  '| "\'=\'"     | Forces the padding to be placed after the '
                  'sign (if any)    |\n'
                  '|           | but before the digits.  This is used for '
                  'printing fields   |\n'
                  '|           | in the form ‘+000000120’. This alignment '
                  'option is only    |\n'
                  '|           | valid for numeric types, excluding "complex". '
                  'It becomes   |\n'
                  '|           | the default for numbers when ‘0’ immediately '
                  'precedes the  |\n'
                  '|           | field '
                  'width.                                               |\n'
                  '+-----------+------------------------------------------------------------+\n'
                  '| "\'^\'"     | Forces the field to be centered within the '
                  'available       |\n'
                  '|           | '
                  'space.                                                     '
                  '|\n'
                  '+-----------+------------------------------------------------------------+\n'
                  '\n'
                  'Note that unless a minimum field width is defined, the '
                  'field width\n'
                  'will always be the same size as the data to fill it, so '
                  'that the\n'
                  'alignment option has no meaning in this case.\n'
                  '\n'
                  'The *sign* option is only valid for number types, and can '
                  'be one of\n'
                  'the following:\n'
                  '\n'
                  '+-----------+------------------------------------------------------------+\n'
                  '| Option    | '
                  'Meaning                                                    '
                  '|\n'
                  '|===========|============================================================|\n'
                  '| "\'+\'"     | indicates that a sign should be used for '
                  'both positive as  |\n'
                  '|           | well as negative '
                  'numbers.                                  |\n'
                  '+-----------+------------------------------------------------------------+\n'
                  '| "\'-\'"     | indicates that a sign should be used only '
                  'for negative     |\n'
                  '|           | numbers (this is the default '
                  'behavior).                    |\n'
                  '+-----------+------------------------------------------------------------+\n'
                  '| space     | indicates that a leading space should be used '
                  'on positive  |\n'
                  '|           | numbers, and a minus sign on negative '
                  'numbers.             |\n'
                  '+-----------+------------------------------------------------------------+\n'
                  '\n'
                  'The "\'z\'" option coerces negative zero floating-point '
                  'values to\n'
                  'positive zero after rounding to the format precision.  This '
                  'option is\n'
                  'only valid for floating-point presentation types.\n'
                  '\n'
                  'Changed in version 3.11: Added the "\'z\'" option (see also '
                  '**PEP\n'
                  '682**).\n'
                  '\n'
                  'The "\'#\'" option causes the “alternate form” to be used '
                  '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'
                  '\n'
                  'The "\',\'" option signals the use of a comma for a '
                  'thousands separator\n'
                  'for floating-point presentation types and for integer '
                  'presentation\n'
                  'type "\'d\'". For other presentation types, this option is '
                  'an error. For\n'
                  'a locale aware separator, use the "\'n\'" integer '
                  'presentation type\n'
                  'instead.\n'
                  '\n'
                  'Changed in version 3.1: Added the "\',\'" option (see also '
                  '**PEP 378**).\n'
                  '\n'
                  'The "\'_\'" option signals the use of an underscore for a '
                  'thousands\n'
                  'separator for floating-point presentation types and for '
                  'integer\n'
                  'presentation type "\'d\'".  For integer presentation types '
                  '"\'b\'", "\'o\'",\n'
                  '"\'x\'", and "\'X\'", underscores will be inserted every 4 '
                  'digits.  For\n'
                  'other presentation types, specifying this option is an '
                  'error.\n'
                  '\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'
                  'content.\n'
                  '\n'
                  'When no explicit alignment is given, preceding the *width* '
                  'field by a\n'
                  'zero ("\'0\'") character enables sign-aware zero-padding '
                  'for numeric\n'
                  'types, excluding "complex".  This is equivalent to a *fill* '
                  'character\n'
                  'of "\'0\'" with an *alignment* type of "\'=\'".\n'
                  '\n'
                  'Changed in version 3.10: Preceding the *width* field by '
                  '"\'0\'" no\n'
                  'longer affects the default alignment for strings.\n'
                  '\n'
                  'The *precision* is a decimal integer indicating how many '
                  'digits should\n'
                  'be displayed after the decimal point for presentation types '
                  '"\'f\'" and\n'
                  '"\'F\'", or before and after the decimal point for '
                  'presentation types\n'
                  '"\'g\'" or "\'G\'".  For string presentation types the '
                  'field indicates the\n'
                  'maximum field size - in other words, how many characters '
                  'will be used\n'
                  'from the field content.  The *precision* is not allowed for '
                  'integer\n'
                  'presentation types.\n'
                  '\n'
                  'Finally, the *type* determines how the data should be '
                  'presented.\n'
                  '\n'
                  'The available string presentation types are:\n'
                  '\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | Type      | '
                  'Meaning                                                    '
                  '|\n'
                  '   '
                  '|===========|============================================================|\n'
                  '   | "\'s\'"     | String format. This is the default type '
                  'for strings and    |\n'
                  '   |           | may be '
                  'omitted.                                            |\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | None      | The same as '
                  '"\'s\'".                                         |\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '\n'
                  'The available integer presentation types are:\n'
                  '\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | Type      | '
                  'Meaning                                                    '
                  '|\n'
                  '   '
                  '|===========|============================================================|\n'
                  '   | "\'b\'"     | Binary format. Outputs the number in '
                  'base 2.               |\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | "\'c\'"     | Character. Converts the integer to the '
                  'corresponding       |\n'
                  '   |           | unicode character before '
                  'printing.                         |\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | "\'d\'"     | Decimal Integer. Outputs the number in '
                  'base 10.            |\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | "\'o\'"     | Octal format. Outputs the number in base '
                  '8.                |\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | "\'x\'"     | Hex format. Outputs the number in base '
                  '16, using lower-    |\n'
                  '   |           | case letters for the digits above '
                  '9.                       |\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | "\'X\'"     | Hex format. Outputs the number in base '
                  '16, using upper-    |\n'
                  '   |           | case letters for the digits above 9. 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\'", '
                  'except that it uses the |\n'
                  '   |           | current locale setting to insert the '
                  'appropriate number    |\n'
                  '   |           | separator '
                  'characters.                                      |\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | None      | The same as '
                  '"\'d\'".                                         |\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '\n'
                  'In addition to the above presentation types, integers can '
                  'be formatted\n'
                  'with the floating-point presentation types listed below '
                  '(except "\'n\'"\n'
                  'and "None"). When doing so, "float()" is used to convert '
                  'the integer\n'
                  'to a floating-point number before formatting.\n'
                  '\n'
                  'The available presentation types for "float" and "Decimal" '
                  'values are:\n'
                  '\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | Type      | '
                  '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 '
                  '"p=0", the decimal   |\n'
                  '   |           | point is omitted unless the "#" option is '
                  'used.            |\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\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 '
                  '"p=0", the decimal   |\n'
                  '   |           | point is omitted unless the "#" option is '
                  'used.            |\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | "\'F\'"     | Fixed-point notation. Same as "\'f\'", '
                  'but converts "nan" to |\n'
                  '   |           | "NAN" and "inf" to '
                  '"INF".                                  |\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | "\'g\'"     | General format.  For a given precision '
                  '"p >= 1", this      |\n'
                  '   |           | rounds the number to "p" significant '
                  'digits and then       |\n'
                  '   |           | formats the result in either fixed-point '
                  'format or in      |\n'
                  '   |           | scientific notation, depending on its '
                  'magnitude. 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'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | "\'G\'"     | General format. Same as "\'g\'" except '
                  'switches to "\'E\'" if  |\n'
                  '   |           | the number gets too large. The '
                  'representations of infinity |\n'
                  '   |           | and NaN are uppercased, '
                  'too.                               |\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | "\'n\'"     | Number. This is the same as "\'g\'", '
                  'except that it uses the |\n'
                  '   |           | current locale setting to insert the '
                  'appropriate number    |\n'
                  '   |           | separator '
                  'characters.                                      |\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | "\'%\'"     | Percentage. Multiplies the number by 100 '
                  'and displays in   |\n'
                  '   |           | fixed ("\'f\'") format, followed by a '
                  'percent sign.          |\n'
                  '   '
                  '+-----------+------------------------------------------------------------+\n'
                  '   | None      | For "float" this is like the "\'g\'" type, '
                  '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'
                  '   |           | and switches to the scientific notation '
                  'when "exp >= p -   |\n'
                  '   |           | 1".  When the precision is not specified, '
                  'the latter will  |\n'
                  '   |           | be as large as needed to represent the '
                  'given value         |\n'
                  '   |           | faithfully.  For "Decimal", this is the '
                  'same as either     |\n'
                  '   |           | "\'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'
                  'The result should be correctly rounded to a given precision '
                  '"p" of\n'
                  'digits after the decimal point.  The rounding mode for '
                  '"float" matches\n'
                  'that of the "round()" builtin.  For "Decimal", the rounding '
                  'mode of\n'
                  'the current context will be used.\n'
                  '\n'
                  'The available presentation types for "complex" are the same '
                  'as those\n'
                  'for "float" ("\'%\'" is not allowed).  Both the real and '
                  'imaginary\n'
                  'components of a complex number are formatted as '
                  'floating-point\n'
                  'numbers, according to the specified presentation type.  '
                  'They are\n'
                  'separated by the mandatory sign of the imaginary part, the '
                  'latter\n'
                  'being terminated by a "j" suffix.  If the presentation type '
                  'is\n'
                  'missing, the result will match the output of "str()" '
                  '(complex numbers\n'
                  'with a non-zero real part are also surrounded by '
                  'parentheses),\n'
                  'possibly altered by other format modifiers.\n'
                  '\n'
                  '\n'
                  'Format examples\n'
                  '===============\n'
                  '\n'
                  'This section contains examples of the "str.format()" syntax '
                  'and\n'
                  'comparison with the old "%"-formatting.\n'
                  '\n'
                  'In most of the cases the syntax is similar to the old '
                  '"%"-formatting,\n'
                  'with the addition of the "{}" and with ":" used instead of '
                  '"%". For\n'
                  'example, "\'%03.2f\'" can be translated to "\'{:03.2f}\'".\n'
                  '\n'
                  'The new format syntax also supports new and different '
                  'options, shown\n'
                  'in the following examples.\n'
                  '\n'
                  'Accessing arguments by position:\n'
                  '\n'
                  "   >>> '{0}, {1}, {2}'.format('a', 'b', 'c')\n"
                  "   'a, b, c'\n"
                  "   >>> '{}, {}, {}'.format('a', 'b', 'c')  # 3.1+ only\n"
                  "   'a, b, c'\n"
                  "   >>> '{2}, {1}, {0}'.format('a', 'b', 'c')\n"
                  "   'c, b, a'\n"
                  "   >>> '{2}, {1}, {0}'.format(*'abc')      # unpacking "
                  'argument sequence\n'
                  "   'c, b, a'\n"
                  "   >>> '{0}{1}{0}'.format('abra', 'cad')   # arguments' "
                  'indices can be repeated\n'
                  "   'abracadabra'\n"
                  '\n'
                  'Accessing arguments by name:\n'
                  '\n'
                  "   >>> 'Coordinates: {latitude}, "
                  "{longitude}'.format(latitude='37.24N', "
                  "longitude='-115.81W')\n"
                  "   'Coordinates: 37.24N, -115.81W'\n"
                  "   >>> coord = {'latitude': '37.24N', 'longitude': "
                  "'-115.81W'}\n"
                  "   >>> 'Coordinates: {latitude}, "
                  "{longitude}'.format(**coord)\n"
                  "   'Coordinates: 37.24N, -115.81W'\n"
                  '\n'
                  'Accessing arguments’ attributes:\n'
                  '\n'
                  '   >>> c = 3-5j\n'
                  "   >>> ('The complex number {0} is formed from the real "
                  "part {0.real} '\n"
                  "   ...  'and the imaginary part {0.imag}.').format(c)\n"
                  "   'The complex number (3-5j) is formed from the real part "
                  "3.0 and the imaginary part -5.0.'\n"
                  '   >>> class Point:\n'
                  '   ...     def __init__(self, x, y):\n'
                  '   ...         self.x, self.y = x, y\n'
                  '   ...     def __str__(self):\n'
                  "   ...         return 'Point({self.x}, "
                  "{self.y})'.format(self=self)\n"
                  '   ...\n'
                  '   >>> str(Point(4, 2))\n'
                  "   'Point(4, 2)'\n"
                  '\n'
                  'Accessing arguments’ items:\n'
                  '\n'
                  '   >>> coord = (3, 5)\n'
                  "   >>> 'X: {0[0]};  Y: {0[1]}'.format(coord)\n"
                  "   'X: 3;  Y: 5'\n"
                  '\n'
                  'Replacing "%s" and "%r":\n'
                  '\n'
                  '   >>> "repr() shows quotes: {!r}; str() doesn\'t: '
                  '{!s}".format(\'test1\', \'test2\')\n'
                  '   "repr() shows quotes: \'test1\'; str() doesn\'t: test2"\n'
                  '\n'
                  'Aligning the text and specifying a width:\n'
                  '\n'
                  "   >>> '{:<30}'.format('left aligned')\n"
                  "   'left aligned                  '\n"
                  "   >>> '{:>30}'.format('right aligned')\n"
                  "   '                 right aligned'\n"
                  "   >>> '{:^30}'.format('centered')\n"
                  "   '           centered           '\n"
                  "   >>> '{:*^30}'.format('centered')  # use '*' as a fill "
                  'char\n'
                  "   '***********centered***********'\n"
                  '\n'
                  'Replacing "%+f", "%-f", and "% f" and specifying a sign:\n'
                  '\n'
                  "   >>> '{:+f}; {:+f}'.format(3.14, -3.14)  # show it "
                  'always\n'
                  "   '+3.140000; -3.140000'\n"
                  "   >>> '{: f}; {: f}'.format(3.14, -3.14)  # show a space "
                  'for positive numbers\n'
                  "   ' 3.140000; -3.140000'\n"
                  "   >>> '{:-f}; {:-f}'.format(3.14, -3.14)  # show only the "
                  "minus -- same as '{:f}; {:f}'\n"
                  "   '3.140000; -3.140000'\n"
                  '\n'
                  'Replacing "%x" and "%o" and converting the value to '
                  'different bases:\n'
                  '\n'
                  '   >>> # format also supports binary numbers\n'
                  '   >>> "int: {0:d};  hex: {0:x};  oct: {0:o};  bin: '
                  '{0:b}".format(42)\n'
                  "   'int: 42;  hex: 2a;  oct: 52;  bin: 101010'\n"
                  '   >>> # with 0x, 0o, or 0b as prefix:\n'
                  '   >>> "int: {0:d};  hex: {0:#x};  oct: {0:#o};  bin: '
                  '{0:#b}".format(42)\n'
                  "   'int: 42;  hex: 0x2a;  oct: 0o52;  bin: 0b101010'\n"
                  '\n'
                  'Using the comma as a thousands separator:\n'
                  '\n'
                  "   >>> '{:,}'.format(1234567890)\n"
                  "   '1,234,567,890'\n"
                  '\n'
                  'Expressing a percentage:\n'
                  '\n'
                  '   >>> points = 19\n'
                  '   >>> total = 22\n'
                  "   >>> 'Correct answers: {:.2%}'.format(points/total)\n"
                  "   'Correct answers: 86.36%'\n"
                  '\n'
                  'Using type-specific formatting:\n'
                  '\n'
                  '   >>> import datetime\n'
                  '   >>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)\n'
                  "   >>> '{:%Y-%m-%d %H:%M:%S}'.format(d)\n"
                  "   '2010-07-04 12:15:58'\n"
                  '\n'
                  'Nesting arguments and more complex examples:\n'
                  '\n'
                  "   >>> for align, text in zip('<^>', ['left', 'center', "
                  "'right']):\n"
                  "   ...     '{0:{fill}{align}16}'.format(text, fill=align, "
                  'align=align)\n'
                  '   ...\n'
                  "   'left<<<<<<<<<<<<'\n"
                  "   '^^^^^center^^^^^'\n"
                  "   '>>>>>>>>>>>right'\n"
                  '   >>>\n'
                  '   >>> octets = [192, 168, 0, 1]\n'
                  "   >>> '{:02X}{:02X}{:02X}{:02X}'.format(*octets)\n"
                  "   'C0A80001'\n"
                  '   >>> int(_, 16)\n'
                  '   3232235521\n'
                  '   >>>\n'
                  '   >>> width = 5\n'
                  '   >>> for num in range(5,12): \n'
                  "   ...     for base in 'dXob':\n"
                  "   ...         print('{0:{width}{base}}'.format(num, "
                  "base=base, width=width), end=' ')\n"
                  '   ...     print()\n'
                  '   ...\n'
                  '       5     5     5   101\n'
                  '       6     6     6   110\n'
                  '       7     7     7   111\n'
                  '       8     8    10  1000\n'
                  '       9     9    11  1001\n'
                  '      10     A    12  1010\n'
                  '      11     B    13  1011\n',
 'function': 'Function definitions\n'
             '********************\n'
             '\n'
             'A function definition defines a user-defined function object '
             '(see\n'
             'section The standard type hierarchy):\n'
             '\n'
             '   funcdef                   ::= [decorators] "def" funcname '
             '[type_params] "(" [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   ::= "*" [star_parameter] ("," '
             'defparameter)* ["," ["**" parameter [","]]]\n'
             '                               | "**" parameter [","]\n'
             '   parameter                 ::= identifier [":" expression]\n'
             '   star_parameter            ::= identifier [":" ["*"] '
             'expression]\n'
             '   defparameter              ::= parameter ["=" expression]\n'
             '   funcname                  ::= identifier\n'
             '\n'
             'A function definition is an executable statement.  Its execution '
             'binds\n'
             'the function name in the current local namespace to a function '
             'object\n'
             '(a wrapper around the executable code for the function).  This\n'
             'function object contains a reference to the current global '
             'namespace\n'
             'as the global namespace to be used when the function is called.\n'
             '\n'
             'The function definition does not execute the function body; this '
             'gets\n'
             'executed only when the function is called. [4]\n'
             '\n'
             'A function definition may be wrapped by one or more *decorator*\n'
             'expressions. Decorator expressions are evaluated when the '
             'function is\n'
             'defined, in the scope that contains the function definition.  '
             'The\n'
             'result must be a callable, which is invoked with the function '
             'object\n'
             'as the only argument. The returned value is bound to the '
             'function name\n'
             'instead of the function object.  Multiple decorators are applied '
             'in\n'
             'nested fashion. For example, the following code\n'
             '\n'
             '   @f1(arg)\n'
             '   @f2\n'
             '   def func(): pass\n'
             '\n'
             'is roughly equivalent to\n'
             '\n'
             '   def func(): pass\n'
             '   func = f1(arg)(f2(func))\n'
             '\n'
             'except that the original function is not temporarily bound to '
             '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'
             'A list of type parameters may be given in square brackets '
             'between the\n'
             'function’s name and the opening parenthesis for its parameter '
             'list.\n'
             'This indicates to static type checkers that the function is '
             'generic.\n'
             'At runtime, the type parameters can be retrieved from the '
             'function’s\n'
             '"__type_params__" attribute. See Generic functions for more.\n'
             '\n'
             'Changed in version 3.12: Type parameter lists are new in Python '
             '3.12.\n'
             '\n'
             'When one or more *parameters* have the form *parameter* "="\n'
             '*expression*, the function is said to have “default parameter '
             'values.”\n'
             'For a parameter with a default value, the corresponding '
             '*argument* may\n'
             'be omitted from a call, in which case the parameter’s default '
             'value is\n'
             'substituted.  If a parameter has a default value, all following\n'
             'parameters up until the “"*"” must also have a default value — '
             'this is\n'
             'a syntactic restriction that is not expressed by the grammar.\n'
             '\n'
             '**Default parameter values are evaluated from left to right when '
             'the\n'
             'function definition is executed.** This means that the '
             'expression is\n'
             'evaluated once, when the function is defined, and that the same '
             '“pre-\n'
             'computed” value is used for each call.  This is especially '
             'important\n'
             'to understand when a default parameter value is a mutable '
             'object, such\n'
             'as a list or a dictionary: if the function modifies the object '
             '(e.g.\n'
             'by appending an item to a list), the default parameter value is '
             'in\n'
             'effect modified.  This is generally not what was intended.  A '
             'way\n'
             'around this is to use "None" as the default, and explicitly test '
             'for\n'
             'it in the body of the function, e.g.:\n'
             '\n'
             '   def whats_on_the_telly(penguin=None):\n'
             '       if penguin is None:\n'
             '           penguin = []\n'
             '       penguin.append("property of the zoo")\n'
             '       return penguin\n'
             '\n'
             'Function call semantics are described in more detail in section '
             'Calls.\n'
             'A function call always assigns values to all parameters '
             'mentioned in\n'
             'the parameter list, either from positional arguments, from '
             'keyword\n'
             'arguments, or from default values.  If the form “"*identifier"” '
             'is\n'
             'present, it is initialized to a tuple receiving any excess '
             'positional\n'
             'parameters, defaulting to the empty tuple. If the form\n'
             '“"**identifier"” is present, it is initialized to a new ordered\n'
             'mapping receiving any excess keyword arguments, defaulting to a '
             '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'
             'Parameters may have an *annotation* of the form “": '
             'expression"”\n'
             'following the parameter name.  Any parameter may have an '
             'annotation,\n'
             'even those of the form "*identifier" or "**identifier". (As a '
             'special\n'
             'case, parameters of the form "*identifier" may have an '
             'annotation “":\n'
             '*expression"”.) Functions may have “return” annotation of the '
             'form\n'
             '“"-> expression"” after the parameter list.  These annotations '
             'can be\n'
             'any valid Python expression.  The presence of annotations does '
             'not\n'
             'change the semantics of a function. See Annotations for more\n'
             'information on annotations.\n'
             '\n'
             'Changed in version 3.11: Parameters of the form “"*identifier"” '
             'may\n'
             'have an annotation “": *expression"”. See **PEP 646**.\n'
             '\n'
             'It is also possible to create anonymous functions (functions not '
             'bound\n'
             'to a name), for immediate use in expressions.  This uses lambda\n'
             'expressions, described in section Lambdas.  Note that the '
             'lambda\n'
             'expression is merely a shorthand for a simplified function '
             'definition;\n'
             'a function defined in a “"def"” statement can be passed around '
             'or\n'
             'assigned to another name just like a function defined by a '
             'lambda\n'
             'expression.  The “"def"” form is actually more powerful since '
             'it\n'
             'allows the execution of multiple statements and annotations.\n'
             '\n'
             '**Programmer’s note:** Functions are first-class objects.  A '
             '“"def"”\n'
             'statement executed inside a function definition defines a local\n'
             'function that can be returned or passed around.  Free variables '
             'used\n'
             'in the nested function can access the local variables of the '
             'function\n'
             'containing the def.  See section Naming and binding for '
             'details.\n'
             '\n'
             'See also:\n'
             '\n'
             '  **PEP 3107** - Function Annotations\n'
             '     The original specification for function annotations.\n'
             '\n'
             '  **PEP 484** - Type Hints\n'
             '     Definition of a standard meaning for annotations: type '
             'hints.\n'
             '\n'
             '  **PEP 526** - Syntax for Variable Annotations\n'
             '     Ability to type hint variable declarations, including '
             'class\n'
             '     variables and instance variables.\n'
             '\n'
             '  **PEP 563** - Postponed Evaluation of Annotations\n'
             '     Support for forward references within annotations by '
             'preserving\n'
             '     annotations in a string form at runtime instead of eager\n'
             '     evaluation.\n'
             '\n'
             '  **PEP 318** - Decorators for Functions and Methods\n'
             '     Function and method decorators were introduced. Class '
             'decorators\n'
             '     were introduced in **PEP 3129**.\n',
 'global': 'The "global" statement\n'
           '**********************\n'
           '\n'
           '   global_stmt ::= "global" identifier ("," identifier)*\n'
           '\n'
           'The "global" statement causes the listed identifiers to be '
           'interpreted\n'
           'as globals. It would be impossible to assign to a global variable\n'
           'without "global", although free variables may refer to globals '
           'without\n'
           'being declared global.\n'
           '\n'
           'The "global" statement applies to the entire scope of a function '
           'or\n'
           'class body. A "SyntaxError" is raised if a variable is used or\n'
           'assigned to prior to its global declaration in the scope.\n'
           '\n'
           '**Programmer’s note:** "global" is a directive to the parser.  It\n'
           'applies only to code parsed at the same time as the "global"\n'
           'statement. In particular, a "global" statement contained in a '
           'string\n'
           'or code object supplied to the built-in "exec()" function does '
           'not\n'
           'affect the code block *containing* the function call, and code\n'
           'contained in such a string is unaffected by "global" statements in '
           'the\n'
           'code containing the function call.  The same applies to the '
           '"eval()"\n'
           'and "compile()" functions.\n',
 'id-classes': 'Reserved classes of identifiers\n'
               '*******************************\n'
               '\n'
               'Certain classes of identifiers (besides keywords) have '
               'special\n'
               'meanings.  These classes are identified by the patterns of '
               'leading and\n'
               'trailing underscore characters:\n'
               '\n'
               '"_*"\n'
               '   Not imported by "from module import *".\n'
               '\n'
               '"_"\n'
               '   In a "case" pattern within a "match" statement, "_" is a '
               'soft\n'
               '   keyword that denotes a wildcard.\n'
               '\n'
               '   Separately, the interactive interpreter makes the result of '
               'the\n'
               '   last evaluation available in the variable "_". (It is '
               'stored in the\n'
               '   "builtins" module, alongside built-in functions like '
               '"print".)\n'
               '\n'
               '   Elsewhere, "_" is a regular identifier. It is often used to '
               'name\n'
               '   “special” items, but it is not special to Python itself.\n'
               '\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.It is\n'
               '     also commonly used for unused variables.\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'
               '\n'
               '"__*"\n'
               '   Class-private names.  Names in this category, when used '
               'within the\n'
               '   context of a class definition, are re-written to use a '
               'mangled form\n'
               '   to help avoid name clashes between “private” attributes of '
               'base and\n'
               '   derived classes. See section Identifiers (Names).\n',
 'identifiers': 'Identifiers and keywords\n'
                '************************\n'
                '\n'
                'Identifiers (also referred to as *names*) are described by '
                'the\n'
                'following lexical definitions.\n'
                '\n'
                'The syntax of identifiers in Python is based on the Unicode '
                'standard\n'
                'annex UAX-31, with elaboration and changes as defined below; '
                'see also\n'
                '**PEP 3131** for further details.\n'
                '\n'
                'Within the ASCII range (U+0001..U+007F), the valid characters '
                'for\n'
                'identifiers include the uppercase and lowercase letters "A" '
                'through\n'
                '"Z", the underscore "_" and, except for the first character, '
                'the\n'
                'digits "0" through "9". Python 3.0 introduced additional '
                'characters\n'
                'from outside the ASCII range (see **PEP 3131**).  For these\n'
                'characters, the classification uses the version of the '
                'Unicode\n'
                'Character Database as included in the "unicodedata" module.\n'
                '\n'
                'Identifiers are unlimited in length.  Case is significant.\n'
                '\n'
                '   identifier   ::= xid_start xid_continue*\n'
                '   id_start     ::= <all characters in general categories Lu, '
                'Ll, Lt, Lm, Lo, Nl, the underscore, and characters with the '
                'Other_ID_Start property>\n'
                '   id_continue  ::= <all characters in id_start, plus '
                'characters in the categories Mn, Mc, Nd, Pc and others with '
                'the Other_ID_Continue property>\n'
                '   xid_start    ::= <all characters in id_start whose NFKC '
                'normalization is in "id_start xid_continue*">\n'
                '   xid_continue ::= <all characters in id_continue whose NFKC '
                'normalization is in "id_continue*">\n'
                '\n'
                'The Unicode category codes mentioned above stand for:\n'
                '\n'
                '* *Lu* - uppercase letters\n'
                '\n'
                '* *Ll* - lowercase letters\n'
                '\n'
                '* *Lt* - titlecase letters\n'
                '\n'
                '* *Lm* - modifier letters\n'
                '\n'
                '* *Lo* - other letters\n'
                '\n'
                '* *Nl* - letter numbers\n'
                '\n'
                '* *Mn* - nonspacing marks\n'
                '\n'
                '* *Mc* - spacing combining marks\n'
                '\n'
                '* *Nd* - decimal numbers\n'
                '\n'
                '* *Pc* - connector punctuations\n'
                '\n'
                '* *Other_ID_Start* - explicit list of characters in '
                'PropList.txt to\n'
                '  support backwards compatibility\n'
                '\n'
                '* *Other_ID_Continue* - likewise\n'
                '\n'
                'All identifiers are converted into the normal form NFKC while '
                'parsing;\n'
                'comparison of identifiers is based on NFKC.\n'
                '\n'
                'A non-normative HTML file listing all valid identifier '
                'characters for\n'
                'Unicode 16.0.0 can be found at\n'
                'https://www.unicode.org/Public/16.0.0/ucd/DerivedCoreProperties.txt\n'
                '\n'
                '\n'
                'Keywords\n'
                '========\n'
                '\n'
                'The following identifiers are used as reserved words, or '
                '*keywords* of\n'
                'the language, and cannot be used as ordinary identifiers.  '
                'They must\n'
                'be spelled exactly as written here:\n'
                '\n'
                '   False      await      else       import     pass\n'
                '   None       break      except     in         raise\n'
                '   True       class      finally    is         return\n'
                '   and        continue   for        lambda     try\n'
                '   as         def        from       nonlocal   while\n'
                '   assert     del        global     not        with\n'
                '   async      elif       if         or         yield\n'
                '\n'
                '\n'
                'Soft Keywords\n'
                '=============\n'
                '\n'
                'Added in version 3.10.\n'
                '\n'
                'Some identifiers are only reserved under specific contexts. '
                'These are\n'
                'known as *soft keywords*.  The identifiers "match", "case", '
                '"type" and\n'
                '"_" can syntactically act as keywords in certain contexts, '
                'but this\n'
                'distinction is done at the parser level, not when '
                'tokenizing.\n'
                '\n'
                'As soft keywords, their use in the grammar is possible while '
                'still\n'
                'preserving compatibility with existing code that uses these '
                'names as\n'
                'identifier names.\n'
                '\n'
                '"match", "case", and "_" are used in the "match" statement. '
                '"type" is\n'
                'used in the "type" statement.\n'
                '\n'
                'Changed in version 3.12: "type" is now a soft keyword.\n'
                '\n'
                '\n'
                'Reserved classes of identifiers\n'
                '===============================\n'
                '\n'
                'Certain classes of identifiers (besides keywords) have '
                'special\n'
                'meanings.  These classes are identified by the patterns of '
                'leading and\n'
                'trailing underscore characters:\n'
                '\n'
                '"_*"\n'
                '   Not imported by "from module import *".\n'
                '\n'
                '"_"\n'
                '   In a "case" pattern within a "match" statement, "_" is a '
                'soft\n'
                '   keyword that denotes a wildcard.\n'
                '\n'
                '   Separately, the interactive interpreter makes the result '
                'of the\n'
                '   last evaluation available in the variable "_". (It is '
                'stored in the\n'
                '   "builtins" module, alongside built-in functions like '
                '"print".)\n'
                '\n'
                '   Elsewhere, "_" is a regular identifier. It is often used '
                'to name\n'
                '   “special” items, but it is not special to Python itself.\n'
                '\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.It is\n'
                '     also commonly used for unused variables.\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'
                '\n'
                '"__*"\n'
                '   Class-private names.  Names in this category, when used '
                'within the\n'
                '   context of a class definition, are re-written to use a '
                'mangled form\n'
                '   to help avoid name clashes between “private” attributes of '
                'base and\n'
                '   derived classes. See section Identifiers (Names).\n',
 'if': 'The "if" statement\n'
       '******************\n'
       '\n'
       'The "if" statement is used for conditional execution:\n'
       '\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 '
       'one\n'
       'by one until one is found to be true (see section Boolean operations\n'
       'for the definition of true and false); then that suite is executed\n'
       '(and no other part of the "if" statement is executed or evaluated).\n'
       'If all expressions are false, the suite of the "else" clause, if\n'
       'present, is executed.\n',
 'imaginary': 'Imaginary literals\n'
              '******************\n'
              '\n'
              'Imaginary literals are described by the following lexical '
              'definitions:\n'
              '\n'
              '   imagnumber ::= (floatnumber | digitpart) ("j" | "J")\n'
              '\n'
              'An imaginary literal yields a complex number with a real part '
              'of 0.0.\n'
              'Complex numbers are represented as a pair of floating-point '
              'numbers\n'
              'and have the same restrictions on their range.  To create a '
              'complex\n'
              'number with a nonzero real part, add a floating-point number to '
              'it,\n'
              'e.g., "(3+4j)".  Some examples of imaginary literals:\n'
              '\n'
              '   3.14j   10.j    10j     .001j   1e100j   3.14e-10j   '
              '3.14_15_93j\n',
 'import': 'The "import" statement\n'
           '**********************\n'
           '\n'
           '   import_stmt     ::= "import" module ["as" identifier] ("," '
           'module ["as" identifier])*\n'
           '                   | "from" relative_module "import" identifier '
           '["as" identifier]\n'
           '                   ("," identifier ["as" identifier])*\n'
           '                   | "from" relative_module "import" "(" '
           'identifier ["as" identifier]\n'
           '                   ("," identifier ["as" identifier])* [","] ")"\n'
           '                   | "from" relative_module "import" "*"\n'
           '   module          ::= (identifier ".")* identifier\n'
           '   relative_module ::= "."* module | "."+\n'
           '\n'
           'The basic import statement (no "from" clause) is executed in two\n'
           'steps:\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'
           '\n'
           'When the statement contains multiple clauses (separated by commas) '
           'the\n'
           'two steps are carried out separately for each clause, just as '
           'though\n'
           'the clauses had been separated out into individual import '
           'statements.\n'
           '\n'
           'The details of the first step, finding and loading modules, are\n'
           'described in greater detail in the section on the import system, '
           'which\n'
           'also describes the various types of packages and modules that can '
           'be\n'
           'imported, as well as all the hooks that can be used to customize '
           'the\n'
           'import system. Note that failures in this step may indicate '
           'either\n'
           'that the module could not be located, *or* that an error occurred\n'
           'while initializing the module, which includes execution of the\n'
           'module’s code.\n'
           '\n'
           'If the requested module is retrieved successfully, it will be '
           'made\n'
           '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'
           '\n'
           '* If no other name is specified, and the module being imported is '
           'a\n'
           '  top level module, the module’s name is bound in the local '
           'namespace\n'
           '  as a reference to the imported module\n'
           '\n'
           '* If the module being imported is *not* a top level module, then '
           'the\n'
           '  name of the top level package that contains the module is bound '
           'in\n'
           '  the local namespace as a reference to the top level package. '
           'The\n'
           '  imported module must be accessed using its full qualified name\n'
           '  rather than directly\n'
           '\n'
           'The "from" form uses a slightly more complex process:\n'
           '\n'
           '1. find the module specified in the "from" clause, loading and\n'
           '   initializing it if necessary;\n'
           '\n'
           '2. for each of the identifiers specified in the "import" clauses:\n'
           '\n'
           '   1. check if the imported module has an attribute by that name\n'
           '\n'
           '   2. if not, attempt to import a submodule with that name and '
           'then\n'
           '      check the imported module again for that attribute\n'
           '\n'
           '   3. if the attribute is not found, "ImportError" is raised.\n'
           '\n'
           '   4. otherwise, a reference to that value is stored in the local\n'
           '      namespace, using the name in the "as" clause if it is '
           'present,\n'
           '      otherwise using the attribute name\n'
           '\n'
           'Examples:\n'
           '\n'
           '   import foo                 # foo imported and bound locally\n'
           '   import foo.bar.baz         # foo, foo.bar, and foo.bar.baz '
           'imported, foo bound locally\n'
           '   import foo.bar.baz as fbb  # foo, foo.bar, and foo.bar.baz '
           'imported, foo.bar.baz bound as fbb\n'
           '   from foo.bar import baz    # foo, foo.bar, and foo.bar.baz '
           'imported, foo.bar.baz bound as baz\n'
           '   from foo import attr       # foo imported and foo.attr bound as '
           'attr\n'
           '\n'
           'If the list of identifiers is replaced by a star ("\'*\'"), all '
           'public\n'
           'names defined in the module are bound in the local namespace for '
           'the\n'
           'scope where the "import" statement occurs.\n'
           '\n'
           'The *public names* defined by a module are determined by checking '
           'the\n'
           'module’s namespace for a variable named "__all__"; if defined, it '
           'must\n'
           'be a sequence of strings which are names defined or imported by '
           'that\n'
           'module.  The names given in "__all__" are all considered public '
           'and\n'
           'are required to exist.  If "__all__" is not defined, the set of '
           'public\n'
           'names includes all names found in the module’s namespace which do '
           'not\n'
           'begin with an underscore character ("\'_\'").  "__all__" should '
           'contain\n'
           'the entire public API. It is intended to avoid accidentally '
           'exporting\n'
           'items that are not part of the API (such as library modules which '
           'were\n'
           'imported and used within the module).\n'
           '\n'
           'The wild card form of import — "from module import *" — is only\n'
           'allowed at the module level.  Attempting to use it in class or\n'
           'function definitions will raise a "SyntaxError".\n'
           '\n'
           'When specifying what module to import you do not have to specify '
           'the\n'
           'absolute name of the module. When a module or package is '
           'contained\n'
           'within another package it is possible to make a relative import '
           'within\n'
           'the same top package without having to mention the package name. '
           'By\n'
           'using leading dots in the specified module or package after "from" '
           'you\n'
           'can specify how high to traverse up the current package hierarchy\n'
           'without specifying exact names. One leading dot means the current\n'
           'package where the module making the import exists. Two dots means '
           'up\n'
           'one package level. Three dots is up two levels, etc. So if you '
           'execute\n'
           '"from . import mod" from a module in the "pkg" package then you '
           'will\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'
           '\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'
           '\n'
           '\n'
           'Future statements\n'
           '=================\n'
           '\n'
           'A *future statement* is a directive to the compiler that a '
           'particular\n'
           'module should be compiled using syntax or semantics that will be\n'
           'available in a specified future release of Python where the '
           'feature\n'
           'becomes standard.\n'
           '\n'
           'The future statement is intended to ease migration to future '
           'versions\n'
           'of Python that introduce incompatible changes to the language.  '
           'It\n'
           'allows use of the new features on a per-module basis before the\n'
           'release in which the feature becomes standard.\n'
           '\n'
           '   future_stmt ::= "from" "__future__" "import" feature ["as" '
           'identifier]\n'
           '                   ("," feature ["as" identifier])*\n'
           '                   | "from" "__future__" "import" "(" feature '
           '["as" identifier]\n'
           '                   ("," feature ["as" identifier])* [","] ")"\n'
           '   feature     ::= identifier\n'
           '\n'
           'A future statement must appear near the top of the module.  The '
           'only\n'
           'lines that can appear before a future statement are:\n'
           '\n'
           '* the module docstring (if any),\n'
           '\n'
           '* comments,\n'
           '\n'
           '* blank lines, and\n'
           '\n'
           '* other future statements.\n'
           '\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'
           '"division", "generators", "generator_stop", "unicode_literals",\n'
           '"print_function", "nested_scopes" and "with_statement".  They are '
           'all\n'
           'redundant because they are always enabled, and only kept for '
           'backwards\n'
           'compatibility.\n'
           '\n'
           'A future statement is recognized and treated specially at compile\n'
           'time: Changes to the semantics of core constructs are often\n'
           'implemented by generating different code.  It may even be the '
           'case\n'
           'that a new feature introduces new incompatible syntax (such as a '
           'new\n'
           'reserved word), in which case the compiler may need to parse the\n'
           'module differently.  Such decisions cannot be pushed off until\n'
           'runtime.\n'
           '\n'
           'For any given release, the compiler knows which feature names '
           'have\n'
           'been defined, and raises a compile-time error if a future '
           'statement\n'
           'contains a feature not known to it.\n'
           '\n'
           'The direct runtime semantics are the same as for any import '
           'statement:\n'
           'there is a standard module "__future__", described later, and it '
           'will\n'
           'be imported in the usual way at the time the future statement is\n'
           'executed.\n'
           '\n'
           'The interesting runtime semantics depend on the specific feature\n'
           'enabled by the future statement.\n'
           '\n'
           'Note that there is nothing special about the statement:\n'
           '\n'
           '   import __future__ [as name]\n'
           '\n'
           'That is not a future statement; it’s an ordinary import statement '
           'with\n'
           'no special semantics or syntax restrictions.\n'
           '\n'
           'Code compiled by calls to the built-in functions "exec()" and\n'
           '"compile()" that occur in a module "M" containing a future '
           'statement\n'
           'will, by default, use the new syntax or semantics associated with '
           'the\n'
           'future statement.  This can be controlled by optional arguments '
           'to\n'
           '"compile()" — see the documentation of that function for details.\n'
           '\n'
           'A future statement typed at an interactive interpreter prompt '
           'will\n'
           'take effect for the rest of the interpreter session.  If an\n'
           'interpreter is started with the "-i" option, is passed a script '
           'name\n'
           'to execute, and the script includes a future statement, it will be '
           'in\n'
           'effect in the interactive session started after the script is\n'
           'executed.\n'
           '\n'
           'See also:\n'
           '\n'
           '  **PEP 236** - Back to the __future__\n'
           '     The original proposal for the __future__ mechanism.\n',
 'in': 'Membership test operations\n'
       '**************************\n'
       '\n'
       'The operators "in" and "not in" test for membership.  "x in s"\n'
       'evaluates to "True" if *x* is a member of *s*, and "False" otherwise.\n'
       '"x not in s" returns the negation of "x in s".  All built-in '
       'sequences\n'
       'and set types support this as well as dictionary, for which "in" '
       'tests\n'
       'whether the dictionary has a given key. For container types such as\n'
       'list, tuple, set, frozenset, dict, or collections.deque, the\n'
       'expression "x in y" is equivalent to "any(x is e or x == e for e in\n'
       'y)".\n'
       '\n'
       'For the string and bytes types, "x in y" is "True" if and only if *x*\n'
       'is a substring of *y*.  An equivalent test is "y.find(x) != -1".\n'
       'Empty strings are always considered to be a substring of any other\n'
       'string, so """ in "abc"" will return "True".\n'
       '\n'
       'For user-defined classes which define the "__contains__()" method, "x\n'
       'in y" returns "True" if "y.__contains__(x)" returns a true value, and\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'
       '\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'
       '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'
       '"in".\n',
 'integers': 'Integer literals\n'
             '****************\n'
             '\n'
             'Integer literals are described by the following lexical '
             'definitions:\n'
             '\n'
             '   integer      ::= decinteger | bininteger | octinteger | '
             'hexinteger\n'
             '   decinteger   ::= nonzerodigit (["_"] digit)* | "0"+ (["_"] '
             '"0")*\n'
             '   bininteger   ::= "0" ("b" | "B") (["_"] bindigit)+\n'
             '   octinteger   ::= "0" ("o" | "O") (["_"] octdigit)+\n'
             '   hexinteger   ::= "0" ("x" | "X") (["_"] hexdigit)+\n'
             '   nonzerodigit ::= "1"..."9"\n'
             '   digit        ::= "0"..."9"\n'
             '   bindigit     ::= "0" | "1"\n'
             '   octdigit     ::= "0"..."7"\n'
             '   hexdigit     ::= digit | "a"..."f" | "A"..."F"\n'
             '\n'
             'There is no limit for the length of integer literals apart from '
             'what\n'
             'can be stored in available memory.\n'
             '\n'
             'Underscores are ignored for determining the numeric value of '
             'the\n'
             'literal.  They can be used to group digits for enhanced '
             'readability.\n'
             'One underscore can occur between digits, and after base '
             'specifiers\n'
             'like "0x".\n'
             '\n'
             'Note that leading zeros in a non-zero decimal number are not '
             'allowed.\n'
             'This is for disambiguation with C-style octal literals, which '
             'Python\n'
             'used before version 3.0.\n'
             '\n'
             'Some examples of integer literals:\n'
             '\n'
             '   7     2147483647                        0o177    0b100110111\n'
             '   3     79228162514264337593543950336     0o377    0xdeadbeef\n'
             '         100_000_000_000                   0b_1110_0101\n'
             '\n'
             'Changed in version 3.6: Underscores are now allowed for '
             'grouping\n'
             'purposes in literals.\n',
 'lambda': 'Lambdas\n'
           '*******\n'
           '\n'
           '   lambda_expr ::= "lambda" [parameter_list] ":" expression\n'
           '\n'
           'Lambda expressions (sometimes called lambda forms) are used to '
           'create\n'
           'anonymous functions. The expression "lambda parameters: '
           'expression"\n'
           'yields a function object.  The unnamed object behaves like a '
           'function\n'
           'object defined with:\n'
           '\n'
           '   def <lambda>(parameters):\n'
           '       return expression\n'
           '\n'
           'See section Function definitions for the syntax of parameter '
           'lists.\n'
           'Note that functions created with lambda expressions cannot '
           'contain\n'
           'statements or annotations.\n',
 'lists': 'List displays\n'
          '*************\n'
          '\n'
          'A list display is a possibly empty series of expressions enclosed '
          'in\n'
          'square brackets:\n'
          '\n'
          '   list_display ::= "[" [flexible_expression_list | comprehension] '
          '"]"\n'
          '\n'
          'A list display yields a new list object, the contents being '
          'specified\n'
          'by either a list of expressions or a comprehension.  When a comma-\n'
          'separated list of expressions is supplied, its elements are '
          'evaluated\n'
          'from left to right and placed into the list object in that order.\n'
          'When a comprehension is supplied, the list is constructed from the\n'
          'elements resulting from the comprehension.\n',
 'naming': 'Naming and binding\n'
           '******************\n'
           '\n'
           '\n'
           'Binding of names\n'
           '================\n'
           '\n'
           '*Names* refer to objects.  Names are introduced by name binding\n'
           'operations.\n'
           '\n'
           'The following constructs bind names:\n'
           '\n'
           '* formal parameters to functions,\n'
           '\n'
           '* class definitions,\n'
           '\n'
           '* function definitions,\n'
           '\n'
           '* assignment expressions,\n'
           '\n'
           '* targets that are identifiers if occurring in an assignment:\n'
           '\n'
           '  * "for" loop header,\n'
           '\n'
           '  * after "as" in a "with" statement, "except" clause, "except*"\n'
           '    clause, or in the as-pattern in structural pattern matching,\n'
           '\n'
           '  * in a capture pattern in structural pattern matching\n'
           '\n'
           '* "import" statements.\n'
           '\n'
           '* "type" statements.\n'
           '\n'
           '* type parameter lists.\n'
           '\n'
           'The "import" statement of the form "from ... import *" binds all '
           'names\n'
           'defined in the imported module, except those beginning with an\n'
           'underscore. This form may only be used at the module level.\n'
           '\n'
           'A target occurring in a "del" statement is also considered bound '
           'for\n'
           'this purpose (though the actual semantics are to unbind the '
           'name).\n'
           '\n'
           'Each assignment or import statement occurs within a block defined '
           'by a\n'
           'class or function definition or at the module level (the '
           'top-level\n'
           'code block).\n'
           '\n'
           'If a name is bound in a block, it is a local variable of that '
           'block,\n'
           'unless declared as "nonlocal" or "global".  If a name is bound at '
           'the\n'
           'module level, it is a global variable.  (The variables of the '
           'module\n'
           'code block are local and global.)  If a variable is used in a '
           'code\n'
           'block but not defined there, it is a *free variable*.\n'
           '\n'
           'Each occurrence of a name in the program text refers to the '
           '*binding*\n'
           'of that name established by the following name resolution rules.\n'
           '\n'
           '\n'
           'Resolution of names\n'
           '===================\n'
           '\n'
           'A *scope* defines the visibility of a name within a block.  If a '
           'local\n'
           'variable is defined in a block, its scope includes that block.  If '
           'the\n'
           'definition occurs in a function block, the scope extends to any '
           'blocks\n'
           'contained within the defining one, unless a contained block '
           'introduces\n'
           'a different binding for the name.\n'
           '\n'
           'When a name is used in a code block, it is resolved using the '
           'nearest\n'
           'enclosing scope.  The set of all such scopes visible to a code '
           'block\n'
           'is called the block’s *environment*.\n'
           '\n'
           'When a name is not found at all, a "NameError" exception is '
           'raised. If\n'
           'the current scope is a function scope, and the name refers to a '
           'local\n'
           'variable that has not yet been bound to a value at the point where '
           'the\n'
           'name is used, an "UnboundLocalError" exception is raised.\n'
           '"UnboundLocalError" is a subclass of "NameError".\n'
           '\n'
           'If a name binding operation occurs anywhere within a code block, '
           'all\n'
           'uses of the name within the block are treated as references to '
           'the\n'
           'current block.  This can lead to errors when a name is used within '
           'a\n'
           'block before it is bound.  This rule is subtle.  Python lacks\n'
           'declarations and allows name binding operations to occur anywhere\n'
           'within a code block.  The local variables of a code block can be\n'
           'determined by scanning the entire text of the block for name '
           'binding\n'
           'operations. See the FAQ entry on UnboundLocalError for examples.\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'
           'top-level namespace.  Names are resolved in the top-level '
           'namespace by\n'
           'searching the global namespace, i.e. the namespace of the module\n'
           'containing the code block, and the builtins namespace, the '
           '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'
           'next. If the names are also not found in the builtins namespace, '
           'new\n'
           'variables are created in the global namespace. The global '
           'statement\n'
           'must precede all uses of the listed names.\n'
           '\n'
           'The "global" statement has the same scope as a name binding '
           'operation\n'
           'in the same block.  If the nearest enclosing scope for a free '
           'variable\n'
           'contains a global statement, the free variable is treated as a '
           'global.\n'
           '\n'
           'The "nonlocal" statement causes corresponding names to refer to\n'
           'previously bound variables in the nearest enclosing function '
           'scope.\n'
           '"SyntaxError" is raised at compile time if the given name does '
           'not\n'
           'exist in any enclosing function scope. Type parameters cannot be\n'
           'rebound with the "nonlocal" statement.\n'
           '\n'
           'The namespace for a module is automatically created the first time '
           'a\n'
           'module is imported.  The main module for a script is always '
           'called\n'
           '"__main__".\n'
           '\n'
           'Class definition blocks and arguments to "exec()" and "eval()" '
           'are\n'
           'special in the context of name resolution. A class definition is '
           'an\n'
           'executable statement that may use and define names. These '
           'references\n'
           'follow the normal rules for name resolution with an exception '
           'that\n'
           'unbound local variables are looked up in the global namespace. '
           'The\n'
           'namespace of the class definition becomes the attribute dictionary '
           'of\n'
           'the class. The scope of names defined in a class block is limited '
           'to\n'
           'the class block; it does not extend to the code blocks of '
           'methods.\n'
           'This includes comprehensions and generator expressions, but it '
           'does\n'
           'not include annotation scopes, which have access to their '
           'enclosing\n'
           'class scopes. This means that the following will fail:\n'
           '\n'
           '   class A:\n'
           '       a = 42\n'
           '       b = list(a + i for i in range(10))\n'
           '\n'
           'However, the following will succeed:\n'
           '\n'
           '   class A:\n'
           '       type Alias = Nested\n'
           '       class Nested: pass\n'
           '\n'
           "   print(A.Alias.__value__)  # <type 'A.Nested'>\n"
           '\n'
           '\n'
           'Annotation scopes\n'
           '=================\n'
           '\n'
           '*Annotations*, type parameter lists and "type" statements '
           'introduce\n'
           '*annotation scopes*, which behave mostly like function scopes, '
           'but\n'
           'with some exceptions discussed below.\n'
           '\n'
           'Annotation scopes are used in the following contexts:\n'
           '\n'
           '* *Function annotations*.\n'
           '\n'
           '* *Variable annotations*.\n'
           '\n'
           '* Type parameter lists for generic type aliases.\n'
           '\n'
           '* Type parameter lists for generic functions. A generic '
           'function’s\n'
           '  annotations are executed within the annotation scope, but its\n'
           '  defaults and decorators are not.\n'
           '\n'
           '* Type parameter lists for generic classes. A generic class’s '
           'base\n'
           '  classes and keyword arguments are executed within the '
           'annotation\n'
           '  scope, but its decorators are not.\n'
           '\n'
           '* The bounds, constraints, and default values for type parameters\n'
           '  (lazily evaluated).\n'
           '\n'
           '* The value of type aliases (lazily evaluated).\n'
           '\n'
           'Annotation scopes differ from function scopes in the following '
           'ways:\n'
           '\n'
           '* Annotation scopes have access to their enclosing class '
           'namespace. If\n'
           '  an annotation scope is immediately within a class scope, or '
           'within\n'
           '  another annotation scope that is immediately within a class '
           'scope,\n'
           '  the code in the annotation scope can use names defined in the '
           'class\n'
           '  scope as if it were executed directly within the class body. '
           'This\n'
           '  contrasts with regular functions defined within classes, which\n'
           '  cannot access names defined in the class scope.\n'
           '\n'
           '* Expressions in annotation scopes cannot contain "yield", "yield\n'
           '  from", "await", or ":=" expressions. (These expressions are '
           'allowed\n'
           '  in other scopes contained within the annotation scope.)\n'
           '\n'
           '* Names defined in annotation scopes cannot be rebound with '
           '"nonlocal"\n'
           '  statements in inner scopes. This includes only type parameters, '
           'as\n'
           '  no other syntactic elements that can appear within annotation '
           'scopes\n'
           '  can introduce new names.\n'
           '\n'
           '* While annotation scopes have an internal name, that name is not\n'
           '  reflected in the *qualified name* of objects defined within the\n'
           '  scope. Instead, the "__qualname__" of such objects is as if the\n'
           '  object were defined in the enclosing scope.\n'
           '\n'
           'Added in version 3.12: Annotation scopes were introduced in '
           'Python\n'
           '3.12 as part of **PEP 695**.\n'
           '\n'
           'Changed in version 3.13: Annotation scopes are also used for type\n'
           'parameter defaults, as introduced by **PEP 696**.\n'
           '\n'
           'Changed in version 3.14: Annotation scopes are now also used for\n'
           'annotations, as specified in **PEP 649** and **PEP 749**.\n'
           '\n'
           '\n'
           'Lazy evaluation\n'
           '===============\n'
           '\n'
           'Most annotation scopes are *lazily evaluated*. This includes\n'
           'annotations, the values of type aliases created through the '
           '"type"\n'
           'statement, and the bounds, constraints, and default values of '
           'type\n'
           'variables created through the type parameter syntax. This means '
           'that\n'
           'they are not evaluated when the type alias or type variable is\n'
           'created, or when the object carrying annotations is created. '
           'Instead,\n'
           'they are only evaluated when necessary, for example when the\n'
           '"__value__" attribute on a type alias is accessed.\n'
           '\n'
           'Example:\n'
           '\n'
           '   >>> type Alias = 1/0\n'
           '   >>> Alias.__value__\n'
           '   Traceback (most recent call last):\n'
           '     ...\n'
           '   ZeroDivisionError: division by zero\n'
           '   >>> def func[T: 1/0](): pass\n'
           '   >>> T = func.__type_params__[0]\n'
           '   >>> T.__bound__\n'
           '   Traceback (most recent call last):\n'
           '     ...\n'
           '   ZeroDivisionError: division by zero\n'
           '\n'
           'Here the exception is raised only when the "__value__" attribute '
           'of\n'
           'the type alias or the "__bound__" attribute of the type variable '
           'is\n'
           'accessed.\n'
           '\n'
           'This behavior is primarily useful for references to types that '
           'have\n'
           'not yet been defined when the type alias or type variable is '
           'created.\n'
           'For example, lazy evaluation enables creation of mutually '
           'recursive\n'
           'type aliases:\n'
           '\n'
           '   from typing import Literal\n'
           '\n'
           '   type SimpleExpr = int | Parenthesized\n'
           '   type Parenthesized = tuple[Literal["("], Expr, Literal[")"]]\n'
           '   type Expr = SimpleExpr | tuple[SimpleExpr, Literal["+", "-"], '
           'Expr]\n'
           '\n'
           'Lazily evaluated values are evaluated in annotation scope, which '
           'means\n'
           'that names that appear inside the lazily evaluated value are '
           'looked up\n'
           'as if they were used in the immediately enclosing scope.\n'
           '\n'
           'Added in version 3.12.\n'
           '\n'
           '\n'
           'Builtins and restricted execution\n'
           '=================================\n'
           '\n'
           '**CPython implementation detail:** Users should not touch\n'
           '"__builtins__"; it is strictly an implementation detail.  Users\n'
           'wanting to override values in the builtins namespace should '
           '"import"\n'
           'the "builtins" module and modify its attributes appropriately.\n'
           '\n'
           'The builtins namespace associated with the execution of a code '
           'block\n'
           'is actually found by looking up the name "__builtins__" in its '
           'global\n'
           'namespace; this should be a dictionary or a module (in the latter '
           'case\n'
           'the module’s dictionary is used).  By default, when in the '
           '"__main__"\n'
           'module, "__builtins__" is the built-in module "builtins"; when in '
           'any\n'
           'other module, "__builtins__" is an alias for the dictionary of '
           'the\n'
           '"builtins" module itself.\n'
           '\n'
           '\n'
           'Interaction with dynamic features\n'
           '=================================\n'
           '\n'
           'Name resolution of free variables occurs at runtime, not at '
           'compile\n'
           'time. This means that the following code will print 42:\n'
           '\n'
           '   i = 10\n'
           '   def f():\n'
           '       print(i)\n'
           '   i = 42\n'
           '   f()\n'
           '\n'
           'The "eval()" and "exec()" functions do not have access to the '
           'full\n'
           'environment for resolving names.  Names may be resolved in the '
           'local\n'
           'and global namespaces of the caller.  Free variables are not '
           'resolved\n'
           'in the nearest enclosing namespace, but in the global namespace.  '
           '[1]\n'
           'The "exec()" and "eval()" functions have optional arguments to\n'
           'override the global and local namespace.  If only one namespace '
           'is\n'
           'specified, it is used for both.\n',
 'nonlocal': 'The "nonlocal" statement\n'
             '************************\n'
             '\n'
             '   nonlocal_stmt ::= "nonlocal" identifier ("," identifier)*\n'
             '\n'
             'When the definition of a function or class is nested (enclosed) '
             'within\n'
             'the definitions of other functions, its nonlocal scopes are the '
             'local\n'
             'scopes of the enclosing functions. The "nonlocal" statement '
             'causes the\n'
             'listed identifiers to refer to names previously bound in '
             'nonlocal\n'
             'scopes. It allows encapsulated code to rebind such nonlocal\n'
             'identifiers.  If a name is bound in more than one nonlocal '
             'scope, the\n'
             'nearest binding is used. If a name is not bound in any nonlocal '
             'scope,\n'
             'or if there is no nonlocal scope, a "SyntaxError" is raised.\n'
             '\n'
             'The "nonlocal" statement applies to the entire scope of a '
             'function or\n'
             'class body. A "SyntaxError" is raised if a variable is used or\n'
             'assigned to prior to its nonlocal declaration in the scope.\n'
             '\n'
             'See also:\n'
             '\n'
             '  **PEP 3104** - Access to Names in Outer Scopes\n'
             '     The specification for the "nonlocal" statement.\n'
             '\n'
             '**Programmer’s note:** "nonlocal" is a directive to the parser '
             'and\n'
             'applies only to code parsed along with it.  See the note for '
             'the\n'
             '"global" statement.\n',
 'numbers': 'Numeric literals\n'
            '****************\n'
            '\n'
            'There are three types of numeric literals: integers, '
            'floating-point\n'
            'numbers, and imaginary numbers.  There are no complex literals\n'
            '(complex numbers can be formed by adding a real number and an\n'
            'imaginary number).\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 ‘"-"’ '
            'and the\n'
            'literal "1".\n',
 'numeric-types': 'Emulating numeric types\n'
                  '***********************\n'
                  '\n'
                  'The following methods can be defined to emulate numeric '
                  'objects.\n'
                  'Methods corresponding to operations that are not supported '
                  'by the\n'
                  'particular kind of number implemented (e.g., bitwise '
                  'operations for\n'
                  'non-integral numbers) should be left undefined.\n'
                  '\n'
                  'object.__add__(self, other)\n'
                  'object.__sub__(self, other)\n'
                  'object.__mul__(self, other)\n'
                  'object.__matmul__(self, other)\n'
                  'object.__truediv__(self, other)\n'
                  'object.__floordiv__(self, other)\n'
                  'object.__mod__(self, other)\n'
                  'object.__divmod__(self, other)\n'
                  'object.__pow__(self, other[, modulo])\n'
                  'object.__lshift__(self, other)\n'
                  'object.__rshift__(self, other)\n'
                  'object.__and__(self, other)\n'
                  'object.__xor__(self, other)\n'
                  'object.__or__(self, other)\n'
                  '\n'
                  '   These methods are called to implement the binary '
                  'arithmetic\n'
                  '   operations ("+", "-", "*", "@", "/", "//", "%", '
                  '"divmod()",\n'
                  '   "pow()", "**", "<<", ">>", "&", "^", "|").  For '
                  'instance, to\n'
                  '   evaluate the expression "x + y", where *x* is an '
                  'instance of a\n'
                  '   class that has an "__add__()" method, '
                  '"type(x).__add__(x, y)" is\n'
                  '   called.  The "__divmod__()" method should be the '
                  'equivalent to\n'
                  '   using "__floordiv__()" and "__mod__()"; it should not be '
                  'related to\n'
                  '   "__truediv__()".  Note that "__pow__()" should be '
                  'defined to accept\n'
                  '   an optional third argument if the ternary version of the '
                  'built-in\n'
                  '   "pow()" function is to be supported.\n'
                  '\n'
                  '   If one of those methods does not support the operation '
                  'with the\n'
                  '   supplied arguments, it should return "NotImplemented".\n'
                  '\n'
                  'object.__radd__(self, other)\n'
                  'object.__rsub__(self, other)\n'
                  'object.__rmul__(self, other)\n'
                  'object.__rmatmul__(self, other)\n'
                  'object.__rtruediv__(self, other)\n'
                  'object.__rfloordiv__(self, other)\n'
                  'object.__rmod__(self, other)\n'
                  'object.__rdivmod__(self, other)\n'
                  'object.__rpow__(self, other[, modulo])\n'
                  'object.__rlshift__(self, other)\n'
                  'object.__rrshift__(self, other)\n'
                  'object.__rand__(self, other)\n'
                  'object.__rxor__(self, other)\n'
                  'object.__ror__(self, other)\n'
                  '\n'
                  '   These methods are called to implement the binary '
                  'arithmetic\n'
                  '   operations ("+", "-", "*", "@", "/", "//", "%", '
                  '"divmod()",\n'
                  '   "pow()", "**", "<<", ">>", "&", "^", "|") with reflected '
                  '(swapped)\n'
                  '   operands.  These functions are only called if the '
                  'operands are of\n'
                  '   different types, when the left operand does not support '
                  'the\n'
                  '   corresponding operation [3], or the right operand’s '
                  'class is\n'
                  '   derived from the left operand’s class. [4] For instance, '
                  'to\n'
                  '   evaluate the expression "x - y", where *y* is an '
                  'instance of a\n'
                  '   class that has an "__rsub__()" method, '
                  '"type(y).__rsub__(y, x)" is\n'
                  '   called if "type(x).__sub__(x, y)" returns '
                  '"NotImplemented" or\n'
                  '   "type(y)" is a subclass of "type(x)". [5]\n'
                  '\n'
                  '   Note that ternary "pow()" will not try calling '
                  '"__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'
                  'object.__iadd__(self, other)\n'
                  'object.__isub__(self, other)\n'
                  'object.__imul__(self, other)\n'
                  'object.__imatmul__(self, other)\n'
                  'object.__itruediv__(self, other)\n'
                  'object.__ifloordiv__(self, other)\n'
                  'object.__imod__(self, other)\n'
                  'object.__ipow__(self, other[, modulo])\n'
                  'object.__ilshift__(self, other)\n'
                  'object.__irshift__(self, other)\n'
                  'object.__iand__(self, other)\n'
                  'object.__ixor__(self, other)\n'
                  'object.__ior__(self, other)\n'
                  '\n'
                  '   These methods are called to implement the augmented '
                  'arithmetic\n'
                  '   assignments ("+=", "-=", "*=", "@=", "/=", "//=", "%=", '
                  '"**=",\n'
                  '   "<<=", ">>=", "&=", "^=", "|=").  These methods should '
                  'attempt to\n'
                  '   do the operation in-place (modifying *self*) and return '
                  'the result\n'
                  '   (which could be, but does not have to be, *self*).  If a '
                  'specific\n'
                  '   method is not defined, or if that method returns '
                  '"NotImplemented",\n'
                  '   the augmented assignment falls back to the normal '
                  'methods.  For\n'
                  '   instance, if *x* is an instance of a class with an '
                  '"__iadd__()"\n'
                  '   method, "x += y" is equivalent to "x = x.__iadd__(y)" . '
                  'If\n'
                  '   "__iadd__()" does not exist, or if "x.__iadd__(y)" '
                  'returns\n'
                  '   "NotImplemented", "x.__add__(y)" and "y.__radd__(x)" '
                  'are\n'
                  '   considered, as with the evaluation of "x + y". In '
                  'certain\n'
                  '   situations, augmented assignment can result in '
                  'unexpected errors\n'
                  '   (see Why does a_tuple[i] += [‘item’] raise an exception '
                  'when the\n'
                  '   addition works?), but this behavior is in fact part of '
                  'the data\n'
                  '   model.\n'
                  '\n'
                  'object.__neg__(self)\n'
                  'object.__pos__(self)\n'
                  'object.__abs__(self)\n'
                  'object.__invert__(self)\n'
                  '\n'
                  '   Called to implement the unary arithmetic operations '
                  '("-", "+",\n'
                  '   "abs()" and "~").\n'
                  '\n'
                  'object.__complex__(self)\n'
                  'object.__int__(self)\n'
                  'object.__float__(self)\n'
                  '\n'
                  '   Called to implement the built-in functions "complex()", '
                  '"int()" and\n'
                  '   "float()".  Should return a value of the appropriate '
                  'type.\n'
                  '\n'
                  'object.__index__(self)\n'
                  '\n'
                  '   Called to implement "operator.index()", and whenever '
                  'Python needs\n'
                  '   to losslessly convert the numeric object to an integer '
                  'object (such\n'
                  '   as in slicing, or in the built-in "bin()", "hex()" and '
                  '"oct()"\n'
                  '   functions). Presence of this method indicates that the '
                  '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'
                  '\n'
                  'object.__round__(self[, ndigits])\n'
                  'object.__trunc__(self)\n'
                  'object.__floor__(self)\n'
                  'object.__ceil__(self)\n'
                  '\n'
                  '   Called to implement the built-in function "round()" and '
                  '"math"\n'
                  '   functions "trunc()", "floor()" and "ceil()". Unless '
                  '*ndigits* is\n'
                  '   passed to "__round__()" all these methods should return '
                  'the value\n'
                  '   of the object truncated to an "Integral" (typically an '
                  '"int").\n'
                  '\n'
                  '   Changed in version 3.14: "int()" no longer delegates to '
                  'the\n'
                  '   "__trunc__()" method.\n',
 'objects': 'Objects, values and types\n'
            '*************************\n'
            '\n'
            '*Objects* are Python’s abstraction for data.  All data in a '
            'Python\n'
            'program is represented by objects or by relations between '
            'objects. (In\n'
            'a sense, and in conformance to Von Neumann’s model of a “stored\n'
            'program computer”, code is also represented by objects.)\n'
            '\n'
            'Every object has an identity, a type and a value.  An object’s\n'
            '*identity* never changes once it has been created; you may think '
            'of it\n'
            'as the object’s address in memory.  The "is" operator compares '
            'the\n'
            'identity of two objects; the "id()" function returns an integer\n'
            'representing its identity.\n'
            '\n'
            '**CPython implementation detail:** For CPython, "id(x)" is the '
            'memory\n'
            'address where "x" is stored.\n'
            '\n'
            'An object’s type determines the operations that the object '
            'supports\n'
            '(e.g., “does it have a length?”) and also defines the possible '
            'values\n'
            'for objects of that type.  The "type()" function returns an '
            'object’s\n'
            'type (which is an object itself).  Like its identity, an '
            'object’s\n'
            '*type* is also unchangeable. [1]\n'
            '\n'
            'The *value* of some objects can change.  Objects whose value can\n'
            'change are said to be *mutable*; objects whose value is '
            'unchangeable\n'
            'once they are created are called *immutable*. (The value of an\n'
            'immutable container object that contains a reference to a '
            'mutable\n'
            'object can change when the latter’s value is changed; however '
            'the\n'
            'container is still considered immutable, because the collection '
            'of\n'
            'objects it contains cannot be changed.  So, immutability is not\n'
            'strictly the same as having an unchangeable value, it is more '
            'subtle.)\n'
            'An object’s mutability is determined by its type; for instance,\n'
            'numbers, strings and tuples are immutable, while dictionaries '
            'and\n'
            'lists are mutable.\n'
            '\n'
            'Objects are never explicitly destroyed; however, when they '
            'become\n'
            'unreachable they may be garbage-collected.  An implementation is\n'
            'allowed to postpone garbage collection or omit it altogether — it '
            'is a\n'
            'matter of implementation quality how garbage collection is\n'
            'implemented, as long as no objects are collected that are still\n'
            'reachable.\n'
            '\n'
            '**CPython implementation detail:** CPython currently uses a '
            'reference-\n'
            'counting scheme with (optional) delayed detection of cyclically '
            'linked\n'
            'garbage, which collects most objects as soon as they become\n'
            'unreachable, but is not guaranteed to collect garbage containing\n'
            'circular references.  See the documentation of the "gc" module '
            'for\n'
            'information on controlling the collection of cyclic garbage. '
            'Other\n'
            'implementations act differently and CPython may change. Do not '
            'depend\n'
            'on immediate finalization of objects when they become unreachable '
            '(so\n'
            'you should always close files explicitly).\n'
            '\n'
            'Note that the use of the implementation’s tracing or debugging\n'
            'facilities may keep objects alive that would normally be '
            'collectable.\n'
            'Also note that catching an exception with a "try"…"except" '
            'statement\n'
            'may keep objects alive.\n'
            '\n'
            'Some objects contain references to “external” resources such as '
            'open\n'
            'files or windows.  It is understood that these resources are '
            'freed\n'
            'when the object is garbage-collected, but since garbage '
            'collection is\n'
            'not guaranteed to happen, such objects also provide an explicit '
            'way to\n'
            'release the external resource, usually a "close()" method. '
            'Programs\n'
            'are strongly recommended to explicitly close such objects.  The\n'
            '"try"…"finally" statement and the "with" statement provide '
            'convenient\n'
            'ways to do this.\n'
            '\n'
            'Some objects contain references to other objects; these are '
            'called\n'
            '*containers*. Examples of containers are tuples, lists and\n'
            'dictionaries.  The references are part of a container’s value.  '
            'In\n'
            'most cases, when we talk about the value of a container, we imply '
            'the\n'
            'values, not the identities of the contained objects; however, '
            'when we\n'
            'talk about the mutability of a container, only the identities of '
            'the\n'
            'immediately contained objects are implied.  So, if an immutable\n'
            'container (like a tuple) contains a reference to a mutable '
            'object, its\n'
            'value changes if that mutable object is changed.\n'
            '\n'
            'Types affect almost all aspects of object behavior.  Even the\n'
            'importance of object identity is affected in some sense: for '
            'immutable\n'
            'types, operations that compute new values may actually return a\n'
            'reference to any existing object with the same type and value, '
            'while\n'
            'for mutable objects this is not allowed. For example, after "a = '
            '1; b\n'
            '= 1", *a* and *b* may or may not refer to the same object with '
            'the\n'
            'value one, depending on the implementation. This is because "int" '
            'is\n'
            'an immutable type, so the reference to "1" can be reused. This\n'
            'behaviour depends on the implementation used, so should not be '
            'relied\n'
            'upon, but is something to be aware of when making use of object\n'
            'identity tests. However, after "c = []; d = []", *c* and *d* are\n'
            'guaranteed to refer to two different, unique, newly created '
            'empty\n'
            'lists. (Note that "e = f = []" assigns the *same* object to both '
            '*e*\n'
            'and *f*.)\n',
 'operator-summary': 'Operator precedence\n'
                     '*******************\n'
                     '\n'
                     'The following table summarizes the operator precedence '
                     'in Python, from\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.  '
                     'Operators in\n'
                     'the same box group left to right (except for '
                     'exponentiation and\n'
                     'conditional expressions, which group from right to '
                     'left).\n'
                     '\n'
                     'Note that comparisons, membership tests, and identity '
                     'tests, all have\n'
                     'the same precedence and have a left-to-right chaining '
                     'feature as\n'
                     'described in the Comparisons section.\n'
                     '\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'
                     '| "await x"                                       | '
                     'Await expression                      |\n'
                     '+-------------------------------------------------+---------------------------------------+\n'
                     '| "**"                                            | '
                     'Exponentiation [5]                    |\n'
                     '+-------------------------------------------------+---------------------------------------+\n'
                     '| "+x", "-x", "~x"                                | '
                     'Positive, negative, bitwise NOT       |\n'
                     '+-------------------------------------------------+---------------------------------------+\n'
                     '| "*", "@", "/", "//", "%"                        | '
                     'Multiplication, matrix                |\n'
                     '|                                                 | '
                     'multiplication, division, floor       |\n'
                     '|                                                 | '
                     'division, remainder [6]               |\n'
                     '+-------------------------------------------------+---------------------------------------+\n'
                     '| "+", "-"                                        | '
                     'Addition and subtraction              |\n'
                     '+-------------------------------------------------+---------------------------------------+\n'
                     '| "<<", ">>"                                      | '
                     'Shifts                                |\n'
                     '+-------------------------------------------------+---------------------------------------+\n'
                     '| "&"                                             | '
                     'Bitwise AND                           |\n'
                     '+-------------------------------------------------+---------------------------------------+\n'
                     '| "^"                                             | '
                     'Bitwise XOR                           |\n'
                     '+-------------------------------------------------+---------------------------------------+\n'
                     '| "|"                                             | '
                     'Bitwise OR                            |\n'
                     '+-------------------------------------------------+---------------------------------------+\n'
                     '| "in", "not in", "is", "is not", "<", "<=", ">", | '
                     'Comparisons, including membership     |\n'
                     '| ">=", "!=", "=="                                | '
                     'tests and identity tests              |\n'
                     '+-------------------------------------------------+---------------------------------------+\n'
                     '| "not x"                                         | '
                     'Boolean NOT                           |\n'
                     '+-------------------------------------------------+---------------------------------------+\n'
                     '| "and"                                           | '
                     'Boolean AND                           |\n'
                     '+-------------------------------------------------+---------------------------------------+\n'
                     '| "or"                                            | '
                     'Boolean OR                            |\n'
                     '+-------------------------------------------------+---------------------------------------+\n'
                     '| "if" – "else"                                   | '
                     'Conditional expression                |\n'
                     '+-------------------------------------------------+---------------------------------------+\n'
                     '| "lambda"                                        | '
                     'Lambda expression                     |\n'
                     '+-------------------------------------------------+---------------------------------------+\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 '
                     'example, and\n'
                     '    assuming a platform on which a Python float is an '
                     'IEEE 754 double-\n'
                     '    precision number, in order that "-1e-100 % 1e100" '
                     'have the same\n'
                     '    sign as "1e100", the computed result is "-1e-100 + '
                     '1e100", which\n'
                     '    is numerically exactly equal to "1e100".  The '
                     'function\n'
                     '    "math.fmod()" returns a result whose sign matches '
                     'the sign of the\n'
                     '    first argument instead, and so returns "-1e-100" in '
                     'this case.\n'
                     '    Which approach is more appropriate depends on the '
                     'application.\n'
                     '\n'
                     '[2] If x is very close to an exact integer multiple of '
                     'y, it’s\n'
                     '    possible for "x//y" to be one larger than '
                     '"(x-x%y)//y" due to\n'
                     '    rounding.  In such cases, Python returns the latter '
                     'result, in\n'
                     '    order to preserve that "divmod(x,y)[0] * y + x % y" '
                     'be very close\n'
                     '    to "x".\n'
                     '\n'
                     '[3] The Unicode standard distinguishes between *code '
                     'points* (e.g.\n'
                     '    U+0041) and *abstract characters* (e.g. “LATIN '
                     'CAPITAL LETTER A”).\n'
                     '    While most abstract characters in Unicode are only '
                     'represented\n'
                     '    using one code point, there is a number of abstract '
                     'characters\n'
                     '    that can in addition be represented using a sequence '
                     'of more than\n'
                     '    one code point.  For example, the abstract character '
                     '“LATIN\n'
                     '    CAPITAL LETTER C WITH CEDILLA” can be represented as '
                     'a single\n'
                     '    *precomposed character* at code position U+00C7, or '
                     'as a sequence\n'
                     '    of a *base character* at code position U+0043 (LATIN '
                     'CAPITAL\n'
                     '    LETTER C), followed by a *combining character* at '
                     'code position\n'
                     '    U+0327 (COMBINING CEDILLA).\n'
                     '\n'
                     '    The comparison operators on strings compare at the '
                     'level of\n'
                     '    Unicode code points. This may be counter-intuitive '
                     'to humans.  For\n'
                     '    example, ""\\u00C7" == "\\u0043\\u0327"" is "False", '
                     'even though both\n'
                     '    strings represent the same abstract character “LATIN '
                     'CAPITAL\n'
                     '    LETTER C WITH CEDILLA”.\n'
                     '\n'
                     '    To compare strings at the level of abstract '
                     'characters (that is,\n'
                     '    in a way intuitive to humans), use '
                     '"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'
                     '\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',
 'pass': 'The "pass" statement\n'
         '********************\n'
         '\n'
         '   pass_stmt ::= "pass"\n'
         '\n'
         '"pass" is a null operation — when it is executed, nothing happens. '
         'It\n'
         'is useful as a placeholder when a statement is required '
         'syntactically,\n'
         'but no code needs to be executed, for example:\n'
         '\n'
         '   def f(arg): pass    # a function that does nothing (yet)\n'
         '\n'
         '   class C: pass       # a class with no methods (yet)\n',
 'power': 'The power operator\n'
          '******************\n'
          '\n'
          'The power operator binds more tightly than unary operators on its\n'
          'left; it binds less tightly than unary operators on its right.  '
          'The\n'
          'syntax is:\n'
          '\n'
          '   power ::= (await_expr | primary) ["**" u_expr]\n'
          '\n'
          'Thus, in an unparenthesized sequence of power and unary operators, '
          'the\n'
          'operators are evaluated from right to left (this does not '
          'constrain\n'
          'the evaluation order for the operands): "-1**2" results in "-1".\n'
          '\n'
          'The power operator has the same semantics as the built-in "pow()"\n'
          'function, when called with two arguments: it yields its left '
          'argument\n'
          'raised to the power of its right argument.  The numeric arguments '
          'are\n'
          'first converted to a common type, and the result is of that type.\n'
          '\n'
          'For int operands, the result has the same type as the operands '
          'unless\n'
          'the second argument is negative; in that case, all arguments are\n'
          'converted to float and a float result is delivered. For example,\n'
          '"10**2" returns "100", but "10**-2" returns "0.01".\n'
          '\n'
          'Raising "0.0" to a negative power results in a '
          '"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__()" and\n'
          '"__rpow__()" methods.\n',
 'raise': 'The "raise" statement\n'
          '*********************\n'
          '\n'
          '   raise_stmt ::= "raise" [expression ["from" expression]]\n'
          '\n'
          'If no expressions are present, "raise" re-raises the exception that '
          'is\n'
          'currently being handled, which is also known as the *active\n'
          'exception*. If there isn’t currently an active exception, a\n'
          '"RuntimeError" exception is raised indicating that this is an '
          'error.\n'
          '\n'
          'Otherwise, "raise" evaluates the first expression as the exception\n'
          'object.  It must be either a subclass or an instance of\n'
          '"BaseException". If it is a class, the exception instance will be\n'
          'obtained when needed by instantiating the class with no arguments.\n'
          '\n'
          'The *type* of the exception is the exception instance’s class, the\n'
          '*value* is the instance itself.\n'
          '\n'
          'A traceback object is normally created automatically when an '
          'exception\n'
          'is raised and attached to it as the "__traceback__" attribute. You '
          'can\n'
          'create an exception and set your own traceback in one step using '
          'the\n'
          '"with_traceback()" exception method (which returns the same '
          'exception\n'
          'instance, with its traceback set to its argument), like so:\n'
          '\n'
          '   raise Exception("foo occurred").with_traceback(tracebackobj)\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'
          '\n'
          '   >>> try:\n'
          '   ...     print(1 / 0)\n'
          '   ... except Exception as exc:\n'
          '   ...     raise RuntimeError("Something bad happened") from exc\n'
          '   ...\n'
          '   Traceback (most recent call last):\n'
          '     File "<stdin>", line 2, in <module>\n'
          '       print(1 / 0)\n'
          '             ~~^~~\n'
          '   ZeroDivisionError: division by zero\n'
          '\n'
          '   The above exception was the direct cause of the following '
          'exception:\n'
          '\n'
          '   Traceback (most recent call last):\n'
          '     File "<stdin>", line 4, in <module>\n'
          '       raise RuntimeError("Something bad happened") from exc\n'
          '   RuntimeError: Something bad happened\n'
          '\n'
          'A similar mechanism works implicitly if a new exception is raised '
          'when\n'
          'an exception is already being handled.  An exception may be '
          'handled\n'
          'when an "except" or "finally" clause, or a "with" statement, is '
          'used.\n'
          'The previous exception is then attached as the new exception’s\n'
          '"__context__" attribute:\n'
          '\n'
          '   >>> try:\n'
          '   ...     print(1 / 0)\n'
          '   ... except:\n'
          '   ...     raise RuntimeError("Something bad happened")\n'
          '   ...\n'
          '   Traceback (most recent call last):\n'
          '     File "<stdin>", line 2, in <module>\n'
          '       print(1 / 0)\n'
          '             ~~^~~\n'
          '   ZeroDivisionError: division by zero\n'
          '\n'
          '   During handling of the above exception, another exception '
          'occurred:\n'
          '\n'
          '   Traceback (most recent call last):\n'
          '     File "<stdin>", line 4, in <module>\n'
          '       raise RuntimeError("Something bad happened")\n'
          '   RuntimeError: Something bad happened\n'
          '\n'
          'Exception chaining can be explicitly suppressed by specifying '
          '"None"\n'
          'in the "from" clause:\n'
          '\n'
          '   >>> try:\n'
          '   ...     print(1 / 0)\n'
          '   ... except:\n'
          '   ...     raise RuntimeError("Something bad happened") from None\n'
          '   ...\n'
          '   Traceback (most recent call last):\n'
          '     File "<stdin>", line 4, in <module>\n'
          '   RuntimeError: Something bad happened\n'
          '\n'
          'Additional information on exceptions can be found in section\n'
          'Exceptions, and information about handling exceptions is in '
          'section\n'
          'The try statement.\n'
          '\n'
          'Changed in version 3.3: "None" is now permitted as "Y" in "raise X\n'
          'from Y".Added the "__suppress_context__" attribute to suppress\n'
          'automatic display of the exception context.\n'
          '\n'
          'Changed in version 3.11: If the traceback of the active exception '
          'is\n'
          'modified in an "except" clause, a subsequent "raise" statement re-\n'
          'raises the exception with the modified traceback. Previously, the\n'
          'exception was re-raised with the traceback it had when it was '
          'caught.\n',
 'return': 'The "return" statement\n'
           '**********************\n'
           '\n'
           '   return_stmt ::= "return" [expression_list]\n'
           '\n'
           '"return" may only occur syntactically nested in a function '
           'definition,\n'
           'not within a nested class definition.\n'
           '\n'
           'If an expression list is present, it is evaluated, else "None" is\n'
           'substituted.\n'
           '\n'
           '"return" leaves the current function call with the expression list '
           '(or\n'
           '"None") as return value.\n'
           '\n'
           'When "return" passes control out of a "try" statement with a '
           '"finally"\n'
           'clause, that "finally" clause is executed before really leaving '
           'the\n'
           'function.\n'
           '\n'
           'In a generator function, the "return" statement indicates that '
           'the\n'
           'generator is done and will cause "StopIteration" to be raised. '
           'The\n'
           'returned value (if any) is used as an argument to construct\n'
           '"StopIteration" and becomes the "StopIteration.value" attribute.\n'
           '\n'
           'In an asynchronous generator function, an empty "return" '
           'statement\n'
           'indicates that the asynchronous generator is done and will cause\n'
           '"StopAsyncIteration" to be raised.  A non-empty "return" statement '
           'is\n'
           'a syntax error in an asynchronous generator function.\n',
 'sequence-types': 'Emulating container types\n'
                   '*************************\n'
                   '\n'
                   'The following methods can be defined to implement '
                   'container objects.\n'
                   'None of them are provided by the "object" class itself. '
                   'Containers\n'
                   'usually are *sequences* (such as "lists" or "tuples") or '
                   '*mappings*\n'
                   '(like *dictionaries*), but can represent other containers '
                   'as well.\n'
                   'The first set of methods is used either to emulate a '
                   'sequence or to\n'
                   'emulate a mapping; the difference is that for a sequence, '
                   'the\n'
                   'allowable keys should be the integers *k* for which "0 <= '
                   'k < N" where\n'
                   '*N* is the length of the sequence, or "slice" objects, '
                   'which define a\n'
                   'range of items.  It is also recommended that mappings '
                   'provide the\n'
                   'methods "keys()", "values()", "items()", "get()", '
                   '"clear()",\n'
                   '"setdefault()", "pop()", "popitem()", "copy()", and '
                   '"update()"\n'
                   'behaving similar to those for Python’s standard '
                   '"dictionary" objects.\n'
                   'The "collections.abc" module provides a "MutableMapping" '
                   '*abstract\n'
                   'base class* to help create those methods from a base set '
                   'of\n'
                   '"__getitem__()", "__setitem__()", "__delitem__()", and '
                   '"keys()".\n'
                   'Mutable sequences should provide methods "append()", '
                   '"count()",\n'
                   '"index()", "extend()", "insert()", "pop()", "remove()", '
                   '"reverse()"\n'
                   'and "sort()", like Python standard "list" objects. '
                   'Finally, sequence\n'
                   'types should implement addition (meaning concatenation) '
                   'and\n'
                   'multiplication (meaning repetition) by defining the '
                   'methods\n'
                   '"__add__()", "__radd__()", "__iadd__()", "__mul__()", '
                   '"__rmul__()" and\n'
                   '"__imul__()" described below; they should not define other '
                   'numerical\n'
                   'operators.  It is recommended that both mappings and '
                   'sequences\n'
                   'implement the "__contains__()" method to allow efficient '
                   'use of the\n'
                   '"in" operator; for mappings, "in" should search the '
                   'mapping’s keys;\n'
                   'for sequences, it should search through the values.  It is '
                   'further\n'
                   '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'
                   '\n'
                   'object.__len__(self)\n'
                   '\n'
                   '   Called to implement the built-in function "len()".  '
                   'Should return\n'
                   '   the length of the object, an integer ">=" 0.  Also, an '
                   'object that\n'
                   '   doesn’t define a "__bool__()" method and whose '
                   '"__len__()" method\n'
                   '   returns zero is considered to be false in a Boolean '
                   'context.\n'
                   '\n'
                   '   **CPython implementation detail:** In CPython, the '
                   'length is\n'
                   '   required to be at most "sys.maxsize". If the length is '
                   'larger than\n'
                   '   "sys.maxsize" some features (such as "len()") may '
                   'raise\n'
                   '   "OverflowError".  To prevent raising "OverflowError" by '
                   'truth value\n'
                   '   testing, an object must define a "__bool__()" method.\n'
                   '\n'
                   'object.__length_hint__(self)\n'
                   '\n'
                   '   Called to implement "operator.length_hint()". Should '
                   'return an\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'
                   '   method is purely an optimization and is never required '
                   'for\n'
                   '   correctness.\n'
                   '\n'
                   '   Added in version 3.4.\n'
                   '\n'
                   'Note:\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'
                   '\n'
                   '     a[slice(1, 2, None)] = b\n'
                   '\n'
                   '  and so forth.  Missing slice items are always filled in '
                   'with "None".\n'
                   '\n'
                   'object.__getitem__(self, key)\n'
                   '\n'
                   '   Called to implement evaluation of "self[key]". For '
                   '*sequence*\n'
                   '   types, the accepted keys should be integers. '
                   'Optionally, they may\n'
                   '   support "slice" objects as well.  Negative index '
                   'support is also\n'
                   '   optional. If *key* is of an inappropriate type, '
                   '"TypeError" may be\n'
                   '   raised; if *key* is a value outside the set of indexes '
                   'for the\n'
                   '   sequence (after any special interpretation of negative '
                   'values),\n'
                   '   "IndexError" should be raised. For *mapping* types, if '
                   '*key* is\n'
                   '   missing (not in the container), "KeyError" should be '
                   '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'
                   'object.__setitem__(self, key, value)\n'
                   '\n'
                   '   Called to implement assignment to "self[key]".  Same '
                   'note as for\n'
                   '   "__getitem__()".  This should only be implemented for '
                   'mappings if\n'
                   '   the objects support changes to the values for keys, or '
                   'if new keys\n'
                   '   can be added, or for sequences if elements can be '
                   'replaced.  The\n'
                   '   same exceptions should be raised for improper *key* '
                   'values as for\n'
                   '   the "__getitem__()" method.\n'
                   '\n'
                   'object.__delitem__(self, key)\n'
                   '\n'
                   '   Called to implement deletion of "self[key]".  Same note '
                   'as for\n'
                   '   "__getitem__()".  This should only be implemented for '
                   'mappings if\n'
                   '   the objects support removal of keys, or for sequences '
                   'if elements\n'
                   '   can be removed from the sequence.  The same exceptions '
                   'should be\n'
                   '   raised for improper *key* values as for the '
                   '"__getitem__()" method.\n'
                   '\n'
                   'object.__missing__(self, key)\n'
                   '\n'
                   '   Called by "dict"."__getitem__()" to implement '
                   '"self[key]" for dict\n'
                   '   subclasses when key is not in the dictionary.\n'
                   '\n'
                   'object.__iter__(self)\n'
                   '\n'
                   '   This method is called when an *iterator* is required '
                   'for a\n'
                   '   container. This method should return a new iterator '
                   'object that can\n'
                   '   iterate over all the objects in the container.  For '
                   'mappings, it\n'
                   '   should iterate over the keys of the container.\n'
                   '\n'
                   'object.__reversed__(self)\n'
                   '\n'
                   '   Called (if present) by the "reversed()" built-in to '
                   'implement\n'
                   '   reverse iteration.  It should return a new iterator '
                   'object that\n'
                   '   iterates over all the objects in the container in '
                   'reverse order.\n'
                   '\n'
                   '   If the "__reversed__()" method is not provided, the '
                   '"reversed()"\n'
                   '   built-in will fall back to using the sequence protocol '
                   '("__len__()"\n'
                   '   and "__getitem__()").  Objects that support the '
                   'sequence protocol\n'
                   '   should only provide "__reversed__()" if they can '
                   'provide an\n'
                   '   implementation that is more efficient than the one '
                   'provided by\n'
                   '   "reversed()".\n'
                   '\n'
                   'The membership test operators ("in" and "not in") are '
                   'normally\n'
                   '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'
                   '\n'
                   'object.__contains__(self, item)\n'
                   '\n'
                   '   Called to implement membership test operators.  Should '
                   'return true\n'
                   '   if *item* is in *self*, false otherwise.  For mapping '
                   'objects, this\n'
                   '   should consider the keys of the mapping rather than the '
                   'values or\n'
                   '   the key-item pairs.\n'
                   '\n'
                   '   For objects that don’t define "__contains__()", the '
                   'membership test\n'
                   '   first tries iteration via "__iter__()", then the old '
                   'sequence\n'
                   '   iteration protocol via "__getitem__()", see this '
                   'section in the\n'
                   '   language reference.\n',
 'shifting': 'Shifting operations\n'
             '*******************\n'
             '\n'
             'The shifting operations have lower priority than the arithmetic\n'
             'operations:\n'
             '\n'
             '   shift_expr ::= a_expr | shift_expr ("<<" | ">>") a_expr\n'
             '\n'
             'These operators accept integers as arguments.  They shift the '
             'first\n'
             'argument to the left or right by the number of bits given by '
             'the\n'
             'second argument.\n'
             '\n'
             'The left shift operation can be customized using the special\n'
             '"__lshift__()" and "__rlshift__()" methods. The right shift '
             'operation\n'
             'can be customized using the special "__rshift__()" and '
             '"__rrshift__()"\n'
             '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 '
             '"pow(2,n)".\n',
 'slicings': 'Slicings\n'
             '********\n'
             '\n'
             'A slicing selects a range of items in a sequence object (e.g., '
             'a\n'
             'string, tuple or list).  Slicings may be used as expressions or '
             'as\n'
             'targets in assignment or "del" statements.  The syntax for a '
             'slicing:\n'
             '\n'
             '   slicing      ::= primary "[" slice_list "]"\n'
             '   slice_list   ::= slice_item ("," slice_item)* [","]\n'
             '   slice_item   ::= expression | proper_slice\n'
             '   proper_slice ::= [lower_bound] ":" [upper_bound] [ ":" '
             '[stride] ]\n'
             '   lower_bound  ::= expression\n'
             '   upper_bound  ::= expression\n'
             '   stride       ::= expression\n'
             '\n'
             'There is ambiguity in the formal syntax here: anything that '
             'looks like\n'
             'an expression list also looks like a slice list, so any '
             'subscription\n'
             'can be interpreted as a slicing.  Rather than further '
             'complicating the\n'
             'syntax, this is disambiguated by defining that in this case the\n'
             'interpretation as a subscription takes priority over the\n'
             'interpretation as a slicing (this is the case if the slice list\n'
             'contains no proper slice).\n'
             '\n'
             'The semantics for a slicing are as follows.  The primary is '
             'indexed\n'
             '(using the same "__getitem__()" method as normal subscription) '
             'with a\n'
             'key that is constructed from the slice list, as follows.  If the '
             'slice\n'
             'list contains at least one comma, the key is a tuple containing '
             'the\n'
             'conversion of the slice items; otherwise, the conversion of the '
             'lone\n'
             'slice item is the key.  The conversion of a slice item that is '
             'an\n'
             'expression is that expression.  The conversion of a proper slice '
             'is a\n'
             'slice object (see section The standard type hierarchy) whose '
             '"start",\n'
             '"stop" and "step" attributes are the values of the expressions '
             'given\n'
             'as lower bound, upper bound and stride, respectively, '
             'substituting\n'
             '"None" for missing expressions.\n',
 'specialattrs': 'Special Attributes\n'
                 '******************\n'
                 '\n'
                 'The implementation adds a few special read-only attributes '
                 'to several\n'
                 'object types, where they are relevant.  Some of these are '
                 'not reported\n'
                 'by the "dir()" built-in function.\n'
                 '\n'
                 'definition.__name__\n'
                 '\n'
                 '   The name of the class, function, method, descriptor, or '
                 'generator\n'
                 '   instance.\n'
                 '\n'
                 'definition.__qualname__\n'
                 '\n'
                 '   The *qualified name* of the class, function, method, '
                 'descriptor, or\n'
                 '   generator instance.\n'
                 '\n'
                 '   Added in version 3.3.\n'
                 '\n'
                 'definition.__module__\n'
                 '\n'
                 '   The name of the module in which a class or function was '
                 'defined.\n'
                 '\n'
                 'definition.__doc__\n'
                 '\n'
                 '   The documentation string of a class or function, or '
                 '"None" if\n'
                 '   undefined.\n'
                 '\n'
                 'definition.__type_params__\n'
                 '\n'
                 '   The type parameters of generic classes, functions, and '
                 'type\n'
                 '   aliases. For classes and functions that are not generic, '
                 'this will\n'
                 '   be an empty tuple.\n'
                 '\n'
                 '   Added in version 3.12.\n',
 'specialnames': 'Special method names\n'
                 '********************\n'
                 '\n'
                 'A class can implement certain operations that are invoked by '
                 'special\n'
                 'syntax (such as arithmetic operations or subscripting and '
                 'slicing) by\n'
                 'defining methods with special names. This is Python’s '
                 'approach to\n'
                 '*operator overloading*, allowing classes to define their own '
                 'behavior\n'
                 'with respect to language operators.  For instance, if a '
                 'class defines\n'
                 'a method named "__getitem__()", and "x" is an instance of '
                 'this class,\n'
                 'then "x[i]" is roughly equivalent to "type(x).__getitem__(x, '
                 'i)".\n'
                 'Except where mentioned, attempts to execute an operation '
                 'raise an\n'
                 'exception when no appropriate method is defined (typically\n'
                 '"AttributeError" or "TypeError").\n'
                 '\n'
                 'Setting a special method to "None" indicates that the '
                 'corresponding\n'
                 'operation is not available.  For example, if a class sets '
                 '"__iter__()"\n'
                 'to "None", the class is not iterable, so calling "iter()" on '
                 'its\n'
                 'instances will raise a "TypeError" (without falling back to\n'
                 '"__getitem__()"). [2]\n'
                 '\n'
                 'When implementing a class that emulates any built-in type, '
                 'it is\n'
                 'important that the emulation only be implemented to the '
                 'degree that it\n'
                 'makes sense for the object being modelled.  For example, '
                 'some\n'
                 'sequences may work well with retrieval of individual '
                 'elements, but\n'
                 'extracting a slice may not make sense.  (One example of this '
                 'is the\n'
                 '"NodeList" interface in the W3C’s Document Object Model.)\n'
                 '\n'
                 '\n'
                 'Basic customization\n'
                 '===================\n'
                 '\n'
                 'object.__new__(cls[, ...])\n'
                 '\n'
                 '   Called to create a new instance of class *cls*.  '
                 '"__new__()" is a\n'
                 '   static method (special-cased so you need not declare it '
                 'as such)\n'
                 '   that takes the class of which an instance was requested '
                 'as its\n'
                 '   first argument.  The remaining arguments are those passed '
                 'to the\n'
                 '   object constructor expression (the call to the class).  '
                 'The return\n'
                 '   value of "__new__()" should be the new object instance '
                 '(usually an\n'
                 '   instance of *cls*).\n'
                 '\n'
                 '   Typical implementations create a new instance of the '
                 'class by\n'
                 '   invoking the superclass’s "__new__()" method using\n'
                 '   "super().__new__(cls[, ...])" with appropriate arguments '
                 'and then\n'
                 '   modifying the newly created instance as necessary before '
                 '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'
                 '\n'
                 '   If "__new__()" does not return an instance of *cls*, then '
                 'the new\n'
                 '   instance’s "__init__()" method will not be invoked.\n'
                 '\n'
                 '   "__new__()" is intended mainly to allow subclasses of '
                 'immutable\n'
                 '   types (like int, str, or tuple) to customize instance '
                 'creation.  It\n'
                 '   is also commonly overridden in custom metaclasses in '
                 'order to\n'
                 '   customize class creation.\n'
                 '\n'
                 'object.__init__(self[, ...])\n'
                 '\n'
                 '   Called after the instance has been created (by '
                 '"__new__()"), but\n'
                 '   before it is returned to the caller.  The arguments are '
                 'those\n'
                 '   passed to the class constructor expression.  If a base '
                 'class has an\n'
                 '   "__init__()" method, the derived class’s "__init__()" '
                 'method, if\n'
                 '   any, must explicitly call it to ensure proper '
                 'initialization of the\n'
                 '   base class part of the instance; for example:\n'
                 '   "super().__init__([args...])".\n'
                 '\n'
                 '   Because "__new__()" and "__init__()" work together in '
                 'constructing\n'
                 '   objects ("__new__()" to create it, and "__init__()" to '
                 'customize\n'
                 '   it), no non-"None" value may be returned by "__init__()"; '
                 'doing so\n'
                 '   will cause a "TypeError" to be raised at runtime.\n'
                 '\n'
                 'object.__del__(self)\n'
                 '\n'
                 '   Called when the instance is about to be destroyed.  This '
                 'is also\n'
                 '   called a finalizer or (improperly) a destructor.  If a '
                 'base class\n'
                 '   has a "__del__()" method, the derived class’s "__del__()" '
                 'method,\n'
                 '   if any, must explicitly call it to ensure proper deletion '
                 'of the\n'
                 '   base class part of the instance.\n'
                 '\n'
                 '   It is possible (though not recommended!) for the '
                 '"__del__()" method\n'
                 '   to postpone destruction of the instance by creating a new '
                 'reference\n'
                 '   to it.  This is called object *resurrection*.  It is\n'
                 '   implementation-dependent whether "__del__()" is called a '
                 'second\n'
                 '   time when a resurrected object is about to be destroyed; '
                 'the\n'
                 '   current *CPython* implementation only calls it once.\n'
                 '\n'
                 '   It is not guaranteed that "__del__()" methods are called '
                 'for\n'
                 '   objects that still exist when the interpreter exits.\n'
                 '   "weakref.finalize" provides a straightforward way to '
                 'register a\n'
                 '   cleanup function to be called when an object is garbage '
                 'collected.\n'
                 '\n'
                 '   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'
                 '     only called when "x"’s reference count reaches zero.\n'
                 '\n'
                 '   **CPython implementation detail:** It is possible for a '
                 'reference\n'
                 '   cycle to prevent the reference count of an object from '
                 'going to\n'
                 '   zero.  In this case, the cycle will be later detected and '
                 'deleted\n'
                 '   by the *cyclic garbage collector*.  A common cause of '
                 'reference\n'
                 '   cycles is when an exception has been caught in a local '
                 'variable.\n'
                 '   The frame’s locals then reference the exception, which '
                 'references\n'
                 '   its own traceback, which references the locals of all '
                 'frames caught\n'
                 '   in the traceback.\n'
                 '\n'
                 '   See also: Documentation for the "gc" module.\n'
                 '\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'
                 '     * "__del__()" can be invoked when arbitrary code is '
                 'being\n'
                 '       executed, including from any arbitrary thread.  If '
                 '"__del__()"\n'
                 '       needs to take a lock or invoke any other blocking '
                 'resource, it\n'
                 '       may deadlock as the resource may already be taken by '
                 'the code\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'
                 '\n'
                 'object.__repr__(self)\n'
                 '\n'
                 '   Called by the "repr()" built-in function to compute the '
                 '“official”\n'
                 '   string representation of an object.  If at all possible, '
                 'this\n'
                 '   should look like a valid Python expression that could be '
                 'used to\n'
                 '   recreate an object with the same value (given an '
                 'appropriate\n'
                 '   environment).  If this is not possible, a string of the '
                 'form\n'
                 '   "<...some useful description...>" should be returned. The '
                 'return\n'
                 '   value must be a string object. If a class defines '
                 '"__repr__()" but\n'
                 '   not "__str__()", then "__repr__()" is also used when an '
                 '“informal”\n'
                 '   string representation of instances of that class is '
                 'required.\n'
                 '\n'
                 '   This is typically used for debugging, so it is important '
                 'that the\n'
                 '   representation is information-rich and unambiguous. A '
                 'default\n'
                 '   implementation is provided by the "object" class itself.\n'
                 '\n'
                 'object.__str__(self)\n'
                 '\n'
                 '   Called by "str(object)", the default "__format__()" '
                 'implementation,\n'
                 '   and the built-in function "print()", to compute the '
                 '“informal” or\n'
                 '   nicely printable string representation of an object.  The '
                 'return\n'
                 '   value must be a str object.\n'
                 '\n'
                 '   This method differs from "object.__repr__()" in that '
                 'there is no\n'
                 '   expectation that "__str__()" return a valid Python '
                 'expression: a\n'
                 '   more convenient or concise representation can be used.\n'
                 '\n'
                 '   The default implementation defined by the built-in type '
                 '"object"\n'
                 '   calls "object.__repr__()".\n'
                 '\n'
                 'object.__bytes__(self)\n'
                 '\n'
                 '   Called by bytes to compute a byte-string representation '
                 'of an\n'
                 '   object. This should return a "bytes" object. The "object" '
                 'class\n'
                 '   itself does not provide this method.\n'
                 '\n'
                 'object.__format__(self, format_spec)\n'
                 '\n'
                 '   Called by the "format()" built-in function, and by '
                 'extension,\n'
                 '   evaluation of formatted string literals and the '
                 '"str.format()"\n'
                 '   method, to produce a “formatted” string representation of '
                 'an\n'
                 '   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 '
                 'implementing\n'
                 '   "__format__()", however most classes will either '
                 'delegate\n'
                 '   formatting to one of the built-in types, or use a '
                 'similar\n'
                 '   formatting option syntax.\n'
                 '\n'
                 '   See Format Specification Mini-Language for a description '
                 'of the\n'
                 '   standard formatting syntax.\n'
                 '\n'
                 '   The return value must be a string object.\n'
                 '\n'
                 '   The default implementation by the "object" class should '
                 'be given an\n'
                 '   empty *format_spec* string. It delegates to "__str__()".\n'
                 '\n'
                 '   Changed in version 3.4: The __format__ method of "object" '
                 'itself\n'
                 '   raises a "TypeError" if passed any non-empty string.\n'
                 '\n'
                 '   Changed in version 3.7: "object.__format__(x, \'\')" is '
                 'now\n'
                 '   equivalent to "str(x)" rather than "format(str(x), '
                 '\'\')".\n'
                 '\n'
                 'object.__lt__(self, other)\n'
                 'object.__le__(self, other)\n'
                 'object.__eq__(self, other)\n'
                 'object.__ne__(self, other)\n'
                 'object.__gt__(self, other)\n'
                 'object.__ge__(self, other)\n'
                 '\n'
                 '   These are the so-called “rich comparison” methods. The\n'
                 '   correspondence between operator symbols and method names '
                 'is as\n'
                 '   follows: "x<y" calls "x.__lt__(y)", "x<=y" calls '
                 '"x.__le__(y)",\n'
                 '   "x==y" calls "x.__eq__(y)", "x!=y" calls "x.__ne__(y)", '
                 '"x>y" calls\n'
                 '   "x.__gt__(y)", and "x>=y" calls "x.__ge__(y)".\n'
                 '\n'
                 '   A rich comparison method may return the singleton '
                 '"NotImplemented"\n'
                 '   if it does not implement the operation for a given pair '
                 'of\n'
                 '   arguments. By convention, "False" and "True" are returned '
                 'for a\n'
                 '   successful comparison. However, these methods can return '
                 'any value,\n'
                 '   so if the comparison operator is used in a Boolean '
                 'context (e.g.,\n'
                 '   in the condition of an "if" statement), Python will call '
                 '"bool()"\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'
                 '   "functools.total_ordering()".\n'
                 '\n'
                 '   By default, the "object" class provides implementations '
                 'consistent\n'
                 '   with Value comparisons: equality compares according to '
                 'object\n'
                 '   identity, and order comparisons raise "TypeError". Each '
                 'default\n'
                 '   method may generate these results directly, but may also '
                 'return\n'
                 '   "NotImplemented".\n'
                 '\n'
                 '   See the paragraph on "__hash__()" for some important '
                 'notes on\n'
                 '   creating *hashable* objects which support custom '
                 'comparison\n'
                 '   operations and are usable as dictionary keys.\n'
                 '\n'
                 '   There are no swapped-argument versions of these methods '
                 '(to be used\n'
                 '   when the left argument does not support the operation but '
                 'the right\n'
                 '   argument does); rather, "__lt__()" and "__gt__()" are '
                 'each other’s\n'
                 '   reflection, "__le__()" and "__ge__()" are each other’s '
                 'reflection,\n'
                 '   and "__eq__()" and "__ne__()" are their own reflection. '
                 'If the\n'
                 '   operands are of different types, and the right operand’s '
                 'type is a\n'
                 '   direct or indirect subclass of the left operand’s type, '
                 'the\n'
                 '   reflected method of the right operand has priority, '
                 'otherwise the\n'
                 '   left operand’s method has priority.  Virtual subclassing '
                 'is not\n'
                 '   considered.\n'
                 '\n'
                 '   When no appropriate method returns any value other than\n'
                 '   "NotImplemented", the "==" and "!=" operators will fall '
                 'back to\n'
                 '   "is" and "is not", respectively.\n'
                 '\n'
                 'object.__hash__(self)\n'
                 '\n'
                 '   Called by built-in function "hash()" and for operations '
                 'on members\n'
                 '   of hashed collections including "set", "frozenset", and '
                 '"dict".\n'
                 '   The "__hash__()" method should return an integer. The '
                 'only required\n'
                 '   property is that objects which compare equal have the '
                 'same hash\n'
                 '   value; it is advised to mix together the hash values of '
                 'the\n'
                 '   components of the object that also play a part in '
                 'comparison of\n'
                 '   objects by packing them into a tuple and hashing the '
                 'tuple.\n'
                 '   Example:\n'
                 '\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'
                 '   If a class does not define an "__eq__()" method it should '
                 'not\n'
                 '   define a "__hash__()" operation either; if it defines '
                 '"__eq__()"\n'
                 '   but not "__hash__()", its instances will not be usable as '
                 'items in\n'
                 '   hashable collections.  If a class defines mutable objects '
                 'and\n'
                 '   implements an "__eq__()" method, it should not implement\n'
                 '   "__hash__()", since the implementation of *hashable* '
                 'collections\n'
                 '   requires that a key’s hash value is immutable (if the '
                 'object’s hash\n'
                 '   value changes, it will be in the wrong hash bucket).\n'
                 '\n'
                 '   User-defined classes have "__eq__()" and "__hash__()" '
                 'methods by\n'
                 '   default (inherited from the "object" class); with them, '
                 'all objects\n'
                 '   compare unequal (except with themselves) and '
                 '"x.__hash__()" returns\n'
                 '   an appropriate value such that "x == y" implies both that '
                 '"x is y"\n'
                 '   and "hash(x) == hash(y)".\n'
                 '\n'
                 '   A class that overrides "__eq__()" and does not define '
                 '"__hash__()"\n'
                 '   will have its "__hash__()" implicitly set to "None".  '
                 'When the\n'
                 '   "__hash__()" method of a class is "None", instances of '
                 'the class\n'
                 '   will raise an appropriate "TypeError" when a program '
                 'attempts to\n'
                 '   retrieve their hash value, and will also be correctly '
                 'identified as\n'
                 '   unhashable when checking "isinstance(obj,\n'
                 '   collections.abc.Hashable)".\n'
                 '\n'
                 '   If a class that overrides "__eq__()" needs to retain the\n'
                 '   implementation of "__hash__()" from a parent class, the '
                 'interpreter\n'
                 '   must be told this explicitly by setting "__hash__ =\n'
                 '   <ParentClass>.__hash__".\n'
                 '\n'
                 '   If a class that does not override "__eq__()" wishes to '
                 'suppress\n'
                 '   hash support, it should include "__hash__ = None" in the '
                 'class\n'
                 '   definition. A class which defines its own "__hash__()" '
                 'that\n'
                 '   explicitly raises a "TypeError" would be incorrectly '
                 'identified as\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://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 '
                 '(and it\n'
                 '     typically varies between 32-bit and 64-bit builds).See '
                 'also\n'
                 '     "PYTHONHASHSEED".\n'
                 '\n'
                 '   Changed in version 3.3: Hash randomization is enabled by '
                 'default.\n'
                 '\n'
                 'object.__bool__(self)\n'
                 '\n'
                 '   Called to implement truth value testing and the built-in '
                 'operation\n'
                 '   "bool()"; should return "False" or "True".  When this '
                 'method is not\n'
                 '   defined, "__len__()" is called, if it is defined, and the '
                 'object is\n'
                 '   considered true if its result is nonzero.  If a class '
                 'defines\n'
                 '   neither "__len__()" nor "__bool__()" (which is true of '
                 'the "object"\n'
                 '   class itself), all its instances are considered true.\n'
                 '\n'
                 '\n'
                 'Customizing attribute access\n'
                 '============================\n'
                 '\n'
                 'The following methods can be defined to customize the '
                 'meaning of\n'
                 'attribute access (use of, assignment to, or deletion of '
                 '"x.name") for\n'
                 'class instances.\n'
                 '\n'
                 'object.__getattr__(self, name)\n'
                 '\n'
                 '   Called when the default attribute access fails with an\n'
                 '   "AttributeError" (either "__getattribute__()" raises an\n'
                 '   "AttributeError" because *name* is not an instance '
                 'attribute or an\n'
                 '   attribute in the class tree for "self"; or "__get__()" of '
                 'a *name*\n'
                 '   property raises "AttributeError").  This method should '
                 'either\n'
                 '   return the (computed) attribute value or raise an '
                 '"AttributeError"\n'
                 '   exception. The "object" class itself does not provide '
                 'this method.\n'
                 '\n'
                 '   Note that if the attribute is found through the normal '
                 'mechanism,\n'
                 '   "__getattr__()" is not called.  (This is an intentional '
                 'asymmetry\n'
                 '   between "__getattr__()" and "__setattr__()".) This is '
                 'done both for\n'
                 '   efficiency reasons and because otherwise "__getattr__()" '
                 'would have\n'
                 '   no way to access other attributes of the instance.  Note '
                 'that at\n'
                 '   least for instance variables, you can take total control '
                 'by not\n'
                 '   inserting any values in the instance attribute dictionary '
                 '(but\n'
                 '   instead inserting them in another object).  See the\n'
                 '   "__getattribute__()" method below for a way to actually '
                 'get total\n'
                 '   control over attribute access.\n'
                 '\n'
                 'object.__getattribute__(self, name)\n'
                 '\n'
                 '   Called unconditionally to implement attribute accesses '
                 'for\n'
                 '   instances of the class. If the class also defines '
                 '"__getattr__()",\n'
                 '   the latter will not be called unless "__getattribute__()" '
                 'either\n'
                 '   calls it explicitly or raises an "AttributeError". This '
                 'method\n'
                 '   should return the (computed) attribute value or raise an\n'
                 '   "AttributeError" exception. In order to avoid infinite '
                 'recursion in\n'
                 '   this method, its implementation should always call the '
                 'base class\n'
                 '   method with the same name to access any attributes it '
                 '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'
                 'object.__setattr__(self, name, value)\n'
                 '\n'
                 '   Called when an attribute assignment is attempted.  This '
                 'is called\n'
                 '   instead of the normal mechanism (i.e. store the value in '
                 'the\n'
                 '   instance dictionary). *name* is the attribute name, '
                 '*value* is the\n'
                 '   value to be assigned to it.\n'
                 '\n'
                 '   If "__setattr__()" wants to assign to an instance '
                 'attribute, it\n'
                 '   should call the base class method with the same name, 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'
                 'object.__delattr__(self, name)\n'
                 '\n'
                 '   Like "__setattr__()" but for attribute deletion instead '
                 'of\n'
                 '   assignment.  This should only be implemented if "del '
                 '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'
                 'object.__dir__(self)\n'
                 '\n'
                 '   Called when "dir()" is called on the object. An iterable '
                 'must be\n'
                 '   returned. "dir()" converts the returned iterable to a '
                 'list and\n'
                 '   sorts it.\n'
                 '\n'
                 '\n'
                 'Customizing module attribute access\n'
                 '-----------------------------------\n'
                 '\n'
                 'Special names "__getattr__" and "__dir__" can be also used '
                 'to\n'
                 'customize access to module attributes. The "__getattr__" '
                 'function at\n'
                 'the module level should accept one argument which is the '
                 'name of an\n'
                 'attribute and return the computed value or raise an '
                 '"AttributeError".\n'
                 'If an attribute is not found on a module object through the '
                 'normal\n'
                 'lookup, i.e. "object.__getattribute__()", then "__getattr__" '
                 'is\n'
                 'searched in the module "__dict__" before raising an '
                 '"AttributeError".\n'
                 'If found, it is called with the attribute name and the '
                 'result is\n'
                 'returned.\n'
                 '\n'
                 'The "__dir__" function should accept no arguments, and '
                 'return an\n'
                 'iterable 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 '
                 '(setting\n'
                 'attributes, properties, etc.), one can set the "__class__" '
                 'attribute\n'
                 'of a module object to a subclass of "types.ModuleType". For '
                 'example:\n'
                 '\n'
                 '   import sys\n'
                 '   from types import ModuleType\n'
                 '\n'
                 '   class VerboseModule(ModuleType):\n'
                 '       def __repr__(self):\n'
                 "           return f'Verbose {self.__name__}'\n"
                 '\n'
                 '       def __setattr__(self, attr, value):\n'
                 "           print(f'Setting {attr}...')\n"
                 '           super().__setattr__(attr, value)\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'
                 'Changed in version 3.5: "__class__" module attribute is now '
                 'writable.\n'
                 '\n'
                 'Added in version 3.7: "__getattr__" and "__dir__" module '
                 'attributes.\n'
                 '\n'
                 'See also:\n'
                 '\n'
                 '  **PEP 562** - Module __getattr__ and __dir__\n'
                 '     Describes the "__getattr__" and "__dir__" functions on '
                 'modules.\n'
                 '\n'
                 '\n'
                 'Implementing Descriptors\n'
                 '------------------------\n'
                 '\n'
                 'The following methods only apply when an instance of the '
                 'class\n'
                 'containing the method (a so-called *descriptor* class) '
                 'appears in an\n'
                 '*owner* class (the descriptor must be in either the owner’s '
                 'class\n'
                 'dictionary or in the class dictionary for one of its '
                 'parents).  In the\n'
                 'examples below, “the attribute” refers to the attribute '
                 'whose name is\n'
                 'the key of the property in the owner class’ "__dict__".  The '
                 '"object"\n'
                 'class itself does not implement any of these protocols.\n'
                 '\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'
                 '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'
                 'object.__delete__(self, instance)\n'
                 '\n'
                 '   Called to delete the attribute on an instance *instance* '
                 'of the\n'
                 '   owner class.\n'
                 '\n'
                 'Instances of descriptors may also have the "__objclass__" '
                 'attribute\n'
                 'present:\n'
                 '\n'
                 'object.__objclass__\n'
                 '\n'
                 '   The attribute "__objclass__" is interpreted by the '
                 '"inspect" module\n'
                 '   as specifying the class where this object was defined '
                 '(setting this\n'
                 '   appropriately can assist in runtime introspection of '
                 'dynamic class\n'
                 '   attributes). For callables, it may indicate that an '
                 'instance of the\n'
                 '   given type (or a subclass) is expected or required as the '
                 'first\n'
                 '   positional argument (for example, CPython sets this '
                 'attribute for\n'
                 '   unbound methods that are implemented in C).\n'
                 '\n'
                 '\n'
                 'Invoking Descriptors\n'
                 '--------------------\n'
                 '\n'
                 'In general, a descriptor is an object attribute with '
                 '“binding\n'
                 'behavior”, one whose attribute access has been overridden by '
                 'methods\n'
                 'in the descriptor protocol:  "__get__()", "__set__()", and\n'
                 '"__delete__()". If any of those methods are defined for an '
                 'object, it\n'
                 'is said to be a descriptor.\n'
                 '\n'
                 'The default behavior for attribute access is to get, set, or '
                 'delete\n'
                 'the attribute from an object’s dictionary. For instance, '
                 '"a.x" has a\n'
                 'lookup chain starting with "a.__dict__[\'x\']", then\n'
                 '"type(a).__dict__[\'x\']", and continuing through the base '
                 'classes of\n'
                 '"type(a)" excluding metaclasses.\n'
                 '\n'
                 'However, if the looked-up value is an object defining one of '
                 'the\n'
                 'descriptor methods, then Python may override the default '
                 'behavior and\n'
                 'invoke the descriptor method instead.  Where this occurs in '
                 'the\n'
                 'precedence chain depends on which descriptor methods were '
                 'defined and\n'
                 'how they were called.\n'
                 '\n'
                 'The starting point for descriptor invocation is a binding, '
                 '"a.x". How\n'
                 'the arguments are assembled depends on "a":\n'
                 '\n'
                 'Direct Call\n'
                 '   The simplest and least common call is when user code '
                 'directly\n'
                 '   invokes a descriptor method:    "x.__get__(a)".\n'
                 '\n'
                 'Instance Binding\n'
                 '   If binding to an object instance, "a.x" is transformed '
                 'into the\n'
                 '   call: "type(a).__dict__[\'x\'].__get__(a, type(a))".\n'
                 '\n'
                 'Class Binding\n'
                 '   If binding to a class, "A.x" is transformed into the '
                 'call:\n'
                 '   "A.__dict__[\'x\'].__get__(None, A)".\n'
                 '\n'
                 'Super Binding\n'
                 '   A dotted lookup such as "super(A, a).x" searches\n'
                 '   "a.__class__.__mro__" for a base class "B" following "A" '
                 'and then\n'
                 '   returns "B.__dict__[\'x\'].__get__(a, A)".  If not a '
                 'descriptor, "x"\n'
                 '   is returned unchanged.\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'
                 'does not define "__get__()", then accessing the attribute '
                 'will return\n'
                 'the descriptor object itself unless there is a value in the '
                 'object’s\n'
                 'instance dictionary.  If the descriptor defines "__set__()" '
                 'and/or\n'
                 '"__delete__()", it is a data descriptor; if it defines '
                 'neither, it is\n'
                 'a non-data descriptor.  Normally, data descriptors 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'
                 '\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'
                 'Accordingly, instances cannot override the behavior of a '
                 'property.\n'
                 '\n'
                 '\n'
                 '__slots__\n'
                 '---------\n'
                 '\n'
                 '*__slots__* allow us to explicitly declare data members '
                 '(like\n'
                 '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. '
                 'Attribute\n'
                 'lookup speed can be significantly improved as well.\n'
                 '\n'
                 'object.__slots__\n'
                 '\n'
                 '   This class variable can be assigned a string, iterable, '
                 'or sequence\n'
                 '   of strings with variable names used by instances.  '
                 '*__slots__*\n'
                 '   reserves space for the declared variables and prevents '
                 'the\n'
                 '   automatic creation of "__dict__" and *__weakref__* for '
                 'each\n'
                 '   instance.\n'
                 '\n'
                 'Notes on using *__slots__*:\n'
                 '\n'
                 '* When inheriting from a class without *__slots__*, the '
                 '"__dict__" and\n'
                 '  *__weakref__* attribute of the instances will always be '
                 'accessible.\n'
                 '\n'
                 '* Without a "__dict__" variable, instances cannot be '
                 'assigned new\n'
                 '  variables not listed in the *__slots__* definition.  '
                 'Attempts to\n'
                 '  assign to an unlisted variable name raises '
                 '"AttributeError". If\n'
                 '  dynamic assignment of new variables is desired, then add\n'
                 '  "\'__dict__\'" to the sequence of strings in the '
                 '*__slots__*\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'
                 '\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'
                 '\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, instances of a child subclass '
                 'will get a\n'
                 '  "__dict__" and *__weakref__* unless the subclass also '
                 'defines\n'
                 '  *__slots__* (which should only contain names of any '
                 '*additional*\n'
                 '  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'
                 '  check may be added to prevent this.\n'
                 '\n'
                 '* "TypeError" will be raised if nonempty *__slots__* are '
                 'defined for a\n'
                 '  class derived from a ""variable-length" built-in type" '
                 'such as\n'
                 '  "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 '
                 'same\n'
                 '  *__slots__*.\n'
                 '\n'
                 '* Multiple inheritance with multiple slotted parent classes '
                 'can be\n'
                 '  used, but only one parent is allowed to have 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'
                 '\n'
                 '\n'
                 'Customizing class creation\n'
                 '==========================\n'
                 '\n'
                 'Whenever a class inherits from another class, '
                 '"__init_subclass__()" is\n'
                 'called on the parent class. This way, it is possible to '
                 'write classes\n'
                 'which change the behavior of subclasses. This is closely '
                 'related to\n'
                 'class decorators, but where class decorators only affect the '
                 'specific\n'
                 'class they’re applied to, "__init_subclass__" solely applies '
                 'to future\n'
                 'subclasses of the class defining the method.\n'
                 '\n'
                 'classmethod object.__init_subclass__(cls)\n'
                 '\n'
                 '   This method is called whenever the containing class is '
                 'subclassed.\n'
                 '   *cls* is then the new subclass. If defined as a normal '
                 'instance\n'
                 '   method, this method is implicitly converted to a class '
                 'method.\n'
                 '\n'
                 '   Keyword arguments which are given to a new class are '
                 'passed to the\n'
                 '   parent class’s "__init_subclass__". For compatibility '
                 'with other\n'
                 '   classes using "__init_subclass__", one should take out '
                 'the needed\n'
                 '   keyword arguments and pass the others over to the base '
                 'class, as\n'
                 '   in:\n'
                 '\n'
                 '      class Philosopher:\n'
                 '          def __init_subclass__(cls, /, default_name, '
                 '**kwargs):\n'
                 '              super().__init_subclass__(**kwargs)\n'
                 '              cls.default_name = default_name\n'
                 '\n'
                 '      class AustralianPhilosopher(Philosopher, '
                 'default_name="Bruce"):\n'
                 '          pass\n'
                 '\n'
                 '   The default implementation "object.__init_subclass__" '
                 '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 '
                 '"__init_subclass__"\n'
                 '     implementations. The actual metaclass (rather than the '
                 'explicit\n'
                 '     hint) can be accessed as "type(cls)".\n'
                 '\n'
                 '   Added in version 3.6.\n'
                 '\n'
                 'When a class is created, "type.__new__()" scans the class '
                 'variables\n'
                 'and makes callbacks to those with a "__set_name__()" hook.\n'
                 '\n'
                 'object.__set_name__(self, owner, name)\n'
                 '\n'
                 '   Automatically called at the time the owning class *owner* '
                 'is\n'
                 '   created. The object has been assigned to *name* in that '
                 'class:\n'
                 '\n'
                 '      class A:\n'
                 '          x = C()  # Automatically calls: x.__set_name__(A, '
                 "'x')\n"
                 '\n'
                 '   If the class variable is assigned after the class is '
                 'created,\n'
                 '   "__set_name__()" will not be called automatically. If '
                 'needed,\n'
                 '   "__set_name__()" can be called directly:\n'
                 '\n'
                 '      class A:\n'
                 '         pass\n'
                 '\n'
                 '      c = C()\n'
                 '      A.x = c                  # The hook is not called\n'
                 "      c.__set_name__(A, 'x')   # Manually invoke the hook\n"
                 '\n'
                 '   See Creating the class object for more details.\n'
                 '\n'
                 '   Added in version 3.6.\n'
                 '\n'
                 '\n'
                 'Metaclasses\n'
                 '-----------\n'
                 '\n'
                 'By default, classes are constructed using "type()". The '
                 'class body is\n'
                 'executed in a new namespace and the class name is bound '
                 'locally to the\n'
                 'result of "type(name, bases, namespace)".\n'
                 '\n'
                 'The class creation process can be customized by passing the\n'
                 '"metaclass" keyword argument in the class definition line, '
                 'or by\n'
                 'inheriting from an existing class that included such an '
                 'argument. In\n'
                 'the following example, both "MyClass" and "MySubclass" are '
                 'instances\n'
                 'of "Meta":\n'
                 '\n'
                 '   class Meta(type):\n'
                 '       pass\n'
                 '\n'
                 '   class MyClass(metaclass=Meta):\n'
                 '       pass\n'
                 '\n'
                 '   class MySubclass(MyClass):\n'
                 '       pass\n'
                 '\n'
                 'Any other keyword arguments that are specified in the class '
                 'definition\n'
                 'are passed through to all metaclass operations described '
                 'below.\n'
                 '\n'
                 'When a class definition is executed, the following steps '
                 'occur:\n'
                 '\n'
                 '* MRO entries are resolved;\n'
                 '\n'
                 '* the appropriate metaclass is determined;\n'
                 '\n'
                 '* the class namespace is prepared;\n'
                 '\n'
                 '* the class body is executed;\n'
                 '\n'
                 '* the class object is created.\n'
                 '\n'
                 '\n'
                 'Resolving MRO entries\n'
                 '---------------------\n'
                 '\n'
                 'object.__mro_entries__(self, bases)\n'
                 '\n'
                 '   If a base that appears in a class definition is not an '
                 'instance of\n'
                 '   "type", then an "__mro_entries__()" method is searched on '
                 'the base.\n'
                 '   If an "__mro_entries__()" method is found, the base is '
                 'substituted\n'
                 '   with the result of a call to "__mro_entries__()" when '
                 'creating the\n'
                 '   class. The method is called with the original bases tuple '
                 'passed to\n'
                 '   the *bases* parameter, and must return a tuple of classes '
                 'that will\n'
                 '   be used instead of the base. The returned tuple may be '
                 'empty: in\n'
                 '   these cases, the original base is ignored.\n'
                 '\n'
                 'See also:\n'
                 '\n'
                 '  "types.resolve_bases()"\n'
                 '     Dynamically resolve bases that are not instances of '
                 '"type".\n'
                 '\n'
                 '  "types.get_original_bases()"\n'
                 '     Retrieve a class’s “original bases” prior to '
                 'modifications by\n'
                 '     "__mro_entries__()".\n'
                 '\n'
                 '  **PEP 560**\n'
                 '     Core support for typing module and generic types.\n'
                 '\n'
                 '\n'
                 'Determining the appropriate metaclass\n'
                 '-------------------------------------\n'
                 '\n'
                 'The appropriate metaclass for a class definition is '
                 'determined as\n'
                 'follows:\n'
                 '\n'
                 '* if no bases and no explicit metaclass are given, then '
                 '"type()" is\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'
                 '\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'
                 '\n'
                 'The most derived metaclass is selected from the explicitly '
                 'specified\n'
                 'metaclass (if any) and the metaclasses (i.e. "type(cls)") of '
                 'all\n'
                 'specified base classes. The most derived metaclass is one '
                 'which is a\n'
                 'subtype of *all* of these candidate metaclasses. If none of '
                 'the\n'
                 'candidate metaclasses meets that criterion, then the class '
                 'definition\n'
                 'will fail with "TypeError".\n'
                 '\n'
                 '\n'
                 'Preparing the class namespace\n'
                 '-----------------------------\n'
                 '\n'
                 'Once the appropriate metaclass has been identified, then the '
                 'class\n'
                 'namespace is prepared. If the metaclass has a "__prepare__" '
                 'attribute,\n'
                 'it is called as "namespace = metaclass.__prepare__(name, '
                 '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'
                 '\n'
                 'If the metaclass has no "__prepare__" attribute, then the '
                 'class\n'
                 'namespace is initialised as an empty ordered mapping.\n'
                 '\n'
                 'See also:\n'
                 '\n'
                 '  **PEP 3115** - Metaclasses in Python 3000\n'
                 '     Introduced the "__prepare__" namespace hook\n'
                 '\n'
                 '\n'
                 'Executing the class body\n'
                 '------------------------\n'
                 '\n'
                 'The class body is executed (approximately) as "exec(body, '
                 'globals(),\n'
                 'namespace)". The key difference from a normal call to '
                 '"exec()" is that\n'
                 'lexical scoping allows the class body (including any '
                 'methods) to\n'
                 'reference names from the current and outer scopes when the '
                 'class\n'
                 'definition occurs inside a function.\n'
                 '\n'
                 'However, even when the class definition occurs inside the '
                 'function,\n'
                 'methods defined inside the class still cannot see names '
                 'defined at the\n'
                 'class scope. Class variables must be accessed through the '
                 'first\n'
                 'parameter of instance or class methods, or through the '
                 'implicit\n'
                 'lexically scoped "__class__" reference described in the next '
                 'section.\n'
                 '\n'
                 '\n'
                 'Creating the class object\n'
                 '-------------------------\n'
                 '\n'
                 'Once the class namespace has been populated by executing the '
                 'class\n'
                 'body, the class object is created by calling '
                 '"metaclass(name, bases,\n'
                 'namespace, **kwds)" (the additional keywords passed here are '
                 'the same\n'
                 'as those passed to "__prepare__").\n'
                 '\n'
                 'This class object is the one that will be referenced by the '
                 'zero-\n'
                 'argument form of "super()". "__class__" is an implicit '
                 'closure\n'
                 'reference created by the compiler if any methods in a class '
                 'body refer\n'
                 'to either "__class__" or "super". This allows the zero '
                 'argument form\n'
                 'of "super()" to correctly identify the class being defined '
                 'based on\n'
                 'lexical scoping, while the class or instance that was used '
                 'to make the\n'
                 'current call is identified based on the first argument '
                 'passed to the\n'
                 'method.\n'
                 '\n'
                 '**CPython implementation detail:** In CPython 3.6 and later, '
                 'the\n'
                 '"__class__" cell is passed to the metaclass as a '
                 '"__classcell__" entry\n'
                 'in the class namespace. If present, this must be propagated '
                 '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'
                 '\n'
                 'When using the default metaclass "type", or any metaclass '
                 'that\n'
                 'ultimately calls "type.__new__", the following additional\n'
                 'customization steps are invoked after creating the class '
                 'object:\n'
                 '\n'
                 '1. The "type.__new__" method collects all of the attributes '
                 'in the\n'
                 '   class namespace that define a "__set_name__()" method;\n'
                 '\n'
                 '2. Those "__set_name__" methods are called with the class '
                 'being\n'
                 '   defined and the assigned name of that particular '
                 'attribute;\n'
                 '\n'
                 '3. The "__init_subclass__()" hook is called on the immediate '
                 'parent of\n'
                 '   the new class in its method resolution order.\n'
                 '\n'
                 'After the class object is created, it is passed to the '
                 'class\n'
                 'decorators included in the class definition (if any) and the '
                 'resulting\n'
                 'object is bound in the local namespace as the defined '
                 'class.\n'
                 '\n'
                 'When a new class is created by "type.__new__", the object '
                 'provided as\n'
                 'the namespace parameter is copied to a new ordered mapping '
                 'and the\n'
                 'original object is discarded. The new copy is wrapped in a '
                 'read-only\n'
                 'proxy, which becomes the "__dict__" attribute of the class '
                 'object.\n'
                 '\n'
                 'See also:\n'
                 '\n'
                 '  **PEP 3135** - New super\n'
                 '     Describes the implicit "__class__" closure reference\n'
                 '\n'
                 '\n'
                 'Uses for metaclasses\n'
                 '--------------------\n'
                 '\n'
                 'The potential uses for metaclasses are boundless. Some ideas '
                 'that have\n'
                 'been explored include enum, logging, interface checking, '
                 'automatic\n'
                 'delegation, automatic property creation, proxies, '
                 'frameworks, and\n'
                 'automatic resource locking/synchronization.\n'
                 '\n'
                 '\n'
                 'Customizing instance and subclass checks\n'
                 '========================================\n'
                 '\n'
                 'The following methods are used to override the default '
                 'behavior of the\n'
                 '"isinstance()" and "issubclass()" built-in functions.\n'
                 '\n'
                 'In particular, the metaclass "abc.ABCMeta" implements these '
                 'methods in\n'
                 'order to allow the addition of Abstract Base Classes (ABCs) '
                 'as\n'
                 '“virtual base classes” to any class or type (including '
                 'built-in\n'
                 'types), including other ABCs.\n'
                 '\n'
                 'type.__instancecheck__(self, instance)\n'
                 '\n'
                 '   Return true if *instance* should be considered a (direct '
                 'or\n'
                 '   indirect) instance of *class*. If defined, called to '
                 'implement\n'
                 '   "isinstance(instance, class)".\n'
                 '\n'
                 'type.__subclasscheck__(self, subclass)\n'
                 '\n'
                 '   Return true if *subclass* should be considered a (direct '
                 'or\n'
                 '   indirect) subclass of *class*.  If defined, called to '
                 'implement\n'
                 '   "issubclass(subclass, class)".\n'
                 '\n'
                 'Note that these methods are looked up on the type '
                 '(metaclass) of a\n'
                 'class.  They cannot be defined as class methods in the '
                 'actual class.\n'
                 'This is consistent with the lookup of special methods that '
                 'are called\n'
                 'on instances, only in this case the instance is itself a '
                 'class.\n'
                 '\n'
                 'See also:\n'
                 '\n'
                 '  **PEP 3119** - Introducing Abstract Base Classes\n'
                 '     Includes the specification for customizing '
                 '"isinstance()" and\n'
                 '     "issubclass()" behavior through "__instancecheck__()" '
                 'and\n'
                 '     "__subclasscheck__()", with motivation for this '
                 'functionality in\n'
                 '     the context of adding Abstract Base Classes (see the '
                 '"abc"\n'
                 '     module) to the language.\n'
                 '\n'
                 '\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'
                 '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'
                 'Emulating callable objects\n'
                 '==========================\n'
                 '\n'
                 'object.__call__(self[, args...])\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, ...)". The "object" class '
                 'itself does\n'
                 '   not provide this method.\n'
                 '\n'
                 '\n'
                 'Emulating container types\n'
                 '=========================\n'
                 '\n'
                 'The following methods can be defined to implement container '
                 'objects.\n'
                 'None of them are provided by the "object" class itself. '
                 'Containers\n'
                 'usually are *sequences* (such as "lists" or "tuples") or '
                 '*mappings*\n'
                 '(like *dictionaries*), but can represent other containers as '
                 'well.\n'
                 'The first set of methods is used either to emulate a '
                 'sequence or to\n'
                 'emulate a mapping; the difference is that for a sequence, '
                 'the\n'
                 'allowable keys should be the integers *k* for which "0 <= k '
                 '< N" where\n'
                 '*N* is the length of the sequence, or "slice" objects, which '
                 'define a\n'
                 'range of items.  It is also recommended that mappings '
                 'provide the\n'
                 'methods "keys()", "values()", "items()", "get()", '
                 '"clear()",\n'
                 '"setdefault()", "pop()", "popitem()", "copy()", and '
                 '"update()"\n'
                 'behaving similar to those for Python’s standard "dictionary" '
                 'objects.\n'
                 'The "collections.abc" module provides a "MutableMapping" '
                 '*abstract\n'
                 'base class* to help create those methods from a base set of\n'
                 '"__getitem__()", "__setitem__()", "__delitem__()", and '
                 '"keys()".\n'
                 'Mutable sequences should provide methods "append()", '
                 '"count()",\n'
                 '"index()", "extend()", "insert()", "pop()", "remove()", '
                 '"reverse()"\n'
                 'and "sort()", like Python standard "list" objects. Finally, '
                 'sequence\n'
                 'types should implement addition (meaning concatenation) and\n'
                 'multiplication (meaning repetition) by defining the methods\n'
                 '"__add__()", "__radd__()", "__iadd__()", "__mul__()", '
                 '"__rmul__()" and\n'
                 '"__imul__()" described below; they should not define other '
                 'numerical\n'
                 'operators.  It is recommended that both mappings and '
                 'sequences\n'
                 'implement the "__contains__()" method to allow efficient use '
                 'of the\n'
                 '"in" operator; for mappings, "in" should search the '
                 'mapping’s keys;\n'
                 'for sequences, it should search through the values.  It is '
                 'further\n'
                 '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'
                 '\n'
                 'object.__len__(self)\n'
                 '\n'
                 '   Called to implement the built-in function "len()".  '
                 'Should return\n'
                 '   the length of the object, an integer ">=" 0.  Also, an '
                 'object that\n'
                 '   doesn’t define a "__bool__()" method and whose '
                 '"__len__()" method\n'
                 '   returns zero is considered to be false in a Boolean '
                 'context.\n'
                 '\n'
                 '   **CPython implementation detail:** In CPython, the length '
                 'is\n'
                 '   required to be at most "sys.maxsize". If the length is '
                 'larger than\n'
                 '   "sys.maxsize" some features (such as "len()") may raise\n'
                 '   "OverflowError".  To prevent raising "OverflowError" by '
                 'truth value\n'
                 '   testing, an object must define a "__bool__()" method.\n'
                 '\n'
                 'object.__length_hint__(self)\n'
                 '\n'
                 '   Called to implement "operator.length_hint()". Should '
                 'return an\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'
                 '   method is purely an optimization and is never required '
                 'for\n'
                 '   correctness.\n'
                 '\n'
                 '   Added in version 3.4.\n'
                 '\n'
                 'Note:\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'
                 '\n'
                 '     a[slice(1, 2, None)] = b\n'
                 '\n'
                 '  and so forth.  Missing slice items are always filled in '
                 'with "None".\n'
                 '\n'
                 'object.__getitem__(self, key)\n'
                 '\n'
                 '   Called to implement evaluation of "self[key]". For '
                 '*sequence*\n'
                 '   types, the accepted keys should be integers. Optionally, '
                 'they may\n'
                 '   support "slice" objects as well.  Negative index support '
                 'is also\n'
                 '   optional. If *key* is of an inappropriate type, '
                 '"TypeError" may be\n'
                 '   raised; if *key* is a value outside the set of indexes '
                 'for the\n'
                 '   sequence (after any special interpretation of negative '
                 'values),\n'
                 '   "IndexError" should be raised. For *mapping* types, if '
                 '*key* is\n'
                 '   missing (not in the container), "KeyError" should be '
                 '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'
                 'object.__setitem__(self, key, value)\n'
                 '\n'
                 '   Called to implement assignment to "self[key]".  Same note '
                 'as for\n'
                 '   "__getitem__()".  This should only be implemented for '
                 'mappings if\n'
                 '   the objects support changes to the values for keys, or if '
                 'new keys\n'
                 '   can be added, or for sequences if elements can be '
                 'replaced.  The\n'
                 '   same exceptions should be raised for improper *key* '
                 'values as for\n'
                 '   the "__getitem__()" method.\n'
                 '\n'
                 'object.__delitem__(self, key)\n'
                 '\n'
                 '   Called to implement deletion of "self[key]".  Same note '
                 'as for\n'
                 '   "__getitem__()".  This should only be implemented for '
                 'mappings if\n'
                 '   the objects support removal of keys, or for sequences if '
                 'elements\n'
                 '   can be removed from the sequence.  The same exceptions '
                 'should be\n'
                 '   raised for improper *key* values as for the '
                 '"__getitem__()" method.\n'
                 '\n'
                 'object.__missing__(self, key)\n'
                 '\n'
                 '   Called by "dict"."__getitem__()" to implement "self[key]" '
                 'for dict\n'
                 '   subclasses when key is not in the dictionary.\n'
                 '\n'
                 'object.__iter__(self)\n'
                 '\n'
                 '   This method is called when an *iterator* is required for '
                 'a\n'
                 '   container. This method should return a new iterator '
                 'object that can\n'
                 '   iterate over all the objects in the container.  For '
                 'mappings, it\n'
                 '   should iterate over the keys of the container.\n'
                 '\n'
                 'object.__reversed__(self)\n'
                 '\n'
                 '   Called (if present) by the "reversed()" built-in to '
                 'implement\n'
                 '   reverse iteration.  It should return a new iterator '
                 'object that\n'
                 '   iterates over all the objects in the container in reverse '
                 'order.\n'
                 '\n'
                 '   If the "__reversed__()" method is not provided, the '
                 '"reversed()"\n'
                 '   built-in will fall back to using the sequence protocol '
                 '("__len__()"\n'
                 '   and "__getitem__()").  Objects that support the sequence '
                 'protocol\n'
                 '   should only provide "__reversed__()" if they can provide '
                 'an\n'
                 '   implementation that is more efficient than the one '
                 'provided by\n'
                 '   "reversed()".\n'
                 '\n'
                 'The membership test operators ("in" and "not in") are '
                 'normally\n'
                 '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'
                 '\n'
                 'object.__contains__(self, item)\n'
                 '\n'
                 '   Called to implement membership test operators.  Should '
                 'return true\n'
                 '   if *item* is in *self*, false otherwise.  For mapping '
                 'objects, this\n'
                 '   should consider the keys of the mapping rather than the '
                 'values or\n'
                 '   the key-item pairs.\n'
                 '\n'
                 '   For objects that don’t define "__contains__()", the '
                 'membership test\n'
                 '   first tries iteration via "__iter__()", then the old '
                 'sequence\n'
                 '   iteration protocol via "__getitem__()", see this section '
                 'in the\n'
                 '   language reference.\n'
                 '\n'
                 '\n'
                 'Emulating numeric types\n'
                 '=======================\n'
                 '\n'
                 'The following methods can be defined to emulate numeric '
                 'objects.\n'
                 'Methods corresponding to operations that are not supported '
                 'by the\n'
                 'particular kind of number implemented (e.g., bitwise '
                 'operations for\n'
                 'non-integral numbers) should be left undefined.\n'
                 '\n'
                 'object.__add__(self, other)\n'
                 'object.__sub__(self, other)\n'
                 'object.__mul__(self, other)\n'
                 'object.__matmul__(self, other)\n'
                 'object.__truediv__(self, other)\n'
                 'object.__floordiv__(self, other)\n'
                 'object.__mod__(self, other)\n'
                 'object.__divmod__(self, other)\n'
                 'object.__pow__(self, other[, modulo])\n'
                 'object.__lshift__(self, other)\n'
                 'object.__rshift__(self, other)\n'
                 'object.__and__(self, other)\n'
                 'object.__xor__(self, other)\n'
                 'object.__or__(self, other)\n'
                 '\n'
                 '   These methods are called to implement the binary '
                 'arithmetic\n'
                 '   operations ("+", "-", "*", "@", "/", "//", "%", '
                 '"divmod()",\n'
                 '   "pow()", "**", "<<", ">>", "&", "^", "|").  For instance, '
                 'to\n'
                 '   evaluate the expression "x + y", where *x* is an instance '
                 'of a\n'
                 '   class that has an "__add__()" method, "type(x).__add__(x, '
                 'y)" is\n'
                 '   called.  The "__divmod__()" method should be the '
                 'equivalent to\n'
                 '   using "__floordiv__()" and "__mod__()"; it should not be '
                 'related to\n'
                 '   "__truediv__()".  Note that "__pow__()" should be defined '
                 'to accept\n'
                 '   an optional third argument if the ternary version of the '
                 'built-in\n'
                 '   "pow()" function is to be supported.\n'
                 '\n'
                 '   If one of those methods does not support the operation '
                 'with the\n'
                 '   supplied arguments, it should return "NotImplemented".\n'
                 '\n'
                 'object.__radd__(self, other)\n'
                 'object.__rsub__(self, other)\n'
                 'object.__rmul__(self, other)\n'
                 'object.__rmatmul__(self, other)\n'
                 'object.__rtruediv__(self, other)\n'
                 'object.__rfloordiv__(self, other)\n'
                 'object.__rmod__(self, other)\n'
                 'object.__rdivmod__(self, other)\n'
                 'object.__rpow__(self, other[, modulo])\n'
                 'object.__rlshift__(self, other)\n'
                 'object.__rrshift__(self, other)\n'
                 'object.__rand__(self, other)\n'
                 'object.__rxor__(self, other)\n'
                 'object.__ror__(self, other)\n'
                 '\n'
                 '   These methods are called to implement the binary '
                 'arithmetic\n'
                 '   operations ("+", "-", "*", "@", "/", "//", "%", '
                 '"divmod()",\n'
                 '   "pow()", "**", "<<", ">>", "&", "^", "|") with reflected '
                 '(swapped)\n'
                 '   operands.  These functions are only called if the '
                 'operands are of\n'
                 '   different types, when the left operand does not support '
                 'the\n'
                 '   corresponding operation [3], or the right operand’s class '
                 'is\n'
                 '   derived from the left operand’s class. [4] For instance, '
                 'to\n'
                 '   evaluate the expression "x - y", where *y* is an instance '
                 'of a\n'
                 '   class that has an "__rsub__()" method, '
                 '"type(y).__rsub__(y, x)" is\n'
                 '   called if "type(x).__sub__(x, y)" returns '
                 '"NotImplemented" or\n'
                 '   "type(y)" is a subclass of "type(x)". [5]\n'
                 '\n'
                 '   Note that ternary "pow()" will not try calling '
                 '"__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'
                 'object.__iadd__(self, other)\n'
                 'object.__isub__(self, other)\n'
                 'object.__imul__(self, other)\n'
                 'object.__imatmul__(self, other)\n'
                 'object.__itruediv__(self, other)\n'
                 'object.__ifloordiv__(self, other)\n'
                 'object.__imod__(self, other)\n'
                 'object.__ipow__(self, other[, modulo])\n'
                 'object.__ilshift__(self, other)\n'
                 'object.__irshift__(self, other)\n'
                 'object.__iand__(self, other)\n'
                 'object.__ixor__(self, other)\n'
                 'object.__ior__(self, other)\n'
                 '\n'
                 '   These methods are called to implement the augmented '
                 'arithmetic\n'
                 '   assignments ("+=", "-=", "*=", "@=", "/=", "//=", "%=", '
                 '"**=",\n'
                 '   "<<=", ">>=", "&=", "^=", "|=").  These methods should '
                 'attempt to\n'
                 '   do the operation in-place (modifying *self*) and return '
                 'the result\n'
                 '   (which could be, but does not have to be, *self*).  If a '
                 'specific\n'
                 '   method is not defined, or if that method returns '
                 '"NotImplemented",\n'
                 '   the augmented assignment falls back to the normal '
                 'methods.  For\n'
                 '   instance, if *x* is an instance of a class with an '
                 '"__iadd__()"\n'
                 '   method, "x += y" is equivalent to "x = x.__iadd__(y)" . '
                 'If\n'
                 '   "__iadd__()" does not exist, or if "x.__iadd__(y)" '
                 'returns\n'
                 '   "NotImplemented", "x.__add__(y)" and "y.__radd__(x)" are\n'
                 '   considered, as with the evaluation of "x + y". In '
                 'certain\n'
                 '   situations, augmented assignment can result in unexpected '
                 'errors\n'
                 '   (see Why does a_tuple[i] += [‘item’] raise an exception '
                 'when the\n'
                 '   addition works?), but this behavior is in fact part of '
                 'the data\n'
                 '   model.\n'
                 '\n'
                 'object.__neg__(self)\n'
                 'object.__pos__(self)\n'
                 'object.__abs__(self)\n'
                 'object.__invert__(self)\n'
                 '\n'
                 '   Called to implement the unary arithmetic operations ("-", '
                 '"+",\n'
                 '   "abs()" and "~").\n'
                 '\n'
                 'object.__complex__(self)\n'
                 'object.__int__(self)\n'
                 'object.__float__(self)\n'
                 '\n'
                 '   Called to implement the built-in functions "complex()", '
                 '"int()" and\n'
                 '   "float()".  Should return a value of the appropriate '
                 'type.\n'
                 '\n'
                 'object.__index__(self)\n'
                 '\n'
                 '   Called to implement "operator.index()", and whenever '
                 'Python needs\n'
                 '   to losslessly convert the numeric object to an integer '
                 'object (such\n'
                 '   as in slicing, or in the built-in "bin()", "hex()" and '
                 '"oct()"\n'
                 '   functions). Presence of this method indicates that the '
                 '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'
                 '\n'
                 'object.__round__(self[, ndigits])\n'
                 'object.__trunc__(self)\n'
                 'object.__floor__(self)\n'
                 'object.__ceil__(self)\n'
                 '\n'
                 '   Called to implement the built-in function "round()" and '
                 '"math"\n'
                 '   functions "trunc()", "floor()" and "ceil()". Unless '
                 '*ndigits* is\n'
                 '   passed to "__round__()" all these methods should return '
                 'the value\n'
                 '   of the object truncated to an "Integral" (typically an '
                 '"int").\n'
                 '\n'
                 '   Changed in version 3.14: "int()" no longer delegates to '
                 'the\n'
                 '   "__trunc__()" method.\n'
                 '\n'
                 '\n'
                 'With Statement Context Managers\n'
                 '===============================\n'
                 '\n'
                 'A *context manager* is an object that defines the runtime '
                 'context to\n'
                 'be established when executing a "with" statement. The '
                 'context manager\n'
                 'handles the entry into, and the exit from, the desired '
                 'runtime context\n'
                 'for the execution of the block of code.  Context managers '
                 'are normally\n'
                 'invoked using the "with" statement (described in section The '
                 'with\n'
                 'statement), but can also be used by directly invoking their '
                 'methods.\n'
                 '\n'
                 'Typical uses of context managers include saving and '
                 'restoring various\n'
                 'kinds of global state, locking and unlocking resources, '
                 'closing opened\n'
                 'files, etc.\n'
                 '\n'
                 'For more information on context managers, see Context '
                 'Manager Types.\n'
                 'The "object" class itself does not provide the context '
                 'manager\n'
                 'methods.\n'
                 '\n'
                 'object.__enter__(self)\n'
                 '\n'
                 '   Enter the runtime context related to this object. The '
                 '"with"\n'
                 '   statement will bind this method’s return value to the '
                 'target(s)\n'
                 '   specified in the "as" clause of the statement, if any.\n'
                 '\n'
                 'object.__exit__(self, exc_type, exc_value, traceback)\n'
                 '\n'
                 '   Exit the runtime context related to this object. The '
                 'parameters\n'
                 '   describe the exception that caused the context to be '
                 'exited. If the\n'
                 '   context was exited without an exception, all three '
                 'arguments will\n'
                 '   be "None".\n'
                 '\n'
                 '   If an exception is supplied, and the method wishes to '
                 'suppress the\n'
                 '   exception (i.e., prevent it from being propagated), it '
                 'should\n'
                 '   return a true value. Otherwise, the exception will be '
                 'processed\n'
                 '   normally upon exit from this method.\n'
                 '\n'
                 '   Note that "__exit__()" methods should not reraise the '
                 'passed-in\n'
                 '   exception; this is the caller’s responsibility.\n'
                 '\n'
                 'See also:\n'
                 '\n'
                 '  **PEP 343** - The “with” statement\n'
                 '     The specification, background, and examples for the '
                 'Python "with"\n'
                 '     statement.\n'
                 '\n'
                 '\n'
                 'Customizing positional arguments in class pattern matching\n'
                 '==========================================================\n'
                 '\n'
                 'When using a class name in a pattern, positional arguments '
                 'in the\n'
                 'pattern are not allowed by default, i.e. "case MyClass(x, '
                 'y)" is\n'
                 'typically invalid without special support in "MyClass". To '
                 'be able to\n'
                 'use that kind of pattern, the class needs to define a '
                 '*__match_args__*\n'
                 'attribute.\n'
                 '\n'
                 'object.__match_args__\n'
                 '\n'
                 '   This class variable can be assigned a tuple of strings. '
                 'When this\n'
                 '   class is used in a class pattern with positional '
                 'arguments, each\n'
                 '   positional argument will be converted into a keyword '
                 'argument,\n'
                 '   using the corresponding value in *__match_args__* as the '
                 'keyword.\n'
                 '   The absence of this attribute is equivalent to setting it '
                 'to "()".\n'
                 '\n'
                 'For example, if "MyClass.__match_args__" is "("left", '
                 '"center",\n'
                 '"right")" that means that "case MyClass(x, y)" is equivalent '
                 'to "case\n'
                 'MyClass(left=x, center=y)". Note that the number of '
                 'arguments in the\n'
                 'pattern must be smaller than or equal to the number of '
                 'elements in\n'
                 '*__match_args__*; if it is larger, the pattern match attempt '
                 'will\n'
                 'raise a "TypeError".\n'
                 '\n'
                 'Added in version 3.10.\n'
                 '\n'
                 'See also:\n'
                 '\n'
                 '  **PEP 634** - Structural Pattern Matching\n'
                 '     The specification for the Python "match" statement.\n'
                 '\n'
                 '\n'
                 'Emulating buffer types\n'
                 '======================\n'
                 '\n'
                 'The buffer protocol provides a way for Python objects to '
                 'expose\n'
                 'efficient access to a low-level memory array. This protocol '
                 'is\n'
                 'implemented by builtin types such as "bytes" and '
                 '"memoryview", and\n'
                 'third-party libraries may define additional buffer types.\n'
                 '\n'
                 'While buffer types are usually implemented in C, it is also '
                 'possible\n'
                 'to implement the protocol in Python.\n'
                 '\n'
                 'object.__buffer__(self, flags)\n'
                 '\n'
                 '   Called when a buffer is requested from *self* (for '
                 'example, by the\n'
                 '   "memoryview" constructor). The *flags* argument is an '
                 'integer\n'
                 '   representing the kind of buffer requested, affecting for '
                 'example\n'
                 '   whether the returned buffer is read-only or writable.\n'
                 '   "inspect.BufferFlags" provides a convenient way to '
                 'interpret the\n'
                 '   flags. The method must return a "memoryview" object.\n'
                 '\n'
                 'object.__release_buffer__(self, buffer)\n'
                 '\n'
                 '   Called when a buffer is no longer needed. The *buffer* '
                 'argument is\n'
                 '   a "memoryview" object that was previously returned by\n'
                 '   "__buffer__()". The method must release any resources '
                 'associated\n'
                 '   with the buffer. This method should return "None". Buffer '
                 'objects\n'
                 '   that do not need to perform any cleanup are not required '
                 'to\n'
                 '   implement this method.\n'
                 '\n'
                 'Added in version 3.12.\n'
                 '\n'
                 'See also:\n'
                 '\n'
                 '  **PEP 688** - Making the buffer protocol accessible in '
                 'Python\n'
                 '     Introduces the Python "__buffer__" and '
                 '"__release_buffer__"\n'
                 '     methods.\n'
                 '\n'
                 '  "collections.abc.Buffer"\n'
                 '     ABC for buffer types.\n'
                 '\n'
                 '\n'
                 'Annotations\n'
                 '===========\n'
                 '\n'
                 'Functions, classes, and modules may contain *annotations*, '
                 'which are a\n'
                 'way to associate information (usually *type hints*) with a '
                 'symbol.\n'
                 '\n'
                 'object.__annotations__\n'
                 '\n'
                 '   This attribute contains the annotations for an object. It '
                 'is lazily\n'
                 '   evaluated, so accessing the attribute may execute '
                 'arbitrary code\n'
                 '   and raise exceptions. If evaluation is successful, the '
                 'attribute is\n'
                 '   set to a dictionary mapping from variable names to '
                 'annotations.\n'
                 '\n'
                 '   Changed in version 3.14: Annotations are now lazily '
                 'evaluated.\n'
                 '\n'
                 'object.__annotate__(format)\n'
                 '\n'
                 '   An *annotate function*. Returns a new dictionary object '
                 'mapping\n'
                 '   attribute/parameter names to their annotation values.\n'
                 '\n'
                 '   Takes a format parameter specifying the format in which '
                 'annotations\n'
                 '   values should be provided. It must be a member of the\n'
                 '   "annotationlib.Format" enum, or an integer with a value\n'
                 '   corresponding to a member of the enum.\n'
                 '\n'
                 '   If an annotate function doesn’t support the requested '
                 'format, it\n'
                 '   must raise "NotImplementedError". Annotate functions must '
                 'always\n'
                 '   support "VALUE" format; they must not raise '
                 '"NotImplementedError()"\n'
                 '   when called with this format.\n'
                 '\n'
                 '   When called with  "VALUE" format, an annotate function '
                 'may raise\n'
                 '   "NameError"; it must not raise "NameError" when called '
                 'requesting\n'
                 '   any other format.\n'
                 '\n'
                 '   If an object does not have any annotations, '
                 '"__annotate__" should\n'
                 '   preferably be set to "None" (it can’t be deleted), rather '
                 'than set\n'
                 '   to a function that returns an empty dict.\n'
                 '\n'
                 '   Added in version 3.14.\n'
                 '\n'
                 'See also:\n'
                 '\n'
                 '  **PEP 649** — Deferred evaluation of annotation using '
                 'descriptors\n'
                 '     Introduces lazy evaluation of annotations and the '
                 '"__annotate__"\n'
                 '     function.\n'
                 '\n'
                 '\n'
                 'Special method lookup\n'
                 '=====================\n'
                 '\n'
                 'For custom classes, implicit invocations of special methods '
                 'are only\n'
                 'guaranteed to work correctly if defined on an object’s type, '
                 'not in\n'
                 'the object’s instance dictionary.  That behaviour is the '
                 'reason why\n'
                 'the following code raises an exception:\n'
                 '\n'
                 '   >>> class C:\n'
                 '   ...     pass\n'
                 '   ...\n'
                 '   >>> c = C()\n'
                 '   >>> c.__len__ = lambda: 5\n'
                 '   >>> len(c)\n'
                 '   Traceback (most recent call last):\n'
                 '     File "<stdin>", line 1, in <module>\n'
                 "   TypeError: object of type 'C' has no len()\n"
                 '\n'
                 'The rationale behind this behaviour lies with a number of '
                 'special\n'
                 'methods such as "__hash__()" and "__repr__()" that are '
                 'implemented by\n'
                 'all objects, including type objects. If the implicit lookup '
                 'of these\n'
                 'methods used the conventional lookup process, they would '
                 'fail when\n'
                 'invoked on the type object itself:\n'
                 '\n'
                 '   >>> 1 .__hash__() == hash(1)\n'
                 '   True\n'
                 '   >>> int.__hash__() == hash(int)\n'
                 '   Traceback (most recent call last):\n'
                 '     File "<stdin>", line 1, in <module>\n'
                 "   TypeError: descriptor '__hash__' of 'int' object needs an "
                 'argument\n'
                 '\n'
                 'Incorrectly attempting to invoke an unbound method of a '
                 'class in this\n'
                 'way is sometimes referred to as ‘metaclass confusion’, and '
                 'is avoided\n'
                 'by bypassing the instance when looking up special methods:\n'
                 '\n'
                 '   >>> type(1).__hash__(1) == hash(1)\n'
                 '   True\n'
                 '   >>> type(int).__hash__(int) == hash(int)\n'
                 '   True\n'
                 '\n'
                 'In addition to bypassing any instance attributes in the '
                 'interest of\n'
                 'correctness, implicit special method lookup generally also '
                 'bypasses\n'
                 'the "__getattribute__()" method even of the object’s '
                 'metaclass:\n'
                 '\n'
                 '   >>> class Meta(type):\n'
                 '   ...     def __getattribute__(*args):\n'
                 '   ...         print("Metaclass getattribute invoked")\n'
                 '   ...         return type.__getattribute__(*args)\n'
                 '   ...\n'
                 '   >>> class C(object, metaclass=Meta):\n'
                 '   ...     def __len__(self):\n'
                 '   ...         return 10\n'
                 '   ...     def __getattribute__(*args):\n'
                 '   ...         print("Class getattribute invoked")\n'
                 '   ...         return object.__getattribute__(*args)\n'
                 '   ...\n'
                 '   >>> c = C()\n'
                 '   >>> c.__len__()                 # Explicit lookup via '
                 'instance\n'
                 '   Class getattribute invoked\n'
                 '   10\n'
                 '   >>> type(c).__len__(c)          # Explicit lookup via '
                 'type\n'
                 '   Metaclass getattribute invoked\n'
                 '   10\n'
                 '   >>> len(c)                      # Implicit lookup\n'
                 '   10\n'
                 '\n'
                 'Bypassing the "__getattribute__()" machinery in this fashion '
                 'provides\n'
                 'significant scope for speed optimisations within the '
                 'interpreter, at\n'
                 'the cost of some flexibility in the handling of special '
                 'methods (the\n'
                 'special method *must* be set on the class object itself in '
                 'order to be\n'
                 'consistently invoked by the interpreter).\n',
 'string-methods': 'String Methods\n'
                   '**************\n'
                   '\n'
                   'Strings implement all of the common sequence operations, '
                   'along with\n'
                   'the additional methods described below.\n'
                   '\n'
                   'Strings also support two styles of string formatting, one '
                   'providing a\n'
                   'large degree of flexibility and customization (see '
                   '"str.format()",\n'
                   'Format String Syntax and Custom String Formatting) and the '
                   'other based\n'
                   'on C "printf" style formatting that handles a narrower '
                   'range of types\n'
                   'and is slightly harder to use correctly, but is often '
                   'faster for the\n'
                   'cases it can handle (printf-style String Formatting).\n'
                   '\n'
                   'The Text Processing Services section of the standard '
                   'library covers a\n'
                   'number of other modules that provide various text related '
                   'utilities\n'
                   '(including regular expression support in the "re" '
                   'module).\n'
                   '\n'
                   'str.capitalize()\n'
                   '\n'
                   '   Return a copy of the string with its first character '
                   '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'
                   'str.casefold()\n'
                   '\n'
                   '   Return a casefolded copy of the string. Casefolded '
                   'strings may be\n'
                   '   used for caseless matching.\n'
                   '\n'
                   '   Casefolding is similar to lowercasing but more '
                   'aggressive because\n'
                   '   it is intended to remove all case distinctions in a '
                   'string. For\n'
                   '   example, the German lowercase letter "\'ß\'" is '
                   'equivalent to ""ss"".\n'
                   '   Since it is already lowercase, "lower()" would do '
                   'nothing to "\'ß\'";\n'
                   '   "casefold()" converts it to ""ss"".\n'
                   '\n'
                   '   The casefolding algorithm is described in section 3.13 '
                   '‘Default\n'
                   '   Case Folding’ of the Unicode Standard.\n'
                   '\n'
                   '   Added in version 3.3.\n'
                   '\n'
                   'str.center(width[, fillchar])\n'
                   '\n'
                   '   Return centered in a string of length *width*. Padding '
                   'is done\n'
                   '   using the specified *fillchar* (default is an ASCII '
                   'space). The\n'
                   '   original string is returned if *width* is less than or '
                   'equal to\n'
                   '   "len(s)".\n'
                   '\n'
                   'str.count(sub[, start[, end]])\n'
                   '\n'
                   '   Return the number of non-overlapping occurrences of '
                   'substring *sub*\n'
                   '   in the range [*start*, *end*].  Optional arguments '
                   '*start* and\n'
                   '   *end* are interpreted as in slice notation.\n'
                   '\n'
                   '   If *sub* is empty, returns the number of empty strings '
                   'between\n'
                   '   characters which is the length of the string plus one.\n'
                   '\n'
                   "str.encode(encoding='utf-8', errors='strict')\n"
                   '\n'
                   '   Return the string encoded to "bytes".\n'
                   '\n'
                   '   *encoding* defaults to "\'utf-8\'"; see Standard '
                   'Encodings for\n'
                   '   possible values.\n'
                   '\n'
                   '   *errors* controls how encoding errors are handled. If '
                   '"\'strict\'"\n'
                   '   (the default), a "UnicodeError" exception is raised. '
                   'Other possible\n'
                   '   values are "\'ignore\'", "\'replace\'", '
                   '"\'xmlcharrefreplace\'",\n'
                   '   "\'backslashreplace\'" and any other name registered '
                   'via\n'
                   '   "codecs.register_error()". See Error Handlers for '
                   'details.\n'
                   '\n'
                   '   For performance reasons, the value of *errors* is not '
                   'checked for\n'
                   '   validity unless an encoding error actually occurs, '
                   'Python\n'
                   '   Development Mode is enabled or a debug build is used.\n'
                   '\n'
                   '   Changed in version 3.1: Added support for keyword '
                   'arguments.\n'
                   '\n'
                   '   Changed in version 3.9: The value of the *errors* '
                   'argument is now\n'
                   '   checked in Python Development Mode and in debug mode.\n'
                   '\n'
                   'str.endswith(suffix[, start[, end]])\n'
                   '\n'
                   '   Return "True" if the string ends with the specified '
                   '*suffix*,\n'
                   '   otherwise return "False".  *suffix* can also be a tuple '
                   'of suffixes\n'
                   '   to look for.  With optional *start*, test beginning at '
                   'that\n'
                   '   position.  With optional *end*, stop comparing at that '
                   'position.\n'
                   '\n'
                   'str.expandtabs(tabsize=8)\n'
                   '\n'
                   '   Return a copy of the string where all tab characters '
                   'are replaced\n'
                   '   by one or more spaces, depending on the current column '
                   'and the\n'
                   '   given tab size.  Tab positions occur every *tabsize* '
                   'characters\n'
                   '   (default is 8, giving tab positions at columns 0, 8, 16 '
                   'and so on).\n'
                   '   To expand the string, the current column is set to zero '
                   'and the\n'
                   '   string is examined character by character.  If the '
                   'character is a\n'
                   '   tab ("\\t"), one or more space characters are inserted '
                   'in the result\n'
                   '   until the current column is equal to the next tab '
                   'position. (The\n'
                   '   tab character itself is not copied.)  If the character '
                   'is a newline\n'
                   '   ("\\n") or return ("\\r"), it is copied and the current '
                   'column is\n'
                   '   reset to zero.  Any other character is copied unchanged '
                   'and the\n'
                   '   current column is incremented by one regardless of how '
                   'the\n'
                   '   character is represented when printed.\n'
                   '\n'
                   "   >>> '01\\t012\\t0123\\t01234'.expandtabs()\n"
                   "   '01      012     0123    01234'\n"
                   "   >>> '01\\t012\\t0123\\t01234'.expandtabs(4)\n"
                   "   '01  012 0123    01234'\n"
                   '\n'
                   'str.find(sub[, start[, end]])\n'
                   '\n'
                   '   Return the lowest index in the string where substring '
                   '*sub* is\n'
                   '   found within the slice "s[start:end]".  Optional '
                   'arguments *start*\n'
                   '   and *end* are interpreted as in slice notation.  Return '
                   '"-1" if\n'
                   '   *sub* is not found.\n'
                   '\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'
                   "        >>> 'Py' in 'Python'\n"
                   '        True\n'
                   '\n'
                   'str.format(*args, **kwargs)\n'
                   '\n'
                   '   Perform a string formatting operation.  The string on '
                   'which this\n'
                   '   method is called can contain literal text or '
                   'replacement fields\n'
                   '   delimited by braces "{}".  Each replacement field '
                   'contains either\n'
                   '   the numeric index of a positional argument, or the name '
                   'of a\n'
                   '   keyword argument.  Returns a copy of the string where '
                   'each\n'
                   '   replacement field is replaced with the string value of '
                   'the\n'
                   '   corresponding argument.\n'
                   '\n'
                   '   >>> "The sum of 1 + 2 is {0}".format(1+2)\n'
                   "   'The sum of 1 + 2 is 3'\n"
                   '\n'
                   '   See Format String Syntax for a description of the '
                   'various\n'
                   '   formatting options that can be specified in format '
                   'strings.\n'
                   '\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 '
                   'sets the\n'
                   '     "LC_CTYPE" locale to the "LC_NUMERIC" locale to '
                   'decode\n'
                   '     "decimal_point" and "thousands_sep" fields of '
                   '"localeconv()" if\n'
                   '     they are non-ASCII or longer than 1 byte, and the '
                   '"LC_NUMERIC"\n'
                   '     locale is different than the "LC_CTYPE" locale.  This '
                   'temporary\n'
                   '     change affects other threads.\n'
                   '\n'
                   '   Changed in version 3.7: When formatting a number with '
                   'the "n" type,\n'
                   '   the function sets temporarily the "LC_CTYPE" locale to '
                   'the\n'
                   '   "LC_NUMERIC" locale in some cases.\n'
                   '\n'
                   'str.format_map(mapping, /)\n'
                   '\n'
                   '   Similar to "str.format(**mapping)", except that '
                   '"mapping" is used\n'
                   '   directly and not copied to a "dict".  This is useful if '
                   'for example\n'
                   '   "mapping" is a dict subclass:\n'
                   '\n'
                   '   >>> class Default(dict):\n'
                   '   ...     def __missing__(self, key):\n'
                   '   ...         return key\n'
                   '   ...\n'
                   "   >>> '{name} was born in "
                   "{country}'.format_map(Default(name='Guido'))\n"
                   "   'Guido was born in country'\n"
                   '\n'
                   '   Added in version 3.2.\n'
                   '\n'
                   'str.index(sub[, start[, end]])\n'
                   '\n'
                   '   Like "find()", but raise "ValueError" when the '
                   'substring is not\n'
                   '   found.\n'
                   '\n'
                   'str.isalnum()\n'
                   '\n'
                   '   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 '
                   '"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 '
                   'alphabetic and\n'
                   '   there is at least one character, "False" otherwise.  '
                   'Alphabetic\n'
                   '   characters are those characters defined in the Unicode '
                   'character\n'
                   '   database as “Letter”, i.e., those with general category '
                   'property\n'
                   '   being one of “Lm”, “Lt”, “Lu”, “Ll”, or “Lo”.  Note '
                   'that this is\n'
                   '   different from the Alphabetic property defined in the '
                   'section 4.10\n'
                   '   ‘Letters, Alphabetic, and Ideographic’ of the Unicode '
                   'Standard.\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'
                   '\n'
                   '   Added 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'
                   '\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'
                   '\n'
                   'str.isidentifier()\n'
                   '\n'
                   '   Return "True" if the string is a valid identifier '
                   'according to the\n'
                   '   language definition, section Identifiers and keywords.\n'
                   '\n'
                   '   "keyword.iskeyword()" can be used to test whether '
                   'string "s" is a\n'
                   '   reserved 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'
                   '\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'
                   '   Numeric_Type=Numeric.\n'
                   '\n'
                   'str.isprintable()\n'
                   '\n'
                   '   Return "True" if all characters in the string are '
                   'printable or the\n'
                   '   string is empty, "False" otherwise.  Nonprintable '
                   'characters are\n'
                   '   those characters defined in the Unicode character '
                   'database as\n'
                   '   “Other” or “Separator”, excepting the ASCII space '
                   '(0x20) which is\n'
                   '   considered printable.  (Note that printable characters '
                   'in this\n'
                   '   context are those which should not be escaped when '
                   '"repr()" is\n'
                   '   invoked on a string.  It has no bearing on the handling '
                   'of strings\n'
                   '   written to "sys.stdout" or "sys.stderr".)\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'
                   'str.istitle()\n'
                   '\n'
                   '   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'
                   '\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'
                   'str.join(iterable)\n'
                   '\n'
                   '   Return a string which is the concatenation of the '
                   'strings in\n'
                   '   *iterable*. A "TypeError" will be raised if there are '
                   'any non-\n'
                   '   string values in *iterable*, including "bytes" '
                   'objects.  The\n'
                   '   separator between elements is the string providing this '
                   'method.\n'
                   '\n'
                   'str.ljust(width[, fillchar])\n'
                   '\n'
                   '   Return the string left justified in a string of length '
                   '*width*.\n'
                   '   Padding is done using the specified *fillchar* (default '
                   'is an ASCII\n'
                   '   space). The original string is returned if *width* is '
                   'less than or\n'
                   '   equal to "len(s)".\n'
                   '\n'
                   'str.lower()\n'
                   '\n'
                   '   Return a copy of the string with all the cased '
                   'characters [4]\n'
                   '   converted to lowercase.\n'
                   '\n'
                   '   The lowercasing algorithm used is described in section '
                   '3.13\n'
                   '   ‘Default Case Folding’ of the Unicode Standard.\n'
                   '\n'
                   'str.lstrip([chars])\n'
                   '\n'
                   '   Return a copy of the string with leading characters '
                   'removed.  The\n'
                   '   *chars* argument is a string specifying the set of '
                   'characters to be\n'
                   '   removed.  If omitted or "None", the *chars* argument '
                   'defaults to\n'
                   '   removing whitespace.  The *chars* argument is not a '
                   'prefix; rather,\n'
                   '   all combinations of its values are stripped:\n'
                   '\n'
                   "      >>> '   spacious   '.lstrip()\n"
                   "      'spacious   '\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'
                   'static str.maketrans(x[, y[, z]])\n'
                   '\n'
                   '   This static method returns a translation table usable '
                   'for\n'
                   '   "str.translate()".\n'
                   '\n'
                   '   If there is only one argument, it must be a dictionary '
                   'mapping\n'
                   '   Unicode ordinals (integers) or characters (strings of '
                   'length 1) to\n'
                   '   Unicode ordinals, strings (of arbitrary lengths) or '
                   '"None".\n'
                   '   Character keys will then be converted to ordinals.\n'
                   '\n'
                   '   If there are two arguments, they must be strings of '
                   'equal length,\n'
                   '   and in the resulting dictionary, each character in x '
                   'will be mapped\n'
                   '   to the character at the same position in y.  If there '
                   'is a third\n'
                   '   argument, it must be a string, whose characters will be '
                   'mapped to\n'
                   '   "None" in the result.\n'
                   '\n'
                   'str.partition(sep)\n'
                   '\n'
                   '   Split the string at the first occurrence of *sep*, and '
                   'return a\n'
                   '   3-tuple containing the part before the separator, the '
                   'separator\n'
                   '   itself, and the part after the separator.  If the '
                   'separator is not\n'
                   '   found, return a 3-tuple containing the string itself, '
                   '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'
                   '   Added 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'
                   '   Added in version 3.9.\n'
                   '\n'
                   'str.replace(old, new, count=-1)\n'
                   '\n'
                   '   Return a copy of the string with all occurrences of '
                   'substring *old*\n'
                   '   replaced by *new*.  If *count* is given, only the first '
                   '*count*\n'
                   '   occurrences are replaced. If *count* is not specified '
                   'or "-1", then\n'
                   '   all occurrences are replaced.\n'
                   '\n'
                   '   Changed in version 3.13: *count* is now supported as a '
                   'keyword\n'
                   '   argument.\n'
                   '\n'
                   'str.rfind(sub[, start[, end]])\n'
                   '\n'
                   '   Return the highest index in the string where substring '
                   '*sub* is\n'
                   '   found, such that *sub* is contained within '
                   '"s[start:end]".\n'
                   '   Optional arguments *start* and *end* are interpreted as '
                   'in slice\n'
                   '   notation.  Return "-1" on failure.\n'
                   '\n'
                   'str.rindex(sub[, start[, end]])\n'
                   '\n'
                   '   Like "rfind()" but raises "ValueError" when the '
                   'substring *sub* is\n'
                   '   not found.\n'
                   '\n'
                   'str.rjust(width[, fillchar])\n'
                   '\n'
                   '   Return the string right justified in a string of length '
                   '*width*.\n'
                   '   Padding is done using the specified *fillchar* (default '
                   'is an ASCII\n'
                   '   space). The original string is returned if *width* is '
                   'less than or\n'
                   '   equal to "len(s)".\n'
                   '\n'
                   'str.rpartition(sep)\n'
                   '\n'
                   '   Split the string at the last occurrence of *sep*, and '
                   'return a\n'
                   '   3-tuple containing the part before the separator, the '
                   'separator\n'
                   '   itself, and the part after the separator.  If the '
                   'separator is not\n'
                   '   found, return a 3-tuple containing two empty strings, '
                   'followed by\n'
                   '   the string itself.\n'
                   '\n'
                   'str.rsplit(sep=None, maxsplit=-1)\n'
                   '\n'
                   '   Return a list of the words in the string, using *sep* '
                   'as the\n'
                   '   delimiter string. If *maxsplit* is given, at most '
                   '*maxsplit* splits\n'
                   '   are done, the *rightmost* ones.  If *sep* is not '
                   'specified or\n'
                   '   "None", any whitespace string is a separator.  Except '
                   'for splitting\n'
                   '   from the right, "rsplit()" behaves like "split()" which '
                   'is\n'
                   '   described in detail below.\n'
                   '\n'
                   'str.rstrip([chars])\n'
                   '\n'
                   '   Return a copy of the string with trailing characters '
                   'removed.  The\n'
                   '   *chars* argument is a string specifying the set of '
                   'characters to be\n'
                   '   removed.  If omitted or "None", the *chars* argument '
                   'defaults to\n'
                   '   removing whitespace.  The *chars* argument is not a '
                   'suffix; rather,\n'
                   '   all combinations of its values are stripped:\n'
                   '\n'
                   "      >>> '   spacious   '.rstrip()\n"
                   "      '   spacious'\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'
                   '\n'
                   '   Return a list of the words in the string, using *sep* '
                   'as the\n'
                   '   delimiter string.  If *maxsplit* is given, at most '
                   '*maxsplit*\n'
                   '   splits are done (thus, the list will have at most '
                   '"maxsplit+1"\n'
                   '   elements).  If *maxsplit* is not specified or "-1", '
                   'then there is\n'
                   '   no limit on the number of splits (all possible splits '
                   'are made).\n'
                   '\n'
                   '   If *sep* is given, consecutive delimiters are not '
                   'grouped together\n'
                   '   and are deemed to delimit empty strings (for example,\n'
                   '   "\'1,,2\'.split(\',\')" returns "[\'1\', \'\', '
                   '\'2\']").  The *sep* argument\n'
                   '   may consist of multiple characters as a single '
                   'delimiter (to split\n'
                   '   with multiple delimiters, use "re.split()"). Splitting '
                   'an empty\n'
                   '   string with a specified separator returns "[\'\']".\n'
                   '\n'
                   '   For example:\n'
                   '\n'
                   "      >>> '1,2,3'.split(',')\n"
                   "      ['1', '2', '3']\n"
                   "      >>> '1,2,3'.split(',', maxsplit=1)\n"
                   "      ['1', '2,3']\n"
                   "      >>> '1,2,,3,'.split(',')\n"
                   "      ['1', '2', '', '3', '']\n"
                   "      >>> '1<>2<>3<4'.split('<>')\n"
                   "      ['1', '2', '3<4']\n"
                   '\n'
                   '   If *sep* is not specified or is "None", a different '
                   'splitting\n'
                   '   algorithm is applied: runs of consecutive whitespace '
                   'are regarded\n'
                   '   as a single separator, and the result will contain no '
                   'empty strings\n'
                   '   at the start or end if the string has leading or '
                   'trailing\n'
                   '   whitespace.  Consequently, splitting an empty string or '
                   'a string\n'
                   '   consisting of just whitespace with a "None" separator '
                   'returns "[]".\n'
                   '\n'
                   '   For example:\n'
                   '\n'
                   "      >>> '1 2 3'.split()\n"
                   "      ['1', '2', '3']\n"
                   "      >>> '1 2 3'.split(maxsplit=1)\n"
                   "      ['1', '2 3']\n"
                   "      >>> '   1   2   3   '.split()\n"
                   "      ['1', '2', '3']\n"
                   '\n'
                   'str.splitlines(keepends=False)\n'
                   '\n'
                   '   Return a list of the lines in the string, breaking at '
                   'line\n'
                   '   boundaries.  Line breaks are not included in the '
                   'resulting list\n'
                   '   unless *keepends* is given and true.\n'
                   '\n'
                   '   This method splits on the following line boundaries.  '
                   'In\n'
                   '   particular, the boundaries are a superset of *universal '
                   'newlines*.\n'
                   '\n'
                   '   '
                   '+-------------------------+-------------------------------+\n'
                   '   | Representation          | '
                   'Description                   |\n'
                   '   '
                   '|=========================|===============================|\n'
                   '   | "\\n"                    | Line '
                   'Feed                     |\n'
                   '   '
                   '+-------------------------+-------------------------------+\n'
                   '   | "\\r"                    | Carriage '
                   'Return               |\n'
                   '   '
                   '+-------------------------+-------------------------------+\n'
                   '   | "\\r\\n"                  | Carriage Return + Line '
                   'Feed   |\n'
                   '   '
                   '+-------------------------+-------------------------------+\n'
                   '   | "\\v" or "\\x0b"          | Line '
                   'Tabulation               |\n'
                   '   '
                   '+-------------------------+-------------------------------+\n'
                   '   | "\\f" or "\\x0c"          | Form '
                   'Feed                     |\n'
                   '   '
                   '+-------------------------+-------------------------------+\n'
                   '   | "\\x1c"                  | File '
                   'Separator                |\n'
                   '   '
                   '+-------------------------+-------------------------------+\n'
                   '   | "\\x1d"                  | Group '
                   'Separator               |\n'
                   '   '
                   '+-------------------------+-------------------------------+\n'
                   '   | "\\x1e"                  | Record '
                   'Separator              |\n'
                   '   '
                   '+-------------------------+-------------------------------+\n'
                   '   | "\\x85"                  | Next Line (C1 Control '
                   'Code)   |\n'
                   '   '
                   '+-------------------------+-------------------------------+\n'
                   '   | "\\u2028"                | Line '
                   'Separator                |\n'
                   '   '
                   '+-------------------------+-------------------------------+\n'
                   '   | "\\u2029"                | Paragraph '
                   'Separator           |\n'
                   '   '
                   '+-------------------------+-------------------------------+\n'
                   '\n'
                   '   Changed in version 3.2: "\\v" and "\\f" added to list '
                   'of line\n'
                   '   boundaries.\n'
                   '\n'
                   '   For example:\n'
                   '\n'
                   "      >>> 'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines()\n"
                   "      ['ab c', '', 'de fg', 'kl']\n"
                   "      >>> 'ab c\\n\\nde "
                   "fg\\rkl\\r\\n'.splitlines(keepends=True)\n"
                   "      ['ab c\\n', '\\n', 'de fg\\r', 'kl\\r\\n']\n"
                   '\n'
                   '   Unlike "split()" when a delimiter string *sep* is '
                   'given, this\n'
                   '   method returns an empty list for the empty string, and '
                   'a terminal\n'
                   '   line break does not result in an extra line:\n'
                   '\n'
                   '      >>> "".splitlines()\n'
                   '      []\n'
                   '      >>> "One line\\n".splitlines()\n'
                   "      ['One line']\n"
                   '\n'
                   '   For comparison, "split(\'\\n\')" gives:\n'
                   '\n'
                   "      >>> ''.split('\\n')\n"
                   "      ['']\n"
                   "      >>> 'Two lines\\n'.split('\\n')\n"
                   "      ['Two lines', '']\n"
                   '\n'
                   'str.startswith(prefix[, start[, end]])\n'
                   '\n'
                   '   Return "True" if string starts with the *prefix*, '
                   'otherwise return\n'
                   '   "False". *prefix* can also be a tuple of prefixes to '
                   'look for.\n'
                   '   With optional *start*, test string beginning at that '
                   'position.\n'
                   '   With optional *end*, stop comparing string at that '
                   'position.\n'
                   '\n'
                   'str.strip([chars])\n'
                   '\n'
                   '   Return a copy of the string with the leading and '
                   'trailing\n'
                   '   characters removed. The *chars* argument is a string '
                   'specifying the\n'
                   '   set of characters to be removed. If omitted or "None", '
                   'the *chars*\n'
                   '   argument defaults to removing whitespace. The *chars* '
                   'argument is\n'
                   '   not a prefix or suffix; rather, all combinations of its '
                   'values are\n'
                   '   stripped:\n'
                   '\n'
                   "      >>> '   spacious   '.strip()\n"
                   "      'spacious'\n"
                   "      >>> 'www.example.com'.strip('cmowz.')\n"
                   "      'example'\n"
                   '\n'
                   '   The outermost leading and trailing *chars* argument '
                   'values are\n'
                   '   stripped from the string. Characters are removed from '
                   'the leading\n'
                   '   end until reaching a string character that is not '
                   'contained in the\n'
                   '   set of characters in *chars*. A similar action takes '
                   'place on the\n'
                   '   trailing end. For example:\n'
                   '\n'
                   "      >>> comment_string = '#....... Section 3.2.1 Issue "
                   "#32 .......'\n"
                   "      >>> comment_string.strip('.#! ')\n"
                   "      'Section 3.2.1 Issue #32'\n"
                   '\n'
                   'str.swapcase()\n'
                   '\n'
                   '   Return a copy of the string with uppercase characters '
                   'converted to\n'
                   '   lowercase and vice versa. Note that it is not '
                   'necessarily true that\n'
                   '   "s.swapcase().swapcase() == s".\n'
                   '\n'
                   'str.title()\n'
                   '\n'
                   '   Return a titlecased version of the string where words '
                   'start with an\n'
                   '   uppercase character and the remaining characters are '
                   'lowercase.\n'
                   '\n'
                   '   For example:\n'
                   '\n'
                   "      >>> 'Hello world'.title()\n"
                   "      'Hello World'\n"
                   '\n'
                   '   The algorithm uses a simple language-independent '
                   'definition of a\n'
                   '   word as groups of consecutive letters.  The definition '
                   'works in\n'
                   '   many contexts but it means that apostrophes in '
                   'contractions and\n'
                   '   possessives form word boundaries, which may not be the '
                   'desired\n'
                   '   result:\n'
                   '\n'
                   '      >>> "they\'re bill\'s friends from the UK".title()\n'
                   '      "They\'Re Bill\'S Friends From The Uk"\n'
                   '\n'
                   '   The "string.capwords()" function does not have this '
                   'problem, as it\n'
                   '   splits words on spaces only.\n'
                   '\n'
                   '   Alternatively, a workaround for apostrophes can be '
                   'constructed\n'
                   '   using regular expressions:\n'
                   '\n'
                   '      >>> import re\n'
                   '      >>> def titlecase(s):\n'
                   '      ...     return re.sub(r"[A-Za-z]+(\'[A-Za-z]+)?",\n'
                   '      ...                   lambda mo: '
                   'mo.group(0).capitalize(),\n'
                   '      ...                   s)\n'
                   '      ...\n'
                   '      >>> titlecase("they\'re bill\'s friends.")\n'
                   '      "They\'re Bill\'s Friends."\n'
                   '\n'
                   'str.translate(table)\n'
                   '\n'
                   '   Return a copy of the string in which each character has '
                   'been mapped\n'
                   '   through the given translation table.  The table must be '
                   'an object\n'
                   '   that implements indexing via "__getitem__()", typically '
                   'a *mapping*\n'
                   '   or *sequence*.  When indexed by a Unicode ordinal (an '
                   'integer), the\n'
                   '   table object can do any of the following: return a '
                   'Unicode ordinal\n'
                   '   or a string, to map the character to one or more other '
                   'characters;\n'
                   '   return "None", to delete the character from the return '
                   'string; or\n'
                   '   raise a "LookupError" exception, to map the character '
                   'to itself.\n'
                   '\n'
                   '   You can use "str.maketrans()" to create a translation '
                   'map from\n'
                   '   character-to-character mappings in different formats.\n'
                   '\n'
                   '   See also the "codecs" module for a more flexible '
                   'approach to custom\n'
                   '   character mappings.\n'
                   '\n'
                   'str.upper()\n'
                   '\n'
                   '   Return a copy of the string with all the cased '
                   'characters [4]\n'
                   '   converted to uppercase.  Note that '
                   '"s.upper().isupper()" might be\n'
                   '   "False" if "s" contains uncased characters or if the '
                   'Unicode\n'
                   '   category of the resulting character(s) is not “Lu” '
                   '(Letter,\n'
                   '   uppercase), but e.g. “Lt” (Letter, titlecase).\n'
                   '\n'
                   '   The uppercasing algorithm used is described in section '
                   '3.13\n'
                   '   ‘Default Case Folding’ of the Unicode Standard.\n'
                   '\n'
                   'str.zfill(width)\n'
                   '\n'
                   '   Return a copy of the string left filled with ASCII '
                   '"\'0\'" digits to\n'
                   '   make a string of length *width*. A leading sign prefix\n'
                   '   ("\'+\'"/"\'-\'") is handled by inserting the padding '
                   '*after* the sign\n'
                   '   character rather than before. The original string is '
                   'returned if\n'
                   '   *width* is less than or equal to "len(s)".\n'
                   '\n'
                   '   For example:\n'
                   '\n'
                   '      >>> "42".zfill(5)\n'
                   "      '00042'\n"
                   '      >>> "-42".zfill(5)\n'
                   "      '-0042'\n",
 'strings': 'String and Bytes literals\n'
            '*************************\n'
            '\n'
            'String literals are described by the following lexical '
            'definitions:\n'
            '\n'
            '   stringliteral   ::= [stringprefix](shortstring | longstring)\n'
            '   stringprefix    ::= "r" | "u" | "R" | "U" | "f" | "F"\n'
            '                    | "fr" | "Fr" | "fR" | "FR" | "rf" | "rF" | '
            '"Rf" | "RF"\n'
            '   shortstring     ::= "\'" shortstringitem* "\'" | \'"\' '
            'shortstringitem* \'"\'\n'
            '   longstring      ::= "\'\'\'" longstringitem* "\'\'\'" | '
            '\'"""\' longstringitem* \'"""\'\n'
            '   shortstringitem ::= shortstringchar | stringescapeseq\n'
            '   longstringitem  ::= longstringchar | stringescapeseq\n'
            '   shortstringchar ::= <any source character except "\\" or '
            'newline or the quote>\n'
            '   longstringchar  ::= <any source character except "\\">\n'
            '   stringescapeseq ::= "\\" <any source character>\n'
            '\n'
            '   bytesliteral   ::= bytesprefix(shortbytes | longbytes)\n'
            '   bytesprefix    ::= "b" | "B" | "br" | "Br" | "bR" | "BR" | '
            '"rb" | "rB" | "Rb" | "RB"\n'
            '   shortbytes     ::= "\'" shortbytesitem* "\'" | \'"\' '
            'shortbytesitem* \'"\'\n'
            '   longbytes      ::= "\'\'\'" longbytesitem* "\'\'\'" | \'"""\' '
            'longbytesitem* \'"""\'\n'
            '   shortbytesitem ::= shortbyteschar | bytesescapeseq\n'
            '   longbytesitem  ::= longbyteschar | bytesescapeseq\n'
            '   shortbyteschar ::= <any ASCII character except "\\" or newline '
            'or the quote>\n'
            '   longbyteschar  ::= <any ASCII character except "\\">\n'
            '   bytesescapeseq ::= "\\" <any ASCII character>\n'
            '\n'
            'One syntactic restriction not indicated by these productions is '
            'that\n'
            'whitespace is not allowed between the "stringprefix" or '
            '"bytesprefix"\n'
            'and the rest of the literal. The source character set is defined '
            'by\n'
            'the encoding declaration; it is UTF-8 if no encoding declaration '
            'is\n'
            'given in the source file; see section Encoding declarations.\n'
            '\n'
            'In plain English: Both types of literals can be enclosed in '
            'matching\n'
            'single quotes ("\'") or double quotes (""").  They can also be '
            'enclosed\n'
            'in matching groups of three single or double quotes (these are\n'
            'generally referred to as *triple-quoted strings*). The backslash '
            '("\\")\n'
            'character is used to give special meaning to otherwise ordinary\n'
            'characters like "n", which means ‘newline’ when escaped ("\\n"). '
            'It can\n'
            'also be used to escape characters that otherwise have a special\n'
            'meaning, such as newline, backslash itself, or the quote '
            'character.\n'
            'See escape sequences below for examples.\n'
            '\n'
            'Bytes literals are always prefixed with "\'b\'" or "\'B\'"; they '
            'produce\n'
            'an instance of the "bytes" type instead of the "str" type.  They '
            'may\n'
            'only contain ASCII characters; bytes with a numeric value of 128 '
            'or\n'
            'greater must be expressed with escapes.\n'
            '\n'
            'Both string and bytes literals may optionally be prefixed with a\n'
            'letter "\'r\'" or "\'R\'"; such constructs are called *raw '
            'string\n'
            'literals* and *raw bytes literals* respectively and treat '
            'backslashes\n'
            'as literal characters.  As a result, in raw string literals, '
            '"\'\\U\'"\n'
            'and "\'\\u\'" escapes are not treated specially.\n'
            '\n'
            'Added in version 3.3: The "\'rb\'" prefix of raw bytes literals '
            'has been\n'
            'added as a synonym of "\'br\'".Support for the unicode legacy '
            'literal\n'
            '("u\'value\'") was reintroduced to simplify the maintenance of '
            'dual\n'
            'Python 2.x and 3.x codebases. See **PEP 414** for more '
            'information.\n'
            '\n'
            'A string literal with "\'f\'" or "\'F\'" in its prefix is a '
            '*formatted\n'
            'string literal*; see f-strings.  The "\'f\'" may be combined with '
            '"\'r\'",\n'
            'but not with "\'b\'" or "\'u\'", therefore raw formatted strings '
            'are\n'
            'possible, but formatted bytes literals are not.\n'
            '\n'
            'In triple-quoted literals, unescaped newlines and quotes are '
            'allowed\n'
            '(and are retained), except that three unescaped quotes in a row\n'
            'terminate the literal.  (A “quote” is the character used to open '
            'the\n'
            'literal, i.e. either "\'" or """.)\n'
            '\n'
            '\n'
            'Escape sequences\n'
            '================\n'
            '\n'
            'Unless an "\'r\'" or "\'R\'" prefix is present, escape sequences '
            'in string\n'
            'and bytes literals are interpreted according to rules similar to '
            'those\n'
            'used by Standard C.  The recognized escape sequences are:\n'
            '\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| Escape Sequence           | Meaning                           | '
            'Notes   |\n'
            '|===========================|===================================|=========|\n'
            '| "\\"<newline>              | Backslash and newline ignored     '
            '| (1)     |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| "\\\\"                      | Backslash '
            '("\\")                   |         |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| "\\\'"                      | Single quote '
            '("\'")                |         |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| "\\""                      | Double quote (""")                '
            '|         |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| "\\a"                      | ASCII Bell (BEL)                  '
            '|         |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| "\\b"                      | ASCII Backspace (BS)              '
            '|         |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| "\\f"                      | ASCII Formfeed (FF)               '
            '|         |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| "\\n"                      | ASCII Linefeed (LF)               '
            '|         |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| "\\r"                      | ASCII Carriage Return (CR)        '
            '|         |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| "\\t"                      | ASCII Horizontal Tab (TAB)        '
            '|         |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| "\\v"                      | ASCII Vertical Tab (VT)           '
            '|         |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| "\\*ooo*"                  | Character with octal value *ooo*  '
            '| (2,4)   |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| "\\x*hh*"                  | Character with hex value *hh*     '
            '| (3,4)   |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '\n'
            'Escape sequences only recognized in string literals are:\n'
            '\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| Escape Sequence           | Meaning                           | '
            'Notes   |\n'
            '|===========================|===================================|=========|\n'
            '| "\\N{*name*}"              | Character named *name* in the     '
            '| (5)     |\n'
            '|                           | Unicode database                  '
            '|         |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| "\\u*xxxx*"                | Character with 16-bit hex value   '
            '| (6)     |\n'
            '|                           | *xxxx*                            '
            '|         |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '| "\\U*xxxxxxxx*"            | Character with 32-bit hex value   '
            '| (7)     |\n'
            '|                           | *xxxxxxxx*                        '
            '|         |\n'
            '+---------------------------+-----------------------------------+---------+\n'
            '\n'
            'Notes:\n'
            '\n'
            '1. A backslash can be added at the end of a line to ignore the\n'
            '   newline:\n'
            '\n'
            "      >>> 'This string will not include \\\n"
            "      ... backslashes or newline characters.'\n"
            "      'This string will not include backslashes or newline "
            "characters.'\n"
            '\n'
            '   The same result can be achieved using triple-quoted strings, '
            'or\n'
            '   parentheses and string literal concatenation.\n'
            '\n'
            '2. As in Standard C, up to three octal digits are accepted.\n'
            '\n'
            '   Changed in version 3.11: Octal escapes with value larger than\n'
            '   "0o377" produce a "DeprecationWarning".\n'
            '\n'
            '   Changed in version 3.12: Octal escapes with value larger than\n'
            '   "0o377" produce a "SyntaxWarning". In a future Python version '
            'they\n'
            '   will be eventually a "SyntaxError".\n'
            '\n'
            '3. Unlike in Standard C, exactly two hex digits are required.\n'
            '\n'
            '4. 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'
            '5. Changed in version 3.3: Support for name aliases [1] has been\n'
            '   added.\n'
            '\n'
            '6. Exactly four hex digits are required.\n'
            '\n'
            '7. 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'
            'string unchanged, i.e., *the backslash is left in the result*.  '
            '(This\n'
            'behavior is useful when debugging: if an escape sequence is '
            'mistyped,\n'
            'the resulting output is more easily recognized as broken.)  It is '
            'also\n'
            'important to note that the escape sequences only recognized in '
            'string\n'
            'literals fall into the category of unrecognized escapes for '
            'bytes\n'
            'literals.\n'
            '\n'
            'Changed in version 3.6: Unrecognized escape sequences produce a\n'
            '"DeprecationWarning".\n'
            '\n'
            'Changed in version 3.12: Unrecognized escape sequences produce a\n'
            '"SyntaxWarning". In a future Python version they will be '
            'eventually a\n'
            '"SyntaxError".\n'
            '\n'
            'Even in a raw literal, quotes can be escaped with a backslash, '
            'but the\n'
            'backslash remains in the result; for example, "r"\\""" is a '
            'valid\n'
            'string literal consisting of two characters: a backslash and a '
            'double\n'
            'quote; "r"\\"" is not a valid string literal (even a raw string '
            'cannot\n'
            'end in an odd number of backslashes).  Specifically, *a raw '
            'literal\n'
            'cannot end in a single backslash* (since the backslash would '
            'escape\n'
            'the following quote character).  Note also that a single '
            'backslash\n'
            'followed by a newline is interpreted as those two characters as '
            'part\n'
            'of the literal, *not* as a line continuation.\n',
 'subscriptions': 'Subscriptions\n'
                  '*************\n'
                  '\n'
                  'The subscription of an instance of a container class will '
                  'generally\n'
                  'select an element from the container. The subscription of a '
                  '*generic\n'
                  'class* will generally return a GenericAlias object.\n'
                  '\n'
                  '   subscription ::= primary "[" flexible_expression_list '
                  '"]"\n'
                  '\n'
                  'When an object is subscripted, the interpreter will '
                  'evaluate the\n'
                  'primary and the expression list.\n'
                  '\n'
                  'The primary must evaluate to an object that supports '
                  'subscription. An\n'
                  'object may support subscription through defining one or '
                  'both of\n'
                  '"__getitem__()" and "__class_getitem__()". When the primary '
                  'is\n'
                  'subscripted, the evaluated result of the expression list '
                  'will be\n'
                  'passed to one of these methods. For more details on when\n'
                  '"__class_getitem__" is called instead of "__getitem__", '
                  'see\n'
                  '__class_getitem__ versus __getitem__.\n'
                  '\n'
                  'If the expression list contains at least one comma, or if '
                  'any of the\n'
                  'expressions are starred, the expression list will evaluate '
                  'to a\n'
                  '"tuple" containing the items of the expression list. '
                  'Otherwise, the\n'
                  'expression list will evaluate to the value of the list’s '
                  'sole member.\n'
                  '\n'
                  'Changed in version 3.11: Expressions in an expression list '
                  'may be\n'
                  'starred. See **PEP 646**.\n'
                  '\n'
                  'For built-in objects, there are two types of objects that '
                  'support\n'
                  'subscription via "__getitem__()":\n'
                  '\n'
                  '1. Mappings. If the primary is a *mapping*, the expression '
                  'list must\n'
                  '   evaluate to an object whose value is one of the keys of '
                  'the\n'
                  '   mapping, and the subscription selects the value in the '
                  'mapping that\n'
                  '   corresponds to that key. An example of a builtin mapping '
                  'class is\n'
                  '   the "dict" class.\n'
                  '\n'
                  '2. Sequences. If the primary is a *sequence*, the '
                  'expression list must\n'
                  '   evaluate to an "int" or a "slice" (as discussed in the '
                  'following\n'
                  '   section). Examples of builtin sequence classes include '
                  'the "str",\n'
                  '   "list" and "tuple" classes.\n'
                  '\n'
                  'The formal syntax makes no special provision for negative '
                  'indices in\n'
                  '*sequences*. However, built-in sequences all provide a '
                  '"__getitem__()"\n'
                  'method that interprets negative indices by adding the '
                  'length of the\n'
                  'sequence to the index so that, for example, "x[-1]" selects '
                  'the last\n'
                  'item of "x". The resulting value must be a nonnegative '
                  'integer less\n'
                  'than the number of items in the sequence, and the '
                  'subscription selects\n'
                  'the item whose index is that value (counting from zero). '
                  'Since the\n'
                  'support for negative indices and slicing occurs in the '
                  'object’s\n'
                  '"__getitem__()" method, subclasses overriding this method '
                  'will need to\n'
                  'explicitly add that support.\n'
                  '\n'
                  'A "string" is a special kind of sequence whose items are '
                  '*characters*.\n'
                  'A character is not a separate data type but a string of '
                  'exactly one\n'
                  'character.\n',
 'truth': 'Truth Value Testing\n'
          '*******************\n'
          '\n'
          'Any object can be tested for truth value, for use in an "if" or\n'
          '"while" condition or as operand of the Boolean operations below.\n'
          '\n'
          'By default, an object is considered true unless its class defines\n'
          'either a "__bool__()" method that returns "False" or a "__len__()"\n'
          'method that returns zero, when called with the object. [1]  Here '
          'are\n'
          'most of the built-in objects considered false:\n'
          '\n'
          '* constants defined to be false: "None" and "False"\n'
          '\n'
          '* zero of any numeric type: "0", "0.0", "0j", "Decimal(0)",\n'
          '  "Fraction(0, 1)"\n'
          '\n'
          '* empty sequences and collections: "\'\'", "()", "[]", "{}", '
          '"set()",\n'
          '  "range(0)"\n'
          '\n'
          'Operations and built-in functions that have a Boolean result '
          'always\n'
          'return "0" or "False" for false and "1" or "True" for true, unless\n'
          'otherwise stated. (Important exception: the Boolean operations '
          '"or"\n'
          'and "and" always return one of their operands.)\n',
 'try': 'The "try" statement\n'
        '*******************\n'
        '\n'
        'The "try" statement specifies exception handlers and/or cleanup code\n'
        'for a group of statements:\n'
        '\n'
        '   try_stmt  ::= try1_stmt | try2_stmt | try3_stmt\n'
        '   try1_stmt ::= "try" ":" suite\n'
        '                 ("except" [expression ["as" identifier]] ":" '
        'suite)+\n'
        '                 ["else" ":" suite]\n'
        '                 ["finally" ":" suite]\n'
        '   try2_stmt ::= "try" ":" suite\n'
        '                 ("except" "*" expression ["as" identifier] ":" '
        'suite)+\n'
        '                 ["else" ":" suite]\n'
        '                 ["finally" ":" suite]\n'
        '   try3_stmt ::= "try" ":" suite\n'
        '                 "finally" ":" suite\n'
        '\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'
        '\n'
        '"except" clause\n'
        '===============\n'
        '\n'
        'The "except" clause(s) specify one or more exception handlers. When '
        'no\n'
        'exception occurs in the "try" clause, no exception handler is\n'
        'executed. When an exception occurs in the "try" suite, a search for '
        'an\n'
        'exception handler is started. This search inspects the "except"\n'
        'clauses in turn until one is found that matches the exception. An\n'
        'expression-less "except" clause, if present, must be last; it '
        'matches\n'
        'any exception.\n'
        '\n'
        'For an "except" clause with an expression, the expression must\n'
        'evaluate to an exception type or a tuple of exception types. The\n'
        'raised exception matches an "except" clause whose expression '
        'evaluates\n'
        'to the class or a *non-virtual base class* of the exception object, '
        'or\n'
        'to a tuple that contains such a class.\n'
        '\n'
        'If no "except" clause matches the exception, the search for an\n'
        'exception handler continues in the surrounding code and on the\n'
        'invocation stack.  [1]\n'
        '\n'
        'If the evaluation of an expression in the header of an "except" '
        'clause\n'
        'raises an exception, the original search for a handler is canceled '
        'and\n'
        'a search starts for the new exception in the surrounding code and on\n'
        'the call stack (it is treated as if the entire "try" statement '
        'raised\n'
        'the exception).\n'
        '\n'
        'When a matching "except" clause is found, the exception is assigned '
        'to\n'
        'the target specified after the "as" keyword in that "except" clause,\n'
        'if present, and the "except" clause’s suite is executed. All '
        '"except"\n'
        'clauses must have an executable block. When the end of this block is\n'
        'reached, execution continues normally after the entire "try"\n'
        'statement. (This means that if two nested handlers exist for the '
        'same\n'
        'exception, and the exception occurs in the "try" clause of the inner\n'
        'handler, the outer handler will not handle the exception.)\n'
        '\n'
        'When an exception has been assigned using "as target", it is cleared\n'
        'at the end of the "except" clause.  This is as if\n'
        '\n'
        '   except E as N:\n'
        '       foo\n'
        '\n'
        'was translated to\n'
        '\n'
        '   except E as N:\n'
        '       try:\n'
        '           foo\n'
        '       finally:\n'
        '           del N\n'
        '\n'
        'This means the exception must be assigned to a different name to be\n'
        'able to refer to it after the "except" clause. Exceptions are '
        'cleared\n'
        'because with the traceback attached to them, they form a reference\n'
        'cycle with the stack frame, keeping all locals in that frame alive\n'
        'until the next garbage collection occurs.\n'
        '\n'
        'Before an "except" clause’s suite is executed, the exception is '
        'stored\n'
        'in the "sys" module, where it can be accessed from within the body '
        'of\n'
        'the "except" clause by calling "sys.exception()". When leaving an\n'
        'exception handler, the exception stored in the "sys" module is reset\n'
        'to its previous value:\n'
        '\n'
        '   >>> print(sys.exception())\n'
        '   None\n'
        '   >>> try:\n'
        '   ...     raise TypeError\n'
        '   ... except:\n'
        '   ...     print(repr(sys.exception()))\n'
        '   ...     try:\n'
        '   ...          raise ValueError\n'
        '   ...     except:\n'
        '   ...         print(repr(sys.exception()))\n'
        '   ...     print(repr(sys.exception()))\n'
        '   ...\n'
        '   TypeError()\n'
        '   ValueError()\n'
        '   TypeError()\n'
        '   >>> print(sys.exception())\n'
        '   None\n'
        '\n'
        '\n'
        '"except*" clause\n'
        '================\n'
        '\n'
        'The "except*" clause(s) are used for handling "ExceptionGroup"s. The\n'
        'exception type for matching is interpreted as in the case of '
        '"except",\n'
        'but in the case of exception groups we can have partial matches when\n'
        'the type matches some of the exceptions in the group. This means '
        'that\n'
        'multiple "except*" clauses can execute, each handling part of the\n'
        'exception group. Each clause executes at most once and handles an\n'
        'exception group of all matching exceptions.  Each exception in the\n'
        'group is handled by at most one "except*" clause, the first that\n'
        'matches it.\n'
        '\n'
        '   >>> try:\n'
        '   ...     raise ExceptionGroup("eg",\n'
        '   ...         [ValueError(1), TypeError(2), OSError(3), '
        'OSError(4)])\n'
        '   ... except* TypeError as e:\n'
        "   ...     print(f'caught {type(e)} with nested {e.exceptions}')\n"
        '   ... except* OSError as e:\n'
        "   ...     print(f'caught {type(e)} with nested {e.exceptions}')\n"
        '   ...\n'
        "   caught <class 'ExceptionGroup'> with nested (TypeError(2),)\n"
        "   caught <class 'ExceptionGroup'> with nested (OSError(3), "
        'OSError(4))\n'
        '     + Exception Group Traceback (most recent call last):\n'
        '     |   File "<stdin>", line 2, in <module>\n'
        '     | ExceptionGroup: eg\n'
        '     +-+---------------- 1 ----------------\n'
        '       | ValueError: 1\n'
        '       +------------------------------------\n'
        '\n'
        'Any remaining exceptions that were not handled by any "except*" '
        'clause\n'
        'are re-raised at the end, along with all exceptions that were raised\n'
        'from within the "except*" clauses. If this list contains more than '
        'one\n'
        'exception to reraise, they are combined into an exception group.\n'
        '\n'
        'If the raised exception is not an exception group and its type '
        'matches\n'
        'one of the "except*" clauses, it is caught and wrapped by an '
        'exception\n'
        'group with an empty message string.\n'
        '\n'
        '   >>> try:\n'
        '   ...     raise BlockingIOError\n'
        '   ... except* BlockingIOError as e:\n'
        '   ...     print(repr(e))\n'
        '   ...\n'
        "   ExceptionGroup('', (BlockingIOError()))\n"
        '\n'
        'An "except*" clause must have a matching expression; it cannot be\n'
        '"except*:". Furthermore, this expression cannot contain exception\n'
        'group types, because that would have ambiguous semantics.\n'
        '\n'
        'It is not possible to mix "except" and "except*" in the same "try".\n'
        '"break", "continue" and "return" cannot appear in an "except*" '
        'clause.\n'
        '\n'
        '\n'
        '"else" clause\n'
        '=============\n'
        '\n'
        'The optional "else" clause is executed if the control flow leaves '
        'the\n'
        '"try" suite, no exception was raised, and no "return", "continue", '
        'or\n'
        '"break" statement was executed.  Exceptions in the "else" clause are\n'
        'not handled by the preceding "except" clauses.\n'
        '\n'
        '\n'
        '"finally" clause\n'
        '================\n'
        '\n'
        'If "finally" is present, it specifies a ‘cleanup’ handler.  The '
        '"try"\n'
        'clause is executed, including any "except" and "else" clauses.  If '
        'an\n'
        'exception occurs in any of the clauses and is not handled, the\n'
        'exception is temporarily saved. The "finally" clause is executed.  '
        'If\n'
        'there is a saved exception it is re-raised at the end of the '
        '"finally"\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'
        '\n'
        '   >>> def f():\n'
        '   ...     try:\n'
        '   ...         1/0\n'
        '   ...     finally:\n'
        '   ...         return 42\n'
        '   ...\n'
        '   >>> f()\n'
        '   42\n'
        '\n'
        'The exception information is not available to the program during\n'
        'execution of the "finally" clause.\n'
        '\n'
        'When a "return", "break" or "continue" statement is executed in the\n'
        '"try" suite of a "try"…"finally" statement, the "finally" clause is\n'
        'also executed ‘on the way out.’\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'
        '"return" statement executed in the "finally" clause will always be '
        'the\n'
        'last one executed:\n'
        '\n'
        '   >>> def foo():\n'
        '   ...     try:\n'
        "   ...         return 'try'\n"
        '   ...     finally:\n'
        "   ...         return 'finally'\n"
        '   ...\n'
        '   >>> foo()\n'
        "   'finally'\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'
          'Below is a list of the types that are built into Python.  '
          'Extension\n'
          'modules (written in C, Java, or other languages, depending on the\n'
          'implementation) can define additional types.  Future versions of\n'
          'Python may add types to the type hierarchy (e.g., rational '
          'numbers,\n'
          'efficiently stored arrays of integers, etc.), although such '
          'additions\n'
          'will often be provided via the standard library instead.\n'
          '\n'
          'Some of the type descriptions below contain a paragraph listing\n'
          '‘special attributes.’  These are attributes that provide access to '
          'the\n'
          'implementation and are not intended for general use.  Their '
          'definition\n'
          'may change in the future.\n'
          '\n'
          '\n'
          'None\n'
          '====\n'
          '\n'
          'This type has a single value.  There is a single object with this\n'
          'value. This object is accessed through the built-in name "None". It '
          'is\n'
          'used to signify the absence of a value in many situations, e.g., it '
          'is\n'
          'returned from functions that don’t explicitly return anything. Its\n'
          'truth value is false.\n'
          '\n'
          '\n'
          'NotImplemented\n'
          '==============\n'
          '\n'
          'This type has a single value.  There is a single object with this\n'
          'value. This object is accessed through the built-in name\n'
          '"NotImplemented". Numeric methods and rich comparison methods '
          'should\n'
          'return this value if they do not implement the operation for the\n'
          'operands provided.  (The interpreter will then try the reflected\n'
          'operation, or some other fallback, depending on the operator.)  It\n'
          '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 was deprecated.\n'
          '\n'
          'Changed in version 3.14: Evaluating "NotImplemented" in a boolean\n'
          'context now raises a "TypeError". It previously evaluated to '
          '"True"\n'
          'and emitted a "DeprecationWarning" since Python 3.9.\n'
          '\n'
          '\n'
          'Ellipsis\n'
          '========\n'
          '\n'
          'This type has a single value.  There is a single object with this\n'
          'value. This object is accessed through the literal "..." or the '
          'built-\n'
          'in name "Ellipsis".  Its truth value is true.\n'
          '\n'
          '\n'
          '"numbers.Number"\n'
          '================\n'
          '\n'
          'These are created by numeric literals and returned as results by\n'
          'arithmetic operators and arithmetic built-in functions.  Numeric\n'
          'objects are immutable; once created their value never changes.  '
          'Python\n'
          'numbers are of course strongly related to mathematical numbers, '
          'but\n'
          'subject to the limitations of numerical representation 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'
          'Python distinguishes between integers, floating-point numbers, and\n'
          'complex numbers:\n'
          '\n'
          '\n'
          '"numbers.Integral"\n'
          '------------------\n'
          '\n'
          'These represent elements from the mathematical set of integers\n'
          '(positive and negative).\n'
          '\n'
          'Note:\n'
          '\n'
          '  The rules for integer representation are intended to give the '
          'most\n'
          '  meaningful interpretation of shift and mask operations involving\n'
          '  negative integers.\n'
          '\n'
          'There are two types of integers:\n'
          '\n'
          'Integers ("int")\n'
          '   These represent numbers in an unlimited range, subject to '
          'available\n'
          '   (virtual) memory only.  For the purpose of shift and mask\n'
          '   operations, a binary representation is assumed, and negative\n'
          '   numbers are represented in a variant of 2’s complement which '
          'gives\n'
          '   the illusion of an infinite string of sign bits extending to '
          'the\n'
          '   left.\n'
          '\n'
          'Booleans ("bool")\n'
          '   These represent the truth values False and True.  The two '
          'objects\n'
          '   representing the values "False" and "True" are the only Boolean\n'
          '   objects. The Boolean type is a subtype of the integer type, and\n'
          '   Boolean values behave like the values 0 and 1, respectively, in\n'
          '   almost all contexts, the exception being that when converted to '
          'a\n'
          '   string, the strings ""False"" or ""True"" are returned,\n'
          '   respectively.\n'
          '\n'
          '\n'
          '"numbers.Real" ("float")\n'
          '------------------------\n'
          '\n'
          'These represent machine-level double precision floating-point '
          'numbers.\n'
          'You are at the mercy of the underlying machine architecture (and C '
          'or\n'
          'Java implementation) for the accepted range and handling of '
          'overflow.\n'
          'Python does not support single-precision floating-point numbers; '
          'the\n'
          'savings in processor and memory usage that are usually the reason '
          'for\n'
          'using these are dwarfed by the overhead of using objects in Python, '
          'so\n'
          'there is no reason to complicate the language with two kinds of\n'
          'floating-point numbers.\n'
          '\n'
          '\n'
          '"numbers.Complex" ("complex")\n'
          '-----------------------------\n'
          '\n'
          'These represent complex numbers as a pair of machine-level double\n'
          'precision floating-point numbers.  The same caveats apply as for\n'
          'floating-point numbers. The real and imaginary parts of a complex\n'
          'number "z" can be retrieved through the read-only attributes '
          '"z.real"\n'
          'and "z.imag".\n'
          '\n'
          '\n'
          'Sequences\n'
          '=========\n'
          '\n'
          'These represent finite ordered sets indexed by non-negative '
          'numbers.\n'
          'The built-in function "len()" returns the number of items of a\n'
          'sequence. When the length of a sequence is *n*, the index set '
          'contains\n'
          'the numbers 0, 1, …, *n*-1.  Item *i* of sequence *a* is selected '
          'by\n'
          '"a[i]". Some sequences, including built-in sequences, interpret\n'
          'negative subscripts by adding the sequence length. For example,\n'
          '"a[-2]" equals "a[n-2]", the second to last item of sequence a '
          'with\n'
          'length "n".\n'
          '\n'
          'Sequences also support slicing: "a[i:j]" selects all items with '
          'index\n'
          '*k* such that *i* "<=" *k* "<" *j*.  When used as an expression, a\n'
          'slice is a sequence of the same type. The comment above about '
          'negative\n'
          'indexes also applies to negative slice positions.\n'
          '\n'
          'Some sequences also support “extended slicing” with a third “step”\n'
          'parameter: "a[i:j:k]" selects all items of *a* with index *x* where '
          '"x\n'
          '= i + n*k", *n* ">=" "0" and *i* "<=" *x* "<" *j*.\n'
          '\n'
          'Sequences are distinguished according to their mutability:\n'
          '\n'
          '\n'
          'Immutable sequences\n'
          '-------------------\n'
          '\n'
          'An object of an immutable sequence type cannot change once it is\n'
          'created.  (If the object contains references to other objects, '
          'these\n'
          'other objects may be mutable and may be changed; however, the\n'
          'collection of objects directly referenced by an immutable object\n'
          'cannot change.)\n'
          '\n'
          'The following types are immutable sequences:\n'
          '\n'
          'Strings\n'
          '   A string is a sequence of values that represent Unicode code\n'
          '   points. All the code points in the range "U+0000 - U+10FFFF" can '
          'be\n'
          '   represented in a string.  Python doesn’t have a char type; '
          'instead,\n'
          '   every code point in the string is represented as a string '
          'object\n'
          '   with length "1".  The built-in function "ord()" converts a code\n'
          '   point from its string form to an integer in the range "0 - '
          '10FFFF";\n'
          '   "chr()" converts an integer in the range "0 - 10FFFF" to the\n'
          '   corresponding length "1" string object. "str.encode()" can be '
          'used\n'
          '   to convert a "str" to "bytes" using the given text encoding, '
          'and\n'
          '   "bytes.decode()" can be used to achieve the opposite.\n'
          '\n'
          'Tuples\n'
          '   The items of a tuple are arbitrary Python objects. Tuples of two '
          'or\n'
          '   more items are formed by comma-separated lists of expressions.  '
          'A\n'
          '   tuple of one item (a ‘singleton’) can be formed by affixing a '
          'comma\n'
          '   to an expression (an expression by itself does not create a '
          'tuple,\n'
          '   since parentheses must be usable for grouping of expressions).  '
          'An\n'
          '   empty tuple can be formed by an empty pair of parentheses.\n'
          '\n'
          'Bytes\n'
          '   A bytes object is an immutable array.  The items are 8-bit '
          'bytes,\n'
          '   represented by integers in the range 0 <= x < 256.  Bytes '
          'literals\n'
          '   (like "b\'abc\'") and the built-in "bytes()" constructor can be '
          'used\n'
          '   to create bytes objects.  Also, bytes objects can be decoded to\n'
          '   strings via the "decode()" method.\n'
          '\n'
          '\n'
          'Mutable sequences\n'
          '-----------------\n'
          '\n'
          'Mutable sequences can be changed after they are created.  The\n'
          'subscription and slicing notations can be used as the target of\n'
          'assignment and "del" (delete) statements.\n'
          '\n'
          'Note:\n'
          '\n'
          '  The "collections" and "array" module provide additional examples '
          'of\n'
          '  mutable sequence types.\n'
          '\n'
          'There are currently two intrinsic mutable sequence types:\n'
          '\n'
          'Lists\n'
          '   The items of a list are arbitrary Python objects.  Lists are '
          'formed\n'
          '   by placing a comma-separated list of expressions in square\n'
          '   brackets. (Note that there are no special cases needed to form\n'
          '   lists of length 0 or 1.)\n'
          '\n'
          'Byte Arrays\n'
          '   A bytearray object is a mutable array. They are created by the\n'
          '   built-in "bytearray()" constructor.  Aside from being mutable '
          '(and\n'
          '   hence unhashable), byte arrays otherwise provide the same '
          'interface\n'
          '   and functionality as immutable "bytes" objects.\n'
          '\n'
          '\n'
          'Set types\n'
          '=========\n'
          '\n'
          'These represent unordered, finite sets of unique, immutable '
          'objects.\n'
          'As such, they cannot be indexed by any subscript. However, they can '
          'be\n'
          'iterated over, and the built-in function "len()" returns the number '
          'of\n'
          'items in a set. Common uses for sets are fast membership testing,\n'
          'removing duplicates from a sequence, and computing mathematical\n'
          'operations such as intersection, union, difference, and symmetric\n'
          'difference.\n'
          '\n'
          'For set elements, the same immutability rules apply as for '
          'dictionary\n'
          'keys. Note that numeric types obey the normal rules for numeric\n'
          'comparison: if two numbers compare equal (e.g., "1" and "1.0"), '
          'only\n'
          'one of them can be contained in a set.\n'
          '\n'
          'There are currently two intrinsic set types:\n'
          '\n'
          'Sets\n'
          '   These represent a mutable set. They are created by the built-in\n'
          '   "set()" constructor and can be modified afterwards by several\n'
          '   methods, such as "add()".\n'
          '\n'
          'Frozen sets\n'
          '   These represent an immutable set.  They are created by the '
          'built-in\n'
          '   "frozenset()" constructor.  As a frozenset is immutable and\n'
          '   *hashable*, it can be used again as an element of another set, '
          'or\n'
          '   as a dictionary key.\n'
          '\n'
          '\n'
          'Mappings\n'
          '========\n'
          '\n'
          'These represent finite sets of objects indexed by arbitrary index\n'
          'sets. The subscript notation "a[k]" selects the item indexed by '
          '"k"\n'
          'from the mapping "a"; this can be used in expressions and as the\n'
          'target of assignments or "del" statements. The built-in function\n'
          '"len()" returns the number of items in a mapping.\n'
          '\n'
          'There is currently a single intrinsic mapping type:\n'
          '\n'
          '\n'
          'Dictionaries\n'
          '------------\n'
          '\n'
          'These represent finite sets of objects indexed by nearly arbitrary\n'
          'values.  The only types of values not acceptable as keys are '
          'values\n'
          'containing lists or dictionaries or other mutable types that are\n'
          'compared by value rather than by object identity, the reason being\n'
          'that the efficient implementation of dictionaries requires a key’s\n'
          'hash value to remain constant. Numeric types used for keys obey '
          'the\n'
          'normal rules for numeric comparison: if two numbers compare equal\n'
          '(e.g., "1" and "1.0") then they can be used interchangeably to '
          'index\n'
          'the same 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 end\n'
          'instead of keeping its old place.\n'
          '\n'
          'Dictionaries are mutable; they can be created by the "{}" notation\n'
          '(see section Dictionary displays).\n'
          '\n'
          'The extension modules "dbm.ndbm" and "dbm.gnu" provide additional\n'
          'examples of mapping types, as does the "collections" module.\n'
          '\n'
          'Changed in version 3.7: Dictionaries did not preserve insertion '
          'order\n'
          'in versions of Python before 3.6. In CPython 3.6, insertion order '
          'was\n'
          'preserved, but it was considered an implementation detail at that '
          'time\n'
          'rather than a language guarantee.\n'
          '\n'
          '\n'
          'Callable types\n'
          '==============\n'
          '\n'
          'These are the types to which the function call operation (see '
          'section\n'
          'Calls) can be applied:\n'
          '\n'
          '\n'
          'User-defined functions\n'
          '----------------------\n'
          '\n'
          'A user-defined function object is created by a function definition\n'
          '(see section Function definitions).  It should be called with an\n'
          'argument list containing the same number of items as the '
          'function’s\n'
          'formal parameter list.\n'
          '\n'
          '\n'
          'Special read-only attributes\n'
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n'
          '\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| Attribute                                          | '
          'Meaning                                            |\n'
          '|====================================================|====================================================|\n'
          '| function.__globals__                               | A reference '
          'to the "dictionary" that holds the     |\n'
          '|                                                    | function’s '
          'global variables – the global namespace |\n'
          '|                                                    | of the '
          'module in which the function was defined.   |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| function.__closure__                               | "None" or a '
          '"tuple" of cells that contain bindings |\n'
          '|                                                    | for the '
          'names specified in the "co_freevars"       |\n'
          '|                                                    | attribute of '
          'the function’s "code object".  A cell |\n'
          '|                                                    | object has '
          'the attribute "cell_contents". This can |\n'
          '|                                                    | be used to '
          'get the value of the cell, as well as   |\n'
          '|                                                    | set the '
          'value.                                     |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '\n'
          '\n'
          'Special writable attributes\n'
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~\n'
          '\n'
          'Most of these attributes check the type of the assigned value:\n'
          '\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| Attribute                                          | '
          'Meaning                                            |\n'
          '|====================================================|====================================================|\n'
          '| function.__doc__                                   | The '
          'function’s documentation string, or "None" if  |\n'
          '|                                                    | '
          'unavailable.                                       |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| function.__name__                                  | The '
          'function’s name. See also: "__name__           |\n'
          '|                                                    | '
          'attributes".                                       |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| function.__qualname__                              | The '
          'function’s *qualified name*. See also:         |\n'
          '|                                                    | '
          '"__qualname__ attributes".  Added in version 3.3.  |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| function.__module__                                | The name of '
          'the module the function was defined    |\n'
          '|                                                    | in, or '
          '"None" if unavailable.                      |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| function.__defaults__                              | A "tuple" '
          'containing default *parameter* values    |\n'
          '|                                                    | for those '
          'parameters that have defaults, or "None" |\n'
          '|                                                    | if no '
          'parameters have a default value.             |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| function.__code__                                  | The code '
          'object representing the compiled function |\n'
          '|                                                    | '
          'body.                                              |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| function.__dict__                                  | The '
          'namespace supporting arbitrary function        |\n'
          '|                                                    | attributes. '
          'See also: "__dict__ attributes".       |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| function.__annotations__                           | A '
          '"dictionary" containing annotations of           |\n'
          '|                                                    | '
          '*parameters*. The keys of the dictionary are the   |\n'
          '|                                                    | parameter '
          'names, and "\'return\'" for the return     |\n'
          '|                                                    | annotation, '
          'if provided. See also:                 |\n'
          '|                                                    | '
          '"object.__annotations__".  Changed in version      |\n'
          '|                                                    | 3.14: '
          'Annotations are now lazily evaluated. See    |\n'
          '|                                                    | **PEP '
          '649**.                                       |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| function.__annotate__                              | The '
          '*annotate function* for this function, or      |\n'
          '|                                                    | "None" if '
          'the function has no annotations. See     |\n'
          '|                                                    | '
          '"object.__annotate__".  Added in version 3.14.     |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| function.__kwdefaults__                            | A '
          '"dictionary" containing defaults for keyword-    |\n'
          '|                                                    | only '
          '*parameters*.                                 |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| function.__type_params__                           | A "tuple" '
          'containing the type parameters of a      |\n'
          '|                                                    | generic '
          'function.  Added in version 3.12.          |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '\n'
          'Function objects also support getting and setting arbitrary\n'
          'attributes, which can be used, for example, to attach metadata to\n'
          'functions.  Regular attribute dot-notation is used to get and set '
          'such\n'
          'attributes.\n'
          '\n'
          '**CPython implementation detail:** CPython’s current '
          'implementation\n'
          'only supports function attributes on user-defined functions. '
          'Function\n'
          'attributes on built-in functions may be supported in the future.\n'
          '\n'
          'Additional information about a function’s definition can be '
          'retrieved\n'
          'from its code object (accessible via the "__code__" attribute).\n'
          '\n'
          '\n'
          'Instance methods\n'
          '----------------\n'
          '\n'
          'An instance method object combines a class, a class instance and '
          'any\n'
          'callable object (normally a user-defined function).\n'
          '\n'
          'Special read-only attributes:\n'
          '\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| method.__self__                                    | Refers to '
          'the class instance object to which the   |\n'
          '|                                                    | method is '
          'bound                                    |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| method.__func__                                    | Refers to '
          'the original function object             |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| method.__doc__                                     | The method’s '
          'documentation (same as                |\n'
          '|                                                    | '
          '"method.__func__.__doc__"). A "string" if the      |\n'
          '|                                                    | original '
          'function had a docstring, else "None".    |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| method.__name__                                    | The name of '
          'the method (same as                    |\n'
          '|                                                    | '
          '"method.__func__.__name__")                        |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| method.__module__                                  | The name of '
          'the module the method was defined in,  |\n'
          '|                                                    | or "None" if '
          'unavailable.                          |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '\n'
          'Methods also support accessing (but not setting) the arbitrary\n'
          'function attributes on the underlying function object.\n'
          '\n'
          'User-defined method objects may be created when getting an '
          'attribute\n'
          'of a class (perhaps via an instance of that class), if that '
          'attribute\n'
          'is a user-defined function object or a "classmethod" object.\n'
          '\n'
          'When an instance method object is created by retrieving a '
          'user-defined\n'
          'function object from a class via one of its instances, its '
          '"__self__"\n'
          'attribute is the instance, and the method object is said to be\n'
          '*bound*.  The new method’s "__func__" attribute is the original\n'
          'function object.\n'
          '\n'
          'When an instance method object is created by retrieving a\n'
          '"classmethod" object from a class or instance, its "__self__"\n'
          'attribute is the class itself, and its "__func__" attribute is the\n'
          'function object underlying the class method.\n'
          '\n'
          'When an instance method object is called, the underlying function\n'
          '("__func__") is called, inserting the class instance ("__self__") '
          'in\n'
          'front of the argument list.  For instance, when "C" is a class '
          'which\n'
          'contains a definition for a function "f()", and "x" is an instance '
          'of\n'
          '"C", calling "x.f(1)" is equivalent to calling "C.f(x, 1)".\n'
          '\n'
          'When an instance method object is derived from a "classmethod" '
          'object,\n'
          'the “class instance” stored in "__self__" will actually be the '
          'class\n'
          'itself, so that calling either "x.f(1)" or "C.f(1)" is equivalent '
          'to\n'
          'calling "f(C,1)" where "f" is the underlying function.\n'
          '\n'
          'It is important to note that user-defined functions which are\n'
          'attributes of a class instance are not converted to bound methods;\n'
          'this *only* happens when the function is an attribute of the '
          'class.\n'
          '\n'
          '\n'
          'Generator functions\n'
          '-------------------\n'
          '\n'
          'A function or method which uses the "yield" statement (see section '
          'The\n'
          'yield statement) is called a *generator function*.  Such a '
          'function,\n'
          'when called, always returns an *iterator* object which can be used '
          'to\n'
          'execute the body of the function:  calling the iterator’s\n'
          '"iterator.__next__()" method will cause the function to execute '
          'until\n'
          'it provides a value using the "yield" statement.  When the '
          'function\n'
          'executes a "return" statement or falls off the end, a '
          '"StopIteration"\n'
          'exception is raised and the iterator will have reached the end of '
          'the\n'
          'set of values to be returned.\n'
          '\n'
          '\n'
          'Coroutine functions\n'
          '-------------------\n'
          '\n'
          'A function or method which is defined using "async def" is called '
          'a\n'
          '*coroutine function*.  Such a function, when called, returns a\n'
          '*coroutine* object.  It may contain "await" expressions, as well '
          'as\n'
          '"async with" and "async for" statements. See also the Coroutine\n'
          'Objects section.\n'
          '\n'
          '\n'
          'Asynchronous generator functions\n'
          '--------------------------------\n'
          '\n'
          'A function or method which is defined using "async def" and which '
          'uses\n'
          'the "yield" statement is called a *asynchronous generator '
          'function*.\n'
          'Such a function, when called, returns an *asynchronous iterator*\n'
          'object which can be used in an "async for" statement to execute '
          'the\n'
          'body of the function.\n'
          '\n'
          'Calling the asynchronous iterator’s "aiterator.__anext__" method '
          'will\n'
          'return an *awaitable* which when awaited will execute until it\n'
          'provides a value using the "yield" expression.  When the function\n'
          'executes an empty "return" statement or falls off the end, a\n'
          '"StopAsyncIteration" exception is raised and the asynchronous '
          'iterator\n'
          'will have reached the end of the set of values to be yielded.\n'
          '\n'
          '\n'
          'Built-in functions\n'
          '------------------\n'
          '\n'
          'A built-in function object is a wrapper around a C function.  '
          'Examples\n'
          'of built-in functions are "len()" and "math.sin()" ("math" is a\n'
          'standard built-in module). The number and type of the arguments '
          'are\n'
          'determined by the C function. Special read-only attributes:\n'
          '\n'
          '* "__doc__" is the function’s documentation string, or "None" if\n'
          '  unavailable. See "function.__doc__".\n'
          '\n'
          '* "__name__" is the function’s name. See "function.__name__".\n'
          '\n'
          '* "__self__" is set to "None" (but see the next item).\n'
          '\n'
          '* "__module__" is the name of the module the function was defined '
          'in\n'
          '  or "None" if unavailable. See "function.__module__".\n'
          '\n'
          '\n'
          'Built-in methods\n'
          '----------------\n'
          '\n'
          'This is really a different disguise of a built-in function, this '
          'time\n'
          'containing an object passed to the C function as an implicit extra\n'
          'argument.  An example of a built-in method is "alist.append()",\n'
          'assuming *alist* is a list object. In this case, the special '
          'read-only\n'
          'attribute "__self__" is set to the object denoted by *alist*. (The\n'
          'attribute has the same semantics as it does with "other instance\n'
          'methods".)\n'
          '\n'
          '\n'
          'Classes\n'
          '-------\n'
          '\n'
          'Classes are callable.  These objects normally act as factories for '
          'new\n'
          'instances of themselves, but variations are possible for class '
          'types\n'
          'that override "__new__()".  The arguments of the call are passed '
          'to\n'
          '"__new__()" and, in the typical case, to "__init__()" to '
          'initialize\n'
          'the new instance.\n'
          '\n'
          '\n'
          'Class Instances\n'
          '---------------\n'
          '\n'
          'Instances of arbitrary classes can be made callable by defining a\n'
          '"__call__()" method in their class.\n'
          '\n'
          '\n'
          'Modules\n'
          '=======\n'
          '\n'
          'Modules are a basic organizational unit of Python code, and are\n'
          'created by the import system as invoked either by the "import"\n'
          'statement, or by calling functions such as '
          '"importlib.import_module()"\n'
          'and built-in "__import__()".  A module object has a namespace\n'
          'implemented by a "dictionary" object (this is the dictionary\n'
          'referenced by the "__globals__" attribute of functions defined in '
          'the\n'
          'module).  Attribute references are translated to lookups in this\n'
          'dictionary, e.g., "m.x" is equivalent to "m.__dict__["x"]". A '
          'module\n'
          'object does not contain the code object used to initialize the '
          'module\n'
          '(since it isn’t needed once the initialization is done).\n'
          '\n'
          'Attribute assignment updates the module’s namespace dictionary, '
          'e.g.,\n'
          '"m.x = 1" is equivalent to "m.__dict__["x"] = 1".\n'
          '\n'
          '\n'
          'Import-related attributes on module objects\n'
          '-------------------------------------------\n'
          '\n'
          'Module objects have the following attributes that relate to the '
          'import\n'
          'system. When a module is created using the machinery associated '
          'with\n'
          'the import system, these attributes are filled in based on the\n'
          'module’s *spec*, before the *loader* executes and loads the '
          'module.\n'
          '\n'
          'To create a module dynamically rather than using the import '
          'system,\n'
          'it’s recommended to use "importlib.util.module_from_spec()", which\n'
          'will set the various import-controlled attributes to appropriate\n'
          'values. It’s also possible to use the "types.ModuleType" '
          'constructor\n'
          'to create modules directly, but this technique is more error-prone, '
          'as\n'
          'most attributes must be manually set on the module object after it '
          'has\n'
          'been created when using this approach.\n'
          '\n'
          'Caution:\n'
          '\n'
          '  With the exception of "__name__", it is **strongly** recommended\n'
          '  that you rely on "__spec__" and its attributes instead of any of '
          'the\n'
          '  other individual attributes listed in this subsection. Note that\n'
          '  updating an attribute on "__spec__" will not update the\n'
          '  corresponding attribute on the module itself:\n'
          '\n'
          '     >>> import typing\n'
          '     >>> typing.__name__, typing.__spec__.name\n'
          "     ('typing', 'typing')\n"
          "     >>> typing.__spec__.name = 'spelling'\n"
          '     >>> typing.__name__, typing.__spec__.name\n'
          "     ('typing', 'spelling')\n"
          "     >>> typing.__name__ = 'keyboard_smashing'\n"
          '     >>> typing.__name__, typing.__spec__.name\n'
          "     ('keyboard_smashing', 'spelling')\n"
          '\n'
          'module.__name__\n'
          '\n'
          '   The name used to uniquely identify the module in the import '
          'system.\n'
          '   For a directly executed module, this will be set to '
          '""__main__"".\n'
          '\n'
          '   This attribute must be set to the fully qualified name of the\n'
          '   module. It is expected to match the value of\n'
          '   "module.__spec__.name".\n'
          '\n'
          'module.__spec__\n'
          '\n'
          '   A record of the module’s import-system-related state.\n'
          '\n'
          '   Set to the "module spec" that was used when importing the '
          'module.\n'
          '   See Module specs for more details.\n'
          '\n'
          '   Added in version 3.4.\n'
          '\n'
          'module.__package__\n'
          '\n'
          '   The *package* a module belongs to.\n'
          '\n'
          '   If the module is top-level (that is, not a part of any specific\n'
          '   package) then the attribute should be set to "\'\'" (the empty\n'
          '   string). Otherwise, it should be set to the name of the '
          'module’s\n'
          '   package (which can be equal to "module.__name__" if the module\n'
          '   itself is a package). See **PEP 366** for further details.\n'
          '\n'
          '   This attribute is used instead of "__name__" to calculate '
          'explicit\n'
          '   relative imports for main modules. It defaults to "None" for\n'
          '   modules created dynamically using the "types.ModuleType"\n'
          '   constructor; use "importlib.util.module_from_spec()" instead to\n'
          '   ensure the attribute is set to a "str".\n'
          '\n'
          '   It is **strongly** recommended that you use\n'
          '   "module.__spec__.parent" instead of "module.__package__".\n'
          '   "__package__" is now only used as a fallback if '
          '"__spec__.parent"\n'
          '   is not set, and this fallback path is deprecated.\n'
          '\n'
          '   Changed in version 3.4: This attribute now defaults to "None" '
          'for\n'
          '   modules created dynamically using the "types.ModuleType"\n'
          '   constructor. Previously the attribute was optional.\n'
          '\n'
          '   Changed in version 3.6: The value of "__package__" is expected '
          'to\n'
          '   be the same as "__spec__.parent". "__package__" is now only used '
          'as\n'
          '   a fallback during import resolution if "__spec__.parent" is not\n'
          '   defined.\n'
          '\n'
          '   Changed in version 3.10: "ImportWarning" is raised if an import\n'
          '   resolution falls back to "__package__" instead of\n'
          '   "__spec__.parent".\n'
          '\n'
          '   Changed in version 3.12: Raise "DeprecationWarning" instead of\n'
          '   "ImportWarning" when falling back to "__package__" during '
          'import\n'
          '   resolution.\n'
          '\n'
          '   Deprecated since version 3.13, will be removed in version 3.15:\n'
          '   "__package__" will cease to be set or taken into consideration '
          'by\n'
          '   the import system or standard library.\n'
          '\n'
          'module.__loader__\n'
          '\n'
          '   The *loader* object that the import machinery used to load the\n'
          '   module.\n'
          '\n'
          '   This attribute is mostly useful for introspection, but can be '
          'used\n'
          '   for additional loader-specific functionality, for example '
          'getting\n'
          '   data associated with a loader.\n'
          '\n'
          '   "__loader__" defaults to "None" for modules created dynamically\n'
          '   using the "types.ModuleType" constructor; use\n'
          '   "importlib.util.module_from_spec()" instead to ensure the '
          'attribute\n'
          '   is set to a *loader* object.\n'
          '\n'
          '   It is **strongly** recommended that you use\n'
          '   "module.__spec__.loader" instead of "module.__loader__".\n'
          '\n'
          '   Changed in version 3.4: This attribute now defaults to "None" '
          'for\n'
          '   modules created dynamically using the "types.ModuleType"\n'
          '   constructor. Previously the attribute was optional.\n'
          '\n'
          '   Deprecated since version 3.12, will be removed in version 3.16:\n'
          '   Setting "__loader__" on a module while failing to set\n'
          '   "__spec__.loader" is deprecated. In Python 3.16, "__loader__" '
          'will\n'
          '   cease to be set or taken into consideration by the import system '
          'or\n'
          '   the standard library.\n'
          '\n'
          'module.__path__\n'
          '\n'
          '   A (possibly empty) *sequence* of strings enumerating the '
          'locations\n'
          '   where the package’s submodules will be found. Non-package '
          'modules\n'
          '   should not have a "__path__" attribute. See __path__ attributes '
          'on\n'
          '   modules for more details.\n'
          '\n'
          '   It is **strongly** recommended that you use\n'
          '   "module.__spec__.submodule_search_locations" instead of\n'
          '   "module.__path__".\n'
          '\n'
          'module.__file__\n'
          '\n'
          'module.__cached__\n'
          '\n'
          '   "__file__" and "__cached__" are both optional attributes that '
          'may\n'
          '   or may not be set. Both attributes should be a "str" when they '
          'are\n'
          '   available.\n'
          '\n'
          '   "__file__" indicates the pathname of the file from which the '
          'module\n'
          '   was loaded (if loaded from a file), or the pathname of the '
          'shared\n'
          '   library file for extension modules loaded dynamically from a '
          'shared\n'
          '   library. It might be missing for certain types of modules, such '
          'as\n'
          '   C modules that are statically linked into the interpreter, and '
          'the\n'
          '   import system may opt to leave it unset if it has no semantic\n'
          '   meaning (for example, a module loaded from a database).\n'
          '\n'
          '   If "__file__" is set then the "__cached__" attribute might also '
          'be\n'
          '   set,  which is the path to any compiled version of the code '
          '(for\n'
          '   example, a byte-compiled file). The file does not need to exist '
          'to\n'
          '   set this attribute; the path can simply point to where the '
          'compiled\n'
          '   file *would* exist (see **PEP 3147**).\n'
          '\n'
          '   Note that "__cached__" may be set even if "__file__" is not '
          'set.\n'
          '   However, that scenario is quite atypical.  Ultimately, the '
          '*loader*\n'
          '   is what makes use of the module spec provided by the *finder* '
          '(from\n'
          '   which "__file__" and "__cached__" are derived).  So if a loader '
          'can\n'
          '   load from a cached module but otherwise does not load from a '
          'file,\n'
          '   that atypical scenario may be appropriate.\n'
          '\n'
          '   It is **strongly** recommended that you use\n'
          '   "module.__spec__.cached" instead of "module.__cached__".\n'
          '\n'
          '   Deprecated since version 3.13, will be removed in version 3.15:\n'
          '   Setting "__cached__" on a module while failing to set\n'
          '   "__spec__.cached" is deprecated. In Python 3.15, "__cached__" '
          'will\n'
          '   cease to be set or taken into consideration by the import system '
          'or\n'
          '   standard library.\n'
          '\n'
          '\n'
          'Other writable attributes on module objects\n'
          '-------------------------------------------\n'
          '\n'
          'As well as the import-related attributes listed above, module '
          'objects\n'
          'also have the following writable attributes:\n'
          '\n'
          'module.__doc__\n'
          '\n'
          '   The module’s documentation string, or "None" if unavailable. '
          'See\n'
          '   also: "__doc__ attributes".\n'
          '\n'
          'module.__annotations__\n'
          '\n'
          '   A dictionary containing *variable annotations* collected during\n'
          '   module body execution.  For best practices on working with\n'
          '   "__annotations__", see "annotationlib".\n'
          '\n'
          '   Changed in version 3.14: Annotations are now lazily evaluated. '
          'See\n'
          '   **PEP 649**.\n'
          '\n'
          'module.__annotate__\n'
          '\n'
          '   The *annotate function* for this module, or "None" if the '
          'module\n'
          '   has no annotations. See also: "__annotate__" attributes.\n'
          '\n'
          '   Added in version 3.14.\n'
          '\n'
          '\n'
          'Module dictionaries\n'
          '-------------------\n'
          '\n'
          'Module objects also have the following special read-only '
          'attribute:\n'
          '\n'
          'module.__dict__\n'
          '\n'
          '   The module’s namespace as a dictionary object. Uniquely among '
          'the\n'
          '   attributes listed here, "__dict__" cannot be accessed as a '
          'global\n'
          '   variable from within a module; it can only be accessed as an\n'
          '   attribute on module objects.\n'
          '\n'
          '   **CPython implementation detail:** Because of the way CPython\n'
          '   clears module dictionaries, the module dictionary will be '
          'cleared\n'
          '   when the module falls out of scope even if the dictionary still '
          'has\n'
          '   live references.  To avoid this, copy the dictionary or keep '
          'the\n'
          '   module around while using its dictionary directly.\n'
          '\n'
          '\n'
          'Custom classes\n'
          '==============\n'
          '\n'
          'Custom class types are typically created by class definitions (see\n'
          'section Class definitions).  A class has a namespace implemented by '
          'a\n'
          'dictionary object. Class attribute references are translated to\n'
          'lookups in this dictionary, e.g., "C.x" is translated to\n'
          '"C.__dict__["x"]" (although there are a number of hooks which '
          'allow\n'
          'for other means of locating attributes). When the attribute name '
          'is\n'
          'not found there, the attribute search continues in the base '
          'classes.\n'
          'This search of the base classes uses the C3 method resolution '
          'order\n'
          'which behaves correctly even in the presence of ‘diamond’ '
          'inheritance\n'
          'structures where there are multiple inheritance paths leading back '
          'to\n'
          'a common ancestor. Additional details on the C3 MRO used by Python '
          'can\n'
          'be found at The Python 2.3 Method Resolution Order.\n'
          '\n'
          'When a class attribute reference (for class "C", say) would yield '
          'a\n'
          'class method object, it is transformed into an instance method '
          'object\n'
          'whose "__self__" attribute is "C". When it would yield a\n'
          '"staticmethod" object, it is transformed into the object wrapped '
          'by\n'
          'the static method object. See section Implementing Descriptors for\n'
          'another way in which attributes retrieved from a class may differ '
          'from\n'
          'those actually contained in its "__dict__".\n'
          '\n'
          'Class attribute assignments update the class’s dictionary, never '
          'the\n'
          'dictionary of a base class.\n'
          '\n'
          'A class object can be called (see above) to yield a class instance\n'
          '(see below).\n'
          '\n'
          '\n'
          'Special attributes\n'
          '------------------\n'
          '\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| Attribute                                          | '
          'Meaning                                            |\n'
          '|====================================================|====================================================|\n'
          '| type.__name__                                      | The class’s '
          'name. See also: "__name__ attributes". |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| type.__qualname__                                  | The class’s '
          '*qualified name*. See also:            |\n'
          '|                                                    | '
          '"__qualname__ attributes".                         |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| type.__module__                                    | The name of '
          'the module in which the class was      |\n'
          '|                                                    | '
          'defined.                                           |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| type.__dict__                                      | A "mapping '
          'proxy" providing a read-only view of    |\n'
          '|                                                    | the class’s '
          'namespace. See also: "__dict__         |\n'
          '|                                                    | '
          'attributes".                                       |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| type.__bases__                                     | A "tuple" '
          'containing the class’s bases. In most    |\n'
          '|                                                    | cases, for a '
          'class defined as "class X(A, B, C)",  |\n'
          '|                                                    | '
          '"X.__bases__" will be exactly equal to "(A, B,     |\n'
          '|                                                    | '
          'C)".                                               |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| type.__doc__                                       | The class’s '
          'documentation string, or "None" if     |\n'
          '|                                                    | undefined. '
          'Not inherited by subclasses.            |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| type.__annotations__                               | A dictionary '
          'containing *variable annotations*     |\n'
          '|                                                    | collected '
          'during class body execution. See also:   |\n'
          '|                                                    | '
          '"__annotations__ attributes".  For best practices  |\n'
          '|                                                    | on working '
          'with "__annotations__", please see      |\n'
          '|                                                    | '
          '"annotationlib".  Caution:   Accessing the         |\n'
          '|                                                    | '
          '"__annotations__" attribute of a class object      |\n'
          '|                                                    | directly may '
          'yield incorrect results in the        |\n'
          '|                                                    | presence of '
          'metaclasses. In addition, the          |\n'
          '|                                                    | attribute '
          'may not exist for some classes. Use      |\n'
          '|                                                    | '
          '"annotationlib.get_annotations()" to retrieve      |\n'
          '|                                                    | class '
          'annotations safely.  Changed in version      |\n'
          '|                                                    | 3.14: '
          'Annotations are now lazily evaluated. See    |\n'
          '|                                                    | **PEP '
          '649**.                                       |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| type.__annotate__()                                | The '
          '*annotate function* for this class, or "None"  |\n'
          '|                                                    | if the class '
          'has no annotations. See also:         |\n'
          '|                                                    | '
          '"__annotate__ attributes".  Caution:   Accessing   |\n'
          '|                                                    | the '
          '"__annotate__" attribute of a class object     |\n'
          '|                                                    | directly may '
          'yield incorrect results in the        |\n'
          '|                                                    | presence of '
          'metaclasses. Use                       |\n'
          '|                                                    | '
          '"annotationlib.get_annotate_function()" to         |\n'
          '|                                                    | retrieve the '
          'annotate function safely.  Added in   |\n'
          '|                                                    | version '
          '3.14.                                      |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| type.__type_params__                               | A "tuple" '
          'containing the type parameters of a      |\n'
          '|                                                    | generic '
          'class.  Added in version 3.12.             |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| type.__static_attributes__                         | A "tuple" '
          'containing names of attributes of this   |\n'
          '|                                                    | class which '
          'are assigned through "self.X" from any |\n'
          '|                                                    | function in '
          'its body.  Added in version 3.13.      |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| type.__firstlineno__                               | The line '
          'number of the first line of the class     |\n'
          '|                                                    | definition, '
          'including decorators. Setting the      |\n'
          '|                                                    | "__module__" '
          'attribute removes the                 |\n'
          '|                                                    | '
          '"__firstlineno__" item from the type’s dictionary. |\n'
          '|                                                    | Added in '
          'version 3.13.                             |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| type.__mro__                                       | The "tuple" '
          'of classes that are considered when    |\n'
          '|                                                    | looking for '
          'base classes during method resolution. |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '\n'
          '\n'
          'Special methods\n'
          '---------------\n'
          '\n'
          'In addition to the special attributes described above, all Python\n'
          'classes also have the following two methods available:\n'
          '\n'
          'type.mro()\n'
          '\n'
          '   This method can be overridden by a metaclass to customize the\n'
          '   method resolution order for its instances.  It is called at '
          'class\n'
          '   instantiation, and its result is stored in "__mro__".\n'
          '\n'
          'type.__subclasses__()\n'
          '\n'
          '   Each class keeps a list of weak references to its immediate\n'
          '   subclasses. This method returns a list of all those references\n'
          '   still alive. The list is in definition order. Example:\n'
          '\n'
          '      >>> class A: pass\n'
          '      >>> class B(A): pass\n'
          '      >>> A.__subclasses__()\n'
          "      [<class 'B'>]\n"
          '\n'
          '\n'
          'Class instances\n'
          '===============\n'
          '\n'
          'A class instance is created by calling a class object (see above).  '
          'A\n'
          'class instance has a namespace implemented as a dictionary which '
          'is\n'
          'the first place in which attribute references are searched.  When '
          'an\n'
          'attribute is not found there, and the instance’s class has an\n'
          'attribute by that name, the search continues with the class\n'
          'attributes.  If a class attribute is found that is a user-defined\n'
          'function object, it is transformed into an instance method object\n'
          'whose "__self__" attribute is the instance.  Static method and '
          'class\n'
          'method objects are also transformed; see above under “Classes”.  '
          'See\n'
          'section Implementing Descriptors for another way in which '
          'attributes\n'
          'of a class retrieved via its instances may differ from the objects\n'
          'actually stored in the class’s "__dict__".  If no class attribute '
          'is\n'
          'found, and the object’s class has a "__getattr__()" method, that '
          'is\n'
          'called to satisfy the lookup.\n'
          '\n'
          'Attribute assignments and deletions update the instance’s '
          'dictionary,\n'
          'never a class’s dictionary.  If the class has a "__setattr__()" or\n'
          '"__delattr__()" method, this is called instead of updating the\n'
          'instance dictionary directly.\n'
          '\n'
          'Class instances can pretend to be numbers, sequences, or mappings '
          'if\n'
          'they have methods with certain special names.  See section Special\n'
          'method names.\n'
          '\n'
          '\n'
          'Special attributes\n'
          '------------------\n'
          '\n'
          'object.__class__\n'
          '\n'
          '   The class to which a class instance belongs.\n'
          '\n'
          'object.__dict__\n'
          '\n'
          '   A dictionary or other mapping object used to store an object’s\n'
          '   (writable) attributes. Not all instances have a "__dict__"\n'
          '   attribute; see the section on __slots__ for more details.\n'
          '\n'
          '\n'
          'I/O objects (also known as file objects)\n'
          '========================================\n'
          '\n'
          'A *file object* represents an open file.  Various shortcuts are\n'
          'available to create file objects: the "open()" built-in function, '
          'and\n'
          'also "os.popen()", "os.fdopen()", and the "makefile()" method of\n'
          'socket objects (and perhaps by other functions or methods provided '
          'by\n'
          'extension modules).\n'
          '\n'
          'The objects "sys.stdin", "sys.stdout" and "sys.stderr" are '
          'initialized\n'
          'to file objects corresponding to the interpreter’s standard input,\n'
          'output and error streams; they are all open in text mode and '
          'therefore\n'
          'follow the interface defined by the "io.TextIOBase" abstract '
          'class.\n'
          '\n'
          '\n'
          'Internal types\n'
          '==============\n'
          '\n'
          'A few types used internally by the interpreter are exposed to the\n'
          'user. Their definitions may change with future versions of the\n'
          'interpreter, but they are mentioned here for completeness.\n'
          '\n'
          '\n'
          'Code objects\n'
          '------------\n'
          '\n'
          'Code objects represent *byte-compiled* executable Python code, or\n'
          '*bytecode*. The difference between a code object and a function '
          'object\n'
          'is that the function object contains an explicit reference to the\n'
          'function’s globals (the module in which it was defined), while a '
          'code\n'
          'object contains no context; also the default argument values are\n'
          'stored in the function object, not in the code object (because '
          'they\n'
          'represent values calculated at run-time).  Unlike function '
          'objects,\n'
          'code objects are immutable and contain no references (directly or\n'
          'indirectly) to mutable objects.\n'
          '\n'
          '\n'
          'Special read-only attributes\n'
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n'
          '\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_name                                 | The function '
          'name                                  |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_qualname                             | The fully '
          'qualified function name  Added in        |\n'
          '|                                                    | version '
          '3.11.                                      |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_argcount                             | The total '
          'number of positional *parameters*        |\n'
          '|                                                    | (including '
          'positional-only parameters and          |\n'
          '|                                                    | parameters '
          'with default values) that the function  |\n'
          '|                                                    | '
          'has                                                |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_posonlyargcount                      | The number '
          'of positional-only *parameters*         |\n'
          '|                                                    | (including '
          'arguments with default values) that the |\n'
          '|                                                    | function '
          'has                                       |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_kwonlyargcount                       | The number '
          'of keyword-only *parameters* (including |\n'
          '|                                                    | arguments '
          'with default values) that the function   |\n'
          '|                                                    | '
          'has                                                |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_nlocals                              | The number '
          'of local variables used by the function |\n'
          '|                                                    | (including '
          'parameters)                             |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_varnames                             | A "tuple" '
          'containing the names of the local        |\n'
          '|                                                    | variables in '
          'the function (starting with the       |\n'
          '|                                                    | parameter '
          'names)                                   |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_cellvars                             | A "tuple" '
          'containing the names of local variables  |\n'
          '|                                                    | that are '
          'referenced from at least one *nested      |\n'
          '|                                                    | scope* '
          'inside the function                         |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_freevars                             | A "tuple" '
          'containing the names of *free (closure)  |\n'
          '|                                                    | variables* '
          'that a *nested scope* references in an  |\n'
          '|                                                    | outer scope. '
          'See also "function.__closure__".      |\n'
          '|                                                    | Note: '
          'references to global and builtin names are   |\n'
          '|                                                    | *not* '
          'included.                                    |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_code                                 | A string '
          'representing the sequence of *bytecode*   |\n'
          '|                                                    | instructions '
          'in the function                       |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_consts                               | A "tuple" '
          'containing the literals used by the      |\n'
          '|                                                    | *bytecode* '
          'in the function                         |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_names                                | A "tuple" '
          'containing the names used by the         |\n'
          '|                                                    | *bytecode* '
          'in the function                         |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_filename                             | The name of '
          'the file from which the code was       |\n'
          '|                                                    | '
          'compiled                                           |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_firstlineno                          | The line '
          'number of the first line of the function  |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_lnotab                               | A string '
          'encoding the mapping from *bytecode*      |\n'
          '|                                                    | offsets to '
          'line numbers. For details, see the      |\n'
          '|                                                    | source code '
          'of the interpreter.  Deprecated since  |\n'
          '|                                                    | version '
          '3.12: This attribute of code objects is    |\n'
          '|                                                    | deprecated, '
          'and may be removed in Python 3.15.     |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_stacksize                            | The required '
          'stack size of the code object         |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| codeobject.co_flags                                | An "integer" '
          'encoding a number of flags for the    |\n'
          '|                                                    | '
          'interpreter.                                       |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '\n'
          'The following flag bits are defined for "co_flags": bit "0x04" is '
          'set\n'
          'if the function uses the "*arguments" syntax to accept an '
          'arbitrary\n'
          'number of positional arguments; bit "0x08" is set if the function '
          'uses\n'
          'the "**keywords" syntax to accept arbitrary keyword arguments; bit\n'
          '"0x20" is set if the function is a generator. See Code Objects Bit\n'
          'Flags for details on the semantics of each flags that might be\n'
          'present.\n'
          '\n'
          'Future feature declarations ("from __future__ import division") '
          'also\n'
          'use bits in "co_flags" to indicate whether a code object was '
          'compiled\n'
          'with a particular feature enabled: bit "0x2000" is set if the '
          'function\n'
          'was compiled with future division enabled; bits "0x10" and '
          '"0x1000"\n'
          'were used in earlier versions of Python.\n'
          '\n'
          'Other bits in "co_flags" are reserved for internal use.\n'
          '\n'
          'If a code object represents a function and has a docstring, the '
          'first\n'
          'item in "co_consts" is the docstring of the function.\n'
          '\n'
          '\n'
          'Methods on code objects\n'
          '~~~~~~~~~~~~~~~~~~~~~~~\n'
          '\n'
          'codeobject.co_positions()\n'
          '\n'
          '   Returns an iterable over the source code positions of each\n'
          '   *bytecode* instruction in the code object.\n'
          '\n'
          '   The iterator returns "tuple"s containing the "(start_line,\n'
          '   end_line, start_column, end_column)". The *i-th* tuple '
          'corresponds\n'
          '   to the position of the source code that compiled to the *i-th* '
          'code\n'
          '   unit. Column information is 0-indexed utf-8 byte offsets on the\n'
          '   given source line.\n'
          '\n'
          '   This positional information can be missing. A non-exhaustive '
          'lists\n'
          '   of cases where this may happen:\n'
          '\n'
          '   * Running the interpreter with "-X" "no_debug_ranges".\n'
          '\n'
          '   * Loading a pyc file compiled while using "-X" '
          '"no_debug_ranges".\n'
          '\n'
          '   * Position tuples corresponding to artificial instructions.\n'
          '\n'
          '   * Line and column numbers that can’t be represented due to\n'
          '     implementation specific limitations.\n'
          '\n'
          '   When this occurs, some or all of the tuple elements can be '
          '"None".\n'
          '\n'
          '   Added in version 3.11.\n'
          '\n'
          '   Note:\n'
          '\n'
          '     This feature requires storing column positions in code '
          'objects\n'
          '     which may result in a small increase of disk usage of '
          'compiled\n'
          '     Python files or interpreter memory usage. To avoid storing '
          'the\n'
          '     extra information and/or deactivate printing the extra '
          'traceback\n'
          '     information, the "-X" "no_debug_ranges" command line flag or '
          'the\n'
          '     "PYTHONNODEBUGRANGES" environment variable can be used.\n'
          '\n'
          'codeobject.co_lines()\n'
          '\n'
          '   Returns an iterator that yields information about successive '
          'ranges\n'
          '   of *bytecode*s. Each item yielded is a "(start, end, lineno)"\n'
          '   "tuple":\n'
          '\n'
          '   * "start" (an "int") represents the offset (inclusive) of the '
          'start\n'
          '     of the *bytecode* range\n'
          '\n'
          '   * "end" (an "int") represents the offset (exclusive) of the end '
          'of\n'
          '     the *bytecode* range\n'
          '\n'
          '   * "lineno" is an "int" representing the line number of the\n'
          '     *bytecode* range, or "None" if the bytecodes in the given '
          'range\n'
          '     have no line number\n'
          '\n'
          '   The items yielded will have the following properties:\n'
          '\n'
          '   * The first range yielded will have a "start" of 0.\n'
          '\n'
          '   * The "(start, end)" ranges will be non-decreasing and '
          'consecutive.\n'
          '     That is, for any pair of "tuple"s, the "start" of the second '
          'will\n'
          '     be equal to the "end" of the first.\n'
          '\n'
          '   * No range will be backwards: "end >= start" for all triples.\n'
          '\n'
          '   * The last "tuple" yielded will have "end" equal to the size of '
          'the\n'
          '     *bytecode*.\n'
          '\n'
          '   Zero-width ranges, where "start == end", are allowed. '
          'Zero-width\n'
          '   ranges are used for lines that are present in the source code, '
          'but\n'
          '   have been eliminated by the *bytecode* compiler.\n'
          '\n'
          '   Added in version 3.10.\n'
          '\n'
          '   See also:\n'
          '\n'
          '     **PEP 626** - Precise line numbers for debugging and other '
          'tools.\n'
          '        The PEP that introduced the "co_lines()" method.\n'
          '\n'
          'codeobject.replace(**kwargs)\n'
          '\n'
          '   Return a copy of the code object with new values for the '
          'specified\n'
          '   fields.\n'
          '\n'
          '   Code objects are also supported by the generic function\n'
          '   "copy.replace()".\n'
          '\n'
          '   Added in version 3.8.\n'
          '\n'
          '\n'
          'Frame objects\n'
          '-------------\n'
          '\n'
          'Frame objects represent execution frames.  They may occur in '
          'traceback\n'
          'objects, and are also passed to registered trace functions.\n'
          '\n'
          '\n'
          'Special read-only attributes\n'
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n'
          '\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| frame.f_back                                       | Points to '
          'the previous stack frame (towards the    |\n'
          '|                                                    | caller), or '
          '"None" if this is the bottom stack     |\n'
          '|                                                    | '
          'frame                                              |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| frame.f_code                                       | The code '
          'object being executed in this frame.      |\n'
          '|                                                    | Accessing '
          'this attribute raises an auditing event  |\n'
          '|                                                    | '
          '"object.__getattr__" with arguments "obj" and      |\n'
          '|                                                    | '
          '""f_code"".                                        |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| frame.f_locals                                     | The mapping '
          'used by the frame to look up local     |\n'
          '|                                                    | variables. '
          'If the frame refers to an *optimized    |\n'
          '|                                                    | scope*, this '
          'may return a write-through proxy      |\n'
          '|                                                    | object.  '
          'Changed in version 3.13: Return a proxy   |\n'
          '|                                                    | for '
          'optimized scopes.                              |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| frame.f_globals                                    | The '
          'dictionary used by the frame to look up global |\n'
          '|                                                    | '
          'variables                                          |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| frame.f_builtins                                   | The '
          'dictionary used by the frame to look up built- |\n'
          '|                                                    | in '
          '(intrinsic) names                               |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| frame.f_lasti                                      | The “precise '
          'instruction” of the frame object      |\n'
          '|                                                    | (this is an '
          'index into the *bytecode* string of    |\n'
          '|                                                    | the code '
          'object)                                   |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '\n'
          '\n'
          'Special writable attributes\n'
          '~~~~~~~~~~~~~~~~~~~~~~~~~~~\n'
          '\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| frame.f_trace                                      | If not '
          '"None", this is a function called for       |\n'
          '|                                                    | various '
          'events during code execution (this is used |\n'
          '|                                                    | by '
          'debuggers). Normally an event is triggered for  |\n'
          '|                                                    | each new '
          'source line (see "f_trace_lines").        |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| frame.f_trace_lines                                | Set this '
          'attribute to "False" to disable           |\n'
          '|                                                    | triggering a '
          'tracing event for each source line.   |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| frame.f_trace_opcodes                              | Set this '
          'attribute to "True" to allow per-opcode   |\n'
          '|                                                    | events to be '
          'requested. Note that this may lead to |\n'
          '|                                                    | undefined '
          'interpreter behaviour if exceptions      |\n'
          '|                                                    | raised by '
          'the trace function escape to the         |\n'
          '|                                                    | function '
          'being traced.                             |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| frame.f_lineno                                     | The current '
          'line number of the frame – writing to  |\n'
          '|                                                    | this from '
          'within a trace function jumps to the     |\n'
          '|                                                    | given line '
          '(only for the bottom-most frame).  A    |\n'
          '|                                                    | debugger can '
          'implement a Jump command (aka Set     |\n'
          '|                                                    | Next '
          'Statement) by writing to this attribute.      |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '\n'
          '\n'
          'Frame object methods\n'
          '~~~~~~~~~~~~~~~~~~~~\n'
          '\n'
          'Frame objects support one method:\n'
          '\n'
          'frame.clear()\n'
          '\n'
          '   This method clears all references to local variables held by '
          'the\n'
          '   frame.  Also, if the frame belonged to a *generator*, the '
          'generator\n'
          '   is finalized.  This helps break reference cycles involving '
          'frame\n'
          '   objects (for example when catching an exception and storing its\n'
          '   traceback for later use).\n'
          '\n'
          '   "RuntimeError" is raised if the frame is currently executing or\n'
          '   suspended.\n'
          '\n'
          '   Added in version 3.4.\n'
          '\n'
          '   Changed in version 3.13: Attempting to clear a suspended frame\n'
          '   raises "RuntimeError" (as has always been the case for '
          'executing\n'
          '   frames).\n'
          '\n'
          '\n'
          'Traceback objects\n'
          '-----------------\n'
          '\n'
          'Traceback objects represent the stack trace of an exception. A\n'
          'traceback object is implicitly created when an exception occurs, '
          'and\n'
          'may also be explicitly created by calling "types.TracebackType".\n'
          '\n'
          'Changed in version 3.7: Traceback objects can now be explicitly\n'
          'instantiated from Python code.\n'
          '\n'
          'For implicitly created tracebacks, when the search for an '
          'exception\n'
          'handler unwinds the execution stack, at each unwound level a '
          'traceback\n'
          'object is inserted in front of the current traceback.  When an\n'
          'exception handler is entered, the stack trace is made available to '
          'the\n'
          'program. (See section The try statement.) It is accessible as the\n'
          'third item of the tuple returned by "sys.exc_info()", and as the\n'
          '"__traceback__" attribute of the caught exception.\n'
          '\n'
          'When the program contains no suitable handler, the stack trace is\n'
          'written (nicely formatted) to the standard error stream; if the\n'
          'interpreter is interactive, it is also made available to the user '
          'as\n'
          '"sys.last_traceback".\n'
          '\n'
          'For explicitly created tracebacks, it is up to the creator of the\n'
          'traceback to determine how the "tb_next" attributes should be '
          'linked\n'
          'to form a full stack trace.\n'
          '\n'
          'Special read-only attributes:\n'
          '\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| traceback.tb_frame                                 | Points to '
          'the execution frame of the current       |\n'
          '|                                                    | level.  '
          'Accessing this attribute raises an         |\n'
          '|                                                    | auditing '
          'event "object.__getattr__" with arguments |\n'
          '|                                                    | "obj" and '
          '""tb_frame"".                            |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| traceback.tb_lineno                                | Gives the '
          'line number where the exception occurred |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '| traceback.tb_lasti                                 | Indicates '
          'the “precise instruction”.               |\n'
          '+----------------------------------------------------+----------------------------------------------------+\n'
          '\n'
          'The line number and last instruction in the traceback may differ '
          'from\n'
          'the line number of its frame object if the exception occurred in a\n'
          '"try" statement with no matching except clause or with a "finally"\n'
          'clause.\n'
          '\n'
          'traceback.tb_next\n'
          '\n'
          '   The special writable attribute "tb_next" is the next level in '
          'the\n'
          '   stack trace (towards the frame where the exception occurred), '
          'or\n'
          '   "None" if there is no next level.\n'
          '\n'
          '   Changed in version 3.7: This attribute is now writable\n'
          '\n'
          '\n'
          'Slice objects\n'
          '-------------\n'
          '\n'
          'Slice objects are used to represent slices for "__getitem__()"\n'
          'methods.  They are also created by the built-in "slice()" '
          'function.\n'
          '\n'
          'Special read-only attributes: "start" is the lower bound; "stop" '
          'is\n'
          'the upper bound; "step" is the step value; each is "None" if '
          'omitted.\n'
          'These attributes can have any type.\n'
          '\n'
          'Slice objects support one method:\n'
          '\n'
          'slice.indices(self, length)\n'
          '\n'
          '   This method takes a single integer argument *length* and '
          'computes\n'
          '   information about the slice that the slice object would describe '
          'if\n'
          '   applied to a sequence of *length* items.  It returns a tuple of\n'
          '   three integers; respectively these are the *start* and *stop*\n'
          '   indices and the *step* or stride length of the slice. Missing '
          'or\n'
          '   out-of-bounds indices are handled in a manner consistent with\n'
          '   regular slices.\n'
          '\n'
          '\n'
          'Static method objects\n'
          '---------------------\n'
          '\n'
          'Static method objects provide a way of defeating the transformation '
          'of\n'
          'function objects to method objects described above. A static '
          'method\n'
          'object is a wrapper around any other object, usually a '
          'user-defined\n'
          'method object. When a static method object is retrieved from a '
          'class\n'
          'or a class instance, the object actually returned is the wrapped\n'
          'object, which is not subject to any further transformation. Static\n'
          'method objects are also callable. Static method objects are created '
          'by\n'
          'the built-in "staticmethod()" constructor.\n'
          '\n'
          '\n'
          'Class method objects\n'
          '--------------------\n'
          '\n'
          'A class method object, like a static method object, is a wrapper\n'
          'around another object that alters the way in which that object is\n'
          'retrieved from classes and class instances. The behaviour of class\n'
          'method objects upon such retrieval is described above, under '
          '“instance\n'
          'methods”. Class method objects are created by the built-in\n'
          '"classmethod()" constructor.\n',
 'typesfunctions': 'Functions\n'
                   '*********\n'
                   '\n'
                   'Function objects are created by function definitions.  The '
                   'only\n'
                   'operation on a function object is to call it: '
                   '"func(argument-list)".\n'
                   '\n'
                   'There are really two flavors of function objects: built-in '
                   'functions\n'
                   'and user-defined functions.  Both support the same '
                   'operation (to call\n'
                   'the function), but the implementation is different, hence '
                   'the\n'
                   'different object types.\n'
                   '\n'
                   'See Function definitions for more information.\n',
 'typesmapping': 'Mapping Types — "dict"\n'
                 '**********************\n'
                 '\n'
                 'A *mapping* object maps *hashable* values to arbitrary '
                 'objects.\n'
                 'Mappings are mutable objects.  There is currently only one '
                 'standard\n'
                 'mapping type, the *dictionary*.  (For other containers see '
                 'the built-\n'
                 'in "list", "set", and "tuple" classes, and the "collections" '
                 'module.)\n'
                 '\n'
                 'A dictionary’s keys are *almost* arbitrary values.  Values '
                 'that are\n'
                 'not *hashable*, that is, values containing lists, '
                 'dictionaries or\n'
                 'other mutable types (that are compared by value rather than '
                 'by object\n'
                 'identity) may not be used as keys. Values that compare equal '
                 '(such as\n'
                 '"1", "1.0", and "True") can be used interchangeably to index '
                 'the same\n'
                 'dictionary entry.\n'
                 '\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'
                 '   If no positional argument is given, an empty dictionary '
                 'is created.\n'
                 '   If a positional argument is given and it defines a '
                 '"keys()" method,\n'
                 '   a dictionary is created by calling "__getitem__()" on the '
                 'argument\n'
                 '   with each returned key from the method.  Otherwise, the '
                 'positional\n'
                 '   argument must be an *iterable* object.  Each item in the '
                 'iterable\n'
                 '   must itself be an iterable with exactly two elements.  '
                 'The first\n'
                 '   element of each item becomes a key in the new dictionary, '
                 'and the\n'
                 '   second element the corresponding value.  If a key occurs '
                 'more than\n'
                 '   once, the last value for that key becomes the '
                 'corresponding value\n'
                 '   in the new dictionary.\n'
                 '\n'
                 '   If keyword arguments are given, the keyword arguments and '
                 'their\n'
                 '   values are added to the dictionary created from the '
                 'positional\n'
                 '   argument.  If a key being added is already present, the '
                 'value from\n'
                 '   the keyword argument replaces the value from the '
                 'positional\n'
                 '   argument.\n'
                 '\n'
                 '   To illustrate, the following examples all return a '
                 'dictionary equal\n'
                 '   to "{"one": 1, "two": 2, "three": 3}":\n'
                 '\n'
                 '      >>> a = dict(one=1, two=2, three=3)\n'
                 "      >>> b = {'one': 1, 'two': 2, 'three': 3}\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'
                 '      True\n'
                 '\n'
                 '   Providing keyword arguments as in the first example only '
                 'works for\n'
                 '   keys that are valid Python identifiers.  Otherwise, any '
                 'valid keys\n'
                 '   can be used.\n'
                 '\n'
                 '   These are the operations that dictionaries support (and '
                 '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'
                 '   len(d)\n'
                 '\n'
                 '      Return the number of items in the dictionary *d*.\n'
                 '\n'
                 '   d[key]\n'
                 '\n'
                 '      Return the item of *d* with key *key*.  Raises a '
                 '"KeyError" if\n'
                 '      *key* is not in the map.\n'
                 '\n'
                 '      If a subclass of dict defines a method "__missing__()" '
                 'and *key*\n'
                 '      is not present, the "d[key]" operation calls that '
                 'method with\n'
                 '      the key *key* as argument.  The "d[key]" operation '
                 'then returns\n'
                 '      or raises whatever is returned or raised by the\n'
                 '      "__missing__(key)" call. No other operations or '
                 'methods invoke\n'
                 '      "__missing__()". If "__missing__()" is not defined, '
                 '"KeyError"\n'
                 '      is raised. "__missing__()" must be a method; it cannot '
                 'be an\n'
                 '      instance variable:\n'
                 '\n'
                 '         >>> class Counter(dict):\n'
                 '         ...     def __missing__(self, key):\n'
                 '         ...         return 0\n'
                 '         ...\n'
                 '         >>> c = Counter()\n'
                 "         >>> c['red']\n"
                 '         0\n'
                 "         >>> c['red'] += 1\n"
                 "         >>> c['red']\n"
                 '         1\n'
                 '\n'
                 '      The example above shows part of the implementation of\n'
                 '      "collections.Counter".  A different "__missing__" '
                 'method is used\n'
                 '      by "collections.defaultdict".\n'
                 '\n'
                 '   d[key] = value\n'
                 '\n'
                 '      Set "d[key]" to *value*.\n'
                 '\n'
                 '   del d[key]\n'
                 '\n'
                 '      Remove "d[key]" from *d*.  Raises a "KeyError" if '
                 '*key* is not\n'
                 '      in the map.\n'
                 '\n'
                 '   key in d\n'
                 '\n'
                 '      Return "True" if *d* has a key *key*, else "False".\n'
                 '\n'
                 '   key not in d\n'
                 '\n'
                 '      Equivalent to "not key in d".\n'
                 '\n'
                 '   iter(d)\n'
                 '\n'
                 '      Return an iterator over the keys of the dictionary.  '
                 'This is a\n'
                 '      shortcut for "iter(d.keys())".\n'
                 '\n'
                 '   clear()\n'
                 '\n'
                 '      Remove all items from the dictionary.\n'
                 '\n'
                 '   copy()\n'
                 '\n'
                 '      Return a shallow copy of the dictionary.\n'
                 '\n'
                 '   classmethod fromkeys(iterable, value=None, /)\n'
                 '\n'
                 '      Create a new dictionary with keys from *iterable* and '
                 'values set\n'
                 '      to *value*.\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'
                 '\n'
                 '   get(key, default=None)\n'
                 '\n'
                 '      Return the value for *key* if *key* is in the '
                 'dictionary, else\n'
                 '      *default*. If *default* is not given, it defaults to '
                 '"None", so\n'
                 '      that this method never raises a "KeyError".\n'
                 '\n'
                 '   items()\n'
                 '\n'
                 '      Return a new view of the dictionary’s items ("(key, '
                 'value)"\n'
                 '      pairs). See the documentation of view objects.\n'
                 '\n'
                 '   keys()\n'
                 '\n'
                 '      Return a new view of the dictionary’s keys.  See the\n'
                 '      documentation of view objects.\n'
                 '\n'
                 '   pop(key[, default])\n'
                 '\n'
                 '      If *key* is in the dictionary, remove it and return '
                 'its value,\n'
                 '      else return *default*.  If *default* is not given and '
                 '*key* is\n'
                 '      not in the dictionary, a "KeyError" is raised.\n'
                 '\n'
                 '   popitem()\n'
                 '\n'
                 '      Remove and return a "(key, value)" pair from the '
                 'dictionary.\n'
                 '      Pairs are returned in LIFO (last-in, first-out) '
                 'order.\n'
                 '\n'
                 '      "popitem()" is useful to destructively iterate over a\n'
                 '      dictionary, as often used in set algorithms.  If the '
                 'dictionary\n'
                 '      is empty, calling "popitem()" raises a "KeyError".\n'
                 '\n'
                 '      Changed in version 3.7: LIFO order is now guaranteed. '
                 'In prior\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'
                 '      Added in version 3.8.\n'
                 '\n'
                 '   setdefault(key, default=None)\n'
                 '\n'
                 '      If *key* is in the dictionary, return its value.  If '
                 'not, insert\n'
                 '      *key* with a value of *default* and return *default*.  '
                 '*default*\n'
                 '      defaults to "None".\n'
                 '\n'
                 '   update([other])\n'
                 '\n'
                 '      Update the dictionary with the key/value pairs from '
                 '*other*,\n'
                 '      overwriting existing keys.  Return "None".\n'
                 '\n'
                 '      "update()" accepts either another object with a '
                 '"keys()" method\n'
                 '      (in which case "__getitem__()" is called with every '
                 'key returned\n'
                 '      from the method) or an iterable of key/value pairs (as '
                 'tuples or\n'
                 '      other iterables of length two). If keyword arguments '
                 'are\n'
                 '      specified, the dictionary is then updated with those '
                 'key/value\n'
                 '      pairs: "d.update(red=1, blue=2)".\n'
                 '\n'
                 '   values()\n'
                 '\n'
                 '      Return a new view of the dictionary’s values.  See '
                 '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'
                 '      Added 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'
                 '      Added 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'
                 '\n'
                 '   Dictionaries preserve insertion order.  Note that '
                 'updating a key\n'
                 '   does not affect the order.  Keys added after deletion are '
                 'inserted\n'
                 '   at the end.\n'
                 '\n'
                 '      >>> d = {"one": 1, "two": 2, "three": 3, "four": 4}\n'
                 '      >>> d\n'
                 "      {'one': 1, 'two': 2, 'three': 3, 'four': 4}\n"
                 '      >>> list(d)\n'
                 "      ['one', 'two', 'three', 'four']\n"
                 '      >>> list(d.values())\n'
                 '      [1, 2, 3, 4]\n'
                 '      >>> d["one"] = 42\n'
                 '      >>> d\n'
                 "      {'one': 42, 'two': 2, 'three': 3, 'four': 4}\n"
                 '      >>> del d["two"]\n'
                 '      >>> d["two"] = None\n'
                 '      >>> d\n'
                 "      {'one': 42, 'three': 3, 'four': 4, 'two': None}\n"
                 '\n'
                 '   Changed in version 3.7: Dictionary order is guaranteed to '
                 'be\n'
                 '   insertion order.  This behavior was an implementation '
                 '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'
                 'Dictionary view objects\n'
                 '=======================\n'
                 '\n'
                 'The objects returned by "dict.keys()", "dict.values()" and\n'
                 '"dict.items()" are *view objects*.  They provide a dynamic '
                 'view on the\n'
                 'dictionary’s entries, which means that when the dictionary '
                 'changes,\n'
                 'the view reflects these changes.\n'
                 '\n'
                 'Dictionary views can be iterated over to yield their '
                 'respective data,\n'
                 'and support membership tests:\n'
                 '\n'
                 'len(dictview)\n'
                 '\n'
                 '   Return the number of entries in the dictionary.\n'
                 '\n'
                 'iter(dictview)\n'
                 '\n'
                 '   Return an iterator over the keys, values or items '
                 '(represented as\n'
                 '   tuples of "(key, value)") in the dictionary.\n'
                 '\n'
                 '   Keys and values are iterated over in insertion order. '
                 'This allows\n'
                 '   the creation of "(value, key)" pairs using "zip()": '
                 '"pairs =\n'
                 '   zip(d.values(), d.keys())".  Another way to create the '
                 'same list is\n'
                 '   "pairs = [(v, k) for (k, v) in d.items()]".\n'
                 '\n'
                 '   Iterating views while adding or deleting entries in the '
                 'dictionary\n'
                 '   may raise a "RuntimeError" or fail to iterate over all '
                 'entries.\n'
                 '\n'
                 '   Changed in version 3.7: Dictionary order is guaranteed to '
                 'be\n'
                 '   insertion order.\n'
                 '\n'
                 'x in dictview\n'
                 '\n'
                 '   Return "True" if *x* is in the underlying dictionary’s '
                 'keys, values\n'
                 '   or items (in the latter case, *x* should be a "(key, '
                 'value)"\n'
                 '   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'
                 'dictview.mapping\n'
                 '\n'
                 '   Return a "types.MappingProxyType" that wraps the '
                 'original\n'
                 '   dictionary to which the view refers.\n'
                 '\n'
                 '   Added in version 3.10.\n'
                 '\n'
                 'Keys views are set-like since their entries are unique and '
                 '*hashable*.\n'
                 'Items views also have set-like operations since the (key, '
                 'value) pairs\n'
                 'are unique and the keys are hashable. If all values in an '
                 'items view\n'
                 'are hashable as well, then the items view can interoperate '
                 'with other\n'
                 'sets. (Values views are not treated as set-like since the '
                 'entries are\n'
                 'generally not unique.)  For set-like views, all of the '
                 'operations\n'
                 'defined for the abstract base class "collections.abc.Set" '
                 'are\n'
                 'available (for example, "==", "<", or "^").  While using '
                 'set\n'
                 'operators, set-like views accept any iterable as the other '
                 'operand,\n'
                 'unlike sets which only accept sets as the input.\n'
                 '\n'
                 'An example of dictionary view usage:\n'
                 '\n'
                 "   >>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, "
                 "'spam': 500}\n"
                 '   >>> keys = dishes.keys()\n'
                 '   >>> values = dishes.values()\n'
                 '\n'
                 '   >>> # iteration\n'
                 '   >>> n = 0\n'
                 '   >>> for val in values:\n'
                 '   ...     n += val\n'
                 '   ...\n'
                 '   >>> print(n)\n'
                 '   504\n'
                 '\n'
                 '   >>> # keys and values are iterated over in the same order '
                 '(insertion order)\n'
                 '   >>> list(keys)\n'
                 "   ['eggs', 'sausage', 'bacon', 'spam']\n"
                 '   >>> list(values)\n'
                 '   [2, 1, 1, 500]\n'
                 '\n'
                 '   >>> # view objects are dynamic and reflect dict changes\n'
                 "   >>> del dishes['eggs']\n"
                 "   >>> del dishes['sausage']\n"
                 '   >>> list(keys)\n'
                 "   ['bacon', 'spam']\n"
                 '\n'
                 '   >>> # set operations\n'
                 "   >>> keys & {'eggs', 'bacon', 'salad'}\n"
                 "   {'bacon'}\n"
                 "   >>> keys ^ {'sausage', 'juice'} == {'juice', 'sausage', "
                 "'bacon', 'spam'}\n"
                 '   True\n'
                 "   >>> keys | ['juice', 'juice', 'juice'] == {'bacon', "
                 "'spam', 'juice'}\n"
                 '   True\n'
                 '\n'
                 '   >>> # get back a read-only proxy for the original '
                 'dictionary\n'
                 '   >>> values.mapping\n'
                 "   mappingproxy({'bacon': 1, 'spam': 500})\n"
                 "   >>> values.mapping['spam']\n"
                 '   500\n',
 'typesmethods': 'Methods\n'
                 '*******\n'
                 '\n'
                 'Methods are functions that are called using the attribute '
                 'notation.\n'
                 'There are two flavors: built-in methods (such as "append()" '
                 'on lists)\n'
                 'and class instance method. Built-in methods are described '
                 'with the\n'
                 'types that support them.\n'
                 '\n'
                 'If you access a method (a function defined in a class '
                 'namespace)\n'
                 'through an instance, you get a special object: a *bound '
                 'method* (also\n'
                 'called instance method) object. When called, it will add the '
                 '"self"\n'
                 'argument to the argument list.  Bound methods have two '
                 'special read-\n'
                 'only attributes: "m.__self__" is the object on which the '
                 'method\n'
                 'operates, and "m.__func__" is the function implementing the '
                 'method.\n'
                 'Calling "m(arg-1, arg-2, ..., arg-n)" is completely '
                 'equivalent to\n'
                 'calling "m.__func__(m.__self__, arg-1, arg-2, ..., arg-n)".\n'
                 '\n'
                 'Like function objects, bound method objects support getting '
                 'arbitrary\n'
                 'attributes.  However, since method attributes are actually '
                 'stored on\n'
                 'the underlying function object ("method.__func__"), setting '
                 'method\n'
                 'attributes on bound methods is disallowed.  Attempting to '
                 'set an\n'
                 'attribute on a method results in an "AttributeError" being '
                 'raised.  In\n'
                 'order to set a method attribute, you need to explicitly set '
                 'it on the\n'
                 'underlying function object:\n'
                 '\n'
                 '   >>> class C:\n'
                 '   ...     def method(self):\n'
                 '   ...         pass\n'
                 '   ...\n'
                 '   >>> c = C()\n'
                 "   >>> c.method.whoami = 'my name is method'  # can't set on "
                 'the method\n'
                 '   Traceback (most recent call last):\n'
                 '     File "<stdin>", line 1, in <module>\n'
                 "   AttributeError: 'method' object has no attribute "
                 "'whoami'\n"
                 "   >>> c.method.__func__.whoami = 'my name is method'\n"
                 '   >>> c.method.whoami\n'
                 "   'my name is method'\n"
                 '\n'
                 'See Instance methods for more information.\n',
 'typesmodules': 'Modules\n'
                 '*******\n'
                 '\n'
                 'The only special operation on a module is attribute access: '
                 '"m.name",\n'
                 'where *m* is a module and *name* accesses a name defined in '
                 '*m*’s\n'
                 'symbol table. Module attributes can be assigned to.  (Note '
                 'that the\n'
                 '"import" statement is not, strictly speaking, an operation '
                 'on a module\n'
                 'object; "import foo" does not require a module object named '
                 '*foo* to\n'
                 'exist, rather it requires an (external) *definition* for a '
                 'module\n'
                 'named *foo* somewhere.)\n'
                 '\n'
                 'A special attribute of every module is "__dict__". This is '
                 'the\n'
                 'dictionary containing the module’s symbol table. Modifying '
                 'this\n'
                 'dictionary will actually change the module’s symbol table, '
                 'but direct\n'
                 'assignment to the "__dict__" attribute is not possible (you '
                 'can write\n'
                 '"m.__dict__[\'a\'] = 1", which defines "m.a" to be "1", but '
                 'you can’t\n'
                 'write "m.__dict__ = {}").  Modifying "__dict__" directly is '
                 'not\n'
                 'recommended.\n'
                 '\n'
                 'Modules built into the interpreter are written like this: '
                 '"<module\n'
                 '\'sys\' (built-in)>".  If loaded from a file, they are '
                 'written as\n'
                 '"<module \'os\' from '
                 '\'/usr/local/lib/pythonX.Y/os.pyc\'>".\n',
 'typesseq': 'Sequence Types — "list", "tuple", "range"\n'
             '*****************************************\n'
             '\n'
             'There are three basic sequence types: lists, tuples, and range\n'
             'objects. Additional sequence types tailored for processing of '
             'binary\n'
             'data and text strings are described in dedicated sections.\n'
             '\n'
             '\n'
             'Common Sequence Operations\n'
             '==========================\n'
             '\n'
             'The operations in the following table are supported by most '
             'sequence\n'
             'types, both mutable and immutable. The '
             '"collections.abc.Sequence" ABC\n'
             'is provided to make it easier to correctly implement these '
             'operations\n'
             'on custom sequence types.\n'
             '\n'
             'This table lists the sequence operations sorted in ascending '
             'priority.\n'
             'In the table, *s* and *t* are sequences of the same type, *n*, '
             '*i*,\n'
             '*j* and *k* are integers and *x* is an arbitrary object that '
             'meets any\n'
             'type and value restrictions imposed by *s*.\n'
             '\n'
             'The "in" and "not in" operations have the same priorities as '
             'the\n'
             'comparison operations. The "+" (concatenation) and "*" '
             '(repetition)\n'
             'operations have the same priority as the corresponding numeric\n'
             'operations. [3]\n'
             '\n'
             '+----------------------------+----------------------------------+------------+\n'
             '| Operation                  | Result                           '
             '| Notes      |\n'
             '|============================|==================================|============|\n'
             '| "x in s"                   | "True" if an item of *s* is      '
             '| (1)        |\n'
             '|                            | equal to *x*, else "False"       '
             '|            |\n'
             '+----------------------------+----------------------------------+------------+\n'
             '| "x not in s"               | "False" if an item of *s* is     '
             '| (1)        |\n'
             '|                            | equal to *x*, else "True"        '
             '|            |\n'
             '+----------------------------+----------------------------------+------------+\n'
             '| "s + t"                    | the concatenation of *s* and *t* '
             '| (6)(7)     |\n'
             '+----------------------------+----------------------------------+------------+\n'
             '| "s * n" or "n * s"         | equivalent to adding *s* to      '
             '| (2)(7)     |\n'
             '|                            | itself *n* times                 '
             '|            |\n'
             '+----------------------------+----------------------------------+------------+\n'
             '| "s[i]"                     | *i*th item of *s*, origin 0      '
             '| (3)        |\n'
             '+----------------------------+----------------------------------+------------+\n'
             '| "s[i:j]"                   | slice of *s* from *i* to *j*     '
             '| (3)(4)     |\n'
             '+----------------------------+----------------------------------+------------+\n'
             '| "s[i:j:k]"                 | slice of *s* from *i* to *j*     '
             '| (3)(5)     |\n'
             '|                            | with step *k*                    '
             '|            |\n'
             '+----------------------------+----------------------------------+------------+\n'
             '| "len(s)"                   | length of *s*                    '
             '|            |\n'
             '+----------------------------+----------------------------------+------------+\n'
             '| "min(s)"                   | smallest item of *s*             '
             '|            |\n'
             '+----------------------------+----------------------------------+------------+\n'
             '| "max(s)"                   | largest item of *s*              '
             '|            |\n'
             '+----------------------------+----------------------------------+------------+\n'
             '| "s.index(x[, i[, j]])"     | index of the first occurrence of '
             '| (8)        |\n'
             '|                            | *x* in *s* (at or after index    '
             '|            |\n'
             '|                            | *i* and before index *j*)        '
             '|            |\n'
             '+----------------------------+----------------------------------+------------+\n'
             '| "s.count(x)"               | total number of occurrences of   '
             '|            |\n'
             '|                            | *x* in *s*                       '
             '|            |\n'
             '+----------------------------+----------------------------------+------------+\n'
             '\n'
             'Sequences of the same type also support comparisons.  In '
             'particular,\n'
             'tuples and lists are compared lexicographically by comparing\n'
             'corresponding elements. This means that to compare equal, every\n'
             'element must compare equal and the two sequences must be of the '
             'same\n'
             'type and have the same length.  (For full details see '
             'Comparisons in\n'
             'the language reference.)\n'
             '\n'
             'Forward and reversed iterators over mutable sequences access '
             'values\n'
             'using an index.  That index will continue to march forward (or\n'
             'backward) even if the underlying sequence is mutated.  The '
             'iterator\n'
             'terminates only when an "IndexError" or a "StopIteration" is\n'
             'encountered (or when the index drops below zero).\n'
             '\n'
             'Notes:\n'
             '\n'
             '1. While the "in" and "not in" operations are used only for '
             'simple\n'
             '   containment testing in the general case, some specialised '
             'sequences\n'
             '   (such as "str", "bytes" and "bytearray") also use them for\n'
             '   subsequence testing:\n'
             '\n'
             '      >>> "gg" in "eggs"\n'
             '      True\n'
             '\n'
             '2. Values of *n* less than "0" are treated as "0" (which yields '
             'an\n'
             '   empty sequence of the same type as *s*).  Note that items in '
             'the\n'
             '   sequence *s* are not copied; they are referenced multiple '
             'times.\n'
             '   This often haunts new Python programmers; consider:\n'
             '\n'
             '      >>> lists = [[]] * 3\n'
             '      >>> lists\n'
             '      [[], [], []]\n'
             '      >>> lists[0].append(3)\n'
             '      >>> lists\n'
             '      [[3], [3], [3]]\n'
             '\n'
             '   What has happened is that "[[]]" is a one-element list '
             'containing\n'
             '   an empty list, so all three elements of "[[]] * 3" are '
             'references\n'
             '   to this single empty list.  Modifying any of the elements of\n'
             '   "lists" modifies this single list. You can create a list of\n'
             '   different lists this way:\n'
             '\n'
             '      >>> lists = [[] for i in range(3)]\n'
             '      >>> lists[0].append(3)\n'
             '      >>> lists[1].append(5)\n'
             '      >>> lists[2].append(7)\n'
             '      >>> lists\n'
             '      [[3], [5], [7]]\n'
             '\n'
             '   Further explanation is available in the FAQ entry How do I '
             'create a\n'
             '   multidimensional list?.\n'
             '\n'
             '3. If *i* or *j* is negative, the index is relative to the end '
             'of\n'
             '   sequence *s*: "len(s) + i" or "len(s) + j" is substituted.  '
             'But\n'
             '   note that "-0" is still "0".\n'
             '\n'
             '4. The slice of *s* from *i* to *j* is defined as the sequence '
             'of\n'
             '   items with index *k* such that "i <= k < j".  If *i* or *j* '
             'is\n'
             '   greater than "len(s)", use "len(s)".  If *i* is omitted or '
             '"None",\n'
             '   use "0".  If *j* is omitted or "None", use "len(s)".  If *i* '
             'is\n'
             '   greater than or equal to *j*, the slice is empty.\n'
             '\n'
             '5. The slice of *s* from *i* to *j* with step *k* is defined as '
             'the\n'
             '   sequence of items with index  "x = i + n*k" such that "0 <= n '
             '<\n'
             '   (j-i)/k".  In other words, the indices are "i", "i+k", '
             '"i+2*k",\n'
             '   "i+3*k" and so on, stopping when *j* is reached (but never\n'
             '   including *j*).  When *k* is positive, *i* and *j* are '
             'reduced to\n'
             '   "len(s)" if they are greater. When *k* is negative, *i* and '
             '*j* are\n'
             '   reduced to "len(s) - 1" if they are greater.  If *i* or *j* '
             'are\n'
             '   omitted or "None", they become “end” values (which end '
             'depends on\n'
             '   the sign of *k*).  Note, *k* cannot be zero. If *k* is '
             '"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'
             '\n'
             '   * if concatenating "str" objects, you can build a list and '
             'use\n'
             '     "str.join()" at the end or else write to an "io.StringIO"\n'
             '     instance and retrieve its value when complete\n'
             '\n'
             '   * if concatenating "bytes" objects, you can similarly use\n'
             '     "bytes.join()" or "io.BytesIO", or you can do in-place\n'
             '     concatenation with a "bytearray" object.  "bytearray" '
             'objects are\n'
             '     mutable and have an efficient overallocation mechanism\n'
             '\n'
             '   * if concatenating "tuple" objects, extend a "list" instead\n'
             '\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 '
             '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'
             'Immutable Sequence Types\n'
             '========================\n'
             '\n'
             'The only operation that immutable sequence types generally '
             'implement\n'
             'that is not also implemented by mutable sequence types is '
             'support for\n'
             'the "hash()" built-in.\n'
             '\n'
             'This support allows immutable sequences, such as "tuple" '
             'instances, to\n'
             'be used as "dict" keys and stored in "set" and "frozenset" '
             'instances.\n'
             '\n'
             'Attempting to hash an immutable sequence that contains '
             'unhashable\n'
             'values will result in "TypeError".\n'
             '\n'
             '\n'
             'Mutable Sequence Types\n'
             '======================\n'
             '\n'
             'The operations in the following table are defined on mutable '
             'sequence\n'
             'types. The "collections.abc.MutableSequence" ABC is provided to '
             'make\n'
             'it easier to correctly implement these operations on custom '
             'sequence\n'
             'types.\n'
             '\n'
             'In the table *s* is an instance of a mutable sequence type, *t* '
             'is any\n'
             'iterable object and *x* is an arbitrary object that meets any '
             'type and\n'
             'value restrictions imposed by *s* (for example, "bytearray" '
             'only\n'
             'accepts integers that meet the value restriction "0 <= x <= '
             '255").\n'
             '\n'
             '+--------------------------------+----------------------------------+-----------------------+\n'
             '| Operation                      | '
             'Result                           | Notes                 |\n'
             '|================================|==================================|=======================|\n'
             '| "s[i] = x"                     | item *i* of *s* is replaced '
             'by   |                       |\n'
             '|                                | '
             '*x*                              |                       |\n'
             '+--------------------------------+----------------------------------+-----------------------+\n'
             '| "s[i:j] = t"                   | slice of *s* from *i* to *j* '
             'is  |                       |\n'
             '|                                | replaced by the contents of '
             'the  |                       |\n'
             '|                                | iterable '
             '*t*                     |                       |\n'
             '+--------------------------------+----------------------------------+-----------------------+\n'
             '| "del s[i:j]"                   | same as "s[i:j] = '
             '[]"            |                       |\n'
             '+--------------------------------+----------------------------------+-----------------------+\n'
             '| "s[i:j:k] = t"                 | the elements of "s[i:j:k]" '
             'are   | (1)                   |\n'
             '|                                | replaced by those of '
             '*t*         |                       |\n'
             '+--------------------------------+----------------------------------+-----------------------+\n'
             '| "del s[i:j:k]"                 | removes the elements '
             'of          |                       |\n'
             '|                                | "s[i:j:k]" from the '
             'list         |                       |\n'
             '+--------------------------------+----------------------------------+-----------------------+\n'
             '| "s.append(x)"                  | appends *x* to the end of '
             'the    |                       |\n'
             '|                                | sequence (same '
             'as                |                       |\n'
             '|                                | "s[len(s):len(s)] = '
             '[x]")        |                       |\n'
             '+--------------------------------+----------------------------------+-----------------------+\n'
             '| "s.clear()"                    | removes all items from *s* '
             '(same | (5)                   |\n'
             '|                                | as "del '
             's[:]")                   |                       |\n'
             '+--------------------------------+----------------------------------+-----------------------+\n'
             '| "s.copy()"                     | creates a shallow copy of '
             '*s*    | (5)                   |\n'
             '|                                | (same as '
             '"s[:]")                 |                       |\n'
             '+--------------------------------+----------------------------------+-----------------------+\n'
             '| "s.extend(t)" or "s += t"      | extends *s* with the contents '
             'of |                       |\n'
             '|                                | *t* (for the most part the '
             'same  |                       |\n'
             '|                                | as "s[len(s):len(s)] = '
             't")       |                       |\n'
             '+--------------------------------+----------------------------------+-----------------------+\n'
             '| "s *= n"                       | updates *s* with its '
             'contents    | (6)                   |\n'
             '|                                | repeated *n* '
             'times               |                       |\n'
             '+--------------------------------+----------------------------------+-----------------------+\n'
             '| "s.insert(i, x)"               | inserts *x* into *s* at '
             'the      |                       |\n'
             '|                                | index given by *i* (same '
             'as      |                       |\n'
             '|                                | "s[i:i] = '
             '[x]")                  |                       |\n'
             '+--------------------------------+----------------------------------+-----------------------+\n'
             '| "s.pop()" or "s.pop(i)"        | retrieves the item at *i* '
             'and    | (2)                   |\n'
             '|                                | also removes it from '
             '*s*         |                       |\n'
             '+--------------------------------+----------------------------------+-----------------------+\n'
             '| "s.remove(x)"                  | removes the first item from '
             '*s*  | (3)                   |\n'
             '|                                | where "s[i]" is equal to '
             '*x*     |                       |\n'
             '+--------------------------------+----------------------------------+-----------------------+\n'
             '| "s.reverse()"                  | reverses the items of *s* '
             'in     | (4)                   |\n'
             '|                                | '
             'place                            |                       |\n'
             '+--------------------------------+----------------------------------+-----------------------+\n'
             '\n'
             'Notes:\n'
             '\n'
             '1. If *k* is not equal to "1", *t* must have the same length as '
             'the\n'
             '   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'
             '\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'
             '\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'
             '\n'
             '   Added in version 3.3: "clear()" and "copy()" methods.\n'
             '\n'
             '6. The value *n* is an integer, or an object implementing\n'
             '   "__index__()".  Zero and negative values of *n* clear the '
             'sequence.\n'
             '   Items in the sequence are not copied; they are referenced '
             'multiple\n'
             '   times, as explained for "s * n" under Common Sequence '
             'Operations.\n'
             '\n'
             '\n'
             'Lists\n'
             '=====\n'
             '\n'
             'Lists are mutable sequences, typically used to store collections '
             'of\n'
             'homogeneous items (where the precise degree of similarity will '
             'vary by\n'
             'application).\n'
             '\n'
             'class list([iterable])\n'
             '\n'
             '   Lists may be constructed in several ways:\n'
             '\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'
             '\n'
             '   * Using a list comprehension: "[x for x in iterable]"\n'
             '\n'
             '   * Using the type constructor: "list()" or "list(iterable)"\n'
             '\n'
             '   The constructor builds a list whose items are the same and in '
             'the\n'
             '   same order as *iterable*’s items.  *iterable* may be either '
             'a\n'
             '   sequence, a container that supports iteration, or an '
             'iterator\n'
             '   object.  If *iterable* is already a list, a copy is made and\n'
             '   returned, similar to "iterable[:]". For example, '
             '"list(\'abc\')"\n'
             '   returns "[\'a\', \'b\', \'c\']" and "list( (1, 2, 3) )" '
             'returns "[1, 2,\n'
             '   3]". If no argument is given, the constructor creates a new '
             'empty\n'
             '   list, "[]".\n'
             '\n'
             '   Many other operations also produce lists, including the '
             '"sorted()"\n'
             '   built-in.\n'
             '\n'
             '   Lists implement all of the common and mutable sequence '
             'operations.\n'
             '   Lists also provide the following additional method:\n'
             '\n'
             '   sort(*, key=None, reverse=False)\n'
             '\n'
             '      This method sorts the list in place, using only "<" '
             'comparisons\n'
             '      between items. Exceptions are not suppressed - if any '
             'comparison\n'
             '      operations fail, the entire sort operation will fail (and '
             'the\n'
             '      list will likely be left in a partially modified state).\n'
             '\n'
             '      "sort()" accepts two arguments that can only be passed by\n'
             '      keyword (keyword-only arguments):\n'
             '\n'
             '      *key* specifies a function of one argument that is used '
             'to\n'
             '      extract a comparison key from each list element (for '
             'example,\n'
             '      "key=str.lower"). The key corresponding to each item in '
             'the list\n'
             '      is calculated once and then used for the entire sorting '
             'process.\n'
             '      The default value of "None" means that list items are '
             'sorted\n'
             '      directly without calculating a separate key value.\n'
             '\n'
             '      The "functools.cmp_to_key()" utility is available to '
             'convert a\n'
             '      2.x style *cmp* function to a *key* function.\n'
             '\n'
             '      *reverse* is a boolean value.  If set to "True", then the '
             'list\n'
             '      elements are sorted as if each comparison were reversed.\n'
             '\n'
             '      This method modifies the sequence in place for economy of '
             'space\n'
             '      when sorting a large sequence.  To remind users that it '
             'operates\n'
             '      by side effect, it does not return the sorted sequence '
             '(use\n'
             '      "sorted()" to explicitly request a new sorted list '
             'instance).\n'
             '\n'
             '      The "sort()" method is guaranteed to be stable.  A sort '
             'is\n'
             '      stable if it guarantees not to change the relative order '
             'of\n'
             '      elements that compare equal — this is helpful for sorting '
             'in\n'
             '      multiple passes (for example, sort by department, then by '
             'salary\n'
             '      grade).\n'
             '\n'
             '      For sorting examples and a brief sorting tutorial, see '
             'Sorting\n'
             '      Techniques.\n'
             '\n'
             '      **CPython implementation detail:** While a list is being '
             'sorted,\n'
             '      the effect of attempting to mutate, or even inspect, the '
             'list is\n'
             '      undefined.  The C implementation of Python makes the list '
             'appear\n'
             '      empty for the duration, and raises "ValueError" if it can '
             'detect\n'
             '      that the list has been mutated during a sort.\n'
             '\n'
             '\n'
             'Tuples\n'
             '======\n'
             '\n'
             'Tuples are immutable sequences, typically used to store '
             'collections of\n'
             'heterogeneous data (such as the 2-tuples produced by the '
             '"enumerate()"\n'
             'built-in). Tuples are also used for cases where an immutable '
             'sequence\n'
             'of homogeneous data is needed (such as allowing storage in a '
             '"set" or\n'
             '"dict" instance).\n'
             '\n'
             'class tuple([iterable])\n'
             '\n'
             '   Tuples may be constructed in a number of ways:\n'
             '\n'
             '   * Using a pair of parentheses to denote the empty tuple: '
             '"()"\n'
             '\n'
             '   * Using a trailing comma for a singleton tuple: "a," or '
             '"(a,)"\n'
             '\n'
             '   * Separating items with commas: "a, b, c" or "(a, b, c)"\n'
             '\n'
             '   * Using the "tuple()" built-in: "tuple()" or '
             '"tuple(iterable)"\n'
             '\n'
             '   The constructor builds a tuple whose items are the same and '
             'in the\n'
             '   same order as *iterable*’s items.  *iterable* may be either '
             'a\n'
             '   sequence, a container that supports iteration, or an '
             'iterator\n'
             '   object.  If *iterable* is already a tuple, it is returned\n'
             '   unchanged. For example, "tuple(\'abc\')" returns "(\'a\', '
             '\'b\', \'c\')"\n'
             '   and "tuple( [1, 2, 3] )" returns "(1, 2, 3)". If no argument '
             'is\n'
             '   given, the constructor creates a new empty tuple, "()".\n'
             '\n'
             '   Note that it is actually the comma which makes a tuple, not '
             'the\n'
             '   parentheses. The parentheses are optional, except in the '
             'empty\n'
             '   tuple case, or when they are needed to avoid syntactic '
             'ambiguity.\n'
             '   For example, "f(a, b, c)" is a function call with three '
             'arguments,\n'
             '   while "f((a, b, c))" is a function call with a 3-tuple as the '
             'sole\n'
             '   argument.\n'
             '\n'
             '   Tuples implement all of the common sequence operations.\n'
             '\n'
             'For heterogeneous collections of data where access by name is '
             'clearer\n'
             'than access by index, "collections.namedtuple()" may be a more\n'
             'appropriate choice than a simple tuple object.\n'
             '\n'
             '\n'
             'Ranges\n'
             '======\n'
             '\n'
             'The "range" type represents an immutable sequence of numbers and '
             'is\n'
             'commonly used for looping a specific number of times in "for" '
             'loops.\n'
             '\n'
             'class range(stop)\n'
             'class range(start, stop[, step])\n'
             '\n'
             '   The arguments to the range constructor must be integers '
             '(either\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". '
             'If\n'
             '   *step* is zero, "ValueError" is raised.\n'
             '\n'
             '   For a positive *step*, the contents of a range "r" are '
             'determined\n'
             '   by the formula "r[i] = start + step*i" where "i >= 0" and '
             '"r[i] <\n'
             '   stop".\n'
             '\n'
             '   For a negative *step*, the contents of the range are still\n'
             '   determined by the formula "r[i] = start + step*i", but the\n'
             '   constraints are "i >= 0" and "r[i] > stop".\n'
             '\n'
             '   A range object will be empty if "r[0]" does not meet the '
             'value\n'
             '   constraint. Ranges do support negative indices, but these '
             'are\n'
             '   interpreted as indexing from the end of the sequence '
             'determined by\n'
             '   the positive indices.\n'
             '\n'
             '   Ranges containing absolute values larger than "sys.maxsize" '
             'are\n'
             '   permitted but some features (such as "len()") may raise\n'
             '   "OverflowError".\n'
             '\n'
             '   Range examples:\n'
             '\n'
             '      >>> list(range(10))\n'
             '      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n'
             '      >>> list(range(1, 11))\n'
             '      [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n'
             '      >>> list(range(0, 30, 5))\n'
             '      [0, 5, 10, 15, 20, 25]\n'
             '      >>> list(range(0, 10, 3))\n'
             '      [0, 3, 6, 9]\n'
             '      >>> list(range(0, -10, -1))\n'
             '      [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]\n'
             '      >>> list(range(0))\n'
             '      []\n'
             '      >>> list(range(1, 0))\n'
             '      []\n'
             '\n'
             '   Ranges implement all of the common sequence operations '
             'except\n'
             '   concatenation and repetition (due to the fact that range '
             'objects\n'
             '   can only represent sequences that follow a strict pattern '
             'and\n'
             '   repetition and concatenation will usually violate that '
             'pattern).\n'
             '\n'
             '   start\n'
             '\n'
             '      The value of the *start* parameter (or "0" if the '
             'parameter was\n'
             '      not supplied)\n'
             '\n'
             '   stop\n'
             '\n'
             '      The value of the *stop* parameter\n'
             '\n'
             '   step\n'
             '\n'
             '      The value of the *step* parameter (or "1" if the parameter '
             'was\n'
             '      not supplied)\n'
             '\n'
             'The advantage of the "range" type over a regular "list" or '
             '"tuple" is\n'
             'that a "range" object will always take the same (small) amount '
             'of\n'
             'memory, no matter the size of the range it represents (as it '
             'only\n'
             'stores the "start", "stop" and "step" values, calculating '
             'individual\n'
             'items and subranges as needed).\n'
             '\n'
             'Range objects implement the "collections.abc.Sequence" ABC, and\n'
             'provide features such as containment tests, element index '
             'lookup,\n'
             'slicing and support for negative indices (see Sequence Types — '
             'list,\n'
             'tuple, range):\n'
             '\n'
             '>>> r = range(0, 20, 2)\n'
             '>>> r\n'
             'range(0, 20, 2)\n'
             '>>> 11 in r\n'
             'False\n'
             '>>> 10 in r\n'
             'True\n'
             '>>> r.index(10)\n'
             '5\n'
             '>>> r[5]\n'
             '10\n'
             '>>> r[:5]\n'
             'range(0, 10, 2)\n'
             '>>> r[-1]\n'
             '18\n'
             '\n'
             'Testing range objects for equality with "==" and "!=" compares '
             'them as\n'
             'sequences.  That is, two range objects are considered equal if '
             'they\n'
             'represent the same sequence of values.  (Note that two range '
             'objects\n'
             'that compare equal might have different "start", "stop" and '
             '"step"\n'
             'attributes, for example "range(0) == range(2, 1, 3)" or '
             '"range(0, 3,\n'
             '2) == range(0, 4, 2)".)\n'
             '\n'
             'Changed in version 3.2: Implement the Sequence ABC. Support '
             'slicing\n'
             'and negative indices. Test "int" objects for membership in '
             'constant\n'
             'time instead of iterating through all items.\n'
             '\n'
             'Changed in version 3.3: Define ‘==’ and ‘!=’ to compare range '
             'objects\n'
             'based on the sequence of values they define (instead of '
             'comparing\n'
             'based on object identity).Added the "start", "stop" and "step"\n'
             'attributes.\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',
 'typesseq-mutable': 'Mutable Sequence Types\n'
                     '**********************\n'
                     '\n'
                     'The operations in the following table are defined on '
                     'mutable sequence\n'
                     'types. The "collections.abc.MutableSequence" ABC is '
                     'provided to make\n'
                     'it easier to correctly implement these operations on '
                     'custom sequence\n'
                     'types.\n'
                     '\n'
                     'In the table *s* is an instance of a mutable sequence '
                     'type, *t* is any\n'
                     'iterable object and *x* is an arbitrary object that '
                     'meets any type and\n'
                     'value restrictions imposed by *s* (for example, '
                     '"bytearray" only\n'
                     'accepts integers that meet the value restriction "0 <= x '
                     '<= 255").\n'
                     '\n'
                     '+--------------------------------+----------------------------------+-----------------------+\n'
                     '| Operation                      | '
                     'Result                           | Notes                 '
                     '|\n'
                     '|================================|==================================|=======================|\n'
                     '| "s[i] = x"                     | item *i* of *s* is '
                     'replaced by   |                       |\n'
                     '|                                | '
                     '*x*                              |                       '
                     '|\n'
                     '+--------------------------------+----------------------------------+-----------------------+\n'
                     '| "s[i:j] = t"                   | slice of *s* from *i* '
                     'to *j* is  |                       |\n'
                     '|                                | replaced by the '
                     'contents of the  |                       |\n'
                     '|                                | iterable '
                     '*t*                     |                       |\n'
                     '+--------------------------------+----------------------------------+-----------------------+\n'
                     '| "del s[i:j]"                   | same as "s[i:j] = '
                     '[]"            |                       |\n'
                     '+--------------------------------+----------------------------------+-----------------------+\n'
                     '| "s[i:j:k] = t"                 | the elements of '
                     '"s[i:j:k]" are   | (1)                   |\n'
                     '|                                | replaced by those of '
                     '*t*         |                       |\n'
                     '+--------------------------------+----------------------------------+-----------------------+\n'
                     '| "del s[i:j:k]"                 | removes the elements '
                     'of          |                       |\n'
                     '|                                | "s[i:j:k]" from the '
                     'list         |                       |\n'
                     '+--------------------------------+----------------------------------+-----------------------+\n'
                     '| "s.append(x)"                  | appends *x* to the '
                     'end of the    |                       |\n'
                     '|                                | sequence (same '
                     'as                |                       |\n'
                     '|                                | "s[len(s):len(s)] = '
                     '[x]")        |                       |\n'
                     '+--------------------------------+----------------------------------+-----------------------+\n'
                     '| "s.clear()"                    | removes all items '
                     'from *s* (same | (5)                   |\n'
                     '|                                | as "del '
                     's[:]")                   |                       |\n'
                     '+--------------------------------+----------------------------------+-----------------------+\n'
                     '| "s.copy()"                     | creates a shallow '
                     'copy of *s*    | (5)                   |\n'
                     '|                                | (same as '
                     '"s[:]")                 |                       |\n'
                     '+--------------------------------+----------------------------------+-----------------------+\n'
                     '| "s.extend(t)" or "s += t"      | extends *s* with the '
                     'contents of |                       |\n'
                     '|                                | *t* (for the most '
                     'part the same  |                       |\n'
                     '|                                | as "s[len(s):len(s)] '
                     '= t")       |                       |\n'
                     '+--------------------------------+----------------------------------+-----------------------+\n'
                     '| "s *= n"                       | updates *s* with its '
                     'contents    | (6)                   |\n'
                     '|                                | repeated *n* '
                     'times               |                       |\n'
                     '+--------------------------------+----------------------------------+-----------------------+\n'
                     '| "s.insert(i, x)"               | inserts *x* into *s* '
                     'at the      |                       |\n'
                     '|                                | index given by *i* '
                     '(same as      |                       |\n'
                     '|                                | "s[i:i] = '
                     '[x]")                  |                       |\n'
                     '+--------------------------------+----------------------------------+-----------------------+\n'
                     '| "s.pop()" or "s.pop(i)"        | retrieves the item at '
                     '*i* and    | (2)                   |\n'
                     '|                                | also removes it from '
                     '*s*         |                       |\n'
                     '+--------------------------------+----------------------------------+-----------------------+\n'
                     '| "s.remove(x)"                  | removes the first '
                     'item from *s*  | (3)                   |\n'
                     '|                                | where "s[i]" is equal '
                     'to *x*     |                       |\n'
                     '+--------------------------------+----------------------------------+-----------------------+\n'
                     '| "s.reverse()"                  | reverses the items of '
                     '*s* in     | (4)                   |\n'
                     '|                                | '
                     'place                            |                       '
                     '|\n'
                     '+--------------------------------+----------------------------------+-----------------------+\n'
                     '\n'
                     'Notes:\n'
                     '\n'
                     '1. If *k* is not equal to "1", *t* must have the same '
                     'length as the\n'
                     '   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'
                     '\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'
                     '\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'
                     '\n'
                     '   Added in version 3.3: "clear()" and "copy()" '
                     'methods.\n'
                     '\n'
                     '6. The value *n* is an integer, or an object '
                     'implementing\n'
                     '   "__index__()".  Zero and negative values of *n* clear '
                     'the sequence.\n'
                     '   Items in the sequence are not copied; they are '
                     'referenced multiple\n'
                     '   times, as explained for "s * n" under Common Sequence '
                     'Operations.\n',
 'unary': 'Unary arithmetic and bitwise operations\n'
          '***************************************\n'
          '\n'
          'All unary arithmetic and bitwise operations have the same '
          'priority:\n'
          '\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'
          '\n'
          'The unary "+" (plus) operator yields its numeric argument '
          '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'
          '\n'
          'In all three cases, if the argument does not have the proper type, '
          'a\n'
          '"TypeError" exception is raised.\n',
 'while': 'The "while" statement\n'
          '*********************\n'
          '\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'
          '                  ["else" ":" suite]\n'
          '\n'
          'This repeatedly tests the expression and, if it is true, executes '
          'the\n'
          'first suite; if the expression is false (which may be the first '
          'time\n'
          'it is tested) the suite of the "else" clause, if present, is '
          'executed\n'
          'and the loop terminates.\n'
          '\n'
          'A "break" statement executed in the first suite terminates the '
          'loop\n'
          'without executing the "else" clause’s suite.  A "continue" '
          'statement\n'
          'executed in the first suite skips the rest of the suite and goes '
          'back\n'
          'to testing the expression.\n',
 'with': 'The "with" statement\n'
         '********************\n'
         '\n'
         'The "with" statement is used to wrap the execution of a block with\n'
         'methods defined by a context manager (see section With Statement\n'
         'Context Managers). This allows common "try"…"except"…"finally" '
         'usage\n'
         'patterns to be encapsulated for convenient reuse.\n'
         '\n'
         '   with_stmt          ::= "with" ( "(" with_stmt_contents ","? ")" | '
         'with_stmt_contents ) ":" suite\n'
         '   with_stmt_contents ::= with_item ("," with_item)*\n'
         '   with_item          ::= expression ["as" target]\n'
         '\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'
         '\n'
         '2. The context manager’s "__enter__()" is loaded for later use.\n'
         '\n'
         '3. The context manager’s "__exit__()" is loaded for later use.\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'
         '\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 7 below.\n'
         '\n'
         '6. The suite is executed.\n'
         '\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'
         '   "None" arguments are supplied.\n'
         '\n'
         '   If the suite was exited due to an exception, and the return '
         'value\n'
         '   from the "__exit__()" method was false, the exception is '
         'reraised.\n'
         '   If the return value was true, the exception is suppressed, and\n'
         '   execution continues with the statement following the "with"\n'
         '   statement.\n'
         '\n'
         '   If the suite was exited for any reason other than an exception, '
         'the\n'
         '   return value from "__exit__()" is ignored, and execution '
         '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'
         '\n'
         '   try:\n'
         '       TARGET = value\n'
         '       SUITE\n'
         '   except:\n'
         '       if not exit(manager, *sys.exc_info()):\n'
         '           raise\n'
         '   else:\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'
         '\n'
         'is semantically equivalent to:\n'
         '\n'
         '   with A() as a:\n'
         '       with B() as b:\n'
         '           SUITE\n'
         '\n'
         'You can also write multi-item context managers in multiple lines if\n'
         'the items are surrounded by parentheses. For example:\n'
         '\n'
         '   with (\n'
         '       A() as a,\n'
         '       B() as b,\n'
         '   ):\n'
         '       SUITE\n'
         '\n'
         'Changed in version 3.1: Support for multiple context expressions.\n'
         '\n'
         'Changed in version 3.10: Support for using grouping parentheses to\n'
         'break the statement in multiple lines.\n'
         '\n'
         'See also:\n'
         '\n'
         '  **PEP 343** - The “with” statement\n'
         '     The specification, background, and examples for the Python '
         '"with"\n'
         '     statement.\n',
 'yield': 'The "yield" statement\n'
          '*********************\n'
          '\n'
          '   yield_stmt ::= yield_expression\n'
          '\n'
          'A "yield" statement is semantically equivalent to a yield '
          'expression.\n'
          'The "yield" statement can be used to omit the parentheses that '
          'would\n'
          'otherwise be required in the equivalent yield expression '
          'statement.\n'
          'For example, the yield statements\n'
          '\n'
          '   yield <expr>\n'
          '   yield from <expr>\n'
          '\n'
          'are equivalent to the yield expression statements\n'
          '\n'
          '   (yield <expr>)\n'
          '   (yield from <expr>)\n'
          '\n'
          'Yield expressions and statements are only used when defining a\n'
          '*generator* function, and are only used in the body of the '
          'generator\n'
          'function.  Using "yield" in a function definition is sufficient to\n'
          'cause that definition to create a generator function instead of a\n'
          'normal function.\n'
          '\n'
          'For full details of "yield" semantics, refer to the Yield '
          'expressions\n'
          'section.\n'}
