hatchet-sdk 1.15.3__py3-none-any.whl → 1.16.1__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.

Potentially problematic release.


This version of hatchet-sdk might be problematic. Click here for more details.

Files changed (36) hide show
  1. hatchet_sdk/__init__.py +4 -0
  2. hatchet_sdk/client.py +2 -0
  3. hatchet_sdk/clients/admin.py +3 -1
  4. hatchet_sdk/clients/dispatcher/action_listener.py +13 -13
  5. hatchet_sdk/clients/event_ts.py +1 -1
  6. hatchet_sdk/clients/listeners/pooled_listener.py +4 -4
  7. hatchet_sdk/clients/rest/__init__.py +8 -0
  8. hatchet_sdk/clients/rest/api/__init__.py +1 -0
  9. hatchet_sdk/clients/rest/api/cel_api.py +334 -0
  10. hatchet_sdk/clients/rest/api/task_api.py +12 -10
  11. hatchet_sdk/clients/rest/models/__init__.py +7 -0
  12. hatchet_sdk/clients/rest/models/v1_cancelled_tasks.py +87 -0
  13. hatchet_sdk/clients/rest/models/v1_cel_debug_error_response.py +93 -0
  14. hatchet_sdk/clients/rest/models/v1_cel_debug_request.py +108 -0
  15. hatchet_sdk/clients/rest/models/v1_cel_debug_response.py +100 -0
  16. hatchet_sdk/clients/rest/models/v1_cel_debug_response_status.py +37 -0
  17. hatchet_sdk/clients/rest/models/v1_cel_debug_success_response.py +102 -0
  18. hatchet_sdk/clients/rest/models/v1_replayed_tasks.py +87 -0
  19. hatchet_sdk/clients/rest/tenacity_utils.py +1 -1
  20. hatchet_sdk/clients/v1/api_client.py +3 -3
  21. hatchet_sdk/context/context.py +6 -6
  22. hatchet_sdk/features/cel.py +99 -0
  23. hatchet_sdk/features/runs.py +21 -1
  24. hatchet_sdk/hatchet.py +8 -0
  25. hatchet_sdk/opentelemetry/instrumentor.py +3 -3
  26. hatchet_sdk/runnables/contextvars.py +4 -0
  27. hatchet_sdk/runnables/task.py +133 -0
  28. hatchet_sdk/runnables/workflow.py +218 -11
  29. hatchet_sdk/worker/action_listener_process.py +11 -11
  30. hatchet_sdk/worker/runner/runner.py +39 -21
  31. hatchet_sdk/worker/runner/utils/capture_logs.py +30 -15
  32. hatchet_sdk/worker/worker.py +11 -14
  33. {hatchet_sdk-1.15.3.dist-info → hatchet_sdk-1.16.1.dist-info}/METADATA +1 -1
  34. {hatchet_sdk-1.15.3.dist-info → hatchet_sdk-1.16.1.dist-info}/RECORD +36 -27
  35. {hatchet_sdk-1.15.3.dist-info → hatchet_sdk-1.16.1.dist-info}/WHEEL +0 -0
  36. {hatchet_sdk-1.15.3.dist-info → hatchet_sdk-1.16.1.dist-info}/entry_points.txt +0 -0
@@ -132,8 +132,8 @@ class WorkerActionListenerProcess:
132
132
  )
133
133
 
134
134
  logger.debug(f"acquired action listener: {self.listener.worker_id}")
135
- except grpc.RpcError as rpc_error:
136
- logger.error(f"could not start action listener: {rpc_error}")
135
+ except grpc.RpcError:
136
+ logger.exception("could not start action listener")
137
137
  return
138
138
 
139
139
  # Start both loops as background tasks
@@ -168,7 +168,7 @@ class WorkerActionListenerProcess:
168
168
  count += 1
169
169
 
170
170
  if count > 0:
171
- logger.warning(f"{BLOCKED_THREAD_WARNING}: Waiting Steps {count}")
171
+ logger.warning(f"{BLOCKED_THREAD_WARNING} Waiting Steps {count}")
172
172
  await asyncio.sleep(1)
173
173
 
174
174
  async def send_event(self, event: ActionEvent, retry_attempt: int = 1) -> None:
@@ -188,7 +188,7 @@ class WorkerActionListenerProcess:
188
188
  )
189
189
  if diff > 0.1:
190
190
  logger.warning(
191
- f"{BLOCKED_THREAD_WARNING}: time to start: {diff}s"
191
+ f"{BLOCKED_THREAD_WARNING} time to start: {diff}s"
192
192
  )
193
193
  else:
194
194
  logger.debug(f"start time: {diff}")
@@ -225,9 +225,9 @@ class WorkerActionListenerProcess:
225
225
  )
226
226
  case _:
227
227
  logger.error("unknown action type for event send")
228
- except Exception as e:
229
- logger.error(
230
- f"could not send action event ({retry_attempt}/{ACTION_EVENT_RETRY_COUNT}): {e}"
228
+ except Exception:
229
+ logger.exception(
230
+ f"could not send action event ({retry_attempt}/{ACTION_EVENT_RETRY_COUNT})"
231
231
  )
232
232
  if retry_attempt <= ACTION_EVENT_RETRY_COUNT:
233
233
  await exp_backoff_sleep(retry_attempt, 1)
@@ -291,11 +291,11 @@ class WorkerActionListenerProcess:
291
291
  )
292
292
  try:
293
293
  self.action_queue.put(action)
294
- except Exception as e:
295
- logger.error(f"error putting action: {e}")
294
+ except Exception:
295
+ logger.exception("error putting action")
296
296
 
