flyte 2.0.0b19__py3-none-any.whl → 2.0.0b20__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/_internal/controllers/remote/__init__.py +0 -2
- flyte/_internal/controllers/remote/_controller.py +3 -3
- flyte/_internal/controllers/remote/_core.py +120 -92
- flyte/_internal/controllers/remote/_informer.py +15 -6
- flyte/_version.py +3 -3
- flyte/errors.py +9 -0
- {flyte-2.0.0b19.dist-info → flyte-2.0.0b20.dist-info}/METADATA +2 -1
- {flyte-2.0.0b19.dist-info → flyte-2.0.0b20.dist-info}/RECORD +14 -14
- {flyte-2.0.0b19.data → flyte-2.0.0b20.data}/scripts/debug.py +0 -0
- {flyte-2.0.0b19.data → flyte-2.0.0b20.data}/scripts/runtime.py +0 -0
- {flyte-2.0.0b19.dist-info → flyte-2.0.0b20.dist-info}/WHEEL +0 -0
- {flyte-2.0.0b19.dist-info → flyte-2.0.0b20.dist-info}/entry_points.txt +0 -0
- {flyte-2.0.0b19.dist-info → flyte-2.0.0b20.dist-info}/licenses/LICENSE +0 -0
- {flyte-2.0.0b19.dist-info → flyte-2.0.0b20.dist-info}/top_level.txt +0 -0
|
@@ -117,9 +117,8 @@ class RemoteController(Controller):
|
|
|
117
117
|
def __init__(
|
|
118
118
|
self,
|
|
119
119
|
client_coro: Awaitable[ClientSet],
|
|
120
|
-
workers: int,
|
|
121
|
-
max_system_retries: int,
|
|
122
|
-
default_parent_concurrency: int = 100,
|
|
120
|
+
workers: int = 20,
|
|
121
|
+
max_system_retries: int = 10,
|
|
123
122
|
):
|
|
124
123
|
""" """
|
|
125
124
|
super().__init__(
|
|
@@ -127,6 +126,7 @@ class RemoteController(Controller):
|
|
|
127
126
|
workers=workers,
|
|
128
127
|
max_system_retries=max_system_retries,
|
|
129
128
|
)
|
|
129
|
+
default_parent_concurrency = int(os.getenv("_F_P_CNC", "100"))
|
|
130
130
|
self._default_parent_concurrency = default_parent_concurrency
|
|
131
131
|
self._parent_action_semaphore: DefaultDict[str, asyncio.Semaphore] = defaultdict(
|
|
132
132
|
lambda: asyncio.Semaphore(default_parent_concurrency)
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
|
+
import os
|
|
4
5
|
import sys
|
|
5
6
|
import threading
|
|
6
7
|
from asyncio import Event
|
|
7
8
|
from typing import Awaitable, Coroutine, Optional
|
|
8
9
|
|
|
9
10
|
import grpc.aio
|
|
11
|
+
from aiolimiter import AsyncLimiter
|
|
10
12
|
from google.protobuf.wrappers_pb2 import StringValue
|
|
11
13
|
|
|
12
14
|
import flyte.errors
|
|
@@ -32,10 +34,10 @@ class Controller:
|
|
|
32
34
|
def __init__(
|
|
33
35
|
self,
|
|
34
36
|
client_coro: Awaitable[ClientSet],
|
|
35
|
-
workers: int =
|
|
36
|
-
max_system_retries: int =
|
|
37
|
+
workers: int = 20,
|
|
38
|
+
max_system_retries: int = 10,
|
|
37
39
|
resource_log_interval_sec: float = 10.0,
|
|
38
|
-
min_backoff_on_err_sec: float = 0.
|
|
40
|
+
min_backoff_on_err_sec: float = 0.5,
|
|
39
41
|
thread_wait_timeout_sec: float = 5.0,
|
|
40
42
|
enqueue_timeout_sec: float = 5.0,
|
|
41
43
|
):
|
|
@@ -53,14 +55,17 @@ class Controller:
|
|
|
53
55
|
self._running = False
|
|
54
56
|
self._resource_log_task = None
|
|
55
57
|
self._workers = workers
|
|
56
|
-
self._max_retries = max_system_retries
|
|
58
|
+
self._max_retries = int(os.getenv("_F_MAX_RETRIES", max_system_retries))
|
|
57
59
|
self._resource_log_interval = resource_log_interval_sec
|
|
58
60
|
self._min_backoff_on_err = min_backoff_on_err_sec
|
|
61
|
+
self._max_backoff_on_err = float(os.getenv("_F_MAX_BFF_ON_ERR", "10.0"))
|
|
59
62
|
self._thread_wait_timeout = thread_wait_timeout_sec
|
|
60
63
|
self._client_coro = client_coro
|
|
61
64
|
self._failure_event: Event | None = None
|
|
62
65
|
self._enqueue_timeout = enqueue_timeout_sec
|
|
63
66
|
self._informer_start_wait_timeout = thread_wait_timeout_sec
|
|
67
|
+
max_qps = int(os.getenv("_F_MAX_QPS", "100"))
|
|
68
|
+
self._rate_limiter = AsyncLimiter(max_qps, 1.0)
|
|
64
69
|
|
|
65
70
|
# Thread management
|
|
66
71
|
self._thread = None
|
|
@@ -194,15 +199,16 @@ class Controller:
|
|
|
194
199
|
# We will wait for this to signal that the thread is ready
|
|
195
200
|
# Signal the main thread that we're ready
|
|
196
201
|
logger.debug("Background thread initialization complete")
|
|
197
|
-
self._thread_ready.set()
|
|
198
202
|
if sys.version_info >= (3, 11):
|
|
199
203
|
async with asyncio.TaskGroup() as tg:
|
|
200
204
|
for i in range(self._workers):
|
|
201
|
-
tg.create_task(self._bg_run())
|
|
205
|
+
tg.create_task(self._bg_run(f"worker-{i}"))
|
|
206
|
+
self._thread_ready.set()
|
|
202
207
|
else:
|
|
203
208
|
tasks = []
|
|
204
209
|
for i in range(self._workers):
|
|
205
|
-
tasks.append(asyncio.create_task(self._bg_run()))
|
|
210
|
+
tasks.append(asyncio.create_task(self._bg_run(f"worker-{i}")))
|
|
211
|
+
self._thread_ready.set()
|
|
206
212
|
await asyncio.gather(*tasks)
|
|
207
213
|
|
|
208
214
|
def _bg_thread_target(self):
|
|
@@ -221,6 +227,7 @@ class Controller:
|
|
|
221
227
|
except Exception as e:
|
|
222
228
|
logger.error(f"Controller thread encountered an exception: {e}")
|
|
223
229
|
self._set_exception(e)
|
|
230
|
+
self._failure_event.set()
|
|
224
231
|
finally:
|
|
225
232
|
if self._loop and self._loop.is_running():
|
|
226
233
|
self._loop.close()
|
|
@@ -292,21 +299,22 @@ class Controller:
|
|
|
292
299
|
started = action.is_started()
|
|
293
300
|
action.mark_cancelled()
|
|
294
301
|
if started:
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
302
|
+
async with self._rate_limiter:
|
|
303
|
+
logger.info(f"Cancelling action: {action.name}")
|
|
304
|
+
try:
|
|
305
|
+
# TODO add support when the queue service supports aborting actions
|
|
306
|
+
# await self._queue_service.AbortQueuedAction(
|
|
307
|
+
# queue_service_pb2.AbortQueuedActionRequest(action_id=action.action_id),
|
|
308
|
+
# wait_for_ready=True,
|
|
309
|
+
# )
|
|
310
|
+
logger.info(f"Successfully cancelled action: {action.name}")
|
|
311
|
+
except grpc.aio.AioRpcError as e:
|
|
312
|
+
if e.code() in [
|
|
313
|
+
grpc.StatusCode.NOT_FOUND,
|
|
314
|
+
grpc.StatusCode.FAILED_PRECONDITION,
|
|
315
|
+
]:
|
|
316
|
+
logger.info(f"Action {action.name} not found, assumed completed or cancelled.")
|
|
317
|
+
return
|
|
310
318
|
else:
|
|
311
319
|
# If the action is not started, we have to ensure it does not get launched
|
|
312
320
|
logger.info(f"Action {action.name} is not started, no need to cancel.")
|
|
@@ -320,56 +328,69 @@ class Controller:
|
|
|
320
328
|
Attempt to launch an action.
|
|
321
329
|
"""
|
|
322
330
|
if not action.is_started():
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
if action.
|
|
327
|
-
|
|
328
|
-
|
|
331
|
+
async with self._rate_limiter:
|
|
332
|
+
task: queue_service_pb2.TaskAction | None = None
|
|
333
|
+
trace: queue_service_pb2.TraceAction | None = None
|
|
334
|
+
if action.type == "task":
|
|
335
|
+
if action.task is None:
|
|
336
|
+
raise flyte.errors.RuntimeSystemError(
|
|
337
|
+
"NoTaskSpec", "Task Spec not found, cannot launch Task Action."
|
|
338
|
+
)
|
|
339
|
+
cache_key = None
|
|
340
|
+
logger.info(f"Action {action.name} has cache version {action.cache_key}")
|
|
341
|
+
if action.cache_key:
|
|
342
|
+
cache_key = StringValue(value=action.cache_key)
|
|
343
|
+
|
|
344
|
+
task = queue_service_pb2.TaskAction(
|
|
345
|
+
id=task_definition_pb2.TaskIdentifier(
|
|
346
|
+
version=action.task.task_template.id.version,
|
|
347
|
+
org=action.task.task_template.id.org,
|
|
348
|
+
project=action.task.task_template.id.project,
|
|
349
|
+
domain=action.task.task_template.id.domain,
|
|
350
|
+
name=action.task.task_template.id.name,
|
|
351
|
+
),
|
|
352
|
+
spec=action.task,
|
|
353
|
+
cache_key=cache_key,
|
|
329
354
|
)
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
return
|
|
370
|
-
logger.exception(f"Failed to launch action: {action.name} backing off...")
|
|
371
|
-
logger.debug(f"Action details: {action}")
|
|
372
|
-
raise e
|
|
355
|
+
elif action.type == "trace":
|
|
356
|
+
trace = action.trace
|
|
357
|
+
|
|
358
|
+
logger.debug(f"Attempting to launch action: {action.name}")
|
|
359
|
+
try:
|
|
360
|
+
await self._queue_service.EnqueueAction(
|
|
361
|
+
queue_service_pb2.EnqueueActionRequest(
|
|
362
|
+
action_id=action.action_id,
|
|
363
|
+
parent_action_name=action.parent_action_name,
|
|
364
|
+
task=task,
|
|
365
|
+
trace=trace,
|
|
366
|
+
input_uri=action.inputs_uri,
|
|
367
|
+
run_output_base=action.run_output_base,
|
|
368
|
+
group=action.group.name if action.group else None,
|
|
369
|
+
# Subject is not used in the current implementation
|
|
370
|
+
),
|
|
371
|
+
wait_for_ready=True,
|
|
372
|
+
timeout=self._enqueue_timeout,
|
|
373
|
+
)
|
|
374
|
+
logger.info(f"Successfully launched action: {action.name}")
|
|
375
|
+
except grpc.aio.AioRpcError as e:
|
|
376
|
+
if e.code() == grpc.StatusCode.ALREADY_EXISTS:
|
|
377
|
+
logger.info(f"Action {action.name} already exists, continuing to monitor.")
|
|
378
|
+
return
|
|
379
|
+
if e.code() in [
|
|
380
|
+
grpc.StatusCode.FAILED_PRECONDITION,
|
|
381
|
+
grpc.StatusCode.INVALID_ARGUMENT,
|
|
382
|
+
grpc.StatusCode.NOT_FOUND,
|
|
383
|
+
]:
|
|
384
|
+
raise flyte.errors.RuntimeSystemError(
|
|
385
|
+
e.code().name, f"Precondition failed: {e.details()}"
|
|
386
|
+
) from e
|
|
387
|
+
# For all other errors, we will retry with backoff
|
|
388
|
+
logger.exception(
|
|
389
|
+
f"Failed to launch action: {action.name}, Code: {e.code()}, "
|
|
390
|
+
f"Details {e.details()} backing off..."
|
|
391
|
+
)
|
|
392
|
+
logger.debug(f"Action details: {action}")
|
|
393
|
+
raise flyte.errors.SlowDownError(f"Failed to launch action: {e.details()}") from e
|
|
373
394
|
|
|
374
395
|
@log
|
|
375
396
|
async def _bg_process(self, action: Action):
|
|
@@ -397,35 +418,42 @@ class Controller:
|
|
|
397
418
|
await asyncio.sleep(self._resource_log_interval)
|
|
398
419
|
|
|
399
420
|
@log
|
|
400
|
-
async def _bg_run(self):
|
|
421
|
+
async def _bg_run(self, worker_id: str):
|
|
401
422
|
"""Run loop with resource status logging"""
|
|
423
|
+
logger.info(f"Worker {worker_id} started")
|
|
402
424
|
while self._running:
|
|
403
425
|
logger.debug(f"{threading.current_thread().name} Waiting for resource")
|
|
404
426
|
action = await self._shared_queue.get()
|
|
405
427
|
logger.debug(f"{threading.current_thread().name} Got resource {action.name}")
|
|
406
428
|
try:
|
|
407
429
|
await self._bg_process(action)
|
|
408
|
-
except
|
|
409
|
-
|
|
410
|
-
# TODO we need a better way of handling backoffs currently the entire worker coroutine backs off
|
|
411
|
-
await asyncio.sleep(self._min_backoff_on_err)
|
|
412
|
-
action.increment_retries()
|
|
430
|
+
except flyte.errors.SlowDownError as e:
|
|
431
|
+
action.retries += 1
|
|
413
432
|
if action.retries > self._max_retries:
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
433
|
+
raise
|
|
434
|
+
backoff = min(self._min_backoff_on_err * (2 ** (action.retries - 1)), self._max_backoff_on_err)
|
|
435
|
+
logger.warning(
|
|
436
|
+
f"[{worker_id}] Backing off for {backoff} [retry {action.retries}/{self._max_retries}] "
|
|
437
|
+
f"on action {action.name} due to error: {e}"
|
|
438
|
+
)
|
|
439
|
+
await asyncio.sleep(backoff)
|
|
440
|
+
logger.warning(f"[{worker_id}] Retrying action {action.name} after backoff")
|
|
441
|
+
await self._shared_queue.put(action)
|
|
442
|
+
except Exception as e:
|
|
443
|
+
logger.error(f"[{worker_id}] Error in controller loop: {e}")
|
|
444
|
+
err = flyte.errors.RuntimeSystemError(
|
|
445
|
+
code=type(e).__name__,
|
|
446
|
+
message=f"Controller failed, system retries {action.retries} crossed threshold {self._max_retries}",
|
|
447
|
+
worker=worker_id,
|
|
448
|
+
)
|
|
449
|
+
err.__cause__ = e
|
|
450
|
+
action.set_client_error(err)
|
|
451
|
+
informer = await self._informers.get(
|
|
452
|
+
run_name=action.run_name,
|
|
453
|
+
parent_action_name=action.parent_action_name,
|
|
454
|
+
)
|
|
455
|
+
if informer:
|
|
456
|
+
await informer.fire_completion_event(action.name)
|
|
429
457
|
finally:
|
|
430
458
|
self._shared_queue.task_done()
|
|
431
459
|
|
|
@@ -132,8 +132,10 @@ class Informer:
|
|
|
132
132
|
parent_action_name: str,
|
|
133
133
|
shared_queue: Queue,
|
|
134
134
|
client: Optional[StateService] = None,
|
|
135
|
-
|
|
135
|
+
min_watch_backoff: float = 1.0,
|
|
136
|
+
max_watch_backoff: float = 30.0,
|
|
136
137
|
watch_conn_timeout_sec: float = 5.0,
|
|
138
|
+
max_watch_retries: int = 10,
|
|
137
139
|
):
|
|
138
140
|
self.name = self.mkname(run_name=run_id.name, parent_action_name=parent_action_name)
|
|
139
141
|
self.parent_action_name = parent_action_name
|
|
@@ -144,8 +146,10 @@ class Informer:
|
|
|
144
146
|
self._running = False
|
|
145
147
|
self._watch_task: asyncio.Task | None = None
|
|
146
148
|
self._ready = asyncio.Event()
|
|
147
|
-
self.
|
|
149
|
+
self._min_watch_backoff = min_watch_backoff
|
|
150
|
+
self._max_watch_backoff = max_watch_backoff
|
|
148
151
|
self._watch_conn_timeout_sec = watch_conn_timeout_sec
|
|
152
|
+
self._max_watch_retries = max_watch_retries
|
|
149
153
|
|
|
150
154
|
@classmethod
|
|
151
155
|
def mkname(cls, *, run_name: str, parent_action_name: str) -> str:
|
|
@@ -211,13 +215,16 @@ class Informer:
|
|
|
211
215
|
"""
|
|
212
216
|
# sentinel = False
|
|
213
217
|
retries = 0
|
|
214
|
-
max_retries = 5
|
|
215
218
|
last_exc = None
|
|
216
219
|
while self._running:
|
|
217
|
-
if retries >=
|
|
218
|
-
logger.error(
|
|
220
|
+
if retries >= self._max_watch_retries:
|
|
221
|
+
logger.error(
|
|
222
|
+
f"Informer watch failure retries crossed threshold {retries}/{self._max_watch_retries}, exiting!"
|
|
223
|
+
)
|
|
219
224
|
raise last_exc
|
|
220
225
|
try:
|
|
226
|
+
if retries >= 1:
|
|
227
|
+
logger.warning(f"Informer watch retrying, attempt {retries}/{self._max_watch_retries}")
|
|
221
228
|
watcher = self._client.Watch(
|
|
222
229
|
state_service_pb2.WatchRequest(
|
|
223
230
|
parent_action_id=identifier_pb2.ActionIdentifier(
|
|
@@ -252,7 +259,9 @@ class Informer:
|
|
|
252
259
|
logger.exception(f"Watch error: {self.name}", exc_info=e)
|
|
253
260
|
last_exc = e
|
|
254
261
|
retries += 1
|
|
255
|
-
|
|
262
|
+
backoff = min(self._min_watch_backoff * (2**retries), self._max_watch_backoff)
|
|
263
|
+
logger.warning(f"Watch for {self.name} failed, retrying in {backoff} seconds...")
|
|
264
|
+
await asyncio.sleep(backoff)
|
|
256
265
|
|
|
257
266
|
@log
|
|
258
267
|
async def start(self, timeout: Optional[float] = None) -> asyncio.Task:
|
flyte/_version.py
CHANGED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '2.0.
|
|
32
|
-
__version_tuple__ = version_tuple = (2, 0, 0, '
|
|
31
|
+
__version__ = version = '2.0.0b20'
|
|
32
|
+
__version_tuple__ = version_tuple = (2, 0, 0, 'b20')
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g5109b02e4'
|
flyte/errors.py
CHANGED
|
@@ -223,3 +223,12 @@ class RunAbortedError(RuntimeUserError):
|
|
|
223
223
|
|
|
224
224
|
def __init__(self, message: str):
|
|
225
225
|
super().__init__("RunAbortedError", message, "user")
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
class SlowDownError(RuntimeUserError):
|
|
229
|
+
"""
|
|
230
|
+
This error is raised when the user tries to access a resource that does not exist or is invalid.
|
|
231
|
+
"""
|
|
232
|
+
|
|
233
|
+
def __init__(self, message: str):
|
|
234
|
+
super().__init__("SlowDownError", message, "user")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flyte
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.0b20
|
|
4
4
|
Summary: Add your description here
|
|
5
5
|
Author-email: Ketan Umare <kumare3@users.noreply.github.com>
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -24,6 +24,7 @@ Requires-Dist: toml>=0.10.2
|
|
|
24
24
|
Requires-Dist: async-lru>=2.0.5
|
|
25
25
|
Requires-Dist: mashumaro
|
|
26
26
|
Requires-Dist: dataclasses_json
|
|
27
|
+
Requires-Dist: aiolimiter>=1.2.1
|
|
27
28
|
Dynamic: license-file
|
|
28
29
|
|
|
29
30
|
# Flyte 2 SDK 🚀
|
|
@@ -25,8 +25,8 @@ flyte/_task_plugins.py,sha256=9MH3nFPOH_e8_92BT4sFk4oyAnj6GJFvaPYWaraX7yE,1037
|
|
|
25
25
|
flyte/_timeout.py,sha256=zx5sFcbYmjJAJbZWSGzzX-BpC9HC7Jfs35T7vVhKwkk,1571
|
|
26
26
|
flyte/_tools.py,sha256=lB3OiJSAhxzSMCYjLUF6nZjlFsmNpaRXtr3_Fefcxbg,747
|
|
27
27
|
flyte/_trace.py,sha256=-BIprs2MbupWl3vsC_Pn33SV3fSVku1rUIsnwfmrIy0,5204
|
|
28
|
-
flyte/_version.py,sha256=
|
|
29
|
-
flyte/errors.py,sha256=
|
|
28
|
+
flyte/_version.py,sha256=DHBNTfUVjKbnarRHJH69S1E8D0BHxMGpAixhCbYE448,722
|
|
29
|
+
flyte/errors.py,sha256=k1-pgz7xm4syViJmPwp7ZDusmqcrlM2uZKrl0com_9I,6707
|
|
30
30
|
flyte/extend.py,sha256=GB4ZedGzKa30vYWRVPOdxEeK62xnUVFY4z2tD6H9eEw,376
|
|
31
31
|
flyte/models.py,sha256=dtaQyU4PhtEr5L39xwiPDVKSYuYKaArRfRNliIfPUf8,16207
|
|
32
32
|
flyte/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -50,12 +50,12 @@ flyte/_internal/__init__.py,sha256=vjXgGzAAjy609YFkAy9_RVPuUlslsHSJBXCLNTVnqOY,1
|
|
|
50
50
|
flyte/_internal/controllers/__init__.py,sha256=yNALzu-3YVii_D_GlrBoWUpL4PTLYUa7oIKnA7hbee0,4296
|
|
51
51
|
flyte/_internal/controllers/_local_controller.py,sha256=lXFvmxd_ctinJ5z4Fd_bZW0_LcOn0vc12F1try6uYgg,7308
|
|
52
52
|
flyte/_internal/controllers/_trace.py,sha256=ywFg_M2nGrCKYLbh4iVdsVlRtPT1K2S-XZMvDJU8AKU,1499
|
|
53
|
-
flyte/_internal/controllers/remote/__init__.py,sha256=
|
|
53
|
+
flyte/_internal/controllers/remote/__init__.py,sha256=EkDZ4gpp715M5CMnwpFh9s04jkWowndF9RqhXJ34yRA,1869
|
|
54
54
|
flyte/_internal/controllers/remote/_action.py,sha256=zYilKk3yq2jOxUm258xd4TRl1o3T2la4PXFc0xjcytI,7301
|
|
55
55
|
flyte/_internal/controllers/remote/_client.py,sha256=HPbzbfaWZVv5wpOvKNtFXR6COiZDwd1cUJQqi60A7oU,1421
|
|
56
|
-
flyte/_internal/controllers/remote/_controller.py,sha256=
|
|
57
|
-
flyte/_internal/controllers/remote/_core.py,sha256=
|
|
58
|
-
flyte/_internal/controllers/remote/_informer.py,sha256=
|
|
56
|
+
flyte/_internal/controllers/remote/_controller.py,sha256=Mp65OvENDfJ0CpwoAhb1ndCdrJ2hMIccwI0_t8xD7uU,25209
|
|
57
|
+
flyte/_internal/controllers/remote/_core.py,sha256=5qIGFNTilJwtYLQ_KQoawLQ172ih-uH6MfrQKVXqd8k,20828
|
|
58
|
+
flyte/_internal/controllers/remote/_informer.py,sha256=M2uqfe0oz9ySkYK94UFLoTPRt9UoaYQKzmy4lrVOchY,14912
|
|
59
59
|
flyte/_internal/controllers/remote/_service_protocol.py,sha256=B9qbIg6DiGeac-iSccLmX_AL2xUgX4ezNUOiAbSy4V0,1357
|
|
60
60
|
flyte/_internal/imagebuild/__init__.py,sha256=dwXdJ1jMhw9RF8itF7jkPLanvX1yCviSns7hE5eoIts,102
|
|
61
61
|
flyte/_internal/imagebuild/docker_builder.py,sha256=qzKqicgGpWB6wC2DYTc4yh5LJT_hbQ7nacIqnx4bkOQ,21595
|
|
@@ -238,11 +238,11 @@ flyte/types/_renderer.py,sha256=ygcCo5l60lHufyQISFddZfWwLlQ8kJAKxUT_XnR_6dY,4818
|
|
|
238
238
|
flyte/types/_string_literals.py,sha256=NlG1xV8RSA-sZ-n-IFQCAsdB6jXJOAKkHWtnopxVVDk,4231
|
|
239
239
|
flyte/types/_type_engine.py,sha256=IwBdBXr3sso2Y-ZMiIBmXmczfI7GyJMpThXDuQiOqco,94951
|
|
240
240
|
flyte/types/_utils.py,sha256=pbts9E1_2LTdLygAY0UYTLYJ8AsN3BZyviSXvrtcutc,2626
|
|
241
|
-
flyte-2.0.
|
|
242
|
-
flyte-2.0.
|
|
243
|
-
flyte-2.0.
|
|
244
|
-
flyte-2.0.
|
|
245
|
-
flyte-2.0.
|
|
246
|
-
flyte-2.0.
|
|
247
|
-
flyte-2.0.
|
|
248
|
-
flyte-2.0.
|
|
241
|
+
flyte-2.0.0b20.data/scripts/debug.py,sha256=hnX2tlv9QbqckoT5CJ3c3apJj3tGDpsrdV7ZAsE7j34,911
|
|
242
|
+
flyte-2.0.0b20.data/scripts/runtime.py,sha256=CoMgKQ_pBifnHsNF1MlBGmMrenrKXuMIHTLRF7MKDfA,6193
|
|
243
|
+
flyte-2.0.0b20.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
244
|
+
flyte-2.0.0b20.dist-info/METADATA,sha256=J44ZHZJFMHKtBfaCx69-eDwqCklCBSgS64uKMJqtfz4,10045
|
|
245
|
+
flyte-2.0.0b20.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
246
|
+
flyte-2.0.0b20.dist-info/entry_points.txt,sha256=MIq2z5dBurdCJfpXfMKzgBv7sJOakKRYxr8G0cMiTrg,75
|
|
247
|
+
flyte-2.0.0b20.dist-info/top_level.txt,sha256=7dkyFbikvA12LEZEqawx8oDG1CMod6hTliPj7iWzgYo,6
|
|
248
|
+
flyte-2.0.0b20.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|