Source code for tableserializer.serializer.metadata

import json
from abc import ABC, abstractmethod
from typing import Dict, Any

from tableserializer.serializer.common import SignatureProvidingInstance


[docs] class MetadataSerializer(ABC, SignatureProvidingInstance): """ Serializer for table-related metadata objects. Defines a strategy for serializing the metadata contents in a specific way. """
[docs] @abstractmethod def serialize_metadata(self, metadata: Dict[str, Any]) -> str: """ Serialize the given metadata. :param metadata: Metadata to serialize. :type metadata: Dict[str, Any] :return: String representation of the given metadata. :rtype: str """ raise NotImplementedError
[docs] class PairwiseMetadataSerializer(MetadataSerializer): """ Metadata serializer that serializes entries in the metadata dictionary as "key: value" pairs. """
[docs] def serialize_metadata(self, metadata: Dict[str, Any]) -> str: meta_s = "" for key, value in metadata.items(): meta_s += f"{key}: {value}\n" return meta_s[:-1]
[docs] class JSONMetadataSerializer(MetadataSerializer): """ Metadata serializer that serializes the full metadata dictionary as JSON. """
[docs] def serialize_metadata(self, metadata: Dict[str, Any]) -> str: return json.dumps(metadata)