hatchet-sdk 0.46.1__py3-none-any.whl → 1.0.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.
Files changed (303) hide show
  1. hatchet_sdk/__init__.py +25 -16
  2. hatchet_sdk/client.py +14 -39
  3. hatchet_sdk/clients/admin.py +203 -362
  4. hatchet_sdk/clients/dispatcher/action_listener.py +106 -84
  5. hatchet_sdk/clients/dispatcher/dispatcher.py +21 -21
  6. hatchet_sdk/clients/event_ts.py +23 -10
  7. hatchet_sdk/clients/events.py +96 -99
  8. hatchet_sdk/clients/rest/__init__.py +24 -0
  9. hatchet_sdk/clients/rest/api/__init__.py +2 -0
  10. hatchet_sdk/clients/rest/api/task_api.py +2174 -0
  11. hatchet_sdk/clients/rest/api/workflow_runs_api.py +638 -106
  12. hatchet_sdk/clients/rest/api_client.py +1 -1
  13. hatchet_sdk/clients/rest/configuration.py +8 -1
  14. hatchet_sdk/clients/rest/exceptions.py +21 -0
  15. hatchet_sdk/clients/rest/models/__init__.py +22 -0
  16. hatchet_sdk/clients/rest/models/tenant.py +4 -0
  17. hatchet_sdk/clients/rest/models/tenant_version.py +37 -0
  18. hatchet_sdk/clients/rest/models/update_tenant_request.py +7 -0
  19. hatchet_sdk/clients/rest/models/v1_cancel_task_request.py +104 -0
  20. hatchet_sdk/clients/rest/models/v1_dag_children.py +102 -0
  21. hatchet_sdk/clients/rest/models/v1_replay_task_request.py +104 -0
  22. hatchet_sdk/clients/rest/models/v1_task.py +174 -0
  23. hatchet_sdk/clients/rest/models/v1_task_event.py +118 -0
  24. hatchet_sdk/clients/rest/models/v1_task_event_list.py +110 -0
  25. hatchet_sdk/clients/rest/models/v1_task_event_type.py +55 -0
  26. hatchet_sdk/clients/rest/models/v1_task_filter.py +106 -0
  27. hatchet_sdk/clients/rest/models/v1_task_point_metric.py +92 -0
  28. hatchet_sdk/clients/rest/models/v1_task_point_metrics.py +100 -0
  29. hatchet_sdk/clients/rest/models/v1_task_run_metric.py +88 -0
  30. hatchet_sdk/clients/rest/models/v1_task_run_status.py +40 -0
  31. hatchet_sdk/clients/rest/models/v1_task_status.py +40 -0
  32. hatchet_sdk/clients/rest/models/v1_task_summary.py +212 -0
  33. hatchet_sdk/clients/rest/models/v1_task_summary_list.py +110 -0
  34. hatchet_sdk/clients/rest/models/v1_workflow_run.py +171 -0
  35. hatchet_sdk/clients/rest/models/v1_workflow_run_details.py +145 -0
  36. hatchet_sdk/clients/rest/models/v1_workflow_type.py +37 -0
  37. hatchet_sdk/clients/rest/models/workflow_run_shape_item_for_workflow_run_details.py +99 -0
  38. hatchet_sdk/clients/rest/rest.py +37 -26
  39. hatchet_sdk/clients/rest/tenacity_utils.py +1 -1
  40. hatchet_sdk/clients/rest_client.py +141 -116
  41. hatchet_sdk/clients/run_event_listener.py +66 -60
  42. hatchet_sdk/clients/workflow_listener.py +77 -64
  43. hatchet_sdk/config.py +117 -0
  44. hatchet_sdk/connection.py +27 -13
  45. hatchet_sdk/context/__init__.py +0 -1
  46. hatchet_sdk/context/context.py +143 -202
  47. hatchet_sdk/features/cron.py +43 -57
  48. hatchet_sdk/features/scheduled.py +60 -74
  49. hatchet_sdk/hatchet.py +192 -195
  50. hatchet_sdk/labels.py +4 -6
  51. hatchet_sdk/metadata.py +1 -1
  52. hatchet_sdk/opentelemetry/instrumentor.py +112 -35
  53. hatchet_sdk/rate_limit.py +9 -18
  54. hatchet_sdk/token.py +13 -9
  55. hatchet_sdk/utils/aio_utils.py +0 -40
  56. hatchet_sdk/utils/proto_enums.py +54 -0
  57. hatchet_sdk/utils/typing.py +9 -1
  58. hatchet_sdk/v0/__init__.py +251 -0
  59. hatchet_sdk/v0/client.py +119 -0
  60. hatchet_sdk/v0/clients/admin.py +541 -0
  61. hatchet_sdk/v0/clients/dispatcher/action_listener.py +422 -0
  62. hatchet_sdk/v0/clients/dispatcher/dispatcher.py +204 -0
  63. hatchet_sdk/v0/clients/event_ts.py +28 -0
  64. hatchet_sdk/v0/clients/events.py +182 -0
  65. hatchet_sdk/v0/clients/rest/__init__.py +307 -0
  66. hatchet_sdk/v0/clients/rest/api/__init__.py +19 -0
  67. hatchet_sdk/v0/clients/rest/api/api_token_api.py +858 -0
  68. hatchet_sdk/v0/clients/rest/api/default_api.py +2259 -0
  69. hatchet_sdk/v0/clients/rest/api/event_api.py +2548 -0
  70. hatchet_sdk/v0/clients/rest/api/github_api.py +331 -0
  71. hatchet_sdk/v0/clients/rest/api/healthcheck_api.py +483 -0
  72. hatchet_sdk/v0/clients/rest/api/log_api.py +449 -0
  73. hatchet_sdk/v0/clients/rest/api/metadata_api.py +728 -0
  74. hatchet_sdk/v0/clients/rest/api/rate_limits_api.py +423 -0
  75. hatchet_sdk/v0/clients/rest/api/slack_api.py +577 -0
  76. hatchet_sdk/v0/clients/rest/api/sns_api.py +872 -0
  77. hatchet_sdk/v0/clients/rest/api/step_run_api.py +2202 -0
  78. hatchet_sdk/v0/clients/rest/api/tenant_api.py +4430 -0
  79. hatchet_sdk/v0/clients/rest/api/user_api.py +2888 -0
  80. hatchet_sdk/v0/clients/rest/api/worker_api.py +858 -0
  81. hatchet_sdk/v0/clients/rest/api/workflow_api.py +6312 -0
  82. hatchet_sdk/v0/clients/rest/api/workflow_run_api.py +1932 -0
  83. hatchet_sdk/v0/clients/rest/api/workflow_runs_api.py +610 -0
  84. hatchet_sdk/v0/clients/rest/api_client.py +759 -0
  85. hatchet_sdk/v0/clients/rest/api_response.py +22 -0
  86. hatchet_sdk/v0/clients/rest/configuration.py +611 -0
  87. hatchet_sdk/v0/clients/rest/exceptions.py +200 -0
  88. hatchet_sdk/v0/clients/rest/models/__init__.py +274 -0
  89. hatchet_sdk/v0/clients/rest/models/accept_invite_request.py +83 -0
  90. hatchet_sdk/v0/clients/rest/models/api_error.py +102 -0
  91. hatchet_sdk/v0/clients/rest/models/api_errors.py +100 -0
  92. hatchet_sdk/v0/clients/rest/models/api_meta.py +144 -0
  93. hatchet_sdk/v0/clients/rest/models/api_meta_auth.py +85 -0
  94. hatchet_sdk/v0/clients/rest/models/api_meta_integration.py +88 -0
  95. hatchet_sdk/v0/clients/rest/models/api_meta_posthog.py +90 -0
  96. hatchet_sdk/v0/clients/rest/models/api_resource_meta.py +98 -0
  97. hatchet_sdk/v0/clients/rest/models/api_token.py +105 -0
  98. hatchet_sdk/v0/clients/rest/models/bulk_create_event_request.py +100 -0
  99. hatchet_sdk/v0/clients/rest/models/bulk_create_event_response.py +110 -0
  100. hatchet_sdk/v0/clients/rest/models/cancel_event_request.py +85 -0
  101. hatchet_sdk/v0/clients/rest/models/cancel_step_run_request.py +83 -0
  102. hatchet_sdk/v0/clients/rest/models/concurrency_limit_strategy.py +39 -0
  103. hatchet_sdk/v0/clients/rest/models/create_api_token_request.py +92 -0
  104. hatchet_sdk/v0/clients/rest/models/create_api_token_response.py +83 -0
  105. hatchet_sdk/v0/clients/rest/models/create_cron_workflow_trigger_request.py +98 -0
  106. hatchet_sdk/v0/clients/rest/models/create_event_request.py +95 -0
  107. hatchet_sdk/v0/clients/rest/models/create_pull_request_from_step_run.py +83 -0
  108. hatchet_sdk/v0/clients/rest/models/create_sns_integration_request.py +85 -0
  109. hatchet_sdk/v0/clients/rest/models/create_tenant_alert_email_group_request.py +83 -0
  110. hatchet_sdk/v0/clients/rest/models/create_tenant_invite_request.py +86 -0
  111. hatchet_sdk/v0/clients/rest/models/create_tenant_request.py +84 -0
  112. hatchet_sdk/v0/clients/rest/models/cron_workflows.py +131 -0
  113. hatchet_sdk/v0/clients/rest/models/cron_workflows_list.py +110 -0
  114. hatchet_sdk/v0/clients/rest/models/cron_workflows_method.py +37 -0
  115. hatchet_sdk/v0/clients/rest/models/cron_workflows_order_by_field.py +37 -0
  116. hatchet_sdk/v0/clients/rest/models/event.py +143 -0
  117. hatchet_sdk/v0/clients/rest/models/event_data.py +83 -0
  118. hatchet_sdk/v0/clients/rest/models/event_key_list.py +98 -0
  119. hatchet_sdk/v0/clients/rest/models/event_list.py +110 -0
  120. hatchet_sdk/v0/clients/rest/models/event_order_by_direction.py +37 -0
  121. hatchet_sdk/v0/clients/rest/models/event_order_by_field.py +36 -0
  122. hatchet_sdk/v0/clients/rest/models/event_update_cancel200_response.py +85 -0
  123. hatchet_sdk/v0/clients/rest/models/event_workflow_run_summary.py +116 -0
  124. hatchet_sdk/v0/clients/rest/models/events.py +110 -0
  125. hatchet_sdk/v0/clients/rest/models/get_step_run_diff_response.py +100 -0
  126. hatchet_sdk/v0/clients/rest/models/github_app_installation.py +107 -0
  127. hatchet_sdk/v0/clients/rest/models/github_branch.py +86 -0
  128. hatchet_sdk/v0/clients/rest/models/github_repo.py +86 -0
  129. hatchet_sdk/v0/clients/rest/models/info_get_version200_response.py +83 -0
  130. hatchet_sdk/v0/clients/rest/models/job.py +132 -0
  131. hatchet_sdk/v0/clients/rest/models/job_run.py +176 -0
  132. hatchet_sdk/v0/clients/rest/models/job_run_status.py +41 -0
  133. hatchet_sdk/v0/clients/rest/models/link_github_repository_request.py +106 -0
  134. hatchet_sdk/v0/clients/rest/models/list_api_tokens_response.py +110 -0
  135. hatchet_sdk/v0/clients/rest/models/list_github_app_installations_response.py +112 -0
  136. hatchet_sdk/v0/clients/rest/models/list_pull_requests_response.py +100 -0
  137. hatchet_sdk/v0/clients/rest/models/list_slack_webhooks.py +110 -0
  138. hatchet_sdk/v0/clients/rest/models/list_sns_integrations.py +110 -0
  139. hatchet_sdk/v0/clients/rest/models/log_line.py +94 -0
  140. hatchet_sdk/v0/clients/rest/models/log_line_level.py +39 -0
  141. hatchet_sdk/v0/clients/rest/models/log_line_list.py +110 -0
  142. hatchet_sdk/v0/clients/rest/models/log_line_order_by_direction.py +37 -0
  143. hatchet_sdk/v0/clients/rest/models/log_line_order_by_field.py +36 -0
  144. hatchet_sdk/v0/clients/rest/models/pagination_response.py +95 -0
  145. hatchet_sdk/v0/clients/rest/models/pull_request.py +112 -0
  146. hatchet_sdk/v0/clients/rest/models/pull_request_state.py +37 -0
  147. hatchet_sdk/v0/clients/rest/models/queue_metrics.py +97 -0
  148. hatchet_sdk/v0/clients/rest/models/rate_limit.py +117 -0
  149. hatchet_sdk/v0/clients/rest/models/rate_limit_list.py +110 -0
  150. hatchet_sdk/v0/clients/rest/models/rate_limit_order_by_direction.py +37 -0
  151. hatchet_sdk/v0/clients/rest/models/rate_limit_order_by_field.py +38 -0
  152. hatchet_sdk/v0/clients/rest/models/recent_step_runs.py +118 -0
  153. hatchet_sdk/v0/clients/rest/models/reject_invite_request.py +83 -0
  154. hatchet_sdk/v0/clients/rest/models/replay_event_request.py +85 -0
  155. hatchet_sdk/v0/clients/rest/models/replay_workflow_runs_request.py +85 -0
  156. hatchet_sdk/v0/clients/rest/models/replay_workflow_runs_response.py +100 -0
  157. hatchet_sdk/v0/clients/rest/models/rerun_step_run_request.py +83 -0
  158. hatchet_sdk/v0/clients/rest/models/schedule_workflow_run_request.py +92 -0
  159. hatchet_sdk/v0/clients/rest/models/scheduled_run_status.py +42 -0
  160. hatchet_sdk/v0/clients/rest/models/scheduled_workflows.py +149 -0
  161. hatchet_sdk/v0/clients/rest/models/scheduled_workflows_list.py +110 -0
  162. hatchet_sdk/v0/clients/rest/models/scheduled_workflows_method.py +37 -0
  163. hatchet_sdk/v0/clients/rest/models/scheduled_workflows_order_by_field.py +37 -0
  164. hatchet_sdk/v0/clients/rest/models/semaphore_slots.py +113 -0
  165. hatchet_sdk/v0/clients/rest/models/slack_webhook.py +127 -0
  166. hatchet_sdk/v0/clients/rest/models/sns_integration.py +114 -0
  167. hatchet_sdk/v0/clients/rest/models/step.py +123 -0
  168. hatchet_sdk/v0/clients/rest/models/step_run.py +202 -0
  169. hatchet_sdk/v0/clients/rest/models/step_run_archive.py +142 -0
  170. hatchet_sdk/v0/clients/rest/models/step_run_archive_list.py +110 -0
  171. hatchet_sdk/v0/clients/rest/models/step_run_diff.py +91 -0
  172. hatchet_sdk/v0/clients/rest/models/step_run_event.py +122 -0
  173. hatchet_sdk/v0/clients/rest/models/step_run_event_list.py +110 -0
  174. hatchet_sdk/v0/clients/rest/models/step_run_event_reason.py +52 -0
  175. hatchet_sdk/v0/clients/rest/models/step_run_event_severity.py +38 -0
  176. hatchet_sdk/v0/clients/rest/models/step_run_status.py +44 -0
  177. hatchet_sdk/v0/clients/rest/models/tenant.py +118 -0
  178. hatchet_sdk/v0/clients/rest/models/tenant_alert_email_group.py +98 -0
  179. hatchet_sdk/v0/clients/rest/models/tenant_alert_email_group_list.py +112 -0
  180. hatchet_sdk/v0/clients/rest/models/tenant_alerting_settings.py +143 -0
  181. hatchet_sdk/v0/clients/rest/models/tenant_invite.py +120 -0
  182. hatchet_sdk/v0/clients/rest/models/tenant_invite_list.py +110 -0
  183. hatchet_sdk/v0/clients/rest/models/tenant_list.py +110 -0
  184. hatchet_sdk/v0/clients/rest/models/tenant_member.py +123 -0
  185. hatchet_sdk/v0/clients/rest/models/tenant_member_list.py +110 -0
  186. hatchet_sdk/v0/clients/rest/models/tenant_member_role.py +38 -0
  187. hatchet_sdk/v0/clients/rest/models/tenant_queue_metrics.py +116 -0
  188. hatchet_sdk/v0/clients/rest/models/tenant_resource.py +40 -0
  189. hatchet_sdk/v0/clients/rest/models/tenant_resource_limit.py +135 -0
  190. hatchet_sdk/v0/clients/rest/models/tenant_resource_policy.py +102 -0
  191. hatchet_sdk/v0/clients/rest/models/tenant_step_run_queue_metrics.py +83 -0
  192. hatchet_sdk/v0/clients/rest/models/trigger_workflow_run_request.py +91 -0
  193. hatchet_sdk/v0/clients/rest/models/update_tenant_alert_email_group_request.py +83 -0
  194. hatchet_sdk/v0/clients/rest/models/update_tenant_invite_request.py +85 -0
  195. hatchet_sdk/v0/clients/rest/models/update_tenant_request.py +137 -0
  196. hatchet_sdk/v0/clients/rest/models/update_worker_request.py +87 -0
  197. hatchet_sdk/v0/clients/rest/models/user.py +126 -0
  198. hatchet_sdk/v0/clients/rest/models/user_change_password_request.py +88 -0
  199. hatchet_sdk/v0/clients/rest/models/user_login_request.py +86 -0
  200. hatchet_sdk/v0/clients/rest/models/user_register_request.py +91 -0
  201. hatchet_sdk/v0/clients/rest/models/user_tenant_memberships_list.py +110 -0
  202. hatchet_sdk/v0/clients/rest/models/user_tenant_public.py +86 -0
  203. hatchet_sdk/v0/clients/rest/models/webhook_worker.py +100 -0
  204. hatchet_sdk/v0/clients/rest/models/webhook_worker_create_request.py +94 -0
  205. hatchet_sdk/v0/clients/rest/models/webhook_worker_create_response.py +98 -0
  206. hatchet_sdk/v0/clients/rest/models/webhook_worker_created.py +102 -0
  207. hatchet_sdk/v0/clients/rest/models/webhook_worker_list_response.py +110 -0
  208. hatchet_sdk/v0/clients/rest/models/webhook_worker_request.py +102 -0
  209. hatchet_sdk/v0/clients/rest/models/webhook_worker_request_list_response.py +104 -0
  210. hatchet_sdk/v0/clients/rest/models/webhook_worker_request_method.py +38 -0
  211. hatchet_sdk/v0/clients/rest/models/worker.py +239 -0
  212. hatchet_sdk/v0/clients/rest/models/worker_label.py +102 -0
  213. hatchet_sdk/v0/clients/rest/models/worker_list.py +110 -0
  214. hatchet_sdk/v0/clients/rest/models/worker_runtime_info.py +103 -0
  215. hatchet_sdk/v0/clients/rest/models/worker_runtime_sdks.py +38 -0
  216. hatchet_sdk/v0/clients/rest/models/worker_type.py +38 -0
  217. hatchet_sdk/v0/clients/rest/models/workflow.py +165 -0
  218. hatchet_sdk/v0/clients/rest/models/workflow_concurrency.py +107 -0
  219. hatchet_sdk/v0/clients/rest/models/workflow_deployment_config.py +136 -0
  220. hatchet_sdk/v0/clients/rest/models/workflow_kind.py +38 -0
  221. hatchet_sdk/v0/clients/rest/models/workflow_list.py +120 -0
  222. hatchet_sdk/v0/clients/rest/models/workflow_metrics.py +97 -0
  223. hatchet_sdk/v0/clients/rest/models/workflow_run.py +188 -0
  224. hatchet_sdk/v0/clients/rest/models/workflow_run_cancel200_response.py +85 -0
  225. hatchet_sdk/v0/clients/rest/models/workflow_run_list.py +110 -0
  226. hatchet_sdk/v0/clients/rest/models/workflow_run_order_by_direction.py +37 -0
  227. hatchet_sdk/v0/clients/rest/models/workflow_run_order_by_field.py +39 -0
  228. hatchet_sdk/v0/clients/rest/models/workflow_run_shape.py +186 -0
  229. hatchet_sdk/v0/clients/rest/models/workflow_run_status.py +42 -0
  230. hatchet_sdk/v0/clients/rest/models/workflow_run_triggered_by.py +112 -0
  231. hatchet_sdk/v0/clients/rest/models/workflow_runs_cancel_request.py +85 -0
  232. hatchet_sdk/v0/clients/rest/models/workflow_runs_metrics.py +94 -0
  233. hatchet_sdk/v0/clients/rest/models/workflow_runs_metrics_counts.py +104 -0
  234. hatchet_sdk/v0/clients/rest/models/workflow_tag.py +84 -0
  235. hatchet_sdk/v0/clients/rest/models/workflow_trigger_cron_ref.py +86 -0
  236. hatchet_sdk/v0/clients/rest/models/workflow_trigger_event_ref.py +86 -0
  237. hatchet_sdk/v0/clients/rest/models/workflow_triggers.py +141 -0
  238. hatchet_sdk/v0/clients/rest/models/workflow_update_request.py +85 -0
  239. hatchet_sdk/v0/clients/rest/models/workflow_version.py +170 -0
  240. hatchet_sdk/v0/clients/rest/models/workflow_version_concurrency.py +114 -0
  241. hatchet_sdk/v0/clients/rest/models/workflow_version_definition.py +85 -0
  242. hatchet_sdk/v0/clients/rest/models/workflow_version_meta.py +123 -0
  243. hatchet_sdk/v0/clients/rest/models/workflow_workers_count.py +95 -0
  244. hatchet_sdk/v0/clients/rest/rest.py +187 -0
  245. hatchet_sdk/v0/clients/rest/tenacity_utils.py +39 -0
  246. hatchet_sdk/v0/clients/rest_client.py +613 -0
  247. hatchet_sdk/v0/clients/run_event_listener.py +260 -0
  248. hatchet_sdk/v0/clients/workflow_listener.py +277 -0
  249. hatchet_sdk/v0/connection.py +63 -0
  250. hatchet_sdk/v0/context/__init__.py +1 -0
  251. hatchet_sdk/v0/context/context.py +446 -0
  252. hatchet_sdk/v0/context/worker_context.py +28 -0
  253. hatchet_sdk/v0/contracts/dispatcher_pb2.py +102 -0
  254. hatchet_sdk/v0/contracts/dispatcher_pb2.pyi +387 -0
  255. hatchet_sdk/v0/contracts/dispatcher_pb2_grpc.py +621 -0
  256. hatchet_sdk/v0/contracts/events_pb2.py +46 -0
  257. hatchet_sdk/v0/contracts/events_pb2.pyi +87 -0
  258. hatchet_sdk/v0/contracts/events_pb2_grpc.py +274 -0
  259. hatchet_sdk/v0/contracts/workflows_pb2.py +80 -0
  260. hatchet_sdk/v0/contracts/workflows_pb2.pyi +312 -0
  261. hatchet_sdk/v0/contracts/workflows_pb2_grpc.py +277 -0
  262. hatchet_sdk/v0/features/cron.py +286 -0
  263. hatchet_sdk/v0/features/scheduled.py +248 -0
  264. hatchet_sdk/v0/hatchet.py +310 -0
  265. hatchet_sdk/v0/labels.py +10 -0
  266. hatchet_sdk/{loader.py → v0/loader.py} +11 -0
  267. hatchet_sdk/v0/logger.py +13 -0
  268. hatchet_sdk/v0/metadata.py +2 -0
  269. hatchet_sdk/v0/opentelemetry/instrumentor.py +396 -0
  270. hatchet_sdk/v0/rate_limit.py +126 -0
  271. hatchet_sdk/v0/semver.py +30 -0
  272. hatchet_sdk/v0/token.py +27 -0
  273. hatchet_sdk/v0/utils/aio_utils.py +137 -0
  274. hatchet_sdk/v0/utils/backoff.py +9 -0
  275. hatchet_sdk/v0/utils/typing.py +12 -0
  276. hatchet_sdk/{v2 → v0/v2}/callable.py +8 -8
  277. hatchet_sdk/{v2 → v0/v2}/concurrency.py +2 -2
  278. hatchet_sdk/{v2 → v0/v2}/hatchet.py +10 -10
  279. hatchet_sdk/v0/worker/__init__.py +1 -0
  280. hatchet_sdk/v0/worker/action_listener_process.py +278 -0
  281. hatchet_sdk/v0/worker/runner/run_loop_manager.py +112 -0
  282. hatchet_sdk/v0/worker/runner/runner.py +460 -0
  283. hatchet_sdk/v0/worker/runner/utils/capture_logs.py +81 -0
  284. hatchet_sdk/v0/worker/runner/utils/error_with_traceback.py +6 -0
  285. hatchet_sdk/v0/worker/worker.py +391 -0
  286. hatchet_sdk/v0/workflow.py +261 -0
  287. hatchet_sdk/v0/workflow_run.py +59 -0
  288. hatchet_sdk/worker/__init__.py +0 -1
  289. hatchet_sdk/worker/action_listener_process.py +36 -33
  290. hatchet_sdk/worker/runner/run_loop_manager.py +18 -16
  291. hatchet_sdk/worker/runner/runner.py +37 -59
  292. hatchet_sdk/worker/runner/utils/capture_logs.py +25 -14
  293. hatchet_sdk/worker/runner/utils/error_with_traceback.py +1 -1
  294. hatchet_sdk/worker/worker.py +61 -75
  295. hatchet_sdk/workflow.py +473 -207
  296. hatchet_sdk/workflow_run.py +14 -25
  297. {hatchet_sdk-0.46.1.dist-info → hatchet_sdk-1.0.0.dist-info}/METADATA +3 -2
  298. hatchet_sdk-1.0.0.dist-info/RECORD +485 -0
  299. {hatchet_sdk-0.46.1.dist-info → hatchet_sdk-1.0.0.dist-info}/entry_points.txt +1 -0
  300. hatchet_sdk/utils/serialization.py +0 -18
  301. hatchet_sdk-0.46.1.dist-info/RECORD +0 -237
  302. /hatchet_sdk/{utils → v0/utils}/types.py +0 -0
  303. {hatchet_sdk-0.46.1.dist-info → hatchet_sdk-1.0.0.dist-info}/WHEEL +0 -0