297
- except Exception as e:
298
- logger.error(f"error in action loop: {e}")
297
+ except Exception:
298
+ logger.exception("error in action loop")
299
299
  finally:
300
300
  logger.info("action loop closed")
301
301
  if not self.killing:
@@ -40,6 +40,7 @@ from hatchet_sdk.logger import logger
40
40
  from hatchet_sdk.runnables.action import Action, ActionKey, ActionType
41
41
  from hatchet_sdk.runnables.contextvars import (
42
42
  ctx_action_key,
43
+ ctx_additional_metadata,
43
44
  ctx_step_run_id,
44
45
  ctx_worker_id,
45
46
  ctx_workflow_run_id,
@@ -54,6 +55,8 @@ from hatchet_sdk.worker.action_listener_process import ActionEvent
54
55
  from hatchet_sdk.worker.runner.utils.capture_logs import (
55
56
  AsyncLogSender,
56
57
  ContextVarToCopy,
58
+ ContextVarToCopyDict,
59
+ ContextVarToCopyStr,
57
60
  copy_context_vars,
58
61
  )
59
62
 
@@ -295,6 +298,7 @@ class Runner:
295
298
  ctx_workflow_run_id.set(action.workflow_run_id)
296
299
  ctx_worker_id.set(action.worker_id)
297
300
  ctx_action_key.set(action.key)
301
+ ctx_additional_metadata.set(action.additional_metadata)
298
302
 
299
303
  try:
300
304
  if task.is_async_function:
@@ -305,20 +309,34 @@ class Runner:
305
309
  copy_context_vars,
306
310
  [
307
311
  ContextVarToCopy(
308
- name="ctx_step_run_id",
309
- value=action.step_run_id,
312
+ var=ContextVarToCopyStr(
313
+ name="ctx_step_run_id",
314
+ value=action.step_run_id,
315
+ )
316
+ ),
317
+ ContextVarToCopy(
318
+ var=ContextVarToCopyStr(
319
+ name="ctx_workflow_run_id",
320
+ value=action.workflow_run_id,
321
+ )
310
322
  ),
311
323
  ContextVarToCopy(
312
- name="ctx_workflow_run_id",
313
- value=action.workflow_run_id,
324
+ var=ContextVarToCopyStr(
325
+ name="ctx_worker_id",
326
+ value=action.worker_id,
327
+ )
314
328
  ),
315
329
  ContextVarToCopy(
316
- name="ctx_worker_id",
317
- value=action.worker_id,
330
+ var=ContextVarToCopyStr(
331
+ name="ctx_action_key",
332
+ value=action.key,
333
+ )
318
334
  ),
319
335
  ContextVarToCopy(
320
- name="ctx_action_key",
321
- value=action.key,
336
+ var=ContextVarToCopyDict(
337
+ name="ctx_additional_metadata",
338
+ value=action.additional_metadata,
339
+ )
322
340
  ),
323
341
  ],
324
342
  self.thread_action_func,
@@ -344,34 +362,34 @@ class Runner:
344
362
  "threads_daemon": sum(1 for t in self.thread_pool._threads if t.daemon),
345
363
  }
346
364
 
347
- logger.warning("Thread pool detailed status %s", thread_pool_details)
365
+ logger.warning("thread pool detailed status %s", thread_pool_details)
348
366
 
349
367
  async def _start_monitoring(self) -> None:
350
- logger.debug("Thread pool monitoring started")
368
+ logger.debug("thread pool monitoring started")
351
369
  try:
352
370
  while True:
353
371
  await self.log_thread_pool_status()
354
372
 
355
373
  for key in self.threads:
356
374
  if key not in self.tasks:
357
- logger.debug(f"Potential zombie thread found for key {key}")
375
+ logger.debug(f"potential zombie thread found for key {key}")
358
376
 
359
377
  for key, task in self.tasks.items():
360
378
  if task.done() and key in self.threads:
361
379
  logger.debug(
362
- f"Task is done but thread still exists for key {key}"
380
+ f"task is done but thread still exists for key {key}"
363
381
  )
364
382
 
365
383
  await asyncio.sleep(60)
366
384
  except asyncio.CancelledError:
367
- logger.warning("Thread pool monitoring task cancelled")
385
+ logger.warning("thread pool monitoring task cancelled")
368
386
  except Exception as e:
369
- logger.exception(f"Error in thread pool monitoring: {e}")
387
+ logger.exception(f"error in thread pool monitoring: {e}")
370
388
 
371
389
  def start_background_monitoring(self) -> None:
372
390
  loop = asyncio.get_event_loop()
373
391
  self.monitoring_task = loop.create_task(self._start_monitoring())
374
- logger.debug("Started thread pool monitoring background task")
392
+ logger.debug("started thread pool monitoring background task")
375
393
 
376
394
  def cleanup_run_id(self, key: ActionKey) -> None:
377
395
  if key in self.tasks:
@@ -503,7 +521,7 @@ class Runner:
503
521
 
504
522
  ident = cast(int, thread.ident)
505
523
 
506
- logger.info(f"Forcefully terminating thread {ident}")
524
+ logger.info(f"forcefully terminating thread {ident}")
507
525
 
508
526
  exc = ctypes.py_object(SystemExit)
509
527
  res = ctypes.pythonapi.PyThreadState_SetAsyncExc(ctypes.c_long(ident), exc)
@@ -516,13 +534,13 @@ class Runner:
516
534
  ctypes.pythonapi.PyThreadState_SetAsyncExc(thread.ident, 0)
517
535
  raise SystemError("PyThreadState_SetAsyncExc failed")
518
536
 
519
- logger.info(f"Successfully terminated thread {ident}")
537
+ logger.info(f"successfully terminated thread {ident}")
520
538
 
