Coverage for flogin/_types/search_handlers.py: 100%
4 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-07-03 22:51 +0000
« prev ^ index » next coverage.py v7.9.2, created at 2025-07-03 22:51 +0000
1from __future__ import annotations
3from typing import TYPE_CHECKING, Any, TypeVar
5if TYPE_CHECKING:
6 from collections.abc import AsyncIterable, Callable, Coroutine, Iterable
8 from typing_extensions import Protocol, TypeVar # noqa: TC004
10 from ..jsonrpc.results import Result as _Result
11 from ..plugin import Plugin
12 from ..query import Query
13 from .jsonrpc.result import RawResult
15 class StringCastable(Protocol):
16 def __str__(self) -> str: ...
18 PluginT = TypeVar("PluginT", bound=Plugin[Any], default=Plugin[Any], covariant=True)
19 T = TypeVar("T", default=Any)
21 ConvertableToResult = str | int | RawResult | StringCastable | _Result[PluginT]
22 ConvertableToResults = ConvertableToResult | Iterable[ConvertableToResult]
23 SearchHandlerCallbackReturns = (
24 Coroutine[Any, Any, ConvertableToResults] | AsyncIterable[ConvertableToResults]
25 )
26 SearchHandlerCallback = Callable[[Query[T]], SearchHandlerCallbackReturns]
27 SearchHandlerCallbackWithSelf = Callable[
28 [Any, Query[T]], SearchHandlerCallbackReturns
29 ]
30 SearchHandlerCondition = Callable[[Query[T]], bool]
31else:
32 ConvertableToResult = ConvertableToResults = SearchHandlerCallbackReturns = (
33 SearchHandlerCallback
34 ) = SearchHandlerCallbackWithSelf = SearchHandlerCondition = Any
35 PluginT = TypeVar("PluginT")