flyte 0.2.0b14__py3-none-any.whl → 0.2.0b15__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.

flyte/models.py CHANGED
@@ -5,7 +5,7 @@ import os
5
5
  import pathlib
6
6
  import tempfile
7
7
  from dataclasses import dataclass, field, replace
8
- from typing import TYPE_CHECKING, Any, Callable, Dict, Literal, Optional, Tuple, Type
8
+ from typing import TYPE_CHECKING, Any, Callable, ClassVar, Dict, Literal, Optional, Tuple, Type
9
9
 
10
10
  import rich.repr
11
11
 
@@ -15,6 +15,8 @@ from flyte._logging import logger
15
15
  from flyte._utils.helpers import base36_encode
16
16
 
17
17
  if TYPE_CHECKING:
18
+ from flyteidl.core import literals_pb2
19
+
18
20
  from flyte._internal.imagebuild.image_builder import ImageCache
19
21
  from flyte.report import Report
20
22
 
@@ -231,6 +233,13 @@ class Checkpoints:
231
233
  checkpoint_path: str | None
232
234
 
233
235
 
236
+ class _has_default:
237
+ """
238
+ A marker class to indicate that a specific input has a default value or not.
239
+ This is used to determine if the input is required or not.
240
+ """
241
+
242
+
234
243
  @dataclass(frozen=True)
235
244
  class NativeInterface:
236
245
  """
@@ -240,7 +249,14 @@ class NativeInterface:
240
249
 
241
250
  inputs: Dict[str, Tuple[Type, Any]]
242
251
  outputs: Dict[str, Type]
243
- docstring: Optional[Docstring] = field(default=None)
252
+ docstring: Optional[Docstring] = None
253
+
254
+ # This field is used to indicate that the task has a default value for the input, but already in the
255
+ # remote form.
256
+ _remote_defaults: Optional[Dict[str, literals_pb2.Literal]] = field(default=None, repr=False)
257
+
258
+ has_default: ClassVar[Type[_has_default]] = _has_default # This can be used to indicate if a specific input
259
+ # has a default value or not, in the case when the default value is not known. An example would be remote tasks.
244
260
 
245
261
  def has_outputs(self) -> bool:
246
262
  """
@@ -248,12 +264,31 @@ class NativeInterface:
248
264
  """
249
265
  return self.outputs is not None and len(self.outputs) > 0
250
266
 
267
+ def num_required_inputs(self) -> int:
268
+ """
269
+ Get the number of required inputs for the task. This is used to determine how many inputs are required for the
270
+ task execution.
271
+ """
272
+ return sum(1 for t in self.inputs.values() if t[1] is inspect.Parameter.empty)
273
+
251
274
  @classmethod
252
- def from_types(cls, inputs: Dict[str, Type], outputs: Dict[str, Type]) -> NativeInterface:
275
+ def from_types(
276
+ cls,
277
+ inputs: Dict[str, Tuple[Type, Type[_has_default] | Type[inspect._empty]]],
278
+ outputs: Dict[str, Type],
279
+ default_inputs: Optional[Dict[str, literals_pb2.Literal]] = None,
280
+ ) -> NativeInterface:
253
281
  """
254
282
  Create a new NativeInterface from the given types. This is used to create a native interface for the task.
283
+ :param inputs: A dictionary of input names and their types and a value indicating if they have a default value.
284
+ :param outputs: A dictionary of output names and their types.
285
+ :param default_inputs: Optional dictionary of default inputs for remote tasks.
286
+ :return: A NativeInterface object with the given inputs and outputs.
255
287
  """
256
- return cls(inputs={k: (v, inspect.Parameter.empty) for k, v in inputs.items()}, outputs=outputs)
288
+ for k, v in inputs.items():
289
+ if v[1] is cls.has_default and (default_inputs is None or k not in default_inputs):
290
+ raise ValueError(f"Input {k} has a default value but no default input provided for remote task.")
291
+ return cls(inputs=inputs, outputs=outputs, _remote_defaults=default_inputs)
257
292
 
258
293
  @classmethod
259
294
  def from_callable(cls, func: Callable) -> NativeInterface:
@@ -301,7 +336,10 @@ class NativeInterface:
301
336
  tp = tpe[0] if isinstance(tpe[0], str) else tpe[0].__name__
302
337
  i += f"{key}: {tp}"
303
338
  if tpe[1] is not inspect.Parameter.empty:
304
- i += f" = {tpe[1]}"
339
+ if tpe[1] is self.has_default:
340
+ i += " = ..."
341
+ else:
342
+ i += f" = {tpe[1]}"
305
343
  i += ")"
306
344
  if self.outputs:
307
345
  initial = True
flyte/remote/_data.py CHANGED
@@ -16,6 +16,7 @@ from flyteidl.service import dataproxy_pb2
16
16
  from google.protobuf import duration_pb2
17
17
 
18
18
  from flyte._initialize import CommonInit, ensure_client, get_client, get_common_config
19
+ from flyte._logging import make_hyperlink
19
20
  from flyte.errors import InitializationError, RuntimeSystemError
20
21
 
21
22
  _UPLOAD_EXPIRES_IN = timedelta(seconds=60)
@@ -89,7 +90,7 @@ async def _upload_single_file(
89
90
  raise RuntimeSystemError(e.code().value, f"Failed to get signed url for {fp}.")
90
91
  except Exception as e:
91
92
  raise RuntimeSystemError(type(e).__name__, f"Failed to get signed url for {fp}.") from e
92
- logger.debug(f"Uploading to signed url {resp.signed_url} for {fp}")
93
+ logger.debug(f"Uploading to {make_hyperlink('signed url', resp.signed_url)} for {fp}")
93
94
  extra_headers = get_extra_headers_for_protocol(resp.native_url)
94
95
  extra_headers.update(resp.headers)
95
96
  encoded_md5 = b64encode(md5_bytes)
flyte/remote/_run.py CHANGED
@@ -43,7 +43,10 @@ def _action_time_phase(action: run_definition_pb2.Action | run_definition_pb2.Ac
43
43
  yield "run_time", f"{(datetime.now(timezone.utc) - start_time).seconds} secs"
44
44
  yield "phase", run_definition_pb2.Phase.Name(action.status.phase)
45
45
  if isinstance(action, run_definition_pb2.ActionDetails):
46
- yield "error", action.error_info if action.HasField("error_info") else "NA"
46
+ yield (
47
+ "error",
48
+ f"{action.error_info.kind}: {action.error_info.message}" if action.HasField("error_info") else "NA",
49
+ )
47
50
 
48
51
 
49
52
  def _action_rich_repr(action: run_definition_pb2.Action) -> rich.repr.Result:
@@ -78,7 +81,7 @@ def _action_details_rich_repr(action: run_definition_pb2.ActionDetails) -> rich.
78
81
  yield "task_type", action.resolved_task_spec.task_template.type
79
82
  yield "task_version", action.resolved_task_spec.task_template.id.version
80
83
  yield "attempts", action.attempts
81
- yield "error_info", action.error_info if action.HasField("error_info") else "NA"
84
+ yield "error", f"{action.error_info.kind}: {action.error_info.message}" if action.HasField("error_info") else "NA"
82
85
  yield "phase", run_definition_pb2.Phase.Name(action.status.phase)
83
86
  yield "group", action.metadata.group
84
87
  yield "parent", action.metadata.parent
@@ -639,7 +642,7 @@ class Action:
639
642
  console.print(f"[bold green]Run '{self.name}' completed successfully.[/bold green]")
640
643
  else:
641
644
  console.print(
642
- f"[bold red]Run '{self.name}' exited unsuccessfully in state {ad.phase}"
645
+ f"[bold red]Run '{self.name}' exited unsuccessfully in state {ad.phase} "
643
646
  f"with error: {ad.error_info}[/bold red]"
644
647
  )
645
648
  break
@@ -667,6 +670,8 @@ class Action:
667
670
  Rich representation of the Action object.
668
671
  """
