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.
- hatchet_sdk/__init__.py +4 -0
- hatchet_sdk/client.py +2 -0
- hatchet_sdk/clients/admin.py +3 -1
- hatchet_sdk/clients/dispatcher/action_listener.py +13 -13
- hatchet_sdk/clients/event_ts.py +1 -1
- hatchet_sdk/clients/listeners/pooled_listener.py +4 -4
- hatchet_sdk/clients/rest/__init__.py +8 -0
- hatchet_sdk/clients/rest/api/__init__.py +1 -0
- hatchet_sdk/clients/rest/api/cel_api.py +334 -0
- hatchet_sdk/clients/rest/api/task_api.py +12 -10
- hatchet_sdk/clients/rest/models/__init__.py +7 -0
- hatchet_sdk/clients/rest/models/v1_cancelled_tasks.py +87 -0
- hatchet_sdk/clients/rest/models/v1_cel_debug_error_response.py +93 -0
- hatchet_sdk/clients/rest/models/v1_cel_debug_request.py +108 -0
- hatchet_sdk/clients/rest/models/v1_cel_debug_response.py +100 -0
- hatchet_sdk/clients/rest/models/v1_cel_debug_response_status.py +37 -0
- hatchet_sdk/clients/rest/models/v1_cel_debug_success_response.py +102 -0
- hatchet_sdk/clients/rest/models/v1_replayed_tasks.py +87 -0
- hatchet_sdk/clients/rest/tenacity_utils.py +1 -1
- hatchet_sdk/clients/v1/api_client.py +3 -3
- hatchet_sdk/context/context.py +6 -6
- hatchet_sdk/features/cel.py +99 -0
- hatchet_sdk/features/runs.py +21 -1
- hatchet_sdk/hatchet.py +8 -0
- hatchet_sdk/opentelemetry/instrumentor.py +3 -3
- hatchet_sdk/runnables/contextvars.py +4 -0
- hatchet_sdk/runnables/task.py +133 -0
- hatchet_sdk/runnables/workflow.py +218 -11
- hatchet_sdk/worker/action_listener_process.py +11 -11
- hatchet_sdk/worker/runner/runner.py +39 -21
- hatchet_sdk/worker/runner/utils/capture_logs.py +30 -15
- hatchet_sdk/worker/worker.py +11 -14
- {hatchet_sdk-1.15.3.dist-info → hatchet_sdk-1.16.1.dist-info}/METADATA +1 -1
- {hatchet_sdk-1.15.3.dist-info → hatchet_sdk-1.16.1.dist-info}/RECORD +36 -27
- {hatchet_sdk-1.15.3.dist-info → hatchet_sdk-1.16.1.dist-info}/WHEEL +0 -0
- {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
|
|
136
|
-
logger.
|
|
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}
|
|
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}
|
|
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
|
|
229
|
-
logger.
|
|
230
|
-
f"could not send action event ({retry_attempt}/{ACTION_EVENT_RETRY_COUNT})
|
|
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
|
|
295
|
-
logger.
|
|
294
|
+
except Exception:
|
|
295
|
+
logger.exception("error putting action")
|
|
296
296
|
|
|
297
|
-
except Exception
|
|
298
|
-
logger.
|
|
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
|
-
|
|
309
|
-
|
|
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
|
-
|
|
313
|
-
|
|
324
|
+
var=ContextVarToCopyStr(
|
|
325
|
+
name="ctx_worker_id",
|
|
326
|
+
value=action.worker_id,
|
|
327
|
+
)
|
|
314
328
|
),
|
|
315
329
|
ContextVarToCopy(
|
|
316
|
-
|
|
317
|
-
|
|
330
|
+
var=ContextVarToCopyStr(
|
|
331
|
+
name="ctx_action_key",
|
|
332
|
+
value=action.key,
|
|
333
|
+
)
|
|
318
334
|
),
|
|
319
335
|
ContextVarToCopy(
|
|
320
|
-
|
|
321
|
-
|
|
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("
|
|
365
|
+
logger.warning("thread pool detailed status %s", thread_pool_details)
|
|
348
366
|
|
|
349
367
|
async def _start_monitoring(self) -> None:
|
|
350
|
-
logger.debug("
|
|
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"
|
|
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"
|
|
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("
|
|
385
|
+
logger.warning("thread pool monitoring task cancelled")
|
|
368
386
|
except Exception as e:
|
|
369
|
-
logger.exception(f"
|
|
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("
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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
|
|
572
|
-
logger.
|
|
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
|
|
25
|
+
class ContextVarToCopyStr(BaseModel):
|
|
25
26
|
name: Literal[
|
|
26
|
-
"ctx_workflow_run_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("
|
|
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("
|
|
97
|
+
logger.warning("log queue is full, dropping log message")
|
|
83
98
|
|
|
84
99
|
|
|
85
100
|
class CustomLogHandler(logging.StreamHandler): # type: ignore[type-arg]
|
hatchet_sdk/worker/worker.py
CHANGED
|
@@ -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
|
|
147
|
-
logger.
|
|
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
|
|
160
|
-
logger.
|
|
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("
|
|
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
|
|
230
|
-
logger.
|
|
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
|
|
375
|
-
logger.
|
|
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
|
|
408
|
-
logger.
|
|
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,17 +1,18 @@
|
|
|
1
|
-
hatchet_sdk/__init__.py,sha256=
|
|
2
|
-
hatchet_sdk/client.py,sha256=
|
|
3
|
-
hatchet_sdk/clients/admin.py,sha256=
|
|
4
|
-
hatchet_sdk/clients/dispatcher/action_listener.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
13
|
-
hatchet_sdk/clients/rest/api/__init__.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
232
|
-
hatchet_sdk/clients/v1/api_client.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
277
|
-
hatchet_sdk/runnables/task.py,sha256
|
|
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=
|
|
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=
|
|
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=
|
|
514
|
-
hatchet_sdk/worker/runner/utils/capture_logs.py,sha256=
|
|
515
|
-
hatchet_sdk/worker/worker.py,sha256=
|
|
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.
|
|
518
|
-
hatchet_sdk-1.
|
|
519
|
-
hatchet_sdk-1.
|
|
520
|
-
hatchet_sdk-1.
|
|
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,,
|
|
File without changes
|
|
File without changes
|