hatchet-sdk 0.47.0__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 +75 -66
  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 +118 -218
  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 +9 -5
  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/v0/logger.py +13 -0
  267. hatchet_sdk/v0/metadata.py +2 -0
  268. hatchet_sdk/v0/opentelemetry/instrumentor.py +396 -0
  269. hatchet_sdk/v0/rate_limit.py +126 -0
  270. hatchet_sdk/v0/semver.py +30 -0
  271. hatchet_sdk/v0/token.py +27 -0
  272. hatchet_sdk/v0/utils/aio_utils.py +137 -0
  273. hatchet_sdk/v0/utils/backoff.py +9 -0
  274. hatchet_sdk/v0/utils/typing.py +12 -0
  275. hatchet_sdk/{v2 → v0/v2}/callable.py +8 -8
  276. hatchet_sdk/{v2 → v0/v2}/concurrency.py +2 -2
  277. hatchet_sdk/{v2 → v0/v2}/hatchet.py +10 -10
  278. hatchet_sdk/v0/worker/__init__.py +1 -0
  279. hatchet_sdk/v0/worker/action_listener_process.py +278 -0
  280. hatchet_sdk/v0/worker/runner/run_loop_manager.py +112 -0
  281. hatchet_sdk/v0/worker/runner/runner.py +460 -0
  282. hatchet_sdk/v0/worker/runner/utils/capture_logs.py +81 -0
  283. hatchet_sdk/v0/worker/runner/utils/error_with_traceback.py +6 -0
  284. hatchet_sdk/v0/worker/worker.py +391 -0
  285. hatchet_sdk/v0/workflow.py +261 -0
  286. hatchet_sdk/v0/workflow_run.py +59 -0
  287. hatchet_sdk/worker/__init__.py +0 -1
  288. hatchet_sdk/worker/action_listener_process.py +36 -33
  289. hatchet_sdk/worker/runner/run_loop_manager.py +18 -16
  290. hatchet_sdk/worker/runner/runner.py +32 -60
  291. hatchet_sdk/worker/runner/utils/capture_logs.py +25 -14
  292. hatchet_sdk/worker/runner/utils/error_with_traceback.py +1 -1
  293. hatchet_sdk/worker/worker.py +61 -75
  294. hatchet_sdk/workflow.py +473 -207
  295. hatchet_sdk/workflow_run.py +5 -18
  296. {hatchet_sdk-0.47.0.dist-info → hatchet_sdk-1.0.0.dist-info}/METADATA +2 -1
  297. hatchet_sdk-1.0.0.dist-info/RECORD +485 -0
  298. hatchet_sdk/utils/serialization.py +0 -18
  299. hatchet_sdk-0.47.0.dist-info/RECORD +0 -237
  300. /hatchet_sdk/{loader.py → v0/loader.py} +0 -0
  301. /hatchet_sdk/{utils → v0/utils}/types.py +0 -0
  302. {hatchet_sdk-0.47.0.dist-info → hatchet_sdk-1.0.0.dist-info}/WHEEL +0 -0
  303. {hatchet_sdk-0.47.0.dist-info → hatchet_sdk-1.0.0.dist-info}/entry_points.txt +0 -0
@@ -1,13 +1,14 @@
1
1
  import asyncio
2
2
  import datetime
3
3
  import json
4
- from typing import Any, Dict, List, Optional, TypedDict
5
- from uuid import uuid4
4
+ from typing import List, cast
6
5
 
7
6
  import grpc
8
7
  from google.protobuf import timestamp_pb2
8
+ from pydantic import BaseModel, Field
9
9
 
10
10
  from hatchet_sdk.clients.rest.tenacity_utils import tenacity_retry