669
672
  yield from _action_rich_repr(self.pb2)
673
+ if self._details:
674
+ yield from self._details.__rich_repr__()
670
675
 
671
676
  def __repr__(self) -> str:
672
677
  """
flyte/remote/_task.py CHANGED
@@ -162,6 +162,20 @@ class TaskDetails:
162
162
  """
163
163
  return self.pb2.spec.task_template.type
164
164
 
165
+ @property
166
+ def default_input_args(self) -> Tuple[str, ...]:
167
+ """
168
+ The default input arguments of the task.
169
+ """
170
+ return tuple(x.name for x in self.pb2.spec.default_inputs)
171
+
172
+ @property
173
+ def required_args(self) -> Tuple[str, ...]:
174
+ """
175
+ The required input arguments of the task.
176
+ """
177
+ return tuple(x for x, _ in self.interface.inputs.items() if x not in self.default_input_args)
178
+
165
179
  @functools.cached_property
166
180
  def interface(self) -> NativeInterface:
167
181
  """
@@ -169,7 +183,7 @@ class TaskDetails:
169
183
  """
170
184
  import flyte.types as types
171
185
 
172
- return types.guess_interface(self.pb2.spec.task_template.interface)
186
+ return types.guess_interface(self.pb2.spec.task_template.interface, default_inputs=self.pb2.spec.default_inputs)
173
187
 
174
188
  @property
175
189
  def cache(self) -> flyte.Cache:
@@ -206,6 +220,19 @@ class TaskDetails:
206
220
  """
207
221
  Forwards the call to the underlying task. The entity will be fetched if not already present
208
222
  """
223
+ # TODO support kwargs, for this we need ordered inputs to be stored in the task spec.
224
+ if len(args) > 0:
225
+ raise flyte.errors.ReferenceTaskError(
226
+ f"Reference task {self.name} does not support positional arguments"
227
+ f"currently. Please use keyword arguments."
228
+ )
229
+ if len(self.required_args) > 0:
230
+ if len(args) + len(kwargs) < len(self.required_args):
231
+ raise ValueError(
232
+ f"Task {self.name} requires at least {self.required_args} arguments, "
233
+ f"but only received args:{args} kwargs{kwargs}."
234
+ )
235
+
209
236
  ctx = internal_ctx()
210
237
  if ctx.is_task_context():
211
238
  # If we are in a task context, that implies we are executing a Run.
@@ -238,6 +265,11 @@ class TaskDetails:
238
265
  """
239
266
  Rich representation of the task.
240
267
  """
268
+ yield "friendly_name", self.pb2.spec.short_name
269
+ yield "environment", self.pb2.spec.environment
270
+ yield "default_inputs_keys", self.default_input_args
271
+ yield "required_args", self.required_args
272
+ yield "raw_default_inputs", [str(x) for x in self.pb2.spec.default_inputs]
241
273
  yield "project", self.pb2.task_id.project
242
274
  yield "domain", self.pb2.task_id.domain
243
275
  yield "name", self.name
