Skip to content

omnipy.components.json.tasks

FUNCTION DESCRIPTION
convert_dataset_string_to_json
transpose_dicts_2_lists

convert_dataset_string_to_json

convert_dataset_string_to_json(dataset: Dataset[Model[str]]) -> JsonDataset
Source code in src/omnipy/components/json/tasks.py
@TaskTemplate()
def convert_dataset_string_to_json(dataset: Dataset[Model[str]]) -> JsonDataset:
    json_dataset = JsonDataset()
    json_dataset.from_json(dataset.to_data())
    return json_dataset

transpose_dicts_2_lists

transpose_dicts_2_lists(dataset: JsonDictDataset, id_key: str = ID_KEY) -> JsonListDataset
Source code in src/omnipy/components/json/tasks.py
@TaskTemplate()
def transpose_dicts_2_lists(dataset: JsonDictDataset, id_key: str = ID_KEY) -> JsonListDataset:
    input_dataset: dict[str, JsonDict] = dataset.to_data()
    output_dataset: dict[str, JsonList] = {}

    for name, item in input_dataset.items():
        for key, val in item.items():
            if key not in output_dataset:
                output_dataset[key] = []

            if not obj_or_model_content_isinstance(val, list):
                val = [val]
            for item_index, val_item in enumerate(val):
                if obj_or_model_content_isinstance(val_item, dict):
                    val_dict: dict[str, Json] = {
                        id_key: f'{name}_{item_index}' if item_index > 0 else name
                    }
                    assert id_key not in val_item
                    val_dict |= val_item
                    output_dataset[key].append(val_dict)
                else:
                    output_dataset[key].append(val_item)

    return JsonListDataset(output_dataset)