bpo-39481: PEP 585 for dataclasses, mailbox, contextvars (GH-19425)

diff --git a/Lib/dataclasses.py b/Lib/dataclasses.py
index 00851c6..fc69508 100644
--- a/Lib/dataclasses.py
+++ b/Lib/dataclasses.py
@@ -7,6 +7,7 @@
 import builtins
 import functools
 import _thread
+from types import GenericAlias
 
 
 __all__ = ['dataclass',
@@ -284,6 +285,8 @@
             # it.
             func(self.default, owner, name)
 
+    __class_getitem__ = classmethod(GenericAlias)
+
 
 class _DataclassParams:
     __slots__ = ('init',
diff --git a/Lib/mailbox.py b/Lib/mailbox.py
index 5b4e864..70da07e 100644
--- a/Lib/mailbox.py
+++ b/Lib/mailbox.py
@@ -18,6 +18,7 @@
 import email.generator
 import io
 import contextlib
+from types import GenericAlias
 try:
     import fcntl
 except ImportError:
@@ -260,6 +261,8 @@
         else:
             raise TypeError('Invalid message type: %s' % type(message))
 
+    __class_getitem__ = classmethod(GenericAlias)
+
 
 class Maildir(Mailbox):
     """A qmail-style Maildir mailbox."""
@@ -2015,6 +2018,8 @@
             return False
         return self._file.closed
 
+    __class_getitem__ = classmethod(GenericAlias)
+
 
 class _PartialFile(_ProxyFile):
     """A read-only wrapper of part of a file."""
diff --git a/Lib/test/test_context.py b/Lib/test/test_context.py
index b9e991a..2d8b63a 100644
--- a/Lib/test/test_context.py
+++ b/Lib/test/test_context.py
@@ -358,10 +358,6 @@
             tp.shutdown()
         self.assertEqual(results, list(range(10)))
 
-    def test_contextvar_getitem(self):
-        clss = contextvars.ContextVar
-        self.assertEqual(clss[str], clss)
-
 
 # HAMT Tests
 
diff --git a/Lib/test/test_genericalias.py b/Lib/test/test_genericalias.py
index 686df17..37cbf92 100644
--- a/Lib/test/test_genericalias.py
+++ b/Lib/test/test_genericalias.py
@@ -9,7 +9,10 @@
 from concurrent.futures import Future
 from concurrent.futures.thread import _WorkItem
 from contextlib import AbstractContextManager, AbstractAsyncContextManager
-from functools import partial, partialmethod, _lru_cache_wrapper, cached_property
+from contextvars import ContextVar, Token
+from dataclasses import Field
+from functools import partial, partialmethod, cached_property
+from mailbox import Mailbox, _PartialFile
 from ctypes import Array, LibraryLoader
 from difflib import SequenceMatcher
 from filecmp import dircmp
@@ -60,6 +63,9 @@
                   Reversible,
                   Container, Collection,
                   Callable,
+                  Mailbox, _PartialFile,
+                  ContextVar, Token,
+                  Field,
                   Set, MutableSet,
                   Mapping, MutableMapping, MappingView,
                   KeysView, ItemsView, ValuesView,