refactor: Refactor storage system (#937)

This commit is contained in:
Fangyin Cheng
2023-12-15 16:35:45 +08:00
committed by GitHub
parent a1e415d68d
commit aed1c3fb2b
55 changed files with 3780 additions and 680 deletions

View File

@@ -1,19 +1,34 @@
from __future__ import annotations
from abc import ABC, abstractmethod
from typing import Type, Dict
class Serializable(ABC):
serializer: "Serializer" = None
@abstractmethod
def to_dict(self) -> Dict:
"""Convert the object's state to a dictionary."""
def serialize(self) -> bytes:
"""Convert the object into bytes for storage or transmission.
Returns:
bytes: The byte array after serialization
"""
if self.serializer is None:
raise ValueError(
"Serializer is not set. Please set the serializer before serialization."
)
return self.serializer.serialize(self)
@abstractmethod
def to_dict(self) -> Dict:
"""Convert the object's state to a dictionary."""
def set_serializer(self, serializer: "Serializer") -> None:
"""Set the serializer for current serializable object.
Args:
serializer (Serializer): The serializer to set
"""
self.serializer = serializer
class Serializer(ABC):