forked from VimPlug/jedi
Move search_ancestor to jedi.parser.tree.
This commit is contained in:
@@ -4,7 +4,7 @@ are needed for name resolution.
|
||||
"""
|
||||
from abc import abstractmethod
|
||||
|
||||
from jedi.parser.python.tree import search_ancestor
|
||||
from jedi.parser.tree import search_ancestor
|
||||
from jedi.evaluate import flow_analysis
|
||||
from jedi.common import to_list, unite
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ check for -> a is a string). There's big potential in these checks.
|
||||
"""
|
||||
|
||||
from jedi.parser.python import tree
|
||||
from jedi.parser.tree import search_ancestor
|
||||
from jedi import debug
|
||||
from jedi.common import unite
|
||||
from jedi import settings
|
||||
@@ -310,7 +311,7 @@ def _check_flow_information(context, flow, search_name, pos):
|
||||
])
|
||||
|
||||
for name in names:
|
||||
ass = tree.search_ancestor(name, 'assert_stmt')
|
||||
ass = search_ancestor(name, 'assert_stmt')
|
||||
if ass is not None:
|
||||
result = _check_isinstance_type(context, ass.assertion, search_name)
|
||||
if result is not None:
|
||||
|
||||
@@ -22,6 +22,7 @@ from jedi import settings
|
||||
from jedi.common import source_to_unicode, unite
|
||||
from jedi.parser.python import parse
|
||||
from jedi.parser.python import tree
|
||||
from jedi.parser.tree import search_ancestor
|
||||
from jedi.parser.cache import parser_cache
|
||||
from jedi.evaluate import sys_path
|
||||
from jedi.evaluate import helpers
|
||||
@@ -36,7 +37,7 @@ from jedi.evaluate.filters import AbstractNameDefinition
|
||||
@memoize_default(default=set())
|
||||
def infer_import(context, tree_name, is_goto=False):
|
||||
module_context = context.get_root_context()
|
||||
import_node = tree.search_ancestor(tree_name, ('import_name', 'import_from'))
|
||||
import_node = search_ancestor(tree_name, ('import_name', 'import_from'))
|
||||
import_path = import_node.path_for_name(tree_name)
|
||||
from_import_name = None
|
||||
evaluator = context.evaluator
|
||||
|
||||
@@ -58,7 +58,8 @@ def parse(code=None, path=None, grammar=None, error_recovery=True,
|
||||
|
||||
:param code: A unicode string that contains Python code.
|
||||
:param path: The path to the file you want to open. Only needed for caching.
|
||||
:param grammar: A Python grammar file, created with load_grammar.
|
||||
:param grammar: A Python grammar file, created with load_grammar. You may
|
||||
not specify it. In that case it's the current Python version.
|
||||
:param error_recovery: If enabled, any code will be returned. If it is
|
||||
invalid, it will be returned as an error node. If disabled, you will
|
||||
get a ParseError when encountering syntax errors in your code.
|
||||
|
||||
@@ -30,17 +30,8 @@ See also :attr:`Scope.subscopes` and :attr:`Scope.statements`.
|
||||
from itertools import chain
|
||||
|
||||
from jedi._compatibility import utf8_repr, unicode
|
||||
from jedi.parser.tree import Node, BaseNode, Leaf, ErrorNode, ErrorLeaf
|
||||
|
||||
|
||||
def search_ancestor(node, node_type_or_types):
|
||||
if not isinstance(node_type_or_types, (list, tuple)):
|
||||
node_type_or_types = (node_type_or_types,)
|
||||
|
||||
while True:
|
||||
node = node.parent
|
||||
if node is None or node.type in node_type_or_types:
|
||||
return node
|
||||
from jedi.parser.tree import Node, BaseNode, Leaf, ErrorNode, ErrorLeaf, \
|
||||
search_ancestor
|
||||
|
||||
|
||||
class DocstringMixin(object):
|
||||
|
||||
@@ -2,6 +2,16 @@ from abc import abstractmethod, abstractproperty
|
||||
from jedi._compatibility import utf8_repr, encoding, is_py3
|
||||
|
||||
|
||||
def search_ancestor(node, node_type_or_types):
|
||||
if not isinstance(node_type_or_types, (list, tuple)):
|
||||
node_type_or_types = (node_type_or_types,)
|
||||
|
||||
while True:
|
||||
node = node.parent
|
||||
if node is None or node.type in node_type_or_types:
|
||||
return node
|
||||
|
||||
|
||||
class NodeOrLeaf(object):
|
||||
"""
|
||||
The base class for nodes and leaves.
|
||||
|
||||
Reference in New Issue
Block a user