flyte 2.0.0b8__py3-none-any.whl → 2.0.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.
@@ -1,4 +1,3 @@
1
- import os
2
1
  import ssl
3
2
  import typing
4
3
 
@@ -16,11 +15,6 @@ from ._authenticators.factory import (
16
15
  get_async_proxy_authenticator,
17
16
  )
18
17
 
19
- # Set environment variables for gRPC, this reduces log spew and avoids unnecessary warnings
20
- if "GRPC_VERBOSITY" not in os.environ:
21
- os.environ["GRPC_VERBOSITY"] = "ERROR"
22
- os.environ["GRPC_CPP_MIN_LOG_LEVEL"] = "ERROR"
23
-
24
18
  # Initialize gRPC AIO early enough so it can be used in the main thread
25
19
  init_grpc_aio()
26
20
 
@@ -1,3 +1,4 @@
1
+ import asyncio
1
2
  import typing
2
3
  from abc import abstractmethod
3
4
 
@@ -69,8 +70,9 @@ class RemoteClientConfigStore(ClientConfigStore):
69
70
  Retrieves the ClientConfig from the given grpc.Channel assuming AuthMetadataService is available
70
71
  """
71
72
  metadata_service = AuthMetadataServiceStub(self._unauthenticated_channel)
72
- public_client_config = await metadata_service.GetPublicClientConfig(PublicClientAuthConfigRequest())
73
- oauth2_metadata = await metadata_service.GetOAuth2Metadata(OAuth2MetadataRequest())
73
+ oauth2_metadata_task = metadata_service.GetOAuth2Metadata(OAuth2MetadataRequest())
74
+ public_client_config_task = metadata_service.GetPublicClientConfig(PublicClientAuthConfigRequest())
75
+ oauth2_metadata, public_client_config = await asyncio.gather(oauth2_metadata_task, public_client_config_task)
74
76
  return ClientConfig(
75
77
  token_endpoint=oauth2_metadata.token_endpoint,
76
78
  authorization_endpoint=oauth2_metadata.authorization_endpoint,
@@ -1,5 +1,19 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import os
4
+
5
+ # Set environment variables for gRPC, this reduces log spew and avoids unnecessary warnings
6
+ # before importing grpc
7
+ if "GRPC_VERBOSITY" not in os.environ:
8
+ os.environ["GRPC_VERBOSITY"] = "ERROR"
9
+ os.environ["GRPC_CPP_MIN_LOG_LEVEL"] = "ERROR"
10
+ # Disable fork support (stops "skipping fork() handlers")
11
+ os.environ["GRPC_ENABLE_FORK_SUPPORT"] = "0"
12
+ # Reduce absl/glog verbosity
13
+ os.environ["GLOG_minloglevel"] = "2"
14
+ os.environ["ABSL_LOG"] = "0"
15
+ #### Has to be before grpc
16
+
3
17
  import grpc
4
18
  from flyteidl.service import admin_pb2_grpc, dataproxy_pb2_grpc
5
19
 
flyte/remote/_task.py CHANGED
@@ -283,10 +283,11 @@ class TaskDetails(ToJSONMixin):
283
283
  def override(
284
284
  self,
285
285
  *,
286
+ friendly_name: Optional[str] = None,
286
287
  resources: Optional[flyte.Resources] = None,
287
288
  retries: Union[int, flyte.RetryStrategy] = 0,
288
289
  timeout: Optional[flyte.TimeoutType] = None,
289
- env: Optional[Dict[str, str]] = None,
290
+ env_vars: Optional[Dict[str, str]] = None,
290
291
  secrets: Optional[flyte.SecretRequest] = None,
291
292
  **kwargs: Any,
292
293
  ) -> TaskDetails:
@@ -296,12 +297,14 @@ class TaskDetails(ToJSONMixin):
296
297
  f"Check the parameters for override method."
297
298
  )
298
299
  template = self.pb2.spec.task_template
300
+ if friendly_name:
301
+ self.pb2.metadata.short_name = friendly_name
299
302
  if secrets:
300
303
  template.security_context.CopyFrom(get_security_context(secrets))
301
304
  if template.HasField("container"):
302
- if env:
305
+ if env_vars:
303
306
  template.container.env.clear()
304
- template.container.env.extend([literals_pb2.KeyValuePair(key=k, value=v) for k, v in env.items()])
307
+ template.container.env.extend([literals_pb2.KeyValuePair(key=k, value=v) for k, v in env_vars.items()])
305
308
  if resources:
306
309
  template.container.resources.CopyFrom(get_proto_resources(resources))
307
310
  if retries:
@@ -382,6 +385,7 @@ class Task(ToJSONMixin):
382
385
  async def listall(
383
386
  cls,
384
387
  by_task_name: str | None = None,
388
+ by_task_env: str | None = None,
385
389
  project: str | None = None,
386
390
  domain: str | None = None,
387
391
  sort_by: Tuple[str, Literal["asc", "desc"]] | None = None,
@@ -391,6 +395,7 @@ class Task(ToJSONMixin):
391
395
  Get all runs for the current project and domain.
392
396
 
393
397
  :param by_task_name: If provided, only tasks with this name will be returned.
398
+ :param by_task_env: If provided, only tasks with this environment prefix will be returned.
394
399
  :param project: The project to filter tasks by. If None, the current project will be used.
395
400
  :param domain: The domain to filter tasks by. If None, the current domain will be used.
396
401
  :param sort_by: The sorting criteria for the project list, in the format (field, order).
@@ -413,6 +418,15 @@ class Task(ToJSONMixin):
413
418
  values=[by_task_name],
414
419
  )
415
420
  )
421
+ if by_task_env:
422
+ # ideally we should have a STARTS_WITH filter, but it is not supported yet
423
+ filters.append(
424
+ list_pb2.Filter(
425
+ function=list_pb2.Filter.Function.CONTAINS,
426
+ field="name",
427
+ values=[f"{by_task_env}."],
428
+ )
429
+ )
416
430
  original_limit = limit
417
431
  if limit > cfg.batch_size:
418
432
  limit = cfg.batch_size
flyte/storage/_storage.py CHANGED
@@ -3,7 +3,7 @@ import pathlib
3
3
  import random
4
4
  import tempfile
5
5
  import typing
6
- from typing import AsyncIterator, Optional
6
+ from typing import AsyncGenerator, Optional
7
7
  from uuid import UUID
8
8
 
9
9
  import fsspec
@@ -15,6 +15,17 @@ from obstore.fsspec import register
15
15
  from flyte._initialize import get_storage
16
16
  from flyte._logging import logger
17
17
 
18
+ _OBSTORE_SUPPORTED_PROTOCOLS = ["s3", "gs", "abfs", "abfss"]
19
+
20
+
21
+ def _is_obstore_supported_protocol(protocol: str) -> bool:
22
+ """
23
+ Check if the given protocol is supported by obstore.
24
+ :param protocol: Protocol to check.
25
+ :return: True if the protocol is supported, False otherwise.
26
+ """
27
+ return protocol in _OBSTORE_SUPPORTED_PROTOCOLS
28
+
18
29
 
19
30
  def is_remote(path: typing.Union[pathlib.Path | str]) -> bool:
20
31
  """