@@ -1,6 +1,6 @@
1
- from typing import Union
1
+ from typing import List, Union
2
2
 
3
- from pydantic import BaseModel, field_validator
3
+ from pydantic import BaseModel, Field, field_validator
4
4
 
5
5
  from hatchet_sdk.client import Client
6
6
  from hatchet_sdk.clients.rest.models.cron_workflows import CronWorkflows
@@ -11,9 +11,10 @@ from hatchet_sdk.clients.rest.models.cron_workflows_order_by_field import (
11
11
  from hatchet_sdk.clients.rest.models.workflow_run_order_by_direction import (
12
12
  WorkflowRunOrderByDirection,
13
13
  )
14
+ from hatchet_sdk.utils.typing import JSONSerializableMapping
14
15
 
15
16
 
16
- class CreateCronTriggerInput(BaseModel):
17
+ class CreateCronTriggerJSONSerializableMapping(BaseModel):
17
18
  """
18
19
  Schema for creating a workflow run triggered by a cron.
19
20
 
@@ -23,12 +24,13 @@ class CreateCronTriggerInput(BaseModel):
23
24
  additional_metadata (dict[str, str]): Additional metadata associated with the cron trigger (e.g. {"key1": "value1", "key2": "value2"}).
24
25
  """
25
26
 
26
- expression: str = None
27
- input: dict = {}
28
- additional_metadata: dict[str, str] = {}
27
+ expression: str
28
+ input: JSONSerializableMapping = Field(default_factory=dict)
29
+ additional_metadata: JSONSerializableMapping = Field(default_factory=dict)
29
30
 
30
31
  @field_validator("expression")
31
- def validate_cron_expression(cls, v):
32
+ @classmethod
33
+ def validate_cron_expression(cls, v: str) -> str:
32
34
  """
33
35
  Validates the cron expression to ensure it adheres to the expected format.
34
36
 
@@ -79,15 +81,14 @@ class CronClient:
79
81
  _client (Client): The client instance to be used for REST interactions.
80
82
  """
81
83
  self._client = _client
82
- self.aio = CronClientAsync(_client)
83
84
 
84
85
  def create(
85
86
  self,
86
87
  workflow_name: str,
87
88
  cron_name: str,
88
89
  expression: str,
89
- input: dict,
90
- additional_metadata: dict[str, str],
90
+ input: JSONSerializableMapping,
91
+ additional_metadata: JSONSerializableMapping,
91
92
  ) -> CronWorkflows:
92
93
  """
93
94
  Creates a new workflow cron trigger.
@@ -102,7 +103,7 @@ class CronClient:
102
103
  Returns:
103
104
  CronWorkflows: The created cron workflow instance.
104
105
  """
105
- validated_input = CreateCronTriggerInput(
106
+ validated_input = CreateCronTriggerJSONSerializableMapping(
106
107
  expression=expression, input=input, additional_metadata=additional_metadata
107
108
  )
108
109
 
@@ -121,10 +122,11 @@ class CronClient:
121
122
  Args:
122
123
  cron_trigger (Union[str, CronWorkflows]): The cron trigger ID or CronWorkflows instance to delete.
123
124
  """
124
- id_ = cron_trigger
125
- if isinstance(cron_trigger, CronWorkflows):
126
- id_ = cron_trigger.metadata.id
127
- self._client.rest.cron_delete(id_)
125
+ self._client.rest.cron_delete(
126
+ cron_trigger.metadata.id
127
+ if isinstance(cron_trigger, CronWorkflows)
128
+ else cron_trigger
129
+ )
128
130
 
129
131
  def list(
130
132
  self,
@@ -168,38 +170,19 @@ class CronClient:
168
170
  Returns:
169
171
  CronWorkflows: The requested cron workflow instance.
170
172
  """
171
- id_ = cron_trigger
172
- if isinstance(cron_trigger, CronWorkflows):
173
- id_ = cron_trigger.metadata.id
174
- return self._client.rest.cron_get(id_)
175
-
176
-
177
- class CronClientAsync:
178
- """
179
- Asynchronous client for managing workflow cron triggers.
180
-
181
- Attributes:
182
- _client (Client): The underlying client used to interact with the REST API asynchronously.
183
- """
184
-
185
- _client: Client
186
-
187
- def __init__(self, _client: Client):
188
- """
189
- Initializes the CronClientAsync with a given Client instance.
190
-
191
- Args:
192
- _client (Client): The client instance to be used for asynchronous REST interactions.
193
- """
194
- self._client = _client
173
+ return self._client.rest.cron_get(
174
+ cron_trigger.metadata.id
175
+ if isinstance(cron_trigger, CronWorkflows)
176
+ else cron_trigger
177
+ )
195
178
 
196
- async def create(
179
+ async def aio_create(
197
180
  self,
198
181
  workflow_name: str,
199
182
  cron_name: str,
200
183
  expression: str,
201
- input: dict,
202
- additional_metadata: dict[str, str],
184
+ input: JSONSerializableMapping,
185
+ additional_metadata: JSONSerializableMapping,
203
186
  ) -> CronWorkflows:
204
187
  """
205
188
  Asynchronously creates a new workflow cron trigger.
@@ -214,11 +197,11 @@ class CronClientAsync:
214
197
  Returns:
215
198
  CronWorkflows: The created cron workflow instance.
216
199
  """
217
- validated_input = CreateCronTriggerInput(
200
+ validated_input = CreateCronTriggerJSONSerializableMapping(
218
201
  expression=expression, input=input, additional_metadata=additional_metadata
219
202
  )
220
203
 
221
- return await self._client.rest.aio.cron_create(
204
+ return await self._client.rest.aio_create_cron(
222
205
  workflow_name=workflow_name,
223
206
  cron_name=cron_name,
224
207
  expression=validated_input.expression,
@@ -226,24 +209,25 @@ class CronClientAsync:
226
209
  additional_metadata=validated_input.additional_metadata,
227
210
  )
228
211
 
229
- async def delete(self, cron_trigger: Union[str, CronWorkflows]) -> None:
212
+ async def aio_delete(self, cron_trigger: Union[str, CronWorkflows]) -> None:
230
213
  """
231
214
  Asynchronously deletes a workflow cron trigger.
232
215
 
233
216
  Args:
234
217
  cron_trigger (Union[str, CronWorkflows]): The cron trigger ID or CronWorkflows instance to delete.
235
218
  """
236
- id_ = cron_trigger
237
- if isinstance(cron_trigger, CronWorkflows):
238
- id_ = cron_trigger.metadata.id
239
- await self._client.rest.aio.cron_delete(id_)
219
+ await self._client.rest.aio_delete_cron(
220
+ cron_trigger.metadata.id
221
+ if isinstance(cron_trigger, CronWorkflows)
222
+ else cron_trigger
223
+ )
240
224
 
241
- async def list(
225
+ async def aio_list(
242
226
  self,
243
227
  offset: int | None = None,
244
228
  limit: int | None = None,
245
229
  workflow_id: str | None = None,
246
- additional_metadata: list[str] | None = None,
230
+ additional_metadata: List[str] | None = None,
247
231
  order_by_field: CronWorkflowsOrderByField | None = None,
248
232
  order_by_direction: WorkflowRunOrderByDirection | None = None,
249
233
  ) -> CronWorkflowsList:
@@ -261,7 +245,7 @@ class CronClientAsync:
261
245
  Returns:
262
246
  CronWorkflowsList: A list of cron workflows.
263
247
  """
264
- return await self._client.rest.aio.cron_list(
248
+ return await self._client.rest.aio_list_crons(
265
249
  offset=offset,
266
250
  limit=limit,
267
251
  workflow_id=workflow_id,
@@ -270,7 +254,7 @@ class CronClientAsync:
270
254
  order_by_direction=order_by_direction,
271
255
  )
272
256
 
273
- async def get(self, cron_trigger: Union[str, CronWorkflows]) -> CronWorkflows:
257
+ async def aio_get(self, cron_trigger: Union[str, CronWorkflows]) -> CronWorkflows:
274
258
  """
275
259
  Asynchronously retrieves a specific workflow cron trigger by ID.
276
260
 
@@ -280,7 +264,9 @@ class CronClientAsync:
280
264
  Returns:
281
265
  CronWorkflows: The requested cron workflow instance.
282
266
  """
283
- id_ = cron_trigger
284
- if isinstance(cron_trigger, CronWorkflows):
285
- id_ = cron_trigger.metadata.id
286
- return await self._client.rest.aio.cron_get(id_)
267
+
268
+ return await self._client.rest.aio_get_cron(
269
+ cron_trigger.metadata.id
270
+ if isinstance(cron_trigger, CronWorkflows)
271
+ else cron_trigger
272
+ )
@@ -1,10 +1,9 @@
1
1
  import datetime
2
- from typing import Any, Coroutine, Dict, List, Optional, Union
2
+ from typing import List, Optional, Union
3
3
 
4
- from pydantic import BaseModel
4
+ from pydantic import BaseModel, Field
5
5
 
6
6
  from hatchet_sdk.client import Client
7
- from hatchet_sdk.clients.rest.models.cron_workflows import CronWorkflows
8
7
  from hatchet_sdk.clients.rest.models.cron_workflows_order_by_field import (
9
8
  CronWorkflowsOrderByField,
10
9
  )
@@ -12,24 +11,28 @@ from hatchet_sdk.clients.rest.models.scheduled_workflows import ScheduledWorkflo
12
11
  from hatchet_sdk.clients.rest.models.scheduled_workflows_list import (
13
12
  ScheduledWorkflowsList,
14
13
  )
14
+ from hatchet_sdk.clients.rest.models.scheduled_workflows_order_by_field import (
15
+ ScheduledWorkflowsOrderByField,
16
+ )
15
17
  from hatchet_sdk.clients.rest.models.workflow_run_order_by_direction import (
16
18
  WorkflowRunOrderByDirection,
17
19
  )
20
+ from hatchet_sdk.utils.typing import JSONSerializableMapping
18
21
 
19
22
 
20
- class CreateScheduledTriggerInput(BaseModel):
23
+ class CreateScheduledTriggerJSONSerializableMapping(BaseModel):
21
24
  """
22
25
  Schema for creating a scheduled workflow run.
23
26
 
24
27
  Attributes:
25
- input (Dict[str, Any]): The input data for the scheduled workflow.
26
- additional_metadata (Dict[str, str]): Additional metadata associated with the future run (e.g. ["key1:value1", "key2:value2"]).
28
+ input (JSONSerializableMapping): The input data for the scheduled workflow.
29
+ additional_metadata (JSONSerializableMapping): Additional metadata associated with the future run (e.g. ["key1:value1", "key2:value2"]).
27
30
  trigger_at (Optional[datetime.datetime]): The datetime when the run should be triggered.
28
31
  """
29
32
 
30
- input: Dict[str, Any] = {}
31
- additional_metadata: Dict[str, str] = {}
32
- trigger_at: Optional[datetime.datetime] = None
33
+ input: JSONSerializableMapping = Field(default_factory=dict)
34
+ additional_metadata: JSONSerializableMapping = Field(default_factory=dict)
35
+ trigger_at: datetime.datetime
33
36
 
34
37
 
35
38
  class ScheduledClient:
@@ -51,14 +54,13 @@ class ScheduledClient:
51
54
  _client (Client): The client instance to be used for REST interactions.
52
55
  """
53
56
  self._client = _client
54
- self.aio: "ScheduledClientAsync" = ScheduledClientAsync(_client)
55
57
 
56
58
  def create(
57
59
  self,
58
60
  workflow_name: str,
59
61
  trigger_at: datetime.datetime,
60
- input: Dict[str, Any],
61
- additional_metadata: Dict[str, str],
62
+ input: JSONSerializableMapping,
63
+ additional_metadata: JSONSerializableMapping,
62
64
  ) -> ScheduledWorkflows:
63
65
  """
64
66
  Creates a new scheduled workflow run asynchronously.
@@ -66,14 +68,14 @@ class ScheduledClient:
66
68
  Args:
67
69
  workflow_name (str): The name of the scheduled workflow.
68
70
  trigger_at (datetime.datetime): The datetime when the run should be triggered.
69
- input (Dict[str, Any]): The input data for the scheduled workflow.
70
- additional_metadata (Dict[str, str]): Additional metadata associated with the future run as a key-value pair (e.g. {"key1": "value1", "key2": "value2"}).
71
+ input (JSONSerializableMapping): The input data for the scheduled workflow.
72
+ additional_metadata (JSONSerializableMapping): Additional metadata associated with the future run as a key-value pair (e.g. {"key1": "value1", "key2": "value2"}).
71
73
 
72
74
  Returns:
73
75
  ScheduledWorkflows: The created scheduled workflow instance.
74
76
  """
75
77
 
76
- validated_input = CreateScheduledTriggerInput(
78
+ validated_input = CreateScheduledTriggerJSONSerializableMapping(
77
79
  trigger_at=trigger_at, input=input, additional_metadata=additional_metadata
78
80
  )
79
81
 
@@ -91,16 +93,17 @@ class ScheduledClient:
91
93
  Args:
92
94
  scheduled (Union[str, ScheduledWorkflows]): The scheduled workflow trigger ID or ScheduledWorkflows instance to delete.
93
95
  """
94
- id_ = scheduled
95
- if isinstance(scheduled, ScheduledWorkflows):
96
- id_ = scheduled.metadata.id
97
- self._client.rest.schedule_delete(id_)
96
+ self._client.rest.schedule_delete(
97
+ scheduled.metadata.id
98
+ if isinstance(scheduled, ScheduledWorkflows)
99
+ else scheduled
100
+ )
98
101
 
99
102
  def list(
100
103
  self,
101
- offset: Optional[int] = None,
102
- limit: Optional[int] = None,
103
- workflow_id: Optional[str] = None,
104
+ offset: int | None = None,
105
+ limit: int | None = None,
106
+ workflow_id: str | None = None,
104
107
  additional_metadata: Optional[List[str]] = None,
105
108
  order_by_field: Optional[CronWorkflowsOrderByField] = None,
106
109
  order_by_direction: Optional[WorkflowRunOrderByDirection] = None,
@@ -109,9 +112,9 @@ class ScheduledClient:
109
112
  Retrieves a list of scheduled workflows based on provided filters.
110
113
 
111
114
  Args:
112
- offset (Optional[int]): The starting point for the list.
113
- limit (Optional[int]): The maximum number of items to return.
114
- workflow_id (Optional[str]): Filter by specific workflow ID.
115
+ offset (int | None): The starting point for the list.
116
+ limit (int | None): The maximum number of items to return.
117
+ workflow_id (str | None): Filter by specific workflow ID.
115
118
  additional_metadata (Optional[List[str]]): Filter by additional metadata keys (e.g. ["key1:value1", "key2:value2"]).
116
119
  order_by_field (Optional[CronWorkflowsOrderByField]): Field to order the results by.
117
120
  order_by_direction (Optional[WorkflowRunOrderByDirection]): Direction to order the results.
@@ -138,37 +141,18 @@ class ScheduledClient:
138
141
  Returns:
139
142
  ScheduledWorkflows: The requested scheduled workflow instance.
140
143
  """
141
- id_ = scheduled
142
- if isinstance(scheduled, ScheduledWorkflows):
143
- id_ = scheduled.metadata.id
144
- return self._client.rest.schedule_get(id_)
145
-
146
-
147
- class ScheduledClientAsync:
148
- """
149
- Asynchronous client for managing scheduled workflows.
150
-
151
- Attributes:
152
- _client (Client): The underlying client used to interact with the REST API asynchronously.
153
- """
154
-
155
- _client: Client
156
-
157
- def __init__(self, _client: Client) -> None:
158
- """
159
- Initializes the ScheduledClientAsync with a given Client instance.
160
-
161
- Args:
162
- _client (Client): The client instance to be used for asynchronous REST interactions.
163
- """
164
- self._client = _client
144
+ return self._client.rest.schedule_get(
145
+ scheduled.metadata.id
146
+ if isinstance(scheduled, ScheduledWorkflows)
147
+ else scheduled
148
+ )
165
149
 
166
- async def create(
150
+ async def aio_create(
167
151
  self,
168
152
  workflow_name: str,
169
153
  trigger_at: datetime.datetime,
170
- input: Dict[str, Any],
171
- additional_metadata: Dict[str, str],
154
+ input: JSONSerializableMapping,
155
+ additional_metadata: JSONSerializableMapping,
172
156
  ) -> ScheduledWorkflows:
173
157
  """
174
158
  Creates a new scheduled workflow run asynchronously.
@@ -176,44 +160,45 @@ class ScheduledClientAsync:
176
160
  Args:
177
161
  workflow_name (str): The name of the scheduled workflow.
178
162
  trigger_at (datetime.datetime): The datetime when the run should be triggered.
179
- input (Dict[str, Any]): The input data for the scheduled workflow.
180
- additional_metadata (Dict[str, str]): Additional metadata associated with the future run.
163
+ input (JSONSerializableMapping): The input data for the scheduled workflow.
164
+ additional_metadata (JSONSerializableMapping): Additional metadata associated with the future run.
181
165
 
182
166
  Returns:
183
167
  ScheduledWorkflows: The created scheduled workflow instance.
184
168
  """
185
- return await self._client.rest.aio.schedule_create(
169
+ return await self._client.rest.aio_create_schedule(
186
170
  workflow_name, trigger_at, input, additional_metadata
187
171
  )
188
172
 
189
- async def delete(self, scheduled: Union[str, ScheduledWorkflows]) -> None:
173
+ async def aio_delete(self, scheduled: Union[str, ScheduledWorkflows]) -> None:
190
174
  """
191
175
  Deletes a scheduled workflow asynchronously.
192
176
 
193
177
  Args:
194
178
  scheduled (Union[str, ScheduledWorkflows]): The scheduled workflow trigger ID or ScheduledWorkflows instance to delete.
195
179
  """
196
- id_ = scheduled
197
- if isinstance(scheduled, ScheduledWorkflows):
198
- id_ = scheduled.metadata.id
199
- await self._client.rest.aio.schedule_delete(id_)
180
+ await self._client.rest.aio_delete_schedule(
181
+ scheduled.metadata.id
182
+ if isinstance(scheduled, ScheduledWorkflows)
183
+ else scheduled
184
+ )
200
185
 
201
- async def list(
186
+ async def aio_list(
202
187
  self,
203
- offset: Optional[int] = None,
204
- limit: Optional[int] = None,
205
- workflow_id: Optional[str] = None,
188
+ offset: int | None = None,
189
+ limit: int | None = None,
190
+ workflow_id: str | None = None,
206
191
  additional_metadata: Optional[List[str]] = None,
207
- order_by_field: Optional[CronWorkflowsOrderByField] = None,
192
+ order_by_field: Optional[ScheduledWorkflowsOrderByField] = None,
208
193
  order_by_direction: Optional[WorkflowRunOrderByDirection] = None,
209
194
  ) -> ScheduledWorkflowsList:
210
195
  """
211
196
  Retrieves a list of scheduled workflows based on provided filters asynchronously.
212
197
 
213
198
  Args:
214
- offset (Optional[int]): The starting point for the list.
215
- limit (Optional[int]): The maximum number of items to return.
216
- workflow_id (Optional[str]): Filter by specific workflow ID.
199
+ offset (int | None): The starting point for the list.
200
+ limit (int | None): The maximum number of items to return.
201
+ workflow_id (str | None): Filter by specific workflow ID.
217
202
  additional_metadata (Optional[List[str]]): Filter by additional metadata keys (e.g. ["key1:value1", "key2:value2"]).
218
203
  order_by_field (Optional[CronWorkflowsOrderByField]): Field to order the results by.
219
204
  order_by_direction (Optional[WorkflowRunOrderByDirection]): Direction to order the results.
@@ -221,7 +206,7 @@ class ScheduledClientAsync:
221
206
  Returns:
222
207
  ScheduledWorkflowsList: A list of scheduled workflows matching the criteria.
223
208
  """
224
- return await self._client.rest.aio.schedule_list(
209
+ return await self._client.rest.aio_list_schedule(
225
210
  offset=offset,
226
211
  limit=limit,
227
212
  workflow_id=workflow_id,
@@ -230,7 +215,7 @@ class ScheduledClientAsync:
230
215
  order_by_direction=order_by_direction,
231
216
  )
232
217
 
233
- async def get(
218
+ async def aio_get(
234
219
  self, scheduled: Union[str, ScheduledWorkflows]
235
220
  ) -> ScheduledWorkflows:
236
221
  """
@@ -242,7 +227,8 @@ class ScheduledClientAsync:
242
227
  Returns:
243
228
  ScheduledWorkflows: The requested scheduled workflow instance.
244
229
  """
245
- id_ = scheduled
246
- if isinstance(scheduled, ScheduledWorkflows):
247
- id_ = scheduled.metadata.id
248
- return await self._client.rest.aio.schedule_get(id_)
230
+ return await self._client.rest.aio_get_schedule(
231
+ scheduled.metadata.id
232
+ if isinstance(scheduled, ScheduledWorkflows)
233
+ else scheduled
234
+ )