521
539
  # Immediately add a new thread to the thread pool, because we've actually killed a worker
522
540
  # in the ThreadPoolExecutor
523
541
  self.thread_pool.submit(lambda: None)
524
542
  except Exception as e:
525
- logger.exception(f"Failed to terminate thread: {e}")
543
+ logger.exception(f"failed to terminate thread: {e}")
526
544
 
527
545
  ## IMPORTANT: Keep this method's signature in sync with the wrapper in the OTel instrumentor
528
546
  async def handle_cancel_action(self, action: Action) -> None:
@@ -546,7 +564,7 @@ class Runner:
546
564
  await asyncio.sleep(1)
547
565
 
548
566
  logger.warning(
549
- f"Thread {self.threads[key].ident} with key {key} is still running after cancellation. This could cause the thread pool to get blocked and prevent new tasks from running."
567
+ f"thread {self.threads[key].ident} with key {key} is still running after cancellation. This could cause the thread pool to get blocked and prevent new tasks from running."
550
568
  )
551
569
  finally:
552
570
  self.cleanup_run_id(key)
@@ -568,8 +586,8 @@ class Runner:
568
586
 
569
587
  try:
570
588
  serialized_output = json.dumps(output, default=str)
571
- except Exception as e:
572
- logger.error(f"Could not serialize output: {e}")
589
+ except Exception:
590
+ logger.exception("could not serialize output")
573
591
  serialized_output = str(output)
574
592
 
575
593
  if "\\u0000" in serialized_output:
@@ -5,29 +5,42 @@ from collections.abc import Awaitable, Callable
5
5
  from io import StringIO
6
6
  from typing import Literal, ParamSpec, TypeVar
7
7
 
8
- from pydantic import BaseModel
8
+ from pydantic import BaseModel, Field
9
9
 
10
10
  from hatchet_sdk.clients.events import EventClient
11
11
  from hatchet_sdk.logger import logger
12
12
  from hatchet_sdk.runnables.contextvars import (
13
13
  ctx_action_key,
14
+ ctx_additional_metadata,
14
15
  ctx_step_run_id,
15
16
  ctx_worker_id,
16
17
  ctx_workflow_run_id,
17
18
  )
18
- from hatchet_sdk.utils.typing import STOP_LOOP, STOP_LOOP_TYPE
19
+ from hatchet_sdk.utils.typing import STOP_LOOP, STOP_LOOP_TYPE, JSONSerializableMapping
19
20
 
20
21
  T = TypeVar("T")
21
22
  P = ParamSpec("P")
22
23
 
23
24
 
24
- class ContextVarToCopy(BaseModel):
25
+ class ContextVarToCopyStr(BaseModel):
25
26
  name: Literal[
26
- "ctx_workflow_run_id", "ctx_step_run_id", "ctx_action_key", "ctx_worker_id"
27
+ "ctx_workflow_run_id",
28
+ "ctx_step_run_id",
29
+ "ctx_action_key",
30
+ "ctx_worker_id",
27
31
  ]
28
32
  value: str | None
29
33
 
30
34
 
35
+ class ContextVarToCopyDict(BaseModel):
36
+ name: Literal["ctx_additional_metadata"]
37
+ value: JSONSerializableMapping | None
38
+
39
+
40
+ class ContextVarToCopy(BaseModel):
41
+ var: ContextVarToCopyStr | ContextVarToCopyDict = Field(discriminator="name")
42
+
43
+
31
44
  def copy_context_vars(
32
45
  ctx_vars: list[ContextVarToCopy],
33
46
  func: Callable[P, T],
@@ -35,16 +48,18 @@ def copy_context_vars(
35
48
  **kwargs: P.kwargs,
36
49
  ) -> T:
37
50
  for var in ctx_vars:
38
- if var.name == "ctx_workflow_run_id":
39
- ctx_workflow_run_id.set(var.value)
40
- elif var.name == "ctx_step_run_id":
41
- ctx_step_run_id.set(var.value)
42
- elif var.name == "ctx_action_key":
43
- ctx_action_key.set(var.value)
44
- elif var.name == "ctx_worker_id":
45
- ctx_worker_id.set(var.value)
51
+ if var.var.name == "ctx_workflow_run_id":
52
+ ctx_workflow_run_id.set(var.var.value)
53
+ elif var.var.name == "ctx_step_run_id":
54
+ ctx_step_run_id.set(var.var.value)
55
+ elif var.var.name == "ctx_action_key":
56
+ ctx_action_key.set(var.var.value)
57
+ elif var.var.name == "ctx_worker_id":
58
+ ctx_worker_id.set(var.var.value)
59
+ elif var.var.name == "ctx_additional_metadata":
60
+ ctx_additional_metadata.set(var.var.value or {})
46
61
  else:
47
- raise ValueError(f"Unknown context variable name: {var.name}")
62
+ raise ValueError(f"Unknown context variable name: {var.var.name}")
48
63
 
49
64
  return func(*args, **kwargs)
50
65
 
@@ -73,13 +88,13 @@ class AsyncLogSender:
73
88
  step_run_id=record.step_run_id,
74
89
  )
75
90
  except Exception:
76
- logger.exception("Failed to send log to Hatchet")
91
+ logger.exception("failed to send log to Hatchet")
77
92
 
78
93
  def publish(self, record: LogRecord | STOP_LOOP_TYPE) -> None:
79
94
  try:
80
95
  self.q.put_nowait(record)
81
96
  except asyncio.QueueFull:
82
- logger.warning("Log queue is full, dropping log message")
97
+ logger.warning("log queue is full, dropping log message")
83
98
 
84
99
 
85
100
  class CustomLogHandler(logging.StreamHandler): # type: ignore[type-arg]
