hatchet-sdk 1.0.0__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 (65) hide show
  1. hatchet_sdk/__init__.py +27 -16
  2. hatchet_sdk/client.py +13 -63
  3. hatchet_sdk/clients/admin.py +203 -124
  4. hatchet_sdk/clients/dispatcher/action_listener.py +42 -42
  5. hatchet_sdk/clients/dispatcher/dispatcher.py +18 -16
  6. hatchet_sdk/clients/durable_event_listener.py +327 -0
  7. hatchet_sdk/clients/rest/__init__.py +12 -1
  8. hatchet_sdk/clients/rest/api/log_api.py +258 -0
  9. hatchet_sdk/clients/rest/api/task_api.py +32 -6
  10. hatchet_sdk/clients/rest/api/workflow_runs_api.py +626 -0
  11. hatchet_sdk/clients/rest/models/__init__.py +12 -1
  12. hatchet_sdk/clients/rest/models/v1_log_line.py +94 -0
  13. hatchet_sdk/clients/rest/models/v1_log_line_level.py +39 -0
  14. hatchet_sdk/clients/rest/models/v1_log_line_list.py +110 -0
  15. hatchet_sdk/clients/rest/models/v1_task_summary.py +80 -64
  16. hatchet_sdk/clients/rest/models/v1_trigger_workflow_run_request.py +95 -0
  17. hatchet_sdk/clients/rest/models/v1_workflow_run_display_name.py +98 -0
  18. hatchet_sdk/clients/rest/models/v1_workflow_run_display_name_list.py +114 -0
  19. hatchet_sdk/clients/rest/models/workflow_run_shape_item_for_workflow_run_details.py +9 -4
  20. hatchet_sdk/clients/rest_client.py +21 -0
  21. hatchet_sdk/clients/run_event_listener.py +0 -1
  22. hatchet_sdk/context/context.py +85 -147
  23. hatchet_sdk/contracts/dispatcher_pb2_grpc.py +1 -1
  24. hatchet_sdk/contracts/events_pb2.py +2 -2
  25. hatchet_sdk/contracts/events_pb2_grpc.py +1 -1
  26. hatchet_sdk/contracts/v1/dispatcher_pb2.py +36 -0
  27. hatchet_sdk/contracts/v1/dispatcher_pb2.pyi +38 -0
  28. hatchet_sdk/contracts/v1/dispatcher_pb2_grpc.py +145 -0
  29. hatchet_sdk/contracts/v1/shared/condition_pb2.py +39 -0
  30. hatchet_sdk/contracts/v1/shared/condition_pb2.pyi +72 -0
  31. hatchet_sdk/contracts/v1/shared/condition_pb2_grpc.py +29 -0
  32. hatchet_sdk/contracts/v1/workflows_pb2.py +67 -0
  33. hatchet_sdk/contracts/v1/workflows_pb2.pyi +228 -0
  34. hatchet_sdk/contracts/v1/workflows_pb2_grpc.py +234 -0
  35. hatchet_sdk/contracts/workflows_pb2_grpc.py +1 -1
  36. hatchet_sdk/features/cron.py +3 -3
  37. hatchet_sdk/features/scheduled.py +2 -2
  38. hatchet_sdk/hatchet.py +427 -151
  39. hatchet_sdk/opentelemetry/instrumentor.py +8 -13
  40. hatchet_sdk/rate_limit.py +33 -39
  41. hatchet_sdk/runnables/contextvars.py +12 -0
  42. hatchet_sdk/runnables/standalone.py +194 -0
  43. hatchet_sdk/runnables/task.py +144 -0
  44. hatchet_sdk/runnables/types.py +138 -0
  45. hatchet_sdk/runnables/workflow.py +764 -0
  46. hatchet_sdk/utils/aio_utils.py +0 -79
  47. hatchet_sdk/utils/proto_enums.py +0 -7
  48. hatchet_sdk/utils/timedelta_to_expression.py +23 -0
  49. hatchet_sdk/utils/typing.py +2 -2
  50. hatchet_sdk/v0/clients/rest_client.py +9 -0
  51. hatchet_sdk/v0/worker/action_listener_process.py +18 -2
  52. hatchet_sdk/waits.py +120 -0
  53. hatchet_sdk/worker/action_listener_process.py +64 -30
  54. hatchet_sdk/worker/runner/run_loop_manager.py +35 -25
  55. hatchet_sdk/worker/runner/runner.py +72 -49
  56. hatchet_sdk/worker/runner/utils/capture_logs.py +3 -11
  57. hatchet_sdk/worker/worker.py +155 -118
  58. hatchet_sdk/workflow_run.py +4 -5
  59. {hatchet_sdk-1.0.0.dist-info → hatchet_sdk-1.0.0a1.dist-info}/METADATA +1 -2
  60. {hatchet_sdk-1.0.0.dist-info → hatchet_sdk-1.0.0a1.dist-info}/RECORD +62 -42
  61. {hatchet_sdk-1.0.0.dist-info → hatchet_sdk-1.0.0a1.dist-info}/entry_points.txt +2 -0
  62. hatchet_sdk/semver.py +0 -30
  63. hatchet_sdk/worker/runner/utils/error_with_traceback.py +0 -6
  64. hatchet_sdk/workflow.py +0 -527
  65. {hatchet_sdk-1.0.0.dist-info → hatchet_sdk-1.0.0a1.dist-info}/WHEEL +0 -0
