added overwrite functionality
This commit is contained in:
@@ -191,6 +191,7 @@ def propagation(
|
|||||||
file_or_params: os.PathLike | Parameters,
|
file_or_params: os.PathLike | Parameters,
|
||||||
params: Parameters | None = None,
|
params: Parameters | None = None,
|
||||||
bundle_data: bool = False,
|
bundle_data: bool = False,
|
||||||
|
overwrite: bool = False,
|
||||||
) -> Propagation:
|
) -> Propagation:
|
||||||
file = None
|
file = None
|
||||||
if isinstance(file_or_params, Parameters):
|
if isinstance(file_or_params, Parameters):
|
||||||
@@ -198,7 +199,7 @@ def propagation(
|
|||||||
else:
|
else:
|
||||||
file = Path(file_or_params)
|
file = Path(file_or_params)
|
||||||
|
|
||||||
if file is not None and file.exists():
|
if file is not None and file.exists() and params is None:
|
||||||
io = ZipFileIOHandler(file)
|
io = ZipFileIOHandler(file)
|
||||||
return _open_existing_propagation(io)
|
return _open_existing_propagation(io)
|
||||||
|
|
||||||
@@ -206,6 +207,11 @@ def propagation(
|
|||||||
raise ValueError("Parameters must be specified to create new simulation")
|
raise ValueError("Parameters must be specified to create new simulation")
|
||||||
|
|
||||||
if file is not None:
|
if file is not None:
|
||||||
|
if file.exists() and params is not None:
|
||||||
|
if overwrite:
|
||||||
|
Path(file).unlink()
|
||||||
|
else:
|
||||||
|
raise FileExistsError(f"{file} already exists. use overwrite=True to overwrite")
|
||||||
io = ZipFileIOHandler(file)
|
io = ZipFileIOHandler(file)
|
||||||
else:
|
else:
|
||||||
io = MemoryIOHandler()
|
io = MemoryIOHandler()
|
||||||
|
|||||||
@@ -101,6 +101,21 @@ def test_clear(tmp_path: Path):
|
|||||||
assert not zpath.exists()
|
assert not zpath.exists()
|
||||||
|
|
||||||
|
|
||||||
|
def test_overwrite(tmp_path: Path):
|
||||||
|
params = Parameters(**PARAMS)
|
||||||
|
zpath = tmp_path / "file.zip"
|
||||||
|
_ = propagation(zpath, params)
|
||||||
|
orig_file = zpath.read_bytes()
|
||||||
|
|
||||||
|
with pytest.raises(FileExistsError):
|
||||||
|
_ = propagation(zpath, params)
|
||||||
|
|
||||||
|
_ = propagation(zpath, params, overwrite=True)
|
||||||
|
|
||||||
|
assert zpath.read_bytes() != orig_file
|
||||||
|
assert len(zpath.read_bytes()) == len(orig_file)
|
||||||
|
|
||||||
|
|
||||||
def test_zip_bundle(tmp_path: Path):
|
def test_zip_bundle(tmp_path: Path):
|
||||||
params = Parameters(**PARAMS)
|
params = Parameters(**PARAMS)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user