flyte 0.2.0b11__py3-none-any.whl → 0.2.0b13__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 flyte might be problematic. Click here for more details.

Files changed (50) hide show
  1. flyte/_bin/runtime.py +11 -2
  2. flyte/_deploy.py +29 -0
  3. flyte/_initialize.py +7 -6
  4. flyte/_internal/controllers/remote/_action.py +5 -0
  5. flyte/_internal/controllers/remote/_controller.py +43 -3
  6. flyte/_internal/controllers/remote/_core.py +7 -0
  7. flyte/_internal/runtime/convert.py +61 -7
  8. flyte/_internal/runtime/task_serde.py +1 -1
  9. flyte/_protos/common/list_pb2.py +3 -3
  10. flyte/_protos/common/list_pb2.pyi +2 -0
  11. flyte/_protos/workflow/environment_pb2.py +29 -0
  12. flyte/_protos/workflow/environment_pb2.pyi +12 -0
  13. flyte/_protos/workflow/environment_pb2_grpc.py +4 -0
  14. flyte/_protos/workflow/queue_service_pb2.py +30 -29
  15. flyte/_protos/workflow/queue_service_pb2.pyi +5 -2
  16. flyte/_protos/workflow/run_definition_pb2.py +61 -61
  17. flyte/_protos/workflow/run_definition_pb2.pyi +4 -2
  18. flyte/_protos/workflow/run_service_pb2.py +20 -24
  19. flyte/_protos/workflow/run_service_pb2.pyi +2 -6
  20. flyte/_protos/workflow/state_service_pb2.py +36 -28
  21. flyte/_protos/workflow/state_service_pb2.pyi +19 -15
  22. flyte/_protos/workflow/state_service_pb2_grpc.py +28 -28
  23. flyte/_protos/workflow/task_definition_pb2.py +28 -22
  24. flyte/_protos/workflow/task_definition_pb2.pyi +16 -4
  25. flyte/_protos/workflow/task_service_pb2.py +27 -11
  26. flyte/_protos/workflow/task_service_pb2.pyi +29 -1
  27. flyte/_protos/workflow/task_service_pb2_grpc.py +34 -0
  28. flyte/_run.py +6 -0
  29. flyte/_trace.py +0 -2
  30. flyte/_utils/__init__.py +4 -0
  31. flyte/_utils/org_discovery.py +26 -0
  32. flyte/_version.py +2 -2
  33. flyte/cli/_abort.py +4 -2
  34. flyte/cli/_common.py +8 -2
  35. flyte/cli/_create.py +4 -3
  36. flyte/cli/_deploy.py +15 -8
  37. flyte/cli/_get.py +13 -12
  38. flyte/cli/_run.py +1 -2
  39. flyte/cli/main.py +1 -1
  40. flyte/remote/__init__.py +2 -1
  41. flyte/remote/_client/_protocols.py +2 -0
  42. flyte/remote/_task.py +141 -9
  43. flyte/syncify/_api.py +1 -2
  44. flyte/types/_type_engine.py +83 -9
  45. flyte-0.2.0b13.dist-info/METADATA +249 -0
  46. {flyte-0.2.0b11.dist-info → flyte-0.2.0b13.dist-info}/RECORD +49 -46
  47. flyte-0.2.0b11.dist-info/METADATA +0 -181
  48. {flyte-0.2.0b11.dist-info → flyte-0.2.0b13.dist-info}/WHEEL +0 -0
  49. {flyte-0.2.0b11.dist-info → flyte-0.2.0b13.dist-info}/entry_points.txt +0 -0
  50. {flyte-0.2.0b11.dist-info → flyte-0.2.0b13.dist-info}/top_level.txt +0 -0
