bpo-39481: Implementation for PEP 585 (#18239)
This implements things like `list[int]`,
which returns an object of type `types.GenericAlias`.
This object mostly acts as a proxy for `list`,
but has attributes `__origin__` and `__args__`
that allow recovering the parts (with values `list` and `(int,)`.
There is also an approximate notion of type variables;
e.g. `list[T]` has a `__parameters__` attribute equal to `(T,)`.
Type variables are objects of type `typing.TypeVar`.
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 142cfea..73dc064 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -25,6 +25,7 @@
import tempfile
import threading
import time
+import types
import unittest
import uuid
import warnings
@@ -4191,7 +4192,7 @@
self.assertTrue(issubclass(FakePath, os.PathLike))
def test_pathlike_class_getitem(self):
- self.assertIs(os.PathLike[bytes], os.PathLike)
+ self.assertIsInstance(os.PathLike[bytes], types.GenericAlias)
class TimesTests(unittest.TestCase):