hatchet-sdk 1.6.5__py3-none-any.whl → 1.8.0__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/clients/admin.py +5 -21
- hatchet_sdk/clients/rest/__init__.py +2 -0
- hatchet_sdk/clients/rest/api/task_api.py +30 -0
- hatchet_sdk/clients/rest/api/workflow_api.py +46 -0
- hatchet_sdk/clients/rest/api/workflow_runs_api.py +299 -0
- hatchet_sdk/clients/rest/api_client.py +15 -1
- hatchet_sdk/clients/rest/models/__init__.py +2 -0
- hatchet_sdk/clients/rest/models/v1_task_summary.py +2 -4
- hatchet_sdk/clients/rest/models/v1_task_timing.py +159 -0
- hatchet_sdk/clients/rest/models/v1_task_timing_list.py +110 -0
- hatchet_sdk/features/cron.py +12 -0
- hatchet_sdk/features/runs.py +4 -4
- hatchet_sdk/hatchet.py +13 -14
- hatchet_sdk/runnables/standalone.py +90 -1
- hatchet_sdk/runnables/task.py +5 -23
- hatchet_sdk/runnables/types.py +7 -10
- hatchet_sdk/runnables/workflow.py +189 -24
- hatchet_sdk/worker/worker.py +2 -5
- {hatchet_sdk-1.6.5.dist-info → hatchet_sdk-1.8.0.dist-info}/METADATA +1 -1
- {hatchet_sdk-1.6.5.dist-info → hatchet_sdk-1.8.0.dist-info}/RECORD +22 -20
- {hatchet_sdk-1.6.5.dist-info → hatchet_sdk-1.8.0.dist-info}/WHEEL +0 -0
- {hatchet_sdk-1.6.5.dist-info → hatchet_sdk-1.8.0.dist-info}/entry_points.txt +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
-
from datetime import datetime
|
|
3
|
-
from typing import TYPE_CHECKING, Any, Callable, Generic, cast
|
|
2
|
+
from datetime import datetime, timedelta
|
|
3
|
+
from typing import TYPE_CHECKING, Any, Callable, Generic, TypeVar, cast
|
|
4
4
|
|
|
5
5
|
from google.protobuf import timestamp_pb2
|
|
6
|
-
from pydantic import BaseModel
|
|
6
|
+
from pydantic import BaseModel, model_validator
|
|
7
7
|
|
|
8
8
|
from hatchet_sdk.clients.admin import (
|
|
9
9
|
ScheduleTriggerWorkflowOptions,
|
|
@@ -11,6 +11,8 @@ from hatchet_sdk.clients.admin import (
|
|
|
11
11
|
WorkflowRunTriggerConfig,
|
|
12
12
|
)
|
|
13
13
|
from hatchet_sdk.clients.rest.models.cron_workflows import CronWorkflows
|
|
14
|
+
from hatchet_sdk.clients.rest.models.v1_task_status import V1TaskStatus
|
|
15
|
+
from hatchet_sdk.clients.rest.models.v1_task_summary import V1TaskSummary
|
|
14
16
|
from hatchet_sdk.context.context import Context, DurableContext
|
|
15
17
|
from hatchet_sdk.contracts.v1.workflows_pb2 import (
|
|
16
18
|
CreateWorkflowVersionRequest,
|
|
@@ -23,12 +25,11 @@ from hatchet_sdk.logger import logger
|
|
|
23
25
|
from hatchet_sdk.rate_limit import RateLimit
|
|
24
26
|
from hatchet_sdk.runnables.task import Task
|
|
25
27
|
from hatchet_sdk.runnables.types import (
|
|
26
|
-
DEFAULT_EXECUTION_TIMEOUT,
|
|
27
|
-
DEFAULT_SCHEDULE_TIMEOUT,
|
|
28
28
|
ConcurrencyExpression,
|
|
29
29
|
EmptyModel,
|
|
30
30
|
R,
|
|
31
31
|
StepType,
|
|
32
|
+
TaskDefaults,
|
|
32
33
|
TWorkflowInput,
|
|
33
34
|
WorkflowConfig,
|
|
34
35
|
)
|
|
@@ -43,6 +44,62 @@ if TYPE_CHECKING:
|
|
|
43
44
|
from hatchet_sdk.runnables.standalone import Standalone
|
|
44
45
|
|
|
45
46
|
|
|
47
|
+
T = TypeVar("T")
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def fall_back_to_default(value: T, param_default: T, fallback_value: T | None) -> T:
|
|
51
|
+
## If the value is not the param default, it's set
|
|
52
|
+
if value != param_default:
|
|
53
|
+
return value
|
|
54
|
+
|
|
55
|
+
## Otherwise, it's unset, so return the fallback value if it's set
|
|
56
|
+
if fallback_value is not None:
|
|
57
|
+
return fallback_value
|
|
58
|
+
|
|
59
|
+
## Otherwise return the param value
|
|
60
|
+
return value
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class ComputedTaskParameters(BaseModel):
|
|
64
|
+
schedule_timeout: Duration
|
|
65
|
+
execution_timeout: Duration
|
|
66
|
+
retries: int
|
|
67
|
+
backoff_factor: float | None
|
|
68
|
+
backoff_max_seconds: int | None
|
|
69
|
+
|
|
70
|
+
task_defaults: TaskDefaults
|
|
71
|
+
|
|
72
|
+
@model_validator(mode="after")
|
|
73
|
+
def validate_params(self) -> "ComputedTaskParameters":
|
|
74
|
+
self.execution_timeout = fall_back_to_default(
|
|
75
|
+
value=self.execution_timeout,
|
|
76
|
+
param_default=timedelta(seconds=60),
|
|
77
|
+
fallback_value=self.task_defaults.execution_timeout,
|
|
78
|
+
)
|
|
79
|
+
self.schedule_timeout = fall_back_to_default(
|
|
80
|
+
value=self.schedule_timeout,
|
|
81
|
+
param_default=timedelta(minutes=5),
|
|
82
|
+
fallback_value=self.task_defaults.schedule_timeout,
|
|
83
|
+
)
|
|
84
|
+
self.backoff_factor = fall_back_to_default(
|
|
85
|
+
value=self.backoff_factor,
|
|
86
|
+
param_default=None,
|
|
87
|
+
fallback_value=self.task_defaults.backoff_factor,
|
|
88
|
+
)
|
|
89
|
+
self.backoff_max_seconds = fall_back_to_default(
|
|
90
|
+
value=self.backoff_max_seconds,
|
|
91
|
+
param_default=None,
|
|
92
|
+
fallback_value=self.task_defaults.backoff_max_seconds,
|
|
93
|
+
)
|
|
94
|
+
self.retries = fall_back_to_default(
|
|
95
|
+
value=self.retries,
|
|
96
|
+
param_default=0,
|
|
97
|
+
fallback_value=self.task_defaults.retries,
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
return self
|
|
101
|
+
|
|
102
|
+
|
|
46
103
|
def transform_desired_worker_label(d: DesiredWorkerLabel) -> DesiredWorkerLabels:
|
|
47
104
|
value = d.value
|
|
48
105
|
return DesiredWorkerLabels(
|
|
@@ -528,8 +585,8 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
528
585
|
def task(
|
|
529
586
|
self,
|
|
530
587
|
name: str | None = None,
|
|
531
|
-
schedule_timeout: Duration =
|
|
532
|
-
execution_timeout: Duration =
|
|
588
|
+
schedule_timeout: Duration = timedelta(minutes=5),
|
|
589
|
+
execution_timeout: Duration = timedelta(seconds=60),
|
|
533
590
|
parents: list[Task[TWorkflowInput, Any]] = [],
|
|
534
591
|
retries: int = 0,
|
|
535
592
|
rate_limits: list[RateLimit] = [],
|
|
@@ -573,6 +630,15 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
573
630
|
:returns: A decorator which creates a `Task` object.
|
|
574
631
|
"""
|
|
575
632
|
|
|
633
|
+
computed_params = ComputedTaskParameters(
|
|
634
|
+
schedule_timeout=schedule_timeout,
|
|
635
|
+
execution_timeout=execution_timeout,
|
|
636
|
+
retries=retries,
|
|
637
|
+
backoff_factor=backoff_factor,
|
|
638
|
+
backoff_max_seconds=backoff_max_seconds,
|
|
639
|
+
task_defaults=self.config.task_defaults,
|
|
640
|
+
)
|
|
641
|
+
|
|
576
642
|
def inner(
|
|
577
643
|
func: Callable[[TWorkflowInput, Context], R]
|
|
578
644
|
) -> Task[TWorkflowInput, R]:
|
|
@@ -582,17 +648,17 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
582
648
|
workflow=self,
|
|
583
649
|
type=StepType.DEFAULT,
|
|
584
650
|
name=self._parse_task_name(name, func),
|
|
585
|
-
execution_timeout=execution_timeout,
|
|
586
|
-
schedule_timeout=schedule_timeout,
|
|
651
|
+
execution_timeout=computed_params.execution_timeout,
|
|
652
|
+
schedule_timeout=computed_params.schedule_timeout,
|
|
587
653
|
parents=parents,
|
|
588
|
-
retries=retries,
|
|
654
|
+
retries=computed_params.retries,
|
|
589
655
|
rate_limits=[r.to_proto() for r in rate_limits],
|
|
590
656
|
desired_worker_labels={
|
|
591
657
|
key: transform_desired_worker_label(d)
|
|
592
658
|
for key, d in desired_worker_labels.items()
|
|
593
659
|
},
|
|
594
|
-
backoff_factor=backoff_factor,
|
|
595
|
-
backoff_max_seconds=backoff_max_seconds,
|
|
660
|
+
backoff_factor=computed_params.backoff_factor,
|
|
661
|
+
backoff_max_seconds=computed_params.backoff_max_seconds,
|
|
596
662
|
concurrency=concurrency,
|
|
597
663
|
wait_for=wait_for,
|
|
598
664
|
skip_if=skip_if,
|
|
@@ -608,8 +674,8 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
608
674
|
def durable_task(
|
|
609
675
|
self,
|
|
610
676
|
name: str | None = None,
|
|
611
|
-
schedule_timeout: Duration =
|
|
612
|
-
execution_timeout: Duration =
|
|
677
|
+
schedule_timeout: Duration = timedelta(minutes=5),
|
|
678
|
+
execution_timeout: Duration = timedelta(seconds=60),
|
|
613
679
|
parents: list[Task[TWorkflowInput, Any]] = [],
|
|
614
680
|
retries: int = 0,
|
|
615
681
|
rate_limits: list[RateLimit] = [],
|
|
@@ -624,7 +690,7 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
624
690
|
[Callable[[TWorkflowInput, DurableContext], R]], Task[TWorkflowInput, R]
|
|
625
691
|
]:
|
|
626
692
|
"""
|
|
627
|
-
A decorator to transform a function into a durable Hatchet task that
|
|
693
|
+
A decorator to transform a function into a durable Hatchet task that runs as part of a workflow.
|
|
628
694
|
|
|
629
695
|
**IMPORTANT:** This decorator creates a _durable_ task, which works using Hatchet's durable execution capabilities. This is an advanced feature of Hatchet.
|
|
630
696
|
|
|
@@ -659,6 +725,15 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
659
725
|
:returns: A decorator which creates a `Task` object.
|
|
660
726
|
"""
|
|
661
727
|
|
|
728
|
+
computed_params = ComputedTaskParameters(
|
|
729
|
+
schedule_timeout=schedule_timeout,
|
|
730
|
+
execution_timeout=execution_timeout,
|
|
731
|
+
retries=retries,
|
|
732
|
+
backoff_factor=backoff_factor,
|
|
733
|
+
backoff_max_seconds=backoff_max_seconds,
|
|
734
|
+
task_defaults=self.config.task_defaults,
|
|
735
|
+
)
|
|
736
|
+
|
|
662
737
|
def inner(
|
|
663
738
|
func: Callable[[TWorkflowInput, DurableContext], R]
|
|
664
739
|
) -> Task[TWorkflowInput, R]:
|
|
@@ -668,17 +743,17 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
668
743
|
workflow=self,
|
|
669
744
|
type=StepType.DEFAULT,
|
|
670
745
|
name=self._parse_task_name(name, func),
|
|
671
|
-
execution_timeout=execution_timeout,
|
|
672
|
-
schedule_timeout=schedule_timeout,
|
|
746
|
+
execution_timeout=computed_params.execution_timeout,
|
|
747
|
+
schedule_timeout=computed_params.schedule_timeout,
|
|
673
748
|
parents=parents,
|
|
674
|
-
retries=retries,
|
|
749
|
+
retries=computed_params.retries,
|
|
675
750
|
rate_limits=[r.to_proto() for r in rate_limits],
|
|
676
751
|
desired_worker_labels={
|
|
677
752
|
key: transform_desired_worker_label(d)
|
|
678
753
|
for key, d in desired_worker_labels.items()
|
|
679
754
|
},
|
|
680
|
-
backoff_factor=backoff_factor,
|
|
681
|
-
backoff_max_seconds=backoff_max_seconds,
|
|
755
|
+
backoff_factor=computed_params.backoff_factor,
|
|
756
|
+
backoff_max_seconds=computed_params.backoff_max_seconds,
|
|
682
757
|
concurrency=concurrency,
|
|
683
758
|
wait_for=wait_for,
|
|
684
759
|
skip_if=skip_if,
|
|
@@ -694,8 +769,8 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
694
769
|
def on_failure_task(
|
|
695
770
|
self,
|
|
696
771
|
name: str | None = None,
|
|
697
|
-
schedule_timeout: Duration =
|
|
698
|
-
execution_timeout: Duration =
|
|
772
|
+
schedule_timeout: Duration = timedelta(minutes=5),
|
|
773
|
+
execution_timeout: Duration = timedelta(seconds=60),
|
|
699
774
|
retries: int = 0,
|
|
700
775
|
rate_limits: list[RateLimit] = [],
|
|
701
776
|
backoff_factor: float | None = None,
|
|
@@ -754,8 +829,8 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
754
829
|
def on_success_task(
|
|
755
830
|
self,
|
|
756
831
|
name: str | None = None,
|
|
757
|
-
schedule_timeout: Duration =
|
|
758
|
-
execution_timeout: Duration =
|
|
832
|
+
schedule_timeout: Duration = timedelta(minutes=5),
|
|
833
|
+
execution_timeout: Duration = timedelta(seconds=60),
|
|
759
834
|
retries: int = 0,
|
|
760
835
|
rate_limits: list[RateLimit] = [],
|
|
761
836
|
backoff_factor: float | None = None,
|
|
@@ -846,3 +921,93 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
846
921
|
self._on_success_task = _task
|
|
847
922
|
case _:
|
|
848
923
|
raise ValueError("Invalid task type")
|
|
924
|
+
|
|
925
|
+
def list_runs(
|
|
926
|
+
self,
|
|
927
|
+
since: datetime | None = None,
|
|
928
|
+
until: datetime | None = None,
|
|
929
|
+
limit: int = 100,
|
|
930
|
+
offset: int | None = None,
|
|
931
|
+
statuses: list[V1TaskStatus] | None = None,
|
|
932
|
+
additional_metadata: dict[str, str] | None = None,
|
|
933
|
+
worker_id: str | None = None,
|
|
934
|
+
parent_task_external_id: str | None = None,
|
|
935
|
+
only_tasks: bool = False,
|
|
936
|
+
) -> list[V1TaskSummary]:
|
|
937
|
+
"""
|
|
938
|
+
List runs of the workflow.
|
|
939
|
+
|
|
940
|
+
:param since: The start time for the runs to be listed.
|
|
941
|
+
:param until: The end time for the runs to be listed.
|
|
942
|
+
:param limit: The maximum number of runs to be listed.
|
|
943
|
+
:param offset: The offset for pagination.
|
|
944
|
+
:param statuses: The statuses of the runs to be listed.
|
|
945
|
+
:param additional_metadata: Additional metadata for filtering the runs.
|
|
946
|
+
:param worker_id: The ID of the worker that ran the tasks.
|
|
947
|
+
:param parent_task_external_id: The external ID of the parent task.
|
|
948
|
+
:param only_tasks: Whether to list only task runs.
|
|
949
|
+
|
|
950
|
+
:returns: A list of `V1TaskSummary` objects representing the runs of the workflow.
|
|
951
|
+
"""
|
|
952
|
+
workflows = self.client.workflows.list(workflow_name=self.name)
|
|
953
|
+
|
|
954
|
+
if not workflows.rows:
|
|
955
|
+
logger.warning(f"No runs found for {self.name}")
|
|
956
|
+
return []
|
|
957
|
+
|
|
958
|
+
workflow = workflows.rows[0]
|
|
959
|
+
|
|
960
|
+
response = self.client.runs.list(
|
|
961
|
+
workflow_ids=[workflow.metadata.id],
|
|
962
|
+
since=since or datetime.now() - timedelta(days=1),
|
|
963
|
+
only_tasks=only_tasks,
|
|
964
|
+
offset=offset,
|
|
965
|
+
limit=limit,
|
|
966
|
+
statuses=statuses,
|
|
967
|
+
until=until,
|
|
968
|
+
additional_metadata=additional_metadata,
|
|
969
|
+
worker_id=worker_id,
|
|
970
|
+
parent_task_external_id=parent_task_external_id,
|
|
971
|
+
)
|
|
972
|
+
|
|
973
|
+
return response.rows
|
|
974
|
+
|
|
975
|
+
async def aio_list_runs(
|
|
976
|
+
self,
|
|
977
|
+
since: datetime | None = None,
|
|
978
|
+
until: datetime | None = None,
|
|
979
|
+
limit: int = 100,
|
|
980
|
+
offset: int | None = None,
|
|
981
|
+
statuses: list[V1TaskStatus] | None = None,
|
|
982
|
+
additional_metadata: dict[str, str] | None = None,
|
|
983
|
+
worker_id: str | None = None,
|
|
984
|
+
parent_task_external_id: str | None = None,
|
|
985
|
+
only_tasks: bool = False,
|
|
986
|
+
) -> list[V1TaskSummary]:
|
|
987
|
+
"""
|
|
988
|
+
List runs of the workflow.
|
|
989
|
+
|
|
990
|
+
:param since: The start time for the runs to be listed.
|
|
991
|
+
:param until: The end time for the runs to be listed.
|
|
992
|
+
:param limit: The maximum number of runs to be listed.
|
|
993
|
+
:param offset: The offset for pagination.
|
|
994
|
+
:param statuses: The statuses of the runs to be listed.
|
|
995
|
+
:param additional_metadata: Additional metadata for filtering the runs.
|
|
996
|
+
:param worker_id: The ID of the worker that ran the tasks.
|
|
997
|
+
:param parent_task_external_id: The external ID of the parent task.
|
|
998
|
+
:param only_tasks: Whether to list only task runs.
|
|
999
|
+
|
|
1000
|
+
:returns: A list of `V1TaskSummary` objects representing the runs of the workflow.
|
|
1001
|
+
"""
|
|
1002
|
+
return await asyncio.to_thread(
|
|
1003
|
+
self.list_runs,
|
|
1004
|
+
since=since or datetime.now() - timedelta(days=1),
|
|
1005
|
+
only_tasks=only_tasks,
|
|
1006
|
+
offset=offset,
|
|
1007
|
+
limit=limit,
|
|
1008
|
+
statuses=statuses,
|
|
1009
|
+
until=until,
|
|
1010
|
+
additional_metadata=additional_metadata,
|
|
1011
|
+
worker_id=worker_id,
|
|
1012
|
+
parent_task_external_id=parent_task_external_id,
|
|
1013
|
+
)
|
hatchet_sdk/worker/worker.py
CHANGED
|
@@ -147,7 +147,7 @@ class Worker:
|
|
|
147
147
|
|
|
148
148
|
def register_workflow_from_opts(self, opts: CreateWorkflowVersionRequest) -> None:
|
|
149
149
|
try:
|
|
150
|
-
self.client.admin.put_workflow(opts
|
|
150
|
+
self.client.admin.put_workflow(opts)
|
|
151
151
|
except Exception as e:
|
|
152
152
|
logger.error(f"failed to register workflow: {opts.name}")
|
|
153
153
|
logger.error(e)
|
|
@@ -159,11 +159,8 @@ class Worker:
|
|
|
159
159
|
"workflow must have at least one task registered before registering"
|
|
160
160
|
)
|
|
161
161
|
|
|
162
|
-
opts = workflow.to_proto()
|
|
163
|
-
name = workflow.name
|
|
164
|
-
|
|
165
162
|
try:
|
|
166
|
-
self.client.admin.put_workflow(
|
|
163
|
+
self.client.admin.put_workflow(workflow.to_proto())
|
|
167
164
|
except Exception as e:
|
|
168
165
|
logger.error(f"failed to register workflow: {workflow.name}")
|
|
169
166
|
logger.error(e)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
hatchet_sdk/__init__.py,sha256=LUj6VyGVSHCYTQTaoyiVhjyJLOfv6gMCmb-s4hRyISM,10031
|
|
2
2
|
hatchet_sdk/client.py,sha256=tbOeMuaJmgpyYSQg8QUz_J4AdqRNvV9E0aEZpgsiZTE,2207
|
|
3
|
-
hatchet_sdk/clients/admin.py,sha256=
|
|
3
|
+
hatchet_sdk/clients/admin.py,sha256=7odhvNiRnCCXcmoOTPzbGePxnzDKJyU0yoEbyRWH_UA,17108
|
|
4
4
|
hatchet_sdk/clients/dispatcher/action_listener.py,sha256=IwI2DKXTaPjqekZW8i6LXw4GOTtI2YdqR8PLUIhxooA,16955
|
|
5
5
|
hatchet_sdk/clients/dispatcher/dispatcher.py,sha256=IL-hDXG8Lzas9FieVuNr47E_3Gvpc-aL4Xu_l385Vp8,8140
|
|
6
6
|
hatchet_sdk/clients/event_ts.py,sha256=MudFszIb9IcPKQYvBTzcatPkcWEy3nxbAtEQ0_NYxMg,2094
|
|
@@ -9,7 +9,7 @@ hatchet_sdk/clients/listeners/durable_event_listener.py,sha256=jpqnbZsuouWk3XaOI
|
|
|
9
9
|
hatchet_sdk/clients/listeners/pooled_listener.py,sha256=1rodfIeqmHRF-u-PB6cBJbOU8NrvToLTyGigJMydpGo,8496
|
|
10
10
|
hatchet_sdk/clients/listeners/run_event_listener.py,sha256=rIjBLRF7d7FBoEq7RKbmbOA84lX_hHSU26trwnthqV8,10230
|
|
11
11
|
hatchet_sdk/clients/listeners/workflow_listener.py,sha256=EhBZZnHiidDLvAc4r54Re_LJXVypinbgTE9qKBybxj8,2054
|
|
12
|
-
hatchet_sdk/clients/rest/__init__.py,sha256=
|
|
12
|
+
hatchet_sdk/clients/rest/__init__.py,sha256=5lTVCDrwielWr5A_dnCL4xNiVWnyS1zLXLNxINM_p4Y,16664
|
|
13
13
|
hatchet_sdk/clients/rest/api/__init__.py,sha256=XWlkH9iwpQvJHDqKe7kWl3MUzcTOaH-JiFZbki_fg_U,1200
|
|
14
14
|
hatchet_sdk/clients/rest/api/api_token_api.py,sha256=xzqMH_-wajBA0qLLs5Ta7tYg4FOLq0NjATyhZ1SV9jo,33433
|
|
15
15
|
hatchet_sdk/clients/rest/api/default_api.py,sha256=Y0jEhatVpdIX_W2MCt_n40K6iKvVegDB70qxexkeZDI,88677
|
|
@@ -22,18 +22,18 @@ hatchet_sdk/clients/rest/api/rate_limits_api.py,sha256=e3CIX35R8SkV8LrgLMPCAy6Kz
|
|
|
22
22
|
hatchet_sdk/clients/rest/api/slack_api.py,sha256=0xIUw3_1_3hSTn2yw7fLRO5yb38nYLu5aLM7IE2pnwk,21894
|
|
23
23
|
hatchet_sdk/clients/rest/api/sns_api.py,sha256=1LfhnZEA450uHwtZCoM_wycOeH4UGwfNP1pw4RWSe08,33641
|
|
24
24
|
hatchet_sdk/clients/rest/api/step_run_api.py,sha256=rqP4UIJSkw8DwbDnlEgupBDWUL0jlVH_Rm7bNGMUoG8,84505
|
|
25
|
-
hatchet_sdk/clients/rest/api/task_api.py,sha256=
|
|
25
|
+
hatchet_sdk/clients/rest/api/task_api.py,sha256=rpppMT70gverBsDYaI9owYUwaDVicxIZRqsCBqPfVi8,87464
|
|
26
26
|
hatchet_sdk/clients/rest/api/tenant_api.py,sha256=LYUdJSsg-O-Y_7cuCDdtDHP5P0BQ9ch8RFLQKIiIreQ,177493
|
|
27
27
|
hatchet_sdk/clients/rest/api/user_api.py,sha256=NYuEKLeBjXO4q8gyYq1thtbuRm9m3g0R6-q6LIfv83U,115780
|
|
28
28
|
hatchet_sdk/clients/rest/api/worker_api.py,sha256=56jRXsyK7SDENly2b019EO80d8xOHU4bZnmOmjKY1iQ,33049
|
|
29
|
-
hatchet_sdk/clients/rest/api/workflow_api.py,sha256=
|
|
29
|
+
hatchet_sdk/clients/rest/api/workflow_api.py,sha256=rpPXy5xZDZWo1GXQGLapTC3A5M_spk1zoK_vu_J7SVA,251652
|
|
30
30
|
hatchet_sdk/clients/rest/api/workflow_run_api.py,sha256=Jvge80z6DhlqL9OuLzUC49OtojeiCuagrMbNBThMYI4,78120
|
|
31
|
-
hatchet_sdk/clients/rest/api/workflow_runs_api.py,sha256=
|
|
32
|
-
hatchet_sdk/clients/rest/api_client.py,sha256=
|
|
31
|
+
hatchet_sdk/clients/rest/api/workflow_runs_api.py,sha256=NiDZXDUM7VapgjQ68z8MWPqZKTfz7rPBvPwGG5AJyZg,81997
|
|
32
|
+
hatchet_sdk/clients/rest/api_client.py,sha256=25vNKzpKVhvrGrU8T2YBLbz0Y7K0pKZwiLXF3Oc7tt0,27435
|
|
33
33
|
hatchet_sdk/clients/rest/api_response.py,sha256=rSuCVGY-HE8X_WwteQP5wyANIuS-L5AmtZEUOwTicak,641
|
|
34
34
|
hatchet_sdk/clients/rest/configuration.py,sha256=ijGxGorVe8OEikJruwJ0hPk1Rc0OAKOqeUrfcoEiYH8,19333
|
|
35
35
|
hatchet_sdk/clients/rest/exceptions.py,sha256=5PTEjyGxLeGP8U_qqc79QzR-sN7SOhzBwknSUC-BU4c,6365
|
|
36
|
-
hatchet_sdk/clients/rest/models/__init__.py,sha256=
|
|
36
|
+
hatchet_sdk/clients/rest/models/__init__.py,sha256=5Tse5Ljxu7tONV7ePuf9aFWM2oc1ehBaH90BiiAgdYA,15084
|
|
37
37
|
hatchet_sdk/clients/rest/models/accept_invite_request.py,sha256=_otOis3SuTHl0F_hhYD-rYqgyxCXRn83CK_eU9oMdn4,2427
|
|
38
38
|
hatchet_sdk/clients/rest/models/api_error.py,sha256=KodK1_cc28CgYGvX1WhIhTN0pAAkgq8PJXReIrMnqBA,3068
|
|
39
39
|
hatchet_sdk/clients/rest/models/api_errors.py,sha256=RNmnWn1GWlG9xTvpvrTmKq-Pr70x9mcJ4-dNFBemxa8,2917
|
|
@@ -165,8 +165,10 @@ hatchet_sdk/clients/rest/models/v1_task_point_metrics.py,sha256=shKqLFLgNAKua865
|
|
|
165
165
|
hatchet_sdk/clients/rest/models/v1_task_run_metric.py,sha256=8trEgJ_7AHAmUQi2Qty-v5XVjgN3g7VZ6gzMTjeZ1tY,2504
|
|
166
166
|
hatchet_sdk/clients/rest/models/v1_task_run_status.py,sha256=tjipWHHNx7g4lUZBdu_DDZwEqSpxPKv06YiE2Q17cXo,753
|
|
167
167
|
hatchet_sdk/clients/rest/models/v1_task_status.py,sha256=4Hqczjth228k8Y23vIaxAIzTpLaS9mh9I0PrTjY8JRY,742
|
|
168
|
-
hatchet_sdk/clients/rest/models/v1_task_summary.py,sha256=
|
|
168
|
+
hatchet_sdk/clients/rest/models/v1_task_summary.py,sha256=Unbtm9n-NexT37F0S0af2mYxYtWhcbuYDlk4EYh15c0,8330
|
|
169
169
|
hatchet_sdk/clients/rest/models/v1_task_summary_list.py,sha256=0m-xf_lY9BwwbLky9i6fkTYUwh2K9mADHVZoRyF66o4,3510
|
|
170
|
+
hatchet_sdk/clients/rest/models/v1_task_timing.py,sha256=cYO73DfWGPzxvM7hUF-CXiTHfKVsGtgQalcVKoveBwo,5299
|
|
171
|
+
hatchet_sdk/clients/rest/models/v1_task_timing_list.py,sha256=1LFoKqFn11EJ_t7ZeWUFldWOWfG09tN_wTZu3a8e_SM,3509
|
|
170
172
|
hatchet_sdk/clients/rest/models/v1_trigger_workflow_run_request.py,sha256=P-dC3O7dPr6mGJ2UZYcl3lSQoxKcX-GlYOiWkmNRMj0,3080
|
|
171
173
|
hatchet_sdk/clients/rest/models/v1_workflow_run.py,sha256=0kgHJ35XjXgNfaJfb1p0KLS1Jw6VAMeMYSdts8EvuYc,5895
|
|
172
174
|
hatchet_sdk/clients/rest/models/v1_workflow_run_details.py,sha256=vMnc50mT-tjfFlg2BJ58s2HhFvqvuGJaPGYAlTrLVI4,5040
|
|
@@ -242,15 +244,15 @@ hatchet_sdk/contracts/workflows_pb2.py,sha256=daEsUwZnlDQ5GGLJ8WHgLdI1Tgr3lBXxGV
|
|
|
242
244
|
hatchet_sdk/contracts/workflows_pb2.pyi,sha256=WJ3b45pWvoNmmWTWjBJt61IiAoVn61F62AG5OrRsnd8,15538
|
|
243
245
|
hatchet_sdk/contracts/workflows_pb2_grpc.py,sha256=2V8E72DlJx5qlH2yiQpVCu5cQbKUba5X7T1yNrQDF_s,10819
|
|
244
246
|
hatchet_sdk/exceptions.py,sha256=HGmYSZy3bCY2rBDEOQfhYGRa7_j9GvYT9Pc0B8Ic5Ug,49
|
|
245
|
-
hatchet_sdk/features/cron.py,sha256=
|
|
247
|
+
hatchet_sdk/features/cron.py,sha256=GM44qFidUfannW0-TpFm4ghbZRCrRvZtc9vp6QJ2RkQ,9666
|
|
246
248
|
hatchet_sdk/features/logs.py,sha256=OcmgtmNyqFJI03_5ncuSy6M-Ho7AVTa8hnO0CDE3wi4,1172
|
|
247
249
|
hatchet_sdk/features/metrics.py,sha256=TzAEB4Ogmgcq-EB7lEWQ9V8y-15d23ZuhAgPH6It92Y,4519
|
|
248
250
|
hatchet_sdk/features/rate_limits.py,sha256=eh55Z3w75cYUthqTyoWmNxj_6tN3rjebMKm3of-vxv0,2155
|
|
249
|
-
hatchet_sdk/features/runs.py,sha256=
|
|
251
|
+
hatchet_sdk/features/runs.py,sha256=9kmn2AM1XVFZS9P_lR-hh6SXwW42Kh73l0WUBl5VJh8,14861
|
|
250
252
|
hatchet_sdk/features/scheduled.py,sha256=1kNR8AxN1UlabNroU9TtVbptZEXfqTVE25Gxmh2lABs,8928
|
|
251
253
|
hatchet_sdk/features/workers.py,sha256=vD6j7GCttu0fm23_XmBMdE0IuX4mUbL0adgMoC8Sk_E,2571
|
|
252
254
|
hatchet_sdk/features/workflows.py,sha256=PFJsGXTHVfdDBDQ9WcQXcAzr7u-dN7vUpwbZ9fH0ZD8,3976
|
|
253
|
-
hatchet_sdk/hatchet.py,sha256=
|
|
255
|
+
hatchet_sdk/hatchet.py,sha256=HRa__owQMeSRhtXzEfObap3ZKxUeNq2FJKOZEUVZ_CI,21795
|
|
254
256
|
hatchet_sdk/labels.py,sha256=nATgxWE3lFxRTnfISEpoIRLGbMfAZsHF4lZTuG4Mfic,182
|
|
255
257
|
hatchet_sdk/logger.py,sha256=5uOr52T4mImSQm1QvWT8HvZFK5WfPNh3Y1cBQZRFgUQ,333
|
|
256
258
|
hatchet_sdk/metadata.py,sha256=XkRbhnghJJGCdVvF-uzyGBcNaTqpeQ3uiQvNNP1wyBc,107
|
|
@@ -258,10 +260,10 @@ hatchet_sdk/opentelemetry/instrumentor.py,sha256=GbsMZ1c9s0VRE7wwq-Iz5U9sT9fl7Zd
|
|
|
258
260
|
hatchet_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
259
261
|
hatchet_sdk/rate_limit.py,sha256=TwbCuggiZaWpYuo4mjVLlE-z1OfQ2mRBiVvCSaG3lv4,3919
|
|
260
262
|
hatchet_sdk/runnables/contextvars.py,sha256=6MDocAMmlyiRW37oQ1jyx10tAlJs-xgDjR3xPoPz05g,426
|
|
261
|
-
hatchet_sdk/runnables/standalone.py,sha256=
|
|
262
|
-
hatchet_sdk/runnables/task.py,sha256=
|
|
263
|
-
hatchet_sdk/runnables/types.py,sha256=
|
|
264
|
-
hatchet_sdk/runnables/workflow.py,sha256=
|
|
263
|
+
hatchet_sdk/runnables/standalone.py,sha256=pCAIS40q9ltkK7K97ff79MzE73_k22ymZdrLdFdFwD8,15233
|
|
264
|
+
hatchet_sdk/runnables/task.py,sha256=5VOgi413eH8Gz9_XBxFTfbfLITTpPJYwRB2ZXshysW8,7014
|
|
265
|
+
hatchet_sdk/runnables/types.py,sha256=OBhqa6rvEaY4ypKtUpKHHyQxOXKYvxao_-Hknu5jVns,4802
|
|
266
|
+
hatchet_sdk/runnables/workflow.py,sha256=Ucjguf3SxyJzYe7R427U76iUOLDoHQMzwOQ7g9xYuQA,39765
|
|
265
267
|
hatchet_sdk/token.py,sha256=KjIiInwG5Kqd_FO4BSW1x_5Uc7PFbnzIVJqr50-ZldE,779
|
|
266
268
|
hatchet_sdk/utils/backoff.py,sha256=6B5Rb5nLKw_TqqgpJMYjIBV1PTTtbOMRZCveisVhg_I,353
|
|
267
269
|
hatchet_sdk/utils/proto_enums.py,sha256=0UybwE3s7TcqmzoQSO8YnhgAKOS8WZXsyPchB8-eksw,1247
|
|
@@ -504,9 +506,9 @@ hatchet_sdk/worker/action_listener_process.py,sha256=KxS7-wBpfKnsq0LNSvk-MG442Lh
|
|
|
504
506
|
hatchet_sdk/worker/runner/run_loop_manager.py,sha256=RNWKDCjR57nJ0LCoLUMi0_3pnmpqyo80mz_RaxHYGIc,3812
|
|
505
507
|
hatchet_sdk/worker/runner/runner.py,sha256=z8ri-viK_avAfF6zgbVNBc-rztFDbxSwng3RHsof92w,17063
|
|
506
508
|
hatchet_sdk/worker/runner/utils/capture_logs.py,sha256=nHRPSiDBqzhObM7i2X7t03OupVFnE7kQBdR2Ckgg-2w,2709
|
|
507
|
-
hatchet_sdk/worker/worker.py,sha256=
|
|
509
|
+
hatchet_sdk/worker/worker.py,sha256=SfUeYYGfPDVa7Hr1Tdgrzn_A0T-e_apIzW26BhsiB70,16101
|
|
508
510
|
hatchet_sdk/workflow_run.py,sha256=ZwH0HLFGFVXz6jbiqSv4w0Om2XuR52Tzzw6LH4y65jQ,2765
|
|
509
|
-
hatchet_sdk-1.
|
|
510
|
-
hatchet_sdk-1.
|
|
511
|
-
hatchet_sdk-1.
|
|
512
|
-
hatchet_sdk-1.
|
|
511
|
+
hatchet_sdk-1.8.0.dist-info/METADATA,sha256=MWSM2jbWn8RIm0J-On_FJy4paoq249kv1NvozdH9Y3M,3635
|
|
512
|
+
hatchet_sdk-1.8.0.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
513
|
+
hatchet_sdk-1.8.0.dist-info/entry_points.txt,sha256=Un_76pcLse-ZGBlwebhQpnTPyQrripeHW8J7qmEpGOk,1400
|
|
514
|
+
hatchet_sdk-1.8.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|