From 2581e68b30239787389cce0d5353056339e6c950 Mon Sep 17 00:00:00 2001 From: mkarmah Date: Thu, 16 Jan 2025 19:40:40 +0000 Subject: [PATCH] Resolve UserWarning Log --- .../gitlab/gitlab_integration/core/async_fetcher.py | 4 +++- .../gitlab/gitlab_integration/gitlab_service.py | 13 ++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/integrations/gitlab/gitlab_integration/core/async_fetcher.py b/integrations/gitlab/gitlab_integration/core/async_fetcher.py index 586f58058d..d0527b40d0 100644 --- a/integrations/gitlab/gitlab_integration/core/async_fetcher.py +++ b/integrations/gitlab/gitlab_integration/core/async_fetcher.py @@ -15,6 +15,7 @@ User, GroupMember, ProjectFile, + ProjectLabel, ) from loguru import logger @@ -44,7 +45,6 @@ async def fetch_single( ], *args, ) -> Union[ - RESTObject, RESTObject, ProjectPipelineJob, ProjectPipeline, @@ -52,6 +52,7 @@ async def fetch_single( Project, Group, ProjectFile, + ProjectLabel, ]: with ThreadPoolExecutor() as executor: return await get_event_loop().run_in_executor(executor, fetch_func, *args) @@ -92,6 +93,7 @@ async def fetch_batch( List[RESTObject], List[Dict[str, Any]], GitlabList, + List[ProjectLabel], ] ]: def fetch_page( diff --git a/integrations/gitlab/gitlab_integration/gitlab_service.py b/integrations/gitlab/gitlab_integration/gitlab_service.py index 0e21033806..5847353177 100644 --- a/integrations/gitlab/gitlab_integration/gitlab_service.py +++ b/integrations/gitlab/gitlab_integration/gitlab_service.py @@ -20,6 +20,7 @@ ProjectFile, ProjectPipeline, ProjectPipelineJob, + ProjectLabel, Hook, ) from gitlab_integration.core.async_fetcher import AsyncFetcher @@ -550,9 +551,15 @@ async def get_all_projects(self) -> typing.AsyncIterator[List[Project]]: @classmethod async def async_project_labels_wrapper(cls, project: Project) -> dict[str, Any]: try: - labels = await anyio.to_thread.run_sync(project.labels.list) - serialized_labels = [label.attributes for label in labels] - return {"__labels": serialized_labels} + all_labels = [ + label.attributes + async for labels_batch in AsyncFetcher.fetch_batch( + fetch_func=project.labels.list + ) + for label in typing.cast(List[ProjectLabel], labels_batch) + ] + + return {"__labels": all_labels} except Exception as e: logger.warning( f"Failed to get labels for project={project.path_with_namespace}. error={e}"