Toggle Light / Dark / Auto color theme
Toggle table of contents sidebar
Source code for phantom.boolean
"""
Types describing objects that coerce to either ``True`` or ``False`` respectively when
calling ``bool()`` on them.
"""
from __future__ import annotations
from typing import TYPE_CHECKING
from . import Phantom
from .predicates import boolean
if TYPE_CHECKING :
from hypothesis.strategies import SearchStrategy
[docs]
class Truthy ( Phantom [ object ], predicate = boolean . truthy , bound = object ):
"""
>>> isinstance("Huzzah!", Truthy)
True
>>> isinstance((), Truthy)
False
"""
@classmethod
def __register_strategy__ ( cls ) -> SearchStrategy :
from hypothesis.strategies import integers
from hypothesis.strategies import just
from hypothesis.strategies import lists
from hypothesis.strategies import text
return (
just ( True )
| integers ( min_value = 1 )
| integers ( max_value =- 1 )
| lists ( elements = integers (), min_size = 1 )
| text ( min_size = 1 )
)
[docs]
class Falsy ( Phantom [ object ], predicate = boolean . falsy , bound = object ):
"""
>>> isinstance((), Falsy)
True
>>> isinstance("Hej!", Falsy)
False
"""
@classmethod
def __register_strategy__ ( cls ) -> SearchStrategy :
from hypothesis.strategies import just
return just ( False ) | just ( 0 ) | just (()) | just ( "" ) | just ( b "" )