"""Utilities for qnexus-filesystem interactions."""importjsonfrompathlibimportPathfromqnexus.models.referencesimportRef,deserialize_nexus_ref
[docs]defsave(ref:Ref,path:Path,mkdir:bool=False)->None:"""Save a Nexus Ref to a file. Examples: >>> import qnexus as qnx >>> from pathlib import Path >>> project_ref = qnx.projects.get(name="my-project") >>> qnx.filesystem.save(project_ref, Path("my_project.json")) >>> qnx.filesystem.save(project_ref, Path("data/refs/project.json"), mkdir=True) """ifmkdir:path.parent.mkdir(parents=True,exist_ok=True)withopen(path,"w",encoding="utf-8")asf:f.write(ref.model_dump_json())
[docs]defload(path:Path)->Ref:"""Load a Nexus Ref from a file. Examples: >>> import qnexus as qnx >>> from pathlib import Path >>> project_ref = qnx.filesystem.load(Path("my_project.json")) """withopen(path,"r",encoding="utf-8")asf:data=json.load(f)returndeserialize_nexus_ref(data)