Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/prompt_toolkit/filters/utils.py: 87%

15 statements  

« prev     ^ index     » next       coverage.py v7.2.2, created at 2023-03-26 06:07 +0000

1from __future__ import annotations 

2 

3from typing import Dict 

4 

5from .base import Always, Filter, FilterOrBool, Never 

6 

7__all__ = [ 

8 "to_filter", 

9 "is_true", 

10] 

11 

12 

13_always = Always() 

14_never = Never() 

15 

16 

17_bool_to_filter: dict[bool, Filter] = { 

18 True: _always, 

19 False: _never, 

20} 

21 

22 

23def to_filter(bool_or_filter: FilterOrBool) -> Filter: 

24 """ 

25 Accept both booleans and Filters as input and 

26 turn it into a Filter. 

27 """ 

28 if isinstance(bool_or_filter, bool): 

29 return _bool_to_filter[bool_or_filter] 

30 

31 if isinstance(bool_or_filter, Filter): 

32 return bool_or_filter 

33 

34 raise TypeError("Expecting a bool or a Filter instance. Got %r" % bool_or_filter) 

35 

36 

37def is_true(value: FilterOrBool) -> bool: 

38 """ 

39 Test whether `value` is True. In case of a Filter, call it. 

40 

41 :param value: Boolean or `Filter` instance. 

42 """ 

43 return to_filter(value)()