Move py__mro__ calls to direct calls, because it's defined on ClassMixin

This commit is contained in:
Dave Halter
2018-12-01 15:17:22 +01:00
parent 2b268435c4
commit 6b86ad9083
5 changed files with 11 additions and 13 deletions

View File

@@ -81,8 +81,7 @@ class HelperContextMixin:
return self.py__iter__(contextualized_node) return self.py__iter__(contextualized_node)
def is_sub_class_of(self, class_context): def is_sub_class_of(self, class_context):
from jedi.evaluate.context.klass import py__mro__ for cls in self.py__mro__():
for cls in py__mro__(self):
if cls.is_same_class(class_context): if cls.is_same_class(class_context):
return True return True
return False return False

View File

@@ -11,9 +11,9 @@ from jedi.evaluate.cache import evaluator_method_cache
from jedi.evaluate.arguments import AnonymousArguments, \ from jedi.evaluate.arguments import AnonymousArguments, \
ValuesArguments, TreeArgumentsWrapper ValuesArguments, TreeArgumentsWrapper
from jedi.evaluate.context.function import FunctionExecutionContext, \ from jedi.evaluate.context.function import FunctionExecutionContext, \
FunctionContext, FunctionMixin, OverloadedFunctionContext, MethodContext FunctionContext, FunctionMixin, OverloadedFunctionContext
from jedi.evaluate.context.klass import ClassContext, apply_py__get__, \ from jedi.evaluate.context.klass import ClassContext, apply_py__get__, \
py__mro__, ClassFilter ClassFilter
from jedi.evaluate.context import iterable from jedi.evaluate.context import iterable
from jedi.parser_utils import get_parent_scope from jedi.parser_utils import get_parent_scope
@@ -127,7 +127,7 @@ class AbstractInstanceContext(Context):
origin_scope=None, include_self_names=True): origin_scope=None, include_self_names=True):
class_context = self.get_annotated_class_object() class_context = self.get_annotated_class_object()
if include_self_names: if include_self_names:
for cls in py__mro__(class_context): for cls in class_context.py__mro__():
if not isinstance(cls, compiled.CompiledObject) \ if not isinstance(cls, compiled.CompiledObject) \
or cls.tree_node is not None: or cls.tree_node is not None:
# In this case we're excluding compiled objects that are # In this case we're excluding compiled objects that are
@@ -135,7 +135,7 @@ class AbstractInstanceContext(Context):
# compiled objects to search for self variables. # compiled objects to search for self variables.
yield SelfAttributeFilter(self.evaluator, self, cls, origin_scope) yield SelfAttributeFilter(self.evaluator, self, cls, origin_scope)
for cls in py__mro__(class_context): for cls in class_context.py__mro__():
if isinstance(cls, compiled.CompiledObject): if isinstance(cls, compiled.CompiledObject):
yield CompiledInstanceClassFilter(self.evaluator, self, cls) yield CompiledInstanceClassFilter(self.evaluator, self, cls)
else: else:

View File

@@ -102,7 +102,7 @@ def py__mro__(context):
debug.warning('Super class of %s is not a class: %s', context, cls) debug.warning('Super class of %s is not a class: %s', context, cls)
else: else:
add(cls) add(cls)
for cls_new in py__mro__(cls): for cls_new in cls.py__mro__():
add(cls_new) add(cls_new)
return tuple(mro) return tuple(mro)
@@ -208,7 +208,7 @@ class ClassMixin(object):
origin_scope=origin_scope origin_scope=origin_scope
) )
else: else:
for cls in py__mro__(self): for cls in self.py__mro__():
if isinstance(cls, compiled.CompiledObject): if isinstance(cls, compiled.CompiledObject):
for filter in cls.get_filters(is_instance=is_instance): for filter in cls.get_filters(is_instance=is_instance):
yield filter yield filter

View File

@@ -17,7 +17,7 @@ from jedi.evaluate.filters import FilterWrapper, NameWrapper, \
AbstractTreeName, AbstractNameDefinition, ContextName AbstractTreeName, AbstractNameDefinition, ContextName
from jedi.evaluate.helpers import is_string from jedi.evaluate.helpers import is_string
from jedi.evaluate.imports import Importer from jedi.evaluate.imports import Importer
from jedi.evaluate.context.klass import py__mro__, ClassMixin from jedi.evaluate.context.klass import ClassMixin
_PROXY_CLASS_TYPES = 'Tuple Generic Protocol Callable Type'.split() _PROXY_CLASS_TYPES = 'Tuple Generic Protocol Callable Type'.split()
_TYPE_ALIAS_TYPES = { _TYPE_ALIAS_TYPES = {
@@ -197,7 +197,7 @@ class TypingContext(_BaseTypingContext):
) )
class TypingClassMixin(object): class TypingClassMixin(ClassMixin):
def py__bases__(self): def py__bases__(self):
return [LazyKnownContexts( return [LazyKnownContexts(
self.evaluator.builtins_module.py__getattribute__('object') self.evaluator.builtins_module.py__getattribute__('object')
@@ -671,7 +671,7 @@ class LazyAnnotatedBaseClass(object):
class InstanceWrapper(ContextWrapper): class InstanceWrapper(ContextWrapper):
def py__stop_iteration_returns(self): def py__stop_iteration_returns(self):
for cls in py__mro__(self._wrapped_context.class_context): for cls in self._wrapped_context.class_context.py__mro__():
if cls.py__name__() == 'Generator': if cls.py__name__() == 'Generator':
given_types = cls.get_given_types() given_types = cls.get_given_types()
try: try:

View File

@@ -24,7 +24,6 @@ from jedi.evaluate.base_context import ContextualizedNode, \
NO_CONTEXTS, ContextSet, ContextWrapper NO_CONTEXTS, ContextSet, ContextWrapper
from jedi.evaluate.context import ClassContext, ModuleContext, \ from jedi.evaluate.context import ClassContext, ModuleContext, \
FunctionExecutionContext FunctionExecutionContext
from jedi.evaluate.context.klass import py__mro__
from jedi.evaluate.context import iterable from jedi.evaluate.context import iterable
from jedi.evaluate.lazy_context import LazyTreeContext, LazyKnownContext, \ from jedi.evaluate.lazy_context import LazyTreeContext, LazyKnownContext, \
LazyKnownContexts LazyKnownContexts
@@ -252,7 +251,7 @@ def builtins_isinstance(objects, types, arguments, evaluator):
bool_results = set([True, False]) bool_results = set([True, False])
break break
mro = py__mro__(cls) mro = list(cls.py__mro__())
for cls_or_tup in types: for cls_or_tup in types:
if cls_or_tup.is_class(): if cls_or_tup.is_class():