flyte/storage/__init__.py CHANGED
@@ -4,6 +4,7 @@ __all__ = [
4
4
  "S3",
5
5
  "Storage",
6
6
  "get",
7
+ "get_configured_fsspec_kwargs",
7
8
  "get_random_local_directory",
8
9
  "get_random_local_path",
9
10
  "get_stream",
@@ -18,6 +19,7 @@ __all__ = [
18
19
  from ._config import ABFS, GCS, S3, Storage
19
20
  from ._storage import (
20
21
  get,
22
+ get_configured_fsspec_kwargs,
21
23
  get_random_local_directory,
22
24
  get_random_local_path,
23
25
  get_stream,
flyte/storage/_storage.py CHANGED
@@ -62,40 +62,51 @@ def get_random_local_directory() -> pathlib.Path:
62
62
  return _dir
63
63
 
64
64
 
65
- def get_underlying_filesystem(
66
- protocol: typing.Optional[str] = None,
67
- anonymous: bool = False,
68
- path: typing.Optional[str] = None,
69
- **kwargs,
70
- ) -> fsspec.AbstractFileSystem:
71
- if protocol is None:
72
- # If protocol is None, get it from the path
73
- protocol = get_protocol(path)
74
-
75
- storage_config = get_storage()
76
- if storage_config:
77
- kwargs = storage_config.get_fsspec_kwargs(anonymous, **kwargs)
78
- elif protocol:
65
+ def get_configured_fsspec_kwargs(
66
+ protocol: typing.Optional[str] = None, anonymous: bool = False
67
+ ) -> typing.Dict[str, typing.Any]:
68
+ if protocol:
79
69
  match protocol:
80
70
  case "s3":
81
71
  # If the protocol is s3, we can use the s3 filesystem
82
72
  from flyte.storage import S3
83
73
 
84
- kwargs = S3.auto().get_fsspec_kwargs(anonymous=anonymous, **kwargs)
74
+ return S3.auto().get_fsspec_kwargs(anonymous=anonymous)
85
75
  case "gs":
86
76
  # If the protocol is gs, we can use the gs filesystem
87
77
  from flyte.storage import GCS
88
78
 
89
- kwargs = GCS.auto().get_fsspec_kwargs(anonymous=anonymous, **kwargs)
79
+ return GCS.auto().get_fsspec_kwargs(anonymous=anonymous)
90
80
  case "abfs" | "abfss":
91
81
  # If the protocol is abfs or abfss, we can use the abfs filesystem
92
82
  from flyte.storage import ABFS
93
83
 
94
- kwargs = ABFS.auto().get_fsspec_kwargs(anonymous=anonymous, **kwargs)
84
+ return ABFS.auto().get_fsspec_kwargs(anonymous=anonymous)
95
85
  case _:
96
- pass
86
+ return {}
87
+
88
+ # If no protocol, return args from storage config if set
89
+ storage_config = get_storage()
90
+ if storage_config:
91
+ return storage_config.get_fsspec_kwargs(anonymous)
92
+
93
+ return {}
94
+
95
+
96
+ def get_underlying_filesystem(
97
+ protocol: typing.Optional[str] = None,
98
+ anonymous: bool = False,
99
+ path: typing.Optional[str] = None,
100
+ **kwargs,
101
+ ) -> fsspec.AbstractFileSystem:
102
+ if protocol is None:
103
+ # If protocol is None, get it from the path
104
+ protocol = get_protocol(path)
105
+
106
+ configured_kwargs = get_configured_fsspec_kwargs(protocol, anonymous=anonymous)
107
+ configured_kwargs.update(kwargs)
97
108
 
98
- return fsspec.filesystem(protocol, **kwargs)
109
+ return fsspec.filesystem(protocol, **configured_kwargs)
99
110
 
100
111
 
101
112
  def _get_anonymous_filesystem(from_path):
flyte/types/_interface.py CHANGED
@@ -1,11 +1,15 @@
1
- from typing import Any, Dict, Type, cast
1
+ import inspect
2
+ from typing import Any, Dict, Iterable, Tuple, Type, cast
2
3
 
3
- from flyteidl.core import interface_pb2
4
+ from flyteidl.core import interface_pb2, literals_pb2
4
5
 
6
+ from flyte._protos.workflow import common_pb2
5
7
  from flyte.models import NativeInterface
6
8
 
7
9
 
8
- def guess_interface(interface: interface_pb2.TypedInterface) -> NativeInterface:
10
+ def guess_interface(
11
+ interface: interface_pb2.TypedInterface, default_inputs: Iterable[common_pb2.NamedParameter] | None = None
12
+ ) -> NativeInterface:
9
13
  """
10
14
  Returns the interface of the task with guessed types, as types may not be present in current env.
11
15
  """
@@ -14,12 +18,23 @@ def guess_interface(interface: interface_pb2.TypedInterface) -> NativeInterface:
14
18
  if interface is None:
15
19
  return NativeInterface({}, {})
16
20
 
17
- guessed_inputs: Dict[str, Type[Any]] = {}
21
+ default_input_literals: Dict[str, literals_pb2.Literal] = {}
22
+ if default_inputs is not None:
23
+ for param in default_inputs:
24
+ if param.parameter.HasField("default"):
25
+ default_input_literals[param.name] = param.parameter.default
26
+
27
+ guessed_inputs: Dict[str, Tuple[Type[Any], Any] | Any] = {}
18
28
  if interface.inputs is not None and len(interface.inputs.variables) > 0:
19
- guessed_inputs = flyte.types.TypeEngine.guess_python_types(cast(dict, interface.inputs.variables))
29
+ input_types = flyte.types.TypeEngine.guess_python_types(cast(dict, interface.inputs.variables))
30
+ for name, t in input_types.items():
31
+ if name not in default_input_literals:
32
+ guessed_inputs[name] = (t, inspect.Parameter.empty)
33
+ else:
34
+ guessed_inputs[name] = (t, NativeInterface.has_default)
20
35
 
21
36
  guessed_outputs: Dict[str, Type[Any]] = {}
22
37
  if interface.outputs is not None and len(interface.outputs.variables) > 0:
23
38
  guessed_outputs = flyte.types.TypeEngine.guess_python_types(cast(dict, interface.outputs.variables))
24
39
 
25
- return NativeInterface.from_types(guessed_inputs, guessed_outputs)
40
+ return NativeInterface.from_types(guessed_inputs, guessed_outputs, default_input_literals)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flyte
3
- Version: 0.2.0b14
3
+ Version: 0.2.0b15
4
4
  Summary: Add your description here
5
5
  Author-email: Ketan Umare <kumare3@users.noreply.github.com>
6
6
  Requires-Python: >=3.10
@@ -125,7 +125,7 @@ import flyte
125
125
 
126
126
  env = flyte.TaskEnvironment(
127
127
  name="hello_world",
128
- image=flyte.Image.auto().with_apt_packages(...).with_pip_packages(...),
128
+ image=flyte.Image.from_debian_base().with_apt_packages(...).with_pip_packages(...),
129
129
  )
130
130
 
131
131
  ```
@@ -1,42 +1,42 @@
1
- flyte/__init__.py,sha256=lg45TANKqnZrPZhIOelGabO2rzvJzRIhy1tDX4kqTwo,1555
1
+ flyte/__init__.py,sha256=2OcML9ib7PwGyFRfQqc_i0l4BKHLabLbwBFvB7p1OeU,1699
2
2
  flyte/_build.py,sha256=MkgfLAPeL56YeVrGRNZUCZgbwzlEzVP3wLbl5Qru4yk,578
3
3
  flyte/_context.py,sha256=K0-TCt-_pHOoE5Xni87_8uIe2vCBOhfNQEtjGT4Hu4k,5239
4
- flyte/_deploy.py,sha256=Nw1E-jU2AxFMbRG_DWfxiKO6InZCr1Ow2azd6PbKe0E,8987
4
+ flyte/_deploy.py,sha256=4RfrjSniBYbHSKRKQpmACGHPYdlaE4voX4jn-BdcOhA,9280
5
5
  flyte/_doc.py,sha256=_OPCf3t_git6UT7kSJISFaWO9cfNzJhhoe6JjVdyCJo,706
6
6
  flyte/_docstring.py,sha256=SsG0Ab_YMAwy2ABJlEo3eBKlyC3kwPdnDJ1FIms-ZBQ,1127
7
- flyte/_environment.py,sha256=BkChtdVhWB3SwMSvetDZ-KiNBgRFlAXgq69PHT4zyG0,2942
7
+ flyte/_environment.py,sha256=dmIFmFLRIklOEYL9gsP2IH3-MYcjHYyyOlqlcf3E6_A,2924
8
8
  flyte/_excepthook.py,sha256=nXts84rzEg6-7RtFarbKzOsRZTQR4plnbWVIFMAEprs,1310
9
9
  flyte/_group.py,sha256=7o1j16sZyUmYB50mOiq1ui4TBAKhRpDqLakV8Ya1kw4,803
10
10
  flyte/_hash.py,sha256=Of_Zl_DzzzF2jp4ZsLm-3o-xJFCCJ8_GubmLI1htx78,504
11
- flyte/_image.py,sha256=NeBvjCdwFAVGd666ufi1q-YOvhwdTEzAeJl5YBfl0bI,29043
11
+ flyte/_image.py,sha256=_4IxJ5T4IESBRrxT9ZOlnStSUThcYtceGUDLgtCxMg8,29149
12
12
  flyte/_initialize.py,sha256=zPcygfpUM24vZ8-6BizPTiDYHeEgXSPbqD4QqJ_pA_A,17831
13
- flyte/_interface.py,sha256=MP5o_qpIwfBNtAc7zo_cLSjMugsPyanuO6EgUSk4fBE,3644
14
- flyte/_logging.py,sha256=n3pi1cE_oqA03vQHlqSxexXcjRhCsZg1ODvUSoWlwk4,3382
13
+ flyte/_interface.py,sha256=1B9zIwFDjiVp_3l_mk8EpA4g3Re-6DUBEBi9z9vDvPs,3504
14
+ flyte/_logging.py,sha256=_yNo-Nx2yzh0MLoZGbnIYHGKei4wtQmSGM0lE30Ev7w,3662
15
15
  flyte/_map.py,sha256=efPd8O-JKUg1OY3_MzU3KGbhsGYDVRNBwWr0ceNIXhQ,7444
16
16
  flyte/_pod.py,sha256=lNaQuWX22QG6Xji7-8GpuKUkqCmVFaRxOVU-eUEa-Vk,637
17
17
  flyte/_resources.py,sha256=UOLyEVhdxolvrHhddiBbYdJuE1RkM_l7xeS9G1abe6M,7583
18
18
  flyte/_retry.py,sha256=rfLv0MvWxzPByKESTglEmjPsytEAKiIvvmzlJxXwsfE,941
19
19
  flyte/_reusable_environment.py,sha256=P4FBATVKAYcIKpdFN98sI8acPyKy8eIGx6V0kUb9YdM,1289
20
- flyte/_run.py,sha256=kxylo-BTgnZC7FkqvKUtIDeXE6kevLqCS8i0buT70BA,20196
20
+ flyte/_run.py,sha256=32pLVE2UhZOYOHfYH2yKPSzVFkRj1OjjCUxgCYMyeXE,20200
21
21
  flyte/_secret.py,sha256=SqIHs6mi8hEkIIBZe3bI9jJsPt65Mt6dV5uh9_op1ME,2392
22
- flyte/_task.py,sha256=AHxg4lqHfExdSU6adwPiFzAT2EtrLI8mBdRxTUL1RgA,17902
23
- flyte/_task_environment.py,sha256=J1LFH9Zz1nPhlsrc_rYny1SS3QC1b55X7tRYoTG7Vk4,6815
22
+ flyte/_task.py,sha256=-3VLSROj8g3-ZWzV272Ww7mt5yIeA753kmpNyr75I58,18087
23
+ flyte/_task_environment.py,sha256=1PIuRQ6inH0vMw89iutWKAyPff9qaTEcjk6UR1Gl0cg,6861
24
24
  flyte/_timeout.py,sha256=zx5sFcbYmjJAJbZWSGzzX-BpC9HC7Jfs35T7vVhKwkk,1571
25
25
  flyte/_tools.py,sha256=JewkQZBR_M85tS6QY8e4xXue75jbOE48nID4ZHnc9jY,632
26
26
  flyte/_trace.py,sha256=C788bgoSc3st8kE8Cae2xegnLx2CT6uuRKKfaDrDUys,5122
27
- flyte/_version.py,sha256=v28x7rXB_3GrL0I5zyhrj-6Ffe8gWhHERwr3KVTgEgw,521
28
- flyte/errors.py,sha256=lJgSiZb2nZnuTZqBEB9rg-bV_GXVAYNjQFRuKWQskyY,4683
29
- flyte/models.py,sha256=A85HnTLqInJiMmQKhpl2IXb2Uh6_46tdRrwW2TTzD9o,12908
27
+ flyte/_version.py,sha256=RbabyiAT9BZS4y_-wPKvDqifAniKvrfGunjyicmEHU0,521
28
+ flyte/errors.py,sha256=skXcdexLisFZFcTnUmMvMmuh4Ty96oJkyLKaipzkyeI,4954
29
+ flyte/models.py,sha256=my7Vxo-NK6gHGahyqtHr42wYjPGw0nl2SGBBoSb6hIc,14733
30
30
  flyte/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
31
  flyte/_bin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- flyte/_bin/runtime.py,sha256=09OKQeUwyEDkXF2HtzHeYVJsIMkEzLIO2tVCARvPGJE,5783
32
+ flyte/_bin/runtime.py,sha256=JXh1wgOhCnIMBE7YJY9biepY3VedrGdIFHDfzmz5gjM,5783
33
33
  flyte/_cache/__init__.py,sha256=zhdO5UuHQRdzn8GHmSN40nrxfAmI4ihDRuHZM11U84Y,305
34
34
  flyte/_cache/cache.py,sha256=ErhWzzJdEjTIuEF4f-r6IBgko-3Al9iUs1Eq4O42TUE,5021
35
35
  flyte/_cache/defaults.py,sha256=gzJZW0QJPUfd2OPnGpv3tzIfwPtgFjAKoie3NP1P97U,217
36
36
  flyte/_cache/policy_function_body.py,sha256=_AcyN6XKRXq16yV5lWuRJYCIVUlmyPvvWuYRxfU-Ldo,1507
37
37
  flyte/_code_bundle/__init__.py,sha256=G7DJTQ0UN_ETvdh55pYcWsTrZJKXEcyQl9iQQNQOBXQ,328
38
38
  flyte/_code_bundle/_ignore.py,sha256=Tfaoa62CQVTH17kBHD6Xv6xEh1FhcAyvXivl9m-MEE0,3853
39
- flyte/_code_bundle/_packaging.py,sha256=_wEozcQTYgqvAAaKQYna9ptvShIMlXk3vEdccwAOYn8,6873
39
+ flyte/_code_bundle/_packaging.py,sha256=5QUuea6kg9s-ebBg7gFAHaxOMchxR5MhTQ8KohWsjPk,6909
40
40
  flyte/_code_bundle/_utils.py,sha256=b0s3ZVKSRwaa_2CMTCqt2iRrUvTTW3FmlyqCD9k5BS0,12028
41
41
  flyte/_code_bundle/bundle.py,sha256=8T0gcXck6dmg-8L2-0G3B2iNjC-Xwydu806iyKneMMY,8789
42
42
  flyte/_internal/__init__.py,sha256=vjXgGzAAjy609YFkAy9_RVPuUlslsHSJBXCLNTVnqOY,136
@@ -46,24 +46,24 @@ flyte/_internal/controllers/_trace.py,sha256=biI-lXSIe3gXuWI-KT6T-jTtojQCQ7BLOHT
46
46
  flyte/_internal/controllers/remote/__init__.py,sha256=9_azH1eHLqY6VULpDugXi7Kf1kK1ODqEnsQ_3wM6IqU,1919
47
47
  flyte/_internal/controllers/remote/_action.py,sha256=aGmTCciHkx9YSU6gPWWFsgjIan-mgelHfmZM4SzZJS4,5121
48
48
  flyte/_internal/controllers/remote/_client.py,sha256=HPbzbfaWZVv5wpOvKNtFXR6COiZDwd1cUJQqi60A7oU,1421
49
- flyte/_internal/controllers/remote/_controller.py,sha256=qA_uas6Vhk0VEAXNtI2obogtmC-YCr8mTexSnvVA3gg,21184
49
+ flyte/_internal/controllers/remote/_controller.py,sha256=G4gEUl-2f4FqACz3IK7sK0-w93kkJndzkDpbISqo_4w,21247
50
50
  flyte/_internal/controllers/remote/_core.py,sha256=UKjiL3dGidXcR1dPzJswn67g38HQmVXV7n0zoX_8AZY,18422
51
51
  flyte/_internal/controllers/remote/_informer.py,sha256=StiPcQLLW0h36uEBhKsupMY79EeFCKA3QQzvv2IyvRo,14188
52
52
  flyte/_internal/controllers/remote/_service_protocol.py,sha256=B9qbIg6DiGeac-iSccLmX_AL2xUgX4ezNUOiAbSy4V0,1357
53
53
  flyte/_internal/imagebuild/__init__.py,sha256=cLXVxkAyFpbdC1y-k3Rb6FRW9f_xpoRQWVn__G9IqKs,354
54
- flyte/_internal/imagebuild/docker_builder.py,sha256=bkr2fs9jInTq8jqU8ka7NGvp0RPfYhbTfX1RqtqTvvs,13986
55
- flyte/_internal/imagebuild/image_builder.py,sha256=q-TRcF_t2nS8FqBOtIIdnSo1Jrq378jqzceYDPzne8Q,9902
54
+ flyte/_internal/imagebuild/docker_builder.py,sha256=cvJ_e2hDvLS9SBvdzgNwvSvkQORP6m-_mjMBHZf-m8I,14479
55
+ flyte/_internal/imagebuild/image_builder.py,sha256=mzC0Dz_vUCnOB9ZO4zRMoS0qXFGsw6UBC_xOqU8TVkQ,9785
56
56
  flyte/_internal/imagebuild/remote_builder.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
57
  flyte/_internal/resolvers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
58
  flyte/_internal/resolvers/_task_module.py,sha256=jwy1QYygUK7xmpCZLt1SPTfJCkfox3Ck3mTlTsm66UI,1973
59
59
  flyte/_internal/resolvers/common.py,sha256=ADQLRoyGsJ4vuUkitffMGrMKKjy0vpk6X53g4FuKDLc,993
60
60
  flyte/_internal/resolvers/default.py,sha256=nX4DHUYod1nRvEsl_vSgutQVEdExu2xL8pRkyi4VWbY,981
61
61
  flyte/_internal/runtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
- flyte/_internal/runtime/convert.py,sha256=zDMLjmzy84cOcC5rZZA1RbbXOP9irmWHNfCn5HrgprI,11522
62
+ flyte/_internal/runtime/convert.py,sha256=-ZjnymAhAmO6ngNkbhwrxRrvvXD0QQRnZUPptY1pyuo,13777
63
63
  flyte/_internal/runtime/entrypoints.py,sha256=Kyi19i7LYk7YM3ZV_Y4FXGt5Pc1tIftGkIDohopblyY,5127
64
64
  flyte/_internal/runtime/io.py,sha256=Lgdy4iPjlKjUO-V_AkoPZff6lywaFjZUG-PErRukmx4,4248
65
65
  flyte/_internal/runtime/resources_serde.py,sha256=tvMMv3l6cZEt_cfs7zVE_Kqs5qh-_r7fsEPxb6xMxMk,4812
66
- flyte/_internal/runtime/task_serde.py,sha256=-CiOvrktT2ChdNhdFzgTu9r1Lujk1wkjs8bhmsILnYw,13045
66
+ flyte/_internal/runtime/task_serde.py,sha256=H7cyRCS8eyicnWjQogcFPHxs1uX9FI5bZypUfBSzJOw,13873
67
67
  flyte/_internal/runtime/taskrunner.py,sha256=rHWS4t5qgZnzGdGrs0_O0sSs_PVGoE1CNPDb-fTwwmo,7332
68
68
  flyte/_internal/runtime/types_serde.py,sha256=EjRh9Yypx9-20XXQprtNgp766LeQVRoYWtY6XPGMZQg,1813
69
69
  flyte/_protos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -135,44 +135,44 @@ flyte/_protos/workflow/task_service_pb2_grpc.py,sha256=whmfmOTiNhz6_CBsXm8aXUCwt
135
135
  flyte/_utils/__init__.py,sha256=RByuYa2hSqsKrpLkFfjKspKxH3K7DzfVzTVnZsxkO0A,757
136
136
  flyte/_utils/asyn.py,sha256=KeJKarXNIyD16g6oPM0T9cH7JDmh1KY7JLbwo7i0IlQ,3673
137
137
  flyte/_utils/async_cache.py,sha256=JtZJmWO62OowJ0QFNl6wryWqh-kuDi76aAASMie87QY,4596
138
- flyte/_utils/coro_management.py,sha256=_JTt9x9fOc_1OSe03DSheYoKOvlonBB_4WNCS9XSaoU,698
138
+ flyte/_utils/coro_management.py,sha256=wIsul4XY-tQbH9bjqZ3A0jKluE19xSzLlkMeYu_dk_A,934
139
139
  flyte/_utils/file_handling.py,sha256=iU4TxW--fCho_Eg5xTMODn96P03SxzF-V-5f-7bZAZY,2233
140
- flyte/_utils/helpers.py,sha256=45ZC2OSNKS66DkTvif8W8x7MH4KxluvAyn0a92mKRqM,4366
140
+ flyte/_utils/helpers.py,sha256=9N70yzfLF4lLGEEdOv5OcweEpYtrCvZqqhtzkjZUXNY,4779
141
141
  flyte/_utils/lazy_module.py,sha256=fvXPjvZLzCfcI8Vzs4pKedUDdY0U_RQ1ZVrp9b8qBQY,1994
142
142
  flyte/_utils/org_discovery.py,sha256=C7aJa0LfnWBkDtSU9M7bE60zp27qEhJC58piqOErZ94,2088
143
143
  flyte/_utils/uv_script_parser.py,sha256=PxqD8lSMi6xv0uDd1s8LKB2IPZr4ttZJCUweqlyMTKk,1483
144
144
  flyte/cli/__init__.py,sha256=M02O-UGqQlA8JJ_jyWRiwQhTNc5CJJ7x9J7fNxTxBT0,52
145
145
  flyte/cli/_abort.py,sha256=Ty-63Gtd2PUn6lCuL5AaasfBoPu7TDSU5EQKVbkF4qw,661
146
- flyte/cli/_common.py,sha256=r7QMoN4uQPQnjYd7TVnpk8RcbWJYCliA4Aa0aMbFDZo,11047
146
+ flyte/cli/_common.py,sha256=QphqiND3LkF3bngngtArZWqdLMe1uiG5K9XRCHwRdhA,10973
147
147
  flyte/cli/_create.py,sha256=a75II-xT71SpdopNY14rPuidO5qL0mH1UAwf205sVzQ,4313
148
148
  flyte/cli/_delete.py,sha256=VTmXv09PBjkdtyl23mbSjIQQlN7Y1AI_bO0GkHP-f9E,546
149
- flyte/cli/_deploy.py,sha256=o8xtChouozypfE8M2BtfhrcxMEqjlrxB8JsYxPENNhc,4789
149
+ flyte/cli/_deploy.py,sha256=_7tMgLavjvncdTdrn1sxN4UlnL16vuC1o-k5VefZTxM,4841
150
150
  flyte/cli/_gen.py,sha256=vlE5l8UR1zz4RSdaRyUfYFvGR0TLxGcTYcP4dhA3Pvg,5458
151
151
  flyte/cli/_get.py,sha256=UBh82YQ3WZF7WPZjW3l3RQG97JZYlgHMzpuiVdtJseg,9896
152
152
  flyte/cli/_params.py,sha256=cDeTvjOQP8EydVJUrncLeAxUaHvGorJyDvMSrAxapmM,19466
153
153
  flyte/cli/_run.py,sha256=a8Y1XLhti6kaaibcN2AZHjxIauHeXqT9wnXWDKee2ew,7733
154
- flyte/cli/main.py,sha256=Wv-Bd70f-xANAfRK9III5SYH4-r4ScHqWx8EmZbsoII,4408
154
+ flyte/cli/main.py,sha256=a9VsgyGi-s_FoXL-HsSXYSQfLV_ljCJWnTCriOHWXWI,4382
155
155
  flyte/config/__init__.py,sha256=MiwEYK5Iv7MRR22z61nzbsbvZ9Q6MdmAU_g9If1Pmb8,144
156
156
  flyte/config/_config.py,sha256=QE3T0W8xOULjJaqDMdMF90f9gFVjGR6h8QPOLsyqjYw,9831
157
157
  flyte/config/_internal.py,sha256=Bj0uzn3PYgxKbzM-q2GKXxp7Y6cyzhPzUB-Y2i6cQKo,2836
158
158
  flyte/config/_reader.py,sha256=c16jm0_IYxwEAjXENtllLeO_sT5Eg2RNLG4UjnAv_x4,7157
159
159
  flyte/connectors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
160
160
  flyte/extras/__init__.py,sha256=FhB0uK7H1Yo5De9vOuF7UGnezTKncj3u2Wo5uQdWN0g,74
161
- flyte/extras/_container.py,sha256=7fg43UScXevb9QdiyZLyf0xFrL5L3GkPvUWKQLl4R98,10939
161
+ flyte/extras/_container.py,sha256=bB9wxoU-Xq75LEIoR-MkadbImjCUNRv_Tf-b2pMTct8,10947
162
162
  flyte/io/__init__.py,sha256=F7hlpin_1JJjsdFZSn7_jQgltPzsjETX1DCYGz-ELqI,629
163
163
  flyte/io/_dir.py,sha256=rih9CY1YjNX05bcAu5LG62Xoyij5GXAlv7jLyVF0je8,15310
164
164
  flyte/io/_file.py,sha256=kp5700SKPy5htmMhm4hE2ybb99Ykny1b0Kwm3huCWXs,15572
165
165
  flyte/io/_structured_dataset/__init__.py,sha256=69ixVV9OEXiLiQ6SV2S8tEC7dVQe7YTt9NV1OotlG64,4524
166
- flyte/io/_structured_dataset/basic_dfs.py,sha256=77aYFrFigPC7cjM6UjCbU26REtXmwIBBapFN6KGYOO8,8224
166
+ flyte/io/_structured_dataset/basic_dfs.py,sha256=D0QzcaMBO_R2s9Oi9mDqiykkBp0kgi-eI_A3w92vUkw,7980
167
167
  flyte/io/_structured_dataset/structured_dataset.py,sha256=ddRjz36RhNxIy0gakzdLStBzoo4cAOgXbNqiqt5YhMI,52645
168
168
  flyte/remote/__init__.py,sha256=h0J9W1yWbvPq2R9HXa_HezJtxHoWl6d9QKQbuuKDMnU,597
169
169
  flyte/remote/_console.py,sha256=avmELJPx8nQMAVPrHlh6jEIRPjrMwFpdZjJsWOOa9rE,660
170
- flyte/remote/_data.py,sha256=9PNyZBWpub1ookQZMEeOs0MDhohOeENrUEIVf6FKDPE,6017
170
+ flyte/remote/_data.py,sha256=EO1ZXGYvhfFDOlU9Q0-tSJqLK4shc7q3nvOPPWJxuTc,6078
171
171
  flyte/remote/_logs.py,sha256=EOXg4OS8yYclsT6NASgOLMo0TA2sZpKb2MWZXpWBPuI,6404
172
172
  flyte/remote/_project.py,sha256=dTBYqORDAbLvh9WnPO1Ytuzw2vxNYZwwNsKE2_b0o14,2807
173
- flyte/remote/_run.py,sha256=9euHjYRX-xyxXuhn0MunYb9dmgl0FMU3a-FZNjJA4F8,31057
173
+ flyte/remote/_run.py,sha256=MQRxd6Ib_Si2aGV83H4P1ZR3QiDpec_gwsAtjjkp8qY,31247
174
174
  flyte/remote/_secret.py,sha256=l5xeMS83uMcWWeSSTRsSZUNhS0N--1Dze09C-thSOQs,4341
175
- flyte/remote/_task.py,sha256=7C8iKyeeiCMuePjDIihRhkWOtqRDmRJDq1e5lRK2s6U,12781
175
+ flyte/remote/_task.py,sha256=7e5Y0K8vd8TC2J6Nb0nOCUPaUh8IiV3kKfgsCP9CcGw,14227
176
176
  flyte/remote/_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
177
  flyte/remote/_client/_protocols.py,sha256=JyBWHs5WsVOxEDUyG9X7wPLDzzzjkoaNhJlU-X4YlN0,5599
178
178
  flyte/remote/_client/controlplane.py,sha256=FsOfj4rO4MIMnYrpAT53F8q588VVf5t4sDuwoPuc840,3102
@@ -197,22 +197,22 @@ flyte/remote/_client/auth/_grpc_utils/default_metadata_interceptor.py,sha256=IoM
197
197
  flyte/report/__init__.py,sha256=yLbeUxYaVaDlgBod3Oh34zGBSotl1UlXq1vUkb9q7cs,152
198
198
  flyte/report/_report.py,sha256=jZXl-dqkZHiVAPBuUCmE4e1vE9FpHLkermOeZehi8Tc,5175
199
199
  flyte/report/_template.html,sha256=YehmLJG3QMYQ10UT1YZBu2ncVmAJ4iyqVp5hF3sXRAs,3458
200
- flyte/storage/__init__.py,sha256=kkOyqBXJVZSKt3ALitGn9zK6bkchy1-c3TOPB4QhPxk,499
200
+ flyte/storage/__init__.py,sha256=0tcI9qtIVf0Fxczkno03vpwBDVlKMDSNN38uxMTH1bE,569
201
201
  flyte/storage/_config.py,sha256=xVibWJaioOnkeTb_M30azgiUe1jvmQaOWRZEkpdoTao,8680
202
202
  flyte/storage/_remote_fs.py,sha256=kM_iszbccjVD5VtVdgfkl1FHS8NPnY__JOo_CPQUE4c,1124
203
- flyte/storage/_storage.py,sha256=mBy7MKII2M1UTVm_EUUDwVb7uT1_AOPzQr2wCJ-fgW0,9873
203
+ flyte/storage/_storage.py,sha256=AQ_ubpYwJjRdEYV-qU4ttXDZuuT28t6-S5eFQD5D9sQ,10175
204
204
  flyte/storage/_utils.py,sha256=8oLCM-7D7JyJhzUi1_Q1NFx8GBUPRfou0T_5tPBmPbE,309
205
205
  flyte/syncify/__init__.py,sha256=WgTk-v-SntULnI55CsVy71cxGJ9Q6pxpTrhbPFuouJ0,1974
206
206
  flyte/syncify/_api.py,sha256=fh7Dlh0cZGELnWDh5lFmxVu-_cqlfsu9XLwkiuDRseE,14672
207
207
  flyte/types/__init__.py,sha256=9310PRtVrwJePwEPeoUO0HPyIkgaja7-Dar_QlE_MUI,1745
208
- flyte/types/_interface.py,sha256=mY7mb8v2hJPGk7AU99gdOWl4_jArA1VFtjYGlE31SK0,953
208
+ flyte/types/_interface.py,sha256=5y9EC5r897xz03Hh0ltF8QVGKMfMfAznws-hKSEO4Go,1677
209
209
  flyte/types/_pickle.py,sha256=PjdR66OTDMZ3OYq6GvM_Ua0cIo5t2XQaIjmpJ9xo4Ys,4050
210
210
  flyte/types/_renderer.py,sha256=ygcCo5l60lHufyQISFddZfWwLlQ8kJAKxUT_XnR_6dY,4818
211
211
  flyte/types/_string_literals.py,sha256=NlG1xV8RSA-sZ-n-IFQCAsdB6jXJOAKkHWtnopxVVDk,4231
212
212
  flyte/types/_type_engine.py,sha256=Kk5g1nZubh2A4KWbvGBf5A-aZTvbTtjrY1Bg1_GOPV4,96643
213
213
  flyte/types/_utils.py,sha256=pbts9E1_2LTdLygAY0UYTLYJ8AsN3BZyviSXvrtcutc,2626
214
- flyte-0.2.0b14.dist-info/METADATA,sha256=1I-_oekIUsZRu7qdLO-ee81A9jMn-ZOJfmRG9YUhSUc,5838
215
- flyte-0.2.0b14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
216
- flyte-0.2.0b14.dist-info/entry_points.txt,sha256=MIq2z5dBurdCJfpXfMKzgBv7sJOakKRYxr8G0cMiTrg,75
217
- flyte-0.2.0b14.dist-info/top_level.txt,sha256=7dkyFbikvA12LEZEqawx8oDG1CMod6hTliPj7iWzgYo,6
218
- flyte-0.2.0b14.dist-info/RECORD,,
214
+ flyte-0.2.0b15.dist-info/METADATA,sha256=8EpO_eWz-jwLENNAJAOph4ku1Z3h6-K7OG5W9tv1y3M,5850
215
+ flyte-0.2.0b15.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
216
+ flyte-0.2.0b15.dist-info/entry_points.txt,sha256=MIq2z5dBurdCJfpXfMKzgBv7sJOakKRYxr8G0cMiTrg,75
217
+ flyte-0.2.0b15.dist-info/top_level.txt,sha256=7dkyFbikvA12LEZEqawx8oDG1CMod6hTliPj7iWzgYo,6
218
+ flyte-0.2.0b15.dist-info/RECORD,,