diff --git a/jedi/api/classes.py b/jedi/api/classes.py index ca8a1cb4..c67e0b97 100644 --- a/jedi/api/classes.py +++ b/jedi/api/classes.py @@ -12,13 +12,13 @@ from jedi._compatibility import u from jedi import settings from jedi.evaluate.utils import ignored, unite from jedi.cache import memoize_method -from jedi.evaluate import representation as er from jedi.evaluate import imports from jedi.evaluate import compiled from jedi.evaluate.filters import ParamName from jedi.evaluate.imports import ImportName from jedi.evaluate.context import instance from jedi.evaluate.context.function import FunctionContext, FunctionExecutionContext +from jedi.evaluate.context.klass import ClassContext from jedi.api.keywords import KeywordName @@ -323,8 +323,8 @@ class BaseDefinition(object): param_names = list(context.get_param_names()) if isinstance(context, instance.BoundMethod): param_names = param_names[1:] - elif isinstance(context, (instance.AbstractInstanceContext, er.ClassContext)): - if isinstance(context, er.ClassContext): + elif isinstance(context, (instance.AbstractInstanceContext, ClassContext)): + if isinstance(context, ClassContext): search = '__init__' else: search = '__call__' @@ -336,7 +336,7 @@ class BaseDefinition(object): # there's no better solution. inferred = names[0].infer() param_names = get_param_names(next(iter(inferred))) - if isinstance(context, er.ClassContext): + if isinstance(context, ClassContext): param_names = param_names[1:] return param_names elif isinstance(context, compiled.CompiledObject): diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index 44ed8e2d..c0bebe96 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -70,7 +70,6 @@ import parso from jedi import debug from jedi.evaluate.utils import unite -from jedi.evaluate import representation as er from jedi.evaluate import imports from jedi.evaluate import recursion 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, \ eval_node, check_tuple_assignments from jedi import parser_utils +from jedi.evaluate.context.klass import ClassContext class Evaluator(object): @@ -207,7 +207,7 @@ class Evaluator(object): if def_ is not None: type_ = def_.type if type_ == 'classdef': - return [er.ClassContext(self, context, name.parent)] + return [ClassContext(self, context, name.parent)] elif type_ == 'funcdef': return [FunctionContext(self, context, name.parent)] @@ -340,7 +340,7 @@ class Evaluator(object): return func.get_function_execution() return func 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: # anonymous instance return AnonymousInstance(self, parent_context, class_context) diff --git a/jedi/evaluate/context/instance.py b/jedi/evaluate/context/instance.py index 437c355a..3bfa1db0 100644 --- a/jedi/evaluate/context/instance.py +++ b/jedi/evaluate/context/instance.py @@ -9,8 +9,8 @@ from jedi.evaluate.context import Context, LazyKnownContext, LazyKnownContexts, 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.context.function import FunctionExecutionContext, FunctionContext +from jedi.evaluate.context.klass import ClassContext, apply_py__get__ from jedi.evaluate import iterable from jedi.parser_utils import get_parent_scope @@ -188,7 +188,7 @@ class AbstractInstanceContext(Context): ) return bound_method.get_function_execution() elif scope.type == 'classdef': - class_context = er.ClassContext(self.evaluator, scope, parent_context) + class_context = ClassContext(self.evaluator, scope, parent_context) return class_context elif scope.type == 'comp_for': # Comprehensions currently don't have a special scope in Jedi. @@ -347,7 +347,7 @@ class LazyInstanceClassName(LazyInstanceName): parent_context, result_context.tree_node ) else: - for c in er.apply_py__get__(result_context, self._instance): + for c in apply_py__get__(result_context, self._instance): yield c diff --git a/jedi/evaluate/representation.py b/jedi/evaluate/context/klass.py similarity index 97% rename from jedi/evaluate/representation.py rename to jedi/evaluate/context/klass.py index 3b6856d1..7c5a3aa4 100644 --- a/jedi/evaluate/representation.py +++ b/jedi/evaluate/context/klass.py @@ -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.evaluate.cache import evaluator_method_cache, CachedMetaClass from jedi.evaluate import compiled from jedi.evaluate import param -from jedi.evaluate import imports from jedi.evaluate.filters import ParserTreeFilter, TreeNameDefinition, \ - DictFilter, ContextName, AbstractNameDefinition, AnonymousInstanceParamName + ContextName, AnonymousInstanceParamName 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): diff --git a/jedi/evaluate/stdlib.py b/jedi/evaluate/stdlib.py index c7823dd5..8a13e170 100644 --- a/jedi/evaluate/stdlib.py +++ b/jedi/evaluate/stdlib.py @@ -13,7 +13,6 @@ import collections import re from jedi.evaluate import compiled -from jedi.evaluate import representation as er from jedi.evaluate.context.instance import InstanceFunctionExecution, \ AbstractInstanceContext, CompiledInstance, BoundMethod, \ AnonymousInstanceFunctionExecution @@ -23,6 +22,7 @@ from jedi.evaluate import param from jedi.evaluate import analysis from jedi.evaluate.context import LazyTreeContext, ContextualizedNode, \ NO_CONTEXTS, ContextSet +from jedi.evaluate.context.klass import ClassContext from jedi.evaluate.context.module import ModuleContext from jedi.evaluate.syntax_tree import is_string @@ -295,7 +295,7 @@ def collections_namedtuple(evaluator, obj, arguments): module = evaluator.grammar.parse(source) generated_class = next(module.iter_classdefs()) 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, /') diff --git a/jedi/evaluate/syntax_tree.py b/jedi/evaluate/syntax_tree.py index a9ad39b7..2de3ac5d 100644 --- a/jedi/evaluate/syntax_tree.py +++ b/jedi/evaluate/syntax_tree.py @@ -18,7 +18,7 @@ from jedi.evaluate import analysis from jedi.evaluate import iterable from jedi.evaluate import imports 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.instance import TreeInstance, CompiledInstance from jedi.evaluate.finder import NameFinder @@ -131,7 +131,7 @@ def eval_trailer(context, base_contexts, trailer): # https://github.com/davidhalter/jedi/issues/663 result = ContextSet() 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) if typing_module_types is not None: foo.remove(typ) @@ -503,7 +503,7 @@ def _apply_decorators(context, node): This is also the places where the decorators are processed. """ if node.type == 'classdef': - decoratee_context = er.ClassContext( + decoratee_context = ClassContext( context.evaluator, parent_context=context, classdef=node