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

1from __future__ import annotations 

2 

3from typing import TYPE_CHECKING, Any, TypeVar 

4 

5if TYPE_CHECKING: 

6 from collections.abc import AsyncIterable, Callable, Coroutine, Iterable 

7 

8 from typing_extensions import Protocol, TypeVar # noqa: TC004 

9 

10 from ..jsonrpc.results import Result as _Result 

11 from ..plugin import Plugin 

12 from ..query import Query 

13 from .jsonrpc.result import RawResult 

14 

15 class StringCastable(Protocol): 

16 def __str__(self) -> str: ... 

17 

18 PluginT = TypeVar("PluginT", bound=Plugin[Any], default=Plugin[Any], covariant=True) 

19 T = TypeVar("T", default=Any) 

20 

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")