1
0
forked from VimPlug/jedi

Differentiate between a public name and an internal string_name

This commit is contained in:
Dave Halter
2019-08-24 13:31:17 +02:00
parent 8b1f35a8b1
commit ec6fa0c97c
3 changed files with 15 additions and 10 deletions

View File

@@ -95,7 +95,7 @@ class BaseDefinition(object):
:rtype: str or None :rtype: str or None
""" """
return self._name.string_name return self._name.get_public_name()
@property @property
def type(self): def type(self):
@@ -242,7 +242,7 @@ class BaseDefinition(object):
@property @property
def description(self): def description(self):
"""A textual description of the object.""" """A textual description of the object."""
return self._name.string_name return self._name.get_public_name()
@property @property
def full_name(self): def full_name(self):
@@ -427,7 +427,7 @@ class Completion(BaseDefinition):
# TODO this doesn't work for nested calls. # TODO this doesn't work for nested calls.
append += '=' append += '='
name = self._name.string_name name = self._name.get_public_name()
if like_name: if like_name:
name = name[self._like_name_length:] name = name[self._like_name_length:]
return name + append return name + append
@@ -483,7 +483,7 @@ class Completion(BaseDefinition):
return Definition.description.__get__(self) return Definition.description.__get__(self)
def __repr__(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 @memoize_method
def follow_definition(self): def follow_definition(self):
@@ -551,7 +551,7 @@ class Definition(BaseDefinition):
if typ == 'function': if typ == 'function':
# For the description we want a short and a pythonic way. # For the description we want a short and a pythonic way.
typ = 'def' typ = 'def'
return typ + ' ' + self._name.string_name return typ + ' ' + self._name.get_public_name()
definition = tree_name.get_definition() or tree_name definition = tree_name.get_definition() or tree_name
# Remove the prefix, because that's not what we want for get_code # Remove the prefix, because that's not what we want for get_code

View File

@@ -45,6 +45,9 @@ class AbstractNameDefinition(object):
def get_root_context(self): def get_root_context(self):
return self.parent_context.get_root_context() return self.parent_context.get_root_context()
def get_public_name(self):
return self.string_name
def __repr__(self): def __repr__(self):
if self.start_pos is None: if self.start_pos is None:
return '<%s: string_name=%s>' % (self.__class__.__name__, self.string_name) return '<%s: string_name=%s>' % (self.__class__.__name__, self.string_name)
@@ -225,7 +228,7 @@ class BaseTreeParamName(ParamNameInterface, AbstractTreeName):
default_node = None default_node = None
def to_string(self): def to_string(self):
output = self._kind_string() + self.string_name output = self._kind_string() + self.get_public_name()
annotation = self.annotation_node annotation = self.annotation_node
default = self.default_node default = self.default_node
if annotation is not None: if annotation is not None:
@@ -262,9 +265,8 @@ class ParamName(BaseTreeParamName):
def default_node(self): def default_node(self):
return self._get_param_node().default return self._get_param_node().default
@property def get_public_name(self):
def string_name(self): name = self.string_name
name = self.tree_name.value
if name.startswith('__'): if name.startswith('__'):
# Params starting with __ are an equivalent to positional only # Params starting with __ are an equivalent to positional only
# variables in typeshed. # variables in typeshed.

View File

@@ -24,12 +24,15 @@ class ExecutedParam(object):
from jedi.inference.names import ParamName from jedi.inference.names import ParamName
self._name = ParamName(execution_context, param_node.name) self._name = ParamName(execution_context, param_node.name)
self._lazy_value = lazy_value self._lazy_value = lazy_value
self.string_name = param_node.name.value
self._is_default = is_default self._is_default = is_default
def infer(self, use_hints=True): def infer(self, use_hints=True):
return self._lazy_value.infer() return self._lazy_value.infer()
@property
def string_name(self):
return self._name.string_name
def get_kind(self): def get_kind(self):
return self._name.get_kind() return self._name.get_kind()