1from typing import TYPE_CHECKING
2
3from prompt_toolkit.filters import Filter
4
5if TYPE_CHECKING:
6    from .python_input import PythonInput
7
8__all__ = ["HasSignature", "ShowSidebar", "ShowSignature", "ShowDocstring"]
9
10
11class PythonInputFilter(Filter):
12    def __init__(self, python_input: "PythonInput") -> None:
13        self.python_input = python_input
14
15    def __call__(self) -> bool:
16        raise NotImplementedError
17
18
19class HasSignature(PythonInputFilter):
20    def __call__(self) -> bool:
21        return bool(self.python_input.signatures)
22
23
24class ShowSidebar(PythonInputFilter):
25    def __call__(self) -> bool:
26        return self.python_input.show_sidebar
27
28
29class ShowSignature(PythonInputFilter):
30    def __call__(self) -> bool:
31        return self.python_input.show_signature
32
33
34class ShowDocstring(PythonInputFilter):
35    def __call__(self) -> bool:
36        return self.python_input.show_docstring
37