Skip to content

Module omnipy.modules.json.flows

Overview

View Source
from omnipy.compute.flow import FuncFlowTemplate

from omnipy.compute.typing import mypy_fix_func_flow_template

from .datasets import JsonListOfDictsDataset, JsonListOfDictsOfScalarsDataset

from .tasks import DEFAULT_KEY, flatten_outer_level_of_all_data_files, ID_KEY, REF_KEY

@mypy_fix_func_flow_template

@FuncFlowTemplate(fixed_params=dict(id_key=ID_KEY, ref_key=REF_KEY, default_key=DEFAULT_KEY))

def flatten_nested_json(

    dataset: JsonListOfDictsDataset,

    id_key: str,

    ref_key: str,

    default_key: str,

) -> JsonListOfDictsOfScalarsDataset:

    all_data_files_of_scalar_records_ds = JsonListOfDictsOfScalarsDataset()

    data_files_of_any_ds = dataset

    while len(data_files_of_any_ds) > 0:

        data_files_of_scalar_records_ds, data_files_of_any_ds = \

            flatten_outer_level_of_all_data_files(

                data_files_of_any_ds, id_key, ref_key, default_key)

        all_data_files_of_scalar_records_ds |= data_files_of_scalar_records_ds

    return all_data_files_of_scalar_records_ds

Variables

DEFAULT_KEY
ID_KEY
REF_KEY
flatten_nested_json