Python 3.9.0a5
diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py
index c6ba945..11b48fd 100644
--- a/Lib/pydoc_data/topics.py
+++ b/Lib/pydoc_data/topics.py
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Autogenerated by Sphinx on Tue Feb 25 13:20:31 2020
+# Autogenerated by Sphinx on Mon Mar 23 17:18:04 2020
 topics = {'assert': 'The "assert" statement\n'
            '**********************\n'
            '\n'
@@ -1476,8 +1476,8 @@
           '                     | starred_and_keywords ["," '
           'keywords_arguments]\n'
           '                     | keywords_arguments\n'
-          '   positional_arguments ::= ["*"] expression ("," ["*"] '
-          'expression)*\n'
+          '   positional_arguments ::= positional_item ("," positional_item)*\n'
+          '   positional_item      ::= assignment_expression | "*" expression\n'
           '   starred_and_keywords ::= ("*" expression | keyword_item)\n'
           '                            ("," "*" expression | "," '
           'keyword_item)*\n'
@@ -1717,6 +1717,10 @@
           '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'
           '**Programmer’s note:** Variables defined in the class definition '
           'are\n'
           'class attributes; they are shared by instances.  Instance '
@@ -2187,8 +2191,8 @@
              '\n'
              'The "if" statement is used for conditional execution:\n'
              '\n'
-             '   if_stmt ::= "if" expression ":" suite\n'
-             '               ("elif" expression ":" suite)*\n'
+             '   if_stmt ::= "if" assignment_expression ":" suite\n'
+             '               ("elif" assignment_expression ":" suite)*\n'
              '               ["else" ":" suite]\n'
              '\n'
              'It selects exactly one of the suites by evaluating the '
@@ -2211,7 +2215,7 @@
              'an\n'
              'expression is true:\n'
              '\n'
-             '   while_stmt ::= "while" expression ":" suite\n'
+             '   while_stmt ::= "while" assignment_expression ":" suite\n'
              '                  ["else" ":" suite]\n'
              '\n'
              'This repeatedly tests the expression and, if it is true, '
@@ -2626,8 +2630,8 @@
              '[parameter_list] ")"\n'
              '               ["->" expression] ":" suite\n'
              '   decorators                ::= decorator+\n'
-             '   decorator                 ::= "@" dotted_name ["(" '
-             '[argument_list [","]] ")"] NEWLINE\n'
+             '   decorator                 ::= "@" assignment_expression '
+             'NEWLINE\n'
              '   dotted_name               ::= identifier ("." identifier)*\n'
              '   parameter_list            ::= defparameter ("," '
              'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n'
@@ -2681,6 +2685,11 @@
              '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'
              'When one or more *parameters* have the form *parameter* "="\n'
              '*expression*, the function is said to have “default parameter '
              'values.”\n'
@@ -2882,6 +2891,10 @@
              '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'
              '**Programmer’s note:** Variables defined in the class definition '
              'are\n'
              'class attributes; they are shared by instances.  Instance '
@@ -4403,8 +4416,8 @@
          '\n'
          'The "if" statement is used for conditional execution:\n'
          '\n'
-         '   if_stmt ::= "if" expression ":" suite\n'
-         '               ("elif" expression ":" suite)*\n'
+         '   if_stmt ::= "if" assignment_expression ":" suite\n'
+         '               ("elif" assignment_expression ":" suite)*\n'
          '               ["else" ":" suite]\n'
          '\n'
          'It selects exactly one of the suites by evaluating the expressions '
@@ -4824,7 +4837,7 @@
               '[","]\n'
               '   starred_expression ::= expression | (starred_item ",")* '
               '[starred_item]\n'
-              '   starred_item       ::= expression | "*" or_expr\n'
+              '   starred_item       ::= assignment_expression | "*" or_expr\n'
               '\n'
               'Except when part of a list or set display, an expression list\n'
               'containing at least one comma yields a tuple.  The length of '
@@ -5134,11 +5147,11 @@
                   'only\n'
                   'supported by the numeric types.\n'
                   '\n'
-                  'A general convention is that an empty format string ("""") '
+                  '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 string typically modifies the result.\n'
+                  'format specification typically modifies the result.\n'
                   '\n'
                   'The general form of a *standard format specifier* is:\n'
                   '\n'
@@ -5693,8 +5706,8 @@
              '[parameter_list] ")"\n'
              '               ["->" expression] ":" suite\n'
              '   decorators                ::= decorator+\n'
-             '   decorator                 ::= "@" dotted_name ["(" '
-             '[argument_list [","]] ")"] NEWLINE\n'
+             '   decorator                 ::= "@" assignment_expression '
+             'NEWLINE\n'
              '   dotted_name               ::= identifier ("." identifier)*\n'
              '   parameter_list            ::= defparameter ("," '
              'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n'
@@ -5748,6 +5761,11 @@
              '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'
              'When one or more *parameters* have the form *parameter* "="\n'
              '*expression*, the function is said to have “default parameter '
              'values.”\n'
@@ -6119,8 +6137,8 @@
        '\n'
        'The "if" statement is used for conditional execution:\n'
        '\n'
-       '   if_stmt ::= "if" expression ":" suite\n'
-       '               ("elif" expression ":" suite)*\n'
+       '   if_stmt ::= "if" assignment_expression ":" suite\n'
+       '               ("elif" assignment_expression ":" suite)*\n'
        '               ["else" ":" suite]\n'
        '\n'
        'It selects exactly one of the suites by evaluating the expressions '
@@ -9018,7 +9036,7 @@
                  '\n'
                  'If the metaclass has no "__prepare__" attribute, then the '
                  'class\n'
-                 'namespace is initialised as an empty "dict()".\n'
+                 'namespace is initialised as an empty ordered mapping.\n'
                  '\n'
                  'See also:\n'
                  '\n'
@@ -11196,10 +11214,17 @@
           'for\n'
           '   the operands provided.  (The interpreter will then try the\n'
           '   reflected operation, or some other fallback, depending on the\n'
-          '   operator.)  Its truth value is true.\n'
+          '   operator.)  It should not be evaluated in a boolean context.\n'
           '\n'
           '   See Implementing the arithmetic operations for more details.\n'
           '\n'
+          '   Changed in version 3.9: Evaluating "NotImplemented" in a '
+          'boolean\n'
+          '   context is deprecated. While it currently evaluates as true, it\n'
+          '   will emit a "DeprecationWarning". It will raise a "TypeError" in '
+          'a\n'
+          '   future version of Python.\n'
+          '\n'
           'Ellipsis\n'
           '   This type has a single value.  There is a single object with '
           'this\n'
@@ -12487,6 +12512,29 @@
                  '         >>> d.values() == d.values()\n'
                  '         False\n'
                  '\n'
+                 '   d | other\n'
+                 '\n'
+                 '      Create a new dictionary with the merged keys and '
+                 'values of *d*\n'
+                 '      and *other*, which must both be dictionaries. The '
+                 'values of\n'
+                 '      *other* take priority when *d* and *other* share '
+                 'keys.\n'
+                 '\n'
+                 '      New in version 3.9.\n'
+                 '\n'
+                 '   d |= other\n'
+                 '\n'
+                 '      Update the dictionary *d* with keys and values from '
+                 '*other*,\n'
+                 '      which may be either a *mapping* or an *iterable* of '
+                 'key/value\n'
+                 '      pairs. The values of *other* take priority when *d* '
+                 'and *other*\n'
+                 '      share keys.\n'
+                 '\n'
+                 '      New in version 3.9.\n'
+                 '\n'
                  '   Dictionaries compare equal if and only if they have the '
                  'same "(key,\n'
                  '   value)" pairs (regardless of ordering). Order comparisons '
@@ -13616,7 +13664,7 @@
           'The "while" statement is used for repeated execution as long as an\n'
           'expression is true:\n'
           '\n'
-          '   while_stmt ::= "while" expression ":" suite\n'
+          '   while_stmt ::= "while" assignment_expression ":" suite\n'
           '                  ["else" ":" suite]\n'
           '\n'
           'This repeatedly tests the expression and, if it is true, executes '