forked from VimPlug/jedi
Add :attr:Definition.names
This commit is contained in:
@@ -271,6 +271,40 @@ class Definition(BaseDefinition):
|
|||||||
def __init__(self, definition):
|
def __init__(self, definition):
|
||||||
super(Definition, self).__init__(definition, definition.start_pos)
|
super(Definition, self).__init__(definition, definition.start_pos)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def names(self):
|
||||||
|
"""
|
||||||
|
Name of variable/function/class/module.
|
||||||
|
|
||||||
|
For example, for ``isinstance`` it returns ``['isinstance']``.
|
||||||
|
As it is possible to have multiple definition in a statement,
|
||||||
|
this attribute returns a list of string.
|
||||||
|
|
||||||
|
:rtype: list of str
|
||||||
|
"""
|
||||||
|
d = self.definition
|
||||||
|
if isinstance(d, er.InstanceElement):
|
||||||
|
d = d.var
|
||||||
|
if isinstance(d, pr.Name):
|
||||||
|
d = d.parent
|
||||||
|
|
||||||
|
if isinstance(d, er.Array):
|
||||||
|
return [unicode(d.type)]
|
||||||
|
elif isinstance(d, (pr.Class, er.Class, er.Instance,
|
||||||
|
er.Function, pr.Function)):
|
||||||
|
return [unicode(d.name)]
|
||||||
|
elif isinstance(d, pr.Module):
|
||||||
|
return [self.module_name]
|
||||||
|
elif isinstance(d, pr.Import):
|
||||||
|
return [n.names[-1] for n in d.get_defined_names()]
|
||||||
|
elif isinstance(d, pr.Statement):
|
||||||
|
try:
|
||||||
|
return [a.values[0][0].name.names[-1]
|
||||||
|
for (_, a) in d.assignment_details]
|
||||||
|
except IndexError:
|
||||||
|
pass
|
||||||
|
return []
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def description(self):
|
def description(self):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -402,11 +402,10 @@ class TestGetDefinitions(TestBase):
|
|||||||
pass
|
pass
|
||||||
data = None
|
data = None
|
||||||
""")
|
""")
|
||||||
desc = lambda i: definitions[i].description
|
assert definitions[0].names == ['module']
|
||||||
assert desc(0) == 'import module'
|
assert definitions[1].names == ['Class']
|
||||||
assert desc(1) == 'class Class'
|
assert definitions[2].names == ['func']
|
||||||
assert desc(2) == 'def func'
|
assert definitions[3].names == ['data']
|
||||||
assert desc(3) == 'data=None'
|
|
||||||
|
|
||||||
|
|
||||||
class TestSpeed(TestBase):
|
class TestSpeed(TestBase):
|
||||||
|
|||||||
Reference in New Issue
Block a user