diff --git a/src/osekit/public/project.py b/src/osekit/public/project.py index 23771a1f..eb353276 100644 --- a/src/osekit/public/project.py +++ b/src/osekit/public/project.py @@ -733,27 +733,28 @@ def rename_transform_with_outputs( raise ValueError(msg) keys_to_rename = {} - for output_dataset in self.outputs.values(): - if output_dataset["transform"] == transform_name: - output_dataset["transform"] = new_transform_name - ds = output_dataset["dataset"] - old_name, new_name = ( - ds.name, - new_transform_name + (f"_{ds.suffix}" if ds.suffix else ""), - ) - ds.base_name = new_transform_name - old_folder = ds.folder - new_folder = ds.folder.parent / new_name - keys_to_rename[old_name] = new_name - - ds.move_files(new_folder) - move_tree( - old_folder, - new_folder, - excluded_paths=old_folder.glob("*.json"), - ) # Moves exported files - shutil.rmtree(str(old_folder)) - ds.write_json(ds.folder) + for output_name, output_dataset in self.outputs.items(): + if output_dataset["transform"] != transform_name: + continue + output_dataset["transform"] = new_transform_name + ds = self.deserialize_output(output_name=output_name) + old_name, new_name = ( + ds.name, + new_transform_name + (f"_{ds.suffix}" if ds.suffix else ""), + ) + ds.base_name = new_transform_name + old_folder = ds.folder + new_folder = ds.folder.parent / new_name + keys_to_rename[old_name] = new_name + + ds.move_files(new_folder) + move_tree( + old_folder, + new_folder, + excluded_paths=old_folder.glob("*.json"), + ) # Moves exported files + shutil.rmtree(str(old_folder)) + ds.write_json(ds.folder) for old_name, new_name in keys_to_rename.items(): self.outputs[new_name] = self.outputs.pop(old_name) diff --git a/tests/test_public_api.py b/tests/test_public_api.py index 15e474b0..ef65a935 100644 --- a/tests/test_public_api.py +++ b/tests/test_public_api.py @@ -1543,6 +1543,13 @@ def test_rename_transform( new_transform_name=target_name, ) + # DESERIALIZED PROJECT SHOULD DESERIALIZE TRANSFORMS ON RENAME CALL + project = Project.from_json(project.folder / "project.json") + project.rename_transform_with_outputs( + transform_name=names[-1], + new_transform_name="cool", + ) + def test_spectro_transform_with_existing_ads( tmp_path: Path,