@@ -143,9 +143,8 @@ class Worker:
143
143
  def register_workflow_from_opts(self, opts: CreateWorkflowVersionRequest) -> None:
144
144
  try:
145
145
  self.client.admin.put_workflow(opts)
146
- except Exception as e:
147
- logger.error(f"failed to register workflow: {opts.name}")
148
- logger.error(e)
146
+ except Exception:
147
+ logger.exception(f"failed to register workflow: {opts.name}")
149
148
  sys.exit(1)
150
149
 
151
150
  def register_workflow(self, workflow: BaseWorkflow[Any]) -> None:
@@ -156,9 +155,8 @@ class Worker:
156
155
 
157
156
  try:
158
157
  self.client.admin.put_workflow(workflow.to_proto())
159
- except Exception as e:
160
- logger.error(f"failed to register workflow: {workflow.name}")
161
- logger.error(e)
158
+ except Exception:
159
+ logger.exception(f"failed to register workflow: {workflow.name}")
162
160
  sys.exit(1)
163
161
 
164
162
  for step in workflow.tasks:
@@ -189,7 +187,7 @@ class Worker:
189
187
  except RuntimeError:
190
188
  pass
191
189
 
192
- logger.debug("Creating new event loop")
190
+ logger.debug("creating new event loop")
193
191
  self.loop = asyncio.new_event_loop()
194
192
  asyncio.set_event_loop(self.loop)
195
193
 
@@ -226,9 +224,8 @@ class Worker:
226
224
  try:
227
225
  await runner.setup()
228
226
  await web.TCPSite(runner, "0.0.0.0", port).start()
229
- except Exception as e:
230
- logger.error("failed to start healthcheck server")
231
- logger.error(str(e))
227
+ except Exception:
228
+ logger.exception("failed to start healthcheck server")
232
229
  return
233
230
 
234
231
  logger.info(f"healthcheck server running on port {port}")
@@ -371,8 +368,8 @@ class Worker:
371
368
  logger.debug(f"action listener starting on PID: {process.pid}")
372
369
 
373
370
  return process
374
- except Exception as e:
375
- logger.error(f"failed to start action listener: {e}")
371
+ except Exception:
372
+ logger.exception("failed to start action listener")
376
373
  sys.exit(1)
377
374
 
378
375
  async def _check_listener_health(self) -> None:
@@ -404,8 +401,8 @@ class Worker:
404
401
 
405
402
  self._status = WorkerStatus.HEALTHY
406
403
  await asyncio.sleep(1)
407
- except Exception as e:
408
- logger.error(f"error checking listener health: {e}")
404
+ except Exception:
405
+ logger.exception("error checking listener health")
409
406
 
410
407
  def _setup_signal_handlers(self) -> None:
411
408
  signal.signal(signal.SIGTERM, self._handle_exit_signal)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hatchet-sdk
3
- Version: 1.15.3
3
+ Version: 1.16.1
4
4
  Summary:
5
5
  License: MIT
6
6
  Author: Alexander Belanger
@@ -1,17 +1,18 @@
1
- hatchet_sdk/__init__.py,sha256=LdT8xJ7-95gwksRZuCzuKDM5bfLx8uW8gXGPL7VMqwc,10743
2
- hatchet_sdk/client.py,sha256=OXb2hOJ5p7pY5QMlM4cydb4aGyf6bDdbyWQjPMVCe64,2413
3
- hatchet_sdk/clients/admin.py,sha256=t8GXhjMiFp9iL0ofISNxSOKlfwaOTX2iQbZfz1G0pHU,16936
4
- hatchet_sdk/clients/dispatcher/action_listener.py,sha256=tFknXH9iSP0OFYYVcKeDZVrcDNIz00ZQVTxSbHpbKhI,13863
1
+ hatchet_sdk/__init__.py,sha256=r51t5nLruYORKSpxdMJ5jbub6sWVANyWM-VOw2QQKuw,10887
2
+ hatchet_sdk/client.py,sha256=s0-0WXGTyLkD-JOJl68bsaInDKOzDHSM5NCB0ic46lw,2502
3
+ hatchet_sdk/clients/admin.py,sha256=Blx1OYhPGcdbUVCNq7n5jygjTy--8l_RYpjV-a8DRjw,17058
4
+ hatchet_sdk/clients/dispatcher/action_listener.py,sha256=FeIYd8HZoYX_ELdeu--Nc6kTn9OfjL7Tr7WCs2EgJbc,13822
5
5
  hatchet_sdk/clients/dispatcher/dispatcher.py,sha256=1d4_4DYdFskqXjmHPHgZ-jBx1l9fQ1e0SMIweDL0VsE,8559
6
- hatchet_sdk/clients/event_ts.py,sha256=d9NTfjWVk84QMB5XTWkDZ2UfsIIn5ytAEn6S5fhpxss,2121
6
+ hatchet_sdk/clients/event_ts.py,sha256=JVfxZ-OJ-xv7xJgPWAjv-g7ChwnkVwMDbYNVcAF-XnE,2121
7
7
  hatchet_sdk/clients/events.py,sha256=wE36_Wyb8BLywpuc8epRj7ZZDN9UCmztn6g3wdgRivM,8849
8
8
  hatchet_sdk/clients/listeners/durable_event_listener.py,sha256=55WbVQpm65ccVSQtqz-Z_4EI8Gig-7MzH5F9Arh-rb0,4166