11
+ from hatchet_sdk.config import ClientConfig
11
12
  from hatchet_sdk.contracts.events_pb2 import (
12
13
  BulkPushEventRequest,
13
14
  Event,
@@ -16,20 +17,18 @@ from hatchet_sdk.contracts.events_pb2 import (
16
17
  PutStreamEventRequest,
17
18
  )
18
19
  from hatchet_sdk.contracts.events_pb2_grpc import EventsServiceStub
19
- from hatchet_sdk.utils.serialization import flatten
20
+ from hatchet_sdk.metadata import get_metadata
21
+ from hatchet_sdk.utils.typing import JSONSerializableMapping
20
22
 
21
- from ..loader import ClientConfig
22
- from ..metadata import get_metadata
23
23
 
24
-
25
- def new_event(conn, config: ClientConfig):
24
+ def new_event(conn: grpc.Channel, config: ClientConfig) -> "EventClient":
26
25
  return EventClient(
27
- client=EventsServiceStub(conn),
26
+ client=EventsServiceStub(conn), # type: ignore[no-untyped-call]
28
27
  config=config,
29
28
  )
30
29
 
31
30
 
32
- def proto_timestamp_now():
31
+ def proto_timestamp_now() -> timestamp_pb2.Timestamp:
33
32
  t = datetime.datetime.now().timestamp()
34
33
  seconds = int(t)
35
34
  nanos = int(t % 1 * 1e9)
@@ -37,19 +36,19 @@ def proto_timestamp_now():
37
36
  return timestamp_pb2.Timestamp(seconds=seconds, nanos=nanos)
38
37
 
39
38
 
40
- class PushEventOptions(TypedDict, total=False):
41
- additional_metadata: Dict[str, str] | None = None
39
+ class PushEventOptions(BaseModel):
40
+ additional_metadata: JSONSerializableMapping = Field(default_factory=dict)
42
41
  namespace: str | None = None
43
42
 
44
43
 
45
- class BulkPushEventOptions(TypedDict, total=False):
44
+ class BulkPushEventOptions(BaseModel):
46
45
  namespace: str | None = None
47
46
 
48
47
 
49
- class BulkPushEventWithMetadata(TypedDict, total=False):
48
+ class BulkPushEventWithMetadata(BaseModel):
50
49
  key: str
51
- payload: Any
52
- additional_metadata: Optional[Dict[str, Any]] # Optional metadata
50
+ payload: JSONSerializableMapping = Field(default_factory=dict)
51
+ additional_metadata: JSONSerializableMapping = Field(default_factory=dict)
53
52
 
54
53
 
55
54
  class EventClient:
@@ -58,126 +57,124 @@ class EventClient:
58
57
  self.token = config.token
59
58
  self.namespace = config.namespace
60
59
 
61
- async def async_push(
62
- self, event_key, payload, options: Optional[PushEventOptions] = None
60
+ async def aio_push(
61
+ self,
62
+ event_key: str,
63
+ payload: JSONSerializableMapping,
64
+ options: PushEventOptions = PushEventOptions(),
63
65
  ) -> Event:
64
66
  return await asyncio.to_thread(
65
67
  self.push, event_key=event_key, payload=payload, options=options
66
68
  )
67
69
 
68
- async def async_bulk_push(
70
+ async def aio_bulk_push(
69
71
  self,
70
- events: List[BulkPushEventWithMetadata],
71
- options: Optional[BulkPushEventOptions] = None,
72
+ events: list[BulkPushEventWithMetadata],
73
+ options: BulkPushEventOptions = BulkPushEventOptions(),
72
74
  ) -> List[Event]:
73
75
  return await asyncio.to_thread(self.bulk_push, events=events, options=options)
74
76
 
75
77
  ## IMPORTANT: Keep this method's signature in sync with the wrapper in the OTel instrumentor
76
78
  @tenacity_retry
77
- def push(self, event_key, payload, options: PushEventOptions = None) -> Event:
78
- namespace = self.namespace
79
-
80
- if (
81
- options is not None
82
- and "namespace" in options
83
- and options["namespace"] is not None
84
- ):
85
- namespace = options.pop("namespace")
86
-
79
+ def push(
80
+ self,
81
+ event_key: str,
82
+ payload: JSONSerializableMapping,
83
+ options: PushEventOptions = PushEventOptions(),
84
+ ) -> Event:
85
+ namespace = options.namespace or self.namespace
87
86
  namespaced_event_key = namespace + event_key
88
87
 
89
88
  try:
90
- meta = dict() if options is None else options["additional_metadata"]
91
- meta_bytes = None if meta is None else json.dumps(meta).encode("utf-8")
89
+ meta = options.additional_metadata
90
+ meta_bytes = None if meta is None else json.dumps(meta)
92
91
  except Exception as e:
93
92
  raise ValueError(f"Error encoding meta: {e}")
94
93
 
95
94
  try:
96
- payload_bytes = json.dumps(payload).encode("utf-8")
97
- except json.UnicodeEncodeError as e:
95
+ payload_str = json.dumps(payload)
96
+ except (TypeError, ValueError) as e:
98
97
  raise ValueError(f"Error encoding payload: {e}")
99
98
 
100
99
  request = PushEventRequest(
101
100
  key=namespaced_event_key,
102
- payload=payload_bytes,
101
+ payload=payload_str,
103
102
  eventTimestamp=proto_timestamp_now(),
104
103
  additionalMetadata=meta_bytes,
105
104
  )
106
105
 
107
- return self.client.Push(request, metadata=get_metadata(self.token))
106
+ return cast(Event, self.client.Push(request, metadata=get_metadata(self.token)))
107
+
108
+ def _create_push_event_request(
109
+ self,
110
+ event: BulkPushEventWithMetadata,
111
+ namespace: str,
112
+ ) -> PushEventRequest:
113
+ event_key = namespace + event.key
114
+ payload = event.payload
115
+
116
+ meta = event.additional_metadata
117
+
118
+ try:
119
+ meta_str = json.dumps(meta)
120
+ except Exception as e:
121
+ raise ValueError(f"Error encoding meta: {e}")
122
+
123
+ try:
124
+ serialized_payload = json.dumps(payload)
125
+ except (TypeError, ValueError) as e:
126
+ raise ValueError(f"Error serializing payload: {e}")
127
+
128
+ return PushEventRequest(
129
+ key=event_key,
130
+ payload=serialized_payload,
131
+ eventTimestamp=proto_timestamp_now(),
132
+ additionalMetadata=meta_str,
133
+ )
108
134
 
109
135
  ## IMPORTANT: Keep this method's signature in sync with the wrapper in the OTel instrumentor
110
136
  @tenacity_retry
111
137
  def bulk_push(
112
138
  self,
113
139
  events: List[BulkPushEventWithMetadata],
114
- options: BulkPushEventOptions = None,
140
+ options: BulkPushEventOptions = BulkPushEventOptions(),
115
141
  ) -> List[Event]:
116
- namespace = self.namespace
117
-
118
- if (
119
- options is not None
120
- and "namespace" in options
121
- and options["namespace"] is not None
122
- ):
123
- namespace = options.pop("namespace")
124
-
125
- bulk_events = []
126
- for event in events:
127
- event_key = namespace + event["key"]
128
- payload = event["payload"]
129
-
130
- try:
131
- meta = event.get("additional_metadata", {})
132
- meta_bytes = json.dumps(meta).encode("utf-8") if meta else None
133
- except Exception as e:
134
- raise ValueError(f"Error encoding meta: {e}")
135
-
136
- try:
137
- payload_bytes = json.dumps(payload).encode("utf-8")
138
- except json.UnicodeEncodeError as e:
139
- raise ValueError(f"Error encoding payload: {e}")
140
-
141
- request = PushEventRequest(
142
- key=event_key,
143
- payload=payload_bytes,
144
- eventTimestamp=proto_timestamp_now(),
145
- additionalMetadata=meta_bytes,
146
- )
147
- bulk_events.append(request)
148
-
149
- bulk_request = BulkPushEventRequest(events=bulk_events)
142
+ namespace = options.namespace or self.namespace
143
+
144
+ bulk_request = BulkPushEventRequest(
145
+ events=[
146
+ self._create_push_event_request(event, namespace) for event in events
147
+ ]
148
+ )
150
149
 
151
150
  response = self.client.BulkPush(bulk_request, metadata=get_metadata(self.token))
152
151
 
153
- return response.events
152
+ return cast(
153
+ list[Event],
154
+ response.events,
155
+ )
154
156
 
155
- def log(self, message: str, step_run_id: str):
156
- try:
157
- request = PutLogRequest(
158
- stepRunId=step_run_id,
159
- createdAt=proto_timestamp_now(),
160
- message=message,
161
- )
157
+ def log(self, message: str, step_run_id: str) -> None:
158
+ request = PutLogRequest(
159
+ stepRunId=step_run_id,
160
+ createdAt=proto_timestamp_now(),
161
+ message=message,
162
+ )
162
163
 
163
- self.client.PutLog(request, metadata=get_metadata(self.token))
164
- except Exception as e:
165
- raise ValueError(f"Error logging: {e}")
164
+ self.client.PutLog(request, metadata=get_metadata(self.token))
166
165
 
167
- def stream(self, data: str | bytes, step_run_id: str):
168
- try:
169
- if isinstance(data, str):
170
- data_bytes = data.encode("utf-8")
171
- elif isinstance(data, bytes):
172
- data_bytes = data
173
- else:
174
- raise ValueError("Invalid data type. Expected str, bytes, or file.")
175
-
176
- request = PutStreamEventRequest(
177
- stepRunId=step_run_id,
178
- createdAt=proto_timestamp_now(),
179
- message=data_bytes,
180
- )
181
- self.client.PutStreamEvent(request, metadata=get_metadata(self.token))
182
- except Exception as e:
183
- raise ValueError(f"Error putting stream event: {e}")
166
+ def stream(self, data: str | bytes, step_run_id: str) -> None:
167
+ if isinstance(data, str):
168
+ data_bytes = data.encode("utf-8")
169
+ elif isinstance(data, bytes):
170
+ data_bytes = data
171
+ else:
172
+ raise ValueError("Invalid data type. Expected str, bytes, or file.")
173
+
174
+ request = PutStreamEventRequest(
175
+ stepRunId=step_run_id,
176
+ createdAt=proto_timestamp_now(),
177
+ message=data_bytes,
178
+ )
179
+
180
+ self.client.PutStreamEvent(request, metadata=get_metadata(self.token))
@@ -28,11 +28,13 @@ from hatchet_sdk.clients.rest.api.rate_limits_api import RateLimitsApi
28
28
  from hatchet_sdk.clients.rest.api.slack_api import SlackApi
29
29
  from hatchet_sdk.clients.rest.api.sns_api import SNSApi
30
30
  from hatchet_sdk.clients.rest.api.step_run_api import StepRunApi
31
+ from hatchet_sdk.clients.rest.api.task_api import TaskApi
31
32
  from hatchet_sdk.clients.rest.api.tenant_api import TenantApi
32
33
  from hatchet_sdk.clients.rest.api.user_api import UserApi
33
34
  from hatchet_sdk.clients.rest.api.worker_api import WorkerApi
34
35
  from hatchet_sdk.clients.rest.api.workflow_api import WorkflowApi
35
36
  from hatchet_sdk.clients.rest.api.workflow_run_api import WorkflowRunApi
37
+ from hatchet_sdk.clients.rest.api.workflow_runs_api import WorkflowRunsApi
36
38
  from hatchet_sdk.clients.rest.api_client import ApiClient
37
39
 
38
40
  # import ApiClient
@@ -204,6 +206,7 @@ from hatchet_sdk.clients.rest.models.tenant_resource_policy import TenantResourc
204
206
  from hatchet_sdk.clients.rest.models.tenant_step_run_queue_metrics import (
205
207
  TenantStepRunQueueMetrics,
206
208
  )
209
+ from hatchet_sdk.clients.rest.models.tenant_version import TenantVersion
207
210
  from hatchet_sdk.clients.rest.models.trigger_workflow_run_request import (
208
211
  TriggerWorkflowRunRequest,
209
212
  )
@@ -225,6 +228,24 @@ from hatchet_sdk.clients.rest.models.user_tenant_memberships_list import (
225
228
  UserTenantMembershipsList,
226
229
  )
227
230
  from hatchet_sdk.clients.rest.models.user_tenant_public import UserTenantPublic
231
+ from hatchet_sdk.clients.rest.models.v1_cancel_task_request import V1CancelTaskRequest
232
+ from hatchet_sdk.clients.rest.models.v1_dag_children import V1DagChildren
233
+ from hatchet_sdk.clients.rest.models.v1_replay_task_request import V1ReplayTaskRequest
234
+ from hatchet_sdk.clients.rest.models.v1_task import V1Task
235
+ from hatchet_sdk.clients.rest.models.v1_task_event import V1TaskEvent
236
+ from hatchet_sdk.clients.rest.models.v1_task_event_list import V1TaskEventList
237
+ from hatchet_sdk.clients.rest.models.v1_task_event_type import V1TaskEventType
238
+ from hatchet_sdk.clients.rest.models.v1_task_filter import V1TaskFilter
239
+ from hatchet_sdk.clients.rest.models.v1_task_point_metric import V1TaskPointMetric
240
+ from hatchet_sdk.clients.rest.models.v1_task_point_metrics import V1TaskPointMetrics
241
+ from hatchet_sdk.clients.rest.models.v1_task_run_metric import V1TaskRunMetric
242
+ from hatchet_sdk.clients.rest.models.v1_task_run_status import V1TaskRunStatus
243
+ from hatchet_sdk.clients.rest.models.v1_task_status import V1TaskStatus
244
+ from hatchet_sdk.clients.rest.models.v1_task_summary import V1TaskSummary
245
+ from hatchet_sdk.clients.rest.models.v1_task_summary_list import V1TaskSummaryList
246
+ from hatchet_sdk.clients.rest.models.v1_workflow_run import V1WorkflowRun
247
+ from hatchet_sdk.clients.rest.models.v1_workflow_run_details import V1WorkflowRunDetails
248
+ from hatchet_sdk.clients.rest.models.v1_workflow_type import V1WorkflowType
228
249
  from hatchet_sdk.clients.rest.models.webhook_worker import WebhookWorker
229
250
  from hatchet_sdk.clients.rest.models.webhook_worker_create_request import (
230
251
  WebhookWorkerCreateRequest,
@@ -263,6 +284,9 @@ from hatchet_sdk.clients.rest.models.workflow_run_order_by_field import (
263
284
  WorkflowRunOrderByField,
264
285
  )
265
286
  from hatchet_sdk.clients.rest.models.workflow_run_shape import WorkflowRunShape
287
+ from hatchet_sdk.clients.rest.models.workflow_run_shape_item_for_workflow_run_details import (
288
+ WorkflowRunShapeItemForWorkflowRunDetails,
289
+ )
266
290
  from hatchet_sdk.clients.rest.models.workflow_run_status import WorkflowRunStatus
267
291
  from hatchet_sdk.clients.rest.models.workflow_run_triggered_by import (
268
292
  WorkflowRunTriggeredBy,
@@ -12,8 +12,10 @@ from hatchet_sdk.clients.rest.api.rate_limits_api import RateLimitsApi
12
12
  from hatchet_sdk.clients.rest.api.slack_api import SlackApi
13
13
  from hatchet_sdk.clients.rest.api.sns_api import SNSApi
14
14
  from hatchet_sdk.clients.rest.api.step_run_api import StepRunApi
15
+ from hatchet_sdk.clients.rest.api.task_api import TaskApi
15
16
  from hatchet_sdk.clients.rest.api.tenant_api import TenantApi
16
17
  from hatchet_sdk.clients.rest.api.user_api import UserApi
17
18
  from hatchet_sdk.clients.rest.api.worker_api import WorkerApi
18
19
  from hatchet_sdk.clients.rest.api.workflow_api import WorkflowApi
19
20
  from hatchet_sdk.clients.rest.api.workflow_run_api import WorkflowRunApi
21
+ from hatchet_sdk.clients.rest.api.workflow_runs_api import WorkflowRunsApi