Skip to content

Commit b23fbbd

Browse files
authored
Merge pull request UiPath#762 from UiPath/fix/buckets-service-caching
fix: resolve BucketsService caching bug and improve thread safety
2 parents ec20ba9 + 70db506 commit b23fbbd

File tree

2 files changed

+336
-37
lines changed

2 files changed

+336
-37
lines changed

src/uipath/_uipath.py

Lines changed: 10 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from functools import cached_property
12
from typing import Optional
23

34
from pydantic import ValidationError
@@ -51,10 +52,6 @@ def __init__(
5152
raise BaseUrlMissingError() from e
5253
elif error["loc"][0] == "secret":
5354
raise SecretMissingError() from e
54-
self._folders_service: Optional[FolderService] = None
55-
self._buckets_service: Optional[BucketsService] = None
56-
self._attachments_service: Optional[AttachmentsService] = None
57-
self._connections_service: Optional[ConnectionsService] = None
5855
setup_logging(should_debug=debug)
5956
self._execution_context = ExecutionContext()
6057

@@ -66,13 +63,9 @@ def api_client(self) -> ApiClient:
6663
def assets(self) -> AssetsService:
6764
return AssetsService(self._config, self._execution_context)
6865

69-
@property
66+
@cached_property
7067
def attachments(self) -> AttachmentsService:
71-
if not self._attachments_service:
72-
self._attachments_service = AttachmentsService(
73-
self._config, self._execution_context
74-
)
75-
return self._attachments_service
68+
return AttachmentsService(self._config, self._execution_context)
7669

7770
@property
7871
def processes(self) -> ProcessesService:
@@ -82,39 +75,21 @@ def processes(self) -> ProcessesService:
8275
def actions(self) -> ActionsService:
8376
return ActionsService(self._config, self._execution_context)
8477

85-
@property
78+
@cached_property
8679
def buckets(self) -> BucketsService:
87-
if not self._buckets_service:
88-
self._buckets_service = BucketsService(
89-
self._config, self._execution_context
90-
)
9180
return BucketsService(self._config, self._execution_context)
9281

93-
@property
82+
@cached_property
9483
def connections(self) -> ConnectionsService:
95-
if not self._connections_service:
96-
if not self._folders_service:
97-
self._folders_service = FolderService(
98-
self._config, self._execution_context
99-
)
100-
self._connections_service = ConnectionsService(
101-
self._config, self._execution_context, self._folders_service
102-
)
103-
return self._connections_service
84+
return ConnectionsService(self._config, self._execution_context, self.folders)
10485

10586
@property
10687
def context_grounding(self) -> ContextGroundingService:
107-
if not self._folders_service:
108-
self._folders_service = FolderService(self._config, self._execution_context)
109-
if not self._buckets_service:
110-
self._buckets_service = BucketsService(
111-
self._config, self._execution_context
112-
)
11388
return ContextGroundingService(
11489
self._config,
11590
self._execution_context,
116-
self._folders_service,
117-
self._buckets_service,
91+
self.folders,
92+
self.buckets,
11893
)
11994

12095
@property
@@ -129,11 +104,9 @@ def queues(self) -> QueuesService:
129104
def jobs(self) -> JobsService:
130105
return JobsService(self._config, self._execution_context)
131106

132-
@property
107+
@cached_property
133108
def folders(self) -> FolderService:
134-
if not self._folders_service:
135-
self._folders_service = FolderService(self._config, self._execution_context)
136-
return self._folders_service
109+
return FolderService(self._config, self._execution_context)
137110

138111
@property
139112
def llm_openai(self) -> UiPathOpenAIService:

0 commit comments

Comments
 (0)