summaryrefslogtreecommitdiffstats
path: root/Lib/subprocess.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2020-04-07 16:50:06 (GMT)
committerGitHub <noreply@github.com>2020-04-07 16:50:06 (GMT)
commit48b069a003ba6c684a9ba78493fbbec5e89f10b8 (patch)
treee67e71abd17516cea5fe1a1ec487bf929ab0b9fd /Lib/subprocess.py
parent9cc3ebd7e04cb645ac7b2f372eaafa7464e16b9c (diff)
downloadcpython-48b069a003ba6c684a9ba78493fbbec5e89f10b8.zip
cpython-48b069a003ba6c684a9ba78493fbbec5e89f10b8.tar.gz
cpython-48b069a003ba6c684a9ba78493fbbec5e89f10b8.tar.bz2
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`.
Diffstat (limited to 'Lib/subprocess.py')
-rw-r--r--Lib/subprocess.py24
1 files changed, 3 insertions, 21 deletions
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 1eeccea..86fdf27 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -52,6 +52,7 @@ import threading
import warnings
import contextlib
from time import monotonic as _time
+import types
try:
import pwd
@@ -446,17 +447,7 @@ class CompletedProcess(object):
args.append('stderr={!r}'.format(self.stderr))
return "{}({})".format(type(self).__name__, ', '.join(args))
- def __class_getitem__(cls, type):
- """Provide minimal support for using this class as generic
- (for example in type annotations).
-
- See PEP 484 and PEP 560 for more details. For example,
- `CompletedProcess[bytes]` is a valid expression at runtime
- (type argument `bytes` indicates the type used for stdout).
- Note, no type checking happens at runtime, but a static type
- checker can be used.
- """
- return cls
+ __class_getitem__ = classmethod(types.GenericAlias)
def check_returncode(self):
@@ -1000,16 +991,7 @@ class Popen(object):
obj_repr = obj_repr[:76] + "...>"
return obj_repr
- def __class_getitem__(cls, type):
- """Provide minimal support for using this class as generic
- (for example in type annotations).
-
- See PEP 484 and PEP 560 for more details. For example, `Popen[bytes]`
- is a valid expression at runtime (type argument `bytes` indicates the
- type used for stdout). Note, no type checking happens at runtime, but
- a static type checker can be used.
- """
- return cls
+ __class_getitem__ = classmethod(types.GenericAlias)
@property
def universal_newlines(self):