Files
RekomenciBackend/src/template_project/application/common/containers.py
T
ivankirpichnikov 652da07d12 fast init
2025-10-16 23:03:50 +03:00

43 lines
1.0 KiB
Python

from collections.abc import Container, Hashable, Sized
from typing import Any, Final, override
_SECRET_VALUE: Final = "********" # noqa: S105
class SecretString(Container[bool], Hashable, Sized):
__slots__ = ("_value",)
def __init__(self, value: str) -> None:
self._value = value
@override
def __hash__(self) -> int:
return hash(self._value)
@override
def __len__(self) -> int:
return len(self._value)
@override
def __eq__(self, value: object) -> bool:
if isinstance(value, str):
return self._value == value
return NotImplemented
@override
def __contains__(self, value: object) -> Any:
if isinstance(value, str):
return value in self._value
return NotImplemented
@override
def __str__(self) -> str:
return _SECRET_VALUE
@override
def __repr__(self) -> str:
return f"<{self.__class__.__name__}(value={_SECRET_VALUE!r})>"
def get_value(self) -> str:
return self._value