clerk-sdk 0.2.2__py3-none-any.whl → 0.2.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,8 +24,12 @@ global_ws: Union[ClientConnection, None] = None
24
24
  clerk_client = RPAClerk()
25
25
  wss_uri = "wss://agent-manager.f-one.group/action"
26
26
 
27
- CLIENT_TIMEOUT_MINS = 1
28
- MAX_CLIENT_AVAILABILITY_RETRIES = 60
27
+ REMOTE_DEVICE_ALLOCATION_TIMEOUT = int(
28
+ os.getenv("REMOTE_DEVICE_ALLOCATION_TIMEOUT", 60)
29
+ )
30
+ REMOTE_DEVICE_ALLOCATION_MAX_TRIES = int(
31
+ os.getenv("REMOTE_DEVICE_ALLOCATION_MAX_TRIES", 60)
32
+ )
29
33
 
30
34
 
31
35
  def _allocate_remote_device(
@@ -46,14 +50,14 @@ def _allocate_remote_device(
46
50
 
47
51
  except NoClientsAvailable:
48
52
  logger.warning(
49
- f"No clients are available for {group_name} group. Initiating a {CLIENT_TIMEOUT_MINS} minute wait. Retry count: {retries}"
53
+ f"No clients are available for {group_name} group. Initiating a {REMOTE_DEVICE_ALLOCATION_TIMEOUT} seconds wait. Retry count: {retries}"
50
54
  )
51
- retries += 1
52
- if retries == MAX_CLIENT_AVAILABILITY_RETRIES:
55
+ if retries >= REMOTE_DEVICE_ALLOCATION_MAX_TRIES:
53
56
  raise ClientAvailabilityTimeout(
54
- f"No clients available for {group_name} group after {CLIENT_TIMEOUT_MINS*MAX_CLIENT_AVAILABILITY_RETRIES} minutes"
57
+ f"No clients available for {group_name} group after {REMOTE_DEVICE_ALLOCATION_TIMEOUT * REMOTE_DEVICE_ALLOCATION_MAX_TRIES} seconds"
55
58
  )
56
- time.sleep(CLIENT_TIMEOUT_MINS * 60)
59
+ time.sleep(REMOTE_DEVICE_ALLOCATION_TIMEOUT)
60
+ retries += 1
57
61
 
58
62
 
59
63
  def _deallocate_target(
@@ -65,7 +69,9 @@ def _deallocate_target(
65
69
  os.environ.pop("REMOTE_DEVICE_NAME", None)
66
70
 
67
71
 
68
- def gui_automation():
72
+ def gui_automation(
73
+ reserve_client: bool = False,
74
+ ):
69
75
  """
70
76
  Decorator that:
71
77
  • Allocates a remote device,
@@ -88,6 +94,7 @@ def gui_automation():
88
94
  @functools.wraps(func)
89
95
  def wrapper(payload: ClerkCodePayload, *args, **kwargs):
90
96
  global global_ws
97
+ force_deallocate = False
91
98
  os.environ["PROC_ID"] = payload.run_id
92
99
 
93
100
  remote_device = _allocate_remote_device(
@@ -116,9 +123,11 @@ def gui_automation():
116
123
 
117
124
  except Exception as e:
118
125
  os.environ.pop("PROC_ID", None)
126
+ force_deallocate = True
119
127
  raise
120
128
  finally:
121
- _deallocate_target(clerk_client, remote_device, payload.run_id)
129
+ if not reserve_client or force_deallocate:
130
+ _deallocate_target(clerk_client, remote_device, payload.run_id)
122
131
 
123
132
  if global_ws and global_ws.state is State.OPEN:
124
133
  close_task = event_loop.create_task(close_ws_connection(global_ws))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clerk-sdk
3
- Version: 0.2.2
3
+ Version: 0.2.5
4
4
  Summary: Library for interacting with Clerk
5
5
  Home-page: https://github.com/F-ONE-Group/clerk_pypi
6
6
  Author: F-ONE Group
@@ -14,7 +14,7 @@ clerk/gui_automation/client_actor/client_actor.py,sha256=Me3NHc0nMA7Y5CUcnE0ZHT1
14
14
  clerk/gui_automation/client_actor/exception.py,sha256=zdnImHZ88yf52Xq3aMHivEU3aJg-r2c-r8x8XZnI3ic,407
15
15
  clerk/gui_automation/client_actor/model.py,sha256=wVpFCi1w2kh4kAV8oNx489vf_SLUQnqhc02rFD5NIJA,6335
16
16
  clerk/gui_automation/decorators/__init__.py,sha256=OCgXStEumscgT-RyVy5OKS7ml1w9y-lEnjCVnxuRnQs,43
17
- clerk/gui_automation/decorators/gui_automation.py,sha256=C7s1HekmLiXvw3I7O3oCrrTAAlxb_w3PA7YAILGhSLc,4711
17
+ clerk/gui_automation/decorators/gui_automation.py,sha256=0p83i6bu6f2syxfOy96oRnNMVc2ZBKYfNJIE1sE1xYA,5064
18
18
  clerk/gui_automation/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  clerk/gui_automation/exceptions/agent_manager.py,sha256=KFWFWQ7X_8Z9XG__SMzb1jKI3yNoVTPJAXzW5O-fSXc,101
20
20
  clerk/gui_automation/exceptions/websocket.py,sha256=-MdwSwlf1hbnu55aDgk3L1znkTZ6xJS6po5VpEGD9ck,117
@@ -42,8 +42,8 @@ clerk/models/response_model.py,sha256=R62daUN1YVOwgnrh_epvFRsQcOwT7R4u97l73egvm-
42
42
  clerk/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
43
  clerk/utils/logger.py,sha256=_jYOSEc1WCsY9DvU8cIWUPmz41QNjpHTEZ7WrUnmFPA,3650
44
44
  clerk/utils/save_artifact.py,sha256=Lwl3l3QqKnSFLFpfEEa-dJ-dV9OxvCU3ADkuYZ18U-Q,1117
45
- clerk_sdk-0.2.2.dist-info/licenses/LICENSE,sha256=GTVQl3vH6ht70wJXKC0yMT8CmXKHxv_YyO_utAgm7EA,1065
46
- clerk_sdk-0.2.2.dist-info/METADATA,sha256=8VZysSvY_q_eoLR6DQ7MetvLforSTw82vDUbGTAXfJI,3508
47
- clerk_sdk-0.2.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
48
- clerk_sdk-0.2.2.dist-info/top_level.txt,sha256=99eQiU6d05_-f41tmSFanfI_SIJeAdh7u9m3LNSfcv4,6
49
- clerk_sdk-0.2.2.dist-info/RECORD,,
45
+ clerk_sdk-0.2.5.dist-info/licenses/LICENSE,sha256=GTVQl3vH6ht70wJXKC0yMT8CmXKHxv_YyO_utAgm7EA,1065
46
+ clerk_sdk-0.2.5.dist-info/METADATA,sha256=5X609M2WJHnk6rKf0diLFtkS42gDhJ4zi5ZCYMPsxXY,3508
47
+ clerk_sdk-0.2.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
48
+ clerk_sdk-0.2.5.dist-info/top_level.txt,sha256=99eQiU6d05_-f41tmSFanfI_SIJeAdh7u9m3LNSfcv4,6
49
+ clerk_sdk-0.2.5.dist-info/RECORD,,