@@ -178,6 +189,36 @@ async def put(from_path: str, to_path: Optional[str] = None, recursive: bool = F
178
189
  return to_path
179
190
 
180
191
 
192
+ async def _put_stream_obstore_bypass(data_iterable: typing.AsyncIterable[bytes] | bytes, to_path: str, **kwargs) -> str:
193
+ """
194
+ NOTE: This can break if obstore changes its API.
195
+
196
+ This function is a workaround for obstore's fsspec implementation which does not support async file operations.
197
+ It uses the synchronous methods directly to put a stream of data.
198
+ """
199
+ import obstore
200
+ from obstore.store import ObjectStore
201
+
202
+ fs = get_underlying_filesystem(path=to_path)
203
+ if not hasattr(fs, "_split_path") or not hasattr(fs, "_construct_store"):
204
+ raise NotImplementedError(f"Obstore bypass not supported for {fs.protocol} protocol, methods missing.")
205
+ bucket, path = fs._split_path(to_path) # pylint: disable=W0212
206
+ store: ObjectStore = fs._construct_store(bucket)
207
+ if "attributes" in kwargs:
208
+ attributes = kwargs.pop("attributes")
209
+ else:
210
+ attributes = {}
211
+ buf_file = obstore.open_writer_async(store, path, attributes=attributes)
212
+ if isinstance(data_iterable, bytes):
213
+ await buf_file.write(data_iterable)
214
+ else:
215
+ async for data in data_iterable:
216
+ await buf_file.write(data)
217
+ # await buf_file.flush()
218
+ await buf_file.close()
219
+ return to_path
220
+
221
+
181
222
  async def put_stream(
182
223
  data_iterable: typing.AsyncIterable[bytes] | bytes, *, name: str | None = None, to_path: str | None = None, **kwargs
183
224
  ) -> str:
@@ -204,9 +245,13 @@ async def put_stream(
204
245
  ctx = internal_ctx()
205
246
  to_path = ctx.raw_data.get_random_remote_path(file_name=name)
206
247
  fs = get_underlying_filesystem(path=to_path)
248
+
207
249
  file_handle = None
208
250
  if isinstance(fs, AsyncFileSystem):
209
251
  try:
252
+ if _is_obstore_supported_protocol(fs.protocol):
253
+ # If the protocol is supported by obstore, use the obstore bypass method
254
+ return await _put_stream_obstore_bypass(data_iterable, to_path=to_path, **kwargs)
210
255
  file_handle = await fs.open_async(to_path, "wb", **kwargs)
211
256
  if isinstance(data_iterable, bytes):
212
257
  await file_handle.write(data_iterable)
@@ -214,8 +259,8 @@ async def put_stream(
214
259
  async for data in data_iterable:
215
260
  await file_handle.write(data)
216
261
  return str(to_path)
217
- except NotImplementedError:
218
- logger.debug(f"{fs} doesn't implement 'open_async', falling back to sync")
262
+ except NotImplementedError as e:
263
+ logger.debug(f"{fs} doesn't implement 'open_async', falling back to sync, {e}")
219
264
  finally:
220
265
  if file_handle is not None:
221
266
  await file_handle.close()
@@ -230,7 +275,32 @@ async def put_stream(
230
275
  return str(to_path)
231
276
 
232
277
 
233
- async def get_stream(path: str, chunk_size=10 * 2**20, **kwargs) -> AsyncIterator[bytes]:
278
+ async def _get_stream_obstore_bypass(path: str, chunk_size, **kwargs) -> AsyncGenerator[bytes, None]:
279
+ """
280
+ NOTE: This can break if obstore changes its API.
281
+ This function is a workaround for obstore's fsspec implementation which does not support async file operations.
282
+ It uses the synchronous methods directly to get a stream of data.
283
+ """
284
+ import obstore
285
+ from obstore.store import ObjectStore
286
+
287
+ fs = get_underlying_filesystem(path=path)
288
+ if not hasattr(fs, "_split_path") or not hasattr(fs, "_construct_store"):
289
+ raise NotImplementedError(f"Obstore bypass not supported for {fs.protocol} protocol, methods missing.")
290
+ bucket, rem_path = fs._split_path(path) # pylint: disable=W0212
291
+ store: ObjectStore = fs._construct_store(bucket)
292
+ buf_file = await obstore.open_reader_async(store, rem_path, buffer_size=chunk_size)
293
+ try:
294
+ while True:
295
+ chunk = await buf_file.read()
296
+ if not chunk:
297
+ break
298
+ yield bytes(chunk)
299
+ finally:
300
+ buf_file.close()
301
+
302
+
303
+ async def get_stream(path: str, chunk_size=10 * 2**20, **kwargs) -> AsyncGenerator[bytes, None]:
234
304
  """
235
305
  Get a stream of data from a remote location.
236
306
  This is useful for downloading streaming data from a remote location.
@@ -246,18 +316,24 @@ async def get_stream(path: str, chunk_size=10 * 2**20, **kwargs) -> AsyncIterato
246
316
  :return: An async iterator that yields chunks of data.
247
317
  """
248
318
  fs = get_underlying_filesystem(path=path, **kwargs)
319
+
249
320
  file_size = fs.info(path)["size"]
250
321
  total_read = 0
251
322
  file_handle = None
252
323
  try:
324
+ if _is_obstore_supported_protocol(fs.protocol):
325
+ # If the protocol is supported by obstore, use the obstore bypass method
326
+ async for x in _get_stream_obstore_bypass(path, chunk_size=chunk_size, **kwargs):
327
+ yield x
328
+ return
253
329
  if isinstance(fs, AsyncFileSystem):
254
330
  file_handle = await fs.open_async(path, "rb")
255
331
  while chunk := await file_handle.read(min(chunk_size, file_size - total_read)):
256
332
  total_read += len(chunk)
257
333
  yield chunk
258
334
  return
259
- except NotImplementedError:
260
- logger.debug(f"{fs} doesn't implement 'open_async', falling back to sync")
335
+ except NotImplementedError as e:
336
+ logger.debug(f"{fs} doesn't implement 'open_async', falling back to sync, error: {e}")
261
337
  finally:
262
338
  if file_handle is not None:
263
339
  file_handle.close()
@@ -279,4 +355,4 @@ def join(*paths: str) -> str:
279
355
  return str(os.path.join(*paths))
280
356
 
281
357
 
282
- register(["s3", "gs", "abfs", "abfss"], asynchronous=True)
358
+ register(_OBSTORE_SUPPORTED_PROTOCOLS, asynchronous=True)
@@ -362,19 +362,6 @@ class PydanticTransformer(TypeTransformer[BaseModel]):
362
362
 
363
363
  def get_literal_type(self, t: Type[BaseModel]) -> LiteralType:
364
364
  schema = t.model_json_schema()
365
- fields = t.__annotations__.items()
366
-
367
- literal_type = {}
368
- for name, python_type in fields:
369
- try:
370
- literal_type[name] = TypeEngine.to_literal_type(python_type)
371
- except Exception as e:
372
- logger.warning(
373
- "Field {} of type {} cannot be converted to a literal type. Error: {}".format(name, python_type, e)
374
- )
375
-
376
- # This is for attribute access in FlytePropeller.
377
- ts = TypeStructure(tag="", dataclass_type=literal_type)
378
365
 
379
366
  meta_struct = struct_pb2.Struct()
380
367
  meta_struct.update(
@@ -385,10 +372,10 @@ class PydanticTransformer(TypeTransformer[BaseModel]):
385
372
  }
386
373
  )
387
374
 
375
+ # The type engine used to publish a type structure for attribute access. As of v2, this is no longer needed.
388
376
  return LiteralType(
389
377
  simple=SimpleType.STRUCT,
390
378
  metadata=schema,
391
- structure=ts,
392
379
  annotation=TypeAnnotation(annotations=meta_struct),
393
380
  )
394
381
 
@@ -620,24 +607,6 @@ class DataclassTransformer(TypeTransformer[object]):
620
607
  f"Possibly remove `DataClassJsonMixin` and `dataclass_json` decorator from dataclass declaration"
621
608
  )
622
609
 
623
- # Recursively construct the dataclass_type which contains the literal type of each field
624
- literal_type = {}
625
-
626
- hints = typing.get_type_hints(t)
627
- # Get the type of each field from dataclass
628
- for field in t.__dataclass_fields__.values(): # type: ignore
629
- try:
630
- name = field.name
631
- python_type = hints.get(name, field.type)
632
- literal_type[name] = TypeEngine.to_literal_type(python_type)
633
- except Exception as e:
634
- logger.debug(
635
- f"Field {field.name} of type {field.type} cannot be converted to a literal type. Error: {e}"
636
- )
637
-
638
- # This is for attribute access in FlytePropeller.
639
- ts = TypeStructure(tag="", dataclass_type=literal_type)
640
-
641
610
  meta_struct = struct_pb2.Struct()
642
611
  meta_struct.update(
643
612
  {
@@ -646,10 +615,11 @@ class DataclassTransformer(TypeTransformer[object]):
646
615
  }
647
616
  }
648
617
  )
618
+
619
+ # The type engine used to publish a type structure for attribute access. As of v2, this is no longer needed.
649
620
  return types_pb2.LiteralType(
650
621
  simple=types_pb2.SimpleType.STRUCT,
651
622
  metadata=schema,
652
- structure=ts,
653
623
  annotation=TypeAnnotation(annotations=meta_struct),
654
624
  )
655
625
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flyte
3
- Version: 2.0.0b8
3
+ Version: 2.0.0b13
4
4
  Summary: Add your description here
5
5
  Author-email: Ketan Umare <kumare3@users.noreply.github.com>
6
6
  Requires-Python: >=3.10
@@ -1,34 +1,34 @@
1
- flyte/__init__.py,sha256=jWSynBJyJ0WuSjE8HID2MT386ZNlRzx7LzCHW1y_XNw,1468
1
+ flyte/__init__.py,sha256=RIvRNnyKc9TfF5FlvREETDuosgs66w6d_A-MPMbyy9E,2158
2
2
  flyte/_build.py,sha256=MkgfLAPeL56YeVrGRNZUCZgbwzlEzVP3wLbl5Qru4yk,578
3
- flyte/_context.py,sha256=K0-TCt-_pHOoE5Xni87_8uIe2vCBOhfNQEtjGT4Hu4k,5239
3
+ flyte/_context.py,sha256=NGl-tDoTOoIljsUzD1IPTESOdaG8vKeoAzs5271XuPM,5244
4
4
  flyte/_deploy.py,sha256=6FTL7m3unDG-1V-5hTF2pRnql-6e9pRRyCM9o3xiHWQ,10541
5
5
  flyte/_doc.py,sha256=_OPCf3t_git6UT7kSJISFaWO9cfNzJhhoe6JjVdyCJo,706
6
6
  flyte/_docstring.py,sha256=SsG0Ab_YMAwy2ABJlEo3eBKlyC3kwPdnDJ1FIms-ZBQ,1127
7
- flyte/_environment.py,sha256=6ks0lkvGt4oSqM5EFPFlhWC3eoUghxUvCn0wstcAD2E,3713
7
+ flyte/_environment.py,sha256=vpe116KTNnCisYfMLXCoY09Gye79ZQC1u4HwnJcBp4c,3743
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=m7wuVTS5xGQrYgS58hEBXJ8GY7YcYMvgPtNp3fRm2fA,37392
12
- flyte/_initialize.py,sha256=xKl_LYMluRt21wWqa6RTKuLo0_DCbSaTfUk27_brtNk,18232
11
+ flyte/_image.py,sha256=q-X_UZnFE_TUeJeo-zC-Oo2PeDQSz4h9dxvglNwJJ70,37045
12
+ flyte/_initialize.py,sha256=ZMoD6Hd7h32eoXfxcPM2DX4cI-k72iKBblNjRxu2wtA,18241
13
13
  flyte/_interface.py,sha256=1B9zIwFDjiVp_3l_mk8EpA4g3Re-6DUBEBi9z9vDvPs,3504
14
- flyte/_logging.py,sha256=QrT4Z30C2tsZ-yIojisQODTuq6Y6zSJYuTrLgF58UYc,3664
14
+ flyte/_logging.py,sha256=QmXwMG5MCz0bkns_BIIylQgafNqcDCp5dlzpW_JVetI,3697
15
15
  flyte/_map.py,sha256=efPd8O-JKUg1OY3_MzU3KGbhsGYDVRNBwWr0ceNIXhQ,7444
16
16
  flyte/_pod.py,sha256=--72b0c6IkOEbBwZPLmgl-ll-j7ECfG-kh75LzBnNN8,1068
17
17
  flyte/_resources.py,sha256=L2JuvQDlMo1JLJeUmJPRwtWbunhR2xJEhFgQW5yc72c,9690
18
18
  flyte/_retry.py,sha256=rfLv0MvWxzPByKESTglEmjPsytEAKiIvvmzlJxXwsfE,941
19
- flyte/_reusable_environment.py,sha256=f8Y1GilUwGcXH4n2Fckrnx0SrZmhk3nCfoe-TqUKivI,3740
20
- flyte/_run.py,sha256=LEZQFhIUf9retXvNrzPN2HV-LkTX77dK7YmL8L0zQmk,25678
21
- flyte/_secret.py,sha256=89VIihdXI03irHb217GMfipt7jzXBafm17YYmyv6gHo,3245
22
- flyte/_task.py,sha256=FUqGDtDmhOVPdv-UVko4h0oecoAcc3JZKu8S__cwUpY,19805
23
- flyte/_task_environment.py,sha256=hblOR-B_Cc6ibpFkedZSyN6V9vi0_vZ0132YKN5D4EM,9826
19
+ flyte/_reusable_environment.py,sha256=qzmLJlHFiek8_k3EEqxew3837Pe2xjmz3mjGk_xqPEo,4857
20
+ flyte/_run.py,sha256=7OrZkxqiACFiZs53_t1Tb_qTLi8oULkBL5tjql9X5bM,25695
21
+ flyte/_secret.py,sha256=wug5NbIYEkXO6FJkqnPRnPoc2nKDerQiemWtRGRi288,3576
22
+ flyte/_task.py,sha256=0HJnvjyBiXEXux82vNDXpsoVdybE17hkhFnFT-aomPY,20091
23
+ flyte/_task_environment.py,sha256=unT-U9tUT5m_SQ9eLXq95IvMLCMm7YxL-9Ig-dfP-_0,9713
24
24
  flyte/_task_plugins.py,sha256=9MH3nFPOH_e8_92BT4sFk4oyAnj6GJFvaPYWaraX7yE,1037
25
25
  flyte/_timeout.py,sha256=zx5sFcbYmjJAJbZWSGzzX-BpC9HC7Jfs35T7vVhKwkk,1571
26
- flyte/_tools.py,sha256=tWb0sx3t3mm4jbaQVjCTc9y39oR_Ibo3z_KHToP3Lto,966
26
+ flyte/_tools.py,sha256=lB3OiJSAhxzSMCYjLUF6nZjlFsmNpaRXtr3_Fefcxbg,747
27
27
  flyte/_trace.py,sha256=SSE1nzUgmVTS2xFNtchEOjEjlRavMOIInasXzY8i9lU,4911
28
- flyte/_version.py,sha256=_KVkHM5e9KFXaa0WlXQpBKZVOwVoURoWGQnGv9wA_0A,519
28
+ flyte/_version.py,sha256=dpeCcD5xnHmKtmqiX7Mgi73gjw8KMK0InroW6T0TmRQ,722
29
29
  flyte/errors.py,sha256=z28rhbNmJF5Ie7quQWtoSL4K5p_tC3QjZDIZTupNQFw,6395
30
30
  flyte/extend.py,sha256=GB4ZedGzKa30vYWRVPOdxEeK62xnUVFY4z2tD6H9eEw,376
31
- flyte/models.py,sha256=2TgfrkPPgcnnk1P_MO5SEmOYAUbsMKl3gxIDwhW2yEU,15674
31
+ flyte/models.py,sha256=2DSdvTQJBEF8TFo9rHjI8dhPLD8nIEZcKyXSdl0-Vi4,15838
32
32
  flyte/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  flyte/_bin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  flyte/_bin/runtime.py,sha256=8U_tIhdF8phBLDFr0U1xv92OKK5RquiaTJFv8v_fIgQ,5537
@@ -53,9 +53,9 @@ flyte/_internal/controllers/remote/_core.py,sha256=R-gm0tFzsdvyCbrPs0zikXCnzyaTe
53
53
  flyte/_internal/controllers/remote/_informer.py,sha256=w4p29_dzS_ns762eNBljvnbJLgCm36d1Ogo2ZkgV1yg,14418
54
54
  flyte/_internal/controllers/remote/_service_protocol.py,sha256=B9qbIg6DiGeac-iSccLmX_AL2xUgX4ezNUOiAbSy4V0,1357
55
55
  flyte/_internal/imagebuild/__init__.py,sha256=dwXdJ1jMhw9RF8itF7jkPLanvX1yCviSns7hE5eoIts,102
56
- flyte/_internal/imagebuild/docker_builder.py,sha256=Lb9kKmBcEDKaWmyxgHW15BBYRMEQknM72pw8BNfRpTA,21160
56
+ flyte/_internal/imagebuild/docker_builder.py,sha256=KaaCvVFOY4XNMYMr3LAkDCV-mIzEQPr06UxcwhVD234,21321
57
57
  flyte/_internal/imagebuild/image_builder.py,sha256=dXBXl62qcPabus6dR3eP8P9mBGNhpZHZ2Xm12AymKkk,11150
58
- flyte/_internal/imagebuild/remote_builder.py,sha256=S83QZc5nblQaEyTKn2vxQdvLBIDtvNhDDKRjjjFJ-to,10622
58
+ flyte/_internal/imagebuild/remote_builder.py,sha256=fb7BRXCvqBAzwlY4Smq_G0GHANcwlqpKHQoZQn2s2ZQ,11557
59
59
  flyte/_internal/imagebuild/utils.py,sha256=_ULn4jzoffXbuFpB-o_Lro-PvZ9KObYgtELC31NXsgM,1160
60
60
  flyte/_internal/resolvers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
61
  flyte/_internal/resolvers/_task_module.py,sha256=jwy1QYygUK7xmpCZLt1SPTfJCkfox3Ck3mTlTsm66UI,1973
@@ -66,9 +66,9 @@ flyte/_internal/runtime/convert.py,sha256=dX3PfIhuYvuCpRAFGRo-uTRy8Ys3Rgs9cowO6X
66
66
  flyte/_internal/runtime/entrypoints.py,sha256=9Ng-aQ45M-_MMWeOe9uGmgx69qO9b0xaMRiu542ZI9g,6581
67
67
  flyte/_internal/runtime/io.py,sha256=ysL7hMpfVumvsEYWOM-_VPa8MXn5_X_CZorKbOThyv4,5935
68
68
  flyte/_internal/runtime/resources_serde.py,sha256=TObMVsSjVcQhcY8-nY81pbvrz7TP-adDD5xV-LqAaxM,4813
69
- flyte/_internal/runtime/reuse.py,sha256=WEuBfC9tBezxaIXeUQDgnJfnRHiUmPK0S25nTOFle4E,4676
69
+ flyte/_internal/runtime/reuse.py,sha256=uGjomQz4X4JvPv6M8eDW94g4YfHJugNYufwK6eVFlwI,4901
70
70
  flyte/_internal/runtime/rusty.py,sha256=e2uSg9-Hooa65-BIuqXhIrEq86RHteFFs3W7dDuM3uo,6946
71
- flyte/_internal/runtime/task_serde.py,sha256=n7cGuD3yPjtZ5gJOwQ-7sNfDaLdTghdT3o4xPv7aVfU,14108
71
+ flyte/_internal/runtime/task_serde.py,sha256=0XwpxRU2CYxnwO_hoqrjSQxq0idKrErOk8XUkS02SDE,14134
72
72
  flyte/_internal/runtime/taskrunner.py,sha256=rHWS4t5qgZnzGdGrs0_O0sSs_PVGoE1CNPDb-fTwwmo,7332
73
73
  flyte/_internal/runtime/types_serde.py,sha256=EjRh9Yypx9-20XXQprtNgp766LeQVRoYWtY6XPGMZQg,1813
74
74
  flyte/_protos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -159,15 +159,15 @@ flyte/_utils/uv_script_parser.py,sha256=PxqD8lSMi6xv0uDd1s8LKB2IPZr4ttZJCUweqlyM
159
159
  flyte/cli/__init__.py,sha256=aeCcumeP9xD_5aCmaRYUPCe2QRJSGCaxcUbTZ3co768,341
160
160
  flyte/cli/_abort.py,sha256=Ty-63Gtd2PUn6lCuL5AaasfBoPu7TDSU5EQKVbkF4qw,661
161
161
  flyte/cli/_build.py,sha256=gX8fqYAMoArn8kfR__5GtWc9dJahV9bPkSljOCg5zvI,3540
162
- flyte/cli/_common.py,sha256=vKgf4UaY3NrwIV2_rjBqwu_rskhh4Dl4g9dJOqVTNss,13201
162
+ flyte/cli/_common.py,sha256=9BoRYzQBxuKdczC13u_2auDV8wYABvf3lWZhPcfGclA,13591
163
163
  flyte/cli/_create.py,sha256=tXDhZAdsxvpQ4ngO4U-PhyYwzQ3Hi2AJrNtZ3eqJptQ,5541
164
164
  flyte/cli/_delete.py,sha256=VTmXv09PBjkdtyl23mbSjIQQlN7Y1AI_bO0GkHP-f9E,546
165
165
  flyte/cli/_deploy.py,sha256=sDbO8gobXR4O0Vlp3RKEH-kBSr25BiXJIoHVwau9Occ,8877
166
- flyte/cli/_gen.py,sha256=ni3E65_wSBc9x5NNbq1REuxfZCJz-ioLMVQnZIgwyYg,5745
167
- flyte/cli/_get.py,sha256=lzjg62at9oAswuOBORlg5B-LSRrNJgC6C2UViQuzBgk,10343
166
+ flyte/cli/_gen.py,sha256=7K2eYQLGVr26I2OC3Xe_bzAn4ANYA5mPlBW5m1476PM,6079
167
+ flyte/cli/_get.py,sha256=E2HTekZcVbTtwy6LnM5WHzF41aT1uPRWqV1rYB4H5B8,10420
168
168
  flyte/cli/_option.py,sha256=oC1Gs0u0UrOC1SsrFo-iCuAkqQvI1wJWCdjYXA9rW4Q,1445
169
169
  flyte/cli/_params.py,sha256=8Gj8UYGHwu-SUXGWCTRX5QsVf19NiajhaUMMae6FF9o,19466
170
- flyte/cli/_run.py,sha256=qf_E60ZMT06g6j50P1_q5_y0uslIF9FQZE3s4PHycmg,7787
170
+ flyte/cli/_run.py,sha256=ymEAd_mGFtO58fCcko9XhVXsvFWlydII_1GZ-031W1g,16308
171
171
  flyte/cli/main.py,sha256=t5Ivjipd6bVHIGjRBGwkeP577j59ASq9c1wgoNf3h2c,5334
172
172
  flyte/config/__init__.py,sha256=MiwEYK5Iv7MRR22z61nzbsbvZ9Q6MdmAU_g9If1Pmb8,144
173
173
  flyte/config/_config.py,sha256=WElU--Kw4MM9zx1v-rLD8qYu2T5Zk0-1QbTpkEc27bc,10779
@@ -191,20 +191,20 @@ flyte/remote/_logs.py,sha256=t4H7DEZDYJC9Vx7oJ7R7m4Z56bWBAjm9ylU4UP1hKq0,6711
191
191
  flyte/remote/_project.py,sha256=IbkxKRAvZunKLIwpmcreA4O-0GxWC0KPC62WSYvsK34,2868
192
192
  flyte/remote/_run.py,sha256=FtIIMNODQGyc6oYLmuI_ku3bUxhDFIE-UU7ecMNZvBg,10018
193
193
  flyte/remote/_secret.py,sha256=CF9WiZKeMJaUNeIawVPf8XHk9OjFt2wc0m7S9ZOdGbE,4399
194
- flyte/remote/_task.py,sha256=23sDeYYtcvqNqK51pRB2hmTeBxAmKr1aIbrR6rpKqKg,16693
194
+ flyte/remote/_task.py,sha256=FIAXeMYpfMAHciqOAucdtRaJ7mZVvHnaWA3ZBP-KKw4,17325
195
195
  flyte/remote/_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
196
196
  flyte/remote/_client/_protocols.py,sha256=JyBWHs5WsVOxEDUyG9X7wPLDzzzjkoaNhJlU-X4YlN0,5599
197
- flyte/remote/_client/controlplane.py,sha256=FsOfj4rO4MIMnYrpAT53F8q588VVf5t4sDuwoPuc840,3102
197
+ flyte/remote/_client/controlplane.py,sha256=AUzZZotAZVtyrQRKSZrVqnjgM1R8xK1pHrdeD6KSom8,3608
198
198
  flyte/remote/_client/auth/__init__.py,sha256=JQrIlwaqPlPzrxcOREhcfyFsC4LrfqL5TRz6A3JNSEA,413
199
199
  flyte/remote/_client/auth/_auth_utils.py,sha256=Is6mr18J8AMQlbtu-Q63aMJgrZ27dXXNSig8KshR1_8,545
200
- flyte/remote/_client/auth/_channel.py,sha256=HoVyxgjij1xNBXvQvQRRF0Gy0OU-7QHdl0jXRA6fq0o,9455
201
- flyte/remote/_client/auth/_client_config.py,sha256=Elit5TCLjMQDiktiUmMKy2POWwwb5rKgIXfG3-rpfbs,3304
200
+ flyte/remote/_client/auth/_channel.py,sha256=dIo8s8lhd5XCEQ0qgDewMBY93E2RQn56Yak-T-esH8k,9219
201
+ flyte/remote/_client/auth/_client_config.py,sha256=LhJpznsibAQkVx0emOhBSrfXjis7WkoL695WXHZAJMo,3435
202
202
  flyte/remote/_client/auth/_default_html.py,sha256=XAdgP-25WySMODbusWOcQQPiXin1h-hfzmRJv_Dg3tE,1651
203
203
  flyte/remote/_client/auth/_keyring.py,sha256=hJ2FxFdi5_FaKLcuqhelxj6Hc1WYQrez4c47qSl5c5A,5681
204
204
  flyte/remote/_client/auth/_token_client.py,sha256=FxFaG_DcynQIZfEdAuJUsrcy0OnYbEr4gKLpu8WZHJo,10460
205
205
  flyte/remote/_client/auth/errors.py,sha256=ZYS9k4GX_McacKhxHKt5V2A4CWjLUq4RkBx_goDTdHY,390
206
206
  flyte/remote/_client/auth/_authenticators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
207
- flyte/remote/_client/auth/_authenticators/base.py,sha256=7ygwRYIt_BoSNfUFuc0E7mS88xD9AkwIkSX2Cv8be34,16636
207
+ flyte/remote/_client/auth/_authenticators/base.py,sha256=LIIYt46j6_ShJRiwjNwNX-LxLiUoG1qbiN0ypyzGedY,17020
208
208
  flyte/remote/_client/auth/_authenticators/client_credentials.py,sha256=e9DOFdKEvaM3uSR10lnNuJaOwAcCkZQWZPKv7xUoFsI,3483
209
209
  flyte/remote/_client/auth/_authenticators/device_code.py,sha256=G4jBkHS51kQ333dAuk7dCVSpd1Zy8g85YBdwMp8QoO0,4855
210
210
  flyte/remote/_client/auth/_authenticators/external_command.py,sha256=IfTJQACPd1xc6htZYC-HdMIx6Q9JHBPw1HUG1Pv6lXg,3838
@@ -219,7 +219,7 @@ flyte/report/_template.html,sha256=YehmLJG3QMYQ10UT1YZBu2ncVmAJ4iyqVp5hF3sXRAs,3
219
219
  flyte/storage/__init__.py,sha256=0tcI9qtIVf0Fxczkno03vpwBDVlKMDSNN38uxMTH1bE,569
220
220
  flyte/storage/_config.py,sha256=xVibWJaioOnkeTb_M30azgiUe1jvmQaOWRZEkpdoTao,8680
221
221
  flyte/storage/_remote_fs.py,sha256=kM_iszbccjVD5VtVdgfkl1FHS8NPnY__JOo_CPQUE4c,1124
222
- flyte/storage/_storage.py,sha256=AQ_ubpYwJjRdEYV-qU4ttXDZuuT28t6-S5eFQD5D9sQ,10175
222
+ flyte/storage/_storage.py,sha256=MLzpysJ2AsIj0-LbPTGiFOuAXKqIOlyUOZrYAErgf7U,13383
223
223
  flyte/storage/_utils.py,sha256=8oLCM-7D7JyJhzUi1_Q1NFx8GBUPRfou0T_5tPBmPbE,309
224
224
  flyte/syncify/__init__.py,sha256=WgTk-v-SntULnI55CsVy71cxGJ9Q6pxpTrhbPFuouJ0,1974
225
225
  flyte/syncify/_api.py,sha256=k4LQB8odJb5Fx2dabL340g0Tq1bKfSG_ZHsV5qRodE0,14858
@@ -228,12 +228,12 @@ flyte/types/_interface.py,sha256=5y9EC5r897xz03Hh0ltF8QVGKMfMfAznws-hKSEO4Go,167
228
228
  flyte/types/_pickle.py,sha256=PjdR66OTDMZ3OYq6GvM_Ua0cIo5t2XQaIjmpJ9xo4Ys,4050
229
229
  flyte/types/_renderer.py,sha256=ygcCo5l60lHufyQISFddZfWwLlQ8kJAKxUT_XnR_6dY,4818
230
230
  flyte/types/_string_literals.py,sha256=NlG1xV8RSA-sZ-n-IFQCAsdB6jXJOAKkHWtnopxVVDk,4231
231
- flyte/types/_type_engine.py,sha256=Tas_OXYddOi0nDuORjqan2SkJ96wKD8937I2l1bo8vk,97916
231
+ flyte/types/_type_engine.py,sha256=_JMBMiwHM5qWWn2n4MVNsbadgTOuU1GJVlYvj8HcV9k,96773
232
232
  flyte/types/_utils.py,sha256=pbts9E1_2LTdLygAY0UYTLYJ8AsN3BZyviSXvrtcutc,2626
233
- flyte-2.0.0b8.data/scripts/runtime.py,sha256=8U_tIhdF8phBLDFr0U1xv92OKK5RquiaTJFv8v_fIgQ,5537
234
- flyte-2.0.0b8.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
235
- flyte-2.0.0b8.dist-info/METADATA,sha256=yDQq8HfWnmk2QGtx8tsYwZqPm1gK26W_Dvjs5Pf7IeM,10004
236
- flyte-2.0.0b8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
237
- flyte-2.0.0b8.dist-info/entry_points.txt,sha256=MIq2z5dBurdCJfpXfMKzgBv7sJOakKRYxr8G0cMiTrg,75
238
- flyte-2.0.0b8.dist-info/top_level.txt,sha256=7dkyFbikvA12LEZEqawx8oDG1CMod6hTliPj7iWzgYo,6
239
- flyte-2.0.0b8.dist-info/RECORD,,
233
+ flyte-2.0.0b13.data/scripts/runtime.py,sha256=8U_tIhdF8phBLDFr0U1xv92OKK5RquiaTJFv8v_fIgQ,5537
234
+ flyte-2.0.0b13.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
235
+ flyte-2.0.0b13.dist-info/METADATA,sha256=_9P_PqRRg9vzFCtMMqVAQJKKN-QWHTNa_8d00kcFFmQ,10005
236
+ flyte-2.0.0b13.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
237
+ flyte-2.0.0b13.dist-info/entry_points.txt,sha256=MIq2z5dBurdCJfpXfMKzgBv7sJOakKRYxr8G0cMiTrg,75
238
+ flyte-2.0.0b13.dist-info/top_level.txt,sha256=7dkyFbikvA12LEZEqawx8oDG1CMod6hTliPj7iWzgYo,6
239
+ flyte-2.0.0b13.dist-info/RECORD,,