forked from VimPlug/jedi
improve docstrings of evaluate
This commit is contained in:
@@ -94,7 +94,7 @@ class Script(object):
|
|||||||
scopes = list(self._prepare_goto(path, True))
|
scopes = list(self._prepare_goto(path, True))
|
||||||
except NotFoundError:
|
except NotFoundError:
|
||||||
scopes = []
|
scopes = []
|
||||||
scope_generator = evaluate.get_names_for_scope(
|
scope_generator = evaluate.get_names_of_scope(
|
||||||
self._parser.user_scope, self.pos)
|
self._parser.user_scope, self.pos)
|
||||||
completions = []
|
completions = []
|
||||||
for scope, name_list in scope_generator:
|
for scope, name_list in scope_generator:
|
||||||
|
|||||||
@@ -113,10 +113,10 @@ def get_defined_names_for_position(scope, position=None, start_scope=None):
|
|||||||
return names_new
|
return names_new
|
||||||
|
|
||||||
|
|
||||||
def get_names_for_scope(scope, position=None, star_search=True,
|
def get_names_of_scope(scope, position=None, star_search=True,
|
||||||
include_builtin=True):
|
include_builtin=True):
|
||||||
"""
|
"""
|
||||||
Get all completions possible for the current scope.
|
Get all completions (names) possible for the current scope.
|
||||||
The star search option is only here to provide an optimization. Otherwise
|
The star search option is only here to provide an optimization. Otherwise
|
||||||
the whole thing would probably start a little recursive madness.
|
the whole thing would probably start a little recursive madness.
|
||||||
"""
|
"""
|
||||||
@@ -153,7 +153,7 @@ def get_names_for_scope(scope, position=None, star_search=True,
|
|||||||
# Add star imports.
|
# Add star imports.
|
||||||
if star_search:
|
if star_search:
|
||||||
for s in imports.remove_star_imports(non_flow.get_parent_until()):
|
for s in imports.remove_star_imports(non_flow.get_parent_until()):
|
||||||
for g in get_names_for_scope(s, star_search=False):
|
for g in get_names_of_scope(s, star_search=False):
|
||||||
yield g
|
yield g
|
||||||
|
|
||||||
# Add builtins to the global scope.
|
# Add builtins to the global scope.
|
||||||
@@ -378,13 +378,13 @@ def get_scopes_for_name(scope, name_str, position=None, search_global=False,
|
|||||||
break
|
break
|
||||||
|
|
||||||
if not result and isinstance(nscope, er.Instance):
|
if not result and isinstance(nscope, er.Instance):
|
||||||
# getattr() / __getattr__ / __getattribute__
|
# __getattr__ / __getattribute__
|
||||||
result += check_getattr(nscope, name_str)
|
result += check_getattr(nscope, name_str)
|
||||||
debug.dbg('sfn filter "%s" in %s: %s' % (name_str, nscope, result))
|
debug.dbg('sfn filter "%s" in %s: %s' % (name_str, nscope, result))
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def descriptor_check(result):
|
def descriptor_check(result):
|
||||||
""" Processes descriptors """
|
"""Processes descriptors"""
|
||||||
res_new = []
|
res_new = []
|
||||||
for r in result:
|
for r in result:
|
||||||
if isinstance(scope, (er.Instance, er.Class)) \
|
if isinstance(scope, (er.Instance, er.Class)) \
|
||||||
@@ -399,7 +399,7 @@ def get_scopes_for_name(scope, name_str, position=None, search_global=False,
|
|||||||
return res_new
|
return res_new
|
||||||
|
|
||||||
if search_global:
|
if search_global:
|
||||||
scope_generator = get_names_for_scope(scope, position=position)
|
scope_generator = get_names_of_scope(scope, position=position)
|
||||||
else:
|
else:
|
||||||
if isinstance(scope, er.Instance):
|
if isinstance(scope, er.Instance):
|
||||||
scope_generator = scope.scope_generator()
|
scope_generator = scope.scope_generator()
|
||||||
@@ -418,6 +418,7 @@ def get_scopes_for_name(scope, name_str, position=None, search_global=False,
|
|||||||
|
|
||||||
|
|
||||||
def check_getattr(inst, name_str):
|
def check_getattr(inst, name_str):
|
||||||
|
"""Checks for both __getattr__ and __getattribute__ methods"""
|
||||||
result = []
|
result = []
|
||||||
# str is important to lose the NamePart!
|
# str is important to lose the NamePart!
|
||||||
name = pr.Call(str(name_str), pr.Call.STRING, (0, 0), inst)
|
name = pr.Call(str(name_str), pr.Call.STRING, (0, 0), inst)
|
||||||
@@ -439,7 +440,7 @@ def check_getattr(inst, name_str):
|
|||||||
|
|
||||||
|
|
||||||
def get_iterator_types(inputs):
|
def get_iterator_types(inputs):
|
||||||
""" Returns the types of any iterator (arrays, yields, __iter__, etc). """
|
"""Returns the types of any iterator (arrays, yields, __iter__, etc)."""
|
||||||
iterators = []
|
iterators = []
|
||||||
# Take the first statement (for has always only
|
# Take the first statement (for has always only
|
||||||
# one, remember `in`). And follow it.
|
# one, remember `in`). And follow it.
|
||||||
@@ -482,7 +483,7 @@ def assign_tuples(tup, results, seek_name):
|
|||||||
>>> a, b = 1, ""
|
>>> a, b = 1, ""
|
||||||
>>> a, (b, c) = 1, ("", 1.0)
|
>>> a, (b, c) = 1, ("", 1.0)
|
||||||
|
|
||||||
Here, if seek_name is "a", the number type will be returned.
|
Here, if `seek_name` is "a", the number type will be returned.
|
||||||
The first part (before `=`) is the param tuples, the second one result.
|
The first part (before `=`) is the param tuples, the second one result.
|
||||||
|
|
||||||
:type tup: pr.Array
|
:type tup: pr.Array
|
||||||
@@ -643,7 +644,7 @@ def follow_call_list(call_list, follow_array=False):
|
|||||||
|
|
||||||
|
|
||||||
def follow_call(call):
|
def follow_call(call):
|
||||||
""" Follow a call is following a function, variable, string, etc. """
|
"""Follow a call is following a function, variable, string, etc."""
|
||||||
scope = call.parent_stmt.parent
|
scope = call.parent_stmt.parent
|
||||||
path = call.generate_call_path()
|
path = call.generate_call_path()
|
||||||
position = call.parent_stmt.start_pos
|
position = call.parent_stmt.start_pos
|
||||||
@@ -651,7 +652,7 @@ def follow_call(call):
|
|||||||
|
|
||||||
|
|
||||||
def follow_call_path(path, scope, position):
|
def follow_call_path(path, scope, position):
|
||||||
""" Follows a path generated by `pr.Call.generate_call_path()` """
|
"""Follows a path generated by `pr.Call.generate_call_path()`"""
|
||||||
current = next(path)
|
current = next(path)
|
||||||
|
|
||||||
if isinstance(current, pr.Array):
|
if isinstance(current, pr.Array):
|
||||||
@@ -739,6 +740,7 @@ def follow_path(path, scope, call_scope, position=None):
|
|||||||
|
|
||||||
|
|
||||||
def filter_private_variable(scope, call_scope, var_name):
|
def filter_private_variable(scope, call_scope, var_name):
|
||||||
|
"""private variables begin with a double underline `__`"""
|
||||||
if isinstance(var_name, (str, unicode)) \
|
if isinstance(var_name, (str, unicode)) \
|
||||||
and var_name.startswith('__') and isinstance(scope, er.Instance):
|
and var_name.startswith('__') and isinstance(scope, er.Instance):
|
||||||
s = call_scope.get_parent_until((pr.Class, er.Instance))
|
s = call_scope.get_parent_until((pr.Class, er.Instance))
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ class ImportPath(pr.Base):
|
|||||||
and scope.path.endswith('__init__.py'):
|
and scope.path.endswith('__init__.py'):
|
||||||
pkg_path = os.path.dirname(scope.path)
|
pkg_path = os.path.dirname(scope.path)
|
||||||
names += self.get_module_names([pkg_path])
|
names += self.get_module_names([pkg_path])
|
||||||
for s, scope_names in evaluate.get_names_for_scope(scope,
|
for s, scope_names in evaluate.get_names_of_scope(scope,
|
||||||
include_builtin=False):
|
include_builtin=False):
|
||||||
for n in scope_names:
|
for n in scope_names:
|
||||||
if self.import_stmt.from_ns is None \
|
if self.import_stmt.from_ns is None \
|
||||||
|
|||||||
Reference in New Issue
Block a user