hatchet-sdk 0.46.1__py3-none-any.whl → 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hatchet_sdk/__init__.py +25 -16
- hatchet_sdk/client.py +14 -39
- hatchet_sdk/clients/admin.py +203 -362
- hatchet_sdk/clients/dispatcher/action_listener.py +106 -84
- hatchet_sdk/clients/dispatcher/dispatcher.py +21 -21
- hatchet_sdk/clients/event_ts.py +23 -10
- hatchet_sdk/clients/events.py +96 -99
- hatchet_sdk/clients/rest/__init__.py +24 -0
- hatchet_sdk/clients/rest/api/__init__.py +2 -0
- hatchet_sdk/clients/rest/api/task_api.py +2174 -0
- hatchet_sdk/clients/rest/api/workflow_runs_api.py +638 -106
- hatchet_sdk/clients/rest/api_client.py +1 -1
- hatchet_sdk/clients/rest/configuration.py +8 -1
- hatchet_sdk/clients/rest/exceptions.py +21 -0
- hatchet_sdk/clients/rest/models/__init__.py +22 -0
- hatchet_sdk/clients/rest/models/tenant.py +4 -0
- hatchet_sdk/clients/rest/models/tenant_version.py +37 -0
- hatchet_sdk/clients/rest/models/update_tenant_request.py +7 -0
- hatchet_sdk/clients/rest/models/v1_cancel_task_request.py +104 -0
- hatchet_sdk/clients/rest/models/v1_dag_children.py +102 -0
- hatchet_sdk/clients/rest/models/v1_replay_task_request.py +104 -0
- hatchet_sdk/clients/rest/models/v1_task.py +174 -0
- hatchet_sdk/clients/rest/models/v1_task_event.py +118 -0
- hatchet_sdk/clients/rest/models/v1_task_event_list.py +110 -0
- hatchet_sdk/clients/rest/models/v1_task_event_type.py +55 -0
- hatchet_sdk/clients/rest/models/v1_task_filter.py +106 -0
- hatchet_sdk/clients/rest/models/v1_task_point_metric.py +92 -0
- hatchet_sdk/clients/rest/models/v1_task_point_metrics.py +100 -0
- hatchet_sdk/clients/rest/models/v1_task_run_metric.py +88 -0
- hatchet_sdk/clients/rest/models/v1_task_run_status.py +40 -0
- hatchet_sdk/clients/rest/models/v1_task_status.py +40 -0
- hatchet_sdk/clients/rest/models/v1_task_summary.py +212 -0
- hatchet_sdk/clients/rest/models/v1_task_summary_list.py +110 -0
- hatchet_sdk/clients/rest/models/v1_workflow_run.py +171 -0
- hatchet_sdk/clients/rest/models/v1_workflow_run_details.py +145 -0
- hatchet_sdk/clients/rest/models/v1_workflow_type.py +37 -0
- hatchet_sdk/clients/rest/models/workflow_run_shape_item_for_workflow_run_details.py +99 -0
- hatchet_sdk/clients/rest/rest.py +37 -26
- hatchet_sdk/clients/rest/tenacity_utils.py +1 -1
- hatchet_sdk/clients/rest_client.py +141 -116
- hatchet_sdk/clients/run_event_listener.py +66 -60
- hatchet_sdk/clients/workflow_listener.py +77 -64
- hatchet_sdk/config.py +117 -0
- hatchet_sdk/connection.py +27 -13
- hatchet_sdk/context/__init__.py +0 -1
- hatchet_sdk/context/context.py +143 -202
- hatchet_sdk/features/cron.py +43 -57
- hatchet_sdk/features/scheduled.py +60 -74
- hatchet_sdk/hatchet.py +192 -195
- hatchet_sdk/labels.py +4 -6
- hatchet_sdk/metadata.py +1 -1
- hatchet_sdk/opentelemetry/instrumentor.py +112 -35
- hatchet_sdk/rate_limit.py +9 -18
- hatchet_sdk/token.py +13 -9
- hatchet_sdk/utils/aio_utils.py +0 -40
- hatchet_sdk/utils/proto_enums.py +54 -0
- hatchet_sdk/utils/typing.py +9 -1
- hatchet_sdk/v0/__init__.py +251 -0
- hatchet_sdk/v0/client.py +119 -0
- hatchet_sdk/v0/clients/admin.py +541 -0
- hatchet_sdk/v0/clients/dispatcher/action_listener.py +422 -0
- hatchet_sdk/v0/clients/dispatcher/dispatcher.py +204 -0
- hatchet_sdk/v0/clients/event_ts.py +28 -0
- hatchet_sdk/v0/clients/events.py +182 -0
- hatchet_sdk/v0/clients/rest/__init__.py +307 -0
- hatchet_sdk/v0/clients/rest/api/__init__.py +19 -0
- hatchet_sdk/v0/clients/rest/api/api_token_api.py +858 -0
- hatchet_sdk/v0/clients/rest/api/default_api.py +2259 -0
- hatchet_sdk/v0/clients/rest/api/event_api.py +2548 -0
- hatchet_sdk/v0/clients/rest/api/github_api.py +331 -0
- hatchet_sdk/v0/clients/rest/api/healthcheck_api.py +483 -0
- hatchet_sdk/v0/clients/rest/api/log_api.py +449 -0
- hatchet_sdk/v0/clients/rest/api/metadata_api.py +728 -0
- hatchet_sdk/v0/clients/rest/api/rate_limits_api.py +423 -0
- hatchet_sdk/v0/clients/rest/api/slack_api.py +577 -0
- hatchet_sdk/v0/clients/rest/api/sns_api.py +872 -0
- hatchet_sdk/v0/clients/rest/api/step_run_api.py +2202 -0
- hatchet_sdk/v0/clients/rest/api/tenant_api.py +4430 -0
- hatchet_sdk/v0/clients/rest/api/user_api.py +2888 -0
- hatchet_sdk/v0/clients/rest/api/worker_api.py +858 -0
- hatchet_sdk/v0/clients/rest/api/workflow_api.py +6312 -0
- hatchet_sdk/v0/clients/rest/api/workflow_run_api.py +1932 -0
- hatchet_sdk/v0/clients/rest/api/workflow_runs_api.py +610 -0
- hatchet_sdk/v0/clients/rest/api_client.py +759 -0
- hatchet_sdk/v0/clients/rest/api_response.py +22 -0
- hatchet_sdk/v0/clients/rest/configuration.py +611 -0
- hatchet_sdk/v0/clients/rest/exceptions.py +200 -0
- hatchet_sdk/v0/clients/rest/models/__init__.py +274 -0
- hatchet_sdk/v0/clients/rest/models/accept_invite_request.py +83 -0
- hatchet_sdk/v0/clients/rest/models/api_error.py +102 -0
- hatchet_sdk/v0/clients/rest/models/api_errors.py +100 -0
- hatchet_sdk/v0/clients/rest/models/api_meta.py +144 -0
- hatchet_sdk/v0/clients/rest/models/api_meta_auth.py +85 -0
- hatchet_sdk/v0/clients/rest/models/api_meta_integration.py +88 -0
- hatchet_sdk/v0/clients/rest/models/api_meta_posthog.py +90 -0
- hatchet_sdk/v0/clients/rest/models/api_resource_meta.py +98 -0
- hatchet_sdk/v0/clients/rest/models/api_token.py +105 -0
- hatchet_sdk/v0/clients/rest/models/bulk_create_event_request.py +100 -0
- hatchet_sdk/v0/clients/rest/models/bulk_create_event_response.py +110 -0
- hatchet_sdk/v0/clients/rest/models/cancel_event_request.py +85 -0
- hatchet_sdk/v0/clients/rest/models/cancel_step_run_request.py +83 -0
- hatchet_sdk/v0/clients/rest/models/concurrency_limit_strategy.py +39 -0
- hatchet_sdk/v0/clients/rest/models/create_api_token_request.py +92 -0
- hatchet_sdk/v0/clients/rest/models/create_api_token_response.py +83 -0
- hatchet_sdk/v0/clients/rest/models/create_cron_workflow_trigger_request.py +98 -0
- hatchet_sdk/v0/clients/rest/models/create_event_request.py +95 -0
- hatchet_sdk/v0/clients/rest/models/create_pull_request_from_step_run.py +83 -0
- hatchet_sdk/v0/clients/rest/models/create_sns_integration_request.py +85 -0
- hatchet_sdk/v0/clients/rest/models/create_tenant_alert_email_group_request.py +83 -0
- hatchet_sdk/v0/clients/rest/models/create_tenant_invite_request.py +86 -0
- hatchet_sdk/v0/clients/rest/models/create_tenant_request.py +84 -0
- hatchet_sdk/v0/clients/rest/models/cron_workflows.py +131 -0
- hatchet_sdk/v0/clients/rest/models/cron_workflows_list.py +110 -0
- hatchet_sdk/v0/clients/rest/models/cron_workflows_method.py +37 -0
- hatchet_sdk/v0/clients/rest/models/cron_workflows_order_by_field.py +37 -0
- hatchet_sdk/v0/clients/rest/models/event.py +143 -0
- hatchet_sdk/v0/clients/rest/models/event_data.py +83 -0
- hatchet_sdk/v0/clients/rest/models/event_key_list.py +98 -0
- hatchet_sdk/v0/clients/rest/models/event_list.py +110 -0
- hatchet_sdk/v0/clients/rest/models/event_order_by_direction.py +37 -0
- hatchet_sdk/v0/clients/rest/models/event_order_by_field.py +36 -0
- hatchet_sdk/v0/clients/rest/models/event_update_cancel200_response.py +85 -0
- hatchet_sdk/v0/clients/rest/models/event_workflow_run_summary.py +116 -0
- hatchet_sdk/v0/clients/rest/models/events.py +110 -0
- hatchet_sdk/v0/clients/rest/models/get_step_run_diff_response.py +100 -0
- hatchet_sdk/v0/clients/rest/models/github_app_installation.py +107 -0
- hatchet_sdk/v0/clients/rest/models/github_branch.py +86 -0
- hatchet_sdk/v0/clients/rest/models/github_repo.py +86 -0
- hatchet_sdk/v0/clients/rest/models/info_get_version200_response.py +83 -0
- hatchet_sdk/v0/clients/rest/models/job.py +132 -0
- hatchet_sdk/v0/clients/rest/models/job_run.py +176 -0
- hatchet_sdk/v0/clients/rest/models/job_run_status.py +41 -0
- hatchet_sdk/v0/clients/rest/models/link_github_repository_request.py +106 -0
- hatchet_sdk/v0/clients/rest/models/list_api_tokens_response.py +110 -0
- hatchet_sdk/v0/clients/rest/models/list_github_app_installations_response.py +112 -0
- hatchet_sdk/v0/clients/rest/models/list_pull_requests_response.py +100 -0
- hatchet_sdk/v0/clients/rest/models/list_slack_webhooks.py +110 -0
- hatchet_sdk/v0/clients/rest/models/list_sns_integrations.py +110 -0
- hatchet_sdk/v0/clients/rest/models/log_line.py +94 -0
- hatchet_sdk/v0/clients/rest/models/log_line_level.py +39 -0
- hatchet_sdk/v0/clients/rest/models/log_line_list.py +110 -0
- hatchet_sdk/v0/clients/rest/models/log_line_order_by_direction.py +37 -0
- hatchet_sdk/v0/clients/rest/models/log_line_order_by_field.py +36 -0
- hatchet_sdk/v0/clients/rest/models/pagination_response.py +95 -0
- hatchet_sdk/v0/clients/rest/models/pull_request.py +112 -0
- hatchet_sdk/v0/clients/rest/models/pull_request_state.py +37 -0
- hatchet_sdk/v0/clients/rest/models/queue_metrics.py +97 -0
- hatchet_sdk/v0/clients/rest/models/rate_limit.py +117 -0
- hatchet_sdk/v0/clients/rest/models/rate_limit_list.py +110 -0
- hatchet_sdk/v0/clients/rest/models/rate_limit_order_by_direction.py +37 -0
- hatchet_sdk/v0/clients/rest/models/rate_limit_order_by_field.py +38 -0
- hatchet_sdk/v0/clients/rest/models/recent_step_runs.py +118 -0
- hatchet_sdk/v0/clients/rest/models/reject_invite_request.py +83 -0
- hatchet_sdk/v0/clients/rest/models/replay_event_request.py +85 -0
- hatchet_sdk/v0/clients/rest/models/replay_workflow_runs_request.py +85 -0
- hatchet_sdk/v0/clients/rest/models/replay_workflow_runs_response.py +100 -0
- hatchet_sdk/v0/clients/rest/models/rerun_step_run_request.py +83 -0
- hatchet_sdk/v0/clients/rest/models/schedule_workflow_run_request.py +92 -0
- hatchet_sdk/v0/clients/rest/models/scheduled_run_status.py +42 -0
- hatchet_sdk/v0/clients/rest/models/scheduled_workflows.py +149 -0
- hatchet_sdk/v0/clients/rest/models/scheduled_workflows_list.py +110 -0
- hatchet_sdk/v0/clients/rest/models/scheduled_workflows_method.py +37 -0
- hatchet_sdk/v0/clients/rest/models/scheduled_workflows_order_by_field.py +37 -0
- hatchet_sdk/v0/clients/rest/models/semaphore_slots.py +113 -0
- hatchet_sdk/v0/clients/rest/models/slack_webhook.py +127 -0
- hatchet_sdk/v0/clients/rest/models/sns_integration.py +114 -0
- hatchet_sdk/v0/clients/rest/models/step.py +123 -0
- hatchet_sdk/v0/clients/rest/models/step_run.py +202 -0
- hatchet_sdk/v0/clients/rest/models/step_run_archive.py +142 -0
- hatchet_sdk/v0/clients/rest/models/step_run_archive_list.py +110 -0
- hatchet_sdk/v0/clients/rest/models/step_run_diff.py +91 -0
- hatchet_sdk/v0/clients/rest/models/step_run_event.py +122 -0
- hatchet_sdk/v0/clients/rest/models/step_run_event_list.py +110 -0
- hatchet_sdk/v0/clients/rest/models/step_run_event_reason.py +52 -0
- hatchet_sdk/v0/clients/rest/models/step_run_event_severity.py +38 -0
- hatchet_sdk/v0/clients/rest/models/step_run_status.py +44 -0
- hatchet_sdk/v0/clients/rest/models/tenant.py +118 -0
- hatchet_sdk/v0/clients/rest/models/tenant_alert_email_group.py +98 -0
- hatchet_sdk/v0/clients/rest/models/tenant_alert_email_group_list.py +112 -0
- hatchet_sdk/v0/clients/rest/models/tenant_alerting_settings.py +143 -0
- hatchet_sdk/v0/clients/rest/models/tenant_invite.py +120 -0
- hatchet_sdk/v0/clients/rest/models/tenant_invite_list.py +110 -0
- hatchet_sdk/v0/clients/rest/models/tenant_list.py +110 -0
- hatchet_sdk/v0/clients/rest/models/tenant_member.py +123 -0
- hatchet_sdk/v0/clients/rest/models/tenant_member_list.py +110 -0
- hatchet_sdk/v0/clients/rest/models/tenant_member_role.py +38 -0
- hatchet_sdk/v0/clients/rest/models/tenant_queue_metrics.py +116 -0
- hatchet_sdk/v0/clients/rest/models/tenant_resource.py +40 -0
- hatchet_sdk/v0/clients/rest/models/tenant_resource_limit.py +135 -0
- hatchet_sdk/v0/clients/rest/models/tenant_resource_policy.py +102 -0
- hatchet_sdk/v0/clients/rest/models/tenant_step_run_queue_metrics.py +83 -0
- hatchet_sdk/v0/clients/rest/models/trigger_workflow_run_request.py +91 -0
- hatchet_sdk/v0/clients/rest/models/update_tenant_alert_email_group_request.py +83 -0
- hatchet_sdk/v0/clients/rest/models/update_tenant_invite_request.py +85 -0
- hatchet_sdk/v0/clients/rest/models/update_tenant_request.py +137 -0
- hatchet_sdk/v0/clients/rest/models/update_worker_request.py +87 -0
- hatchet_sdk/v0/clients/rest/models/user.py +126 -0
- hatchet_sdk/v0/clients/rest/models/user_change_password_request.py +88 -0
- hatchet_sdk/v0/clients/rest/models/user_login_request.py +86 -0
- hatchet_sdk/v0/clients/rest/models/user_register_request.py +91 -0
- hatchet_sdk/v0/clients/rest/models/user_tenant_memberships_list.py +110 -0
- hatchet_sdk/v0/clients/rest/models/user_tenant_public.py +86 -0
- hatchet_sdk/v0/clients/rest/models/webhook_worker.py +100 -0
- hatchet_sdk/v0/clients/rest/models/webhook_worker_create_request.py +94 -0
- hatchet_sdk/v0/clients/rest/models/webhook_worker_create_response.py +98 -0
- hatchet_sdk/v0/clients/rest/models/webhook_worker_created.py +102 -0
- hatchet_sdk/v0/clients/rest/models/webhook_worker_list_response.py +110 -0
- hatchet_sdk/v0/clients/rest/models/webhook_worker_request.py +102 -0
- hatchet_sdk/v0/clients/rest/models/webhook_worker_request_list_response.py +104 -0
- hatchet_sdk/v0/clients/rest/models/webhook_worker_request_method.py +38 -0
- hatchet_sdk/v0/clients/rest/models/worker.py +239 -0
- hatchet_sdk/v0/clients/rest/models/worker_label.py +102 -0
- hatchet_sdk/v0/clients/rest/models/worker_list.py +110 -0
- hatchet_sdk/v0/clients/rest/models/worker_runtime_info.py +103 -0
- hatchet_sdk/v0/clients/rest/models/worker_runtime_sdks.py +38 -0
- hatchet_sdk/v0/clients/rest/models/worker_type.py +38 -0
- hatchet_sdk/v0/clients/rest/models/workflow.py +165 -0
- hatchet_sdk/v0/clients/rest/models/workflow_concurrency.py +107 -0
- hatchet_sdk/v0/clients/rest/models/workflow_deployment_config.py +136 -0
- hatchet_sdk/v0/clients/rest/models/workflow_kind.py +38 -0
- hatchet_sdk/v0/clients/rest/models/workflow_list.py +120 -0
- hatchet_sdk/v0/clients/rest/models/workflow_metrics.py +97 -0
- hatchet_sdk/v0/clients/rest/models/workflow_run.py +188 -0
- hatchet_sdk/v0/clients/rest/models/workflow_run_cancel200_response.py +85 -0
- hatchet_sdk/v0/clients/rest/models/workflow_run_list.py +110 -0
- hatchet_sdk/v0/clients/rest/models/workflow_run_order_by_direction.py +37 -0
- hatchet_sdk/v0/clients/rest/models/workflow_run_order_by_field.py +39 -0
- hatchet_sdk/v0/clients/rest/models/workflow_run_shape.py +186 -0
- hatchet_sdk/v0/clients/rest/models/workflow_run_status.py +42 -0
- hatchet_sdk/v0/clients/rest/models/workflow_run_triggered_by.py +112 -0
- hatchet_sdk/v0/clients/rest/models/workflow_runs_cancel_request.py +85 -0
- hatchet_sdk/v0/clients/rest/models/workflow_runs_metrics.py +94 -0
- hatchet_sdk/v0/clients/rest/models/workflow_runs_metrics_counts.py +104 -0
- hatchet_sdk/v0/clients/rest/models/workflow_tag.py +84 -0
- hatchet_sdk/v0/clients/rest/models/workflow_trigger_cron_ref.py +86 -0
- hatchet_sdk/v0/clients/rest/models/workflow_trigger_event_ref.py +86 -0
- hatchet_sdk/v0/clients/rest/models/workflow_triggers.py +141 -0
- hatchet_sdk/v0/clients/rest/models/workflow_update_request.py +85 -0
- hatchet_sdk/v0/clients/rest/models/workflow_version.py +170 -0
- hatchet_sdk/v0/clients/rest/models/workflow_version_concurrency.py +114 -0
- hatchet_sdk/v0/clients/rest/models/workflow_version_definition.py +85 -0
- hatchet_sdk/v0/clients/rest/models/workflow_version_meta.py +123 -0
- hatchet_sdk/v0/clients/rest/models/workflow_workers_count.py +95 -0
- hatchet_sdk/v0/clients/rest/rest.py +187 -0
- hatchet_sdk/v0/clients/rest/tenacity_utils.py +39 -0
- hatchet_sdk/v0/clients/rest_client.py +613 -0
- hatchet_sdk/v0/clients/run_event_listener.py +260 -0
- hatchet_sdk/v0/clients/workflow_listener.py +277 -0
- hatchet_sdk/v0/connection.py +63 -0
- hatchet_sdk/v0/context/__init__.py +1 -0
- hatchet_sdk/v0/context/context.py +446 -0
- hatchet_sdk/v0/context/worker_context.py +28 -0
- hatchet_sdk/v0/contracts/dispatcher_pb2.py +102 -0
- hatchet_sdk/v0/contracts/dispatcher_pb2.pyi +387 -0
- hatchet_sdk/v0/contracts/dispatcher_pb2_grpc.py +621 -0
- hatchet_sdk/v0/contracts/events_pb2.py +46 -0
- hatchet_sdk/v0/contracts/events_pb2.pyi +87 -0
- hatchet_sdk/v0/contracts/events_pb2_grpc.py +274 -0
- hatchet_sdk/v0/contracts/workflows_pb2.py +80 -0
- hatchet_sdk/v0/contracts/workflows_pb2.pyi +312 -0
- hatchet_sdk/v0/contracts/workflows_pb2_grpc.py +277 -0
- hatchet_sdk/v0/features/cron.py +286 -0
- hatchet_sdk/v0/features/scheduled.py +248 -0
- hatchet_sdk/v0/hatchet.py +310 -0
- hatchet_sdk/v0/labels.py +10 -0
- hatchet_sdk/{loader.py → v0/loader.py} +11 -0
- hatchet_sdk/v0/logger.py +13 -0
- hatchet_sdk/v0/metadata.py +2 -0
- hatchet_sdk/v0/opentelemetry/instrumentor.py +396 -0
- hatchet_sdk/v0/rate_limit.py +126 -0
- hatchet_sdk/v0/semver.py +30 -0
- hatchet_sdk/v0/token.py +27 -0
- hatchet_sdk/v0/utils/aio_utils.py +137 -0
- hatchet_sdk/v0/utils/backoff.py +9 -0
- hatchet_sdk/v0/utils/typing.py +12 -0
- hatchet_sdk/{v2 → v0/v2}/callable.py +8 -8
- hatchet_sdk/{v2 → v0/v2}/concurrency.py +2 -2
- hatchet_sdk/{v2 → v0/v2}/hatchet.py +10 -10
- hatchet_sdk/v0/worker/__init__.py +1 -0
- hatchet_sdk/v0/worker/action_listener_process.py +278 -0
- hatchet_sdk/v0/worker/runner/run_loop_manager.py +112 -0
- hatchet_sdk/v0/worker/runner/runner.py +460 -0
- hatchet_sdk/v0/worker/runner/utils/capture_logs.py +81 -0
- hatchet_sdk/v0/worker/runner/utils/error_with_traceback.py +6 -0
- hatchet_sdk/v0/worker/worker.py +391 -0
- hatchet_sdk/v0/workflow.py +261 -0
- hatchet_sdk/v0/workflow_run.py +59 -0
- hatchet_sdk/worker/__init__.py +0 -1
- hatchet_sdk/worker/action_listener_process.py +36 -33
- hatchet_sdk/worker/runner/run_loop_manager.py +18 -16
- hatchet_sdk/worker/runner/runner.py +37 -59
- hatchet_sdk/worker/runner/utils/capture_logs.py +25 -14
- hatchet_sdk/worker/runner/utils/error_with_traceback.py +1 -1
- hatchet_sdk/worker/worker.py +61 -75
- hatchet_sdk/workflow.py +473 -207
- hatchet_sdk/workflow_run.py +14 -25
- {hatchet_sdk-0.46.1.dist-info → hatchet_sdk-1.0.0.dist-info}/METADATA +3 -2
- hatchet_sdk-1.0.0.dist-info/RECORD +485 -0
- {hatchet_sdk-0.46.1.dist-info → hatchet_sdk-1.0.0.dist-info}/entry_points.txt +1 -0
- hatchet_sdk/utils/serialization.py +0 -18
- hatchet_sdk-0.46.1.dist-info/RECORD +0 -237
- /hatchet_sdk/{utils → v0/utils}/types.py +0 -0
- {hatchet_sdk-0.46.1.dist-info → hatchet_sdk-1.0.0.dist-info}/WHEEL +0 -0
hatchet_sdk/rate_limit.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from dataclasses import dataclass
|
|
2
|
-
from
|
|
2
|
+
from enum import Enum
|
|
3
3
|
|
|
4
|
-
from celpy import CELEvalError, Environment
|
|
4
|
+
from celpy import CELEvalError, Environment # type: ignore
|
|
5
5
|
|
|
6
6
|
from hatchet_sdk.contracts.workflows_pb2 import CreateStepRateLimit
|
|
7
7
|
|
|
@@ -15,7 +15,7 @@ def validate_cel_expression(expr: str) -> bool:
|
|
|
15
15
|
return False
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
class RateLimitDuration:
|
|
18
|
+
class RateLimitDuration(str, Enum):
|
|
19
19
|
SECOND = "SECOND"
|
|
20
20
|
MINUTE = "MINUTE"
|
|
21
21
|
HOUR = "HOUR"
|
|
@@ -40,7 +40,6 @@ class RateLimit:
|
|
|
40
40
|
units (int or str, default=1): The number of units or a CEL expression for dynamic unit calculation.
|
|
41
41
|
limit (int or str, optional): The rate limit value or a CEL expression for dynamic limit calculation.
|
|
42
42
|
duration (str, default=RateLimitDuration.MINUTE): The window duration of the rate limit.
|
|
43
|
-
key (str, optional): Deprecated. Use static_key instead.
|
|
44
43
|
|
|
45
44
|
Usage:
|
|
46
45
|
1. Static rate limit:
|
|
@@ -61,29 +60,21 @@ class RateLimit:
|
|
|
61
60
|
|
|
62
61
|
Raises:
|
|
63
62
|
ValueError: If invalid combinations of attributes are provided or if CEL expressions are invalid.
|
|
64
|
-
DeprecationWarning: If the deprecated 'key' attribute is used.
|
|
65
63
|
"""
|
|
66
64
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
limit: Union[int, str, None] = None
|
|
65
|
+
static_key: str | None = None
|
|
66
|
+
dynamic_key: str | None = None
|
|
67
|
+
units: str | int = 1
|
|
68
|
+
limit: int | str | None = None
|
|
72
69
|
duration: RateLimitDuration = RateLimitDuration.MINUTE
|
|
73
70
|
|
|
74
|
-
_req: CreateStepRateLimit = None
|
|
71
|
+
_req: CreateStepRateLimit | None = None
|
|
75
72
|
|
|
76
|
-
def __post_init__(self):
|
|
73
|
+
def __post_init__(self) -> None:
|
|
77
74
|
# juggle the key and key_expr fields
|
|
78
75
|
key = self.static_key
|
|
79
76
|
key_expression = self.dynamic_key
|
|
80
77
|
|
|
81
|
-
if self.key is not None:
|
|
82
|
-
DeprecationWarning(
|
|
83
|
-
"key is deprecated and will be removed in a future release, please use static_key instead"
|
|
84
|
-
)
|
|
85
|
-
key = self.key
|
|
86
|
-
|
|
87
78
|
if key_expression is not None:
|
|
88
79
|
if key is not None:
|
|
89
80
|
raise ValueError("Cannot have both static key and dynamic key set")
|
hatchet_sdk/token.py
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import base64
|
|
2
|
-
import json
|
|
3
2
|
|
|
3
|
+
from pydantic import BaseModel
|
|
4
4
|
|
|
5
|
-
def get_tenant_id_from_jwt(token: str) -> str:
|
|
6
|
-
claims = extract_claims_from_jwt(token)
|
|
7
5
|
|
|
8
|
-
|
|
6
|
+
class Claims(BaseModel):
|
|
7
|
+
sub: str
|
|
8
|
+
server_url: str
|
|
9
|
+
grpc_broadcast_address: str
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def get_tenant_id_from_jwt(token: str) -> str:
|
|
13
|
+
return extract_claims_from_jwt(token).sub
|
|
9
14
|
|
|
10
15
|
|
|
11
|
-
def get_addresses_from_jwt(token: str) ->
|
|
16
|
+
def get_addresses_from_jwt(token: str) -> tuple[str, str]:
|
|
12
17
|
claims = extract_claims_from_jwt(token)
|
|
13
18
|
|
|
14
|
-
return claims.
|
|
19
|
+
return claims.server_url, claims.grpc_broadcast_address
|
|
15
20
|
|
|
16
21
|
|
|
17
|
-
def extract_claims_from_jwt(token: str):
|
|
22
|
+
def extract_claims_from_jwt(token: str) -> Claims:
|
|
18
23
|
parts = token.split(".")
|
|
19
24
|
if len(parts) != 3:
|
|
20
25
|
raise ValueError("Invalid token format")
|
|
@@ -22,6 +27,5 @@ def extract_claims_from_jwt(token: str):
|
|
|
22
27
|
claims_part = parts[1]
|
|
23
28
|
claims_part += "=" * ((4 - len(claims_part) % 4) % 4) # Padding for base64 decoding
|
|
24
29
|
claims_data = base64.urlsafe_b64decode(claims_part)
|
|
25
|
-
claims = json.loads(claims_data)
|
|
26
30
|
|
|
27
|
-
return
|
|
31
|
+
return Claims.model_validate_json(claims_data)
|
hatchet_sdk/utils/aio_utils.py
CHANGED
|
@@ -2,7 +2,6 @@ import asyncio
|
|
|
2
2
|
import inspect
|
|
3
3
|
from concurrent.futures import Executor
|
|
4
4
|
from functools import partial, wraps
|
|
5
|
-
from threading import Thread
|
|
6
5
|
from typing import Any
|
|
7
6
|
|
|
8
7
|
|
|
@@ -81,45 +80,6 @@ def sync_to_async(func: Any) -> Any:
|
|
|
81
80
|
return run
|
|
82
81
|
|
|
83
82
|
|
|
84
|
-
class EventLoopThread:
|
|
85
|
-
"""A class that manages an asyncio event loop running in a separate thread."""
|
|
86
|
-
|
|
87
|
-
def __init__(self) -> None:
|
|
88
|
-
"""
|
|
89
|
-
Initializes the EventLoopThread by creating an event loop
|
|
90
|
-
and setting up a thread to run the loop.
|
|
91
|
-
"""
|
|
92
|
-
self.loop = asyncio.new_event_loop()
|
|
93
|
-
self.thread = Thread(target=self.run_loop_in_thread, args=(self.loop,))
|
|
94
|
-
|
|
95
|
-
def __enter__(self) -> asyncio.AbstractEventLoop:
|
|
96
|
-
"""
|
|
97
|
-
Starts the thread running the event loop when entering the context.
|
|
98
|
-
|
|
99
|
-
Returns:
|
|
100
|
-
asyncio.AbstractEventLoop: The event loop running in the separate thread.
|
|
101
|
-
"""
|
|
102
|
-
self.thread.start()
|
|
103
|
-
return self.loop
|
|
104
|
-
|
|
105
|
-
def __exit__(self) -> None:
|
|
106
|
-
"""
|
|
107
|
-
Stops the event loop and joins the thread when exiting the context.
|
|
108
|
-
"""
|
|
109
|
-
self.loop.call_soon_threadsafe(self.loop.stop)
|
|
110
|
-
self.thread.join()
|
|
111
|
-
|
|
112
|
-
def run_loop_in_thread(self, loop: asyncio.AbstractEventLoop) -> None:
|
|
113
|
-
"""
|
|
114
|
-
Sets the event loop for the current thread and runs it forever.
|
|
115
|
-
|
|
116
|
-
Args:
|
|
117
|
-
loop (asyncio.AbstractEventLoop): The event loop to run.
|
|
118
|
-
"""
|
|
119
|
-
asyncio.set_event_loop(loop)
|
|
120
|
-
loop.run_forever()
|
|
121
|
-
|
|
122
|
-
|
|
123
83
|
def get_active_event_loop() -> asyncio.AbstractEventLoop | None:
|
|
124
84
|
"""
|
|
125
85
|
Get the active event loop.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
from typing import Type, TypeVar, overload
|
|
3
|
+
|
|
4
|
+
from google.protobuf.internal.enum_type_wrapper import EnumTypeWrapper
|
|
5
|
+
|
|
6
|
+
TProtoEnumValue = TypeVar("TProtoEnumValue", bound=int)
|
|
7
|
+
|
|
8
|
+
TProtoEnum = TypeVar("TProtoEnum", bound=EnumTypeWrapper)
|
|
9
|
+
TPythonEnum = TypeVar("TPythonEnum", bound=Enum)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def convert_python_enum_to_proto(
|
|
13
|
+
value: TPythonEnum | None, proto_enum: TProtoEnum
|
|
14
|
+
) -> int | None:
|
|
15
|
+
if value is None:
|
|
16
|
+
return None
|
|
17
|
+
|
|
18
|
+
names = [item.name for item in proto_enum.DESCRIPTOR.values]
|
|
19
|
+
|
|
20
|
+
for name in names:
|
|
21
|
+
if name == value.name:
|
|
22
|
+
return proto_enum.Value(value.name)
|
|
23
|
+
|
|
24
|
+
raise ValueError(f"Value must be one of {names}. Got: {value}")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@overload
|
|
28
|
+
def convert_proto_enum_to_python(
|
|
29
|
+
value: TProtoEnumValue, python_enum_class: Type[TPythonEnum], proto_enum: TProtoEnum
|
|
30
|
+
) -> TPythonEnum: ...
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@overload
|
|
34
|
+
def convert_proto_enum_to_python(
|
|
35
|
+
value: None, python_enum_class: Type[TPythonEnum], proto_enum: TProtoEnum
|
|
36
|
+
) -> None: ...
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def convert_proto_enum_to_python(
|
|
40
|
+
value: TProtoEnumValue | None,
|
|
41
|
+
python_enum_class: Type[TPythonEnum],
|
|
42
|
+
proto_enum: TProtoEnum,
|
|
43
|
+
) -> TPythonEnum | None:
|
|
44
|
+
if value is None:
|
|
45
|
+
return None
|
|
46
|
+
|
|
47
|
+
return python_enum_class[proto_enum.Name(value)]
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def maybe_int_to_str(value: int | None) -> str | None:
|
|
51
|
+
if value is None:
|
|
52
|
+
return None
|
|
53
|
+
|
|
54
|
+
return str(value)
|
hatchet_sdk/utils/typing.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Any,
|
|
1
|
+
from typing import Any, Mapping, Type, TypeVar
|
|
2
2
|
|
|
3
3
|
from pydantic import BaseModel
|
|
4
4
|
|
|
@@ -10,3 +10,11 @@ def is_basemodel_subclass(model: Any) -> bool:
|
|
|
10
10
|
return issubclass(model, BaseModel)
|
|
11
11
|
except TypeError:
|
|
12
12
|
return False
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class WorkflowValidator(BaseModel):
|
|
16
|
+
workflow_input: Type[BaseModel] | None = None
|
|
17
|
+
step_output: Type[BaseModel] | None = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
JSONSerializableMapping = Mapping[str, Any]
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
from hatchet_sdk.v0.clients.rest.models.accept_invite_request import AcceptInviteRequest
|
|
2
|
+
|
|
3
|
+
# import models into sdk package
|
|
4
|
+
from hatchet_sdk.v0.clients.rest.models.api_error import APIError
|
|
5
|
+
from hatchet_sdk.v0.clients.rest.models.api_errors import APIErrors
|
|
6
|
+
from hatchet_sdk.v0.clients.rest.models.api_meta import APIMeta
|
|
7
|
+
from hatchet_sdk.v0.clients.rest.models.api_meta_auth import APIMetaAuth
|
|
8
|
+
from hatchet_sdk.v0.clients.rest.models.api_meta_integration import APIMetaIntegration
|
|
9
|
+
from hatchet_sdk.v0.clients.rest.models.api_resource_meta import APIResourceMeta
|
|
10
|
+
from hatchet_sdk.v0.clients.rest.models.api_token import APIToken
|
|
11
|
+
from hatchet_sdk.v0.clients.rest.models.create_api_token_request import (
|
|
12
|
+
CreateAPITokenRequest,
|
|
13
|
+
)
|
|
14
|
+
from hatchet_sdk.v0.clients.rest.models.create_api_token_response import (
|
|
15
|
+
CreateAPITokenResponse,
|
|
16
|
+
)
|
|
17
|
+
from hatchet_sdk.v0.clients.rest.models.create_pull_request_from_step_run import (
|
|
18
|
+
CreatePullRequestFromStepRun,
|
|
19
|
+
)
|
|
20
|
+
from hatchet_sdk.v0.clients.rest.models.create_tenant_invite_request import (
|
|
21
|
+
CreateTenantInviteRequest,
|
|
22
|
+
)
|
|
23
|
+
from hatchet_sdk.v0.clients.rest.models.create_tenant_request import CreateTenantRequest
|
|
24
|
+
from hatchet_sdk.v0.clients.rest.models.event import Event
|
|
25
|
+
from hatchet_sdk.v0.clients.rest.models.event_data import EventData
|
|
26
|
+
from hatchet_sdk.v0.clients.rest.models.event_key_list import EventKeyList
|
|
27
|
+
from hatchet_sdk.v0.clients.rest.models.event_list import EventList
|
|
28
|
+
from hatchet_sdk.v0.clients.rest.models.event_order_by_direction import (
|
|
29
|
+
EventOrderByDirection,
|
|
30
|
+
)
|
|
31
|
+
from hatchet_sdk.v0.clients.rest.models.event_order_by_field import EventOrderByField
|
|
32
|
+
from hatchet_sdk.v0.clients.rest.models.event_workflow_run_summary import (
|
|
33
|
+
EventWorkflowRunSummary,
|
|
34
|
+
)
|
|
35
|
+
from hatchet_sdk.v0.clients.rest.models.get_step_run_diff_response import (
|
|
36
|
+
GetStepRunDiffResponse,
|
|
37
|
+
)
|
|
38
|
+
from hatchet_sdk.v0.clients.rest.models.github_app_installation import (
|
|
39
|
+
GithubAppInstallation,
|
|
40
|
+
)
|
|
41
|
+
from hatchet_sdk.v0.clients.rest.models.github_branch import GithubBranch
|
|
42
|
+
from hatchet_sdk.v0.clients.rest.models.github_repo import GithubRepo
|
|
43
|
+
from hatchet_sdk.v0.clients.rest.models.job import Job
|
|
44
|
+
from hatchet_sdk.v0.clients.rest.models.job_run import JobRun
|
|
45
|
+
from hatchet_sdk.v0.clients.rest.models.job_run_status import JobRunStatus
|
|
46
|
+
from hatchet_sdk.v0.clients.rest.models.link_github_repository_request import (
|
|
47
|
+
LinkGithubRepositoryRequest,
|
|
48
|
+
)
|
|
49
|
+
from hatchet_sdk.v0.clients.rest.models.list_api_tokens_response import (
|
|
50
|
+
ListAPITokensResponse,
|
|
51
|
+
)
|
|
52
|
+
from hatchet_sdk.v0.clients.rest.models.list_github_app_installations_response import (
|
|
53
|
+
ListGithubAppInstallationsResponse,
|
|
54
|
+
)
|
|
55
|
+
from hatchet_sdk.v0.clients.rest.models.list_pull_requests_response import (
|
|
56
|
+
ListPullRequestsResponse,
|
|
57
|
+
)
|
|
58
|
+
from hatchet_sdk.v0.clients.rest.models.log_line import LogLine
|
|
59
|
+
from hatchet_sdk.v0.clients.rest.models.log_line_level import LogLineLevel
|
|
60
|
+
from hatchet_sdk.v0.clients.rest.models.log_line_list import LogLineList
|
|
61
|
+
from hatchet_sdk.v0.clients.rest.models.log_line_order_by_direction import (
|
|
62
|
+
LogLineOrderByDirection,
|
|
63
|
+
)
|
|
64
|
+
from hatchet_sdk.v0.clients.rest.models.log_line_order_by_field import (
|
|
65
|
+
LogLineOrderByField,
|
|
66
|
+
)
|
|
67
|
+
from hatchet_sdk.v0.clients.rest.models.pagination_response import PaginationResponse
|
|
68
|
+
from hatchet_sdk.v0.clients.rest.models.pull_request import PullRequest
|
|
69
|
+
from hatchet_sdk.v0.clients.rest.models.pull_request_state import PullRequestState
|
|
70
|
+
from hatchet_sdk.v0.clients.rest.models.reject_invite_request import RejectInviteRequest
|
|
71
|
+
from hatchet_sdk.v0.clients.rest.models.replay_event_request import ReplayEventRequest
|
|
72
|
+
from hatchet_sdk.v0.clients.rest.models.rerun_step_run_request import (
|
|
73
|
+
RerunStepRunRequest,
|
|
74
|
+
)
|
|
75
|
+
from hatchet_sdk.v0.clients.rest.models.step import Step
|
|
76
|
+
from hatchet_sdk.v0.clients.rest.models.step_run import StepRun
|
|
77
|
+
from hatchet_sdk.v0.clients.rest.models.step_run_diff import StepRunDiff
|
|
78
|
+
from hatchet_sdk.v0.clients.rest.models.step_run_status import StepRunStatus
|
|
79
|
+
from hatchet_sdk.v0.clients.rest.models.tenant import Tenant
|
|
80
|
+
from hatchet_sdk.v0.clients.rest.models.tenant_invite import TenantInvite
|
|
81
|
+
from hatchet_sdk.v0.clients.rest.models.tenant_invite_list import TenantInviteList
|
|
82
|
+
from hatchet_sdk.v0.clients.rest.models.tenant_list import TenantList
|
|
83
|
+
from hatchet_sdk.v0.clients.rest.models.tenant_member import TenantMember
|
|
84
|
+
from hatchet_sdk.v0.clients.rest.models.tenant_member_list import TenantMemberList
|
|
85
|
+
from hatchet_sdk.v0.clients.rest.models.tenant_member_role import TenantMemberRole
|
|
86
|
+
from hatchet_sdk.v0.clients.rest.models.trigger_workflow_run_request import (
|
|
87
|
+
TriggerWorkflowRunRequest,
|
|
88
|
+
)
|
|
89
|
+
from hatchet_sdk.v0.clients.rest.models.update_tenant_invite_request import (
|
|
90
|
+
UpdateTenantInviteRequest,
|
|
91
|
+
)
|
|
92
|
+
from hatchet_sdk.v0.clients.rest.models.user import User
|
|
93
|
+
from hatchet_sdk.v0.clients.rest.models.user_login_request import UserLoginRequest
|
|
94
|
+
from hatchet_sdk.v0.clients.rest.models.user_register_request import UserRegisterRequest
|
|
95
|
+
from hatchet_sdk.v0.clients.rest.models.user_tenant_memberships_list import (
|
|
96
|
+
UserTenantMembershipsList,
|
|
97
|
+
)
|
|
98
|
+
from hatchet_sdk.v0.clients.rest.models.user_tenant_public import UserTenantPublic
|
|
99
|
+
from hatchet_sdk.v0.clients.rest.models.worker_list import WorkerList
|
|
100
|
+
from hatchet_sdk.v0.clients.rest.models.workflow import Workflow
|
|
101
|
+
from hatchet_sdk.v0.clients.rest.models.workflow_deployment_config import (
|
|
102
|
+
WorkflowDeploymentConfig,
|
|
103
|
+
)
|
|
104
|
+
from hatchet_sdk.v0.clients.rest.models.workflow_list import WorkflowList
|
|
105
|
+
from hatchet_sdk.v0.clients.rest.models.workflow_run import WorkflowRun
|
|
106
|
+
from hatchet_sdk.v0.clients.rest.models.workflow_run_list import WorkflowRunList
|
|
107
|
+
from hatchet_sdk.v0.clients.rest.models.workflow_run_status import WorkflowRunStatus
|
|
108
|
+
from hatchet_sdk.v0.clients.rest.models.workflow_run_triggered_by import (
|
|
109
|
+
WorkflowRunTriggeredBy,
|
|
110
|
+
)
|
|
111
|
+
from hatchet_sdk.v0.clients.rest.models.workflow_tag import WorkflowTag
|
|
112
|
+
from hatchet_sdk.v0.clients.rest.models.workflow_trigger_cron_ref import (
|
|
113
|
+
WorkflowTriggerCronRef,
|
|
114
|
+
)
|
|
115
|
+
from hatchet_sdk.v0.clients.rest.models.workflow_trigger_event_ref import (
|
|
116
|
+
WorkflowTriggerEventRef,
|
|
117
|
+
)
|
|
118
|
+
from hatchet_sdk.v0.clients.rest.models.workflow_triggers import WorkflowTriggers
|
|
119
|
+
from hatchet_sdk.v0.clients.rest.models.workflow_version import WorkflowVersion
|
|
120
|
+
from hatchet_sdk.v0.clients.rest.models.workflow_version_definition import (
|
|
121
|
+
WorkflowVersionDefinition,
|
|
122
|
+
)
|
|
123
|
+
from hatchet_sdk.v0.clients.rest.models.workflow_version_meta import WorkflowVersionMeta
|
|
124
|
+
from hatchet_sdk.v0.contracts.workflows_pb2 import (
|
|
125
|
+
ConcurrencyLimitStrategy,
|
|
126
|
+
CreateWorkflowVersionOpts,
|
|
127
|
+
RateLimitDuration,
|
|
128
|
+
StickyStrategy,
|
|
129
|
+
WorkerLabelComparator,
|
|
130
|
+
)
|
|
131
|
+
from hatchet_sdk.v0.utils.aio_utils import sync_to_async
|
|
132
|
+
|
|
133
|
+
from .client import new_client
|
|
134
|
+
from .clients.admin import (
|
|
135
|
+
ChildTriggerWorkflowOptions,
|
|
136
|
+
DedupeViolationErr,
|
|
137
|
+
ScheduleTriggerWorkflowOptions,
|
|
138
|
+
TriggerWorkflowOptions,
|
|
139
|
+
)
|
|
140
|
+
from .clients.events import PushEventOptions
|
|
141
|
+
from .clients.run_event_listener import StepRunEventType, WorkflowRunEventType
|
|
142
|
+
from .context.context import Context
|
|
143
|
+
from .context.worker_context import WorkerContext
|
|
144
|
+
from .hatchet import ClientConfig, Hatchet, concurrency, on_failure_step, step, workflow
|
|
145
|
+
from .worker import Worker, WorkerStartOptions, WorkerStatus
|
|
146
|
+
from .workflow import ConcurrencyExpression
|
|
147
|
+
|
|
148
|
+
__all__ = [
|
|
149
|
+
"AcceptInviteRequest",
|
|
150
|
+
"APIError",
|
|
151
|
+
"APIErrors",
|
|
152
|
+
"APIMeta",
|
|
153
|
+
"APIMetaAuth",
|
|
154
|
+
"APIMetaIntegration",
|
|
155
|
+
"APIResourceMeta",
|
|
156
|
+
"APIToken",
|
|
157
|
+
"CreateAPITokenRequest",
|
|
158
|
+
"CreateAPITokenResponse",
|
|
159
|
+
"CreatePullRequestFromStepRun",
|
|
160
|
+
"CreateTenantInviteRequest",
|
|
161
|
+
"CreateTenantRequest",
|
|
162
|
+
"Event",
|
|
163
|
+
"EventData",
|
|
164
|
+
"EventKeyList",
|
|
165
|
+
"EventList",
|
|
166
|
+
"EventOrderByDirection",
|
|
167
|
+
"EventOrderByField",
|
|
168
|
+
"EventWorkflowRunSummary",
|
|
169
|
+
"GetStepRunDiffResponse",
|
|
170
|
+
"GithubAppInstallation",
|
|
171
|
+
"GithubBranch",
|
|
172
|
+
"GithubRepo",
|
|
173
|
+
"Job",
|
|
174
|
+
"JobRun",
|
|
175
|
+
"JobRunStatus",
|
|
176
|
+
"LinkGithubRepositoryRequest",
|
|
177
|
+
"ListAPITokensResponse",
|
|
178
|
+
"ListGithubAppInstallationsResponse",
|
|
179
|
+
"ListPullRequestsResponse",
|
|
180
|
+
"LogLine",
|
|
181
|
+
"LogLineLevel",
|
|
182
|
+
"LogLineList",
|
|
183
|
+
"LogLineOrderByDirection",
|
|
184
|
+
"LogLineOrderByField",
|
|
185
|
+
"PaginationResponse",
|
|
186
|
+
"PullRequest",
|
|
187
|
+
"PullRequestState",
|
|
188
|
+
"RejectInviteRequest",
|
|
189
|
+
"ReplayEventRequest",
|
|
190
|
+
"RerunStepRunRequest",
|
|
191
|
+
"Step",
|
|
192
|
+
"StepRun",
|
|
193
|
+
"StepRunDiff",
|
|
194
|
+
"StepRunStatus",
|
|
195
|
+
"sync_to_async",
|
|
196
|
+
"Tenant",
|
|
197
|
+
"TenantInvite",
|
|
198
|
+
"TenantInviteList",
|
|
199
|
+
"TenantList",
|
|
200
|
+
"TenantMember",
|
|
201
|
+
"TenantMemberList",
|
|
202
|
+
"TenantMemberRole",
|
|
203
|
+
"TriggerWorkflowRunRequest",
|
|
204
|
+
"UpdateTenantInviteRequest",
|
|
205
|
+
"User",
|
|
206
|
+
"UserLoginRequest",
|
|
207
|
+
"UserRegisterRequest",
|
|
208
|
+
"UserTenantMembershipsList",
|
|
209
|
+
"UserTenantPublic",
|
|
210
|
+
"Worker",
|
|
211
|
+
"WorkerLabelComparator",
|
|
212
|
+
"WorkerList",
|
|
213
|
+
"Workflow",
|
|
214
|
+
"WorkflowDeploymentConfig",
|
|
215
|
+
"WorkflowList",
|
|
216
|
+
"WorkflowRun",
|
|
217
|
+
"WorkflowRunList",
|
|
218
|
+
"WorkflowRunStatus",
|
|
219
|
+
"WorkflowRunTriggeredBy",
|
|
220
|
+
"WorkflowTag",
|
|
221
|
+
"WorkflowTriggerCronRef",
|
|
222
|
+
"WorkflowTriggerEventRef",
|
|
223
|
+
"WorkflowTriggers",
|
|
224
|
+
"WorkflowVersion",
|
|
225
|
+
"WorkflowVersionDefinition",
|
|
226
|
+
"WorkflowVersionMeta",
|
|
227
|
+
"ConcurrencyLimitStrategy",
|
|
228
|
+
"CreateWorkflowVersionOpts",
|
|
229
|
+
"RateLimitDuration",
|
|
230
|
+
"StickyStrategy",
|
|
231
|
+
"new_client",
|
|
232
|
+
"ChildTriggerWorkflowOptions",
|
|
233
|
+
"DedupeViolationErr",
|
|
234
|
+
"ScheduleTriggerWorkflowOptions",
|
|
235
|
+
"TriggerWorkflowOptions",
|
|
236
|
+
"PushEventOptions",
|
|
237
|
+
"StepRunEventType",
|
|
238
|
+
"WorkflowRunEventType",
|
|
239
|
+
"Context",
|
|
240
|
+
"WorkerContext",
|
|
241
|
+
"ClientConfig",
|
|
242
|
+
"Hatchet",
|
|
243
|
+
"concurrency",
|
|
244
|
+
"on_failure_step",
|
|
245
|
+
"step",
|
|
246
|
+
"workflow",
|
|
247
|
+
"Worker",
|
|
248
|
+
"WorkerStartOptions",
|
|
249
|
+
"WorkerStatus",
|
|
250
|
+
"ConcurrencyExpression",
|
|
251
|
+
]
|
hatchet_sdk/v0/client.py
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
from logging import Logger
|
|
3
|
+
from typing import Callable
|
|
4
|
+
|
|
5
|
+
import grpc
|
|
6
|
+
|
|
7
|
+
from hatchet_sdk.v0.clients.run_event_listener import RunEventListenerClient
|
|
8
|
+
from hatchet_sdk.v0.clients.workflow_listener import PooledWorkflowRunListener
|
|
9
|
+
from hatchet_sdk.v0.connection import new_conn
|
|
10
|
+
|
|
11
|
+
from .clients.admin import AdminClient, new_admin
|
|
12
|
+
from .clients.dispatcher.dispatcher import DispatcherClient, new_dispatcher
|
|
13
|
+
from .clients.events import EventClient, new_event
|
|
14
|
+
from .clients.rest_client import RestApi
|
|
15
|
+
from .loader import ClientConfig, ConfigLoader
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class Client:
|
|
19
|
+
admin: AdminClient
|
|
20
|
+
dispatcher: DispatcherClient
|
|
21
|
+
event: EventClient
|
|
22
|
+
rest: RestApi
|
|
23
|
+
workflow_listener: PooledWorkflowRunListener
|
|
24
|
+
logInterceptor: Logger
|
|
25
|
+
debug: bool = False
|
|
26
|
+
|
|
27
|
+
@classmethod
|
|
28
|
+
def from_environment(
|
|
29
|
+
cls,
|
|
30
|
+
defaults: ClientConfig = ClientConfig(),
|
|
31
|
+
debug: bool = False,
|
|
32
|
+
*opts_functions: Callable[[ClientConfig], None],
|
|
33
|
+
):
|
|
34
|
+
try:
|
|
35
|
+
loop = asyncio.get_running_loop()
|
|
36
|
+
except RuntimeError:
|
|
37
|
+
loop = asyncio.new_event_loop()
|
|
38
|
+
asyncio.set_event_loop(loop)
|
|
39
|
+
|
|
40
|
+
config: ClientConfig = ConfigLoader(".").load_client_config(defaults)
|
|
41
|
+
for opt_function in opts_functions:
|
|
42
|
+
opt_function(config)
|
|
43
|
+
|
|
44
|
+
return cls.from_config(config, debug)
|
|
45
|
+
|
|
46
|
+
@classmethod
|
|
47
|
+
def from_config(
|
|
48
|
+
cls,
|
|
49
|
+
config: ClientConfig = ClientConfig(),
|
|
50
|
+
debug: bool = False,
|
|
51
|
+
):
|
|
52
|
+
try:
|
|
53
|
+
loop = asyncio.get_running_loop()
|
|
54
|
+
except RuntimeError:
|
|
55
|
+
loop = asyncio.new_event_loop()
|
|
56
|
+
asyncio.set_event_loop(loop)
|
|
57
|
+
|
|
58
|
+
if config.tls_config is None:
|
|
59
|
+
raise ValueError("TLS config is required")
|
|
60
|
+
|
|
61
|
+
if config.host_port is None:
|
|
62
|
+
raise ValueError("Host and port are required")
|
|
63
|
+
|
|
64
|
+
conn: grpc.Channel = new_conn(config)
|
|
65
|
+
|
|
66
|
+
# Instantiate clients
|
|
67
|
+
event_client = new_event(conn, config)
|
|
68
|
+
admin_client = new_admin(config)
|
|
69
|
+
dispatcher_client = new_dispatcher(config)
|
|
70
|
+
rest_client = RestApi(config.server_url, config.token, config.tenant_id)
|
|
71
|
+
workflow_listener = None # Initialize this if needed
|
|
72
|
+
|
|
73
|
+
return cls(
|
|
74
|
+
event_client,
|
|
75
|
+
admin_client,
|
|
76
|
+
dispatcher_client,
|
|
77
|
+
workflow_listener,
|
|
78
|
+
rest_client,
|
|
79
|
+
config,
|
|
80
|
+
debug,
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
def __init__(
|
|
84
|
+
self,
|
|
85
|
+
event_client: EventClient,
|
|
86
|
+
admin_client: AdminClient,
|
|
87
|
+
dispatcher_client: DispatcherClient,
|
|
88
|
+
workflow_listener: PooledWorkflowRunListener,
|
|
89
|
+
rest_client: RestApi,
|
|
90
|
+
config: ClientConfig,
|
|
91
|
+
debug: bool = False,
|
|
92
|
+
):
|
|
93
|
+
try:
|
|
94
|
+
loop = asyncio.get_running_loop()
|
|
95
|
+
except RuntimeError:
|
|
96
|
+
loop = asyncio.new_event_loop()
|
|
97
|
+
asyncio.set_event_loop(loop)
|
|
98
|
+
|
|
99
|
+
self.admin = admin_client
|
|
100
|
+
self.dispatcher = dispatcher_client
|
|
101
|
+
self.event = event_client
|
|
102
|
+
self.rest = rest_client
|
|
103
|
+
self.config = config
|
|
104
|
+
self.listener = RunEventListenerClient(config)
|
|
105
|
+
self.workflow_listener = workflow_listener
|
|
106
|
+
self.logInterceptor = config.logInterceptor
|
|
107
|
+
self.debug = debug
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def with_host_port(host: str, port: int):
|
|
111
|
+
def with_host_port_impl(config: ClientConfig):
|
|
112
|
+
config.host = host
|
|
113
|
+
config.port = port
|
|
114
|
+
|
|
115
|
+
return with_host_port_impl
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
new_client = Client.from_environment
|
|
119
|
+
new_client_raw = Client.from_config
|