From 0dc60fb5350547ef7d6d303bf2f226e18f29998f Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Fri, 19 Jul 2019 11:44:11 +0200 Subject: [PATCH] A small dataclass refactoring --- jedi/evaluate/names.py | 17 ++++++++--------- jedi/plugins/stdlib.py | 16 +++++----------- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/jedi/evaluate/names.py b/jedi/evaluate/names.py index 1789a23e..b49aa807 100644 --- a/jedi/evaluate/names.py +++ b/jedi/evaluate/names.py @@ -169,16 +169,13 @@ class ParamNameInterface(object): class BaseTreeParamName(ParamNameInterface, AbstractTreeName): - def get_default_node(self): - return None - - def get_annotation_node(self): - return None + annotation_node = None + default_node = None def to_string(self): output = self._kind_string() + self.string_name - annotation = self.get_annotation_node() - default = self.get_default_node() + annotation = self.annotation_node + default = self.default_node if annotation is not None: output += ': ' + annotation.get_code(include_prefix=False) if default is not None: @@ -190,10 +187,12 @@ class ParamName(BaseTreeParamName): def _get_param_node(self): return search_ancestor(self.tree_name, 'param') - def get_annotation_node(self): + @property + def annotation_node(self): return self._get_param_node().annotation - def get_default_node(self): + @property + def default_node(self): return self._get_param_node().default @property diff --git a/jedi/plugins/stdlib.py b/jedi/plugins/stdlib.py index 2af87880..1c612333 100644 --- a/jedi/plugins/stdlib.py +++ b/jedi/plugins/stdlib.py @@ -566,24 +566,18 @@ class DataclassSignature(AbstractSignature): class DataclassParamName(BaseTreeParamName): def __init__(self, parent_context, tree_name, annotation_node, default_node): super(DataclassParamName, self).__init__(parent_context, tree_name) - self._annotation_node = annotation_node - self._default_node = default_node + self.annotation_node = annotation_node + self.default_node = default_node def get_kind(self): return Parameter.POSITIONAL_OR_KEYWORD #TODO get_param? - def get_annotation_node(self): - return self._annotation_node - - def get_default_node(self): - return self._default_node - def infer(self): - if self._annotation_node is None: - return NO_CONTEXTS # TODO implement + if self.annotation_node is None: + return NO_CONTEXTS else: - return self.parent_context.eval_node(self._annotation_node) + return self.parent_context.eval_node(self.annotation_node) class ItemGetterCallable(ContextWrapper):