flyte/_bin/runtime.py CHANGED
@@ -78,7 +78,7 @@ def main(
78
78
 
79
79
  import flyte
80
80
  import flyte._utils as utils
81
- from flyte._initialize import initialize_in_cluster
81
+ from flyte._initialize import init
82
82
  from flyte._internal.controllers import create_controller
83
83
  from flyte._internal.imagebuild.image_builder import ImageCache
84
84
  from flyte._internal.runtime.entrypoints import load_and_run_task
@@ -112,7 +112,16 @@ def main(
112
112
  logger.debug(f"Using controller endpoint: {ep} with kwargs: {controller_kwargs}")
113
113
 
114
114
  bundle = CodeBundle(tgz=tgz, pkl=pkl, destination=dest, computed_version=version)
115
- initialize_in_cluster()
115
+ # We init regular client here so that reference tasks can work
116
+ # Current reference tasks will not work with remote controller, because we create 2 different
117
+ # channels on different threads and this is not supported by grpcio or the auth system. It ends up leading
118
+ # File "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi", line 147,
119
+ # in grpc._cython.cygrpc.PollerCompletionQueue._handle_events
120
+ # BlockingIOError: [Errno 11] Resource temporarily unavailable
121
+ # init(org=org, project=project, domain=domain, **controller_kwargs)
122
+ # TODO solution is to use a single channel for both controller and reference tasks, but this requires a refactor
123
+ init()
124
+ # Controller is created with the same kwargs as init, so that it can be used to run tasks
116
125
  controller = create_controller(ct="remote", **controller_kwargs)
117
126
 
118
127
  ic = ImageCache.from_transport(image_cache) if image_cache else None
flyte/_deploy.py CHANGED
@@ -46,6 +46,35 @@ class Deployment:
46
46
  )
47
47
  return f"Deployment(envs=[{env_names}], tasks=[{task_names_versions}])"
48
48
 
49
+ def task_repr(self) -> List[List[Tuple[str, str]]]:
50
+ """
51
+ Returns a detailed representation of the deployed tasks.
52
+ """
53
+ tuples = []
54
+ if self.deployed_tasks:
55
+ for task in self.deployed_tasks:
56
+ tuples.append(
57
+ [
58
+ ("name", task.task_template.id.name),
59
+ ("version", task.task_template.id.version),
60
+ ]
61
+ )
62
+ return tuples
63
+
64
+ def env_repr(self) -> List[List[Tuple[str, str]]]:
65
+ """
66
+ Returns a detailed representation of the deployed environments.
67
+ """
68
+ tuples = []
69
+ for env_name, env in self.envs.items():
70
+ tuples.append(
71
+ [
72
+ ("environment", env_name),
73
+ ("image", env.image.uri if isinstance(env.image, Image) else env.image or ""),
74
+ ]
75
+ )
76
+ return tuples
77
+
49
78
 
50
79
  async def _deploy_task(
51
80
  task: TaskTemplate, serialization_context: SerializationContext, dryrun: bool = False
flyte/_initialize.py CHANGED
@@ -32,6 +32,7 @@ class CommonInit:
32
32
  org: str | None = None
33
33
  project: str | None = None
34
34
  domain: str | None = None
35
+ batch_size: int = 1000
35
36
 
36
37
 
37
38
  @dataclass(init=True, kw_only=True, repr=True, eq=True, frozen=True)
@@ -130,6 +131,7 @@ async def init(
130
131
  rpc_retries: int = 3,
131
132
  http_proxy_url: str | None = None,
132
133
  storage: Storage | None = None,
134
+ batch_size: int = 1000,
133
135
  ) -> None:
134
136
  """
135
137
  Initialize the Flyte system with the given configuration. This method should be called before any other Flyte
@@ -162,13 +164,12 @@ async def init(
162
164
  :param insecure: insecure flag for the client
163
165
  :param storage: Optional blob store (S3, GCS, Azure) configuration if needed to access (i.e. using Minio)
164
166
  :param org: Optional organization override for the client. Should be set by auth instead.
165
- :param config: Optional config to override the init parameters
167
+ :param batch_size: Optional batch size for operations that use listings, defaults to 1000, so limit larger than
168
+ batch_size will be split into multiple requests.
166
169
 
167
170
  :return: None
168
171
  """
169
- from flyte._utils import get_cwd_editable_install
170
-
171
- from ._utils.org_discovery import org_from_endpoint
172
+ from flyte._utils import get_cwd_editable_install, org_from_endpoint, sanitize_endpoint
172
173
 
173
174
  interactive_mode = ipython_check()
174
175
 
@@ -178,8 +179,7 @@ async def init(
178
179
 
179
180
  global _init_config # noqa: PLW0603
180
181
 
181
- if endpoint and "://" not in endpoint:
182
- endpoint = f"dns:///{endpoint}"
182
+ endpoint = sanitize_endpoint(endpoint)
183
183
 
184
184
  with _init_lock:
185
185
  client = None
@@ -209,6 +209,7 @@ async def init(
209
209
  client=client,
210
210
  storage=storage,
211
211
  org=org or org_from_endpoint(endpoint),
212
+ batch_size=batch_size,
212
213
  )
213
214
 
214
215
 
@@ -28,6 +28,7 @@ class Action:
28
28
  started: bool = False
29
29
  retries: int = 0
30
30
  client_err: Exception | None = None # This error is set when something goes wrong in the controller.
31
+ cache_key: str | None = None # None means no caching, otherwise it is the version of the cache.
31
32
 
32
33
  @property
33
34
  def name(self) -> str:
@@ -91,6 +92,8 @@ class Action:
91
92
  if not self.started:
92
93
  self.task = action.task
93
94
 
95
+ self.cache_key = action.cache_key
96
+
94
97
  def set_client_error(self, exc: Exception):
95
98
  self.client_err = exc
96
99
 
@@ -106,6 +109,7 @@ class Action:
106
109
  task_spec: task_definition_pb2.TaskSpec,
107
110
  inputs_uri: str,
108
111
  run_output_base: str,
112
+ cache_key: str | None = None,
109
113
  ) -> Action:
110
114
  return cls(
111
115
  action_id=sub_action_id,
@@ -115,6 +119,7 @@ class Action:
115
119
  task=task_spec,
116
120
  inputs_uri=inputs_uri,
117
121
  run_output_base=run_output_base,
122
+ cache_key=cache_key,
118
123
  )
119
124
 
120
125
  @classmethod
@@ -174,16 +174,35 @@ class RemoteController(Controller):
174
174
  )
175
175
 
176
176
  task_spec = translate_task_to_wire(_task, new_serialization_context)
177
-
178
177
  serialized_inputs = inputs.proto_inputs.SerializeToString(deterministic=True)
178
+
179
+ inputs_hash = convert.generate_inputs_hash(serialized_inputs)
179
180
  sub_action_id, sub_action_output_path = convert.generate_sub_action_id_and_output_path(
180
- tctx, task_spec, serialized_inputs, _task_call_seq
181
+ tctx, task_spec, inputs_hash, _task_call_seq
181
182
  )
182
183
 
183
184
  inputs_uri = io.inputs_path(sub_action_output_path)
184
185
  await upload_inputs_with_retry(serialized_inputs, inputs_uri)
186
+
187
+ md = task_spec.task_template.metadata
188
+ ignored_input_vars = []
189
+ if len(md.cache_ignore_input_vars) > 0:
190
+ ignored_input_vars = list(md.cache_ignore_input_vars)
191
+ cache_key = None
192
+ if task_spec.task_template.metadata and task_spec.task_template.metadata.discoverable:
193
+ discovery_version = task_spec.task_template.metadata.discovery_version
194
+ cache_key = convert.generate_cache_key_hash(
195
+ _task.name,
196
+ inputs_hash,
197
+ task_spec.task_template.interface,
198
+ discovery_version,
199
+ ignored_input_vars,
200
+ inputs.proto_inputs,
201
+ )
202
+
185
203
  # Clear to free memory
186
204
  serialized_inputs = None # type: ignore
205
+ inputs_hash = None # type: ignore
187
206
 
188
207
  action = Action.from_task(
189
208
  sub_action_id=run_definition_pb2.ActionIdentifier(
@@ -200,6 +219,7 @@ class RemoteController(Controller):
200
219
  task_spec=task_spec,
201
220
  inputs_uri=inputs_uri,
202
221
  run_output_base=tctx.run_base_dir,
222
+ cache_key=cache_key,
203
223
  )
204
224
 
205
225
  try:
@@ -400,14 +420,33 @@ class RemoteController(Controller):
400
420
  inputs = await convert.convert_from_native_to_inputs(native_interface, *args, **kwargs)
401
421
  serialized_inputs = inputs.proto_inputs.SerializeToString(deterministic=True)
402
422
 
423
+ inputs_hash = convert.generate_inputs_hash(serialized_inputs)
403
424
  sub_action_id, sub_action_output_path = convert.generate_sub_action_id_and_output_path(
404
- tctx, task_name, serialized_inputs, invoke_seq_num
425
+ tctx, task_name, inputs_hash, invoke_seq_num
405
426
  )
406
427
 
407
428
  inputs_uri = io.inputs_path(sub_action_output_path)
408
429
  await upload_inputs_with_retry(serialized_inputs, inputs_uri)
430
+ # cache key - task name, task signature, inputs, cache version
431
+ cache_key = None
432
+ md = _task.spec.task_template.metadata
433
+ ignored_input_vars = []
434
+ if len(md.cache_ignore_input_vars) > 0:
435
+ ignored_input_vars = list(md.cache_ignore_input_vars)
436
+ if _task.spec.task_template.metadata and _task.spec.task_template.metadata.discoverable:
437
+ discovery_version = _task.spec.task_template.metadata.discovery_version
438
+ cache_key = convert.generate_cache_key_hash(
439
+ task_name,
440
+ inputs_hash,
441
+ _task.spec.task_template.interface,
442
+ discovery_version,
443
+ ignored_input_vars,
444
+ inputs.proto_inputs,
445
+ )
446
+
409
447
  # Clear to free memory
410
448
  serialized_inputs = None # type: ignore
449
+ inputs_hash = None # type: ignore
411
450
 
412
451
  action = Action.from_task(
413
452
  sub_action_id=run_definition_pb2.ActionIdentifier(
@@ -424,6 +463,7 @@ class RemoteController(Controller):
424
463
  task_spec=_task.spec,
425
464
  inputs_uri=inputs_uri,
426
465
  run_output_base=tctx.run_base_dir,
466
+ cache_key=cache_key,
427
467
  )
428
468
 
429
469
  try:
@@ -7,6 +7,7 @@ from asyncio import Event
7
7
  from typing import Awaitable, Coroutine, Optional
8
8
 
9
9
  import grpc.aio
10
+ from google.protobuf.wrappers_pb2 import StringValue
10
11
 
11
12
  import flyte.errors
12
13
  from flyte._logging import log, logger
@@ -311,6 +312,11 @@ class Controller:
311
312
  if not action.is_started() and action.task is not None:
312
313
  logger.debug(f"Attempting to launch action: {action.name}")
313
314
  try:
315
+ cache_key = None
316
+ logger.warning(f"Action {action.name} has cache version {action.cache_key}")
317
+ if action.cache_key:
318
+ cache_key = StringValue(value=action.cache_key)
319
+
314
320
  await self._queue_service.EnqueueAction(
315
321
  queue_service_pb2.EnqueueActionRequest(
316
322
  action_id=action.action_id,
@@ -324,6 +330,7 @@ class Controller:
324
330
  name=action.task.task_template.id.name,
325
331
  ),
326
332
  spec=action.task,
333
+ cache_key=cache_key,
327
334
  ),
328
335
  input_uri=action.inputs_uri,
329
336
  run_output_base=action.run_output_base,
@@ -2,10 +2,13 @@ from __future__ import annotations
2
2
 
3
3
  import base64
4
4
  import hashlib
5
+ import inspect
5
6
  from dataclasses import dataclass
6
- from typing import Any, Dict, Tuple, Union
7
+ from types import NoneType
8
+ from typing import Any, Dict, List, Tuple, Union, get_args
7
9
 
8
10
  from flyteidl.core import execution_pb2, literals_pb2
11
+ from flyteidl.core.interface_pb2 import TypedInterface
9
12
 
10
13
  import flyte.errors
11
14
  import flyte.storage as storage
@@ -57,25 +60,38 @@ async def convert_inputs_to_native(inputs: Inputs, python_interface: NativeInter
57
60
  return native_vals
58
61
 
59
62
 
63
+ def is_optional_type(tp) -> bool:
64
+ """
65
+ True if the *annotation* `tp` is equivalent to Optional[…].
66
+ Works for Optional[T], Union[T, None], and T | None.
67
+ """
68
+ return NoneType in get_args(tp) # fastest check
69
+
70
+
60
71
  async def convert_from_native_to_inputs(interface: NativeInterface, *args, **kwargs) -> Inputs:
61
72
  kwargs = interface.convert_to_kwargs(*args, **kwargs)
62
73
  if len(kwargs) == 0:
63
74
  return Inputs.empty()
75
+
64
76
  # fill in defaults if missing
65
77
  for input_name, (input_type, default_value) in interface.inputs.items():
66
78
  if input_name not in kwargs:
67
- if default_value is not None:
79
+ if (default_value is not None and default_value is not inspect.Signature.empty) or (
80
+ default_value is None and is_optional_type(input_type)
81
+ ):
68
82
  kwargs[input_name] = default_value
69
- # todo: fill in Nones for optional inputs
70
83
  if len(kwargs) < len(interface.inputs):
71
84
  raise ValueError(
72
85
  f"Received {len(kwargs)} inputs but interface has {len(interface.inputs)}. "
73
86
  f"Please provide all required inputs."
74
87
  )
75
88
  literal_map = await TypeEngine.dict_to_literal_map(kwargs, interface.get_input_types())
89
+ # Make sure we the interface, not literal_map or kwargs, because those may have a different order
76
90
  return Inputs(
77
91
  proto_inputs=run_definition_pb2.Inputs(
78
- literals=[run_definition_pb2.NamedLiteral(name=k, value=v) for k, v in literal_map.literals.items()]
92
+ literals=[
93
+ run_definition_pb2.NamedLiteral(name=k, value=literal_map.literals[k]) for k in interface.inputs.keys()
94
+ ]
79
95
  )
80
96
  )
81
97
 
@@ -201,10 +217,48 @@ def hash_data(data: Union[str, bytes]) -> str:
201
217
  return base64.b64encode(digest).decode("utf-8")
202
218
 
203
219
 
220
+ def generate_inputs_hash(serialized_inputs: str | bytes) -> str:
221
+ """
222
+ Generate a hash for the inputs. This is used to uniquely identify the inputs for a task.
223
+ :return: A hexadecimal string representation of the hash.
224
+ """
225
+ return hash_data(serialized_inputs)
226
+
227
+
228
+ def generate_cache_key_hash(
229
+ task_name: str,
230
+ inputs_hash: str,
231
+ task_interface: TypedInterface,
232
+ cache_version: str,
233
+ ignored_input_vars: List[str],
234
+ proto_inputs: run_definition_pb2.Inputs,
235
+ ) -> str:
236
+ """
237
+ Generate a cache key hash based on the inputs hash, task name, task interface, and cache version.
238
+ This is used to uniquely identify the cache key for a task.
239
+
240
+ :param task_name: The name of the task.
241
+ :param inputs_hash: The hash of the inputs.
242
+ :param task_interface: The interface of the task.
243
+ :param cache_version: The version of the cache.
244
+ :param ignored_input_vars: A list of input variable names to ignore when generating the cache key.
245
+ :param proto_inputs: The proto inputs for the task, only used if there are ignored inputs.
246
+ :return: A hexadecimal string representation of the cache key hash.
247
+ """
248
+ if ignored_input_vars:
249
+ filtered = [named_lit for named_lit in proto_inputs.literals if named_lit.name not in ignored_input_vars]
250
+ final = run_definition_pb2.Inputs(literals=filtered)
251
+ final_inputs = final.SerializeToString(deterministic=True)
252
+ else:
253
+ final_inputs = inputs_hash
254
+ data = f"{final_inputs}{task_name}{task_interface.SerializeToString(deterministic=True)}{cache_version}"
255
+ return hash_data(data)
256
+
257
+
204
258
  def generate_sub_action_id_and_output_path(
205
259
  tctx: TaskContext,
206
260
  task_spec_or_name: task_definition_pb2.TaskSpec | str,
207
- serialized_inputs: str | bytes,
261
+ inputs_hash: str,
208
262
  invoke_seq: int,
209
263
  ) -> Tuple[ActionID, str]:
210
264
  """
@@ -213,14 +267,14 @@ def generate_sub_action_id_and_output_path(
213
267
  action name = current action name + task name + input hash + group name (if available)
214
268
  :param tctx:
215
269
  :param task_spec_or_name: task specification or task name. Task name is only used in case of trace actions.
216
- :param serialized_inputs:
270
+ :param inputs_hash: Consistent hash string of the inputs
217
271
  :param invoke_seq: The sequence number of the invocation, used to differentiate between multiple invocations.
218
272
  :return:
219
273
  """
220
274
  current_action_id = tctx.action
221
275
  current_output_path = tctx.run_base_dir
222
- inputs_hash = hash_data(serialized_inputs)
223
276
  if isinstance(task_spec_or_name, task_definition_pb2.TaskSpec):
277
+ task_spec_or_name.task_template.interface
224
278
  task_hash = hash_data(task_spec_or_name.SerializeToString(deterministic=True))
225
279
  else:
226
280
  task_hash = task_spec_or_name
@@ -165,7 +165,7 @@ def get_proto_task(task: TaskTemplate, serialize_context: SerializationContext)
165
165
  discoverable=cache_enabled,
166
166
  discovery_version=cache_version,
167
167
  cache_serializable=task_cache.serialize,
168
- cache_ignore_input_vars=task_cache.ignored_inputs,
168
+ cache_ignore_input_vars=task_cache.get_ignored_inputs() if cache_enabled else None,
169
169
  runtime=tasks_pb2.RuntimeMetadata(),
170
170
  retries=get_proto_retry_strategy(task.retries),
171
171
  timeout=get_proto_timeout(task.timeout),
@@ -13,7 +13,7 @@ _sym_db = _symbol_database.Default()
13
13
 
14
14
 
15
15
 
16
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11\x63ommon/list.proto\x12\x0f\x63loudidl.common\"\x83\x01\n\x04Sort\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12=\n\tdirection\x18\x02 \x01(\x0e\x32\x1f.cloudidl.common.Sort.DirectionR\tdirection\"*\n\tDirection\x12\x0e\n\nDESCENDING\x10\x00\x12\r\n\tASCENDING\x10\x01\"\xfe\x01\n\x0bListRequest\x12\x14\n\x05limit\x18\x01 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\x12\x32\n\x07sort_by\x18\x03 \x01(\x0b\x32\x15.cloudidl.common.SortB\x02\x18\x01R\x06sortBy\x12\x31\n\x07\x66ilters\x18\x04 \x03(\x0b\x32\x17.cloudidl.common.FilterR\x07\x66ilters\x12\x1f\n\x0braw_filters\x18\x05 \x03(\tR\nrawFilters\x12;\n\x0esort_by_fields\x18\x06 \x03(\x0b\x32\x15.cloudidl.common.SortR\x0csortByFields\"\xad\x02\n\x06\x46ilter\x12<\n\x08\x66unction\x18\x01 \x01(\x0e\x32 .cloudidl.common.Filter.FunctionR\x08\x66unction\x12\x14\n\x05\x66ield\x18\x02 \x01(\tR\x05\x66ield\x12\x16\n\x06values\x18\x03 \x03(\tR\x06values\"\xb6\x01\n\x08\x46unction\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\x12\x0c\n\x08\x43ONTAINS\x10\x06\x12\x0c\n\x08VALUE_IN\x10\x07\x12\r\n\tENDS_WITH\x10\x0c\x12\x11\n\rNOT_ENDS_WITH\x10\rB\xaa\x01\n\x13\x63om.cloudidl.commonB\tListProtoH\x02P\x01Z)github.com/unionai/cloud/gen/pb-go/common\xa2\x02\x03\x43\x43X\xaa\x02\x0f\x43loudidl.Common\xca\x02\x0f\x43loudidl\\Common\xe2\x02\x1b\x43loudidl\\Common\\GPBMetadata\xea\x02\x10\x43loudidl::Commonb\x06proto3')
16
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11\x63ommon/list.proto\x12\x0f\x63loudidl.common\"\x83\x01\n\x04Sort\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12=\n\tdirection\x18\x02 \x01(\x0e\x32\x1f.cloudidl.common.Sort.DirectionR\tdirection\"*\n\tDirection\x12\x0e\n\nDESCENDING\x10\x00\x12\r\n\tASCENDING\x10\x01\"\xfe\x01\n\x0bListRequest\x12\x14\n\x05limit\x18\x01 \x01(\rR\x05limit\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\x12\x32\n\x07sort_by\x18\x03 \x01(\x0b\x32\x15.cloudidl.common.SortB\x02\x18\x01R\x06sortBy\x12\x31\n\x07\x66ilters\x18\x04 \x03(\x0b\x32\x17.cloudidl.common.FilterR\x07\x66ilters\x12\x1f\n\x0braw_filters\x18\x05 \x03(\tR\nrawFilters\x12;\n\x0esort_by_fields\x18\x06 \x03(\x0b\x32\x15.cloudidl.common.SortR\x0csortByFields\"\xcc\x02\n\x06\x46ilter\x12<\n\x08\x66unction\x18\x01 \x01(\x0e\x32 .cloudidl.common.Filter.FunctionR\x08\x66unction\x12\x14\n\x05\x66ield\x18\x02 \x01(\tR\x05\x66ield\x12\x16\n\x06values\x18\x03 \x03(\tR\x06values\"\xd5\x01\n\x08\x46unction\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\x12\x0c\n\x08\x43ONTAINS\x10\x06\x12\x0c\n\x08VALUE_IN\x10\x07\x12\r\n\tENDS_WITH\x10\x0c\x12\x11\n\rNOT_ENDS_WITH\x10\r\x12\x1d\n\x19\x43ONTAINS_CASE_INSENSITIVE\x10\x0e\x42\xaa\x01\n\x13\x63om.cloudidl.commonB\tListProtoH\x02P\x01Z)github.com/unionai/cloud/gen/pb-go/common\xa2\x02\x03\x43\x43X\xaa\x02\x0f\x43loudidl.Common\xca\x02\x0f\x43loudidl\\Common\xe2\x02\x1b\x43loudidl\\Common\\GPBMetadata\xea\x02\x10\x43loudidl::Commonb\x06proto3')
17
17
 
18
18
  _globals = globals()
19
19
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -30,7 +30,7 @@ if _descriptor._USE_C_DESCRIPTORS == False:
30
30
  _globals['_LISTREQUEST']._serialized_start=173
31
31
  _globals['_LISTREQUEST']._serialized_end=427
32
32
  _globals['_FILTER']._serialized_start=430
33
- _globals['_FILTER']._serialized_end=731
33
+ _globals['_FILTER']._serialized_end=762
34
34
  _globals['_FILTER_FUNCTION']._serialized_start=549
35
- _globals['_FILTER_FUNCTION']._serialized_end=731
35
+ _globals['_FILTER_FUNCTION']._serialized_end=762
36
36
  # @@protoc_insertion_point(module_scope)
@@ -50,6 +50,7 @@ class Filter(_message.Message):
50
50
  VALUE_IN: _ClassVar[Filter.Function]
51
51
  ENDS_WITH: _ClassVar[Filter.Function]
52
52
  NOT_ENDS_WITH: _ClassVar[Filter.Function]
53
+ CONTAINS_CASE_INSENSITIVE: _ClassVar[Filter.Function]
53
54
  EQUAL: Filter.Function
54
55
  NOT_EQUAL: Filter.Function
55
56
  GREATER_THAN: Filter.Function
@@ -60,6 +61,7 @@ class Filter(_message.Message):
60
61
  VALUE_IN: Filter.Function
61
62
  ENDS_WITH: Filter.Function
62
63
  NOT_ENDS_WITH: Filter.Function
64
+ CONTAINS_CASE_INSENSITIVE: Filter.Function
63
65
  FUNCTION_FIELD_NUMBER: _ClassVar[int]
64
66
  FIELD_FIELD_NUMBER: _ClassVar[int]
65
67
  VALUES_FIELD_NUMBER: _ClassVar[int]
@@ -0,0 +1,29 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: workflow/environment.proto
4
+ """Generated protocol buffer code."""
5
+ from google.protobuf import descriptor as _descriptor
6
+ from google.protobuf import descriptor_pool as _descriptor_pool
7
+ from google.protobuf import symbol_database as _symbol_database
8
+ from google.protobuf.internal import builder as _builder
9
+ # @@protoc_insertion_point(imports)
10
+
11
+ _sym_db = _symbol_database.Default()
12
+
13
+
14
+ from flyte._protos.validate.validate import validate_pb2 as validate_dot_validate__pb2
15
+
16
+
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1aworkflow/environment.proto\x12\x11\x63loudidl.workflow\x1a\x17validate/validate.proto\",\n\x0b\x45nvironment\x12\x1d\n\x04name\x18\x01 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18?R\x04nameB\xbd\x01\n\x15\x63om.cloudidl.workflowB\x10\x45nvironmentProtoH\x02P\x01Z+github.com/unionai/cloud/gen/pb-go/workflow\xa2\x02\x03\x43WX\xaa\x02\x11\x43loudidl.Workflow\xca\x02\x11\x43loudidl\\Workflow\xe2\x02\x1d\x43loudidl\\Workflow\\GPBMetadata\xea\x02\x12\x43loudidl::Workflowb\x06proto3')
18
+
19
+ _globals = globals()
20
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'workflow.environment_pb2', _globals)
22
+ if _descriptor._USE_C_DESCRIPTORS == False:
23
+ DESCRIPTOR._options = None
24
+ DESCRIPTOR._serialized_options = b'\n\025com.cloudidl.workflowB\020EnvironmentProtoH\002P\001Z+github.com/unionai/cloud/gen/pb-go/workflow\242\002\003CWX\252\002\021Cloudidl.Workflow\312\002\021Cloudidl\\Workflow\342\002\035Cloudidl\\Workflow\\GPBMetadata\352\002\022Cloudidl::Workflow'
25
+ _ENVIRONMENT.fields_by_name['name']._options = None
26
+ _ENVIRONMENT.fields_by_name['name']._serialized_options = b'\372B\006r\004\020\001\030?'
27
+ _globals['_ENVIRONMENT']._serialized_start=74
28
+ _globals['_ENVIRONMENT']._serialized_end=118
29
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,12 @@
1
+ from flyte._protos.validate.validate import validate_pb2 as _validate_pb2
2
+ from google.protobuf import descriptor as _descriptor
3
+ from google.protobuf import message as _message
4
+ from typing import ClassVar as _ClassVar, Optional as _Optional
5
+
6
+ DESCRIPTOR: _descriptor.FileDescriptor
7
+
8
+ class Environment(_message.Message):
9
+ __slots__ = ["name"]
10
+ NAME_FIELD_NUMBER: _ClassVar[int]
11
+ name: str
12
+ def __init__(self, name: _Optional[str] = ...) -> None: ...
@@ -0,0 +1,4 @@
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
+
@@ -12,12 +12,13 @@ _sym_db = _symbol_database.Default()
12
12
 
13
13
 
14
14
  from flyteidl.core import types_pb2 as flyteidl_dot_core_dot_types__pb2
15
+ from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2
15
16
  from flyte._protos.validate.validate import validate_pb2 as validate_dot_validate__pb2
16
17
  from flyte._protos.workflow import run_definition_pb2 as workflow_dot_run__definition__pb2
17
18
  from flyte._protos.workflow import task_definition_pb2 as workflow_dot_task__definition__pb2
18
19
 
19
20
 
20
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cworkflow/queue_service.proto\x12\x11\x63loudidl.workflow\x1a\x19\x66lyteidl/core/types.proto\x1a\x17validate/validate.proto\x1a\x1dworkflow/run_definition.proto\x1a\x1eworkflow/task_definition.proto\"\x7f\n\x10WorkerIdentifier\x12+\n\x0corganization\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x0corganization\x12!\n\x07\x63luster\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x07\x63luster\x12\x1b\n\x04name\x18\x03 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\"\x8a\x04\n\x14\x45nqueueActionRequest\x12J\n\taction_id\x18\x01 \x01(\x0b\x32#.cloudidl.workflow.ActionIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x08\x61\x63tionId\x12\x31\n\x12parent_action_name\x18\x02 \x01(\tH\x01R\x10parentActionName\x88\x01\x01\x12$\n\tinput_uri\x18\x06 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x08inputUri\x12/\n\x0frun_output_base\x18\x07 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\rrunOutputBase\x12\x14\n\x05group\x18\x08 \x01(\tR\x05group\x12\x18\n\x07subject\x18\t \x01(\tR\x07subject\x12=\n\x04task\x18\n \x01(\x0b\x32\x1d.cloudidl.workflow.TaskActionB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00R\x04task\x12@\n\x05trace\x18\x0b \x01(\x0b\x32\x1e.cloudidl.workflow.TraceActionB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00R\x05trace\x12L\n\tcondition\x18\x0c \x01(\x0b\x32\".cloudidl.workflow.ConditionActionB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00R\tconditionB\x06\n\x04specB\x15\n\x13_parent_action_name\"z\n\nTaskAction\x12\x31\n\x02id\x18\x01 \x01(\x0b\x32!.cloudidl.workflow.TaskIdentifierR\x02id\x12\x39\n\x04spec\x18\x02 \x01(\x0b\x32\x1b.cloudidl.workflow.TaskSpecB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x04spec\"*\n\x0bTraceAction\x12\x1b\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\"\x8a\x02\n\x0f\x43onditionAction\x12\x1b\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\x12 \n\x06run_id\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00R\x05runId\x12&\n\taction_id\x18\x03 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00R\x08\x61\x63tionId\x12\x18\n\x06global\x18\x04 \x01(\x08H\x00R\x06global\x12.\n\x04type\x18\x06 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\x12\x16\n\x06prompt\x18\x07 \x01(\tR\x06prompt\x12 \n\x0b\x64\x65scription\x18\x08 \x01(\tR\x0b\x64\x65scriptionB\x0c\n\x05scope\x12\x03\xf8\x42\x01\"\x17\n\x15\x45nqueueActionResponse\"Z\n\x15\x41\x62ortQueuedRunRequest\x12\x41\n\x06run_id\x18\x01 \x01(\x0b\x32 .cloudidl.workflow.RunIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x05runId\"\x18\n\x16\x41\x62ortQueuedRunResponse\"\x86\x03\n\x10HeartbeatRequest\x12J\n\tworker_id\x18\x01 \x01(\x0b\x32#.cloudidl.workflow.WorkerIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x08workerId\x12O\n\x11\x61\x63tive_action_ids\x18\x02 \x03(\x0b\x32#.cloudidl.workflow.ActionIdentifierR\x0f\x61\x63tiveActionIds\x12S\n\x13terminal_action_ids\x18\x03 \x03(\x0b\x32#.cloudidl.workflow.ActionIdentifierR\x11terminalActionIds\x12Q\n\x12\x61\x62orted_action_ids\x18\x04 \x03(\x0b\x32#.cloudidl.workflow.ActionIdentifierR\x10\x61\x62ortedActionIds\x12-\n\x12\x61vailable_capacity\x18\x05 \x01(\x05R\x11\x61vailableCapacity\"\xe4\x01\n\x11HeartbeatResponse\x12\x37\n\nnew_leases\x18\x01 \x03(\x0b\x32\x18.cloudidl.workflow.LeaseR\tnewLeases\x12?\n\x0e\x61\x62orted_leases\x18\x02 \x03(\x0b\x32\x18.cloudidl.workflow.LeaseR\rabortedLeases\x12U\n\x14\x66inalized_action_ids\x18\x03 \x03(\x0b\x32#.cloudidl.workflow.ActionIdentifierR\x12\x66inalizedActionIds\"a\n\x13StreamLeasesRequest\x12J\n\tworker_id\x18\x01 \x01(\x0b\x32#.cloudidl.workflow.WorkerIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x08workerId\"H\n\x14StreamLeasesResponse\x12\x30\n\x06leases\x18\x01 \x03(\x0b\x32\x18.cloudidl.workflow.LeaseR\x06leases\"\xbe\x03\n\x05Lease\x12J\n\taction_id\x18\x01 \x01(\x0b\x32#.cloudidl.workflow.ActionIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x08\x61\x63tionId\x12\x31\n\x12parent_action_name\x18\x02 \x01(\tH\x01R\x10parentActionName\x88\x01\x01\x12$\n\tinput_uri\x18\x04 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x08inputUri\x12/\n\x0frun_output_base\x18\x05 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\rrunOutputBase\x12=\n\x04task\x18\x06 \x01(\x0b\x32\x1d.cloudidl.workflow.TaskActionB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00R\x04task\x12L\n\tcondition\x18\x07 \x01(\x0b\x32\".cloudidl.workflow.ConditionActionB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00R\tcondition\x12\x14\n\x05group\x18\x08 \x01(\tR\x05group\x12\x18\n\x07subject\x18\t \x01(\tR\x07subjectB\x0b\n\x04spec\x12\x03\xf8\x42\x01\x42\x15\n\x13_parent_action_name2\xa0\x03\n\x0cQueueService\x12\x64\n\rEnqueueAction\x12\'.cloudidl.workflow.EnqueueActionRequest\x1a(.cloudidl.workflow.EnqueueActionResponse\"\x00\x12g\n\x0e\x41\x62ortQueuedRun\x12(.cloudidl.workflow.AbortQueuedRunRequest\x1a).cloudidl.workflow.AbortQueuedRunResponse\"\x00\x12\\\n\tHeartbeat\x12#.cloudidl.workflow.HeartbeatRequest\x1a$.cloudidl.workflow.HeartbeatResponse\"\x00(\x01\x30\x01\x12\x63\n\x0cStreamLeases\x12&.cloudidl.workflow.StreamLeasesRequest\x1a\'.cloudidl.workflow.StreamLeasesResponse\"\x00\x30\x01\x42\xbe\x01\n\x15\x63om.cloudidl.workflowB\x11QueueServiceProtoH\x02P\x01Z+github.com/unionai/cloud/gen/pb-go/workflow\xa2\x02\x03\x43WX\xaa\x02\x11\x43loudidl.Workflow\xca\x02\x11\x43loudidl\\Workflow\xe2\x02\x1d\x43loudidl\\Workflow\\GPBMetadata\xea\x02\x12\x43loudidl::Workflowb\x06proto3')
21
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cworkflow/queue_service.proto\x12\x11\x63loudidl.workflow\x1a\x19\x66lyteidl/core/types.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x17validate/validate.proto\x1a\x1dworkflow/run_definition.proto\x1a\x1eworkflow/task_definition.proto\"\x7f\n\x10WorkerIdentifier\x12+\n\x0corganization\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x0corganization\x12!\n\x07\x63luster\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x07\x63luster\x12\x1b\n\x04name\x18\x03 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\"\x8a\x04\n\x14\x45nqueueActionRequest\x12J\n\taction_id\x18\x01 \x01(\x0b\x32#.cloudidl.workflow.ActionIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x08\x61\x63tionId\x12\x31\n\x12parent_action_name\x18\x02 \x01(\tH\x01R\x10parentActionName\x88\x01\x01\x12$\n\tinput_uri\x18\x06 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x08inputUri\x12/\n\x0frun_output_base\x18\x07 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\rrunOutputBase\x12\x14\n\x05group\x18\x08 \x01(\tR\x05group\x12\x18\n\x07subject\x18\t \x01(\tR\x07subject\x12=\n\x04task\x18\n \x01(\x0b\x32\x1d.cloudidl.workflow.TaskActionB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00R\x04task\x12@\n\x05trace\x18\x0b \x01(\x0b\x32\x1e.cloudidl.workflow.TraceActionB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00R\x05trace\x12L\n\tcondition\x18\x0c \x01(\x0b\x32\".cloudidl.workflow.ConditionActionB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00R\tconditionB\x06\n\x04specB\x15\n\x13_parent_action_name\"\xb5\x01\n\nTaskAction\x12\x31\n\x02id\x18\x01 \x01(\x0b\x32!.cloudidl.workflow.TaskIdentifierR\x02id\x12\x39\n\x04spec\x18\x02 \x01(\x0b\x32\x1b.cloudidl.workflow.TaskSpecB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x04spec\x12\x39\n\tcache_key\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.StringValueR\x08\x63\x61\x63heKey\"*\n\x0bTraceAction\x12\x1b\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\"\x8a\x02\n\x0f\x43onditionAction\x12\x1b\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\x12 \n\x06run_id\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00R\x05runId\x12&\n\taction_id\x18\x03 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00R\x08\x61\x63tionId\x12\x18\n\x06global\x18\x04 \x01(\x08H\x00R\x06global\x12.\n\x04type\x18\x06 \x01(\x0b\x32\x1a.flyteidl.core.LiteralTypeR\x04type\x12\x16\n\x06prompt\x18\x07 \x01(\tR\x06prompt\x12 \n\x0b\x64\x65scription\x18\x08 \x01(\tR\x0b\x64\x65scriptionB\x0c\n\x05scope\x12\x03\xf8\x42\x01\"\x17\n\x15\x45nqueueActionResponse\"Z\n\x15\x41\x62ortQueuedRunRequest\x12\x41\n\x06run_id\x18\x01 \x01(\x0b\x32 .cloudidl.workflow.RunIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x05runId\"\x18\n\x16\x41\x62ortQueuedRunResponse\"\x86\x03\n\x10HeartbeatRequest\x12J\n\tworker_id\x18\x01 \x01(\x0b\x32#.cloudidl.workflow.WorkerIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x08workerId\x12O\n\x11\x61\x63tive_action_ids\x18\x02 \x03(\x0b\x32#.cloudidl.workflow.ActionIdentifierR\x0f\x61\x63tiveActionIds\x12S\n\x13terminal_action_ids\x18\x03 \x03(\x0b\x32#.cloudidl.workflow.ActionIdentifierR\x11terminalActionIds\x12Q\n\x12\x61\x62orted_action_ids\x18\x04 \x03(\x0b\x32#.cloudidl.workflow.ActionIdentifierR\x10\x61\x62ortedActionIds\x12-\n\x12\x61vailable_capacity\x18\x05 \x01(\x05R\x11\x61vailableCapacity\"\xe4\x01\n\x11HeartbeatResponse\x12\x37\n\nnew_leases\x18\x01 \x03(\x0b\x32\x18.cloudidl.workflow.LeaseR\tnewLeases\x12?\n\x0e\x61\x62orted_leases\x18\x02 \x03(\x0b\x32\x18.cloudidl.workflow.LeaseR\rabortedLeases\x12U\n\x14\x66inalized_action_ids\x18\x03 \x03(\x0b\x32#.cloudidl.workflow.ActionIdentifierR\x12\x66inalizedActionIds\"a\n\x13StreamLeasesRequest\x12J\n\tworker_id\x18\x01 \x01(\x0b\x32#.cloudidl.workflow.WorkerIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x08workerId\"H\n\x14StreamLeasesResponse\x12\x30\n\x06leases\x18\x01 \x03(\x0b\x32\x18.cloudidl.workflow.LeaseR\x06leases\"\xbe\x03\n\x05Lease\x12J\n\taction_id\x18\x01 \x01(\x0b\x32#.cloudidl.workflow.ActionIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x08\x61\x63tionId\x12\x31\n\x12parent_action_name\x18\x02 \x01(\tH\x01R\x10parentActionName\x88\x01\x01\x12$\n\tinput_uri\x18\x04 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x08inputUri\x12/\n\x0frun_output_base\x18\x05 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\rrunOutputBase\x12=\n\x04task\x18\x06 \x01(\x0b\x32\x1d.cloudidl.workflow.TaskActionB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00R\x04task\x12L\n\tcondition\x18\x07 \x01(\x0b\x32\".cloudidl.workflow.ConditionActionB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00R\tcondition\x12\x14\n\x05group\x18\x08 \x01(\tR\x05group\x12\x18\n\x07subject\x18\t \x01(\tR\x07subjectB\x0b\n\x04spec\x12\x03\xf8\x42\x01\x42\x15\n\x13_parent_action_name2\xa0\x03\n\x0cQueueService\x12\x64\n\rEnqueueAction\x12\'.cloudidl.workflow.EnqueueActionRequest\x1a(.cloudidl.workflow.EnqueueActionResponse\"\x00\x12g\n\x0e\x41\x62ortQueuedRun\x12(.cloudidl.workflow.AbortQueuedRunRequest\x1a).cloudidl.workflow.AbortQueuedRunResponse\"\x00\x12\\\n\tHeartbeat\x12#.cloudidl.workflow.HeartbeatRequest\x1a$.cloudidl.workflow.HeartbeatResponse\"\x00(\x01\x30\x01\x12\x63\n\x0cStreamLeases\x12&.cloudidl.workflow.StreamLeasesRequest\x1a\'.cloudidl.workflow.StreamLeasesResponse\"\x00\x30\x01\x42\xbe\x01\n\x15\x63om.cloudidl.workflowB\x11QueueServiceProtoH\x02P\x01Z+github.com/unionai/cloud/gen/pb-go/workflow\xa2\x02\x03\x43WX\xaa\x02\x11\x43loudidl.Workflow\xca\x02\x11\x43loudidl\\Workflow\xe2\x02\x1d\x43loudidl\\Workflow\\GPBMetadata\xea\x02\x12\x43loudidl::Workflowb\x06proto3')
21
22
 
22
23
  _globals = globals()
23
24
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -73,32 +74,32 @@ if _descriptor._USE_C_DESCRIPTORS == False:
73
74
  _LEASE.fields_by_name['task']._serialized_options = b'\372B\005\212\001\002\020\001'
74
75
  _LEASE.fields_by_name['condition']._options = None
75
76
  _LEASE.fields_by_name['condition']._serialized_options = b'\372B\005\212\001\002\020\001'
76
- _globals['_WORKERIDENTIFIER']._serialized_start=166
77
- _globals['_WORKERIDENTIFIER']._serialized_end=293
78
- _globals['_ENQUEUEACTIONREQUEST']._serialized_start=296
79
- _globals['_ENQUEUEACTIONREQUEST']._serialized_end=818
80
- _globals['_TASKACTION']._serialized_start=820
81
- _globals['_TASKACTION']._serialized_end=942
82
- _globals['_TRACEACTION']._serialized_start=944
83
- _globals['_TRACEACTION']._serialized_end=986
84
- _globals['_CONDITIONACTION']._serialized_start=989
85
- _globals['_CONDITIONACTION']._serialized_end=1255
86
- _globals['_ENQUEUEACTIONRESPONSE']._serialized_start=1257
87
- _globals['_ENQUEUEACTIONRESPONSE']._serialized_end=1280
88
- _globals['_ABORTQUEUEDRUNREQUEST']._serialized_start=1282
89
- _globals['_ABORTQUEUEDRUNREQUEST']._serialized_end=1372
90
- _globals['_ABORTQUEUEDRUNRESPONSE']._serialized_start=1374
91
- _globals['_ABORTQUEUEDRUNRESPONSE']._serialized_end=1398
92
- _globals['_HEARTBEATREQUEST']._serialized_start=1401
93
- _globals['_HEARTBEATREQUEST']._serialized_end=1791
94
- _globals['_HEARTBEATRESPONSE']._serialized_start=1794
95
- _globals['_HEARTBEATRESPONSE']._serialized_end=2022
96
- _globals['_STREAMLEASESREQUEST']._serialized_start=2024
97
- _globals['_STREAMLEASESREQUEST']._serialized_end=2121
98
- _globals['_STREAMLEASESRESPONSE']._serialized_start=2123
99
- _globals['_STREAMLEASESRESPONSE']._serialized_end=2195
100
- _globals['_LEASE']._serialized_start=2198
101
- _globals['_LEASE']._serialized_end=2644
102
- _globals['_QUEUESERVICE']._serialized_start=2647
103
- _globals['_QUEUESERVICE']._serialized_end=3063
77
+ _globals['_WORKERIDENTIFIER']._serialized_start=198
78
+ _globals['_WORKERIDENTIFIER']._serialized_end=325
79
+ _globals['_ENQUEUEACTIONREQUEST']._serialized_start=328
80
+ _globals['_ENQUEUEACTIONREQUEST']._serialized_end=850
81
+ _globals['_TASKACTION']._serialized_start=853
82
+ _globals['_TASKACTION']._serialized_end=1034
83
+ _globals['_TRACEACTION']._serialized_start=1036
84
+ _globals['_TRACEACTION']._serialized_end=1078
85
+ _globals['_CONDITIONACTION']._serialized_start=1081
86
+ _globals['_CONDITIONACTION']._serialized_end=1347
87
+ _globals['_ENQUEUEACTIONRESPONSE']._serialized_start=1349
88
+ _globals['_ENQUEUEACTIONRESPONSE']._serialized_end=1372
89
+ _globals['_ABORTQUEUEDRUNREQUEST']._serialized_start=1374
90
+ _globals['_ABORTQUEUEDRUNREQUEST']._serialized_end=1464
91
+ _globals['_ABORTQUEUEDRUNRESPONSE']._serialized_start=1466
92
+ _globals['_ABORTQUEUEDRUNRESPONSE']._serialized_end=1490
93
+ _globals['_HEARTBEATREQUEST']._serialized_start=1493
94
+ _globals['_HEARTBEATREQUEST']._serialized_end=1883
95
+ _globals['_HEARTBEATRESPONSE']._serialized_start=1886
96
+ _globals['_HEARTBEATRESPONSE']._serialized_end=2114
97
+ _globals['_STREAMLEASESREQUEST']._serialized_start=2116
98
+ _globals['_STREAMLEASESREQUEST']._serialized_end=2213
99
+ _globals['_STREAMLEASESRESPONSE']._serialized_start=2215
100
+ _globals['_STREAMLEASESRESPONSE']._serialized_end=2287
101
+ _globals['_LEASE']._serialized_start=2290
102
+ _globals['_LEASE']._serialized_end=2736
103
+ _globals['_QUEUESERVICE']._serialized_start=2739
104
+ _globals['_QUEUESERVICE']._serialized_end=3155
104
105
  # @@protoc_insertion_point(module_scope)
@@ -1,4 +1,5 @@
1
1
  from flyteidl.core import types_pb2 as _types_pb2
2
+ from google.protobuf import wrappers_pb2 as _wrappers_pb2
2
3
  from flyte._protos.validate.validate import validate_pb2 as _validate_pb2
3
4
  from flyte._protos.workflow import run_definition_pb2 as _run_definition_pb2
4
5
  from flyte._protos.workflow import task_definition_pb2 as _task_definition_pb2
@@ -42,12 +43,14 @@ class EnqueueActionRequest(_message.Message):
42
43
  def __init__(self, action_id: _Optional[_Union[_run_definition_pb2.ActionIdentifier, _Mapping]] = ..., parent_action_name: _Optional[str] = ..., input_uri: _Optional[str] = ..., run_output_base: _Optional[str] = ..., group: _Optional[str] = ..., subject: _Optional[str] = ..., task: _Optional[_Union[TaskAction, _Mapping]] = ..., trace: _Optional[_Union[TraceAction, _Mapping]] = ..., condition: _Optional[_Union[ConditionAction, _Mapping]] = ...) -> None: ...
43
44
 
44
45
  class TaskAction(_message.Message):
45
- __slots__ = ["id", "spec"]
46
+ __slots__ = ["id", "spec", "cache_key"]
46
47
  ID_FIELD_NUMBER: _ClassVar[int]
47
48
  SPEC_FIELD_NUMBER: _ClassVar[int]
49
+ CACHE_KEY_FIELD_NUMBER: _ClassVar[int]
48
50
  id: _task_definition_pb2.TaskIdentifier
49
51
  spec: _task_definition_pb2.TaskSpec
50
- def __init__(self, id: _Optional[_Union[_task_definition_pb2.TaskIdentifier, _Mapping]] = ..., spec: _Optional[_Union[_task_definition_pb2.TaskSpec, _Mapping]] = ...) -> None: ...
52
+ cache_key: _wrappers_pb2.StringValue
53
+ def __init__(self, id: _Optional[_Union[_task_definition_pb2.TaskIdentifier, _Mapping]] = ..., spec: _Optional[_Union[_task_definition_pb2.TaskSpec, _Mapping]] = ..., cache_key: _Optional[_Union[_wrappers_pb2.StringValue, _Mapping]] = ...) -> None: ...
51
54
 
52
55
  class TraceAction(_message.Message):
53
56
  __slots__ = ["name"]