diff --git a/jedi/api/classes.py b/jedi/api/classes.py index 662c09e7..5a889d37 100644 --- a/jedi/api/classes.py +++ b/jedi/api/classes.py @@ -95,7 +95,7 @@ class BaseDefinition(object): :rtype: str or None """ - return self._name.string_name + return self._name.get_public_name() @property def type(self): @@ -242,7 +242,7 @@ class BaseDefinition(object): @property def description(self): """A textual description of the object.""" - return self._name.string_name + return self._name.get_public_name() @property def full_name(self): @@ -427,7 +427,7 @@ class Completion(BaseDefinition): # TODO this doesn't work for nested calls. append += '=' - name = self._name.string_name + name = self._name.get_public_name() if like_name: name = name[self._like_name_length:] return name + append @@ -483,7 +483,7 @@ class Completion(BaseDefinition): return Definition.description.__get__(self) def __repr__(self): - return '<%s: %s>' % (type(self).__name__, self._name.string_name) + return '<%s: %s>' % (type(self).__name__, self._name.get_public_name()) @memoize_method def follow_definition(self): @@ -551,7 +551,7 @@ class Definition(BaseDefinition): if typ == 'function': # For the description we want a short and a pythonic way. typ = 'def' - return typ + ' ' + self._name.string_name + return typ + ' ' + self._name.get_public_name() definition = tree_name.get_definition() or tree_name # Remove the prefix, because that's not what we want for get_code diff --git a/jedi/inference/names.py b/jedi/inference/names.py index 41799880..cad3537b 100644 --- a/jedi/inference/names.py +++ b/jedi/inference/names.py @@ -45,6 +45,9 @@ class AbstractNameDefinition(object): def get_root_context(self): return self.parent_context.get_root_context() + def get_public_name(self): + return self.string_name + def __repr__(self): if self.start_pos is None: return '<%s: string_name=%s>' % (self.__class__.__name__, self.string_name) @@ -225,7 +228,7 @@ class BaseTreeParamName(ParamNameInterface, AbstractTreeName): default_node = None def to_string(self): - output = self._kind_string() + self.string_name + output = self._kind_string() + self.get_public_name() annotation = self.annotation_node default = self.default_node if annotation is not None: @@ -262,9 +265,8 @@ class ParamName(BaseTreeParamName): def default_node(self): return self._get_param_node().default - @property - def string_name(self): - name = self.tree_name.value + def get_public_name(self): + name = self.string_name if name.startswith('__'): # Params starting with __ are an equivalent to positional only # variables in typeshed. diff --git a/jedi/inference/param.py b/jedi/inference/param.py index 22d170a8..9f4a6614 100644 --- a/jedi/inference/param.py +++ b/jedi/inference/param.py @@ -24,12 +24,15 @@ class ExecutedParam(object): from jedi.inference.names import ParamName self._name = ParamName(execution_context, param_node.name) self._lazy_value = lazy_value - self.string_name = param_node.name.value self._is_default = is_default def infer(self, use_hints=True): return self._lazy_value.infer() + @property + def string_name(self): + return self._name.string_name + def get_kind(self): return self._name.get_kind()