Source code for simdb.imas.checksum

import hashlib
from pathlib import Path

from simdb.uri import URI

from .utils import imas_files, list_idss, open_imas

IGNORED_FIELDS = ("data_dictionary", "access_layer", "access_layer_language")


[docs] def checksum(uri: URI, ids_list: list) -> str: if uri.scheme != "imas": raise ValueError(f"invalid scheme for imas checksum: {uri.scheme}") sha1 = hashlib.sha1() if not ids_list: entry = open_imas(uri) ids_list = list_idss(entry) entry.close() for path in imas_files(uri): with path.open("rb") as file: ids_name = Path(path).name.split(".") if ids_name[1] == "h5" and ( ids_name[0] != "master" and ids_list is not None and ids_name[0] not in ids_list ): continue for chunk in iter(lambda: file.read(4096), b""): sha1.update(chunk) return sha1.hexdigest()