A small dataclass refactoring

This commit is contained in:
Dave Halter
2019-07-19 11:44:11 +02:00
parent 5722a3458e
commit 0dc60fb535
2 changed files with 13 additions and 20 deletions

View File

@@ -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

View File

@@ -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):