File size: 971 Bytes
054900e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# ruff: noqa: S301
import pickle
from abc import ABC, abstractmethod
from typing import Any
import orjson
class AbstractSerializer(ABC):
@abstractmethod
def serialize(self, obj: Any) -> Any:
"""Support for serializing objects stored in Redis."""
@abstractmethod
def deserialize(self, obj: Any) -> Any:
"""Support for deserializing objects stored in Redis."""
class PickleSerializer(AbstractSerializer):
"""Serialize values using pickle."""
def serialize(self, obj: Any) -> bytes:
return pickle.dumps(obj)
def deserialize(self, obj: bytes) -> Any:
"""Deserialize values using pickle."""
return pickle.loads(obj)
class JSONSerializer(AbstractSerializer):
"""Serialize values using JSON."""
def serialize(self, obj: Any) -> bytes:
return orjson.dumps(obj)
def deserialize(self, obj: str) -> Any:
"""Deserialize values using JSON."""
return orjson.loads(obj)
|