9
- hatchet_sdk/clients/listeners/pooled_listener.py,sha256=m0OwZhMVRyGCmw7XYvh_5R5Mpeg-TrJyPnQ3-d5NnJg,8514
9
+ hatchet_sdk/clients/listeners/pooled_listener.py,sha256=mBx9XTQZuFStyvuM93QPyhjnF7qF2XzWfuUR7bniHt8,8512
10
10
  hatchet_sdk/clients/listeners/run_event_listener.py,sha256=CNXG5a_MUoYnNVmfrXkW1w3v6UnImyeUFXHQ96n4ULM,10222
11
11
  hatchet_sdk/clients/listeners/workflow_listener.py,sha256=u7qkr_uqnk3Pq_dARM3ah0nd1KtL3D_UQwbZ5IdcnjE,2283
12
- hatchet_sdk/clients/rest/__init__.py,sha256=0bOD0KcR1mN8ZxEQuVBLJacaFehKKWGMinLeiVCi8dU,17466
13
- hatchet_sdk/clients/rest/api/__init__.py,sha256=Hha-Kw2hqeGf7j96pNzl3YlkHaD7HnEWGZCqvr18Vbk,1262
12
+ hatchet_sdk/clients/rest/__init__.py,sha256=RR3iMTIoyUgvsAIkRC-o32imQ2n3SRtLNhpfqhR4y2g,17955
13
+ hatchet_sdk/clients/rest/api/__init__.py,sha256=1JKNOblnPtbR4ChK4SRkbspCYkr6EW2jlfIIin_A5_8,1318
14
14
  hatchet_sdk/clients/rest/api/api_token_api.py,sha256=xzqMH_-wajBA0qLLs5Ta7tYg4FOLq0NjATyhZ1SV9jo,33433
15
+ hatchet_sdk/clients/rest/api/cel_api.py,sha256=QNVdL2L2-dnjxFerHHUDvugBEIhqBp2_-WJ614lJVMc,13098
15
16
  hatchet_sdk/clients/rest/api/default_api.py,sha256=Y0jEhatVpdIX_W2MCt_n40K6iKvVegDB70qxexkeZDI,88677
16
17
  hatchet_sdk/clients/rest/api/event_api.py,sha256=R7OsLTAodCpHX8ynX0zxJqr5gB19nlmlohK-jeZPDu8,132097
17
18
  hatchet_sdk/clients/rest/api/filter_api.py,sha256=JernNvf6tqv35p85bkgxIxpIkuY8y668XyZONoEQ8oU,62955
@@ -23,7 +24,7 @@ hatchet_sdk/clients/rest/api/rate_limits_api.py,sha256=e3CIX35R8SkV8LrgLMPCAy6Kz
23
24
  hatchet_sdk/clients/rest/api/slack_api.py,sha256=0xIUw3_1_3hSTn2yw7fLRO5yb38nYLu5aLM7IE2pnwk,21894
24
25
  hatchet_sdk/clients/rest/api/sns_api.py,sha256=1LfhnZEA450uHwtZCoM_wycOeH4UGwfNP1pw4RWSe08,33641
25
26
  hatchet_sdk/clients/rest/api/step_run_api.py,sha256=rqP4UIJSkw8DwbDnlEgupBDWUL0jlVH_Rm7bNGMUoG8,84505
26
- hatchet_sdk/clients/rest/api/task_api.py,sha256=erYaoDA2iJk52PPntfT0Y63hsBuk4eaqV5gaRTQ008w,89767
27
+ hatchet_sdk/clients/rest/api/task_api.py,sha256=maJxIkIh0YYVzFMKXpx5xBDkavWJr-rWwor5t4GbSwc,90052
27
28
  hatchet_sdk/clients/rest/api/tenant_api.py,sha256=iz67ow7wp9qgo1IRPI_IVTkoMh_ytx81wz4MPgEWWSg,198472
28
29
  hatchet_sdk/clients/rest/api/user_api.py,sha256=NYuEKLeBjXO4q8gyYq1thtbuRm9m3g0R6-q6LIfv83U,115780
29
30
  hatchet_sdk/clients/rest/api/worker_api.py,sha256=56jRXsyK7SDENly2b019EO80d8xOHU4bZnmOmjKY1iQ,33049
@@ -34,7 +35,7 @@ hatchet_sdk/clients/rest/api_client.py,sha256=25vNKzpKVhvrGrU8T2YBLbz0Y7K0pKZwiL
34
35
  hatchet_sdk/clients/rest/api_response.py,sha256=jPXKGanAyue6QAb6r56f-_d7KXGpFERBT-AYq9XdktQ,655
35
36
  hatchet_sdk/clients/rest/configuration.py,sha256=ijGxGorVe8OEikJruwJ0hPk1Rc0OAKOqeUrfcoEiYH8,19333
36
37
  hatchet_sdk/clients/rest/exceptions.py,sha256=5PTEjyGxLeGP8U_qqc79QzR-sN7SOhzBwknSUC-BU4c,6365
37
- hatchet_sdk/clients/rest/models/__init__.py,sha256=rKvfyD9B8tVISjMUxX-P2_wYOXGDdBdid5Af3-4x7h0,15824
38
+ hatchet_sdk/clients/rest/models/__init__.py,sha256=iK7JES6O7wEZ6Ffyfzs3vhZbf1hxV0T5K3zWa4yGcUo,16257
38
39
  hatchet_sdk/clients/rest/models/accept_invite_request.py,sha256=_otOis3SuTHl0F_hhYD-rYqgyxCXRn83CK_eU9oMdn4,2427
39
40
  hatchet_sdk/clients/rest/models/api_error.py,sha256=KodK1_cc28CgYGvX1WhIhTN0pAAkgq8PJXReIrMnqBA,3068
40
41
  hatchet_sdk/clients/rest/models/api_errors.py,sha256=RNmnWn1GWlG9xTvpvrTmKq-Pr70x9mcJ4-dNFBemxa8,2917
