Skip to content

omnipy.components.json.serializers

CLASS DESCRIPTION
JsonDatasetToTarFileSerializer

JsonDatasetToTarFileSerializer

Bases: TarFileSerializer[JsonBaseDataset]

METHOD DESCRIPTION
deserialize
get_dataset_cls_for_new
get_output_file_suffix
is_dataset_directly_supported
serialize
Source code in src/omnipy/components/json/serializers.py
class JsonDatasetToTarFileSerializer(TarFileSerializer[JsonBaseDataset]):
    """"""
    @classmethod
    def is_dataset_directly_supported(cls, dataset: IsDataset) -> bool:
        from ..isa.datasets import IsaJsonDataset
        return isinstance(dataset, JsonBaseDataset) or isinstance(dataset, IsaJsonDataset)

    @classmethod
    def get_dataset_cls_for_new(cls) -> Type[IsDataset]:
        return JsonDataset

    @classmethod
    def get_output_file_suffix(cls) -> str:
        return 'json'

    @classmethod
    def serialize(cls, dataset: JsonBaseDataset) -> bytes | memoryview:
        def json_encode_func(json_data: JsonModel) -> bytes:
            return json_data.to_json().encode('utf8')

        return cls.create_tarfile_from_dataset(dataset, data_encode_func=json_encode_func)

    @classmethod
    def deserialize(cls, serialized: bytes, any_file_suffix=False) -> JsonDataset:
        json_dataset = JsonDataset()

        def json_decode_func(file_stream: IO[bytes]) -> str:
            return file_stream.read().decode('utf8')

        def json_dictify_object(data_file: str, obj_val: str) -> dict[str, str]:
            return {f'{data_file}': f'{obj_val}'}

        cls.create_dataset_from_tarfile(
            json_dataset,
            serialized,
            data_decode_func=json_decode_func,
            dictify_object_func=json_dictify_object,
            import_method='from_json',
            any_file_suffix=any_file_suffix,
        )

        return json_dataset

deserialize classmethod

deserialize(serialized: bytes, any_file_suffix=False) -> JsonDataset
Source code in src/omnipy/components/json/serializers.py
@classmethod
def deserialize(cls, serialized: bytes, any_file_suffix=False) -> JsonDataset:
    json_dataset = JsonDataset()

    def json_decode_func(file_stream: IO[bytes]) -> str:
        return file_stream.read().decode('utf8')

    def json_dictify_object(data_file: str, obj_val: str) -> dict[str, str]:
        return {f'{data_file}': f'{obj_val}'}

    cls.create_dataset_from_tarfile(
        json_dataset,
        serialized,
        data_decode_func=json_decode_func,
        dictify_object_func=json_dictify_object,
        import_method='from_json',
        any_file_suffix=any_file_suffix,
    )

    return json_dataset

get_dataset_cls_for_new classmethod

get_dataset_cls_for_new() -> Type[IsDataset]
Source code in src/omnipy/components/json/serializers.py
@classmethod
def get_dataset_cls_for_new(cls) -> Type[IsDataset]:
    return JsonDataset

get_output_file_suffix classmethod

get_output_file_suffix() -> str
Source code in src/omnipy/components/json/serializers.py
@classmethod
def get_output_file_suffix(cls) -> str:
    return 'json'

is_dataset_directly_supported classmethod

is_dataset_directly_supported(dataset: IsDataset) -> bool
Source code in src/omnipy/components/json/serializers.py
@classmethod
def is_dataset_directly_supported(cls, dataset: IsDataset) -> bool:
    from ..isa.datasets import IsaJsonDataset
    return isinstance(dataset, JsonBaseDataset) or isinstance(dataset, IsaJsonDataset)

serialize classmethod

serialize(dataset: JsonBaseDataset) -> bytes | memoryview
Source code in src/omnipy/components/json/serializers.py
@classmethod
def serialize(cls, dataset: JsonBaseDataset) -> bytes | memoryview:
    def json_encode_func(json_data: JsonModel) -> bytes:
        return json_data.to_json().encode('utf8')

    return cls.create_tarfile_from_dataset(dataset, data_encode_func=json_encode_func)