bpo-39481: PEP 585 for enumerate, AsyncGeneratorType, mmap (GH-19421)

diff --git a/Lib/test/test_genericalias.py b/Lib/test/test_genericalias.py
index 535c249..196b059 100644
--- a/Lib/test/test_genericalias.py
+++ b/Lib/test/test_genericalias.py
@@ -7,11 +7,12 @@
 )
 from collections.abc import *
 from contextlib import AbstractContextManager, AbstractAsyncContextManager
+from mmap import mmap
 from ipaddress import IPv4Network, IPv4Interface, IPv6Network, IPv6Interface
 from itertools import chain
 from os import DirEntry
 from re import Pattern, Match
-from types import GenericAlias, MappingProxyType
+from types import GenericAlias, MappingProxyType, AsyncGeneratorType
 import typing
 
 from typing import TypeVar
@@ -21,7 +22,8 @@
     """Test basics."""
 
     def test_subscriptable(self):
-        for t in (type, tuple, list, dict, set, frozenset,
+        for t in (type, tuple, list, dict, set, frozenset, enumerate,
+                  mmap,
                   defaultdict, deque,
                   OrderedDict, Counter, UserDict, UserList,
                   Pattern, Match,
@@ -37,10 +39,9 @@
                   Mapping, MutableMapping, MappingView,
                   KeysView, ItemsView, ValuesView,
                   Sequence, MutableSequence,
-                  MappingProxyType,
+                  MappingProxyType, AsyncGeneratorType,
                   DirEntry,
                   IPv4Network, IPv4Interface, IPv6Network, IPv6Interface,
-                  MappingProxyType, DirEntry,
                   chain,
                   ):
             tname = t.__name__
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index a5c0ae0..a1267bd 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -816,6 +816,8 @@
 #ifdef MS_WINDOWS
     {"__sizeof__",      (PyCFunction) mmap__sizeof__method,     METH_NOARGS},
 #endif
+    {"__class_getitem__",    (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS,
+     PyDoc_STR("See PEP 585")},
     {NULL,         NULL}       /* sentinel */
 };
 
diff --git a/Objects/enumobject.c b/Objects/enumobject.c
index 75703be..4a83bb4 100644
--- a/Objects/enumobject.c
+++ b/Objects/enumobject.c
@@ -201,6 +201,8 @@
 
 static PyMethodDef enum_methods[] = {
     {"__reduce__", (PyCFunction)enum_reduce, METH_NOARGS, reduce_doc},
+    {"__class_getitem__",    (PyCFunction)Py_GenericAlias,
+    METH_O|METH_CLASS,       PyDoc_STR("See PEP 585")},
     {NULL,              NULL}           /* sentinel */
 };
 
diff --git a/Objects/genobject.c b/Objects/genobject.c
index 6bb08ae..d3455f8 100644
--- a/Objects/genobject.c
+++ b/Objects/genobject.c
@@ -1346,6 +1346,8 @@
     {"asend", (PyCFunction)async_gen_asend, METH_O, async_asend_doc},
     {"athrow",(PyCFunction)async_gen_athrow, METH_VARARGS, async_athrow_doc},
     {"aclose", (PyCFunction)async_gen_aclose, METH_NOARGS, async_aclose_doc},
+    {"__class_getitem__",    (PyCFunction)Py_GenericAlias,
+    METH_O|METH_CLASS,       PyDoc_STR("See PEP 585")},
     {NULL, NULL}        /* Sentinel */
 };