from jedi.inference.value import ModuleValue
from jedi.inference.context import ModuleContext


class DocstringModule(ModuleValue):
    def __init__(self, in_module_context, **kwargs):
        super().__init__(**kwargs)
        self._in_module_context = in_module_context

    def _as_context(self):
        return DocstringModuleContext(self, self._in_module_context)


class DocstringModuleContext(ModuleContext):
    def __init__(self, module_value, in_module_context):
        super().__init__(module_value)
        self._in_module_context = in_module_context

    def get_filters(self, until_position=None, origin_scope=None):
        yield from super().get_filters(until_position=until_position)
        yield from self._in_module_context.get_filters()
