/opt/imh-python/lib/python3.9/site-packages/jedi/api
NameSizeModeActions
refactoring/-0755rm
__pycache__/-0755rm
classes.py296000644editdlrm
completion.py283790644editdlrm
completion_cache.py9540644editdlrm
environment.py172540644editdlrm
errors.py12530644editdlrm
exceptions.py9900644editdlrm
file_name.py56200644editdlrm
helpers.py189820644editdlrm
interpreter.py24150644editdlrm
keywords.py11920644editdlrm
project.py165430644editdlrm
replstartup.py9500644editdlrm
strings.py37110644editdlrm
__init__.py324280644editdlrm
Edit: /opt/imh-python/lib/python3.9/site-packages/jedi/api/interpreter.py (2415B)
""" TODO Some parts of this module are still not well documented. """ from jedi.inference import compiled from jedi.inference.base_value import ValueSet from jedi.inference.filters import ParserTreeFilter, MergedFilter from jedi.inference.names import TreeNameDefinition from jedi.inference.compiled import mixed from jedi.inference.compiled.access import create_access_path from jedi.inference.context import ModuleContext def _create(inference_state, obj): return compiled.create_from_access_path( inference_state, create_access_path(inference_state, obj) ) class NamespaceObject: def __init__(self, dct): self.__dict__ = dct class MixedTreeName(TreeNameDefinition): def infer(self): """ In IPython notebook it is typical that some parts of the code that is provided was already executed. In that case if something is not properly inferred, it should still infer from the variables it already knows. """ inferred = super().infer() if not inferred: for compiled_value in self.parent_context.mixed_values: for f in compiled_value.get_filters(): values = ValueSet.from_sets( n.infer() for n in f.get(self.string_name) ) if values: return values return inferred class MixedParserTreeFilter(ParserTreeFilter): name_class = MixedTreeName class MixedModuleContext(ModuleContext): def __init__(self, tree_module_value, namespaces): super().__init__(tree_module_value) self.mixed_values = [ self._get_mixed_object( _create(self.inference_state, NamespaceObject(n)) ) for n in namespaces ] def _get_mixed_object(self, compiled_value): return mixed.MixedObject( compiled_value=compiled_value, tree_value=self._value ) def get_filters(self, until_position=None, origin_scope=None): yield MergedFilter( MixedParserTreeFilter( parent_context=self, until_position=until_position, origin_scope=origin_scope ), self.get_global_filter(), ) for mixed_object in self.mixed_values: yield from mixed_object.get_filters(until_position, origin_scope)