hatchet-sdk 0.47.1__py3-none-any.whl → 1.0.0a1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of hatchet-sdk might be problematic. Click here for more details.

Files changed (329) hide show
  1. hatchet_sdk/__init__.py +45 -25
  2. hatchet_sdk/client.py +19 -94
  3. hatchet_sdk/clients/admin.py +309 -389
  4. hatchet_sdk/clients/dispatcher/action_listener.py +131 -109
  5. hatchet_sdk/clients/dispatcher/dispatcher.py +39 -37
  6. hatchet_sdk/clients/durable_event_listener.py +327 -0
  7. hatchet_sdk/clients/event_ts.py +23 -10
  8. hatchet_sdk/clients/events.py +96 -99
  9. hatchet_sdk/clients/rest/__init__.py +35 -0
  10. hatchet_sdk/clients/rest/api/__init__.py +2 -0
  11. hatchet_sdk/clients/rest/api/log_api.py +258 -0
  12. hatchet_sdk/clients/rest/api/task_api.py +2200 -0
  13. hatchet_sdk/clients/rest/api/workflow_runs_api.py +1274 -116
  14. hatchet_sdk/clients/rest/api_client.py +1 -1
  15. hatchet_sdk/clients/rest/configuration.py +8 -1
  16. hatchet_sdk/clients/rest/exceptions.py +21 -0
  17. hatchet_sdk/clients/rest/models/__init__.py +33 -0
  18. hatchet_sdk/clients/rest/models/tenant.py +4 -0
  19. hatchet_sdk/clients/rest/models/tenant_version.py +37 -0
  20. hatchet_sdk/clients/rest/models/update_tenant_request.py +7 -0
  21. hatchet_sdk/clients/rest/models/v1_cancel_task_request.py +104 -0
  22. hatchet_sdk/clients/rest/models/v1_dag_children.py +102 -0
  23. hatchet_sdk/clients/rest/models/v1_log_line.py +94 -0
  24. hatchet_sdk/clients/rest/models/v1_log_line_level.py +39 -0
  25. hatchet_sdk/clients/rest/models/v1_log_line_list.py +110 -0
  26. hatchet_sdk/clients/rest/models/v1_replay_task_request.py +104 -0
  27. hatchet_sdk/clients/rest/models/v1_task.py +174 -0
  28. hatchet_sdk/clients/rest/models/v1_task_event.py +118 -0
  29. hatchet_sdk/clients/rest/models/v1_task_event_list.py +110 -0
  30. hatchet_sdk/clients/rest/models/v1_task_event_type.py +55 -0
  31. hatchet_sdk/clients/rest/models/v1_task_filter.py +106 -0
  32. hatchet_sdk/clients/rest/models/v1_task_point_metric.py +92 -0
  33. hatchet_sdk/clients/rest/models/v1_task_point_metrics.py +100 -0
  34. hatchet_sdk/clients/rest/models/v1_task_run_metric.py +88 -0
  35. hatchet_sdk/clients/rest/models/v1_task_run_status.py +40 -0
  36. hatchet_sdk/clients/rest/models/v1_task_status.py +40 -0
  37. hatchet_sdk/clients/rest/models/v1_task_summary.py +228 -0
  38. hatchet_sdk/clients/rest/models/v1_task_summary_list.py +110 -0
  39. hatchet_sdk/clients/rest/models/v1_trigger_workflow_run_request.py +95 -0
  40. hatchet_sdk/clients/rest/models/v1_workflow_run.py +171 -0
  41. hatchet_sdk/clients/rest/models/v1_workflow_run_details.py +145 -0
  42. hatchet_sdk/clients/rest/models/v1_workflow_run_display_name.py +98 -0
  43. hatchet_sdk/clients/rest/models/v1_workflow_run_display_name_list.py +114 -0
  44. hatchet_sdk/clients/rest/models/v1_workflow_type.py +37 -0
  45. hatchet_sdk/clients/rest/models/workflow_run_shape_item_for_workflow_run_details.py +104 -0
  46. hatchet_sdk/clients/rest/rest.py +37 -26
  47. hatchet_sdk/clients/rest/tenacity_utils.py +1 -1
  48. hatchet_sdk/clients/rest_client.py +153 -116
  49. hatchet_sdk/clients/run_event_listener.py +65 -60
  50. hatchet_sdk/clients/workflow_listener.py +75 -66
  51. hatchet_sdk/config.py +117 -0
  52. hatchet_sdk/connection.py +27 -13
  53. hatchet_sdk/context/__init__.py +0 -1
  54. hatchet_sdk/context/context.py +118 -280
  55. hatchet_sdk/contracts/dispatcher_pb2_grpc.py +1 -1
  56. hatchet_sdk/contracts/events_pb2.py +2 -2
  57. hatchet_sdk/contracts/events_pb2_grpc.py +1 -1
  58. hatchet_sdk/contracts/v1/dispatcher_pb2.py +36 -0
  59. hatchet_sdk/contracts/v1/dispatcher_pb2.pyi +38 -0
  60. hatchet_sdk/contracts/v1/dispatcher_pb2_grpc.py +145 -0
  61. hatchet_sdk/contracts/v1/shared/condition_pb2.py +39 -0
  62. hatchet_sdk/contracts/v1/shared/condition_pb2.pyi +72 -0
  63. hatchet_sdk/contracts/v1/shared/condition_pb2_grpc.py +29 -0
  64. hatchet_sdk/contracts/v1/workflows_pb2.py +67 -0
  65. hatchet_sdk/contracts/v1/workflows_pb2.pyi +228 -0
  66. hatchet_sdk/contracts/v1/workflows_pb2_grpc.py +234 -0
  67. hatchet_sdk/contracts/workflows_pb2_grpc.py +1 -1
  68. hatchet_sdk/features/cron.py +43 -57
  69. hatchet_sdk/features/scheduled.py +60 -74
  70. hatchet_sdk/hatchet.py +491 -218
  71. hatchet_sdk/labels.py +4 -6
  72. hatchet_sdk/metadata.py +1 -1
  73. hatchet_sdk/opentelemetry/instrumentor.py +17 -18
  74. hatchet_sdk/rate_limit.py +40 -55
  75. hatchet_sdk/runnables/contextvars.py +12 -0
  76. hatchet_sdk/runnables/standalone.py +194 -0
  77. hatchet_sdk/runnables/task.py +144 -0
  78. hatchet_sdk/runnables/types.py +138 -0
  79. hatchet_sdk/runnables/workflow.py +764 -0
  80. hatchet_sdk/token.py +13 -9
  81. hatchet_sdk/utils/aio_utils.py +0 -119
  82. hatchet_sdk/utils/proto_enums.py +47 -0
  83. hatchet_sdk/utils/timedelta_to_expression.py +23 -0
  84. hatchet_sdk/utils/typing.py +10 -2
  85. hatchet_sdk/v0/__init__.py +251 -0
  86. hatchet_sdk/v0/client.py +119 -0
  87. hatchet_sdk/v0/clients/admin.py +541 -0
  88. hatchet_sdk/v0/clients/dispatcher/action_listener.py +422 -0
  89. hatchet_sdk/v0/clients/dispatcher/dispatcher.py +204 -0
  90. hatchet_sdk/v0/clients/event_ts.py +28 -0
  91. hatchet_sdk/v0/clients/events.py +182 -0
  92. hatchet_sdk/v0/clients/rest/__init__.py +307 -0
  93. hatchet_sdk/v0/clients/rest/api/__init__.py +19 -0
  94. hatchet_sdk/v0/clients/rest/api/api_token_api.py +858 -0
  95. hatchet_sdk/v0/clients/rest/api/default_api.py +2259 -0
  96. hatchet_sdk/v0/clients/rest/api/event_api.py +2548 -0
  97. hatchet_sdk/v0/clients/rest/api/github_api.py +331 -0
  98. hatchet_sdk/v0/clients/rest/api/healthcheck_api.py +483 -0
  99. hatchet_sdk/v0/clients/rest/api/log_api.py +449 -0
  100. hatchet_sdk/v0/clients/rest/api/metadata_api.py +728 -0
  101. hatchet_sdk/v0/clients/rest/api/rate_limits_api.py +423 -0
  102. hatchet_sdk/v0/clients/rest/api/slack_api.py +577 -0
  103. hatchet_sdk/v0/clients/rest/api/sns_api.py +872 -0
  104. hatchet_sdk/v0/clients/rest/api/step_run_api.py +2202 -0
  105. hatchet_sdk/v0/clients/rest/api/tenant_api.py +4430 -0
  106. hatchet_sdk/v0/clients/rest/api/user_api.py +2888 -0
  107. hatchet_sdk/v0/clients/rest/api/worker_api.py +858 -0
  108. hatchet_sdk/v0/clients/rest/api/workflow_api.py +6312 -0
  109. hatchet_sdk/v0/clients/rest/api/workflow_run_api.py +1932 -0
  110. hatchet_sdk/v0/clients/rest/api/workflow_runs_api.py +610 -0
  111. hatchet_sdk/v0/clients/rest/api_client.py +759 -0
  112. hatchet_sdk/v0/clients/rest/api_response.py +22 -0
  113. hatchet_sdk/v0/clients/rest/configuration.py +611 -0
  114. hatchet_sdk/v0/clients/rest/exceptions.py +200 -0
  115. hatchet_sdk/v0/clients/rest/models/__init__.py +274 -0
  116. hatchet_sdk/v0/clients/rest/models/accept_invite_request.py +83 -0
  117. hatchet_sdk/v0/clients/rest/models/api_error.py +102 -0
  118. hatchet_sdk/v0/clients/rest/models/api_errors.py +100 -0
  119. hatchet_sdk/v0/clients/rest/models/api_meta.py +144 -0
  120. hatchet_sdk/v0/clients/rest/models/api_meta_auth.py +85 -0
  121. hatchet_sdk/v0/clients/rest/models/api_meta_integration.py +88 -0
  122. hatchet_sdk/v0/clients/rest/models/api_meta_posthog.py +90 -0
  123. hatchet_sdk/v0/clients/rest/models/api_resource_meta.py +98 -0
  124. hatchet_sdk/v0/clients/rest/models/api_token.py +105 -0
  125. hatchet_sdk/v0/clients/rest/models/bulk_create_event_request.py +100 -0
  126. hatchet_sdk/v0/clients/rest/models/bulk_create_event_response.py +110 -0
  127. hatchet_sdk/v0/clients/rest/models/cancel_event_request.py +85 -0
  128. hatchet_sdk/v0/clients/rest/models/cancel_step_run_request.py +83 -0
  129. hatchet_sdk/v0/clients/rest/models/concurrency_limit_strategy.py +39 -0
  130. hatchet_sdk/v0/clients/rest/models/create_api_token_request.py +92 -0
  131. hatchet_sdk/v0/clients/rest/models/create_api_token_response.py +83 -0
  132. hatchet_sdk/v0/clients/rest/models/create_cron_workflow_trigger_request.py +98 -0
  133. hatchet_sdk/v0/clients/rest/models/create_event_request.py +95 -0
  134. hatchet_sdk/v0/clients/rest/models/create_pull_request_from_step_run.py +83 -0
  135. hatchet_sdk/v0/clients/rest/models/create_sns_integration_request.py +85 -0
  136. hatchet_sdk/v0/clients/rest/models/create_tenant_alert_email_group_request.py +83 -0
  137. hatchet_sdk/v0/clients/rest/models/create_tenant_invite_request.py +86 -0
  138. hatchet_sdk/v0/clients/rest/models/create_tenant_request.py +84 -0
  139. hatchet_sdk/v0/clients/rest/models/cron_workflows.py +131 -0
  140. hatchet_sdk/v0/clients/rest/models/cron_workflows_list.py +110 -0
  141. hatchet_sdk/v0/clients/rest/models/cron_workflows_method.py +37 -0
  142. hatchet_sdk/v0/clients/rest/models/cron_workflows_order_by_field.py +37 -0
  143. hatchet_sdk/v0/clients/rest/models/event.py +143 -0
  144. hatchet_sdk/v0/clients/rest/models/event_data.py +83 -0
  145. hatchet_sdk/v0/clients/rest/models/event_key_list.py +98 -0
  146. hatchet_sdk/v0/clients/rest/models/event_list.py +110 -0
  147. hatchet_sdk/v0/clients/rest/models/event_order_by_direction.py +37 -0
  148. hatchet_sdk/v0/clients/rest/models/event_order_by_field.py +36 -0
  149. hatchet_sdk/v0/clients/rest/models/event_update_cancel200_response.py +85 -0
  150. hatchet_sdk/v0/clients/rest/models/event_workflow_run_summary.py +116 -0
  151. hatchet_sdk/v0/clients/rest/models/events.py +110 -0
  152. hatchet_sdk/v0/clients/rest/models/get_step_run_diff_response.py +100 -0
  153. hatchet_sdk/v0/clients/rest/models/github_app_installation.py +107 -0
  154. hatchet_sdk/v0/clients/rest/models/github_branch.py +86 -0
  155. hatchet_sdk/v0/clients/rest/models/github_repo.py +86 -0
  156. hatchet_sdk/v0/clients/rest/models/info_get_version200_response.py +83 -0
  157. hatchet_sdk/v0/clients/rest/models/job.py +132 -0
  158. hatchet_sdk/v0/clients/rest/models/job_run.py +176 -0
  159. hatchet_sdk/v0/clients/rest/models/job_run_status.py +41 -0
  160. hatchet_sdk/v0/clients/rest/models/link_github_repository_request.py +106 -0
  161. hatchet_sdk/v0/clients/rest/models/list_api_tokens_response.py +110 -0
  162. hatchet_sdk/v0/clients/rest/models/list_github_app_installations_response.py +112 -0
  163. hatchet_sdk/v0/clients/rest/models/list_pull_requests_response.py +100 -0
  164. hatchet_sdk/v0/clients/rest/models/list_slack_webhooks.py +110 -0
  165. hatchet_sdk/v0/clients/rest/models/list_sns_integrations.py +110 -0
  166. hatchet_sdk/v0/clients/rest/models/log_line.py +94 -0
  167. hatchet_sdk/v0/clients/rest/models/log_line_level.py +39 -0
  168. hatchet_sdk/v0/clients/rest/models/log_line_list.py +110 -0
  169. hatchet_sdk/v0/clients/rest/models/log_line_order_by_direction.py +37 -0
  170. hatchet_sdk/v0/clients/rest/models/log_line_order_by_field.py +36 -0
  171. hatchet_sdk/v0/clients/rest/models/pagination_response.py +95 -0
  172. hatchet_sdk/v0/clients/rest/models/pull_request.py +112 -0
  173. hatchet_sdk/v0/clients/rest/models/pull_request_state.py +37 -0
  174. hatchet_sdk/v0/clients/rest/models/queue_metrics.py +97 -0
  175. hatchet_sdk/v0/clients/rest/models/rate_limit.py +117 -0
  176. hatchet_sdk/v0/clients/rest/models/rate_limit_list.py +110 -0
  177. hatchet_sdk/v0/clients/rest/models/rate_limit_order_by_direction.py +37 -0
  178. hatchet_sdk/v0/clients/rest/models/rate_limit_order_by_field.py +38 -0
  179. hatchet_sdk/v0/clients/rest/models/recent_step_runs.py +118 -0
  180. hatchet_sdk/v0/clients/rest/models/reject_invite_request.py +83 -0
  181. hatchet_sdk/v0/clients/rest/models/replay_event_request.py +85 -0
  182. hatchet_sdk/v0/clients/rest/models/replay_workflow_runs_request.py +85 -0
  183. hatchet_sdk/v0/clients/rest/models/replay_workflow_runs_response.py +100 -0
  184. hatchet_sdk/v0/clients/rest/models/rerun_step_run_request.py +83 -0
  185. hatchet_sdk/v0/clients/rest/models/schedule_workflow_run_request.py +92 -0
  186. hatchet_sdk/v0/clients/rest/models/scheduled_run_status.py +42 -0
  187. hatchet_sdk/v0/clients/rest/models/scheduled_workflows.py +149 -0
  188. hatchet_sdk/v0/clients/rest/models/scheduled_workflows_list.py +110 -0
  189. hatchet_sdk/v0/clients/rest/models/scheduled_workflows_method.py +37 -0
  190. hatchet_sdk/v0/clients/rest/models/scheduled_workflows_order_by_field.py +37 -0
  191. hatchet_sdk/v0/clients/rest/models/semaphore_slots.py +113 -0
  192. hatchet_sdk/v0/clients/rest/models/slack_webhook.py +127 -0
  193. hatchet_sdk/v0/clients/rest/models/sns_integration.py +114 -0
  194. hatchet_sdk/v0/clients/rest/models/step.py +123 -0
  195. hatchet_sdk/v0/clients/rest/models/step_run.py +202 -0
  196. hatchet_sdk/v0/clients/rest/models/step_run_archive.py +142 -0
  197. hatchet_sdk/v0/clients/rest/models/step_run_archive_list.py +110 -0
  198. hatchet_sdk/v0/clients/rest/models/step_run_diff.py +91 -0
  199. hatchet_sdk/v0/clients/rest/models/step_run_event.py +122 -0
  200. hatchet_sdk/v0/clients/rest/models/step_run_event_list.py +110 -0
  201. hatchet_sdk/v0/clients/rest/models/step_run_event_reason.py +52 -0
  202. hatchet_sdk/v0/clients/rest/models/step_run_event_severity.py +38 -0
  203. hatchet_sdk/v0/clients/rest/models/step_run_status.py +44 -0
  204. hatchet_sdk/v0/clients/rest/models/tenant.py +118 -0
  205. hatchet_sdk/v0/clients/rest/models/tenant_alert_email_group.py +98 -0
  206. hatchet_sdk/v0/clients/rest/models/tenant_alert_email_group_list.py +112 -0
  207. hatchet_sdk/v0/clients/rest/models/tenant_alerting_settings.py +143 -0
  208. hatchet_sdk/v0/clients/rest/models/tenant_invite.py +120 -0
  209. hatchet_sdk/v0/clients/rest/models/tenant_invite_list.py +110 -0
  210. hatchet_sdk/v0/clients/rest/models/tenant_list.py +110 -0
  211. hatchet_sdk/v0/clients/rest/models/tenant_member.py +123 -0
  212. hatchet_sdk/v0/clients/rest/models/tenant_member_list.py +110 -0
  213. hatchet_sdk/v0/clients/rest/models/tenant_member_role.py +38 -0
  214. hatchet_sdk/v0/clients/rest/models/tenant_queue_metrics.py +116 -0
  215. hatchet_sdk/v0/clients/rest/models/tenant_resource.py +40 -0
  216. hatchet_sdk/v0/clients/rest/models/tenant_resource_limit.py +135 -0
  217. hatchet_sdk/v0/clients/rest/models/tenant_resource_policy.py +102 -0
  218. hatchet_sdk/v0/clients/rest/models/tenant_step_run_queue_metrics.py +83 -0
  219. hatchet_sdk/v0/clients/rest/models/trigger_workflow_run_request.py +91 -0
  220. hatchet_sdk/v0/clients/rest/models/update_tenant_alert_email_group_request.py +83 -0
  221. hatchet_sdk/v0/clients/rest/models/update_tenant_invite_request.py +85 -0
  222. hatchet_sdk/v0/clients/rest/models/update_tenant_request.py +137 -0
  223. hatchet_sdk/v0/clients/rest/models/update_worker_request.py +87 -0
  224. hatchet_sdk/v0/clients/rest/models/user.py +126 -0
  225. hatchet_sdk/v0/clients/rest/models/user_change_password_request.py +88 -0
  226. hatchet_sdk/v0/clients/rest/models/user_login_request.py +86 -0
  227. hatchet_sdk/v0/clients/rest/models/user_register_request.py +91 -0
  228. hatchet_sdk/v0/clients/rest/models/user_tenant_memberships_list.py +110 -0
  229. hatchet_sdk/v0/clients/rest/models/user_tenant_public.py +86 -0
  230. hatchet_sdk/v0/clients/rest/models/webhook_worker.py +100 -0
  231. hatchet_sdk/v0/clients/rest/models/webhook_worker_create_request.py +94 -0
  232. hatchet_sdk/v0/clients/rest/models/webhook_worker_create_response.py +98 -0
  233. hatchet_sdk/v0/clients/rest/models/webhook_worker_created.py +102 -0
  234. hatchet_sdk/v0/clients/rest/models/webhook_worker_list_response.py +110 -0
  235. hatchet_sdk/v0/clients/rest/models/webhook_worker_request.py +102 -0
  236. hatchet_sdk/v0/clients/rest/models/webhook_worker_request_list_response.py +104 -0
  237. hatchet_sdk/v0/clients/rest/models/webhook_worker_request_method.py +38 -0
  238. hatchet_sdk/v0/clients/rest/models/worker.py +239 -0
  239. hatchet_sdk/v0/clients/rest/models/worker_label.py +102 -0
  240. hatchet_sdk/v0/clients/rest/models/worker_list.py +110 -0
  241. hatchet_sdk/v0/clients/rest/models/worker_runtime_info.py +103 -0
  242. hatchet_sdk/v0/clients/rest/models/worker_runtime_sdks.py +38 -0
  243. hatchet_sdk/v0/clients/rest/models/worker_type.py +38 -0
  244. hatchet_sdk/v0/clients/rest/models/workflow.py +165 -0
  245. hatchet_sdk/v0/clients/rest/models/workflow_concurrency.py +107 -0
  246. hatchet_sdk/v0/clients/rest/models/workflow_deployment_config.py +136 -0
  247. hatchet_sdk/v0/clients/rest/models/workflow_kind.py +38 -0
  248. hatchet_sdk/v0/clients/rest/models/workflow_list.py +120 -0
  249. hatchet_sdk/v0/clients/rest/models/workflow_metrics.py +97 -0
  250. hatchet_sdk/v0/clients/rest/models/workflow_run.py +188 -0
  251. hatchet_sdk/v0/clients/rest/models/workflow_run_cancel200_response.py +85 -0
  252. hatchet_sdk/v0/clients/rest/models/workflow_run_list.py +110 -0
  253. hatchet_sdk/v0/clients/rest/models/workflow_run_order_by_direction.py +37 -0
  254. hatchet_sdk/v0/clients/rest/models/workflow_run_order_by_field.py +39 -0
  255. hatchet_sdk/v0/clients/rest/models/workflow_run_shape.py +186 -0
  256. hatchet_sdk/v0/clients/rest/models/workflow_run_status.py +42 -0
  257. hatchet_sdk/v0/clients/rest/models/workflow_run_triggered_by.py +112 -0
  258. hatchet_sdk/v0/clients/rest/models/workflow_runs_cancel_request.py +85 -0
  259. hatchet_sdk/v0/clients/rest/models/workflow_runs_metrics.py +94 -0
  260. hatchet_sdk/v0/clients/rest/models/workflow_runs_metrics_counts.py +104 -0
  261. hatchet_sdk/v0/clients/rest/models/workflow_tag.py +84 -0
  262. hatchet_sdk/v0/clients/rest/models/workflow_trigger_cron_ref.py +86 -0
  263. hatchet_sdk/v0/clients/rest/models/workflow_trigger_event_ref.py +86 -0
  264. hatchet_sdk/v0/clients/rest/models/workflow_triggers.py +141 -0
  265. hatchet_sdk/v0/clients/rest/models/workflow_update_request.py +85 -0
  266. hatchet_sdk/v0/clients/rest/models/workflow_version.py +170 -0
  267. hatchet_sdk/v0/clients/rest/models/workflow_version_concurrency.py +114 -0
  268. hatchet_sdk/v0/clients/rest/models/workflow_version_definition.py +85 -0
  269. hatchet_sdk/v0/clients/rest/models/workflow_version_meta.py +123 -0
  270. hatchet_sdk/v0/clients/rest/models/workflow_workers_count.py +95 -0
  271. hatchet_sdk/v0/clients/rest/rest.py +187 -0
  272. hatchet_sdk/v0/clients/rest/tenacity_utils.py +39 -0
  273. hatchet_sdk/v0/clients/rest_client.py +622 -0
  274. hatchet_sdk/v0/clients/run_event_listener.py +260 -0
  275. hatchet_sdk/v0/clients/workflow_listener.py +277 -0
  276. hatchet_sdk/v0/connection.py +63 -0
  277. hatchet_sdk/v0/context/__init__.py +1 -0
  278. hatchet_sdk/v0/context/context.py +446 -0
  279. hatchet_sdk/v0/context/worker_context.py +28 -0
  280. hatchet_sdk/v0/contracts/dispatcher_pb2.py +102 -0
  281. hatchet_sdk/v0/contracts/dispatcher_pb2.pyi +387 -0
  282. hatchet_sdk/v0/contracts/dispatcher_pb2_grpc.py +621 -0
  283. hatchet_sdk/v0/contracts/events_pb2.py +46 -0
  284. hatchet_sdk/v0/contracts/events_pb2.pyi +87 -0
  285. hatchet_sdk/v0/contracts/events_pb2_grpc.py +274 -0
  286. hatchet_sdk/v0/contracts/workflows_pb2.py +80 -0
  287. hatchet_sdk/v0/contracts/workflows_pb2.pyi +312 -0
  288. hatchet_sdk/v0/contracts/workflows_pb2_grpc.py +277 -0
  289. hatchet_sdk/v0/features/cron.py +286 -0
  290. hatchet_sdk/v0/features/scheduled.py +248 -0
  291. hatchet_sdk/v0/hatchet.py +310 -0
  292. hatchet_sdk/v0/labels.py +10 -0
  293. hatchet_sdk/v0/logger.py +13 -0
  294. hatchet_sdk/v0/metadata.py +2 -0
  295. hatchet_sdk/v0/opentelemetry/instrumentor.py +396 -0
  296. hatchet_sdk/v0/rate_limit.py +126 -0
  297. hatchet_sdk/v0/token.py +27 -0
  298. hatchet_sdk/v0/utils/aio_utils.py +137 -0
  299. hatchet_sdk/v0/utils/backoff.py +9 -0
  300. hatchet_sdk/v0/utils/typing.py +12 -0
  301. hatchet_sdk/{v2 → v0/v2}/callable.py +8 -8
  302. hatchet_sdk/{v2 → v0/v2}/concurrency.py +2 -2
  303. hatchet_sdk/{v2 → v0/v2}/hatchet.py +10 -10
  304. hatchet_sdk/v0/worker/__init__.py +1 -0
  305. hatchet_sdk/v0/worker/action_listener_process.py +294 -0
  306. hatchet_sdk/v0/worker/runner/run_loop_manager.py +112 -0
  307. hatchet_sdk/v0/worker/runner/runner.py +460 -0
  308. hatchet_sdk/v0/worker/runner/utils/capture_logs.py +81 -0
  309. hatchet_sdk/v0/worker/worker.py +391 -0
  310. hatchet_sdk/{workflow.py → v0/workflow.py} +4 -4
  311. hatchet_sdk/v0/workflow_run.py +59 -0
  312. hatchet_sdk/waits.py +120 -0
  313. hatchet_sdk/worker/__init__.py +0 -1
  314. hatchet_sdk/worker/action_listener_process.py +80 -55
  315. hatchet_sdk/worker/runner/run_loop_manager.py +46 -34
  316. hatchet_sdk/worker/runner/runner.py +82 -87
  317. hatchet_sdk/worker/runner/utils/capture_logs.py +26 -23
  318. hatchet_sdk/worker/worker.py +172 -149
  319. hatchet_sdk/workflow_run.py +7 -21
  320. {hatchet_sdk-0.47.1.dist-info → hatchet_sdk-1.0.0a1.dist-info}/METADATA +2 -2
  321. hatchet_sdk-1.0.0a1.dist-info/RECORD +505 -0
  322. {hatchet_sdk-0.47.1.dist-info → hatchet_sdk-1.0.0a1.dist-info}/entry_points.txt +2 -0
  323. hatchet_sdk/utils/serialization.py +0 -18
  324. hatchet_sdk-0.47.1.dist-info/RECORD +0 -237
  325. /hatchet_sdk/{loader.py → v0/loader.py} +0 -0
  326. /hatchet_sdk/{semver.py → v0/semver.py} +0 -0
  327. /hatchet_sdk/{utils → v0/utils}/types.py +0 -0
  328. /hatchet_sdk/{worker → v0/worker}/runner/utils/error_with_traceback.py +0 -0
  329. {hatchet_sdk-0.47.1.dist-info → hatchet_sdk-1.0.0a1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,622 @@
1
+ import asyncio
2
+ import atexit
3
+ import datetime
4
+ import threading
5
+ from typing import Any, Coroutine, List
6
+
7
+ from pydantic import StrictInt
8
+
9
+ from hatchet_sdk.v0.clients.rest.api.event_api import EventApi
10
+ from hatchet_sdk.v0.clients.rest.api.log_api import LogApi
11
+ from hatchet_sdk.v0.clients.rest.api.step_run_api import StepRunApi
12
+ from hatchet_sdk.v0.clients.rest.api.worker_api import WorkerApi
13
+ from hatchet_sdk.v0.clients.rest.api.workflow_api import WorkflowApi
14
+ from hatchet_sdk.v0.clients.rest.api.workflow_run_api import WorkflowRunApi
15
+ from hatchet_sdk.v0.clients.rest.api.workflow_runs_api import WorkflowRunsApi
16
+ from hatchet_sdk.v0.clients.rest.api_client import ApiClient
17
+ from hatchet_sdk.v0.clients.rest.configuration import Configuration
18
+ from hatchet_sdk.v0.clients.rest.models import TriggerWorkflowRunRequest
19
+ from hatchet_sdk.v0.clients.rest.models.create_cron_workflow_trigger_request import (
20
+ CreateCronWorkflowTriggerRequest,
21
+ )
22
+ from hatchet_sdk.v0.clients.rest.models.cron_workflows import CronWorkflows
23
+ from hatchet_sdk.v0.clients.rest.models.cron_workflows_order_by_field import (
24
+ CronWorkflowsOrderByField,
25
+ )
26
+ from hatchet_sdk.v0.clients.rest.models.event_list import EventList
27
+ from hatchet_sdk.v0.clients.rest.models.event_order_by_direction import (
28
+ EventOrderByDirection,
29
+ )
30
+ from hatchet_sdk.v0.clients.rest.models.event_order_by_field import EventOrderByField
31
+ from hatchet_sdk.v0.clients.rest.models.log_line_level import LogLineLevel
32
+ from hatchet_sdk.v0.clients.rest.models.log_line_list import LogLineList
33
+ from hatchet_sdk.v0.clients.rest.models.log_line_order_by_direction import (
34
+ LogLineOrderByDirection,
35
+ )
36
+ from hatchet_sdk.v0.clients.rest.models.log_line_order_by_field import (
37
+ LogLineOrderByField,
38
+ )
39
+ from hatchet_sdk.v0.clients.rest.models.replay_event_request import ReplayEventRequest
40
+ from hatchet_sdk.v0.clients.rest.models.replay_workflow_runs_request import (
41
+ ReplayWorkflowRunsRequest,
42
+ )
43
+ from hatchet_sdk.v0.clients.rest.models.replay_workflow_runs_response import (
44
+ ReplayWorkflowRunsResponse,
45
+ )
46
+ from hatchet_sdk.v0.clients.rest.models.schedule_workflow_run_request import (
47
+ ScheduleWorkflowRunRequest,
48
+ )
49
+ from hatchet_sdk.v0.clients.rest.models.scheduled_workflows import ScheduledWorkflows
50
+ from hatchet_sdk.v0.clients.rest.models.scheduled_workflows_order_by_field import (
51
+ ScheduledWorkflowsOrderByField,
52
+ )
53
+ from hatchet_sdk.v0.clients.rest.models.workflow import Workflow
54
+ from hatchet_sdk.v0.clients.rest.models.workflow_kind import WorkflowKind
55
+ from hatchet_sdk.v0.clients.rest.models.workflow_list import WorkflowList
56
+ from hatchet_sdk.v0.clients.rest.models.workflow_run import WorkflowRun
57
+ from hatchet_sdk.v0.clients.rest.models.workflow_run_cancel200_response import (
58
+ WorkflowRunCancel200Response,
59
+ )
60
+ from hatchet_sdk.v0.clients.rest.models.workflow_run_list import WorkflowRunList
61
+ from hatchet_sdk.v0.clients.rest.models.workflow_run_order_by_direction import (
62
+ WorkflowRunOrderByDirection,
63
+ )
64
+ from hatchet_sdk.v0.clients.rest.models.workflow_run_order_by_field import (
65
+ WorkflowRunOrderByField,
66
+ )
67
+ from hatchet_sdk.v0.clients.rest.models.workflow_run_status import WorkflowRunStatus
68
+ from hatchet_sdk.v0.clients.rest.models.workflow_runs_cancel_request import (
69
+ WorkflowRunsCancelRequest,
70
+ )
71
+ from hatchet_sdk.v0.clients.rest.models.workflow_version import WorkflowVersion
72
+
73
+
74
+ class AsyncRestApi:
75
+ def __init__(self, host: str, api_key: str, tenant_id: str):
76
+ self.tenant_id = tenant_id
77
+
78
+ self.config = Configuration(
79
+ host=host,
80
+ access_token=api_key,
81
+ )
82
+
83
+ self._api_client = None
84
+ self._workflow_api = None
85
+ self._workflow_run_api = None
86
+ self._step_run_api = None
87
+ self._event_api = None
88
+ self._log_api = None
89
+ self._worker_api = None
90
+
91
+ @property
92
+ def api_client(self):
93
+ if self._api_client is None:
94
+ self._api_client = ApiClient(configuration=self.config)
95
+ return self._api_client
96
+
97
+ @property
98
+ def workflow_api(self):
99
+ if self._workflow_api is None:
100
+ self._workflow_api = WorkflowApi(self.api_client)
101
+ return self._workflow_api
102
+
103
+ @property
104
+ def workflow_run_api(self):
105
+ if self._workflow_run_api is None:
106
+ self._workflow_run_api = WorkflowRunApi(self.api_client)
107
+ return self._workflow_run_api
108
+
109
+ @property
110
+ def worker_api(self):
111
+ if self._worker_api is None:
112
+ self._worker_api = WorkerApi(self.api_client)
113
+
114
+ return self._worker_api
115
+
116
+ @property
117
+ def step_run_api(self):
118
+ if self._step_run_api is None:
119
+ self._step_run_api = StepRunApi(self.api_client)
120
+ return self._step_run_api
121
+
122
+ @property
123
+ def event_api(self):
124
+ if self._event_api is None:
125
+ self._event_api = EventApi(self.api_client)
126
+ return self._event_api
127
+
128
+ @property
129
+ def log_api(self):
130
+ if self._log_api is None:
131
+ self._log_api = LogApi(self.api_client)
132
+ return self._log_api
133
+
134
+ async def close(self):
135
+ # Ensure the aiohttp client session is closed
136
+ if self._api_client is not None:
137
+ await self._api_client.close()
138
+
139
+ async def workflow_list(self) -> WorkflowList:
140
+ return await self.workflow_api.workflow_list(
141
+ tenant=self.tenant_id,
142
+ )
143
+
144
+ async def workflow_get(self, workflow_id: str) -> Workflow:
145
+ return await self.workflow_api.workflow_get(
146
+ workflow=workflow_id,
147
+ )
148
+
149
+ async def workflow_version_get(
150
+ self, workflow_id: str, version: str | None = None
151
+ ) -> WorkflowVersion:
152
+ return await self.workflow_api.workflow_version_get(
153
+ workflow=workflow_id,
154
+ version=version,
155
+ )
156
+
157
+ async def workflow_run_list(
158
+ self,
159
+ workflow_id: str | None = None,
160
+ offset: int | None = None,
161
+ limit: int | None = None,
162
+ event_id: str | None = None,
163
+ parent_workflow_run_id: str | None = None,
164
+ parent_step_run_id: str | None = None,
165
+ statuses: list[WorkflowRunStatus] | None = None,
166
+ kinds: list[WorkflowKind] | None = None,
167
+ additional_metadata: list[str] | None = None,
168
+ order_by_field: WorkflowRunOrderByField | None = None,
169
+ order_by_direction: WorkflowRunOrderByDirection | None = None,
170
+ ) -> WorkflowRunList:
171
+ return await self.workflow_api.workflow_run_list(
172
+ tenant=self.tenant_id,
173
+ offset=offset,
174
+ limit=limit,
175
+ workflow_id=workflow_id,
176
+ event_id=event_id,
177
+ parent_workflow_run_id=parent_workflow_run_id,
178
+ parent_step_run_id=parent_step_run_id,
179
+ statuses=statuses,
180
+ kinds=kinds,
181
+ additional_metadata=additional_metadata,
182
+ order_by_field=order_by_field,
183
+ order_by_direction=order_by_direction,
184
+ )
185
+
186
+ async def workflow_run_get(self, workflow_run_id: str) -> WorkflowRun:
187
+ return await self.workflow_api.workflow_run_get(
188
+ tenant=self.tenant_id,
189
+ workflow_run=workflow_run_id,
190
+ )
191
+
192
+ async def workflow_run_replay(
193
+ self, workflow_run_ids: list[str]
194
+ ) -> ReplayWorkflowRunsResponse:
195
+ return await self.workflow_run_api.workflow_run_update_replay(
196
+ tenant=self.tenant_id,
197
+ replay_workflow_runs_request=ReplayWorkflowRunsRequest(
198
+ workflow_run_ids=workflow_run_ids,
199
+ ),
200
+ )
201
+
202
+ async def workflow_run_cancel(
203
+ self, workflow_run_id: str
204
+ ) -> WorkflowRunCancel200Response:
205
+ return await self.workflow_run_api.workflow_run_cancel(
206
+ tenant=self.tenant_id,
207
+ workflow_runs_cancel_request=WorkflowRunsCancelRequest(
208
+ workflowRunIds=[workflow_run_id],
209
+ ),
210
+ )
211
+
212
+ async def workflow_run_bulk_cancel(
213
+ self, workflow_run_ids: list[str]
214
+ ) -> WorkflowRunCancel200Response:
215
+ return await self.workflow_run_api.workflow_run_cancel(
216
+ tenant=self.tenant_id,
217
+ workflow_runs_cancel_request=WorkflowRunsCancelRequest(
218
+ workflowRunIds=workflow_run_ids,
219
+ ),
220
+ )
221
+
222
+ async def workflow_run_create(
223
+ self,
224
+ workflow_id: str,
225
+ input: dict[str, Any],
226
+ version: str | None = None,
227
+ additional_metadata: list[str] | None = None,
228
+ ) -> WorkflowRun:
229
+ return await self.workflow_run_api.workflow_run_create(
230
+ workflow=workflow_id,
231
+ version=version,
232
+ trigger_workflow_run_request=TriggerWorkflowRunRequest(
233
+ input=input,
234
+ additional_metadata=additional_metadata,
235
+ ),
236
+ )
237
+
238
+ async def cron_create(
239
+ self,
240
+ workflow_name: str,
241
+ cron_name: str,
242
+ expression: str,
243
+ input: dict[str, Any],
244
+ additional_metadata: dict[str, str],
245
+ ):
246
+ return await self.workflow_run_api.cron_workflow_trigger_create(
247
+ tenant=self.tenant_id,
248
+ workflow=workflow_name,
249
+ create_cron_workflow_trigger_request=CreateCronWorkflowTriggerRequest(
250
+ cronName=cron_name,
251
+ cronExpression=expression,
252
+ input=input,
253
+ additional_metadata=additional_metadata,
254
+ ),
255
+ )
256
+
257
+ async def cron_delete(self, cron_trigger_id: str):
258
+ return await self.workflow_api.workflow_cron_delete(
259
+ tenant=self.tenant_id,
260
+ cron_workflow=cron_trigger_id,
261
+ )
262
+
263
+ async def cron_list(
264
+ self,
265
+ offset: StrictInt | None = None,
266
+ limit: StrictInt | None = None,
267
+ workflow_id: str | None = None,
268
+ additional_metadata: list[str] | None = None,
269
+ order_by_field: CronWorkflowsOrderByField | None = None,
270
+ order_by_direction: WorkflowRunOrderByDirection | None = None,
271
+ ):
272
+ return await self.workflow_api.cron_workflow_list(
273
+ tenant=self.tenant_id,
274
+ offset=offset,
275
+ limit=limit,
276
+ workflow_id=workflow_id,
277
+ additional_metadata=additional_metadata,
278
+ order_by_field=order_by_field,
279
+ order_by_direction=order_by_direction,
280
+ )
281
+
282
+ async def cron_get(self, cron_trigger_id: str):
283
+ return await self.workflow_api.workflow_cron_get(
284
+ tenant=self.tenant_id,
285
+ cron_workflow=cron_trigger_id,
286
+ )
287
+
288
+ async def schedule_create(
289
+ self,
290
+ name: str,
291
+ trigger_at: datetime.datetime,
292
+ input: dict[str, Any],
293
+ additional_metadata: dict[str, str],
294
+ ):
295
+ return await self.workflow_run_api.scheduled_workflow_run_create(
296
+ tenant=self.tenant_id,
297
+ workflow=name,
298
+ schedule_workflow_run_request=ScheduleWorkflowRunRequest(
299
+ triggerAt=trigger_at,
300
+ input=input,
301
+ additional_metadata=additional_metadata,
302
+ ),
303
+ )
304
+
305
+ async def schedule_delete(self, scheduled_trigger_id: str):
306
+ return await self.workflow_api.workflow_scheduled_delete(
307
+ tenant=self.tenant_id,
308
+ scheduled_workflow_run=scheduled_trigger_id,
309
+ )
310
+
311
+ async def schedule_list(
312
+ self,
313
+ offset: StrictInt | None = None,
314
+ limit: StrictInt | None = None,
315
+ workflow_id: str | None = None,
316
+ additional_metadata: list[str] | None = None,
317
+ parent_workflow_run_id: str | None = None,
318
+ parent_step_run_id: str | None = None,
319
+ order_by_field: ScheduledWorkflowsOrderByField | None = None,
320
+ order_by_direction: WorkflowRunOrderByDirection | None = None,
321
+ ):
322
+ return await self.workflow_api.workflow_scheduled_list(
323
+ tenant=self.tenant_id,
324
+ offset=offset,
325
+ limit=limit,
326
+ workflow_id=workflow_id,
327
+ parent_workflow_run_id=parent_workflow_run_id,
328
+ parent_step_run_id=parent_step_run_id,
329
+ additional_metadata=additional_metadata,
330
+ order_by_field=order_by_field,
331
+ order_by_direction=order_by_direction,
332
+ )
333
+
334
+ async def schedule_get(self, scheduled_trigger_id: str):
335
+ return await self.workflow_api.workflow_scheduled_get(
336
+ tenant=self.tenant_id,
337
+ scheduled_workflow_run=scheduled_trigger_id,
338
+ )
339
+
340
+ async def list_logs(
341
+ self,
342
+ step_run_id: str,
343
+ offset: int | None = None,
344
+ limit: int | None = None,
345
+ levels: list[LogLineLevel] | None = None,
346
+ search: str | None = None,
347
+ order_by_field: LogLineOrderByField | None = None,
348
+ order_by_direction: LogLineOrderByDirection | None = None,
349
+ ) -> LogLineList:
350
+ return await self.log_api.log_line_list(
351
+ step_run=step_run_id,
352
+ offset=offset,
353
+ limit=limit,
354
+ levels=levels,
355
+ search=search,
356
+ order_by_field=order_by_field,
357
+ order_by_direction=order_by_direction,
358
+ )
359
+
360
+ async def events_list(
361
+ self,
362
+ offset: int | None = None,
363
+ limit: int | None = None,
364
+ keys: list[str] | None = None,
365
+ workflows: list[str] | None = None,
366
+ statuses: list[WorkflowRunStatus] | None = None,
367
+ search: str | None = None,
368
+ order_by_field: EventOrderByField | None = None,
369
+ order_by_direction: EventOrderByDirection | None = None,
370
+ additional_metadata: list[str] | None = None,
371
+ ) -> EventList:
372
+ return await self.event_api.event_list(
373
+ tenant=self.tenant_id,
374
+ offset=offset,
375
+ limit=limit,
376
+ keys=keys,
377
+ workflows=workflows,
378
+ statuses=statuses,
379
+ search=search,
380
+ order_by_field=order_by_field,
381
+ order_by_direction=order_by_direction,
382
+ additional_metadata=additional_metadata,
383
+ )
384
+
385
+ async def events_replay(self, event_ids: list[str] | EventList) -> EventList:
386
+ if isinstance(event_ids, EventList):
387
+ event_ids = [r.metadata.id for r in event_ids.rows]
388
+
389
+ return self.event_api.event_update_replay(
390
+ tenant=self.tenant_id,
391
+ replay_event_request=ReplayEventRequest(eventIds=event_ids),
392
+ )
393
+
394
+
395
+ class RestApi:
396
+ def __init__(self, host: str, api_key: str, tenant_id: str):
397
+ self._loop = asyncio.new_event_loop()
398
+ self._thread = threading.Thread(target=self._run_event_loop, daemon=True)
399
+ self._thread.start()
400
+
401
+ # Initialize AsyncRestApi inside the event loop to ensure an active loop
402
+ self.aio = AsyncRestApi(host, api_key, tenant_id)
403
+
404
+ # Register the cleanup method to be called on exit
405
+ atexit.register(self._cleanup)
406
+
407
+ def _cleanup(self):
408
+ """
409
+ Stop the running thread and clean up the event loop.
410
+ """
411
+ self._run_coroutine(self.aio.close())
412
+ self._loop.call_soon_threadsafe(self._loop.stop)
413
+ self._thread.join()
414
+
415
+ def _run_event_loop(self):
416
+ """
417
+ Run the asyncio event loop in a separate thread.
418
+ """
419
+ asyncio.set_event_loop(self._loop)
420
+ self._loop.run_forever()
421
+
422
+ def _run_coroutine(self, coro) -> Any:
423
+ """
424
+ Execute a coroutine in the event loop and return the result.
425
+ """
426
+ future = asyncio.run_coroutine_threadsafe(coro, self._loop)
427
+ return future.result()
428
+
429
+ def workflow_list(self) -> WorkflowList:
430
+ return self._run_coroutine(self.aio.workflow_list())
431
+
432
+ def workflow_get(self, workflow_id: str) -> Workflow:
433
+ return self._run_coroutine(self.aio.workflow_get(workflow_id))
434
+
435
+ def workflow_version_get(
436
+ self, workflow_id: str, version: str | None = None
437
+ ) -> WorkflowVersion:
438
+ return self._run_coroutine(self.aio.workflow_version_get(workflow_id, version))
439
+
440
+ def workflow_run_list(
441
+ self,
442
+ workflow_id: str | None = None,
443
+ offset: int | None = None,
444
+ limit: int | None = None,
445
+ event_id: str | None = None,
446
+ parent_workflow_run_id: str | None = None,
447
+ parent_step_run_id: str | None = None,
448
+ statuses: list[WorkflowRunStatus] | None = None,
449
+ kinds: list[WorkflowKind] | None = None,
450
+ additional_metadata: list[str] | None = None,
451
+ order_by_field: WorkflowRunOrderByField | None = None,
452
+ order_by_direction: WorkflowRunOrderByDirection | None = None,
453
+ ) -> WorkflowRunList:
454
+ return self._run_coroutine(
455
+ self.aio.workflow_run_list(
456
+ workflow_id=workflow_id,
457
+ offset=offset,
458
+ limit=limit,
459
+ event_id=event_id,
460
+ parent_workflow_run_id=parent_workflow_run_id,
461
+ parent_step_run_id=parent_step_run_id,
462
+ statuses=statuses,
463
+ kinds=kinds,
464
+ additional_metadata=additional_metadata,
465
+ order_by_field=order_by_field,
466
+ order_by_direction=order_by_direction,
467
+ )
468
+ )
469
+
470
+ def workflow_run_get(self, workflow_run_id: str) -> WorkflowRun:
471
+ return self._run_coroutine(self.aio.workflow_run_get(workflow_run_id))
472
+
473
+ def workflow_run_cancel(self, workflow_run_id: str) -> WorkflowRunCancel200Response:
474
+ return self._run_coroutine(self.aio.workflow_run_cancel(workflow_run_id))
475
+
476
+ def workflow_run_bulk_cancel(
477
+ self, workflow_run_ids: list[str]
478
+ ) -> WorkflowRunCancel200Response:
479
+ return self._run_coroutine(self.aio.workflow_run_bulk_cancel(workflow_run_ids))
480
+
481
+ def workflow_run_create(
482
+ self,
483
+ workflow_id: str,
484
+ input: dict[str, Any],
485
+ version: str | None = None,
486
+ additional_metadata: list[str] | None = None,
487
+ ) -> WorkflowRun:
488
+ return self._run_coroutine(
489
+ self.aio.workflow_run_create(
490
+ workflow_id, input, version, additional_metadata
491
+ )
492
+ )
493
+
494
+ def cron_create(
495
+ self,
496
+ workflow_name: str,
497
+ cron_name: str,
498
+ expression: str,
499
+ input: dict[str, Any],
500
+ additional_metadata: dict[str, str],
501
+ ) -> CronWorkflows:
502
+ return self._run_coroutine(
503
+ self.aio.cron_create(
504
+ workflow_name, cron_name, expression, input, additional_metadata
505
+ )
506
+ )
507
+
508
+ def cron_delete(self, cron_trigger_id: str):
509
+ return self._run_coroutine(self.aio.cron_delete(cron_trigger_id))
510
+
511
+ def cron_list(
512
+ self,
513
+ offset: int | None = None,
514
+ limit: int | None = None,
515
+ workflow_id: str | None = None,
516
+ additional_metadata: list[str] | None = None,
517
+ order_by_field: CronWorkflowsOrderByField | None = None,
518
+ order_by_direction: WorkflowRunOrderByDirection | None = None,
519
+ ):
520
+ return self._run_coroutine(
521
+ self.aio.cron_list(
522
+ offset,
523
+ limit,
524
+ workflow_id,
525
+ additional_metadata,
526
+ order_by_field,
527
+ order_by_direction,
528
+ )
529
+ )
530
+
531
+ def cron_get(self, cron_trigger_id: str):
532
+ return self._run_coroutine(self.aio.cron_get(cron_trigger_id))
533
+
534
+ def schedule_create(
535
+ self,
536
+ workflow_name: str,
537
+ trigger_at: datetime.datetime,
538
+ input: dict[str, Any],
539
+ additional_metadata: dict[str, str],
540
+ ):
541
+ return self._run_coroutine(
542
+ self.aio.schedule_create(
543
+ workflow_name, trigger_at, input, additional_metadata
544
+ )
545
+ )
546
+
547
+ def schedule_delete(self, scheduled_trigger_id: str):
548
+ return self._run_coroutine(self.aio.schedule_delete(scheduled_trigger_id))
549
+
550
+ def schedule_list(
551
+ self,
552
+ offset: int | None = None,
553
+ limit: int | None = None,
554
+ workflow_id: str | None = None,
555
+ additional_metadata: list[str] | None = None,
556
+ order_by_field: CronWorkflowsOrderByField | None = None,
557
+ order_by_direction: WorkflowRunOrderByDirection | None = None,
558
+ ):
559
+ return self._run_coroutine(
560
+ self.aio.schedule_list(
561
+ offset,
562
+ limit,
563
+ workflow_id,
564
+ additional_metadata,
565
+ order_by_field,
566
+ order_by_direction,
567
+ )
568
+ )
569
+
570
+ def schedule_get(self, scheduled_trigger_id: str):
571
+ return self._run_coroutine(self.aio.schedule_get(scheduled_trigger_id))
572
+
573
+ def list_logs(
574
+ self,
575
+ step_run_id: str,
576
+ offset: int | None = None,
577
+ limit: int | None = None,
578
+ levels: list[LogLineLevel] | None = None,
579
+ search: str | None = None,
580
+ order_by_field: LogLineOrderByField | None = None,
581
+ order_by_direction: LogLineOrderByDirection | None = None,
582
+ ) -> LogLineList:
583
+ return self._run_coroutine(
584
+ self.aio.list_logs(
585
+ step_run_id=step_run_id,
586
+ offset=offset,
587
+ limit=limit,
588
+ levels=levels,
589
+ search=search,
590
+ order_by_field=order_by_field,
591
+ order_by_direction=order_by_direction,
592
+ )
593
+ )
594
+
595
+ def events_list(
596
+ self,
597
+ offset: int | None = None,
598
+ limit: int | None = None,
599
+ keys: list[str] | None = None,
600
+ workflows: list[str] | None = None,
601
+ statuses: list[WorkflowRunStatus] | None = None,
602
+ search: str | None = None,
603
+ order_by_field: EventOrderByField | None = None,
604
+ order_by_direction: EventOrderByDirection | None = None,
605
+ additional_metadata: list[str] | None = None,
606
+ ) -> EventList:
607
+ return self._run_coroutine(
608
+ self.aio.events_list(
609
+ offset=offset,
610
+ limit=limit,
611
+ keys=keys,
612
+ workflows=workflows,
613
+ statuses=statuses,
614
+ search=search,
615
+ order_by_field=order_by_field,
616
+ order_by_direction=order_by_direction,
617
+ additional_metadata=additional_metadata,
618
+ )
619
+ )
620
+
621
+ def events_replay(self, event_ids: list[str] | EventList) -> EventList:
622
+ return self._run_coroutine(self.aio.events_replay(event_ids))