summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2019-09-22 13:32:41 +0300
committerGitHub <noreply@github.com>2019-09-22 13:32:41 +0300
commitb4d0b39a9b4cd203bcc5b236dc96456e9658119a (patch)
tree219e678f19e4c3b6695170ac419c453b13b7b9eb
parent1d094af716e8ce5e5710e1dfbce7832ba333be55 (diff)
downloadcpython-git-b4d0b39a9b4cd203bcc5b236dc96456e9658119a.tar.gz
bpo-38209: Simplify dataclasses.InitVar by using __class_getitem__(). (GH-16255)
-rw-r--r--Lib/dataclasses.py9
1 files changed, 4 insertions, 5 deletions
diff --git a/Lib/dataclasses.py b/Lib/dataclasses.py
index 9020c905d1..9135b07c9f 100644
--- a/Lib/dataclasses.py
+++ b/Lib/dataclasses.py
@@ -199,11 +199,7 @@ _POST_INIT_NAME = '__post_init__'
# https://bugs.python.org/issue33453 for details.
_MODULE_IDENTIFIER_RE = re.compile(r'^(?:\s*(\w+)\s*\.)?\s*(\w+)')
-class _InitVarMeta(type):
- def __getitem__(self, params):
- return InitVar(params)
-
-class InitVar(metaclass=_InitVarMeta):
+class InitVar:
__slots__ = ('type', )
def __init__(self, type):
@@ -212,6 +208,9 @@ class InitVar(metaclass=_InitVarMeta):
def __repr__(self):
return f'dataclasses.InitVar[{self.type.__name__}]'
+ def __class_getitem__(cls, type):
+ return InitVar(type)
+
# Instances of Field are only ever created from within this module,
# and only from the field() function, although Field instances are