Исходный код EJIO.utils.serialization.serializer

## /utils/serialization/serializer.py

from abc import abstractmethod
from typing import Protocol, Any

__all__ = [
    'Serializer'
]


[документация] class Serializer(Protocol): """ Интерфейс для классов-сериализаторов. Определяет методы для преобразования словаря в строку и обратно. """ __slots__ = ()
[документация] @staticmethod @abstractmethod def serialize[T](data: dict[str, T], /, **kwargs: Any) -> str: """ Сериализовать словарь в строку. :param data: Словарь для сериализации. :param kwargs: Ключевые параметры для сереализатора. :return: Строка в формате, поддерживаемом реализующим классом. :raises NotImplementedError: Должен быть реализован в подклассе. """ raise NotImplementedError
[документация] @staticmethod @abstractmethod def deserialize[T](data: str, /, **kwargs: Any) -> dict[str, T]: """ Десериализовать строку обратно в словарь. :param data: Строка для десериализации. :param kwargs: Ключевые параметры для сереализатора. :return: Словарь, полученный из строки. :raises NotImplementedError: Должен быть реализован в подклассе. """ raise NotImplementedError
[документация] @staticmethod @abstractmethod def save[T](data: dict[str, T], filename: str, /, **kwargs: Any) -> None: """ Сохранить словарь в файл. :param data: Словарь для сериализации. :param filename: Путь к файлу для сохранения. :param kwargs: Ключевые параметры для сереализатора. :raises NotImplementedError: Должен быть реализован в подклассе. """ raise NotImplementedError
[документация] @staticmethod @abstractmethod def load[T](filename: str, /, **kwargs: Any) -> dict[str, T]: """ Загрузить словарь из файла. :param filename: Путь к файлу для загрузки. :param kwargs: Ключевые параметры для сереализатора. :return: Словарь, полученный из строки. :raises NotImplementedError: Должен быть реализован в подклассе. """ raise NotImplementedError