@@ -152,6 +153,12 @@ hatchet_sdk/clients/rest/models/user_register_request.py,sha256=z_ubBprjoLQRI8yg
152
153
  hatchet_sdk/clients/rest/models/user_tenant_memberships_list.py,sha256=DMT4MUFZj-OQF4UIi5_Bd6G3bs89UlqdNhIqVyawSOY,3523
153
154
  hatchet_sdk/clients/rest/models/user_tenant_public.py,sha256=-P2vPanI-paZmj_0nm7sNB04eK8Hi-2NCYW_bSwt-Ms,2554
154
155
  hatchet_sdk/clients/rest/models/v1_cancel_task_request.py,sha256=U0QKLQ7E35sgGSZyi-n3C9omZneqHVBMYymfD5a189g,3178
156
+ hatchet_sdk/clients/rest/models/v1_cancelled_tasks.py,sha256=ERChRByayEnmq0C-Wd7V1jM5RlkpZrvNPSeMykLLI-Y,2534
157
+ hatchet_sdk/clients/rest/models/v1_cel_debug_error_response.py,sha256=M_GkZJ5dQcBcuL0bGiS3TCaQzd-9NDlZYFBcUp8X8ow,2787
158
+ hatchet_sdk/clients/rest/models/v1_cel_debug_request.py,sha256=-ohYRVjF6ex5lRa0T7ML5SeNaMySoO7At19GoA_degc,3316
159
+ hatchet_sdk/clients/rest/models/v1_cel_debug_response.py,sha256=0D386MPLfnDswllw3F_nAG5dNnKQpN-4Y8QL9NhQ6Co,2940
160
+ hatchet_sdk/clients/rest/models/v1_cel_debug_response_status.py,sha256=gbWwiqojKKmZ9dNnW7YGVYG6yWi06WnuD9lYZ7mgQjs,706
161
+ hatchet_sdk/clients/rest/models/v1_cel_debug_success_response.py,sha256=gSctXHLzayAGKJNeHizSmzLYGeSxpfGuxMX_LT-6gn0,2860
155
162
  hatchet_sdk/clients/rest/models/v1_create_filter_request.py,sha256=2OCv0o9bhgIF20L-KOXTvePbVI_G6eXTunGTNHMYEwg,3117
156
163
  hatchet_sdk/clients/rest/models/v1_dag_children.py,sha256=Rk_mKqboHebga12JhnQbN3yhrLXKm_hqtCbTfAdJliU,3135
157
164
  hatchet_sdk/clients/rest/models/v1_event.py,sha256=OvHE2pSuJZEtIRvV7y1kIL1M63_qz6UGsPCjT5Qz9Fk,6408
@@ -164,6 +171,7 @@ hatchet_sdk/clients/rest/models/v1_log_line.py,sha256=ht7HPw9vLgrcIQ_5XSEDkLQuGW
164
171
  hatchet_sdk/clients/rest/models/v1_log_line_level.py,sha256=lgBe481y--PMLHHaHR9AuVZtC092SxkjY8ca0yApM00,700
165
172
  hatchet_sdk/clients/rest/models/v1_log_line_list.py,sha256=uOuTk2aEELcdRM_v3liM1Ynd7RzzF-uJuxt3M6ZrltQ,3464
166
173
  hatchet_sdk/clients/rest/models/v1_replay_task_request.py,sha256=5LxC5pQfeIztSUwgaZYqNiMcbjQshu9R-QIi0YUVXMI,3178
174
+ hatchet_sdk/clients/rest/models/v1_replayed_tasks.py,sha256=SXEyyc4RmOQPzIiK0Ka4VL9w3H_eS6gkPrnXXcMBaXc,2529
167
175
  hatchet_sdk/clients/rest/models/v1_task.py,sha256=jsyTBBuD7nPSziD9Mu1Zp18k33tRlsa43OFF7fMIJaY,5829
168
176
  hatchet_sdk/clients/rest/models/v1_task_event.py,sha256=fVC4OMjaULWW5eXWGqe4vwa23Sm5CeBGI58CZNVAP7k,3960
169
177
  hatchet_sdk/clients/rest/models/v1_task_event_list.py,sha256=1B2Poi9MEBzE4mgD5CXDoEJTXfy9AMJBhbU05eL_6A0,3480
@@ -228,13 +236,13 @@ hatchet_sdk/clients/rest/models/workflow_version_definition.py,sha256=e18BUh1XO0
228
236
  hatchet_sdk/clients/rest/models/workflow_version_meta.py,sha256=TW4R7bAuYAg_LraN-8psdZqp2E8wH9hYyL5Sji86aLk,3791
229
237
  hatchet_sdk/clients/rest/models/workflow_workers_count.py,sha256=qhzqfvjjIDyARkiiLGluMIqEmqO-diHTsjlu0Doi0yg,2875
230
238
  hatchet_sdk/clients/rest/rest.py,sha256=zZHTzgl-NBdcK6XhG23m_s9RKRONGPPItzGe407s7GA,9262
231
- hatchet_sdk/clients/rest/tenacity_utils.py,sha256=SQuy4x9scgBpqygRrGdjP7dJz4u4VVAEbjnieid4KcU,1029
232
- hatchet_sdk/clients/v1/api_client.py,sha256=Gs7OX47YsZ4mpJlItEg-MSeHk6wWb3iCwPQu1cffGZk,1974
239
+ hatchet_sdk/clients/rest/tenacity_utils.py,sha256=i-j75qvPpU2zYqiOGN2x-2_Gjx6LXksPP4fvwGNuf8M,1029
240
+ hatchet_sdk/clients/v1/api_client.py,sha256=vUaQr7Xi71a2kFHkZy-pB3tCg3-t0ROlqbPUQA6skIA,2013
233
241
  hatchet_sdk/conditions.py,sha256=CnhpkXgVXM3wc0kAX8KZQA6tp8NFAbdzAN2xFbw7Hb0,4522
