mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-07 06:24:27 +08:00
To be able to customize ContextSet, move a subclass to evaluate.context
This commit is contained in:
@@ -1,2 +1 @@
|
|||||||
from jedi.common.context import ContextSet, NO_CONTEXTS, \
|
from jedi.common.context import BaseContextSet
|
||||||
iterator_to_context_set
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
class ContextSet(object):
|
class BaseContextSet(object):
|
||||||
def __init__(self, *args):
|
def __init__(self, *args):
|
||||||
self._set = set(args)
|
self._set = set(args)
|
||||||
|
|
||||||
@@ -20,14 +20,14 @@ class ContextSet(object):
|
|||||||
aggregated = set()
|
aggregated = set()
|
||||||
sets = list(sets)
|
sets = list(sets)
|
||||||
for set_ in sets:
|
for set_ in sets:
|
||||||
if isinstance(set_, ContextSet):
|
if isinstance(set_, BaseContextSet):
|
||||||
aggregated |= set_._set
|
aggregated |= set_._set
|
||||||
else:
|
else:
|
||||||
aggregated |= set_
|
aggregated |= set_
|
||||||
return cls.from_set(aggregated)
|
return cls.from_set(aggregated)
|
||||||
|
|
||||||
def __or__(self, other):
|
def __or__(self, other):
|
||||||
return ContextSet.from_set(self._set | other._set)
|
return type(self).from_set(self._set | other._set)
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
for element in self._set:
|
for element in self._set:
|
||||||
@@ -43,22 +43,12 @@ class ContextSet(object):
|
|||||||
return '%s(%s)' % (self.__class__.__name__, ', '.join(str(s) for s in self._set))
|
return '%s(%s)' % (self.__class__.__name__, ', '.join(str(s) for s in self._set))
|
||||||
|
|
||||||
def filter(self, filter_func):
|
def filter(self, filter_func):
|
||||||
return ContextSet.from_iterable(filter(filter_func, self._set))
|
return type(self).from_iterable(filter(filter_func, self._set))
|
||||||
|
|
||||||
def __getattr__(self, name):
|
def __getattr__(self, name):
|
||||||
def mapper(*args, **kwargs):
|
def mapper(*args, **kwargs):
|
||||||
return ContextSet.from_sets(
|
return type(self).from_sets(
|
||||||
getattr(context, name)(*args, **kwargs)
|
getattr(context, name)(*args, **kwargs)
|
||||||
for context in self._set
|
for context in self._set
|
||||||
)
|
)
|
||||||
return mapper
|
return mapper
|
||||||
|
|
||||||
|
|
||||||
def iterator_to_context_set(func):
|
|
||||||
def wrapper(*args, **kwargs):
|
|
||||||
return ContextSet.from_iterable(func(*args, **kwargs))
|
|
||||||
|
|
||||||
return wrapper
|
|
||||||
|
|
||||||
|
|
||||||
NO_CONTEXTS = ContextSet()
|
|
||||||
|
|||||||
@@ -82,8 +82,8 @@ from jedi.evaluate import helpers
|
|||||||
from jedi.evaluate import pep0484
|
from jedi.evaluate import pep0484
|
||||||
from jedi.evaluate.filters import TreeNameDefinition, ParamName
|
from jedi.evaluate.filters import TreeNameDefinition, ParamName
|
||||||
from jedi.evaluate.instance import AnonymousInstance, BoundMethod
|
from jedi.evaluate.instance import AnonymousInstance, BoundMethod
|
||||||
from jedi.evaluate.context import ContextualizedName, ContextualizedNode
|
from jedi.evaluate.context import ContextualizedName, ContextualizedNode, \
|
||||||
from jedi.common import ContextSet, NO_CONTEXTS
|
ContextSet, NO_CONTEXTS
|
||||||
from jedi import parser_utils
|
from jedi import parser_utils
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,9 +13,8 @@ from jedi import debug
|
|||||||
from jedi.cache import underscore_memoization, memoize_method
|
from jedi.cache import underscore_memoization, memoize_method
|
||||||
from jedi.evaluate.filters import AbstractFilter, AbstractNameDefinition, \
|
from jedi.evaluate.filters import AbstractFilter, AbstractNameDefinition, \
|
||||||
ContextNameMixin
|
ContextNameMixin
|
||||||
from jedi.evaluate.context import Context, LazyKnownContext
|
from jedi.evaluate.context import Context, LazyKnownContext, ContextSet
|
||||||
from jedi.evaluate.compiled.getattr_static import getattr_static
|
from jedi.evaluate.compiled.getattr_static import getattr_static
|
||||||
from jedi.common import ContextSet
|
|
||||||
from . import fake
|
from . import fake
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,10 +9,9 @@ from jedi import settings
|
|||||||
from jedi.evaluate import compiled
|
from jedi.evaluate import compiled
|
||||||
from jedi.cache import underscore_memoization
|
from jedi.cache import underscore_memoization
|
||||||
from jedi.evaluate import imports
|
from jedi.evaluate import imports
|
||||||
from jedi.evaluate.context import Context
|
from jedi.evaluate.context import Context, ContextSet
|
||||||
from jedi.evaluate.cache import evaluator_function_cache
|
from jedi.evaluate.cache import evaluator_function_cache
|
||||||
from jedi.evaluate.compiled.getattr_static import getattr_static
|
from jedi.evaluate.compiled.getattr_static import getattr_static
|
||||||
from jedi.common import ContextSet
|
|
||||||
|
|
||||||
|
|
||||||
class MixedObject(object):
|
class MixedObject(object):
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from jedi._compatibility import Python3Method
|
from jedi._compatibility import Python3Method
|
||||||
from parso.python.tree import ExprStmt, CompFor
|
from parso.python.tree import ExprStmt, CompFor
|
||||||
from jedi.parser_utils import clean_scope_docstring, get_doc_with_call_signature
|
from jedi.parser_utils import clean_scope_docstring, get_doc_with_call_signature
|
||||||
from jedi.common import ContextSet, NO_CONTEXTS
|
from jedi.common import BaseContextSet
|
||||||
|
|
||||||
|
|
||||||
class Context(object):
|
class Context(object):
|
||||||
@@ -204,3 +204,17 @@ class ContextualizedName(ContextualizedNode):
|
|||||||
compare = node
|
compare = node
|
||||||
node = node.parent
|
node = node.parent
|
||||||
return indexes
|
return indexes
|
||||||
|
|
||||||
|
|
||||||
|
class ContextSet(BaseContextSet):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
NO_CONTEXTS = ContextSet()
|
||||||
|
|
||||||
|
|
||||||
|
def iterator_to_context_set(func):
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
return ContextSet.from_iterable(func(*args, **kwargs))
|
||||||
|
|
||||||
|
return wrapper
|
||||||
|
|||||||
@@ -21,11 +21,11 @@ from textwrap import dedent
|
|||||||
from parso import parse
|
from parso import parse
|
||||||
|
|
||||||
from jedi._compatibility import u
|
from jedi._compatibility import u
|
||||||
from jedi.evaluate.utils import unite, indent_block
|
from jedi.evaluate.utils import indent_block
|
||||||
from jedi.evaluate import context
|
|
||||||
from jedi.evaluate.cache import evaluator_method_cache
|
from jedi.evaluate.cache import evaluator_method_cache
|
||||||
from jedi.evaluate.iterable import SequenceLiteralContext, FakeSequence
|
from jedi.evaluate.iterable import SequenceLiteralContext, FakeSequence
|
||||||
from jedi.common import iterator_to_context_set, ContextSet, NO_CONTEXTS
|
from jedi.evaluate.context import iterator_to_context_set, ContextSet, \
|
||||||
|
NO_CONTEXTS, LazyKnownContexts
|
||||||
|
|
||||||
|
|
||||||
DOCSTRING_PARAM_PATTERNS = [
|
DOCSTRING_PARAM_PATTERNS = [
|
||||||
@@ -241,7 +241,7 @@ def _execute_array_values(evaluator, array):
|
|||||||
_execute_array_values(evaluator, typ)
|
_execute_array_values(evaluator, typ)
|
||||||
for typ in lazy_context.infer()
|
for typ in lazy_context.infer()
|
||||||
)
|
)
|
||||||
values.append(context.LazyKnownContexts(objects))
|
values.append(LazyKnownContexts(objects))
|
||||||
return set([FakeSequence(evaluator, array.array_type, values)])
|
return set([FakeSequence(evaluator, array.array_type, values)])
|
||||||
else:
|
else:
|
||||||
return array.execute_evaluated()
|
return array.execute_evaluated()
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ from jedi.evaluate import imports
|
|||||||
from jedi.evaluate.param import TreeArguments, create_default_params
|
from jedi.evaluate.param import TreeArguments, create_default_params
|
||||||
from jedi.evaluate.helpers import is_stdlib_path
|
from jedi.evaluate.helpers import is_stdlib_path
|
||||||
from jedi.evaluate.utils import to_list
|
from jedi.evaluate.utils import to_list
|
||||||
from jedi.common import ContextSet
|
from jedi.evaluate.context import ContextSet
|
||||||
from jedi.parser_utils import get_parent_scope
|
from jedi.parser_utils import get_parent_scope
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ from abc import abstractmethod
|
|||||||
|
|
||||||
from parso.tree import search_ancestor
|
from parso.tree import search_ancestor
|
||||||
from jedi.evaluate import flow_analysis
|
from jedi.evaluate import flow_analysis
|
||||||
from jedi.common import ContextSet
|
from jedi.evaluate.context import ContextSet
|
||||||
from jedi.parser_utils import get_parent_scope
|
from jedi.parser_utils import get_parent_scope
|
||||||
from jedi.evaluate.utils import to_list
|
from jedi.evaluate.utils import to_list
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ check for -> a is a string). There's big potential in these checks.
|
|||||||
from parso.python import tree
|
from parso.python import tree
|
||||||
from parso.tree import search_ancestor
|
from parso.tree import search_ancestor
|
||||||
from jedi import debug
|
from jedi import debug
|
||||||
from jedi.evaluate.utils import unite
|
|
||||||
from jedi import settings
|
from jedi import settings
|
||||||
from jedi.evaluate import representation as er
|
from jedi.evaluate import representation as er
|
||||||
from jedi.evaluate.instance import AbstractInstanceContext
|
from jedi.evaluate.instance import AbstractInstanceContext
|
||||||
@@ -31,8 +30,7 @@ from jedi.evaluate import flow_analysis
|
|||||||
from jedi.evaluate import param
|
from jedi.evaluate import param
|
||||||
from jedi.evaluate import helpers
|
from jedi.evaluate import helpers
|
||||||
from jedi.evaluate.filters import get_global_filters, TreeNameDefinition
|
from jedi.evaluate.filters import get_global_filters, TreeNameDefinition
|
||||||
from jedi.evaluate.context import ContextualizedName, ContextualizedNode
|
from jedi.evaluate.context import ContextualizedName, ContextualizedNode, ContextSet
|
||||||
from jedi.common import ContextSet
|
|
||||||
from jedi.parser_utils import is_scope, get_parent_scope
|
from jedi.parser_utils import is_scope, get_parent_scope
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ from jedi.evaluate import analysis
|
|||||||
from jedi.evaluate.utils import unite
|
from jedi.evaluate.utils import unite
|
||||||
from jedi.evaluate.cache import evaluator_method_cache
|
from jedi.evaluate.cache import evaluator_method_cache
|
||||||
from jedi.evaluate.filters import AbstractNameDefinition
|
from jedi.evaluate.filters import AbstractNameDefinition
|
||||||
from jedi.common import ContextSet, NO_CONTEXTS
|
from jedi.evaluate.context import ContextSet, NO_CONTEXTS
|
||||||
|
|
||||||
|
|
||||||
# This memoization is needed, because otherwise we will infinitely loop on
|
# This memoization is needed, because otherwise we will infinitely loop on
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ from jedi._compatibility import is_py3
|
|||||||
from jedi import debug
|
from jedi import debug
|
||||||
from jedi.evaluate import compiled
|
from jedi.evaluate import compiled
|
||||||
from jedi.evaluate import filters
|
from jedi.evaluate import filters
|
||||||
from jedi.evaluate.context import Context, LazyKnownContext, LazyKnownContexts
|
from jedi.evaluate.context import Context, LazyKnownContext, LazyKnownContexts, \
|
||||||
|
ContextSet, iterator_to_context_set, NO_CONTEXTS
|
||||||
from jedi.evaluate.cache import evaluator_method_cache
|
from jedi.evaluate.cache import evaluator_method_cache
|
||||||
from jedi.evaluate.param import AbstractArguments, AnonymousArguments
|
from jedi.evaluate.param import AbstractArguments, AnonymousArguments
|
||||||
from jedi.cache import memoize_method
|
from jedi.cache import memoize_method
|
||||||
from jedi.evaluate import representation as er
|
from jedi.evaluate import representation as er
|
||||||
from jedi.evaluate import iterable
|
from jedi.evaluate import iterable
|
||||||
from jedi.common import ContextSet, iterator_to_context_set, NO_CONTEXTS
|
|
||||||
from jedi.parser_utils import get_parent_scope
|
from jedi.parser_utils import get_parent_scope
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,20 +22,20 @@ It is important to note that:
|
|||||||
"""
|
"""
|
||||||
from jedi import debug
|
from jedi import debug
|
||||||
from jedi import settings
|
from jedi import settings
|
||||||
from jedi.evaluate.utils import unite, safe_property
|
from jedi.evaluate.utils import safe_property
|
||||||
from jedi._compatibility import unicode, zip_longest, is_py3
|
from jedi._compatibility import unicode, zip_longest, is_py3
|
||||||
from jedi.evaluate.utils import to_list
|
from jedi.evaluate.utils import to_list
|
||||||
from jedi.evaluate import compiled
|
from jedi.evaluate import compiled
|
||||||
from jedi.evaluate import helpers
|
from jedi.evaluate import helpers
|
||||||
from jedi.evaluate import analysis
|
from jedi.evaluate import analysis
|
||||||
from jedi.evaluate import pep0484
|
from jedi.evaluate import pep0484
|
||||||
from jedi.evaluate import context
|
|
||||||
from jedi.evaluate import precedence
|
from jedi.evaluate import precedence
|
||||||
from jedi.evaluate import recursion
|
from jedi.evaluate import recursion
|
||||||
from jedi.evaluate.cache import evaluator_method_cache
|
from jedi.evaluate.cache import evaluator_method_cache
|
||||||
from jedi.evaluate.filters import DictFilter, AbstractNameDefinition, \
|
from jedi.evaluate.filters import DictFilter, AbstractNameDefinition, \
|
||||||
ParserTreeFilter
|
ParserTreeFilter
|
||||||
from jedi.common import ContextSet, NO_CONTEXTS
|
from jedi.evaluate import context
|
||||||
|
from jedi.evaluate.context import ContextSet, NO_CONTEXTS
|
||||||
from jedi.parser_utils import get_comp_fors
|
from jedi.parser_utils import get_comp_fors
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from jedi.evaluate import context
|
|||||||
from jedi.evaluate import docstrings
|
from jedi.evaluate import docstrings
|
||||||
from jedi.evaluate import pep0484
|
from jedi.evaluate import pep0484
|
||||||
from jedi.evaluate.filters import ParamName
|
from jedi.evaluate.filters import ParamName
|
||||||
from jedi.common import NO_CONTEXTS
|
from jedi.evaluate.context import NO_CONTEXTS
|
||||||
|
|
||||||
|
|
||||||
def add_argument_issue(parent_context, error_name, lazy_context, message):
|
def add_argument_issue(parent_context, error_name, lazy_context, message):
|
||||||
|
|||||||
@@ -27,8 +27,7 @@ from parso.python import tree
|
|||||||
|
|
||||||
from jedi.evaluate.cache import evaluator_method_cache
|
from jedi.evaluate.cache import evaluator_method_cache
|
||||||
from jedi.evaluate import compiled
|
from jedi.evaluate import compiled
|
||||||
from jedi.evaluate.context import LazyTreeContext
|
from jedi.evaluate.context import LazyTreeContext, NO_CONTEXTS, ContextSet
|
||||||
from jedi.common import NO_CONTEXTS, ContextSet
|
|
||||||
from jedi import debug
|
from jedi import debug
|
||||||
from jedi import _compatibility
|
from jedi import _compatibility
|
||||||
from jedi import parser_utils
|
from jedi import parser_utils
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from jedi._compatibility import unicode
|
|||||||
from jedi import debug
|
from jedi import debug
|
||||||
from jedi.evaluate.compiled import CompiledObject, create, builtin_from_name
|
from jedi.evaluate.compiled import CompiledObject, create, builtin_from_name
|
||||||
from jedi.evaluate import analysis
|
from jedi.evaluate import analysis
|
||||||
from jedi.common import ContextSet, NO_CONTEXTS, iterator_to_context_set
|
from jedi.evaluate.context import ContextSet, NO_CONTEXTS, iterator_to_context_set
|
||||||
|
|
||||||
# Maps Python syntax to the operator module.
|
# Maps Python syntax to the operator module.
|
||||||
COMPARISON_OPERATORS = {
|
COMPARISON_OPERATORS = {
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ therefore the quality might not always be maximal.
|
|||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
|
|
||||||
from jedi import debug
|
from jedi import debug
|
||||||
from jedi.common import NO_CONTEXTS
|
from jedi.evaluate.context import NO_CONTEXTS
|
||||||
|
|
||||||
|
|
||||||
recursion_limit = 15
|
recursion_limit = 15
|
||||||
|
|||||||
@@ -63,8 +63,8 @@ from jedi.evaluate.filters import ParserTreeFilter, FunctionExecutionFilter, \
|
|||||||
ParamName, AnonymousInstanceParamName, TreeNameDefinition, \
|
ParamName, AnonymousInstanceParamName, TreeNameDefinition, \
|
||||||
ContextNameMixin
|
ContextNameMixin
|
||||||
from jedi.evaluate import context
|
from jedi.evaluate import context
|
||||||
from jedi.evaluate.context import ContextualizedNode
|
from jedi.evaluate.context import ContextualizedNode, NO_CONTEXTS, \
|
||||||
from jedi.common import NO_CONTEXTS, ContextSet, iterator_to_context_set
|
ContextSet, iterator_to_context_set
|
||||||
from jedi import parser_utils
|
from jedi import parser_utils
|
||||||
from jedi.evaluate.parser_cache import get_yield_exprs
|
from jedi.evaluate.parser_cache import get_yield_exprs
|
||||||
|
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ from jedi import debug
|
|||||||
from jedi.evaluate import precedence
|
from jedi.evaluate import precedence
|
||||||
from jedi.evaluate import param
|
from jedi.evaluate import param
|
||||||
from jedi.evaluate import analysis
|
from jedi.evaluate import analysis
|
||||||
from jedi.evaluate.context import LazyTreeContext, ContextualizedNode
|
from jedi.evaluate.context import LazyTreeContext, ContextualizedNode, \
|
||||||
from jedi.common import NO_CONTEXTS, ContextSet
|
NO_CONTEXTS, ContextSet
|
||||||
|
|
||||||
# Now this is all part of fake tuples in Jedi. However super doesn't work on
|
# Now this is all part of fake tuples in Jedi. However super doesn't work on
|
||||||
# __init__ and __new__ doesn't work at all. So adding this to nametuples is
|
# __init__ and __new__ doesn't work at all. So adding this to nametuples is
|
||||||
|
|||||||
Reference in New Issue
Block a user