diff --git a/prompt_toolkit/completion/word_completer.py b/prompt_toolkit/completion/word_completer.py index 28c133e92..caab51e2e 100644 --- a/prompt_toolkit/completion/word_completer.py +++ b/prompt_toolkit/completion/word_completer.py @@ -1,4 +1,4 @@ -from typing import Callable, Iterable, List, Mapping, Optional, Pattern, Union +from typing import Callable, Iterable, Mapping, Optional, Pattern, Union from prompt_toolkit.completion import CompleteEvent, Completer, Completion from prompt_toolkit.document import Document @@ -31,7 +31,7 @@ class WordCompleter(Completer): def __init__( self, - words: Union[List[str], Callable[[], List[str]]], + words: Union[Iterable[str], Callable[[], Iterable[str]]], ignore_case: bool = False, display_dict: Optional[Mapping[str, AnyFormattedText]] = None, meta_dict: Optional[Mapping[str, AnyFormattedText]] = None, diff --git a/prompt_toolkit/formatted_text/base.py b/prompt_toolkit/formatted_text/base.py index e88c5935a..3a05b091a 100644 --- a/prompt_toolkit/formatted_text/base.py +++ b/prompt_toolkit/formatted_text/base.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING, Any, Callable, Iterable, List, Tuple, Union, cast +from typing import TYPE_CHECKING, Any, Callable, List, Iterable, Sequence, Tuple, Union, cast from prompt_toolkit.mouse_events import MouseEvent @@ -8,6 +8,7 @@ __all__ = [ "OneStyleAndTextTuple", "StyleAndTextTuples", + "StyleAndTextTuplesType", "MagicFormattedText", "AnyFormattedText", "to_formatted_text", @@ -21,9 +22,11 @@ Tuple[str, str], Tuple[str, str, Callable[[MouseEvent], None]] ] -# List of (style, text) tuples. +# List (covariant version of list) of (style, text) tuples +# Not there is a subclass of this StyleAndTextTuples = List[OneStyleAndTextTuple] - +# For typing stuff, we prefer an Iterable as it is more flexible +StyleAndTextTuplesType = Iterable[OneStyleAndTextTuple] if TYPE_CHECKING: from typing_extensions import TypeGuard @@ -41,7 +44,7 @@ def __pt_formatted_text__(self) -> StyleAndTextTuples: AnyFormattedText = Union[ str, "MagicFormattedText", - StyleAndTextTuples, + StyleAndTextTuplesTypes, # Callable[[], 'AnyFormattedText'] # Recursive definition not supported by mypy. Callable[[], Any], None,