234
242
  hatchet_sdk/config.py,sha256=DKOSCyOhFMx9d3Rvu5z9aImbOgZgwdNSg3XVzyVHn3g,5185
235
243
  hatchet_sdk/connection.py,sha256=oRxLs_lBRgHfE4jGLZJimr25ymlEJnK1ZXlh-CasjPo,2696
236
244
  hatchet_sdk/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
237
- hatchet_sdk/context/context.py,sha256=I5XfQ_m-Mn33G2no2x5ahd9S-jxMMsEnynhh5Q4JJx8,14411
245
+ hatchet_sdk/context/context.py,sha256=6Qqxt5XljoEz2Jo4scbBeTDaWMNNIKnIcPP-swtxe44,14390
238
246
  hatchet_sdk/context/worker_context.py,sha256=3lGkOYmDixeuSmqxXbsYav2gErcjP8cDa2m0t0iomjI,884
239
247
  hatchet_sdk/contracts/dispatcher_pb2.py,sha256=W9aGh-wctZhLjUXUdeQTxH4qArsw6D0kIAWM9SVCX5o,14786
240
248
  hatchet_sdk/contracts/dispatcher_pb2.pyi,sha256=9Qoz88G-btdlTuxvk4knqfnYdcIXy3oR9DTh6MwIdP4,18923
@@ -255,28 +263,29 @@ hatchet_sdk/contracts/workflows_pb2.py,sha256=daEsUwZnlDQ5GGLJ8WHgLdI1Tgr3lBXxGV
255
263
  hatchet_sdk/contracts/workflows_pb2.pyi,sha256=WJ3b45pWvoNmmWTWjBJt61IiAoVn61F62AG5OrRsnd8,15538
256
264
  hatchet_sdk/contracts/workflows_pb2_grpc.py,sha256=2V8E72DlJx5qlH2yiQpVCu5cQbKUba5X7T1yNrQDF_s,10819
257
265
  hatchet_sdk/exceptions.py,sha256=DG-mS0wZiB-4Pnyr-BgY-LRrAEAdgP2nqQlIheU99t4,2646
266
+ hatchet_sdk/features/cel.py,sha256=Uefvm2Du3SJCHiHsp12-URPxXJLe40uv0wK7guFucsE,4002
258
267
  hatchet_sdk/features/cron.py,sha256=k6Y-JJBPaf2Dtx-fwvNA2j7lTzHLBZpwVMA_u-p6Lvw,9723
259
268
  hatchet_sdk/features/filters.py,sha256=n6PPeRiqd5SOFlcx8V2strUaCGma9JPRAOLx44XpC0o,6443
260
269
  hatchet_sdk/features/logs.py,sha256=H_vQnOqiN5q_wQWVoOGAJp7eOPKFYZsLJ1Hb63LriRA,1190
261
270
  hatchet_sdk/features/metrics.py,sha256=do4kVX6cjDszHocc-IoS8BdT5ChptPc39oElbW6Cd8k,5109
262
271
  hatchet_sdk/features/rate_limits.py,sha256=eh55Z3w75cYUthqTyoWmNxj_6tN3rjebMKm3of-vxv0,2155
263
- hatchet_sdk/features/runs.py,sha256=8geS5l1CU3GCLudFORmCvXyjVVcgNKsNAPV9mLcI8sU,23004
272
+ hatchet_sdk/features/runs.py,sha256=u0KEcLOLSWusgyp8T4z30yR9UxSdz9CdyrGxM9SSr-g,23758
264
273
  hatchet_sdk/features/scheduled.py,sha256=t7YA9CoJrzBhH82ChTSFWaTF_dyoC9i1O_wf9ywsphc,8939
265
274
  hatchet_sdk/features/tenant.py,sha256=xkhh5mRKCWbunk_S1iBmGR-DYR-F4mjxk8jLyYUyzNE,886
266
275
  hatchet_sdk/features/workers.py,sha256=DVdno28RmtlfhMJUkaPcOMHNKXCPV0RFrXtLqV6zWyE,2600
267
276
  hatchet_sdk/features/workflows.py,sha256=WTt58imAFRrEEB3M5hEEIBwNtrzdWbITFpgtsIqJNSM,4770
268
- hatchet_sdk/hatchet.py,sha256=rOuE7YPqu4setE_zGbmgvb2WN-q8HNXTDFYcp9N0Wj8,25759
277
+ hatchet_sdk/hatchet.py,sha256=weSL5A_Ea61ryFtGBe2CST51z9aI3HCzW0dSSJ6G9wA,25984
269
278
  hatchet_sdk/labels.py,sha256=nATgxWE3lFxRTnfISEpoIRLGbMfAZsHF4lZTuG4Mfic,182
270
279
  hatchet_sdk/logger.py,sha256=5uOr52T4mImSQm1QvWT8HvZFK5WfPNh3Y1cBQZRFgUQ,333
271
280
  hatchet_sdk/metadata.py,sha256=XkRbhnghJJGCdVvF-uzyGBcNaTqpeQ3uiQvNNP1wyBc,107
272
- hatchet_sdk/opentelemetry/instrumentor.py,sha256=8h_G-h7U7ciNK4YCrWf8ZP2D63SlJCrlATk-9Oxreik,27028
281
+ hatchet_sdk/opentelemetry/instrumentor.py,sha256=7-OM_6Wu_EJaOVyYECNj7H50YqX6SkokQe1hGtU1rFY,27028
273
282
  hatchet_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
