"""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."""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."""withopen(path,"r",encoding="utf-8")asf:data=json.load(f)returndeserialize_nexus_ref(data)