in submitit/core/utils.py [0:0]
def temporary_save_path(filepath: Union[Path, str]) -> Iterator[Path]:
"""Yields a path where to save a file and moves it
afterward to the provided location (and replaces any
existing file)
This is useful to avoid processes monitoring the filepath
to break if trying to read when the file is being written.
Note
----
The temporary path is the provided path appended with .save_tmp
"""
filepath = Path(filepath)
tmppath = filepath.with_suffix(filepath.suffix + ".save_tmp")
assert not tmppath.exists(), "A temporary saved file already exists."
yield tmppath
if not tmppath.exists():
raise FileNotFoundError("No file was saved at the temporary path.")
if filepath.exists():
os.remove(filepath)
os.rename(tmppath, filepath)