274
283
  hatchet_sdk/rate_limit.py,sha256=TwbCuggiZaWpYuo4mjVLlE-z1OfQ2mRBiVvCSaG3lv4,3919
275
284
  hatchet_sdk/runnables/action.py,sha256=zrVHpyzIQ9XZgWwY69b_6uhZd53An4trRoLd9b3os5E,4384
276
- hatchet_sdk/runnables/contextvars.py,sha256=T2LWiXhcSyQYJY_-pfqMjDNjf6PdtDwyXyCZ6zIyWK0,929
277
- hatchet_sdk/runnables/task.py,sha256=VEYabAl38U9L_igSDgZSzUL7-c-sX6YFRP0wsqGTadU,6714
285
+ hatchet_sdk/runnables/contextvars.py,sha256=jHrrewUlFPAT9f2u3VCsuSlDBtBoagEUtUzJOSmm4yk,1118
286
+ hatchet_sdk/runnables/task.py,sha256=-5AeToJqIbpgGeyrol5VJaFGND4l_UY8k9VIhrUBXaw,12796
278
287
  hatchet_sdk/runnables/types.py,sha256=QFayOJ_Oi8tOYI6Sjl9bwjftM96QZh9XIlfFnSNgEXI,4359
279
- hatchet_sdk/runnables/workflow.py,sha256=9Vq4T0goR4dG_bzarEog9ui-8mef9YmvPICk0CRHf3I,49673
288
+ hatchet_sdk/runnables/workflow.py,sha256=GWFEk4Lz-xeA9HPkphCtghQcm3VPp3SAzNfPBcRqjF0,57372
280
289
  hatchet_sdk/token.py,sha256=KjIiInwG5Kqd_FO4BSW1x_5Uc7PFbnzIVJqr50-ZldE,779
281
290
  hatchet_sdk/utils/aio.py,sha256=cu1rD_UZkShtfzi7iXMYwBBaCRdxJQTdUC0_mf8nU2E,499
282
291
  hatchet_sdk/utils/backoff.py,sha256=6B5Rb5nLKw_TqqgpJMYjIBV1PTTtbOMRZCveisVhg_I,353
@@ -508,13 +517,13 @@ hatchet_sdk/v0/worker/worker.py,sha256=QtkabDUSAnNExi2sTY5VLSAJak_X0DQNGjei8GtYS
508
517
  hatchet_sdk/v0/workflow.py,sha256=txhAZC0ohjhRrviIKn1yCR-ybqoQJ4jCrTc7vIkfO3g,9381
509
518
  hatchet_sdk/v0/workflow_run.py,sha256=jsEZprXshrSV7i_TtL5uoCL03D18zQ3NeJCq7mp97Dg,1752
510
519
  hatchet_sdk/worker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
511
- hatchet_sdk/worker/action_listener_process.py,sha256=Xzzn1dDFJrqnC9HBsh3fYI8lfpOD4Ecze47qmm_XUWE,12923
520
+ hatchet_sdk/worker/action_listener_process.py,sha256=CzXen-7tFG_rryvM2xWV2_KMUFC2-i_Ts643TB_Urd8,12878
512
521
  hatchet_sdk/worker/runner/run_loop_manager.py,sha256=GeILClNXaDbsjXCQb0bBdgeyAwZGem2JdaH0t6wz__I,4053
513
- hatchet_sdk/worker/runner/runner.py,sha256=Btz7wd0DQ-5aPEZLN3T5X5__8DjuxN6H4yQEVX0eZiI,21678
514
- hatchet_sdk/worker/runner/utils/capture_logs.py,sha256=nJb67Hq-RGiuj0J2eWO-6QxY6ERfl2N3lvVhbj3YDqE,3540
515
- hatchet_sdk/worker/worker.py,sha256=nDuRo_LishRuOCTnDonc7G7qeOoW93nRHGd-fQOE_bs,16541
522
+ hatchet_sdk/worker/runner/runner.py,sha256=L5J_dbwpz2P0rbDzpxW1udByQJHii28KEvzx-1LxB_8,22406
523
+ hatchet_sdk/worker/runner/utils/capture_logs.py,sha256=4n3iDhuxSMD18A8h6NlaxCMdIJ7Upy7CdqwOQOW08LU,4029
524
+ hatchet_sdk/worker/worker.py,sha256=9EiESMMcS7voa4cAnmnHMx4rC-pqaTmP74bcTbFPqfQ,16435
516
525
  hatchet_sdk/workflow_run.py,sha256=KcylcqRwKADtnzOTjoiVr1vdr7qTZFtDeD5aRS6A4Y8,2823
517
- hatchet_sdk-1.15.3.dist-info/METADATA,sha256=gQs7xIpTGRslfHUYDQXtMJ8LgOwFXlBzVZnheeAivoE,3636
518
- hatchet_sdk-1.15.3.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
519
- hatchet_sdk-1.15.3.dist-info/entry_points.txt,sha256=Un_76pcLse-ZGBlwebhQpnTPyQrripeHW8J7qmEpGOk,1400
520
- hatchet_sdk-1.15.3.dist-info/RECORD,,
526
+ hatchet_sdk-1.16.1.dist-info/METADATA,sha256=sySr06PPtycfL6WNMtLX93AgO9oPLarEeGaLDbisPzo,3636
527
+ hatchet_sdk-1.16.1.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
528
+ hatchet_sdk-1.16.1.dist-info/entry_points.txt,sha256=Un_76pcLse-ZGBlwebhQpnTPyQrripeHW8J7qmEpGOk,1400
529
+ hatchet_sdk-1.16.1.dist-info/RECORD,,