diff options
Diffstat (limited to 'tools/cru-py/cru/util/_const.py')
-rw-r--r-- | tools/cru-py/cru/util/_const.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tools/cru-py/cru/util/_const.py b/tools/cru-py/cru/util/_const.py new file mode 100644 index 0000000..ea67450 --- /dev/null +++ b/tools/cru-py/cru/util/_const.py @@ -0,0 +1,51 @@ +from typing import Any + + +def make_unique_object() -> Any: + class _CruUnique: + _i = False + + def __init__(self): + if self._i: + raise ValueError("_CruAttrNotSet is a singleton!") + self._i = True + + def __copy__(self): + return self + + def __eq__(self, other): + return isinstance(other, _CruUnique) + + v = _CruUnique() + + return v + + +def make_bool_unique_object(b: bool) -> Any: + class _CruBoolUnique: + _i = False + + def __init__(self): + super().__init__(b) + if self._i: + raise ValueError("_CruAttrNotSet is a singleton!") + self._i = True + + def __copy__(self): + return self + + def __eq__(self, other): + return isinstance(other, _CruBoolUnique) or b == other + + def __bool__(self): + return b + + v = _CruBoolUnique() + + return v + + +CRU_NOT_FOUND = make_bool_unique_object(False) +CRU_USE_DEFAULT = make_unique_object() +CRU_DONT_CHANGE = make_unique_object() +CRU_PLACEHOLDER = make_unique_object() |