def open_npz_arrays()

in point_e/evals/npz_stream.py [0:0]


def open_npz_arrays(path: str, arr_names: Sequence[str]) -> List[NpzArrayReader]:
    if not len(arr_names):
        yield []
        return
    arr_name = arr_names[0]
    with open_array(path, arr_name) as arr_f:
        version = np.lib.format.read_magic(arr_f)
        header = None
        if version == (1, 0):
            header = np.lib.format.read_array_header_1_0(arr_f)
        elif version == (2, 0):
            header = np.lib.format.read_array_header_2_0(arr_f)

        if header is None:
            reader = MemoryNpzArrayReader.load(path, arr_name)
        else:
            shape, fortran, dtype = header
            if fortran or dtype.hasobject:
                reader = MemoryNpzArrayReader.load(path, arr_name)
            else:
                reader = StreamingNpzArrayReader(arr_f, shape, dtype)

        with open_npz_arrays(path, arr_names[1:]) as next_readers:
            yield [reader] + next_readers