From d70033fbb1b36c3666c98035fceece7baa426292 Mon Sep 17 00:00:00 2001 From: Gaurav Mishra Date: Thu, 20 Aug 2026 11:00:39 +0530 Subject: [PATCH 1/2] fix(components): revert get_all_components Signed-off-by: Gaurav Mishra --- sw360/components.py | 32 +++++++++++++++++++++----------- tests/test_sw360_components.py | 3 ++- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/sw360/components.py b/sw360/components.py index a7c1625..36edb92 100644 --- a/sw360/components.py +++ b/sw360/components.py @@ -37,7 +37,7 @@ def __get_components_filtered( :type page_size: int :param sort: sort order for the components (Sort by name if `None`) :type sort: SortParam - :return: list of components + :return: response from API :rtype: list of JSON component objects :raises SW360Error: if there is a negative HTTP response """ @@ -55,12 +55,7 @@ def __get_components_filtered( else: resp = self.api_get(full_url) - if (resp and - "_embedded" in resp and - "sw360:components" in resp["_embedded"]): - return resp["_embedded"]["sw360:components"] - - return [] + return resp def get_all_components( self, fields: str = "", page: int = -1, page_size: int = -1, @@ -99,8 +94,16 @@ def get_all_components( if sort is None: sort = ComponentSortColumn.NAME.asc() - return self.__get_components_filtered(url_with_param, page, page_size, + resp = self.__get_components_filtered(url_with_param, page, page_size, sort) + if (resp and + "_embedded" in resp and + "sw360:components" in resp["_embedded"]): + if page == -1: + return resp["_embedded"]["sw360:components"] + return resp + + return [] def get_components_by_type( self, component_type: str, page: int = -1, page_size: int = -1, @@ -135,9 +138,14 @@ def get_components_by_type( if sort is None: sort = ComponentSortColumn.NAME.asc() - return self.__get_components_filtered(url_with_param, page, page_size, + resp = self.__get_components_filtered(url_with_param, page, page_size, sort) + if resp and ("_embedded" in resp) and ("sw360:components" in resp["_embedded"]): + return resp["_embedded"]["sw360:components"] + + return [] + def get_component(self, component_id: str) -> Optional[Dict[str, Any]]: """Get information of about a component @@ -175,7 +183,7 @@ def get_component_by_url(self, component_url: str) -> Optional[Dict[str, Any]]: def get_component_by_name( self, component_name: str, page: int = -1, page_size: int = -1, sort: Optional[SortParam] = None - ) -> Dict[str, Any]: + ) -> Optional[Dict[str, Any]]: """Get information of about a component API endpoint: GET /components?name= @@ -206,9 +214,11 @@ def get_component_by_name( else: sort = ComponentSortColumn.NAME.asc() - return self.__get_components_filtered(url_with_param, page, page_size, + resp = self.__get_components_filtered(url_with_param, page, page_size, sort) + return resp + def get_components_by_external_id(self, ext_id_name: str, ext_id_value: str = "") -> List[Dict[str, Any]]: """Get components by external id. `ext_id_value` can be left blank to search for all components with `ext_id_name`. diff --git a/tests/test_sw360_components.py b/tests/test_sw360_components.py index 8205f68..5b80367 100644 --- a/tests/test_sw360_components.py +++ b/tests/test_sw360_components.py @@ -152,7 +152,8 @@ def test_get_all_components_with_fields_and_paging(self) -> None: adding_headers={"Authorization": "Token " + self.MYTOKEN}, ) - components = lib.get_all_components("ownerCountry", 1, 2) + data = lib.get_all_components("ownerCountry", 1, 2) + components = data["_embedded"]["sw360:components"] self.assertIsNotNone(components) self.assertTrue(len(components) > 0) self.assertEqual("Tethys.Logging", components[0]["name"]) From efd8944f5e98cda73640a04428bbd2e3e33c7357 Mon Sep 17 00:00:00 2001 From: Thomas Graf Date: Thu, 20 Aug 2026 14:00:11 +0200 Subject: [PATCH 2/2] style: fix issue --- sw360/components.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sw360/components.py b/sw360/components.py index 36edb92..9795af5 100644 --- a/sw360/components.py +++ b/sw360/components.py @@ -98,7 +98,7 @@ def get_all_components( sort) if (resp and "_embedded" in resp and - "sw360:components" in resp["_embedded"]): + "sw360:components" in resp["_embedded"]): if page == -1: return resp["_embedded"]["sw360:components"] return resp