Source code for returns.primitives.types
from typing import Any, Dict, NoReturn
from typing_extensions import Self
from returns.primitives.exceptions import ImmutableStateError
[docs]class Immutable(object):
"""
Helper type for objects that should be immutable.
When applied, each instance becomes immutable.
Nothing can be added or deleted from it.
.. code:: pycon
:force:
>>> from returns.primitives.types import Immutable
>>> class MyModel(Immutable):
... ...
>>> model = MyModel()
>>> model.prop = 1
Traceback (most recent call last):
...
returns.primitives.exceptions.ImmutableStateError
See :class:`returns.primitives.container.BaseContainer` for examples.
""" # noqa: RST307
__slots__ = ()
def __copy__(self) -> Self:
"""Returns itself."""
return self
def __deepcopy__(self, memo: Dict[Any, Any]) -> Self:
"""Returns itself."""
return self
def __setattr__(self, attr_name: str, attr_value: Any) -> NoReturn:
"""Makes inner state of the containers immutable for modification."""
raise ImmutableStateError()
def __delattr__(self, attr_name: str) -> NoReturn: # noqa: WPS603
"""Makes inner state of the containers immutable for deletion."""
raise ImmutableStateError()