1
0
forked from VimPlug/jedi

Add include_builtins to usages, fixes #1131.

This commit is contained in:
Dave Halter
2018-07-03 22:53:19 +02:00
parent f4aad8bbfe
commit d857668292
2 changed files with 25 additions and 8 deletions

View File

@@ -238,7 +238,7 @@ class Script(object):
defs = [classes.Definition(self._evaluator, d) for d in set(names)] defs = [classes.Definition(self._evaluator, d) for d in set(names)]
return helpers.sorted_definitions(defs) return helpers.sorted_definitions(defs)
def usages(self, additional_module_paths=()): def usages(self, additional_module_paths=(), **kwargs):
""" """
Return :class:`classes.Definition` objects, which contain all Return :class:`classes.Definition` objects, which contain all
names that point to the definition of the name under the cursor. This names that point to the definition of the name under the cursor. This
@@ -247,17 +247,23 @@ class Script(object):
.. todo:: Implement additional_module_paths .. todo:: Implement additional_module_paths
:param include_builtins: Default True, checks if a usage is a builtin
(e.g. ``sys``) and in that case does not return it.
:rtype: list of :class:`classes.Definition` :rtype: list of :class:`classes.Definition`
""" """
tree_name = self._module_node.get_name_of_position(self._pos) def _usages(include_builtins=True):
if tree_name is None: tree_name = self._module_node.get_name_of_position(self._pos)
# Must be syntax if tree_name is None:
return [] # Must be syntax
return []
names = usages.usages(self._get_module(), tree_name) names = usages.usages(self._get_module(), tree_name)
definitions = [classes.Definition(self._evaluator, n) for n in names] definitions = [classes.Definition(self._evaluator, n) for n in names]
return helpers.sorted_definitions(definitions) if not include_builtins:
definitions = [d for d in definitions if not d.in_builtin_module()]
return helpers.sorted_definitions(definitions)
return _usages(**kwargs)
def call_signatures(self): def call_signatures(self):
""" """

View File

@@ -1,3 +1,14 @@
def test_import_usage(Script): def test_import_usage(Script):
s = Script("from .. import foo", line=1, column=18, path="foo.py") s = Script("from .. import foo", line=1, column=18, path="foo.py")
assert [usage.line for usage in s.usages()] == [1] assert [usage.line for usage in s.usages()] == [1]
def test_exclude_builtin_modules(Script):
def get(include):
return [(d.line, d.column) for d in Script(source, column=8).usages(include_builtins=include)]
source = '''import sys\nprint(sys.path)'''
places = get(include=True)
assert places == [(None, None), (1, 7), (2, 6)]
places = get(include=False)
assert places == [(1, 7), (2, 6)]