From 59059c2927a8fdf2a615d2b93be38897e984dcf2 Mon Sep 17 00:00:00 2001 From: Matthias Bernt Date: Fri, 7 Mar 2025 19:16:21 +0100 Subject: [PATCH] add library dataset deletion route that is not marked as deprecated --- bioblend/_tests/TestGalaxyFolders.py | 8 ++++---- bioblend/galaxy/libraries/__init__.py | 28 +++++++++++++++++++++------ 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/bioblend/_tests/TestGalaxyFolders.py b/bioblend/_tests/TestGalaxyFolders.py index e438b5826..59c8775b8 100644 --- a/bioblend/_tests/TestGalaxyFolders.py +++ b/bioblend/_tests/TestGalaxyFolders.py @@ -70,10 +70,10 @@ def test_show_folder_contents_include_deleted(self): hda_id = self._test_dataset(history["id"]) # Create 2 library datasets into the library folder - ldda1 = self.gi.libraries.copy_from_dataset( + ld1 = self.gi.libraries.copy_from_dataset( library_id=self.library["id"], dataset_id=hda_id, folder_id=self.folder["id"], message="Added HDA" ) - ldda2 = self.gi.libraries.copy_from_dataset( + ld2 = self.gi.libraries.copy_from_dataset( library_id=self.library["id"], dataset_id=hda_id, folder_id=self.folder["id"], message="Added HDA" ) folder_info = self.gi.folders.show_folder(self.folder["id"], contents=True) @@ -81,8 +81,8 @@ def test_show_folder_contents_include_deleted(self): assert folder_info["folder_contents"][0]["type"] == "file" # Delete the library datasets and check if include_deleted works - self.gi.libraries.delete_library_dataset(self.library["id"], ldda1["id"]) - self.gi.libraries.delete_library_dataset(self.library["id"], ldda2["id"], purged=True) + self.gi.libraries.delete_library_dataset(ld1["id"]) + self.gi.libraries.delete_library_dataset(ld2["id"], purged=True) folder_info = self.gi.folders.show_folder(self.folder["id"], contents=True, include_deleted=True) # check if there are 2 contents and the number is correct assert len(folder_info["folder_contents"]) == 2 diff --git a/bioblend/galaxy/libraries/__init__.py b/bioblend/galaxy/libraries/__init__.py index 39b8c7210..177ef0b88 100644 --- a/bioblend/galaxy/libraries/__init__.py +++ b/bioblend/galaxy/libraries/__init__.py @@ -86,13 +86,25 @@ def _show_item(self, library_id: str, item_id: str) -> dict[str, Any]: url = "/".join((self._make_url(library_id, contents=True), item_id)) return self._get(url=url) - def delete_library_dataset(self, library_id: str, dataset_id: str, purged: bool = False) -> dict[str, Any]: + @overload + def delete_library_dataset( + self, + dataset_id: str, + undelete: bool = False, + ) -> Dict[str, Any]: ... + + @overload + def delete_library_dataset( + self, + library_id: str, + dataset_id: str, + purged: bool = False, + ) -> Dict[str, Any]: ... + + def delete_library_dataset(self, library_id: Optional[str], dataset_id: str, purged: bool = False, undelete: bool = False) -> Dict[str, Any]: """ Delete a library dataset in a data library. - :type library_id: str - :param library_id: library id where dataset is found in - :type dataset_id: str :param dataset_id: id of the dataset to be deleted @@ -108,8 +120,12 @@ def delete_library_dataset(self, library_id: str, dataset_id: str, purged: bool {'deleted': True, 'id': '60e680a037f41974'} """ - url = "/".join((self._make_url(library_id, contents=True), dataset_id)) - return self._delete(payload={"purged": purged}, url=url) + if not library_id: + url = "/".join(self._make_url(), "datasets", dataset_id) + return self._delete(params={"undelete": undelete}, url=url) + else: + url = "/".join((self._make_url(library_id, contents=True), dataset_id)) + return self._delete(payload={"purged": purged}, url=url) def update_library_dataset(self, dataset_id: str, **kwargs: Any) -> dict[str, Any]: """