mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 22:14: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, \
|
||||
iterator_to_context_set
|
||||
from jedi.common.context import BaseContextSet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class ContextSet(object):
|
||||
class BaseContextSet(object):
|
||||
def __init__(self, *args):
|
||||
self._set = set(args)
|
||||
|
||||
@@ -20,14 +20,14 @@ class ContextSet(object):
|
||||
aggregated = set()
|
||||
sets = list(sets)
|
||||
for set_ in sets:
|
||||
if isinstance(set_, ContextSet):
|
||||
if isinstance(set_, BaseContextSet):
|
||||
aggregated |= set_._set
|
||||
else:
|
||||
aggregated |= set_
|
||||
return cls.from_set(aggregated)
|
||||
|
||||
def __or__(self, other):
|
||||
return ContextSet.from_set(self._set | other._set)
|
||||
return type(self).from_set(self._set | other._set)
|
||||
|
||||
def __iter__(self):
|
||||
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))
|
||||
|
||||
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 mapper(*args, **kwargs):
|
||||
return ContextSet.from_sets(
|
||||
return type(self).from_sets(
|
||||
getattr(context, name)(*args, **kwargs)
|
||||
for context in self._set
|
||||
)
|
||||
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.filters import TreeNameDefinition, ParamName
|
||||
from jedi.evaluate.instance import AnonymousInstance, BoundMethod
|
||||
from jedi.evaluate.context import ContextualizedName, ContextualizedNode
|
||||
from jedi.common import ContextSet, NO_CONTEXTS
|
||||
from jedi.evaluate.context import ContextualizedName, ContextualizedNode, \
|
||||
ContextSet, NO_CONTEXTS
|
||||
from jedi import parser_utils
|
||||
|
||||
|
||||
|
||||
@@ -13,9 +13,8 @@ from jedi import debug
|
||||
from jedi.cache import underscore_memoization, memoize_method
|
||||
from jedi.evaluate.filters import AbstractFilter, AbstractNameDefinition, \
|
||||
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.common import ContextSet
|
||||
from . import fake
|
||||
|
||||
|
||||
|
||||
@@ -9,10 +9,9 @@ from jedi import settings
|
||||
from jedi.evaluate import compiled
|
||||
from jedi.cache import underscore_memoization
|
||||
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.compiled.getattr_static import getattr_static
|
||||
from jedi.common import ContextSet
|
||||
|
||||
|
||||
class MixedObject(object):
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
from jedi._compatibility import Python3Method
|
||||
from parso.python.tree import ExprStmt, CompFor
|
||||
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):
|
||||
@@ -204,3 +204,17 @@ class ContextualizedName(ContextualizedNode):
|
||||
compare = node
|
||||
node = node.parent
|
||||
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 jedi._compatibility import u
|
||||
from jedi.evaluate.utils import unite, indent_block
|
||||
from jedi.evaluate import context
|
||||
from jedi.evaluate.utils import indent_block
|
||||
from jedi.evaluate.cache import evaluator_method_cache
|
||||
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 = [
|
||||
@@ -241,7 +241,7 @@ def _execute_array_values(evaluator, array):
|
||||
_execute_array_values(evaluator, typ)
|
||||
for typ in lazy_context.infer()
|
||||
)
|
||||
values.append(context.LazyKnownContexts(objects))
|
||||
values.append(LazyKnownContexts(objects))
|
||||
return set([FakeSequence(evaluator, array.array_type, values)])
|
||||
else:
|
||||
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.helpers import is_stdlib_path
|
||||
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
|
||||
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ from abc import abstractmethod
|
||||
|
||||
from parso.tree import search_ancestor
|
||||
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.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.tree import search_ancestor
|
||||
from jedi import debug
|
||||
from jedi.evaluate.utils import unite
|
||||
from jedi import settings
|
||||
from jedi.evaluate import representation as er
|
||||
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 helpers
|
||||
from jedi.evaluate.filters import get_global_filters, TreeNameDefinition
|
||||
from jedi.evaluate.context import ContextualizedName, ContextualizedNode
|
||||
from jedi.common import ContextSet
|
||||
from jedi.evaluate.context import ContextualizedName, ContextualizedNode, ContextSet
|
||||
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.cache import evaluator_method_cache
|
||||
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
|
||||
|
||||
@@ -4,13 +4,13 @@ from jedi._compatibility import is_py3
|
||||
from jedi import debug
|
||||
from jedi.evaluate import compiled
|
||||
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.param import AbstractArguments, AnonymousArguments
|
||||
from jedi.cache import memoize_method
|
||||
from jedi.evaluate import representation as er
|
||||
from jedi.evaluate import iterable
|
||||
from jedi.common import ContextSet, iterator_to_context_set, NO_CONTEXTS
|
||||
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 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.evaluate.utils import to_list
|
||||
from jedi.evaluate import compiled
|
||||
from jedi.evaluate import helpers
|
||||
from jedi.evaluate import analysis
|
||||
from jedi.evaluate import pep0484
|
||||
from jedi.evaluate import context
|
||||
from jedi.evaluate import precedence
|
||||
from jedi.evaluate import recursion
|
||||
from jedi.evaluate.cache import evaluator_method_cache
|
||||
from jedi.evaluate.filters import DictFilter, AbstractNameDefinition, \
|
||||
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
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ from jedi.evaluate import context
|
||||
from jedi.evaluate import docstrings
|
||||
from jedi.evaluate import pep0484
|
||||
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):
|
||||
|
||||
@@ -27,8 +27,7 @@ from parso.python import tree
|
||||
|
||||
from jedi.evaluate.cache import evaluator_method_cache
|
||||
from jedi.evaluate import compiled
|
||||
from jedi.evaluate.context import LazyTreeContext
|
||||
from jedi.common import NO_CONTEXTS, ContextSet
|
||||
from jedi.evaluate.context import LazyTreeContext, NO_CONTEXTS, ContextSet
|
||||
from jedi import debug
|
||||
from jedi import _compatibility
|
||||
from jedi import parser_utils
|
||||
|
||||
@@ -7,7 +7,7 @@ from jedi._compatibility import unicode
|
||||
from jedi import debug
|
||||
from jedi.evaluate.compiled import CompiledObject, create, builtin_from_name
|
||||
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.
|
||||
COMPARISON_OPERATORS = {
|
||||
|
||||
@@ -29,7 +29,7 @@ therefore the quality might not always be maximal.
|
||||
from contextlib import contextmanager
|
||||
|
||||
from jedi import debug
|
||||
from jedi.common import NO_CONTEXTS
|
||||
from jedi.evaluate.context import NO_CONTEXTS
|
||||
|
||||
|
||||
recursion_limit = 15
|
||||
|
||||
@@ -63,8 +63,8 @@ from jedi.evaluate.filters import ParserTreeFilter, FunctionExecutionFilter, \
|
||||
ParamName, AnonymousInstanceParamName, TreeNameDefinition, \
|
||||
ContextNameMixin
|
||||
from jedi.evaluate import context
|
||||
from jedi.evaluate.context import ContextualizedNode
|
||||
from jedi.common import NO_CONTEXTS, ContextSet, iterator_to_context_set
|
||||
from jedi.evaluate.context import ContextualizedNode, NO_CONTEXTS, \
|
||||
ContextSet, iterator_to_context_set
|
||||
from jedi import parser_utils
|
||||
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 param
|
||||
from jedi.evaluate import analysis
|
||||
from jedi.evaluate.context import LazyTreeContext, ContextualizedNode
|
||||
from jedi.common import NO_CONTEXTS, ContextSet
|
||||
from jedi.evaluate.context import LazyTreeContext, ContextualizedNode, \
|
||||
NO_CONTEXTS, ContextSet
|
||||
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user