Исходный код 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