1
0
forked from VimPlug/jedi

Setting correct parents for CompiledObject filters

This commit is contained in:
Dave Halter
2019-06-04 23:31:42 +02:00
parent 586354b571
commit 0a56211df8
8 changed files with 92 additions and 67 deletions

View File

@@ -6,7 +6,7 @@ from jedi.evaluate.context import ModuleContext
from jedi.evaluate import compiled
from jedi.evaluate.compiled import mixed
from jedi.evaluate.compiled.access import create_access_path
from jedi.evaluate.base_context import Context
from jedi.evaluate.base_context import ContextWrapper
def _create(evaluator, obj):
@@ -20,41 +20,28 @@ class NamespaceObject(object):
self.__dict__ = dct
class MixedModuleContext(Context):
# TODO use ContextWrapper!
class MixedModuleContext(ContextWrapper):
type = 'mixed_module'
def __init__(self, evaluator, tree_module, namespaces, file_io, code_lines):
self.evaluator = evaluator
self._namespaces = namespaces
self._namespace_objects = [NamespaceObject(n) for n in namespaces]
self._module_context = ModuleContext(
module_context = ModuleContext(
evaluator, tree_module,
file_io=file_io,
string_names=('__main__',),
code_lines=code_lines
)
self.tree_node = tree_module
super(MixedModuleContext, self).__init__(module_context)
self._namespace_objects = [NamespaceObject(n) for n in namespaces]
def get_filters(self, *args, **kwargs):
for filter in self._module_context.get_filters(*args, **kwargs):
for filter in self._wrapped_context.get_filters(*args, **kwargs):
yield filter
for namespace_obj in self._namespace_objects:
compiled_object = _create(self.evaluator, namespace_obj)
mixed_object = mixed.MixedObject(
self.evaluator,
parent_context=self,
compiled_object=compiled_object,
tree_context=self._module_context
tree_context=self._wrapped_context
)
for filter in mixed_object.get_filters(*args, **kwargs):
yield filter
@property
def code_lines(self):
return self._module_context.code_lines
def __getattr__(self, name):
return getattr(self._module_context, name)