From 572824b5b9bb6f565a183aedca92d0019c999bf9 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Wed, 18 Sep 2019 09:28:20 +0300 Subject: [PATCH] bpo-38209: Simplify dataclasses.InitVar by using __class_getitem__(). --- Lib/dataclasses.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Lib/dataclasses.py b/Lib/dataclasses.py index 9020c905d1176d..9135b07c9f259a 100644 --- a/Lib/dataclasses.py +++ b/Lib/dataclasses.py @@ -199,11 +199,7 @@ def __repr__(self): # 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 @@ def __init__(self, type): 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