Also move the class to the context package.

This commit is contained in:
Dave Halter
2017-09-29 15:39:20 +02:00
parent 5f613ece28
commit 8c601a1c65
6 changed files with 17 additions and 21 deletions
+4 -4
View File
@@ -12,13 +12,13 @@ from jedi._compatibility import u
from jedi import settings from jedi import settings
from jedi.evaluate.utils import ignored, unite from jedi.evaluate.utils import ignored, unite
from jedi.cache import memoize_method from jedi.cache import memoize_method
from jedi.evaluate import representation as er
from jedi.evaluate import imports from jedi.evaluate import imports
from jedi.evaluate import compiled from jedi.evaluate import compiled
from jedi.evaluate.filters import ParamName from jedi.evaluate.filters import ParamName
from jedi.evaluate.imports import ImportName from jedi.evaluate.imports import ImportName
from jedi.evaluate.context import instance from jedi.evaluate.context import instance
from jedi.evaluate.context.function import FunctionContext, FunctionExecutionContext from jedi.evaluate.context.function import FunctionContext, FunctionExecutionContext
from jedi.evaluate.context.klass import ClassContext
from jedi.api.keywords import KeywordName from jedi.api.keywords import KeywordName
@@ -323,8 +323,8 @@ class BaseDefinition(object):
param_names = list(context.get_param_names()) param_names = list(context.get_param_names())
if isinstance(context, instance.BoundMethod): if isinstance(context, instance.BoundMethod):
param_names = param_names[1:] param_names = param_names[1:]
elif isinstance(context, (instance.AbstractInstanceContext, er.ClassContext)): elif isinstance(context, (instance.AbstractInstanceContext, ClassContext)):
if isinstance(context, er.ClassContext): if isinstance(context, ClassContext):
search = '__init__' search = '__init__'
else: else:
search = '__call__' search = '__call__'
@@ -336,7 +336,7 @@ class BaseDefinition(object):
# there's no better solution. # there's no better solution.
inferred = names[0].infer() inferred = names[0].infer()
param_names = get_param_names(next(iter(inferred))) param_names = get_param_names(next(iter(inferred)))
if isinstance(context, er.ClassContext): if isinstance(context, ClassContext):
param_names = param_names[1:] param_names = param_names[1:]
return param_names return param_names
elif isinstance(context, compiled.CompiledObject): elif isinstance(context, compiled.CompiledObject):
+3 -3
View File
@@ -70,7 +70,6 @@ import parso
from jedi import debug from jedi import debug
from jedi.evaluate.utils import unite from jedi.evaluate.utils import unite
from jedi.evaluate import representation as er
from jedi.evaluate import imports from jedi.evaluate import imports
from jedi.evaluate import recursion from jedi.evaluate import recursion
from jedi.evaluate import iterable from jedi.evaluate import iterable
@@ -85,6 +84,7 @@ from jedi.evaluate.context.function import FunctionContext
from jedi.evaluate.syntax_tree import eval_trailer, eval_expr_stmt, \ from jedi.evaluate.syntax_tree import eval_trailer, eval_expr_stmt, \
eval_node, check_tuple_assignments eval_node, check_tuple_assignments
from jedi import parser_utils from jedi import parser_utils
from jedi.evaluate.context.klass import ClassContext
class Evaluator(object): class Evaluator(object):
@@ -207,7 +207,7 @@ class Evaluator(object):
if def_ is not None: if def_ is not None:
type_ = def_.type type_ = def_.type
if type_ == 'classdef': if type_ == 'classdef':
return [er.ClassContext(self, context, name.parent)] return [ClassContext(self, context, name.parent)]
elif type_ == 'funcdef': elif type_ == 'funcdef':
return [FunctionContext(self, context, name.parent)] return [FunctionContext(self, context, name.parent)]
@@ -340,7 +340,7 @@ class Evaluator(object):
return func.get_function_execution() return func.get_function_execution()
return func return func
elif scope_node.type == 'classdef': elif scope_node.type == 'classdef':
class_context = er.ClassContext(self, parent_context, scope_node) class_context = ClassContext(self, parent_context, scope_node)
if child_is_funcdef: if child_is_funcdef:
# anonymous instance # anonymous instance
return AnonymousInstance(self, parent_context, class_context) return AnonymousInstance(self, parent_context, class_context)
+3 -3
View File
@@ -9,8 +9,8 @@ from jedi.evaluate.context import Context, LazyKnownContext, LazyKnownContexts,
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.context.function import FunctionExecutionContext, FunctionContext from jedi.evaluate.context.function import FunctionExecutionContext, FunctionContext
from jedi.evaluate.context.klass import ClassContext, apply_py__get__
from jedi.evaluate import iterable from jedi.evaluate import iterable
from jedi.parser_utils import get_parent_scope from jedi.parser_utils import get_parent_scope
@@ -188,7 +188,7 @@ class AbstractInstanceContext(Context):
) )
return bound_method.get_function_execution() return bound_method.get_function_execution()
elif scope.type == 'classdef': elif scope.type == 'classdef':
class_context = er.ClassContext(self.evaluator, scope, parent_context) class_context = ClassContext(self.evaluator, scope, parent_context)
return class_context return class_context
elif scope.type == 'comp_for': elif scope.type == 'comp_for':
# Comprehensions currently don't have a special scope in Jedi. # Comprehensions currently don't have a special scope in Jedi.
@@ -347,7 +347,7 @@ class LazyInstanceClassName(LazyInstanceName):
parent_context, result_context.tree_node parent_context, result_context.tree_node
) )
else: else:
for c in er.apply_py__get__(result_context, self._instance): for c in apply_py__get__(result_context, self._instance):
yield c yield c
@@ -37,18 +37,14 @@ py__doc__(include_call_signature: Returns the docstring for a context.
====================================== ======================================== ====================================== ========================================
""" """
import os
from itertools import chain
from jedi._compatibility import use_metaclass from jedi._compatibility import use_metaclass
from jedi.evaluate.cache import evaluator_method_cache, CachedMetaClass from jedi.evaluate.cache import evaluator_method_cache, CachedMetaClass
from jedi.evaluate import compiled from jedi.evaluate import compiled
from jedi.evaluate import param from jedi.evaluate import param
from jedi.evaluate import imports
from jedi.evaluate.filters import ParserTreeFilter, TreeNameDefinition, \ from jedi.evaluate.filters import ParserTreeFilter, TreeNameDefinition, \
DictFilter, ContextName, AbstractNameDefinition, AnonymousInstanceParamName ContextName, AnonymousInstanceParamName
from jedi.evaluate import context from jedi.evaluate import context
from jedi.evaluate.context import NO_CONTEXTS, ContextSet, iterator_to_context_set from jedi.evaluate.context import ContextSet, iterator_to_context_set
def apply_py__get__(context, base_context): def apply_py__get__(context, base_context):
+2 -2
View File
@@ -13,7 +13,6 @@ import collections
import re import re
from jedi.evaluate import compiled from jedi.evaluate import compiled
from jedi.evaluate import representation as er
from jedi.evaluate.context.instance import InstanceFunctionExecution, \ from jedi.evaluate.context.instance import InstanceFunctionExecution, \
AbstractInstanceContext, CompiledInstance, BoundMethod, \ AbstractInstanceContext, CompiledInstance, BoundMethod, \
AnonymousInstanceFunctionExecution AnonymousInstanceFunctionExecution
@@ -23,6 +22,7 @@ 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, \
NO_CONTEXTS, ContextSet NO_CONTEXTS, ContextSet
from jedi.evaluate.context.klass import ClassContext
from jedi.evaluate.context.module import ModuleContext from jedi.evaluate.context.module import ModuleContext
from jedi.evaluate.syntax_tree import is_string from jedi.evaluate.syntax_tree import is_string
@@ -295,7 +295,7 @@ def collections_namedtuple(evaluator, obj, arguments):
module = evaluator.grammar.parse(source) module = evaluator.grammar.parse(source)
generated_class = next(module.iter_classdefs()) generated_class = next(module.iter_classdefs())
parent_context = ModuleContext(evaluator, module, '') parent_context = ModuleContext(evaluator, module, '')
return ContextSet(er.ClassContext(evaluator, parent_context, generated_class)) return ContextSet(ClassContext(evaluator, parent_context, generated_class))
@argument_clinic('first, /') @argument_clinic('first, /')
+3 -3
View File
@@ -18,7 +18,7 @@ from jedi.evaluate import analysis
from jedi.evaluate import iterable from jedi.evaluate import iterable
from jedi.evaluate import imports from jedi.evaluate import imports
from jedi.evaluate import param from jedi.evaluate import param
from jedi.evaluate import representation as er from jedi.evaluate.context.klass import ClassContext
from jedi.evaluate.context.function import FunctionContext from jedi.evaluate.context.function import FunctionContext
from jedi.evaluate.context.instance import TreeInstance, CompiledInstance from jedi.evaluate.context.instance import TreeInstance, CompiledInstance
from jedi.evaluate.finder import NameFinder from jedi.evaluate.finder import NameFinder
@@ -131,7 +131,7 @@ def eval_trailer(context, base_contexts, trailer):
# https://github.com/davidhalter/jedi/issues/663 # https://github.com/davidhalter/jedi/issues/663
result = ContextSet() result = ContextSet()
for typ in list(foo): for typ in list(foo):
if isinstance(typ, (er.ClassContext, TreeInstance)): if isinstance(typ, (ClassContext, TreeInstance)):
typing_module_types = pep0484.py__getitem__(context, typ, node) typing_module_types = pep0484.py__getitem__(context, typ, node)
if typing_module_types is not None: if typing_module_types is not None:
foo.remove(typ) foo.remove(typ)
@@ -503,7 +503,7 @@ def _apply_decorators(context, node):
This is also the places where the decorators are processed. This is also the places where the decorators are processed.
""" """
if node.type == 'classdef': if node.type == 'classdef':
decoratee_context = er.ClassContext( decoratee_context = ClassContext(
context.evaluator, context.evaluator,
parent_context=context, parent_context=context,
classdef=node classdef=node