Python 3.8.0b4
diff --git a/Lib/pydoc_data/topics.py b/Lib/pydoc_data/topics.py
index c3049b9..8992ea9 100644
--- a/Lib/pydoc_data/topics.py
+++ b/Lib/pydoc_data/topics.py
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Autogenerated by Sphinx on Mon Jul 29 15:22:27 2019
+# Autogenerated by Sphinx on Thu Aug 29 23:57:58 2019
 topics = {'assert': 'The "assert" statement\n'
            '**********************\n'
            '\n'
@@ -808,21 +808,34 @@
                      'whose name is\n'
                      'the key of the property in the owner class’ "__dict__".\n'
                      '\n'
-                     'object.__get__(self, instance, owner)\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). *owner* is always the owner class, while '
-                     '*instance* is the\n'
-                     '   instance that the attribute was accessed through, or '
-                     '"None" when\n'
-                     '   the attribute is accessed through the *owner*.  This '
-                     'method should\n'
-                     '   return the (computed) attribute value or raise an '
-                     '"AttributeError"\n'
-                     '   exception.\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'
@@ -830,6 +843,12 @@
                      '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 '
@@ -1829,6 +1848,12 @@
                 'all false.\n'
                 '  This behavior is compliant with IEEE 754.\n'
                 '\n'
+                '* "None" and "NotImplemented" are singletons.  **PEP 8** '
+                'advises\n'
+                '  that comparisons for singletons should always be done with '
+                '"is" or\n'
+                '  "is 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'
@@ -1854,38 +1879,13 @@
                 '  these types raises "TypeError".\n'
                 '\n'
                 '  Sequences compare lexicographically using comparison of\n'
-                '  corresponding elements, whereby reflexivity of the elements '
-                'is\n'
-                '  enforced.\n'
-                '\n'
-                '  In enforcing reflexivity of elements, the comparison of '
-                'collections\n'
-                '  assumes that for a collection element "x", "x == x" is '
-                'always true.\n'
-                '  Based on that assumption, element identity is compared '
-                'first, and\n'
-                '  element comparison is performed only for distinct '
-                'elements.  This\n'
-                '  approach yields the same result as a strict element '
-                'comparison\n'
-                '  would, if the compared elements are reflexive.  For '
-                'non-reflexive\n'
-                '  elements, the result is different than for strict element\n'
-                '  comparison, and may be surprising:  The non-reflexive '
-                'not-a-number\n'
-                '  values for example result in the following comparison '
-                'behavior when\n'
-                '  used in a list:\n'
-                '\n'
-                "     >>> nan = float('NaN')\n"
-                '     >>> nan is nan\n'
-                '     True\n'
-                '     >>> nan == nan\n'
-                '     False                 <-- the defined non-reflexive '
-                'behavior of NaN\n'
-                '     >>> [nan] == [nan]\n'
-                '     True                  <-- list enforces reflexivity and '
-                'tests identity first\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'
@@ -3126,13 +3126,15 @@
                   'returning\n'
                   '   it.\n'
                   '\n'
-                  '   If "__new__()" returns an instance of *cls*, then the '
-                  'new\n'
-                  '   instance’s "__init__()" method will be invoked like\n'
-                  '   "__init__(self[, ...])", where *self* is the new '
-                  'instance and the\n'
-                  '   remaining arguments are the same as were passed to '
-                  '"__new__()".\n'
+                  '   If "__new__()" is invoked during object construction and '
+                  'it returns\n'
+                  '   an instance or subclass of *cls*, then the new '
+                  'instance’s\n'
+                  '   "__init__()" method will be invoked like '
+                  '"__init__(self[, ...])",\n'
+                  '   where *self* is the new instance and the remaining '
+                  'arguments are\n'
+                  '   the same as were passed to the object constructor.\n'
                   '\n'
                   '   If "__new__()" does not return an instance of *cls*, '
                   'then the new\n'
@@ -3500,10 +3502,10 @@
                   '   hashable by an "isinstance(obj, '
                   'collections.abc.Hashable)" call.\n'
                   '\n'
-                  '   Note: By default, the "__hash__()" values of str, bytes '
-                  'and\n'
-                  '     datetime objects are “salted” with an unpredictable '
-                  'random value.\n'
+                  '   Note: By default, the "__hash__()" values of str and '
+                  'bytes\n'
+                  '     objects are “salted” with an unpredictable random '
+                  'value.\n'
                   '     Although they remain constant within an individual '
                   'Python\n'
                   '     process, they are not predictable between repeated '
@@ -7841,13 +7843,15 @@
                  'returning\n'
                  '   it.\n'
                  '\n'
-                 '   If "__new__()" returns an instance of *cls*, then the '
-                 'new\n'
-                 '   instance’s "__init__()" method will be invoked like\n'
-                 '   "__init__(self[, ...])", where *self* is the new instance '
-                 'and the\n'
-                 '   remaining arguments are the same as were passed to '
-                 '"__new__()".\n'
+                 '   If "__new__()" is invoked during object construction and '
+                 'it returns\n'
+                 '   an instance or subclass of *cls*, then the new '
+                 'instance’s\n'
+                 '   "__init__()" method will be invoked like "__init__(self[, '
+                 '...])",\n'
+                 '   where *self* is the new instance and the remaining '
+                 'arguments are\n'
+                 '   the same as were passed to the object constructor.\n'
                  '\n'
                  '   If "__new__()" does not return an instance of *cls*, then '
                  'the new\n'
@@ -8212,10 +8216,10 @@
                  '   hashable by an "isinstance(obj, '
                  'collections.abc.Hashable)" call.\n'
                  '\n'
-                 '   Note: By default, the "__hash__()" values of str, bytes '
-                 'and\n'
-                 '     datetime objects are “salted” with an unpredictable '
-                 'random value.\n'
+                 '   Note: By default, the "__hash__()" values of str and '
+                 'bytes\n'
+                 '     objects are “salted” with an unpredictable random '
+                 'value.\n'
                  '     Although they remain constant within an individual '
                  'Python\n'
                  '     process, they are not predictable between repeated '
@@ -8440,21 +8444,34 @@
                  'whose name is\n'
                  'the key of the property in the owner class’ "__dict__".\n'
                  '\n'
-                 'object.__get__(self, instance, owner)\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). *owner* is always the owner class, while '
-                 '*instance* is the\n'
-                 '   instance that the attribute was accessed through, or '
-                 '"None" when\n'
-                 '   the attribute is accessed through the *owner*.  This '
-                 'method should\n'
-                 '   return the (computed) attribute value or raise an '
-                 '"AttributeError"\n'
-                 '   exception.\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'
@@ -8462,6 +8479,12 @@
                  '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* '
@@ -10030,13 +10053,15 @@
                    '\n'
                    '   Return true if there are only whitespace characters in '
                    'the string\n'
-                   '   and there is at least one character, false otherwise.  '
-                   'Whitespace\n'
-                   '   characters  are those characters defined in the Unicode '
-                   'character\n'
-                   '   database as “Other” or “Separator” and those with '
-                   'bidirectional\n'
-                   '   property being one of “WS”, “B”, or “S”.\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'
@@ -10725,13 +10750,9 @@
             '\n'
             '   Changed in version 3.6: Unrecognized escape sequences produce '
             'a\n'
-            '   "DeprecationWarning".\n'
-            '\n'
-            '   Changed in version 3.8: Unrecognized escape sequences produce '
+            '   "DeprecationWarning".  In a future Python version they will be '
             'a\n'
-            '   "SyntaxWarning".  In some future version of Python they will '
-            'be a\n'
-            '   "SyntaxError".\n'
+            '   "SyntaxWarning" and eventually a "SyntaxError".\n'
             '\n'
             'Even in a raw literal, quotes can be escaped with a backslash, '
             'but the\n'