hatchet-sdk 1.8.2__py3-none-any.whl → 1.9.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/clients/dispatcher/action_listener.py +6 -0
- hatchet_sdk/context/context.py +9 -14
- hatchet_sdk/contracts/dispatcher_pb2.py +56 -56
- hatchet_sdk/contracts/dispatcher_pb2.pyi +6 -2
- hatchet_sdk/hatchet.py +24 -10
- hatchet_sdk/runnables/task.py +11 -15
- hatchet_sdk/runnables/types.py +5 -5
- hatchet_sdk/runnables/workflow.py +20 -13
- hatchet_sdk/utils/typing.py +22 -1
- {hatchet_sdk-1.8.2.dist-info → hatchet_sdk-1.9.1.dist-info}/METADATA +1 -1
- {hatchet_sdk-1.8.2.dist-info → hatchet_sdk-1.9.1.dist-info}/RECORD +13 -13
- {hatchet_sdk-1.8.2.dist-info → hatchet_sdk-1.9.1.dist-info}/WHEEL +0 -0
- {hatchet_sdk-1.8.2.dist-info → hatchet_sdk-1.9.1.dist-info}/entry_points.txt +0 -0
|
@@ -95,6 +95,8 @@ class Action(BaseModel):
|
|
|
95
95
|
worker_id: str
|
|
96
96
|
tenant_id: str
|
|
97
97
|
workflow_run_id: str
|
|
98
|
+
workflow_id: str | None = None
|
|
99
|
+
workflow_version_id: str | None = None
|
|
98
100
|
get_group_key_run_id: str
|
|
99
101
|
job_id: str
|
|
100
102
|
job_name: str
|
|
@@ -140,6 +142,8 @@ class Action(BaseModel):
|
|
|
140
142
|
"hatchet.workflow_name": self.job_name,
|
|
141
143
|
"hatchet.action_name": self.action_id,
|
|
142
144
|
"hatchet.get_group_key_run_id": self.get_group_key_run_id,
|
|
145
|
+
"hatchet.workflow_id": self.workflow_id,
|
|
146
|
+
"hatchet.workflow_version_id": self.workflow_version_id,
|
|
143
147
|
}
|
|
144
148
|
|
|
145
149
|
return {k: v for k, v in attrs.items() if v}
|
|
@@ -343,6 +347,8 @@ class ActionListener:
|
|
|
343
347
|
child_workflow_key=assigned_action.child_workflow_key,
|
|
344
348
|
parent_workflow_run_id=assigned_action.parent_workflow_run_id,
|
|
345
349
|
priority=assigned_action.priority,
|
|
350
|
+
workflow_version_id=assigned_action.workflowVersionId,
|
|
351
|
+
workflow_id=assigned_action.workflowId,
|
|
346
352
|
)
|
|
347
353
|
|
|
348
354
|
yield action
|
hatchet_sdk/context/context.py
CHANGED
|
@@ -69,7 +69,7 @@ class Context:
|
|
|
69
69
|
def trigger_data(self) -> JSONSerializableMapping:
|
|
70
70
|
return self.data.triggers
|
|
71
71
|
|
|
72
|
-
def
|
|
72
|
+
def task_output(self, task: "Task[TWorkflowInput, R]") -> "R":
|
|
73
73
|
from hatchet_sdk.runnables.types import R
|
|
74
74
|
|
|
75
75
|
if self.was_skipped(task):
|
|
@@ -85,19 +85,6 @@ class Context:
|
|
|
85
85
|
|
|
86
86
|
return parent_step_data
|
|
87
87
|
|
|
88
|
-
def task_output(self, task: "Task[TWorkflowInput, R]") -> "R":
|
|
89
|
-
from hatchet_sdk.runnables.types import R
|
|
90
|
-
|
|
91
|
-
## If the task is async, we need to wrap its output in a coroutine
|
|
92
|
-
## so that the type checker behaves right
|
|
93
|
-
async def _aio_output() -> "R":
|
|
94
|
-
return self._task_output(task)
|
|
95
|
-
|
|
96
|
-
if task.is_async_function:
|
|
97
|
-
return cast(R, _aio_output())
|
|
98
|
-
|
|
99
|
-
return self._task_output(task)
|
|
100
|
-
|
|
101
88
|
def aio_task_output(self, task: "Task[TWorkflowInput, R]") -> "R":
|
|
102
89
|
warn(
|
|
103
90
|
"`aio_task_output` is deprecated. Use `task_output` instead.",
|
|
@@ -235,6 +222,14 @@ class Context:
|
|
|
235
222
|
def priority(self) -> int | None:
|
|
236
223
|
return self.action.priority
|
|
237
224
|
|
|
225
|
+
@property
|
|
226
|
+
def workflow_id(self) -> str | None:
|
|
227
|
+
return self.action.workflow_id
|
|
228
|
+
|
|
229
|
+
@property
|
|
230
|
+
def workflow_version_id(self) -> str | None:
|
|
231
|
+
return self.action.workflow_version_id
|
|
232
|
+
|
|
238
233
|
@property
|
|
239
234
|
def task_run_errors(self) -> dict[str, str]:
|
|
240
235
|
errors = self.data.step_run_errors
|
|
@@ -15,7 +15,7 @@ _sym_db = _symbol_database.Default()
|
|
|
15
15
|
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x64ispatcher.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"V\n\x0cWorkerLabels\x12\x15\n\x08strValue\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08intValue\x18\x02 \x01(\x05H\x01\x88\x01\x01\x42\x0b\n\t_strValueB\x0b\n\t_intValue\"\xc8\x01\n\x0bRuntimeInfo\x12\x17\n\nsdkVersion\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1c\n\x08language\x18\x02 \x01(\x0e\x32\x05.SDKSH\x01\x88\x01\x01\x12\x1c\n\x0flanguageVersion\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x0f\n\x02os\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x12\n\x05\x65xtra\x18\x05 \x01(\tH\x04\x88\x01\x01\x42\r\n\x0b_sdkVersionB\x0b\n\t_languageB\x12\n\x10_languageVersionB\x05\n\x03_osB\x08\n\x06_extra\"\xc0\x02\n\x15WorkerRegisterRequest\x12\x12\n\nworkerName\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x63tions\x18\x02 \x03(\t\x12\x10\n\x08services\x18\x03 \x03(\t\x12\x14\n\x07maxRuns\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x32\n\x06labels\x18\x05 \x03(\x0b\x32\".WorkerRegisterRequest.LabelsEntry\x12\x16\n\twebhookId\x18\x06 \x01(\tH\x01\x88\x01\x01\x12&\n\x0bruntimeInfo\x18\x07 \x01(\x0b\x32\x0c.RuntimeInfoH\x02\x88\x01\x01\x1a<\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1c\n\x05value\x18\x02 \x01(\x0b\x32\r.WorkerLabels:\x02\x38\x01\x42\n\n\x08_maxRunsB\x0c\n\n_webhookIdB\x0e\n\x0c_runtimeInfo\"P\n\x16WorkerRegisterResponse\x12\x10\n\x08tenantId\x18\x01 \x01(\t\x12\x10\n\x08workerId\x18\x02 \x01(\t\x12\x12\n\nworkerName\x18\x03 \x01(\t\"\xa3\x01\n\x19UpsertWorkerLabelsRequest\x12\x10\n\x08workerId\x18\x01 \x01(\t\x12\x36\n\x06labels\x18\x02 \x03(\x0b\x32&.UpsertWorkerLabelsRequest.LabelsEntry\x1a<\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1c\n\x05value\x18\x02 \x01(\x0b\x32\r.WorkerLabels:\x02\x38\x01\"@\n\x1aUpsertWorkerLabelsResponse\x12\x10\n\x08tenantId\x18\x01 \x01(\t\x12\x10\n\x08workerId\x18\x02 \x01(\t\"\
|
|
18
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x64ispatcher.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"V\n\x0cWorkerLabels\x12\x15\n\x08strValue\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08intValue\x18\x02 \x01(\x05H\x01\x88\x01\x01\x42\x0b\n\t_strValueB\x0b\n\t_intValue\"\xc8\x01\n\x0bRuntimeInfo\x12\x17\n\nsdkVersion\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1c\n\x08language\x18\x02 \x01(\x0e\x32\x05.SDKSH\x01\x88\x01\x01\x12\x1c\n\x0flanguageVersion\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x0f\n\x02os\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x12\n\x05\x65xtra\x18\x05 \x01(\tH\x04\x88\x01\x01\x42\r\n\x0b_sdkVersionB\x0b\n\t_languageB\x12\n\x10_languageVersionB\x05\n\x03_osB\x08\n\x06_extra\"\xc0\x02\n\x15WorkerRegisterRequest\x12\x12\n\nworkerName\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x63tions\x18\x02 \x03(\t\x12\x10\n\x08services\x18\x03 \x03(\t\x12\x14\n\x07maxRuns\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x32\n\x06labels\x18\x05 \x03(\x0b\x32\".WorkerRegisterRequest.LabelsEntry\x12\x16\n\twebhookId\x18\x06 \x01(\tH\x01\x88\x01\x01\x12&\n\x0bruntimeInfo\x18\x07 \x01(\x0b\x32\x0c.RuntimeInfoH\x02\x88\x01\x01\x1a<\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1c\n\x05value\x18\x02 \x01(\x0b\x32\r.WorkerLabels:\x02\x38\x01\x42\n\n\x08_maxRunsB\x0c\n\n_webhookIdB\x0e\n\x0c_runtimeInfo\"P\n\x16WorkerRegisterResponse\x12\x10\n\x08tenantId\x18\x01 \x01(\t\x12\x10\n\x08workerId\x18\x02 \x01(\t\x12\x12\n\nworkerName\x18\x03 \x01(\t\"\xa3\x01\n\x19UpsertWorkerLabelsRequest\x12\x10\n\x08workerId\x18\x01 \x01(\t\x12\x36\n\x06labels\x18\x02 \x03(\x0b\x32&.UpsertWorkerLabelsRequest.LabelsEntry\x1a<\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1c\n\x05value\x18\x02 \x01(\x0b\x32\r.WorkerLabels:\x02\x38\x01\"@\n\x1aUpsertWorkerLabelsResponse\x12\x10\n\x08tenantId\x18\x01 \x01(\t\x12\x10\n\x08workerId\x18\x02 \x01(\t\"\xf6\x04\n\x0e\x41ssignedAction\x12\x10\n\x08tenantId\x18\x01 \x01(\t\x12\x15\n\rworkflowRunId\x18\x02 \x01(\t\x12\x18\n\x10getGroupKeyRunId\x18\x03 \x01(\t\x12\r\n\x05jobId\x18\x04 \x01(\t\x12\x0f\n\x07jobName\x18\x05 \x01(\t\x12\x10\n\x08jobRunId\x18\x06 \x01(\t\x12\x0e\n\x06stepId\x18\x07 \x01(\t\x12\x11\n\tstepRunId\x18\x08 \x01(\t\x12\x10\n\x08\x61\x63tionId\x18\t \x01(\t\x12\x1f\n\nactionType\x18\n \x01(\x0e\x32\x0b.ActionType\x12\x15\n\ractionPayload\x18\x0b \x01(\t\x12\x10\n\x08stepName\x18\x0c \x01(\t\x12\x12\n\nretryCount\x18\r \x01(\x05\x12 \n\x13\x61\x64\x64itional_metadata\x18\x0e \x01(\tH\x00\x88\x01\x01\x12!\n\x14\x63hild_workflow_index\x18\x0f \x01(\x05H\x01\x88\x01\x01\x12\x1f\n\x12\x63hild_workflow_key\x18\x10 \x01(\tH\x02\x88\x01\x01\x12#\n\x16parent_workflow_run_id\x18\x11 \x01(\tH\x03\x88\x01\x01\x12\x10\n\x08priority\x18\x12 \x01(\x05\x12\x17\n\nworkflowId\x18\x13 \x01(\tH\x04\x88\x01\x01\x12\x1e\n\x11workflowVersionId\x18\x14 \x01(\tH\x05\x88\x01\x01\x42\x16\n\x14_additional_metadataB\x17\n\x15_child_workflow_indexB\x15\n\x13_child_workflow_keyB\x19\n\x17_parent_workflow_run_idB\r\n\x0b_workflowIdB\x14\n\x12_workflowVersionId\"\'\n\x13WorkerListenRequest\x12\x10\n\x08workerId\x18\x01 \x01(\t\",\n\x18WorkerUnsubscribeRequest\x12\x10\n\x08workerId\x18\x01 \x01(\t\"?\n\x19WorkerUnsubscribeResponse\x12\x10\n\x08tenantId\x18\x01 \x01(\t\x12\x10\n\x08workerId\x18\x02 \x01(\t\"\xe1\x01\n\x13GroupKeyActionEvent\x12\x10\n\x08workerId\x18\x01 \x01(\t\x12\x15\n\rworkflowRunId\x18\x02 \x01(\t\x12\x18\n\x10getGroupKeyRunId\x18\x03 \x01(\t\x12\x10\n\x08\x61\x63tionId\x18\x04 \x01(\t\x12\x32\n\x0e\x65ventTimestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\teventType\x18\x06 \x01(\x0e\x32\x18.GroupKeyActionEventType\x12\x14\n\x0c\x65ventPayload\x18\x07 \x01(\t\"\xc4\x02\n\x0fStepActionEvent\x12\x10\n\x08workerId\x18\x01 \x01(\t\x12\r\n\x05jobId\x18\x02 \x01(\t\x12\x10\n\x08jobRunId\x18\x03 \x01(\t\x12\x0e\n\x06stepId\x18\x04 \x01(\t\x12\x11\n\tstepRunId\x18\x05 \x01(\t\x12\x10\n\x08\x61\x63tionId\x18\x06 \x01(\t\x12\x32\n\x0e\x65ventTimestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\teventType\x18\x08 \x01(\x0e\x32\x14.StepActionEventType\x12\x14\n\x0c\x65ventPayload\x18\t \x01(\t\x12\x17\n\nretryCount\x18\n \x01(\x05H\x00\x88\x01\x01\x12\x1b\n\x0eshouldNotRetry\x18\x0b \x01(\x08H\x01\x88\x01\x01\x42\r\n\x0b_retryCountB\x11\n\x0f_shouldNotRetry\"9\n\x13\x41\x63tionEventResponse\x12\x10\n\x08tenantId\x18\x01 \x01(\t\x12\x10\n\x08workerId\x18\x02 \x01(\t\"\xc0\x01\n SubscribeToWorkflowEventsRequest\x12\x1a\n\rworkflowRunId\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1e\n\x11\x61\x64\x64itionalMetaKey\x18\x02 \x01(\tH\x01\x88\x01\x01\x12 \n\x13\x61\x64\x64itionalMetaValue\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x10\n\x0e_workflowRunIdB\x14\n\x12_additionalMetaKeyB\x16\n\x14_additionalMetaValue\"7\n\x1eSubscribeToWorkflowRunsRequest\x12\x15\n\rworkflowRunId\x18\x01 \x01(\t\"\xb2\x02\n\rWorkflowEvent\x12\x15\n\rworkflowRunId\x18\x01 \x01(\t\x12#\n\x0cresourceType\x18\x02 \x01(\x0e\x32\r.ResourceType\x12%\n\teventType\x18\x03 \x01(\x0e\x32\x12.ResourceEventType\x12\x12\n\nresourceId\x18\x04 \x01(\t\x12\x32\n\x0e\x65ventTimestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x0c\x65ventPayload\x18\x06 \x01(\t\x12\x0e\n\x06hangup\x18\x07 \x01(\x08\x12\x18\n\x0bstepRetries\x18\x08 \x01(\x05H\x00\x88\x01\x01\x12\x17\n\nretryCount\x18\t \x01(\x05H\x01\x88\x01\x01\x42\x0e\n\x0c_stepRetriesB\r\n\x0b_retryCount\"\xa8\x01\n\x10WorkflowRunEvent\x12\x15\n\rworkflowRunId\x18\x01 \x01(\t\x12(\n\teventType\x18\x02 \x01(\x0e\x32\x15.WorkflowRunEventType\x12\x32\n\x0e\x65ventTimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1f\n\x07results\x18\x04 \x03(\x0b\x32\x0e.StepRunResult\"\x8a\x01\n\rStepRunResult\x12\x11\n\tstepRunId\x18\x01 \x01(\t\x12\x16\n\x0estepReadableId\x18\x02 \x01(\t\x12\x10\n\x08jobRunId\x18\x03 \x01(\t\x12\x12\n\x05\x65rror\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06output\x18\x05 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_errorB\t\n\x07_output\"W\n\rOverridesData\x12\x11\n\tstepRunId\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x12\x16\n\x0e\x63\x61llerFilename\x18\x04 \x01(\t\"\x17\n\x15OverridesDataResponse\"U\n\x10HeartbeatRequest\x12\x10\n\x08workerId\x18\x01 \x01(\t\x12/\n\x0bheartbeatAt\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x13\n\x11HeartbeatResponse\"F\n\x15RefreshTimeoutRequest\x12\x11\n\tstepRunId\x18\x01 \x01(\t\x12\x1a\n\x12incrementTimeoutBy\x18\x02 \x01(\t\"G\n\x16RefreshTimeoutResponse\x12-\n\ttimeoutAt\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\'\n\x12ReleaseSlotRequest\x12\x11\n\tstepRunId\x18\x01 \x01(\t\"\x15\n\x13ReleaseSlotResponse*7\n\x04SDKS\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x06\n\x02GO\x10\x01\x12\n\n\x06PYTHON\x10\x02\x12\x0e\n\nTYPESCRIPT\x10\x03*N\n\nActionType\x12\x12\n\x0eSTART_STEP_RUN\x10\x00\x12\x13\n\x0f\x43\x41NCEL_STEP_RUN\x10\x01\x12\x17\n\x13START_GET_GROUP_KEY\x10\x02*\xa2\x01\n\x17GroupKeyActionEventType\x12 \n\x1cGROUP_KEY_EVENT_TYPE_UNKNOWN\x10\x00\x12 \n\x1cGROUP_KEY_EVENT_TYPE_STARTED\x10\x01\x12\"\n\x1eGROUP_KEY_EVENT_TYPE_COMPLETED\x10\x02\x12\x1f\n\x1bGROUP_KEY_EVENT_TYPE_FAILED\x10\x03*\xac\x01\n\x13StepActionEventType\x12\x1b\n\x17STEP_EVENT_TYPE_UNKNOWN\x10\x00\x12\x1b\n\x17STEP_EVENT_TYPE_STARTED\x10\x01\x12\x1d\n\x19STEP_EVENT_TYPE_COMPLETED\x10\x02\x12\x1a\n\x16STEP_EVENT_TYPE_FAILED\x10\x03\x12 \n\x1cSTEP_EVENT_TYPE_ACKNOWLEDGED\x10\x04*e\n\x0cResourceType\x12\x19\n\x15RESOURCE_TYPE_UNKNOWN\x10\x00\x12\x1a\n\x16RESOURCE_TYPE_STEP_RUN\x10\x01\x12\x1e\n\x1aRESOURCE_TYPE_WORKFLOW_RUN\x10\x02*\xfe\x01\n\x11ResourceEventType\x12\x1f\n\x1bRESOURCE_EVENT_TYPE_UNKNOWN\x10\x00\x12\x1f\n\x1bRESOURCE_EVENT_TYPE_STARTED\x10\x01\x12!\n\x1dRESOURCE_EVENT_TYPE_COMPLETED\x10\x02\x12\x1e\n\x1aRESOURCE_EVENT_TYPE_FAILED\x10\x03\x12!\n\x1dRESOURCE_EVENT_TYPE_CANCELLED\x10\x04\x12!\n\x1dRESOURCE_EVENT_TYPE_TIMED_OUT\x10\x05\x12\x1e\n\x1aRESOURCE_EVENT_TYPE_STREAM\x10\x06*<\n\x14WorkflowRunEventType\x12$\n WORKFLOW_RUN_EVENT_TYPE_FINISHED\x10\x00\x32\xf8\x06\n\nDispatcher\x12=\n\x08Register\x12\x16.WorkerRegisterRequest\x1a\x17.WorkerRegisterResponse\"\x00\x12\x33\n\x06Listen\x12\x14.WorkerListenRequest\x1a\x0f.AssignedAction\"\x00\x30\x01\x12\x35\n\x08ListenV2\x12\x14.WorkerListenRequest\x1a\x0f.AssignedAction\"\x00\x30\x01\x12\x34\n\tHeartbeat\x12\x11.HeartbeatRequest\x1a\x12.HeartbeatResponse\"\x00\x12R\n\x19SubscribeToWorkflowEvents\x12!.SubscribeToWorkflowEventsRequest\x1a\x0e.WorkflowEvent\"\x00\x30\x01\x12S\n\x17SubscribeToWorkflowRuns\x12\x1f.SubscribeToWorkflowRunsRequest\x1a\x11.WorkflowRunEvent\"\x00(\x01\x30\x01\x12?\n\x13SendStepActionEvent\x12\x10.StepActionEvent\x1a\x14.ActionEventResponse\"\x00\x12G\n\x17SendGroupKeyActionEvent\x12\x14.GroupKeyActionEvent\x1a\x14.ActionEventResponse\"\x00\x12<\n\x10PutOverridesData\x12\x0e.OverridesData\x1a\x16.OverridesDataResponse\"\x00\x12\x46\n\x0bUnsubscribe\x12\x19.WorkerUnsubscribeRequest\x1a\x1a.WorkerUnsubscribeResponse\"\x00\x12\x43\n\x0eRefreshTimeout\x12\x16.RefreshTimeoutRequest\x1a\x17.RefreshTimeoutResponse\"\x00\x12:\n\x0bReleaseSlot\x12\x13.ReleaseSlotRequest\x1a\x14.ReleaseSlotResponse\"\x00\x12O\n\x12UpsertWorkerLabels\x12\x1a.UpsertWorkerLabelsRequest\x1a\x1b.UpsertWorkerLabelsResponse\"\x00\x42GZEgithub.com/hatchet-dev/hatchet/internal/services/dispatcher/contractsb\x06proto3')
|
|
19
19
|
|
|
20
20
|
_globals = globals()
|
|
21
21
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -27,20 +27,20 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
|
27
27
|
_globals['_WORKERREGISTERREQUEST_LABELSENTRY']._serialized_options = b'8\001'
|
|
28
28
|
_globals['_UPSERTWORKERLABELSREQUEST_LABELSENTRY']._loaded_options = None
|
|
29
29
|
_globals['_UPSERTWORKERLABELSREQUEST_LABELSENTRY']._serialized_options = b'8\001'
|
|
30
|
-
_globals['_SDKS']._serialized_start=
|
|
31
|
-
_globals['_SDKS']._serialized_end=
|
|
32
|
-
_globals['_ACTIONTYPE']._serialized_start=
|
|
33
|
-
_globals['_ACTIONTYPE']._serialized_end=
|
|
34
|
-
_globals['_GROUPKEYACTIONEVENTTYPE']._serialized_start=
|
|
35
|
-
_globals['_GROUPKEYACTIONEVENTTYPE']._serialized_end=
|
|
36
|
-
_globals['_STEPACTIONEVENTTYPE']._serialized_start=
|
|
37
|
-
_globals['_STEPACTIONEVENTTYPE']._serialized_end=
|
|
38
|
-
_globals['_RESOURCETYPE']._serialized_start=
|
|
39
|
-
_globals['_RESOURCETYPE']._serialized_end=
|
|
40
|
-
_globals['_RESOURCEEVENTTYPE']._serialized_start=
|
|
41
|
-
_globals['_RESOURCEEVENTTYPE']._serialized_end=
|
|
42
|
-
_globals['_WORKFLOWRUNEVENTTYPE']._serialized_start=
|
|
43
|
-
_globals['_WORKFLOWRUNEVENTTYPE']._serialized_end=
|
|
30
|
+
_globals['_SDKS']._serialized_start=3684
|
|
31
|
+
_globals['_SDKS']._serialized_end=3739
|
|
32
|
+
_globals['_ACTIONTYPE']._serialized_start=3741
|
|
33
|
+
_globals['_ACTIONTYPE']._serialized_end=3819
|
|
34
|
+
_globals['_GROUPKEYACTIONEVENTTYPE']._serialized_start=3822
|
|
35
|
+
_globals['_GROUPKEYACTIONEVENTTYPE']._serialized_end=3984
|
|
36
|
+
_globals['_STEPACTIONEVENTTYPE']._serialized_start=3987
|
|
37
|
+
_globals['_STEPACTIONEVENTTYPE']._serialized_end=4159
|
|
38
|
+
_globals['_RESOURCETYPE']._serialized_start=4161
|
|
39
|
+
_globals['_RESOURCETYPE']._serialized_end=4262
|
|
40
|
+
_globals['_RESOURCEEVENTTYPE']._serialized_start=4265
|
|
41
|
+
_globals['_RESOURCEEVENTTYPE']._serialized_end=4519
|
|
42
|
+
_globals['_WORKFLOWRUNEVENTTYPE']._serialized_start=4521
|
|
43
|
+
_globals['_WORKFLOWRUNEVENTTYPE']._serialized_end=4581
|
|
44
44
|
_globals['_WORKERLABELS']._serialized_start=53
|
|
45
45
|
_globals['_WORKERLABELS']._serialized_end=139
|
|
46
46
|
_globals['_RUNTIMEINFO']._serialized_start=142
|
|
@@ -58,45 +58,45 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
|
58
58
|
_globals['_UPSERTWORKERLABELSRESPONSE']._serialized_start=915
|
|
59
59
|
_globals['_UPSERTWORKERLABELSRESPONSE']._serialized_end=979
|
|
60
60
|
_globals['_ASSIGNEDACTION']._serialized_start=982
|
|
61
|
-
_globals['_ASSIGNEDACTION']._serialized_end=
|
|
62
|
-
_globals['_WORKERLISTENREQUEST']._serialized_start=
|
|
63
|
-
_globals['_WORKERLISTENREQUEST']._serialized_end=
|
|
64
|
-
_globals['_WORKERUNSUBSCRIBEREQUEST']._serialized_start=
|
|
65
|
-
_globals['_WORKERUNSUBSCRIBEREQUEST']._serialized_end=
|
|
66
|
-
_globals['_WORKERUNSUBSCRIBERESPONSE']._serialized_start=
|
|
67
|
-
_globals['_WORKERUNSUBSCRIBERESPONSE']._serialized_end=
|
|
68
|
-
_globals['_GROUPKEYACTIONEVENT']._serialized_start=
|
|
69
|
-
_globals['_GROUPKEYACTIONEVENT']._serialized_end=
|
|
70
|
-
_globals['_STEPACTIONEVENT']._serialized_start=
|
|
71
|
-
_globals['_STEPACTIONEVENT']._serialized_end=
|
|
72
|
-
_globals['_ACTIONEVENTRESPONSE']._serialized_start=
|
|
73
|
-
_globals['_ACTIONEVENTRESPONSE']._serialized_end=
|
|
74
|
-
_globals['_SUBSCRIBETOWORKFLOWEVENTSREQUEST']._serialized_start=
|
|
75
|
-
_globals['_SUBSCRIBETOWORKFLOWEVENTSREQUEST']._serialized_end=
|
|
76
|
-
_globals['_SUBSCRIBETOWORKFLOWRUNSREQUEST']._serialized_start=
|
|
77
|
-
_globals['_SUBSCRIBETOWORKFLOWRUNSREQUEST']._serialized_end=
|
|
78
|
-
_globals['_WORKFLOWEVENT']._serialized_start=
|
|
79
|
-
_globals['_WORKFLOWEVENT']._serialized_end=
|
|
80
|
-
_globals['_WORKFLOWRUNEVENT']._serialized_start=
|
|
81
|
-
_globals['_WORKFLOWRUNEVENT']._serialized_end=
|
|
82
|
-
_globals['_STEPRUNRESULT']._serialized_start=
|
|
83
|
-
_globals['_STEPRUNRESULT']._serialized_end=
|
|
84
|
-
_globals['_OVERRIDESDATA']._serialized_start=
|
|
85
|
-
_globals['_OVERRIDESDATA']._serialized_end=
|
|
86
|
-
_globals['_OVERRIDESDATARESPONSE']._serialized_start=
|
|
87
|
-
_globals['_OVERRIDESDATARESPONSE']._serialized_end=
|
|
88
|
-
_globals['_HEARTBEATREQUEST']._serialized_start=
|
|
89
|
-
_globals['_HEARTBEATREQUEST']._serialized_end=
|
|
90
|
-
_globals['_HEARTBEATRESPONSE']._serialized_start=
|
|
91
|
-
_globals['_HEARTBEATRESPONSE']._serialized_end=
|
|
92
|
-
_globals['_REFRESHTIMEOUTREQUEST']._serialized_start=
|
|
93
|
-
_globals['_REFRESHTIMEOUTREQUEST']._serialized_end=
|
|
94
|
-
_globals['_REFRESHTIMEOUTRESPONSE']._serialized_start=
|
|
95
|
-
_globals['_REFRESHTIMEOUTRESPONSE']._serialized_end=
|
|
96
|
-
_globals['_RELEASESLOTREQUEST']._serialized_start=
|
|
97
|
-
_globals['_RELEASESLOTREQUEST']._serialized_end=
|
|
98
|
-
_globals['_RELEASESLOTRESPONSE']._serialized_start=
|
|
99
|
-
_globals['_RELEASESLOTRESPONSE']._serialized_end=
|
|
100
|
-
_globals['_DISPATCHER']._serialized_start=
|
|
101
|
-
_globals['_DISPATCHER']._serialized_end=
|
|
61
|
+
_globals['_ASSIGNEDACTION']._serialized_end=1612
|
|
62
|
+
_globals['_WORKERLISTENREQUEST']._serialized_start=1614
|
|
63
|
+
_globals['_WORKERLISTENREQUEST']._serialized_end=1653
|
|
64
|
+
_globals['_WORKERUNSUBSCRIBEREQUEST']._serialized_start=1655
|
|
65
|
+
_globals['_WORKERUNSUBSCRIBEREQUEST']._serialized_end=1699
|
|
66
|
+
_globals['_WORKERUNSUBSCRIBERESPONSE']._serialized_start=1701
|
|
67
|
+
_globals['_WORKERUNSUBSCRIBERESPONSE']._serialized_end=1764
|
|
68
|
+
_globals['_GROUPKEYACTIONEVENT']._serialized_start=1767
|
|
69
|
+
_globals['_GROUPKEYACTIONEVENT']._serialized_end=1992
|
|
70
|
+
_globals['_STEPACTIONEVENT']._serialized_start=1995
|
|
71
|
+
_globals['_STEPACTIONEVENT']._serialized_end=2319
|
|
72
|
+
_globals['_ACTIONEVENTRESPONSE']._serialized_start=2321
|
|
73
|
+
_globals['_ACTIONEVENTRESPONSE']._serialized_end=2378
|
|
74
|
+
_globals['_SUBSCRIBETOWORKFLOWEVENTSREQUEST']._serialized_start=2381
|
|
75
|
+
_globals['_SUBSCRIBETOWORKFLOWEVENTSREQUEST']._serialized_end=2573
|
|
76
|
+
_globals['_SUBSCRIBETOWORKFLOWRUNSREQUEST']._serialized_start=2575
|
|
77
|
+
_globals['_SUBSCRIBETOWORKFLOWRUNSREQUEST']._serialized_end=2630
|
|
78
|
+
_globals['_WORKFLOWEVENT']._serialized_start=2633
|
|
79
|
+
_globals['_WORKFLOWEVENT']._serialized_end=2939
|
|
80
|
+
_globals['_WORKFLOWRUNEVENT']._serialized_start=2942
|
|
81
|
+
_globals['_WORKFLOWRUNEVENT']._serialized_end=3110
|
|
82
|
+
_globals['_STEPRUNRESULT']._serialized_start=3113
|
|
83
|
+
_globals['_STEPRUNRESULT']._serialized_end=3251
|
|
84
|
+
_globals['_OVERRIDESDATA']._serialized_start=3253
|
|
85
|
+
_globals['_OVERRIDESDATA']._serialized_end=3340
|
|
86
|
+
_globals['_OVERRIDESDATARESPONSE']._serialized_start=3342
|
|
87
|
+
_globals['_OVERRIDESDATARESPONSE']._serialized_end=3365
|
|
88
|
+
_globals['_HEARTBEATREQUEST']._serialized_start=3367
|
|
89
|
+
_globals['_HEARTBEATREQUEST']._serialized_end=3452
|
|
90
|
+
_globals['_HEARTBEATRESPONSE']._serialized_start=3454
|
|
91
|
+
_globals['_HEARTBEATRESPONSE']._serialized_end=3473
|
|
92
|
+
_globals['_REFRESHTIMEOUTREQUEST']._serialized_start=3475
|
|
93
|
+
_globals['_REFRESHTIMEOUTREQUEST']._serialized_end=3545
|
|
94
|
+
_globals['_REFRESHTIMEOUTRESPONSE']._serialized_start=3547
|
|
95
|
+
_globals['_REFRESHTIMEOUTRESPONSE']._serialized_end=3618
|
|
96
|
+
_globals['_RELEASESLOTREQUEST']._serialized_start=3620
|
|
97
|
+
_globals['_RELEASESLOTREQUEST']._serialized_end=3659
|
|
98
|
+
_globals['_RELEASESLOTRESPONSE']._serialized_start=3661
|
|
99
|
+
_globals['_RELEASESLOTRESPONSE']._serialized_end=3682
|
|
100
|
+
_globals['_DISPATCHER']._serialized_start=4584
|
|
101
|
+
_globals['_DISPATCHER']._serialized_end=5472
|
|
102
102
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -163,7 +163,7 @@ class UpsertWorkerLabelsResponse(_message.Message):
|
|
|
163
163
|
def __init__(self, tenantId: _Optional[str] = ..., workerId: _Optional[str] = ...) -> None: ...
|
|
164
164
|
|
|
165
165
|
class AssignedAction(_message.Message):
|
|
166
|
-
__slots__ = ("tenantId", "workflowRunId", "getGroupKeyRunId", "jobId", "jobName", "jobRunId", "stepId", "stepRunId", "actionId", "actionType", "actionPayload", "stepName", "retryCount", "additional_metadata", "child_workflow_index", "child_workflow_key", "parent_workflow_run_id", "priority")
|
|
166
|
+
__slots__ = ("tenantId", "workflowRunId", "getGroupKeyRunId", "jobId", "jobName", "jobRunId", "stepId", "stepRunId", "actionId", "actionType", "actionPayload", "stepName", "retryCount", "additional_metadata", "child_workflow_index", "child_workflow_key", "parent_workflow_run_id", "priority", "workflowId", "workflowVersionId")
|
|
167
167
|
TENANTID_FIELD_NUMBER: _ClassVar[int]
|
|
168
168
|
WORKFLOWRUNID_FIELD_NUMBER: _ClassVar[int]
|
|
169
169
|
GETGROUPKEYRUNID_FIELD_NUMBER: _ClassVar[int]
|
|
@@ -182,6 +182,8 @@ class AssignedAction(_message.Message):
|
|
|
182
182
|
CHILD_WORKFLOW_KEY_FIELD_NUMBER: _ClassVar[int]
|
|
183
183
|
PARENT_WORKFLOW_RUN_ID_FIELD_NUMBER: _ClassVar[int]
|
|
184
184
|
PRIORITY_FIELD_NUMBER: _ClassVar[int]
|
|
185
|
+
WORKFLOWID_FIELD_NUMBER: _ClassVar[int]
|
|
186
|
+
WORKFLOWVERSIONID_FIELD_NUMBER: _ClassVar[int]
|
|
185
187
|
tenantId: str
|
|
186
188
|
workflowRunId: str
|
|
187
189
|
getGroupKeyRunId: str
|
|
@@ -200,7 +202,9 @@ class AssignedAction(_message.Message):
|
|
|
200
202
|
child_workflow_key: str
|
|
201
203
|
parent_workflow_run_id: str
|
|
202
204
|
priority: int
|
|
203
|
-
|
|
205
|
+
workflowId: str
|
|
206
|
+
workflowVersionId: str
|
|
207
|
+
def __init__(self, tenantId: _Optional[str] = ..., workflowRunId: _Optional[str] = ..., getGroupKeyRunId: _Optional[str] = ..., jobId: _Optional[str] = ..., jobName: _Optional[str] = ..., jobRunId: _Optional[str] = ..., stepId: _Optional[str] = ..., stepRunId: _Optional[str] = ..., actionId: _Optional[str] = ..., actionType: _Optional[_Union[ActionType, str]] = ..., actionPayload: _Optional[str] = ..., stepName: _Optional[str] = ..., retryCount: _Optional[int] = ..., additional_metadata: _Optional[str] = ..., child_workflow_index: _Optional[int] = ..., child_workflow_key: _Optional[str] = ..., parent_workflow_run_id: _Optional[str] = ..., priority: _Optional[int] = ..., workflowId: _Optional[str] = ..., workflowVersionId: _Optional[str] = ...) -> None: ...
|
|
204
208
|
|
|
205
209
|
class WorkerListenRequest(_message.Message):
|
|
206
210
|
__slots__ = ("workerId",)
|
hatchet_sdk/hatchet.py
CHANGED
|
@@ -32,6 +32,7 @@ from hatchet_sdk.runnables.types import (
|
|
|
32
32
|
)
|
|
33
33
|
from hatchet_sdk.runnables.workflow import BaseWorkflow, Workflow
|
|
34
34
|
from hatchet_sdk.utils.timedelta_to_expression import Duration
|
|
35
|
+
from hatchet_sdk.utils.typing import CoroutineLike
|
|
35
36
|
from hatchet_sdk.worker.worker import LifespanFn, Worker
|
|
36
37
|
|
|
37
38
|
|
|
@@ -300,7 +301,10 @@ class Hatchet:
|
|
|
300
301
|
desired_worker_labels: dict[str, DesiredWorkerLabel] = {},
|
|
301
302
|
backoff_factor: float | None = None,
|
|
302
303
|
backoff_max_seconds: int | None = None,
|
|
303
|
-
) -> Callable[
|
|
304
|
+
) -> Callable[
|
|
305
|
+
[Callable[[EmptyModel, Context], R | CoroutineLike[R]]],
|
|
306
|
+
Standalone[EmptyModel, R],
|
|
307
|
+
]: ...
|
|
304
308
|
|
|
305
309
|
@overload
|
|
306
310
|
def task(
|
|
@@ -323,7 +327,8 @@ class Hatchet:
|
|
|
323
327
|
backoff_factor: float | None = None,
|
|
324
328
|
backoff_max_seconds: int | None = None,
|
|
325
329
|
) -> Callable[
|
|
326
|
-
[Callable[[TWorkflowInput, Context], R
|
|
330
|
+
[Callable[[TWorkflowInput, Context], R | CoroutineLike[R]]],
|
|
331
|
+
Standalone[TWorkflowInput, R],
|
|
327
332
|
]: ...
|
|
328
333
|
|
|
329
334
|
def task(
|
|
@@ -346,9 +351,13 @@ class Hatchet:
|
|
|
346
351
|
backoff_factor: float | None = None,
|
|
347
352
|
backoff_max_seconds: int | None = None,
|
|
348
353
|
) -> (
|
|
349
|
-
Callable[
|
|
354
|
+
Callable[
|
|
355
|
+
[Callable[[EmptyModel, Context], R | CoroutineLike[R]]],
|
|
356
|
+
Standalone[EmptyModel, R],
|
|
357
|
+
]
|
|
350
358
|
| Callable[
|
|
351
|
-
[Callable[[TWorkflowInput, Context], R
|
|
359
|
+
[Callable[[TWorkflowInput, Context], R | CoroutineLike[R]]],
|
|
360
|
+
Standalone[TWorkflowInput, R],
|
|
352
361
|
]
|
|
353
362
|
):
|
|
354
363
|
"""
|
|
@@ -426,7 +435,7 @@ class Hatchet:
|
|
|
426
435
|
)
|
|
427
436
|
|
|
428
437
|
def inner(
|
|
429
|
-
func: Callable[[TWorkflowInput, Context], R]
|
|
438
|
+
func: Callable[[TWorkflowInput, Context], R | CoroutineLike[R]],
|
|
430
439
|
) -> Standalone[TWorkflowInput, R]:
|
|
431
440
|
created_task = task_wrapper(func)
|
|
432
441
|
|
|
@@ -458,7 +467,8 @@ class Hatchet:
|
|
|
458
467
|
backoff_factor: float | None = None,
|
|
459
468
|
backoff_max_seconds: int | None = None,
|
|
460
469
|
) -> Callable[
|
|
461
|
-
[Callable[[EmptyModel, DurableContext], R
|
|
470
|
+
[Callable[[EmptyModel, DurableContext], R | CoroutineLike[R]]],
|
|
471
|
+
Standalone[EmptyModel, R],
|
|
462
472
|
]: ...
|
|
463
473
|
|
|
464
474
|
@overload
|
|
@@ -482,7 +492,8 @@ class Hatchet:
|
|
|
482
492
|
backoff_factor: float | None = None,
|
|
483
493
|
backoff_max_seconds: int | None = None,
|
|
484
494
|
) -> Callable[
|
|
485
|
-
[Callable[[TWorkflowInput, DurableContext], R
|
|
495
|
+
[Callable[[TWorkflowInput, DurableContext], R | CoroutineLike[R]]],
|
|
496
|
+
Standalone[TWorkflowInput, R],
|
|
486
497
|
]: ...
|
|
487
498
|
|
|
488
499
|
def durable_task(
|
|
@@ -505,9 +516,12 @@ class Hatchet:
|
|
|
505
516
|
backoff_factor: float | None = None,
|
|
506
517
|
backoff_max_seconds: int | None = None,
|
|
507
518
|
) -> (
|
|
508
|
-
Callable[
|
|
519
|
+
Callable[
|
|
520
|
+
[Callable[[EmptyModel, DurableContext], R | CoroutineLike[R]]],
|
|
521
|
+
Standalone[EmptyModel, R],
|
|
522
|
+
]
|
|
509
523
|
| Callable[
|
|
510
|
-
[Callable[[TWorkflowInput, DurableContext], R]],
|
|
524
|
+
[Callable[[TWorkflowInput, DurableContext], R | CoroutineLike[R]]],
|
|
511
525
|
Standalone[TWorkflowInput, R],
|
|
512
526
|
]
|
|
513
527
|
):
|
|
@@ -579,7 +593,7 @@ class Hatchet:
|
|
|
579
593
|
)
|
|
580
594
|
|
|
581
595
|
def inner(
|
|
582
|
-
func: Callable[[TWorkflowInput, DurableContext], R]
|
|
596
|
+
func: Callable[[TWorkflowInput, DurableContext], R | CoroutineLike[R]],
|
|
583
597
|
) -> Standalone[TWorkflowInput, R]:
|
|
584
598
|
created_task = task_wrapper(func)
|
|
585
599
|
|
hatchet_sdk/runnables/task.py
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
from datetime import timedelta
|
|
2
|
-
from typing import
|
|
3
|
-
TYPE_CHECKING,
|
|
4
|
-
Any,
|
|
5
|
-
Awaitable,
|
|
6
|
-
Callable,
|
|
7
|
-
Generic,
|
|
8
|
-
Union,
|
|
9
|
-
cast,
|
|
10
|
-
get_type_hints,
|
|
11
|
-
)
|
|
2
|
+
from typing import TYPE_CHECKING, Any, Callable, Generic, Union, cast, get_type_hints
|
|
12
3
|
|
|
13
4
|
from hatchet_sdk.context.context import Context, DurableContext
|
|
14
5
|
from hatchet_sdk.contracts.v1.shared.condition_pb2 import TaskConditions
|
|
@@ -27,7 +18,12 @@ from hatchet_sdk.runnables.types import (
|
|
|
27
18
|
is_sync_fn,
|
|
28
19
|
)
|
|
29
20
|
from hatchet_sdk.utils.timedelta_to_expression import Duration, timedelta_to_expr
|
|
30
|
-
from hatchet_sdk.utils.typing import
|
|
21
|
+
from hatchet_sdk.utils.typing import (
|
|
22
|
+
AwaitableLike,
|
|
23
|
+
CoroutineLike,
|
|
24
|
+
TaskIOValidator,
|
|
25
|
+
is_basemodel_subclass,
|
|
26
|
+
)
|
|
31
27
|
from hatchet_sdk.waits import (
|
|
32
28
|
Action,
|
|
33
29
|
Condition,
|
|
@@ -45,10 +41,10 @@ class Task(Generic[TWorkflowInput, R]):
|
|
|
45
41
|
def __init__(
|
|
46
42
|
self,
|
|
47
43
|
_fn: Union[
|
|
48
|
-
Callable[[TWorkflowInput, Context], R]
|
|
49
|
-
| Callable[[TWorkflowInput, Context],
|
|
50
|
-
Callable[[TWorkflowInput, DurableContext], R]
|
|
51
|
-
| Callable[[TWorkflowInput, DurableContext],
|
|
44
|
+
Callable[[TWorkflowInput, Context], R | CoroutineLike[R]]
|
|
45
|
+
| Callable[[TWorkflowInput, Context], AwaitableLike[R]],
|
|
46
|
+
Callable[[TWorkflowInput, DurableContext], R | CoroutineLike[R]]
|
|
47
|
+
| Callable[[TWorkflowInput, DurableContext], AwaitableLike[R]],
|
|
52
48
|
],
|
|
53
49
|
is_durable: bool,
|
|
54
50
|
type: StepType,
|
hatchet_sdk/runnables/types.py
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
from enum import Enum
|
|
3
|
-
from typing import Any,
|
|
3
|
+
from typing import Any, Callable, ParamSpec, Type, TypeGuard, TypeVar, Union
|
|
4
4
|
|
|
5
5
|
from pydantic import BaseModel, ConfigDict, Field
|
|
6
6
|
|
|
7
7
|
from hatchet_sdk.context.context import Context, DurableContext
|
|
8
8
|
from hatchet_sdk.contracts.v1.workflows_pb2 import Concurrency
|
|
9
9
|
from hatchet_sdk.utils.timedelta_to_expression import Duration
|
|
10
|
-
from hatchet_sdk.utils.typing import JSONSerializableMapping
|
|
10
|
+
from hatchet_sdk.utils.typing import AwaitableLike, JSONSerializableMapping
|
|
11
11
|
|
|
12
12
|
ValidTaskReturnType = Union[BaseModel, JSONSerializableMapping, None]
|
|
13
13
|
|
|
14
|
-
R = TypeVar("R", bound=
|
|
14
|
+
R = TypeVar("R", bound=ValidTaskReturnType)
|
|
15
15
|
P = ParamSpec("P")
|
|
16
16
|
|
|
17
17
|
|
|
@@ -87,7 +87,7 @@ class StepType(str, Enum):
|
|
|
87
87
|
ON_SUCCESS = "on_success"
|
|
88
88
|
|
|
89
89
|
|
|
90
|
-
AsyncFunc = Callable[[TWorkflowInput, Context],
|
|
90
|
+
AsyncFunc = Callable[[TWorkflowInput, Context], AwaitableLike[R]]
|
|
91
91
|
SyncFunc = Callable[[TWorkflowInput, Context], R]
|
|
92
92
|
TaskFunc = Union[AsyncFunc[TWorkflowInput, R], SyncFunc[TWorkflowInput, R]]
|
|
93
93
|
|
|
@@ -104,7 +104,7 @@ def is_sync_fn(
|
|
|
104
104
|
return not asyncio.iscoroutinefunction(fn)
|
|
105
105
|
|
|
106
106
|
|
|
107
|
-
DurableAsyncFunc = Callable[[TWorkflowInput, DurableContext],
|
|
107
|
+
DurableAsyncFunc = Callable[[TWorkflowInput, DurableContext], AwaitableLike[R]]
|
|
108
108
|
DurableSyncFunc = Callable[[TWorkflowInput, DurableContext], R]
|
|
109
109
|
DurableTaskFunc = Union[
|
|
110
110
|
DurableAsyncFunc[TWorkflowInput, R], DurableSyncFunc[TWorkflowInput, R]
|
|
@@ -35,7 +35,7 @@ from hatchet_sdk.runnables.types import (
|
|
|
35
35
|
)
|
|
36
36
|
from hatchet_sdk.utils.proto_enums import convert_python_enum_to_proto
|
|
37
37
|
from hatchet_sdk.utils.timedelta_to_expression import Duration
|
|
38
|
-
from hatchet_sdk.utils.typing import JSONSerializableMapping
|
|
38
|
+
from hatchet_sdk.utils.typing import CoroutineLike, JSONSerializableMapping
|
|
39
39
|
from hatchet_sdk.waits import Condition, OrGroup
|
|
40
40
|
from hatchet_sdk.workflow_run import WorkflowRunRef
|
|
41
41
|
|
|
@@ -545,10 +545,7 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
545
545
|
def _parse_task_name(
|
|
546
546
|
self,
|
|
547
547
|
name: str | None,
|
|
548
|
-
func:
|
|
549
|
-
Callable[[TWorkflowInput, Context], R]
|
|
550
|
-
| Callable[[TWorkflowInput, DurableContext], R]
|
|
551
|
-
),
|
|
548
|
+
func: Callable[..., Any],
|
|
552
549
|
) -> str:
|
|
553
550
|
non_null_name = name or func.__name__
|
|
554
551
|
|
|
@@ -569,7 +566,10 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
569
566
|
wait_for: list[Condition | OrGroup] = [],
|
|
570
567
|
skip_if: list[Condition | OrGroup] = [],
|
|
571
568
|
cancel_if: list[Condition | OrGroup] = [],
|
|
572
|
-
) -> Callable[
|
|
569
|
+
) -> Callable[
|
|
570
|
+
[Callable[[TWorkflowInput, Context], R | CoroutineLike[R]]],
|
|
571
|
+
Task[TWorkflowInput, R],
|
|
572
|
+
]:
|
|
573
573
|
"""
|
|
574
574
|
A decorator to transform a function into a Hatchet task that runs as part of a workflow.
|
|
575
575
|
|
|
@@ -612,7 +612,7 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
612
612
|
)
|
|
613
613
|
|
|
614
614
|
def inner(
|
|
615
|
-
func: Callable[[TWorkflowInput, Context], R]
|
|
615
|
+
func: Callable[[TWorkflowInput, Context], R | CoroutineLike[R]],
|
|
616
616
|
) -> Task[TWorkflowInput, R]:
|
|
617
617
|
task = Task(
|
|
618
618
|
_fn=func,
|
|
@@ -659,7 +659,8 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
659
659
|
skip_if: list[Condition | OrGroup] = [],
|
|
660
660
|
cancel_if: list[Condition | OrGroup] = [],
|
|
661
661
|
) -> Callable[
|
|
662
|
-
[Callable[[TWorkflowInput, DurableContext], R
|
|
662
|
+
[Callable[[TWorkflowInput, DurableContext], R | CoroutineLike[R]]],
|
|
663
|
+
Task[TWorkflowInput, R],
|
|
663
664
|
]:
|
|
664
665
|
"""
|
|
665
666
|
A decorator to transform a function into a durable Hatchet task that runs as part of a workflow.
|
|
@@ -707,7 +708,7 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
707
708
|
)
|
|
708
709
|
|
|
709
710
|
def inner(
|
|
710
|
-
func: Callable[[TWorkflowInput, DurableContext], R]
|
|
711
|
+
func: Callable[[TWorkflowInput, DurableContext], R | CoroutineLike[R]],
|
|
711
712
|
) -> Task[TWorkflowInput, R]:
|
|
712
713
|
task = Task(
|
|
713
714
|
_fn=func,
|
|
@@ -748,7 +749,10 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
748
749
|
backoff_factor: float | None = None,
|
|
749
750
|
backoff_max_seconds: int | None = None,
|
|
750
751
|
concurrency: list[ConcurrencyExpression] = [],
|
|
751
|
-
) -> Callable[
|
|
752
|
+
) -> Callable[
|
|
753
|
+
[Callable[[TWorkflowInput, Context], R | CoroutineLike[R]]],
|
|
754
|
+
Task[TWorkflowInput, R],
|
|
755
|
+
]:
|
|
752
756
|
"""
|
|
753
757
|
A decorator to transform a function into a Hatchet on-failure task that runs as the last step in a workflow that had at least one task fail.
|
|
754
758
|
|
|
@@ -772,7 +776,7 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
772
776
|
"""
|
|
773
777
|
|
|
774
778
|
def inner(
|
|
775
|
-
func: Callable[[TWorkflowInput, Context], R]
|
|
779
|
+
func: Callable[[TWorkflowInput, Context], R | CoroutineLike[R]],
|
|
776
780
|
) -> Task[TWorkflowInput, R]:
|
|
777
781
|
task = Task(
|
|
778
782
|
is_durable=False,
|
|
@@ -808,7 +812,10 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
808
812
|
backoff_factor: float | None = None,
|
|
809
813
|
backoff_max_seconds: int | None = None,
|
|
810
814
|
concurrency: list[ConcurrencyExpression] = [],
|
|
811
|
-
) -> Callable[
|
|
815
|
+
) -> Callable[
|
|
816
|
+
[Callable[[TWorkflowInput, Context], R | CoroutineLike[R]]],
|
|
817
|
+
Task[TWorkflowInput, R],
|
|
818
|
+
]:
|
|
812
819
|
"""
|
|
813
820
|
A decorator to transform a function into a Hatchet on-success task that runs as the last step in a workflow that had all upstream tasks succeed.
|
|
814
821
|
|
|
@@ -832,7 +839,7 @@ class Workflow(BaseWorkflow[TWorkflowInput]):
|
|
|
832
839
|
"""
|
|
833
840
|
|
|
834
841
|
def inner(
|
|
835
|
-
func: Callable[[TWorkflowInput, Context], R]
|
|
842
|
+
func: Callable[[TWorkflowInput, Context], R | CoroutineLike[R]],
|
|
836
843
|
) -> Task[TWorkflowInput, R]:
|
|
837
844
|
task = Task(
|
|
838
845
|
is_durable=False,
|
hatchet_sdk/utils/typing.py
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
import sys
|
|
2
|
+
from typing import (
|
|
3
|
+
Any,
|
|
4
|
+
Awaitable,
|
|
5
|
+
Coroutine,
|
|
6
|
+
Generator,
|
|
7
|
+
Mapping,
|
|
8
|
+
Type,
|
|
9
|
+
TypeAlias,
|
|
10
|
+
TypeGuard,
|
|
11
|
+
TypeVar,
|
|
12
|
+
)
|
|
2
13
|
|
|
3
14
|
from pydantic import BaseModel
|
|
4
15
|
|
|
@@ -16,3 +27,13 @@ class TaskIOValidator(BaseModel):
|
|
|
16
27
|
|
|
17
28
|
|
|
18
29
|
JSONSerializableMapping = Mapping[str, Any]
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
_T_co = TypeVar("_T_co", covariant=True)
|
|
33
|
+
|
|
34
|
+
if sys.version_info >= (3, 12):
|
|
35
|
+
AwaitableLike: TypeAlias = Awaitable[_T_co] # noqa: Y047
|
|
36
|
+
CoroutineLike: TypeAlias = Coroutine[Any, Any, _T_co] # noqa: Y047
|
|
37
|
+
else:
|
|
38
|
+
AwaitableLike: TypeAlias = Generator[Any, None, _T_co] | Awaitable[_T_co]
|
|
39
|
+
CoroutineLike: TypeAlias = Generator[Any, None, _T_co] | Coroutine[Any, Any, _T_co]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
hatchet_sdk/__init__.py,sha256=LUj6VyGVSHCYTQTaoyiVhjyJLOfv6gMCmb-s4hRyISM,10031
|
|
2
2
|
hatchet_sdk/client.py,sha256=tbOeMuaJmgpyYSQg8QUz_J4AdqRNvV9E0aEZpgsiZTE,2207
|
|
3
3
|
hatchet_sdk/clients/admin.py,sha256=7odhvNiRnCCXcmoOTPzbGePxnzDKJyU0yoEbyRWH_UA,17108
|
|
4
|
-
hatchet_sdk/clients/dispatcher/action_listener.py,sha256=
|
|
4
|
+
hatchet_sdk/clients/dispatcher/action_listener.py,sha256=5Kxo_GHzPlbGbMgZ_FYTOvAhIzmrDLj2g8P3qtg7xpM,17298
|
|
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
|
|
7
7
|
hatchet_sdk/clients/events.py,sha256=4l_xiBZN7R9sxK7PzPHRj6C7Mrg1xCP14AzkiQyzKZY,5483
|
|
@@ -223,10 +223,10 @@ hatchet_sdk/clients/v1/api_client.py,sha256=mJQUZ3cOxlFJiwWKK5F8jBxcpNZ7A2292Huc
|
|
|
223
223
|
hatchet_sdk/config.py,sha256=Jm-3ja29cpDf2MwfJAJSpL1qCLmYg_CPC29GhN-eUBY,3853
|
|
224
224
|
hatchet_sdk/connection.py,sha256=B5gT5NL9BBB5-l9U_cN6pMlraQk880rEYMnqaK_dgL0,2590
|
|
225
225
|
hatchet_sdk/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
226
|
-
hatchet_sdk/context/context.py,sha256=
|
|
226
|
+
hatchet_sdk/context/context.py,sha256=tWhrDwxUVxzYjL4aLa8hnxoIxDQUfCsCCal4lM8Mzzs,9279
|
|
227
227
|
hatchet_sdk/context/worker_context.py,sha256=OVcEWvdT_Kpd0nlg61VAPUgIPSFzSLs0aSrXWj-1GX4,974
|
|
228
|
-
hatchet_sdk/contracts/dispatcher_pb2.py,sha256=
|
|
229
|
-
hatchet_sdk/contracts/dispatcher_pb2.pyi,sha256=
|
|
228
|
+
hatchet_sdk/contracts/dispatcher_pb2.py,sha256=RGjX3aO_4x4jm0KPgGl20KmJpORqe_v9I4sQQsEpmfk,14711
|
|
229
|
+
hatchet_sdk/contracts/dispatcher_pb2.pyi,sha256=DROQIwGTmekIIE1ltYzZvSpRznu9dzB8tvfPA3b1QLQ,18811
|
|
230
230
|
hatchet_sdk/contracts/dispatcher_pb2_grpc.py,sha256=zJ4c0Z0-iJngrVEw51vmwQgP1c8aZhAkjcUJUpH6JQ0,24756
|
|
231
231
|
hatchet_sdk/contracts/events_pb2.py,sha256=sda_dHK2N7g8kmaZSNqfvUSvHaa-ro9IBw0Diu1PCE4,4074
|
|
232
232
|
hatchet_sdk/contracts/events_pb2.pyi,sha256=eoHvNI5gY98ZfFleiynbtIz3SiW_X49ggMBOlOgAP74,4014
|
|
@@ -252,7 +252,7 @@ hatchet_sdk/features/runs.py,sha256=9kmn2AM1XVFZS9P_lR-hh6SXwW42Kh73l0WUBl5VJh8,
|
|
|
252
252
|
hatchet_sdk/features/scheduled.py,sha256=1kNR8AxN1UlabNroU9TtVbptZEXfqTVE25Gxmh2lABs,8928
|
|
253
253
|
hatchet_sdk/features/workers.py,sha256=vD6j7GCttu0fm23_XmBMdE0IuX4mUbL0adgMoC8Sk_E,2571
|
|
254
254
|
hatchet_sdk/features/workflows.py,sha256=PFJsGXTHVfdDBDQ9WcQXcAzr7u-dN7vUpwbZ9fH0ZD8,3976
|
|
255
|
-
hatchet_sdk/hatchet.py,sha256=
|
|
255
|
+
hatchet_sdk/hatchet.py,sha256=GYiIAOXUmtVCNCOvWkIOeAGfboxCdiiwPTmd6e5Q9s8,22171
|
|
256
256
|
hatchet_sdk/labels.py,sha256=nATgxWE3lFxRTnfISEpoIRLGbMfAZsHF4lZTuG4Mfic,182
|
|
257
257
|
hatchet_sdk/logger.py,sha256=5uOr52T4mImSQm1QvWT8HvZFK5WfPNh3Y1cBQZRFgUQ,333
|
|
258
258
|
hatchet_sdk/metadata.py,sha256=XkRbhnghJJGCdVvF-uzyGBcNaTqpeQ3uiQvNNP1wyBc,107
|
|
@@ -261,14 +261,14 @@ hatchet_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
261
261
|
hatchet_sdk/rate_limit.py,sha256=TwbCuggiZaWpYuo4mjVLlE-z1OfQ2mRBiVvCSaG3lv4,3919
|
|
262
262
|
hatchet_sdk/runnables/contextvars.py,sha256=6MDocAMmlyiRW37oQ1jyx10tAlJs-xgDjR3xPoPz05g,426
|
|
263
263
|
hatchet_sdk/runnables/standalone.py,sha256=pCAIS40q9ltkK7K97ff79MzE73_k22ymZdrLdFdFwD8,15233
|
|
264
|
-
hatchet_sdk/runnables/task.py,sha256=
|
|
265
|
-
hatchet_sdk/runnables/types.py,sha256=
|
|
266
|
-
hatchet_sdk/runnables/workflow.py,sha256=
|
|
264
|
+
hatchet_sdk/runnables/task.py,sha256=AOpULMr3hqxn4W58Lh9oEvsXn_7PPB_c_sIqHRfQn5Q,7063
|
|
265
|
+
hatchet_sdk/runnables/types.py,sha256=5jf1c7_0QVUFh0bcXi4hIiaOdUiyhspU4LltoAFCwlM,3776
|
|
266
|
+
hatchet_sdk/runnables/workflow.py,sha256=6DjM8Qt4ALbxl3_3BQgxdt3FR8tqGCv_JzRIYtrQjzU,38920
|
|
267
267
|
hatchet_sdk/token.py,sha256=KjIiInwG5Kqd_FO4BSW1x_5Uc7PFbnzIVJqr50-ZldE,779
|
|
268
268
|
hatchet_sdk/utils/backoff.py,sha256=6B5Rb5nLKw_TqqgpJMYjIBV1PTTtbOMRZCveisVhg_I,353
|
|
269
269
|
hatchet_sdk/utils/proto_enums.py,sha256=0UybwE3s7TcqmzoQSO8YnhgAKOS8WZXsyPchB8-eksw,1247
|
|
270
270
|
hatchet_sdk/utils/timedelta_to_expression.py,sha256=kwuYZ51JdDdc3h9Sw4vgBFmJBMPkgbGJA4v9uO4_NGk,660
|
|
271
|
-
hatchet_sdk/utils/typing.py,sha256=
|
|
271
|
+
hatchet_sdk/utils/typing.py,sha256=P6-Nd5K_Hk-VhEkGj6LYki_9ddw05rJtzRA56qGXHag,914
|
|
272
272
|
hatchet_sdk/v0/__init__.py,sha256=YNh-0rPHS0rcphmykJ1N2NMfgvERF4oJpBtx3IH_E_M,9657
|
|
273
273
|
hatchet_sdk/v0/client.py,sha256=G1RDZln9Og7tRQulogXkZw8TsVlx7f0VvmtFI_VAe6E,3495
|
|
274
274
|
hatchet_sdk/v0/clients/admin.py,sha256=l6fW21p_3pROz8mVB2QOXX0Pg5poeLXcBNEm6Uids30,18071
|
|
@@ -508,7 +508,7 @@ hatchet_sdk/worker/runner/runner.py,sha256=CdsWl0l4tFp8Yy35uLsR74jNsBs-fIHiDAJZw
|
|
|
508
508
|
hatchet_sdk/worker/runner/utils/capture_logs.py,sha256=nHRPSiDBqzhObM7i2X7t03OupVFnE7kQBdR2Ckgg-2w,2709
|
|
509
509
|
hatchet_sdk/worker/worker.py,sha256=SfUeYYGfPDVa7Hr1Tdgrzn_A0T-e_apIzW26BhsiB70,16101
|
|
510
510
|
hatchet_sdk/workflow_run.py,sha256=ZwH0HLFGFVXz6jbiqSv4w0Om2XuR52Tzzw6LH4y65jQ,2765
|
|
511
|
-
hatchet_sdk-1.
|
|
512
|
-
hatchet_sdk-1.
|
|
513
|
-
hatchet_sdk-1.
|
|
514
|
-
hatchet_sdk-1.
|
|
511
|
+
hatchet_sdk-1.9.1.dist-info/METADATA,sha256=eaQmgQiFwSlD-ZGt8XBfWr8r36X4-W8lNo7F3wmFggQ,3635
|
|
512
|
+
hatchet_sdk-1.9.1.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
513
|
+
hatchet_sdk-1.9.1.dist-info/entry_points.txt,sha256=Un_76pcLse-ZGBlwebhQpnTPyQrripeHW8J7qmEpGOk,1400
|
|
514
|
+
hatchet_sdk-1.9.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|