mirror of
https://github.com/python/cpython.git
synced 2025-11-25 04:34:37 +00:00
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`.
This commit is contained in:
parent
9cc3ebd7e0
commit
48b069a003
30 changed files with 830 additions and 53 deletions
|
|
@ -28,6 +28,8 @@ import stat as st
|
|||
|
||||
from _collections_abc import _check_methods
|
||||
|
||||
GenericAlias = type(list[int])
|
||||
|
||||
_names = sys.builtin_module_names
|
||||
|
||||
# Note: more names are added to __all__ later.
|
||||
|
|
@ -1074,8 +1076,7 @@ class PathLike(abc.ABC):
|
|||
return _check_methods(subclass, '__fspath__')
|
||||
return NotImplemented
|
||||
|
||||
def __class_getitem__(cls, type):
|
||||
return cls
|
||||
__class_getitem__ = classmethod(GenericAlias)
|
||||
|
||||
|
||||
if name == 'nt':
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue