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
@@ -0,0 +1,310 @@
1
+ import asyncio
2
+ import logging
3
+ from typing import Any, Callable, Optional, ParamSpec, Type, TypeVar, Union
4
+
5
+ from pydantic import BaseModel
6
+ from typing_extensions import deprecated
7
+
8
+ from hatchet_sdk.v0.clients.rest_client import RestApi
9
+ from hatchet_sdk.v0.context.context import Context
10
+ from hatchet_sdk.v0.contracts.workflows_pb2 import (
11
+ ConcurrencyLimitStrategy,
12
+ CreateStepRateLimit,
13
+ DesiredWorkerLabels,
14
+ StickyStrategy,
15
+ )
16
+ from hatchet_sdk.v0.features.cron import CronClient
17
+ from hatchet_sdk.v0.features.scheduled import ScheduledClient
18
+ from hatchet_sdk.v0.labels import DesiredWorkerLabel
19
+ from hatchet_sdk.v0.loader import ClientConfig, ConfigLoader
20
+ from hatchet_sdk.v0.rate_limit import RateLimit
21
+ from hatchet_sdk.v0.v2.callable import HatchetCallable
22
+
23
+ from .client import Client, new_client, new_client_raw
24
+ from .clients.admin import AdminClient
25
+ from .clients.dispatcher.dispatcher import DispatcherClient
26
+ from .clients.events import EventClient
27
+ from .clients.run_event_listener import RunEventListenerClient
28
+ from .logger import logger
29
+ from .worker.worker import Worker
30
+ from .workflow import (
31
+ ConcurrencyExpression,
32
+ WorkflowInterface,
33
+ WorkflowMeta,
34
+ WorkflowStepProtocol,
35
+ )
36
+
37
+ T = TypeVar("T", bound=BaseModel)
38
+ R = TypeVar("R")
39
+ P = ParamSpec("P")
40
+
41
+ TWorkflow = TypeVar("TWorkflow", bound=object)
42
+
43
+
44
+ def workflow(
45
+ name: str = "",
46
+ on_events: list[str] | None = None,
47
+ on_crons: list[str] | None = None,
48
+ version: str = "",
49
+ timeout: str = "60m",
50
+ schedule_timeout: str = "5m",
51
+ sticky: Union[StickyStrategy.Value, None] = None, # type: ignore[name-defined]
52
+ default_priority: int | None = None,
53
+ concurrency: ConcurrencyExpression | None = None,
54
+ input_validator: Type[T] | None = None,
55
+ ) -> Callable[[Type[TWorkflow]], WorkflowMeta]:
56
+ on_events = on_events or []
57
+ on_crons = on_crons or []
58
+
59
+ def inner(cls: Type[TWorkflow]) -> WorkflowMeta:
60
+ nonlocal name
61
+ name = name or str(cls.__name__)
62
+
63
+ setattr(cls, "on_events", on_events)
64
+ setattr(cls, "on_crons", on_crons)
65
+ setattr(cls, "name", name)
66
+ setattr(cls, "version", version)
67
+ setattr(cls, "timeout", timeout)
68
+ setattr(cls, "schedule_timeout", schedule_timeout)
69
+ setattr(cls, "sticky", sticky)
70
+ setattr(cls, "default_priority", default_priority)
71
+ setattr(cls, "concurrency_expression", concurrency)
72
+
73
+ # Define a new class with the same name and bases as the original, but
74
+ # with WorkflowMeta as its metaclass
75
+
76
+ ## TODO: Figure out how to type this metaclass correctly
77
+ setattr(cls, "input_validator", input_validator)
78
+
79
+ return WorkflowMeta(name, cls.__bases__, dict(cls.__dict__))
80
+
81
+ return inner
82
+
83
+
84
+ def step(
85
+ name: str = "",
86
+ timeout: str = "",
87
+ parents: list[str] | None = None,
88
+ retries: int = 0,
89
+ rate_limits: list[RateLimit] | None = None,
90
+ desired_worker_labels: dict[str, DesiredWorkerLabel] = {},
91
+ backoff_factor: float | None = None,
92
+ backoff_max_seconds: int | None = None,
93
+ ) -> Callable[[Callable[P, R]], Callable[P, R]]:
94
+ parents = parents or []
95
+
96
+ def inner(func: Callable[P, R]) -> Callable[P, R]:
97
+ limits = None
98
+ if rate_limits:
99
+ limits = [rate_limit._req for rate_limit in rate_limits or []]
100
+
101
+ setattr(func, "_step_name", name.lower() or str(func.__name__).lower())
102
+ setattr(func, "_step_parents", parents)
103
+ setattr(func, "_step_timeout", timeout)
104
+ setattr(func, "_step_retries", retries)
105
+ setattr(func, "_step_rate_limits", limits)
106
+ setattr(func, "_step_backoff_factor", backoff_factor)
107
+ setattr(func, "_step_backoff_max_seconds", backoff_max_seconds)
108
+
109
+ def create_label(d: DesiredWorkerLabel) -> DesiredWorkerLabels:
110
+ value = d["value"] if "value" in d else None
111
+ return DesiredWorkerLabels(
112
+ strValue=str(value) if not isinstance(value, int) else None,
113
+ intValue=value if isinstance(value, int) else None,
114
+ required=d["required"] if "required" in d else None, # type: ignore[arg-type]
115
+ weight=d["weight"] if "weight" in d else None,
116
+ comparator=d["comparator"] if "comparator" in d else None, # type: ignore[arg-type]
117
+ )
118
+
119
+ setattr(
120
+ func,
121
+ "_step_desired_worker_labels",
122
+ {key: create_label(d) for key, d in desired_worker_labels.items()},
123
+ )
124
+
125
+ return func
126
+
127
+ return inner
128
+
129
+
130
+ def on_failure_step(
131
+ name: str = "",
132
+ timeout: str = "",
133
+ retries: int = 0,
134
+ rate_limits: list[RateLimit] | None = None,
135
+ backoff_factor: float | None = None,
136
+ backoff_max_seconds: int | None = None,
137
+ ) -> Callable[..., Any]:
138
+ def inner(func: Callable[[Context], Any]) -> Callable[[Context], Any]:
139
+ limits = None
140
+ if rate_limits:
141
+ limits = [
142
+ CreateStepRateLimit(key=rate_limit.static_key, units=rate_limit.units) # type: ignore[arg-type]
143
+ for rate_limit in rate_limits or []
144
+ ]
145
+
146
+ setattr(
147
+ func, "_on_failure_step_name", name.lower() or str(func.__name__).lower()
148
+ )
149
+ setattr(func, "_on_failure_step_timeout", timeout)
150
+ setattr(func, "_on_failure_step_retries", retries)
151
+ setattr(func, "_on_failure_step_rate_limits", limits)
152
+ setattr(func, "_on_failure_step_backoff_factor", backoff_factor)
153
+ setattr(func, "_on_failure_step_backoff_max_seconds", backoff_max_seconds)
154
+
155
+ return func
156
+
157
+ return inner
158
+
159
+
160
+ def concurrency(
161
+ name: str = "",
162
+ max_runs: int = 1,
163
+ limit_strategy: ConcurrencyLimitStrategy = ConcurrencyLimitStrategy.CANCEL_IN_PROGRESS,
164
+ ) -> Callable[..., Any]:
165
+ def inner(func: Callable[[Context], Any]) -> Callable[[Context], Any]:
166
+ setattr(
167
+ func,
168
+ "_concurrency_fn_name",
169
+ name.lower() or str(func.__name__).lower(),
170
+ )
171
+ setattr(func, "_concurrency_max_runs", max_runs)
172
+ setattr(func, "_concurrency_limit_strategy", limit_strategy)
173
+
174
+ return func
175
+
176
+ return inner
177
+
178
+
179
+ class HatchetRest:
180
+ """
181
+ Main client for interacting with the Hatchet API.
182
+
183
+ This class provides access to various client interfaces and utility methods
184
+ for working with Hatchet via the REST API,
185
+
186
+ Attributes:
187
+ rest (RestApi): Interface for REST API operations.
188
+ """
189
+
190
+ rest: RestApi
191
+
192
+ def __init__(self, config: ClientConfig = ClientConfig()):
193
+ _config: ClientConfig = ConfigLoader(".").load_client_config(config)
194
+ self.rest = RestApi(_config.server_url, _config.token, _config.tenant_id)
195
+
196
+
197
+ class Hatchet:
198
+ """
199
+ Main client for interacting with the Hatchet SDK.
200
+
201
+ This class provides access to various client interfaces and utility methods
202
+ for working with Hatchet workers, workflows, and steps.
203
+
204
+ Attributes:
205
+ cron (CronClient): Interface for cron trigger operations.
206
+
207
+ admin (AdminClient): Interface for administrative operations.
208
+ dispatcher (DispatcherClient): Interface for dispatching operations.
209
+ event (EventClient): Interface for event-related operations.
210
+ rest (RestApi): Interface for REST API operations.
211
+ """
212
+
213
+ _client: Client
214
+ cron: CronClient
215
+ scheduled: ScheduledClient
216
+
217
+ @classmethod
218
+ def from_environment(
219
+ cls, defaults: ClientConfig = ClientConfig(), **kwargs: Any
220
+ ) -> "Hatchet":
221
+ return cls(client=new_client(defaults), **kwargs)
222
+
223
+ @classmethod
224
+ def from_config(cls, config: ClientConfig, **kwargs: Any) -> "Hatchet":
225
+ return cls(client=new_client_raw(config), **kwargs)
226
+
227
+ def __init__(
228
+ self,
229
+ debug: bool = False,
230
+ client: Optional[Client] = None,
231
+ config: ClientConfig = ClientConfig(),
232
+ ):
233
+ """
234
+ Initialize a new Hatchet instance.
235
+
236
+ Args:
237
+ debug (bool, optional): Enable debug logging. Defaults to False.
238
+ client (Optional[Client], optional): A pre-configured Client instance. Defaults to None.
239
+ config (ClientConfig, optional): Configuration for creating a new Client. Defaults to ClientConfig().
240
+ """
241
+ if client is not None:
242
+ self._client = client
243
+ else:
244
+ self._client = new_client(config, debug)
245
+
246
+ if debug:
247
+ logger.setLevel(logging.DEBUG)
248
+
249
+ self.cron = CronClient(self._client)
250
+ self.scheduled = ScheduledClient(self._client)
251
+
252
+ @property
253
+ @deprecated(
254
+ "Direct access to client is deprecated and will be removed in a future version. Use specific client properties (Hatchet.admin, Hatchet.dispatcher, Hatchet.event, Hatchet.rest) instead. [0.32.0]",
255
+ )
256
+ def client(self) -> Client:
257
+ return self._client
258
+
259
+ @property
260
+ def admin(self) -> AdminClient:
261
+ return self._client.admin
262
+
263
+ @property
264
+ def dispatcher(self) -> DispatcherClient:
265
+ return self._client.dispatcher
266
+
267
+ @property
268
+ def event(self) -> EventClient:
269
+ return self._client.event
270
+
271
+ @property
272
+ def rest(self) -> RestApi:
273
+ return self._client.rest
274
+
275
+ @property
276
+ def listener(self) -> RunEventListenerClient:
277
+ return self._client.listener
278
+
279
+ @property
280
+ def config(self) -> ClientConfig:
281
+ return self._client.config
282
+
283
+ @property
284
+ def tenant_id(self) -> str:
285
+ return self._client.config.tenant_id
286
+
287
+ concurrency = staticmethod(concurrency)
288
+
289
+ workflow = staticmethod(workflow)
290
+
291
+ step = staticmethod(step)
292
+
293
+ on_failure_step = staticmethod(on_failure_step)
294
+
295
+ def worker(
296
+ self, name: str, max_runs: int | None = None, labels: dict[str, str | int] = {}
297
+ ) -> Worker:
298
+ try:
299
+ loop = asyncio.get_running_loop()
300
+ except RuntimeError:
301
+ loop = None
302
+
303
+ return Worker(
304
+ name=name,
305
+ max_runs=max_runs,
306
+ labels=labels,
307
+ config=self._client.config,
308
+ debug=self._client.debug,
309
+ owned_loop=loop is None,
310
+ )
@@ -0,0 +1,10 @@
1
+ from typing import TypedDict
2
+
3
+
4
+ class DesiredWorkerLabel(TypedDict, total=False):
5
+ value: str | int
6
+ required: bool | None = None
7
+ weight: int | None = None
8
+ comparator: int | None = (
9
+ None # _ClassVar[WorkerLabelComparator] TODO figure out type
10
+ )
@@ -0,0 +1,13 @@
1
+ import logging
2
+ import sys
3
+
4
+ # Create a named logger
5
+ logger = logging.getLogger("hatchet")
6
+ logger.setLevel(logging.INFO)
7
+
8
+ handler = logging.StreamHandler(sys.stdout)
9
+ formatter = logging.Formatter("[%(levelname)s]\tšŸŖ“ -- %(asctime)s - %(message)s")
10
+ handler.setFormatter(formatter)
11
+ logger.addHandler(handler)
12
+
13
+ logger.propagate = False
@@ -0,0 +1,2 @@
1
+ def get_metadata(token: str):
2
+ return [("authorization", "bearer " + token)]