Skip to content

Commit 5befe2b

Browse files
authored
Rename output name fix (#358)
* Revert "rename transform with output in existing output error message (#356)" This reverts commit 452b23c. * replace Project.rename_output() with Project.rename_transform_with_outputs(Ã) * adapt Project.run() error msg for duplicate transform names * replace delete_output() with delete_transform_with_outputs() * fix error message expectation in tests
1 parent 452b23c commit 5befe2b

2 files changed

Lines changed: 48 additions & 35 deletions

File tree

src/osekit/public/project.py

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -396,10 +396,13 @@ def run(
396396
"""
397397
if transform.name in self.transforms:
398398
message = (
399-
f"Output {transform.name} already exists. "
400-
f"Please choose a different transform name, "
401-
f"or delete the existing output with the "
402-
f"Project.delete_output() method."
399+
f"A transform with the name {transform.name} has already been run. "
400+
f"Please do either one of the following:"
401+
f"\n\t- Choose a different name for the current transform,"
402+
f"\n\t- Rename the previously run transform with the "
403+
f"``Project.rename_transform_with_outputs()`` method,"
404+
f"\n\t- Delete the previously run transform with the "
405+
f"``Project.delete_transform_with_outputs()`` method."
403406
)
404407
raise ValueError(message)
405408

@@ -671,39 +674,46 @@ def get_output_by_transform_name(
671674
if dataset_values["transform"] == transform_name
672675
]
673676

674-
def rename_output(self, output_name: str, new_output_name: str) -> None:
675-
"""Rename an already ran transform.
677+
def rename_transform_with_outputs(
678+
self,
679+
transform_name: str,
680+
new_transform_name: str,
681+
) -> None:
682+
"""Rename an already run transform.
683+
684+
All outputs of the transform will be renamed as if the tranform
685+
had been originally ran with the ``new_transform_name`` name.
676686
677687
Parameters
678688
----------
679-
output_name: str
689+
transform_name: str
680690
Name of the transform to rename.
681-
new_output_name: str
691+
new_transform_name: str
682692
New name of the transform to rename.
683693
684694
"""
685-
if output_name == new_output_name:
695+
if transform_name == new_transform_name:
686696
return
687-
if output_name == "original":
697+
if transform_name == "original":
688698
msg = "You can't rename the original dataset."
689699
raise ValueError(msg)
690-
if output_name not in self.outputs:
691-
msg = f"Unknown output {output_name}."
700+
if transform_name not in self.outputs:
701+
msg = f"Unknown output {transform_name}."
692702
raise ValueError(msg)
693-
if new_output_name in self.outputs:
694-
msg = f"{new_output_name} already exists."
703+
if new_transform_name in self.outputs:
704+
msg = f"{new_transform_name} already exists."
695705
raise ValueError(msg)
696706

697707
keys_to_rename = {}
698708
for output_dataset in self.outputs.values():
699-
if output_dataset["transform"] == output_name:
700-
output_dataset["transform"] = new_output_name
709+
if output_dataset["transform"] == transform_name:
710+
output_dataset["transform"] = new_transform_name
701711
ds = output_dataset["dataset"]
702712
old_name, new_name = (
703713
ds.name,
704-
new_output_name + (f"_{ds.suffix}" if ds.suffix else ""),
714+
new_transform_name + (f"_{ds.suffix}" if ds.suffix else ""),
705715
)
706-
ds.base_name = new_output_name
716+
ds.base_name = new_transform_name
707717
old_folder = ds.folder
708718
new_folder = ds.folder.parent / new_name
709719
keys_to_rename[old_name] = new_name
@@ -722,20 +732,20 @@ def rename_output(self, output_name: str, new_output_name: str) -> None:
722732

723733
self.write_json()
724734

725-
def delete_output(self, output_name: str) -> None:
726-
"""Delete all output datasets from a given ran transform name.
735+
def delete_transform_with_outputs(self, transform_name: str) -> None:
736+
"""Delete all output datasets from a given run transform name.
727737
728738
WARNING: all the output files will be deleted.
729739
730740
731741
Parameters
732742
----------
733-
output_name: str
743+
transform_name: str
734744
Name of the transform whose output to delete.
735745
736746
"""
737747
for dataset_to_delete in self.get_output_by_transform_name(
738-
output_name,
748+
transform_name,
739749
):
740750
self._delete_output(dataset_to_delete.name)
741751

tests/test_public_api.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1364,7 +1364,7 @@ def test_delete_output(
13641364

13651365
assert all(ds.folder.exists() for ds in (datasets_to_keep + datasets_to_delete))
13661366

1367-
project.delete_output(transform_to_delete.name)
1367+
project.delete_transform_with_outputs(transform_to_delete.name)
13681368

13691369
assert transform_to_keep.name in project.transforms
13701370
assert transform_to_delete.name not in project.transforms
@@ -1406,7 +1406,10 @@ def test_existing_output_warning(
14061406
),
14071407
)
14081408

1409-
with pytest.raises(ValueError, match="my_transform already exists"):
1409+
with pytest.raises(
1410+
ValueError,
1411+
match="A transform with the name my_transform has already been run",
1412+
):
14101413
project.run(
14111414
Transform(
14121415
output_type=OutputType.SPECTROGRAM,
@@ -1417,7 +1420,7 @@ def test_existing_output_warning(
14171420
),
14181421
)
14191422

1420-
project.delete_output("my_transform")
1423+
project.delete_transform_with_outputs("my_transform")
14211424

14221425
project.run(
14231426
Transform(
@@ -1455,7 +1458,7 @@ def test_rename_transform(
14551458

14561459
names = (first_name, second_name, second_name) # Tests both renaming and same name
14571460
for old, new in itertools.pairwise(names):
1458-
project.rename_output(old, new)
1461+
project.rename_transform_with_outputs(old, new)
14591462

14601463
if old != new:
14611464
assert old not in project.transforms
@@ -1482,23 +1485,23 @@ def test_rename_transform(
14821485

14831486
# RENAME ERRORS
14841487
with pytest.raises(ValueError, match=r"You can't rename the original dataset."):
1485-
project.rename_output(
1486-
output_name="original",
1487-
new_output_name="vampire",
1488+
project.rename_transform_with_outputs(
1489+
transform_name="original",
1490+
new_transform_name="vampire",
14881491
)
14891492

14901493
with pytest.raises(ValueError, match=r"original already exists."):
1491-
project.rename_output(
1492-
output_name=second_name,
1493-
new_output_name="original",
1494+
project.rename_transform_with_outputs(
1495+
transform_name=second_name,
1496+
new_transform_name="original",
14941497
)
14951498

14961499
unknown_name = "white"
14971500
target_name = "sky"
14981501
with pytest.raises(ValueError, match=f"Unknown output {unknown_name}."):
1499-
project.rename_output(
1500-
output_name=unknown_name,
1501-
new_output_name=target_name,
1502+
project.rename_transform_with_outputs(
1503+
transform_name=unknown_name,
1504+
new_transform_name=target_name,
15021505
)
15031506

15041507

0 commit comments

Comments
 (0)