@@ -0,0 +1,38 @@
1
+ from hatchet_sdk.contracts.v1.shared import condition_pb2 as _condition_pb2
2
+ from google.protobuf import descriptor as _descriptor
3
+ from google.protobuf import message as _message
4
+ from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union
5
+
6
+ DESCRIPTOR: _descriptor.FileDescriptor
7
+
8
+ class RegisterDurableEventRequest(_message.Message):
9
+ __slots__ = ("task_id", "signal_key", "conditions")
10
+ TASK_ID_FIELD_NUMBER: _ClassVar[int]
11
+ SIGNAL_KEY_FIELD_NUMBER: _ClassVar[int]
12
+ CONDITIONS_FIELD_NUMBER: _ClassVar[int]
13
+ task_id: str
14
+ signal_key: str
15
+ conditions: _condition_pb2.DurableEventListenerConditions
16
+ def __init__(self, task_id: _Optional[str] = ..., signal_key: _Optional[str] = ..., conditions: _Optional[_Union[_condition_pb2.DurableEventListenerConditions, _Mapping]] = ...) -> None: ...
17
+
18
+ class RegisterDurableEventResponse(_message.Message):
19
+ __slots__ = ()
20
+ def __init__(self) -> None: ...
21
+
22
+ class ListenForDurableEventRequest(_message.Message):
23
+ __slots__ = ("task_id", "signal_key")
24
+ TASK_ID_FIELD_NUMBER: _ClassVar[int]
25
+ SIGNAL_KEY_FIELD_NUMBER: _ClassVar[int]
26
+ task_id: str
27
+ signal_key: str
28
+ def __init__(self, task_id: _Optional[str] = ..., signal_key: _Optional[str] = ...) -> None: ...
29
+
30
+ class DurableEvent(_message.Message):
31
+ __slots__ = ("task_id", "signal_key", "data")
32
+ TASK_ID_FIELD_NUMBER: _ClassVar[int]
33
+ SIGNAL_KEY_FIELD_NUMBER: _ClassVar[int]
34
+ DATA_FIELD_NUMBER: _ClassVar[int]
35
+ task_id: str
36
+ signal_key: str
37
+ data: bytes
38
+ def __init__(self, task_id: _Optional[str] = ..., signal_key: _Optional[str] = ..., data: _Optional[bytes] = ...) -> None: ...
@@ -0,0 +1,145 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+ import warnings
5
+
6
+ from hatchet_sdk.contracts.v1 import dispatcher_pb2 as v1_dot_dispatcher__pb2
7
+
8
+ GRPC_GENERATED_VERSION = '1.64.1'
9
+ GRPC_VERSION = grpc.__version__
10
+ EXPECTED_ERROR_RELEASE = '1.65.0'
11
+ SCHEDULED_RELEASE_DATE = 'June 25, 2024'
12
+ _version_not_supported = False
13
+
14
+ try:
15
+ from grpc._utilities import first_version_is_lower
16
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
17
+ except ImportError:
18
+ _version_not_supported = True
19
+
20
+ if _version_not_supported:
21
+ warnings.warn(
22
+ f'The grpc package installed is at version {GRPC_VERSION},'
23
+ + f' but the generated code in v1/dispatcher_pb2_grpc.py depends on'
24
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
25
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
26
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
27
+ + f' This warning will become an error in {EXPECTED_ERROR_RELEASE},'
28
+ + f' scheduled for release on {SCHEDULED_RELEASE_DATE}.',
29
+ RuntimeWarning
30
+ )
31
+
32
+
33
+ class V1DispatcherStub(object):
34
+ """Missing associated documentation comment in .proto file."""
35
+
36
+ def __init__(self, channel):
37
+ """Constructor.
38
+
39
+ Args:
40
+ channel: A grpc.Channel.
41
+ """
42
+ self.RegisterDurableEvent = channel.unary_unary(
43
+ '/v1.V1Dispatcher/RegisterDurableEvent',
44
+ request_serializer=v1_dot_dispatcher__pb2.RegisterDurableEventRequest.SerializeToString,
45
+ response_deserializer=v1_dot_dispatcher__pb2.RegisterDurableEventResponse.FromString,
46
+ _registered_method=True)
47
+ self.ListenForDurableEvent = channel.stream_stream(
48
+ '/v1.V1Dispatcher/ListenForDurableEvent',
49
+ request_serializer=v1_dot_dispatcher__pb2.ListenForDurableEventRequest.SerializeToString,
50
+ response_deserializer=v1_dot_dispatcher__pb2.DurableEvent.FromString,
51
+ _registered_method=True)
52
+
53
+
54
+ class V1DispatcherServicer(object):
55
+ """Missing associated documentation comment in .proto file."""
56
+
57
+ def RegisterDurableEvent(self, request, context):
58
+ """Missing associated documentation comment in .proto file."""
59
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
60
+ context.set_details('Method not implemented!')
61
+ raise NotImplementedError('Method not implemented!')
62
+
63
+ def ListenForDurableEvent(self, request_iterator, context):
64
+ """Missing associated documentation comment in .proto file."""
65
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
66
+ context.set_details('Method not implemented!')
67
+ raise NotImplementedError('Method not implemented!')
68
+
69
+
70
+ def add_V1DispatcherServicer_to_server(servicer, server):
71
+ rpc_method_handlers = {
72
+ 'RegisterDurableEvent': grpc.unary_unary_rpc_method_handler(
73
+ servicer.RegisterDurableEvent,
74
+ request_deserializer=v1_dot_dispatcher__pb2.RegisterDurableEventRequest.FromString,
75
+ response_serializer=v1_dot_dispatcher__pb2.RegisterDurableEventResponse.SerializeToString,
76
+ ),
77
+ 'ListenForDurableEvent': grpc.stream_stream_rpc_method_handler(
78
+ servicer.ListenForDurableEvent,
79
+ request_deserializer=v1_dot_dispatcher__pb2.ListenForDurableEventRequest.FromString,
80
+ response_serializer=v1_dot_dispatcher__pb2.DurableEvent.SerializeToString,
81
+ ),
82
+ }
83
+ generic_handler = grpc.method_handlers_generic_handler(
84
+ 'v1.V1Dispatcher', rpc_method_handlers)
85
+ server.add_generic_rpc_handlers((generic_handler,))
86
+ server.add_registered_method_handlers('v1.V1Dispatcher', rpc_method_handlers)
87
+
88
+
89
+ # This class is part of an EXPERIMENTAL API.
90
+ class V1Dispatcher(object):
91
+ """Missing associated documentation comment in .proto file."""
92
+
93
+ @staticmethod
94
+ def RegisterDurableEvent(request,
95
+ target,
96
+ options=(),
97
+ channel_credentials=None,
98
+ call_credentials=None,
99
+ insecure=False,
100
+ compression=None,
101
+ wait_for_ready=None,
102
+ timeout=None,
103
+ metadata=None):
104
+ return grpc.experimental.unary_unary(
105
+ request,
106
+ target,
107
+ '/v1.V1Dispatcher/RegisterDurableEvent',
108
+ v1_dot_dispatcher__pb2.RegisterDurableEventRequest.SerializeToString,
109
+ v1_dot_dispatcher__pb2.RegisterDurableEventResponse.FromString,
110
+ options,
111
+ channel_credentials,
112
+ insecure,
113
+ call_credentials,
114
+ compression,
115
+ wait_for_ready,
116
+ timeout,
117
+ metadata,
118
+ _registered_method=True)
119
+
120
+ @staticmethod
121
+ def ListenForDurableEvent(request_iterator,
122
+ target,
123
+ options=(),
124
+ channel_credentials=None,
125
+ call_credentials=None,
126
+ insecure=False,
127
+ compression=None,
128
+ wait_for_ready=None,
129
+ timeout=None,
130
+ metadata=None):
131
+ return grpc.experimental.stream_stream(
132
+ request_iterator,
133
+ target,
134
+ '/v1.V1Dispatcher/ListenForDurableEvent',
135
+ v1_dot_dispatcher__pb2.ListenForDurableEventRequest.SerializeToString,
136
+ v1_dot_dispatcher__pb2.DurableEvent.FromString,
137
+ options,
138
+ channel_credentials,
139
+ insecure,
140
+ call_credentials,
141
+ compression,
142
+ wait_for_ready,
143
+ timeout,
144
+ metadata,
145
+ _registered_method=True)
@@ -0,0 +1,39 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: v1/shared/condition.proto
4
+ # Protobuf Python Version: 5.26.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+
16
+
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x19v1/shared/condition.proto\x12\x02v1\"t\n\x12\x42\x61seMatchCondition\x12\x19\n\x11readable_data_key\x18\x01 \x01(\t\x12\x1a\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32\n.v1.Action\x12\x13\n\x0bor_group_id\x18\x03 \x01(\t\x12\x12\n\nexpression\x18\x04 \x01(\t\"`\n\x1cParentOverrideMatchCondition\x12$\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x16.v1.BaseMatchCondition\x12\x1a\n\x12parent_readable_id\x18\x02 \x01(\t\"N\n\x13SleepMatchCondition\x12$\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x16.v1.BaseMatchCondition\x12\x11\n\tsleep_for\x18\x02 \x01(\t\"W\n\x17UserEventMatchCondition\x12$\n\x04\x62\x61se\x18\x01 \x01(\x0b\x32\x16.v1.BaseMatchCondition\x12\x16\n\x0euser_event_key\x18\x02 \x01(\t\"\xc5\x01\n\x0eTaskConditions\x12\x44\n\x1aparent_override_conditions\x18\x01 \x03(\x0b\x32 .v1.ParentOverrideMatchCondition\x12\x31\n\x10sleep_conditions\x18\x02 \x03(\x0b\x32\x17.v1.SleepMatchCondition\x12:\n\x15user_event_conditions\x18\x03 \x03(\x0b\x32\x1b.v1.UserEventMatchCondition\"\x8f\x01\n\x1e\x44urableEventListenerConditions\x12\x31\n\x10sleep_conditions\x18\x01 \x03(\x0b\x32\x17.v1.SleepMatchCondition\x12:\n\x15user_event_conditions\x18\x02 \x03(\x0b\x32\x1b.v1.UserEventMatchCondition*5\n\x06\x41\x63tion\x12\n\n\x06\x43REATE\x10\x00\x12\t\n\x05QUEUE\x10\x01\x12\n\n\x06\x43\x41NCEL\x10\x02\x12\x08\n\x04SKIP\x10\x03\x42\x42Z@github.com/hatchet-dev/hatchet/internal/services/shared/proto/v1b\x06proto3')
18
+
19
+ _globals = globals()
20
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'v1.shared.condition_pb2', _globals)
22
+ if not _descriptor._USE_C_DESCRIPTORS:
23
+ _globals['DESCRIPTOR']._loaded_options = None
24
+ _globals['DESCRIPTOR']._serialized_options = b'Z@github.com/hatchet-dev/hatchet/internal/services/shared/proto/v1'
25
+ _globals['_ACTION']._serialized_start=764
26
+ _globals['_ACTION']._serialized_end=817
27
+ _globals['_BASEMATCHCONDITION']._serialized_start=33
28
+ _globals['_BASEMATCHCONDITION']._serialized_end=149
29
+ _globals['_PARENTOVERRIDEMATCHCONDITION']._serialized_start=151
30
+ _globals['_PARENTOVERRIDEMATCHCONDITION']._serialized_end=247
31
+ _globals['_SLEEPMATCHCONDITION']._serialized_start=249
32
+ _globals['_SLEEPMATCHCONDITION']._serialized_end=327
33
+ _globals['_USEREVENTMATCHCONDITION']._serialized_start=329
34
+ _globals['_USEREVENTMATCHCONDITION']._serialized_end=416
35
+ _globals['_TASKCONDITIONS']._serialized_start=419
36
+ _globals['_TASKCONDITIONS']._serialized_end=616
37
+ _globals['_DURABLEEVENTLISTENERCONDITIONS']._serialized_start=619
38
+ _globals['_DURABLEEVENTLISTENERCONDITIONS']._serialized_end=762
39
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,72 @@
1
+ from google.protobuf.internal import containers as _containers
2
+ from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
3
+ from google.protobuf import descriptor as _descriptor
4
+ from google.protobuf import message as _message
5
+ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
6
+
7
+ DESCRIPTOR: _descriptor.FileDescriptor
8
+
9
+ class Action(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
10
+ __slots__ = ()
11
+ CREATE: _ClassVar[Action]
12
+ QUEUE: _ClassVar[Action]
13
+ CANCEL: _ClassVar[Action]
14
+ SKIP: _ClassVar[Action]
15
+ CREATE: Action
16
+ QUEUE: Action
17
+ CANCEL: Action
18
+ SKIP: Action
19
+
20
+ class BaseMatchCondition(_message.Message):
21
+ __slots__ = ("readable_data_key", "action", "or_group_id", "expression")
22
+ READABLE_DATA_KEY_FIELD_NUMBER: _ClassVar[int]
23
+ ACTION_FIELD_NUMBER: _ClassVar[int]
24
+ OR_GROUP_ID_FIELD_NUMBER: _ClassVar[int]
25
+ EXPRESSION_FIELD_NUMBER: _ClassVar[int]
26
+ readable_data_key: str
27
+ action: Action
28
+ or_group_id: str
29
+ expression: str
30
+ def __init__(self, readable_data_key: _Optional[str] = ..., action: _Optional[_Union[Action, str]] = ..., or_group_id: _Optional[str] = ..., expression: _Optional[str] = ...) -> None: ...
31
+
32
+ class ParentOverrideMatchCondition(_message.Message):
33
+ __slots__ = ("base", "parent_readable_id")
34
+ BASE_FIELD_NUMBER: _ClassVar[int]
35
+ PARENT_READABLE_ID_FIELD_NUMBER: _ClassVar[int]
36
+ base: BaseMatchCondition
37
+ parent_readable_id: str
38
+ def __init__(self, base: _Optional[_Union[BaseMatchCondition, _Mapping]] = ..., parent_readable_id: _Optional[str] = ...) -> None: ...
39
+
40
+ class SleepMatchCondition(_message.Message):
41
+ __slots__ = ("base", "sleep_for")
42
+ BASE_FIELD_NUMBER: _ClassVar[int]
43
+ SLEEP_FOR_FIELD_NUMBER: _ClassVar[int]
44
+ base: BaseMatchCondition
45
+ sleep_for: str
46
+ def __init__(self, base: _Optional[_Union[BaseMatchCondition, _Mapping]] = ..., sleep_for: _Optional[str] = ...) -> None: ...
47
+
48
+ class UserEventMatchCondition(_message.Message):
49
+ __slots__ = ("base", "user_event_key")
50
+ BASE_FIELD_NUMBER: _ClassVar[int]
51
+ USER_EVENT_KEY_FIELD_NUMBER: _ClassVar[int]
52
+ base: BaseMatchCondition
53
+ user_event_key: str
54
+ def __init__(self, base: _Optional[_Union[BaseMatchCondition, _Mapping]] = ..., user_event_key: _Optional[str] = ...) -> None: ...
55
+
56
+ class TaskConditions(_message.Message):
57
+ __slots__ = ("parent_override_conditions", "sleep_conditions", "user_event_conditions")
58
+ PARENT_OVERRIDE_CONDITIONS_FIELD_NUMBER: _ClassVar[int]
59
+ SLEEP_CONDITIONS_FIELD_NUMBER: _ClassVar[int]
60
+ USER_EVENT_CONDITIONS_FIELD_NUMBER: _ClassVar[int]
61
+ parent_override_conditions: _containers.RepeatedCompositeFieldContainer[ParentOverrideMatchCondition]
62
+ sleep_conditions: _containers.RepeatedCompositeFieldContainer[SleepMatchCondition]
63
+ user_event_conditions: _containers.RepeatedCompositeFieldContainer[UserEventMatchCondition]
64
+ def __init__(self, parent_override_conditions: _Optional[_Iterable[_Union[ParentOverrideMatchCondition, _Mapping]]] = ..., sleep_conditions: _Optional[_Iterable[_Union[SleepMatchCondition, _Mapping]]] = ..., user_event_conditions: _Optional[_Iterable[_Union[UserEventMatchCondition, _Mapping]]] = ...) -> None: ...
65
+
66
+ class DurableEventListenerConditions(_message.Message):
67
+ __slots__ = ("sleep_conditions", "user_event_conditions")
68
+ SLEEP_CONDITIONS_FIELD_NUMBER: _ClassVar[int]
69
+ USER_EVENT_CONDITIONS_FIELD_NUMBER: _ClassVar[int]
70
+ sleep_conditions: _containers.RepeatedCompositeFieldContainer[SleepMatchCondition]
71
+ user_event_conditions: _containers.RepeatedCompositeFieldContainer[UserEventMatchCondition]
72
+ def __init__(self, sleep_conditions: _Optional[_Iterable[_Union[SleepMatchCondition, _Mapping]]] = ..., user_event_conditions: _Optional[_Iterable[_Union[UserEventMatchCondition, _Mapping]]] = ...) -> None: ...
@@ -0,0 +1,29 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+ import warnings
5
+
6
+
7
+ GRPC_GENERATED_VERSION = '1.64.1'
8
+ GRPC_VERSION = grpc.__version__
9
+ EXPECTED_ERROR_RELEASE = '1.65.0'
10
+ SCHEDULED_RELEASE_DATE = 'June 25, 2024'
11
+ _version_not_supported = False
12
+
13
+ try:
14
+ from grpc._utilities import first_version_is_lower
15
+ _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
16
+ except ImportError:
17
+ _version_not_supported = True
18
+
19
+ if _version_not_supported:
20
+ warnings.warn(
21
+ f'The grpc package installed is at version {GRPC_VERSION},'
22
+ + f' but the generated code in v1/shared/condition_pb2_grpc.py depends on'
23
+ + f' grpcio>={GRPC_GENERATED_VERSION}.'
24
+ + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
25
+ + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
26
+ + f' This warning will become an error in {EXPECTED_ERROR_RELEASE},'
27
+ + f' scheduled for release on {SCHEDULED_RELEASE_DATE}.',
28
+ RuntimeWarning
29
+ )
@@ -0,0 +1,67 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: v1/workflows.proto
4
+ # Protobuf Python Version: 5.26.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
16
+ from hatchet_sdk.contracts.v1.shared import condition_pb2 as v1_dot_shared_dot_condition__pb2
17
+
18
+
19
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12v1/workflows.proto\x12\x02v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x19v1/shared/condition.proto\"Z\n\x12\x43\x61ncelTasksRequest\x12\x13\n\x0b\x65xternalIds\x18\x01 \x03(\t\x12$\n\x06\x66ilter\x18\x02 \x01(\x0b\x32\x0f.v1.TasksFilterH\x00\x88\x01\x01\x42\t\n\x07_filter\"Z\n\x12ReplayTasksRequest\x12\x13\n\x0b\x65xternalIds\x18\x01 \x03(\t\x12$\n\x06\x66ilter\x18\x02 \x01(\x0b\x32\x0f.v1.TasksFilterH\x00\x88\x01\x01\x42\t\n\x07_filter\"\xb7\x01\n\x0bTasksFilter\x12\x10\n\x08statuses\x18\x01 \x03(\t\x12)\n\x05since\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\x05until\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x88\x01\x01\x12\x14\n\x0cworkflow_ids\x18\x04 \x03(\t\x12\x1b\n\x13\x61\x64\x64itional_metadata\x18\x05 \x03(\tB\x08\n\x06_until\".\n\x13\x43\x61ncelTasksResponse\x12\x17\n\x0f\x63\x61ncelled_tasks\x18\x01 \x03(\t\"-\n\x13ReplayTasksResponse\x12\x16\n\x0ereplayed_tasks\x18\x01 \x03(\t\"^\n\x19TriggerWorkflowRunRequest\x12\x15\n\rworkflow_name\x18\x01 \x01(\t\x12\r\n\x05input\x18\x02 \x01(\x0c\x12\x1b\n\x13\x61\x64\x64itional_metadata\x18\x03 \x01(\x0c\"1\n\x1aTriggerWorkflowRunResponse\x12\x13\n\x0b\x65xternal_id\x18\x01 \x01(\t\"\xec\x02\n\x1c\x43reateWorkflowVersionRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x16\n\x0e\x65vent_triggers\x18\x04 \x03(\t\x12\x15\n\rcron_triggers\x18\x05 \x03(\t\x12!\n\x05tasks\x18\x06 \x03(\x0b\x32\x12.v1.CreateTaskOpts\x12$\n\x0b\x63oncurrency\x18\x07 \x01(\x0b\x32\x0f.v1.Concurrency\x12\x17\n\ncron_input\x18\x08 \x01(\tH\x00\x88\x01\x01\x12\x30\n\x0fon_failure_task\x18\t \x01(\x0b\x32\x12.v1.CreateTaskOptsH\x01\x88\x01\x01\x12\'\n\x06sticky\x18\n \x01(\x0e\x32\x12.v1.StickyStrategyH\x02\x88\x01\x01\x42\r\n\x0b_cron_inputB\x12\n\x10_on_failure_taskB\t\n\x07_sticky\"\x93\x01\n\x0b\x43oncurrency\x12\x12\n\nexpression\x18\x01 \x01(\t\x12\x15\n\x08max_runs\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x39\n\x0elimit_strategy\x18\x03 \x01(\x0e\x32\x1c.v1.ConcurrencyLimitStrategyH\x01\x88\x01\x01\x42\x0b\n\t_max_runsB\x11\n\x0f_limit_strategy\"\xe4\x01\n\x13\x44\x65siredWorkerLabels\x12\x15\n\x08strValue\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08intValue\x18\x02 \x01(\x05H\x01\x88\x01\x01\x12\x15\n\x08required\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12\x32\n\ncomparator\x18\x04 \x01(\x0e\x32\x19.v1.WorkerLabelComparatorH\x03\x88\x01\x01\x12\x13\n\x06weight\x18\x05 \x01(\x05H\x04\x88\x01\x01\x42\x0b\n\t_strValueB\x0b\n\t_intValueB\x0b\n\t_requiredB\r\n\x0b_comparatorB\t\n\x07_weight\"\xb1\x04\n\x0e\x43reateTaskOpts\x12\x13\n\x0breadable_id\x18\x01 \x01(\t\x12\x0e\n\x06\x61\x63tion\x18\x02 \x01(\t\x12\x0f\n\x07timeout\x18\x03 \x01(\t\x12\x0e\n\x06inputs\x18\x04 \x01(\t\x12\x0f\n\x07parents\x18\x05 \x03(\t\x12\x0f\n\x07retries\x18\x06 \x01(\x05\x12,\n\x0brate_limits\x18\x07 \x03(\x0b\x32\x17.v1.CreateTaskRateLimit\x12;\n\rworker_labels\x18\x08 \x03(\x0b\x32$.v1.CreateTaskOpts.WorkerLabelsEntry\x12\x1b\n\x0e\x62\x61\x63koff_factor\x18\t \x01(\x02H\x00\x88\x01\x01\x12 \n\x13\x62\x61\x63koff_max_seconds\x18\n \x01(\x05H\x01\x88\x01\x01\x12$\n\x0b\x63oncurrency\x18\x0b \x03(\x0b\x32\x0f.v1.Concurrency\x12+\n\nconditions\x18\x0c \x01(\x0b\x32\x12.v1.TaskConditionsH\x02\x88\x01\x01\x12\x1d\n\x10schedule_timeout\x18\r \x01(\tH\x03\x88\x01\x01\x1aL\n\x11WorkerLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.v1.DesiredWorkerLabels:\x02\x38\x01\x42\x11\n\x0f_backoff_factorB\x16\n\x14_backoff_max_secondsB\r\n\x0b_conditionsB\x13\n\x11_schedule_timeout\"\xfd\x01\n\x13\x43reateTaskRateLimit\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x12\n\x05units\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x15\n\x08key_expr\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x17\n\nunits_expr\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1e\n\x11limit_values_expr\x18\x05 \x01(\tH\x03\x88\x01\x01\x12,\n\x08\x64uration\x18\x06 \x01(\x0e\x32\x15.v1.RateLimitDurationH\x04\x88\x01\x01\x42\x08\n\x06_unitsB\x0b\n\t_key_exprB\r\n\x0b_units_exprB\x14\n\x12_limit_values_exprB\x0b\n\t_duration\"@\n\x1d\x43reateWorkflowVersionResponse\x12\n\n\x02id\x18\x01 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t*$\n\x0eStickyStrategy\x12\x08\n\x04SOFT\x10\x00\x12\x08\n\x04HARD\x10\x01*]\n\x11RateLimitDuration\x12\n\n\x06SECOND\x10\x00\x12\n\n\x06MINUTE\x10\x01\x12\x08\n\x04HOUR\x10\x02\x12\x07\n\x03\x44\x41Y\x10\x03\x12\x08\n\x04WEEK\x10\x04\x12\t\n\x05MONTH\x10\x05\x12\x08\n\x04YEAR\x10\x06*\x7f\n\x18\x43oncurrencyLimitStrategy\x12\x16\n\x12\x43\x41NCEL_IN_PROGRESS\x10\x00\x12\x0f\n\x0b\x44ROP_NEWEST\x10\x01\x12\x10\n\x0cQUEUE_NEWEST\x10\x02\x12\x15\n\x11GROUP_ROUND_ROBIN\x10\x03\x12\x11\n\rCANCEL_NEWEST\x10\x04*\x85\x01\n\x15WorkerLabelComparator\x12\t\n\x05\x45QUAL\x10\x00\x12\r\n\tNOT_EQUAL\x10\x01\x12\x10\n\x0cGREATER_THAN\x10\x02\x12\x19\n\x15GREATER_THAN_OR_EQUAL\x10\x03\x12\r\n\tLESS_THAN\x10\x04\x12\x16\n\x12LESS_THAN_OR_EQUAL\x10\x05\x32\xb7\x02\n\x0c\x41\x64minService\x12R\n\x0bPutWorkflow\x12 .v1.CreateWorkflowVersionRequest\x1a!.v1.CreateWorkflowVersionResponse\x12>\n\x0b\x43\x61ncelTasks\x12\x16.v1.CancelTasksRequest\x1a\x17.v1.CancelTasksResponse\x12>\n\x0bReplayTasks\x12\x16.v1.ReplayTasksRequest\x1a\x17.v1.ReplayTasksResponse\x12S\n\x12TriggerWorkflowRun\x12\x1d.v1.TriggerWorkflowRunRequest\x1a\x1e.v1.TriggerWorkflowRunResponseBBZ@github.com/hatchet-dev/hatchet/internal/services/shared/proto/v1b\x06proto3')
20
+
21
+ _globals = globals()
22
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
23
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'v1.workflows_pb2', _globals)
24
+ if not _descriptor._USE_C_DESCRIPTORS:
25
+ _globals['DESCRIPTOR']._loaded_options = None
26
+ _globals['DESCRIPTOR']._serialized_options = b'Z@github.com/hatchet-dev/hatchet/internal/services/shared/proto/v1'
27
+ _globals['_CREATETASKOPTS_WORKERLABELSENTRY']._loaded_options = None
28
+ _globals['_CREATETASKOPTS_WORKERLABELSENTRY']._serialized_options = b'8\001'
29
+ _globals['_STICKYSTRATEGY']._serialized_start=2332
30
+ _globals['_STICKYSTRATEGY']._serialized_end=2368
31
+ _globals['_RATELIMITDURATION']._serialized_start=2370
32
+ _globals['_RATELIMITDURATION']._serialized_end=2463
33
+ _globals['_CONCURRENCYLIMITSTRATEGY']._serialized_start=2465
34
+ _globals['_CONCURRENCYLIMITSTRATEGY']._serialized_end=2592
35
+ _globals['_WORKERLABELCOMPARATOR']._serialized_start=2595
36
+ _globals['_WORKERLABELCOMPARATOR']._serialized_end=2728
37
+ _globals['_CANCELTASKSREQUEST']._serialized_start=86
38
+ _globals['_CANCELTASKSREQUEST']._serialized_end=176
39
+ _globals['_REPLAYTASKSREQUEST']._serialized_start=178
40
+ _globals['_REPLAYTASKSREQUEST']._serialized_end=268
41
+ _globals['_TASKSFILTER']._serialized_start=271
42
+ _globals['_TASKSFILTER']._serialized_end=454
43
+ _globals['_CANCELTASKSRESPONSE']._serialized_start=456
44
+ _globals['_CANCELTASKSRESPONSE']._serialized_end=502
45
+ _globals['_REPLAYTASKSRESPONSE']._serialized_start=504
46
+ _globals['_REPLAYTASKSRESPONSE']._serialized_end=549
47
+ _globals['_TRIGGERWORKFLOWRUNREQUEST']._serialized_start=551
48
+ _globals['_TRIGGERWORKFLOWRUNREQUEST']._serialized_end=645
49
+ _globals['_TRIGGERWORKFLOWRUNRESPONSE']._serialized_start=647
50
+ _globals['_TRIGGERWORKFLOWRUNRESPONSE']._serialized_end=696
51
+ _globals['_CREATEWORKFLOWVERSIONREQUEST']._serialized_start=699
52
+ _globals['_CREATEWORKFLOWVERSIONREQUEST']._serialized_end=1063
53
+ _globals['_CONCURRENCY']._serialized_start=1066
54
+ _globals['_CONCURRENCY']._serialized_end=1213
55
+ _globals['_DESIREDWORKERLABELS']._serialized_start=1216
56
+ _globals['_DESIREDWORKERLABELS']._serialized_end=1444
57
+ _globals['_CREATETASKOPTS']._serialized_start=1447
58
+ _globals['_CREATETASKOPTS']._serialized_end=2008
59
+ _globals['_CREATETASKOPTS_WORKERLABELSENTRY']._serialized_start=1853
60
+ _globals['_CREATETASKOPTS_WORKERLABELSENTRY']._serialized_end=1929
61
+ _globals['_CREATETASKRATELIMIT']._serialized_start=2011
62
+ _globals['_CREATETASKRATELIMIT']._serialized_end=2264
63
+ _globals['_CREATEWORKFLOWVERSIONRESPONSE']._serialized_start=2266
64
+ _globals['_CREATEWORKFLOWVERSIONRESPONSE']._serialized_end=2330
65
+ _globals['_ADMINSERVICE']._serialized_start=2731
66
+ _globals['_ADMINSERVICE']._serialized_end=3042
67
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,228 @@
1
+ from google.protobuf import timestamp_pb2 as _timestamp_pb2
2
+ from hatchet_sdk.contracts.v1.shared import condition_pb2 as _condition_pb2
3
+ from google.protobuf.internal import containers as _containers
4
+ from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
5
+ from google.protobuf import descriptor as _descriptor
6
+ from google.protobuf import message as _message
7
+ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
8
+
9
+ DESCRIPTOR: _descriptor.FileDescriptor
10
+
11
+ class StickyStrategy(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
12
+ __slots__ = ()
13
+ SOFT: _ClassVar[StickyStrategy]
14
+ HARD: _ClassVar[StickyStrategy]
15
+
16
+ class RateLimitDuration(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
17
+ __slots__ = ()
18
+ SECOND: _ClassVar[RateLimitDuration]
19
+ MINUTE: _ClassVar[RateLimitDuration]
20
+ HOUR: _ClassVar[RateLimitDuration]
21
+ DAY: _ClassVar[RateLimitDuration]
22
+ WEEK: _ClassVar[RateLimitDuration]
23
+ MONTH: _ClassVar[RateLimitDuration]
24
+ YEAR: _ClassVar[RateLimitDuration]
25
+
26
+ class ConcurrencyLimitStrategy(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
27
+ __slots__ = ()
28
+ CANCEL_IN_PROGRESS: _ClassVar[ConcurrencyLimitStrategy]
29
+ DROP_NEWEST: _ClassVar[ConcurrencyLimitStrategy]
30
+ QUEUE_NEWEST: _ClassVar[ConcurrencyLimitStrategy]
31
+ GROUP_ROUND_ROBIN: _ClassVar[ConcurrencyLimitStrategy]
32
+ CANCEL_NEWEST: _ClassVar[ConcurrencyLimitStrategy]
33
+
34
+ class WorkerLabelComparator(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
35
+ __slots__ = ()
36
+ EQUAL: _ClassVar[WorkerLabelComparator]
37
+ NOT_EQUAL: _ClassVar[WorkerLabelComparator]
38
+ GREATER_THAN: _ClassVar[WorkerLabelComparator]
39
+ GREATER_THAN_OR_EQUAL: _ClassVar[WorkerLabelComparator]
40
+ LESS_THAN: _ClassVar[WorkerLabelComparator]
41
+ LESS_THAN_OR_EQUAL: _ClassVar[WorkerLabelComparator]
42
+ SOFT: StickyStrategy
43
+ HARD: StickyStrategy
44
+ SECOND: RateLimitDuration
45
+ MINUTE: RateLimitDuration
46
+ HOUR: RateLimitDuration
47
+ DAY: RateLimitDuration
48
+ WEEK: RateLimitDuration
49
+ MONTH: RateLimitDuration
50
+ YEAR: RateLimitDuration
51
+ CANCEL_IN_PROGRESS: ConcurrencyLimitStrategy
52
+ DROP_NEWEST: ConcurrencyLimitStrategy
53
+ QUEUE_NEWEST: ConcurrencyLimitStrategy
54
+ GROUP_ROUND_ROBIN: ConcurrencyLimitStrategy
55
+ CANCEL_NEWEST: ConcurrencyLimitStrategy
56
+ EQUAL: WorkerLabelComparator
57
+ NOT_EQUAL: WorkerLabelComparator
58
+ GREATER_THAN: WorkerLabelComparator
59
+ GREATER_THAN_OR_EQUAL: WorkerLabelComparator
60
+ LESS_THAN: WorkerLabelComparator
61
+ LESS_THAN_OR_EQUAL: WorkerLabelComparator
62
+
63
+ class CancelTasksRequest(_message.Message):
64
+ __slots__ = ("externalIds", "filter")
65
+ EXTERNALIDS_FIELD_NUMBER: _ClassVar[int]
66
+ FILTER_FIELD_NUMBER: _ClassVar[int]
67
+ externalIds: _containers.RepeatedScalarFieldContainer[str]
68
+ filter: TasksFilter
69
+ def __init__(self, externalIds: _Optional[_Iterable[str]] = ..., filter: _Optional[_Union[TasksFilter, _Mapping]] = ...) -> None: ...
70
+
71
+ class ReplayTasksRequest(_message.Message):
72
+ __slots__ = ("externalIds", "filter")
73
+ EXTERNALIDS_FIELD_NUMBER: _ClassVar[int]
74
+ FILTER_FIELD_NUMBER: _ClassVar[int]
75
+ externalIds: _containers.RepeatedScalarFieldContainer[str]
76
+ filter: TasksFilter
77
+ def __init__(self, externalIds: _Optional[_Iterable[str]] = ..., filter: _Optional[_Union[TasksFilter, _Mapping]] = ...) -> None: ...
78
+
79
+ class TasksFilter(_message.Message):
80
+ __slots__ = ("statuses", "since", "until", "workflow_ids", "additional_metadata")
81
+ STATUSES_FIELD_NUMBER: _ClassVar[int]
82
+ SINCE_FIELD_NUMBER: _ClassVar[int]
83
+ UNTIL_FIELD_NUMBER: _ClassVar[int]
84
+ WORKFLOW_IDS_FIELD_NUMBER: _ClassVar[int]
85
+ ADDITIONAL_METADATA_FIELD_NUMBER: _ClassVar[int]
86
+ statuses: _containers.RepeatedScalarFieldContainer[str]
87
+ since: _timestamp_pb2.Timestamp
88
+ until: _timestamp_pb2.Timestamp
89
+ workflow_ids: _containers.RepeatedScalarFieldContainer[str]
90
+ additional_metadata: _containers.RepeatedScalarFieldContainer[str]
91
+ def __init__(self, statuses: _Optional[_Iterable[str]] = ..., since: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., until: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., workflow_ids: _Optional[_Iterable[str]] = ..., additional_metadata: _Optional[_Iterable[str]] = ...) -> None: ...
92
+
93
+ class CancelTasksResponse(_message.Message):
94
+ __slots__ = ("cancelled_tasks",)
95
+ CANCELLED_TASKS_FIELD_NUMBER: _ClassVar[int]
96
+ cancelled_tasks: _containers.RepeatedScalarFieldContainer[str]
97
+ def __init__(self, cancelled_tasks: _Optional[_Iterable[str]] = ...) -> None: ...
98
+
99
+ class ReplayTasksResponse(_message.Message):
100
+ __slots__ = ("replayed_tasks",)
101
+ REPLAYED_TASKS_FIELD_NUMBER: _ClassVar[int]
102
+ replayed_tasks: _containers.RepeatedScalarFieldContainer[str]
103
+ def __init__(self, replayed_tasks: _Optional[_Iterable[str]] = ...) -> None: ...
104
+
105
+ class TriggerWorkflowRunRequest(_message.Message):
106
+ __slots__ = ("workflow_name", "input", "additional_metadata")
107
+ WORKFLOW_NAME_FIELD_NUMBER: _ClassVar[int]
108
+ INPUT_FIELD_NUMBER: _ClassVar[int]
109
+ ADDITIONAL_METADATA_FIELD_NUMBER: _ClassVar[int]
110
+ workflow_name: str
111
+ input: bytes
112
+ additional_metadata: bytes
113
+ def __init__(self, workflow_name: _Optional[str] = ..., input: _Optional[bytes] = ..., additional_metadata: _Optional[bytes] = ...) -> None: ...
114
+
115
+ class TriggerWorkflowRunResponse(_message.Message):
116
+ __slots__ = ("external_id",)
117
+ EXTERNAL_ID_FIELD_NUMBER: _ClassVar[int]
118
+ external_id: str
119
+ def __init__(self, external_id: _Optional[str] = ...) -> None: ...
120
+
121
+ class CreateWorkflowVersionRequest(_message.Message):
122
+ __slots__ = ("name", "description", "version", "event_triggers", "cron_triggers", "tasks", "concurrency", "cron_input", "on_failure_task", "sticky")
123
+ NAME_FIELD_NUMBER: _ClassVar[int]
124
+ DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
125
+ VERSION_FIELD_NUMBER: _ClassVar[int]
126
+ EVENT_TRIGGERS_FIELD_NUMBER: _ClassVar[int]
127
+ CRON_TRIGGERS_FIELD_NUMBER: _ClassVar[int]
128
+ TASKS_FIELD_NUMBER: _ClassVar[int]
129
+ CONCURRENCY_FIELD_NUMBER: _ClassVar[int]
130
+ CRON_INPUT_FIELD_NUMBER: _ClassVar[int]
131
+ ON_FAILURE_TASK_FIELD_NUMBER: _ClassVar[int]
132
+ STICKY_FIELD_NUMBER: _ClassVar[int]
133
+ name: str
134
+ description: str
135
+ version: str
136
+ event_triggers: _containers.RepeatedScalarFieldContainer[str]
137
+ cron_triggers: _containers.RepeatedScalarFieldContainer[str]
138
+ tasks: _containers.RepeatedCompositeFieldContainer[CreateTaskOpts]
139
+ concurrency: Concurrency
140
+ cron_input: str
141
+ on_failure_task: CreateTaskOpts
142
+ sticky: StickyStrategy
143
+ def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., version: _Optional[str] = ..., event_triggers: _Optional[_Iterable[str]] = ..., cron_triggers: _Optional[_Iterable[str]] = ..., tasks: _Optional[_Iterable[_Union[CreateTaskOpts, _Mapping]]] = ..., concurrency: _Optional[_Union[Concurrency, _Mapping]] = ..., cron_input: _Optional[str] = ..., on_failure_task: _Optional[_Union[CreateTaskOpts, _Mapping]] = ..., sticky: _Optional[_Union[StickyStrategy, str]] = ...) -> None: ...
144
+
145
+ class Concurrency(_message.Message):
146
+ __slots__ = ("expression", "max_runs", "limit_strategy")
147
+ EXPRESSION_FIELD_NUMBER: _ClassVar[int]
148
+ MAX_RUNS_FIELD_NUMBER: _ClassVar[int]
149
+ LIMIT_STRATEGY_FIELD_NUMBER: _ClassVar[int]
150
+ expression: str
151
+ max_runs: int
152
+ limit_strategy: ConcurrencyLimitStrategy
153
+ def __init__(self, expression: _Optional[str] = ..., max_runs: _Optional[int] = ..., limit_strategy: _Optional[_Union[ConcurrencyLimitStrategy, str]] = ...) -> None: ...
154
+
155
+ class DesiredWorkerLabels(_message.Message):
156
+ __slots__ = ("strValue", "intValue", "required", "comparator", "weight")
157
+ STRVALUE_FIELD_NUMBER: _ClassVar[int]
158
+ INTVALUE_FIELD_NUMBER: _ClassVar[int]
159
+ REQUIRED_FIELD_NUMBER: _ClassVar[int]
160
+ COMPARATOR_FIELD_NUMBER: _ClassVar[int]
161
+ WEIGHT_FIELD_NUMBER: _ClassVar[int]
162
+ strValue: str
163
+ intValue: int
164
+ required: bool
165
+ comparator: WorkerLabelComparator
166
+ weight: int
167
+ def __init__(self, strValue: _Optional[str] = ..., intValue: _Optional[int] = ..., required: bool = ..., comparator: _Optional[_Union[WorkerLabelComparator, str]] = ..., weight: _Optional[int] = ...) -> None: ...
168
+
169
+ class CreateTaskOpts(_message.Message):
170
+ __slots__ = ("readable_id", "action", "timeout", "inputs", "parents", "retries", "rate_limits", "worker_labels", "backoff_factor", "backoff_max_seconds", "concurrency", "conditions", "schedule_timeout")
171
+ class WorkerLabelsEntry(_message.Message):
172
+ __slots__ = ("key", "value")
173
+ KEY_FIELD_NUMBER: _ClassVar[int]
174
+ VALUE_FIELD_NUMBER: _ClassVar[int]
175
+ key: str
176
+ value: DesiredWorkerLabels
177
+ def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[DesiredWorkerLabels, _Mapping]] = ...) -> None: ...
178
+ READABLE_ID_FIELD_NUMBER: _ClassVar[int]
179
+ ACTION_FIELD_NUMBER: _ClassVar[int]
180
+ TIMEOUT_FIELD_NUMBER: _ClassVar[int]
181
+ INPUTS_FIELD_NUMBER: _ClassVar[int]
182
+ PARENTS_FIELD_NUMBER: _ClassVar[int]
183
+ RETRIES_FIELD_NUMBER: _ClassVar[int]
184
+ RATE_LIMITS_FIELD_NUMBER: _ClassVar[int]
185
+ WORKER_LABELS_FIELD_NUMBER: _ClassVar[int]
186
+ BACKOFF_FACTOR_FIELD_NUMBER: _ClassVar[int]
187
+ BACKOFF_MAX_SECONDS_FIELD_NUMBER: _ClassVar[int]
188
+ CONCURRENCY_FIELD_NUMBER: _ClassVar[int]
189
+ CONDITIONS_FIELD_NUMBER: _ClassVar[int]
190
+ SCHEDULE_TIMEOUT_FIELD_NUMBER: _ClassVar[int]
191
+ readable_id: str
192
+ action: str
193
+ timeout: str
194
+ inputs: str
195
+ parents: _containers.RepeatedScalarFieldContainer[str]
196
+ retries: int
197
+ rate_limits: _containers.RepeatedCompositeFieldContainer[CreateTaskRateLimit]
198
+ worker_labels: _containers.MessageMap[str, DesiredWorkerLabels]
199
+ backoff_factor: float
200
+ backoff_max_seconds: int
201
+ concurrency: _containers.RepeatedCompositeFieldContainer[Concurrency]
202
+ conditions: _condition_pb2.TaskConditions
203
+ schedule_timeout: str
204
+ def __init__(self, readable_id: _Optional[str] = ..., action: _Optional[str] = ..., timeout: _Optional[str] = ..., inputs: _Optional[str] = ..., parents: _Optional[_Iterable[str]] = ..., retries: _Optional[int] = ..., rate_limits: _Optional[_Iterable[_Union[CreateTaskRateLimit, _Mapping]]] = ..., worker_labels: _Optional[_Mapping[str, DesiredWorkerLabels]] = ..., backoff_factor: _Optional[float] = ..., backoff_max_seconds: _Optional[int] = ..., concurrency: _Optional[_Iterable[_Union[Concurrency, _Mapping]]] = ..., conditions: _Optional[_Union[_condition_pb2.TaskConditions, _Mapping]] = ..., schedule_timeout: _Optional[str] = ...) -> None: ...
205
+
206
+ class CreateTaskRateLimit(_message.Message):
207
+ __slots__ = ("key", "units", "key_expr", "units_expr", "limit_values_expr", "duration")
208
+ KEY_FIELD_NUMBER: _ClassVar[int]
209
+ UNITS_FIELD_NUMBER: _ClassVar[int]
210
+ KEY_EXPR_FIELD_NUMBER: _ClassVar[int]
211
+ UNITS_EXPR_FIELD_NUMBER: _ClassVar[int]
212
+ LIMIT_VALUES_EXPR_FIELD_NUMBER: _ClassVar[int]
213
+ DURATION_FIELD_NUMBER: _ClassVar[int]
214
+ key: str
215
+ units: int
216
+ key_expr: str
217
+ units_expr: str
218
+ limit_values_expr: str
219
+ duration: RateLimitDuration
220
+ def __init__(self, key: _Optional[str] = ..., units: _Optional[int] = ..., key_expr: _Optional[str] = ..., units_expr: _Optional[str] = ..., limit_values_expr: _Optional[str] = ..., duration: _Optional[_Union[RateLimitDuration, str]] = ...) -> None: ...
221
+
222
+ class CreateWorkflowVersionResponse(_message.Message):
223
+ __slots__ = ("id", "workflow_id")
224
+ ID_FIELD_NUMBER: _ClassVar[int]
225
+ WORKFLOW_ID_FIELD_NUMBER: _ClassVar[int]
226
+ id: str
227
+ workflow_id: str
228
+ def __init__(self, id: _Optional[str] = ..., workflow_id: _Optional[str] = ...) -> None: ...