from pathlib import Path
from shutil import copyfile


def safe_write_bytes(data: bytes, dst: Path):
    dst_tmp = dst.with_suffix(".tmp")
    dst_tmp.write_bytes(data)
    dst.unlink()
    dst_tmp.rename(dst)


def safe_write_text(data: str, dst: Path):
    dst_tmp = dst.with_suffix(".tmp")
    dst_tmp.write_text(data)
    dst.unlink()
    dst_tmp.rename(dst)


def safe_copy(src: Path, dst: Path):
    dst_tmp = dst.with_suffix(".tmp")
    dst_tmp.touch()
    copyfile(src, dst_tmp)
    dst_tmp.rename(dst)
