Source code for dolomite_base.read_simple_list
from typing import Union
import os
from .alt_read_object import alt_read_object
from . import lib_dolomite_base as lib
[docs]
def read_simple_list(path: str, metadata: dict, **kwargs) -> Union[dict, list]:
"""Read an R-style list from its on-disk representation in the **uzuki2**
format. In general, this function should not be called directly but
instead via :py:meth:`~dolomite_base.read_object.read_object`.
Args:
path:
Path to the directory containing the object.
metadata:
Metadata for the object.
kwargs:
Further arguments, passed to nested objects.
Returns:
A list or dictionary.
"""
other_dir = os.path.join(path, "other_contents")
children = []
if os.path.exists(other_dir):
files = os.listdir(other_dir)
collected = []
for f in files:
if f.isdigit():
collected.append(f)
children = [None] * len(collected)
for f in collected:
children[int(f)] = alt_read_object(os.path.join(other_dir, f))
if metadata["simple_list"]["format"] == "hdf5":
full_path = os.path.join(path, "list_contents.h5")
return lib.load_list_hdf5(full_path, "simple_list", children)
else:
full_path = os.path.join(path, "list_contents.json.gz")
return lib.load_list_json(full_path, children)