Исходный код EJIO.utils.interface.tupleable

## /utils/interface/tupleable.py

from abc import abstractmethod
from typing import Protocol, Self

__all__ = [
    'Tupleable',
]


[документация] class Tupleable(Protocol): """ Интерфейс объектов, которые поддерживают преобразование в/из кортеж (tuple). """ __slots__ = ()
[документация] @abstractmethod def to_tuple[T](self) -> list[T]: """ Преобразовать объект в кортеж. :return: Кортеж, отражающий состояние объекта. :raises NotImplementedError: Должен быть реализован в подклассе. """ raise NotImplementedError
[документация] @classmethod @abstractmethod def from_tuple[T](cls, data: list[T]) -> Self: """ Восстановить объект из кортежа. :param data: Кортеж с данными. :return: Новый объект, созданный из этого кортежа. :raises NotImplementedError: Должен быть реализован в подклассе. """ raise NotImplementedError