From 63dd00f47d694e0899bb01be382406d5e815c81c Mon Sep 17 00:00:00 2001 From: Gaurav Mishra Date: Thu, 20 Aug 2026 11:02:21 +0530 Subject: [PATCH] fix(packages): revert get_all_packages Signed-off-by: Gaurav Mishra --- sw360/packages.py | 31 +++++++++++++++++++++---------- tests/test_sw360_packages.py | 10 ++++++---- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/sw360/packages.py b/sw360/packages.py index b38f256..d67b9e9 100644 --- a/sw360/packages.py +++ b/sw360/packages.py @@ -33,7 +33,7 @@ def __get_packages_filtered( :type page_size: int :param sort: sort order for the package :type sort: SortParam - :return: list of packages + :return: response from API :rtype: list of JSON package objects :raises SW360Error: if there is a negative HTTP response """ @@ -51,12 +51,7 @@ def __get_packages_filtered( else: resp = self.api_get(full_url) - if (resp and - "_embedded" in resp and - "sw360:packages" in resp["_embedded"]): - return resp["_embedded"]["sw360:packages"] - - return [] + return resp def get_package(self, package_id: str) -> Optional[Dict[str, Any]]: """Get information of about a package @@ -109,7 +104,13 @@ def get_packages_by_name( else: sort = PackageSortColumn.NAME.asc() - return self.__get_packages_filtered(url_with_param, page, page_size, sort) + resp = self.__get_packages_filtered(url_with_param, page, page_size, + sort) + + if resp and ("_embedded" in resp) and ("sw360:packages" in resp["_embedded"]): + return resp["_embedded"]["sw360:packages"] + + return [] def get_all_packages( self, name: str = "", version: str = "", purl: str = "", @@ -167,9 +168,14 @@ def get_all_packages( else: sort = PackageSortColumn.NAME.asc() - return self.__get_packages_filtered(url_with_param, page, page_size, + resp = self.__get_packages_filtered(url_with_param, page, page_size, sort) + if page == -1 and resp and ("_embedded" in resp) and ("sw360:packages" in resp["_embedded"]): + return resp["_embedded"]["sw360:packages"] + + return resp + def get_packages_by_packagemanager( self, manager: str, page: int = -1, page_size: int = -1, sort: Optional[SortParam] = None @@ -204,9 +210,14 @@ def get_packages_by_packagemanager( else: sort = PackageSortColumn.NAME.asc() - return self.__get_packages_filtered(url_with_param, page, page_size, + resp = self.__get_packages_filtered(url_with_param, page, page_size, sort) + if page == -1 and resp and ("_embedded" in resp) and ("sw360:packages" in resp["_embedded"]): + return resp["_embedded"]["sw360:packages"] + + return resp + def create_new_package(self, name: str, version: str, purl: str, package_type: str, package_details: Dict[str, Any] = {}) -> Optional[Dict[str, Any]]: """Create a new package diff --git a/tests/test_sw360_packages.py b/tests/test_sw360_packages.py index c12b5a2..17dd9bc 100644 --- a/tests/test_sw360_packages.py +++ b/tests/test_sw360_packages.py @@ -159,8 +159,9 @@ def test_get_all_packages_with_fields_and_all_details2(self) -> None: packages = lib.get_all_packages(name="cli-support", version="2.0.0", all_details=True, page=2, page_size=6, sort=PackageSortColumn.NAME.desc()) # noqa self.assertIsNotNone(packages) self.assertTrue(len(packages) > 0) - self.assertEqual("Tethys.Logging", packages[0]["name"]) - self.assertEqual("1.3.0", packages[0]["version"]) + pkgs = packages["_embedded"]["sw360:packages"] + self.assertEqual("Tethys.Logging", pkgs[0]["name"]) + self.assertEqual("1.3.0", pkgs[0]["version"]) @responses.activate def test_get_packages_by_name(self) -> None: @@ -231,8 +232,9 @@ def test_get_packages_by_packagemanager_with_details(self) -> None: packages = lib.get_packages_by_packagemanager("nuget", page=1, page_size=5, sort=PackageSortColumn.NAME.desc()) self.assertIsNotNone(packages) self.assertTrue(len(packages) > 0) - self.assertEqual("john", packages[0]["name"]) - self.assertEqual("2.2.2", packages[0]["version"]) + pkgs = packages["_embedded"]["sw360:packages"] + self.assertEqual("john", pkgs[0]["name"]) + self.assertEqual("2.2.2", pkgs[0]["version"]) @responses.activate def test_create_new_package(self) -> None: