StubClassContext is now also a ContextWrapper

This commit is contained in:
Dave Halter
2018-10-09 22:53:33 +02:00
parent 7daa26ce81
commit 55f0966a9a

View File

@@ -205,11 +205,10 @@ class NameWithStubMixin(object):
) )
elif isinstance(stub_context, StubOnlyClass) \ elif isinstance(stub_context, StubOnlyClass) \
and isinstance(actual_context, ClassContext): and isinstance(actual_context, ClassContext):
yield StubClassContext( yield StubClassContext.create_cached(
actual_context.evaluator, actual_context.evaluator,
actual_context,
stub_context, stub_context,
actual_context.parent_context,
actual_context.tree_node,
) )
else: else:
yield stub_context yield stub_context
@@ -348,7 +347,7 @@ class _MixedStubContextMixin(object):
self.stub_context = stub_context self.stub_context = stub_context
class _StubContextFilterMixin(_MixedStubContextMixin): class _StubContextFilterMixin(object):
def get_filters(self, search_global=False, until_position=None, def get_filters(self, search_global=False, until_position=None,
origin_scope=None, **kwargs): origin_scope=None, **kwargs):
filters = super(_StubContextFilterMixin, self).get_filters( filters = super(_StubContextFilterMixin, self).get_filters(
@@ -366,11 +365,15 @@ class _StubContextFilterMixin(_MixedStubContextMixin):
yield f yield f
class StubModuleContext(_StubContextFilterMixin, ModuleContext): class StubModuleContext(_MixedStubContextMixin, _StubContextFilterMixin, ModuleContext):
pass pass
class StubClassContext(_StubContextFilterMixin, ClassContext): class StubClassContext(_StubContextFilterMixin, ClassMixin, ContextWrapper):
def __init__(self, cls, stub_context):
super(StubClassContext, self).__init__(cls)
self.stub_context = stub_context
def __getattribute__(self, name): def __getattribute__(self, name):
if name in ('py__getitem__', 'py__simple_getitem__', 'py__bases__', if name in ('py__getitem__', 'py__simple_getitem__', 'py__bases__',
'execute_annotation', 'get_stub_only_filter'): 'execute_annotation', 'get_stub_only_filter'):