Source code for simpleml.save_patterns.base

"""
Module for base save pattern definition

Starts by serializing to temp folder and formatting
"""

[docs]__author__ = "Elisha Yadgaran"
import logging from typing import Any, Dict, Tuple, Type
[docs]LOGGER = logging.getLogger(__name__)
[docs]class BaseSavePattern(object): """ Base class for save patterns (registered wrappers for the collection of serializers and deserializers) """
[docs] serializers: Tuple[Type["BaseSerializer"]] = tuple()
[docs] deserializers: Tuple[Type["BaseSerializer"]] = tuple()
@classmethod
[docs] def save(cls, **kwargs) -> Dict[str, str]: """ Routine to iterate through serializers returning the final metadata """ if not cls.serializers: raise ValueError("Need to specify at least one serialization class") for serializer in cls.serializers: LOGGER.debug(f"Serializing with {serializer}") params = serializer.serialize(**kwargs) LOGGER.debug(f"Serialization params: {params}") kwargs.update(params) return params
@classmethod
[docs] def load(cls, **kwargs) -> Any: """ The load method invoked """ if not cls.deserializers: raise ValueError("Need to specify at least one deserialization class") for deserializer in cls.deserializers: LOGGER.debug(f"Deserializing with {deserializer}") params = deserializer.deserialize(**kwargs) LOGGER.debug(f"Deserialization params: {params}") kwargs.update(params) return params["obj"]
[docs]class BaseSerializer(object): @staticmethod
[docs] def serialize(**kwargs) -> Dict[str, str]: raise NotImplementedError
@staticmethod
[docs] def deserialize(**kwargs) -> Dict[str, Any]: raise NotImplementedError