flyte 0.2.0b4__py3-none-any.whl → 0.2.0b7__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 (42) hide show
  1. flyte/__init__.py +2 -1
  2. flyte/_build.py +3 -2
  3. flyte/_code_bundle/_utils.py +0 -16
  4. flyte/_code_bundle/bundle.py +1 -1
  5. flyte/_deploy.py +4 -4
  6. flyte/_initialize.py +69 -26
  7. flyte/_internal/controllers/remote/_core.py +1 -1
  8. flyte/_protos/workflow/common_pb2.py +27 -0
  9. flyte/_protos/workflow/common_pb2.pyi +14 -0
  10. flyte/_protos/workflow/common_pb2_grpc.py +4 -0
  11. flyte/_protos/workflow/run_definition_pb2.py +14 -14
  12. flyte/_protos/workflow/run_definition_pb2.pyi +4 -2
  13. flyte/_protos/workflow/task_definition_pb2.py +14 -13
  14. flyte/_protos/workflow/task_definition_pb2.pyi +7 -3
  15. flyte/_run.py +7 -5
  16. flyte/_trace.py +1 -6
  17. flyte/_version.py +2 -2
  18. flyte/cli/_common.py +23 -15
  19. flyte/cli/_run.py +12 -6
  20. flyte/cli/main.py +15 -9
  21. flyte/config/__init__.py +2 -189
  22. flyte/config/_config.py +181 -172
  23. flyte/config/_internal.py +1 -1
  24. flyte/config/_reader.py +207 -0
  25. flyte/io/_dir.py +2 -2
  26. flyte/io/_file.py +1 -4
  27. flyte/remote/_data.py +3 -3
  28. flyte/remote/_logs.py +49 -26
  29. flyte/remote/_project.py +8 -9
  30. flyte/remote/_run.py +106 -61
  31. flyte/remote/_secret.py +12 -12
  32. flyte/remote/_task.py +3 -3
  33. flyte/report/_report.py +4 -4
  34. flyte/syncify/__init__.py +5 -0
  35. flyte/syncify/_api.py +277 -0
  36. flyte-0.2.0b7.dist-info/METADATA +156 -0
  37. {flyte-0.2.0b4.dist-info → flyte-0.2.0b7.dist-info}/RECORD +40 -35
  38. flyte/_api_commons.py +0 -3
  39. flyte-0.2.0b4.dist-info/METADATA +0 -179
  40. {flyte-0.2.0b4.dist-info → flyte-0.2.0b7.dist-info}/WHEEL +0 -0
  41. {flyte-0.2.0b4.dist-info → flyte-0.2.0b7.dist-info}/entry_points.txt +0 -0
  42. {flyte-0.2.0b4.dist-info → flyte-0.2.0b7.dist-info}/top_level.txt +0 -0
flyte/syncify/_api.py ADDED
@@ -0,0 +1,277 @@
1
+ from __future__ import annotations
2
+
3
+ import asyncio
4
+ import atexit
5
+ import concurrent.futures
6
+ import inspect
7
+ import threading
8
+ from typing import (
9
+ Any,
10
+ AsyncIterator,
11
+ Awaitable,
12
+ Callable,
13
+ Coroutine,
14
+ Iterator,
15
+ ParamSpec,
16
+ Protocol,
17
+ Type,
18
+ TypeVar,
19
+ Union,
20
+ cast,
21
+ overload,
22
+ )
23
+
24
+ P = ParamSpec("P")
25
+ R_co = TypeVar("R_co", covariant=True)
26
+ T = TypeVar("T")
27
+
28
+
29
+ class SyncFunction(Protocol[P, R_co]):
30
+ """
31
+ A protocol that defines the interface for synchronous functions or methods that can be converted from asynchronous
32
+ ones.
33
+ """
34
+
35
+ def __call__(self, *args: Any, **kwargs: Any) -> R_co: ...
36
+
37
+ def aio(self, *args: Any, **kwargs: Any) -> Awaitable[R_co]: ...
38
+
39
+
40
+ class SyncGenFunction(Protocol[P, R_co]):
41
+ """
42
+ A protocol that defines the interface for synchronous functions or methods that can be converted from asynchronous
43
+ ones.
44
+ """
45
+
46
+ def __call__(self, *args: Any, **kwargs: Any) -> Iterator[R_co]: ...
47
+
48
+ def aio(self, *args: Any, **kwargs: Any) -> AsyncIterator[R_co]: ...
49
+
50
+
51
+ class _BackgroundLoop:
52
+ """
53
+ A background event loop that runs in a separate thread and used the the Syncify decorator to run asynchronous
54
+ functions or methods synchronously.
55
+ """
56
+
57
+ def __init__(self):
58
+ self.loop = None
59
+ self.thread = threading.Thread(name="syncify_bg", target=self._run, daemon=True)
60
+ self.thread.start()
61
+ atexit.register(self.stop)
62
+
63
+ def _run(self):
64
+ self.loop = asyncio.new_event_loop()
65
+ asyncio.set_event_loop(self.loop)
66
+ self.loop.run_forever()
67
+
68
+ def stop(self):
69
+ # stop the loop and wait briefly for thread to exit
70
+ self.loop.call_soon_threadsafe(self.loop.stop)
71
+ self.thread.join(timeout=1)
72
+
73
+ def is_in_loop(self) -> bool:
74
+ """
75
+ Check if the current thread is the background loop thread.
76
+ """
77
+ # If the current thread is not the background loop thread, return False
78
+ if threading.current_thread() != self.thread:
79
+ return False
80
+
81
+ if not self.thread.is_alive():
82
+ # If the thread is not alive, we cannot be in the loop
83
+ return False
84
+
85
+ # Lets get the current event loop and check if it matches the background loop
86
+ loop = None
87
+ try:
88
+ loop = asyncio.get_running_loop()
89
+ except RuntimeError:
90
+ pass
91
+
92
+ return loop == self.loop
93
+
94
+ def iterate_in_loop_sync(self, async_gen: AsyncIterator[R_co]) -> Iterator[R_co]:
95
+ # Create an iterator that pulls items from the async generator
96
+ assert self.thread.name != threading.current_thread().name, "Cannot run coroutine in the same thread"
97
+ while True:
98
+ try:
99
+ # use __anext__() and cast to Coroutine so mypy is happy
100
+ future: concurrent.futures.Future[R_co] = asyncio.run_coroutine_threadsafe(
101
+ cast(Coroutine[Any, Any, R_co], async_gen.__anext__()),
102
+ self.loop,
103
+ )
104
+ yield future.result()
105
+ except (StopAsyncIteration, StopIteration):
106
+ break
107
+
108
+ def call_in_loop_sync(self, coro: Coroutine[Any, Any, R_co]) -> R_co:
109
+ """
110
+ Run the given coroutine in the background loop and return its result.
111
+ """
112
+ future: concurrent.futures.Future[R_co] = asyncio.run_coroutine_threadsafe(coro, self.loop)
113
+ return future.result()
114
+
115
+ async def iterate_in_loop(self, async_gen: AsyncIterator[R_co]) -> AsyncIterator[R_co]:
116
+ """
117
+ Run the given async iterator in the background loop and yield its results.
118
+ """
119
+ if self.is_in_loop():
120
+ # If we are already in the background loop, just return the async iterator
121
+ async for r in async_gen:
122
+ yield r
123
+ return
124
+
125
+ while True:
126
+ try:
127
+ # same replacement here for the async path
128
+ future: concurrent.futures.Future[R_co] = asyncio.run_coroutine_threadsafe(
129
+ cast(Coroutine[Any, Any, R_co], async_gen.__anext__()),
130
+ self.loop,
131
+ )
132
+ # Wrap the future in an asyncio Future to yield it in an async context
133
+ aio_future: asyncio.Future[R_co] = asyncio.wrap_future(future)
134
+ # await for the future to complete and yield its result
135
+ yield await aio_future
136
+ except StopAsyncIteration:
137
+ break
138
+
139
+ async def aio(self, coro: Coroutine[Any, Any, R_co]) -> R_co:
140
+ """
141
+ Run the given coroutine in the background loop and return its result.
142
+ """
143
+ if self.is_in_loop():
144
+ # If we are already in the background loop, just run the coroutine
145
+ return await coro
146
+ # Otherwise, run it in the background loop and wait for the result
147
+ future: concurrent.futures.Future[R_co] = asyncio.run_coroutine_threadsafe(coro, self.loop)
148
+ # Wrap the future in an asyncio Future to await it in an async context
149
+ aio_future: asyncio.Future[R_co] = asyncio.wrap_future(future)
150
+ # await for the future to complete and return its result
151
+ return await aio_future
152
+
153
+
154
+ class _SyncWrapper:
155
+ """
156
+ A wrapper class that the Syncify decorator uses to convert asynchronous functions or methods into synchronous ones.
157
+ """
158
+
159
+ def __init__(
160
+ self,
161
+ fn: Any,
162
+ bg_loop: _BackgroundLoop,
163
+ instance: Any = None,
164
+ owner: Type | None = None,
165
+ underlying_obj: Any = None,
166
+ ):
167
+ self.fn = fn
168
+ self._bg_loop = bg_loop
169
+ self._underlying_obj = underlying_obj
170
+
171
+ def __call__(self, *args: Any, **kwargs: Any) -> Any:
172
+ # bind method if needed
173
+ coro_fn = self.fn
174
+
175
+ if inspect.isasyncgenfunction(coro_fn):
176
+ # Handle async iterator by converting to sync iterator
177
+ async_gen = coro_fn(*args, **kwargs)
178
+ return self._bg_loop.iterate_in_loop_sync(async_gen)
179
+ else:
180
+ return self._bg_loop.call_in_loop_sync(coro_fn(*args, **kwargs))
181
+
182
+ def __get__(self, instance: Any, owner: Any) -> Any:
183
+ """
184
+ This method is called when the wrapper is accessed as a method of a class instance.
185
+ :param instance:
186
+ :param owner:
187
+ :return:
188
+ """
189
+ fn: Any = self.fn
190
+ if instance is not None:
191
+ # If we have an instance, we need to bind the method to the instance (for instance methods)
192
+ fn = self.fn.__get__(instance, owner)
193
+
194
+ if instance is None and owner is not None and self._underlying_obj is not None:
195
+ # If we have an owner, we need to bind the method to the owner (for classmethods or staticmethods)
196
+ fn = self._underlying_obj.__get__(None, owner)
197
+
198
+ return _SyncWrapper(fn, bg_loop=self._bg_loop, underlying_obj=self._underlying_obj)
199
+
200
+ def aio(self, *args: Any, **kwargs: Any) -> Any:
201
+ fn = self.fn
202
+
203
+ if inspect.isasyncgenfunction(fn):
204
+ # If the function is an async generator, we need to handle it differently
205
+ async_iter = fn(*args, **kwargs)
206
+ return self._bg_loop.iterate_in_loop(async_iter)
207
+ else:
208
+ # If we are already in the background loop, just return the coroutine
209
+ coro = fn(*args, **kwargs)
210
+ if hasattr(coro, "__aiter__"):
211
+ # If the coroutine is an async iterator, we need to handle it differently
212
+ return self._bg_loop.iterate_in_loop(coro)
213
+ return self._bg_loop.aio(coro)
214
+
215
+
216
+ class Syncify:
217
+ """
218
+ A decorator to convert asynchronous functions or methods into synchronous ones.
219
+
220
+ This is useful for integrating async code into synchronous contexts.
221
+
222
+ Example::
223
+
224
+ ```python
225
+ syncer = Syncify()
226
+
227
+ @syncer
228
+ async def async_function(x: str) -> str:
229
+ return f"Hello, Async World {x}!"
230
+
231
+
232
+ # now you can call it synchronously
233
+ result = async_function("Async World")
234
+ print(result)
235
+ # Output: Hello, Async World Async World!
236
+
237
+ # or call it asynchronously
238
+ async def main():
239
+ result = await async_function.aio("World")
240
+ print(result)
241
+ ```
242
+
243
+ """
244
+
245
+ def __init__(self):
246
+ self._bg_loop = _BackgroundLoop()
247
+
248
+ @overload
249
+ def __call__(self, func: Callable[P, Awaitable[R_co]]) -> Any: ...
250
+
251
+ # def __call__(self, func: Callable[P, Awaitable[R_co]]) -> SyncFunction[P, R_co]: ...
252
+
253
+ @overload
254
+ def __call__(self, func: Callable[P, Iterator[R_co] | AsyncIterator[R_co]]) -> SyncGenFunction[P, R_co]: ...
255
+
256
+ # def __call__(self, func: Callable[[Type[T], *P.args, *P.kwargs], Awaitable[R_co]])
257
+ # -> SyncFunction[[Type[T], *P.args, *P.kwargs], R_co]: ...
258
+ @overload
259
+ def __call__(self, func: classmethod) -> Union[SyncFunction[P, R_co], SyncGenFunction[P, R_co]]: ...
260
+
261
+ @overload
262
+ def __call__(self, func: staticmethod) -> staticmethod: ...
263
+
264
+ def __call__(self, obj):
265
+ if isinstance(obj, classmethod):
266
+ return _SyncWrapper(obj.__func__, bg_loop=self._bg_loop, underlying_obj=obj)
267
+ if isinstance(obj, staticmethod):
268
+ return staticmethod(cast(Any, _SyncWrapper(obj.__func__, bg_loop=self._bg_loop)))
269
+ if inspect.isasyncgenfunction(obj):
270
+ # If the function is an async generator, we need to handle it differently
271
+ return cast(Callable[P, Iterator[R_co]], _SyncWrapper(obj, bg_loop=self._bg_loop))
272
+ if inspect.iscoroutinefunction(obj):
273
+ # If the function is a coroutine, we can wrap it directly
274
+ return _SyncWrapper(obj, bg_loop=self._bg_loop)
275
+ raise TypeError(
276
+ "Syncify can only be applied to async functions, async generators, async classmethods or staticmethods."
277
+ )
@@ -0,0 +1,156 @@
1
+ Metadata-Version: 2.4
2
+ Name: flyte
3
+ Version: 0.2.0b7
4
+ Summary: Add your description here
5
+ Author-email: Ketan Umare <kumare3@users.noreply.github.com>
6
+ Requires-Python: >=3.10
7
+ Description-Content-Type: text/markdown
8
+ Requires-Dist: aiofiles>=24.1.0
9
+ Requires-Dist: click>=8.2.1
10
+ Requires-Dist: flyteidl==1.15.4b0
11
+ Requires-Dist: cloudpickle>=3.1.1
12
+ Requires-Dist: fsspec>=2025.3.0
13
+ Requires-Dist: grpcio>=1.71.0
14
+ Requires-Dist: obstore>=0.6.0
15
+ Requires-Dist: protobuf>=6.30.1
16
+ Requires-Dist: pydantic>=2.10.6
17
+ Requires-Dist: pyyaml>=6.0.2
18
+ Requires-Dist: rich-click>=1.8.9
19
+ Requires-Dist: httpx>=0.28.1
20
+ Requires-Dist: keyring>=25.6.0
21
+ Requires-Dist: msgpack>=1.1.0
22
+ Requires-Dist: toml>=0.10.2
23
+ Requires-Dist: async-lru>=2.0.5
24
+ Requires-Dist: mashumaro
25
+ Requires-Dist: dataclasses_json
26
+
27
+ # Flyte 2
28
+
29
+ Next-gen of SDK for Flyte.
30
+
31
+ ## Get started
32
+
33
+ 1. Only async tasks are supported right now. Style recommended, `import flyte` and then `flyte.TaskEnvironment` etc
34
+ 2. You have to create environment for even a single task
35
+ 3. look at examples/... for various examples.
36
+ 4. For a single script recommend using uv run scripts with metadata headers.
37
+
38
+
39
+ ```python
40
+ import flyte
41
+
42
+ env = flyte.TaskEnvironment(name="hello_world")
43
+
44
+
45
+ @env.task
46
+ async def say_hello(data: str) -> str:
47
+ return f"Hello {data}"
48
+
49
+
50
+ @env.task
51
+ async def say_hello_nested(data: str) -> str:
52
+ return await say_hello.override(resources=flyte.Resources(gpu="A100 80G:4")).execute(data)
53
+
54
+
55
+ if __name__ == "__main__":
56
+ import asyncio
57
+
58
+ # to run pure python - the SDK is not invoked at all
59
+ asyncio.run(say_hello_nested("test"))
60
+
61
+ # To run locally, but run through type system etc
62
+ flyte.init()
63
+ flyte.run(say_hello_nested, "World")
64
+
65
+ # To run remote
66
+ flyte.init(endpoint="dns:///localhost:8090", insecure=True)
67
+ flyte.run(say_hello_nested, "World")
68
+ # It is possible to switch local and remote, but keeping init to have and endpoint, but , changing context during run
69
+ flyte.with_runcontext(mode="local").run(...) # this will run locally only
70
+
71
+ # To run remote with a config
72
+ flyte.init_auto_from_config("config.yaml")
73
+ ```
74
+
75
+ # CLI
76
+ All commands can be run from any root directory.
77
+ For examples, it is not needed to have `__init__.py` in the directory. If you run from a directory, the
78
+ code will automatically package and upload all modules that are imported. You can change the behaviour by using --copy-style flag.
79
+
80
+ ```bash
81
+ flyte run examples/basics/devbox_one.py say_hello --data "World"
82
+ ```
83
+
84
+ To Follow the logs for the a0 action, you can use the `--follow` flag:
85
+
86
+ ```bash
87
+ flyte run --follow examples/basics/devbox_one.py say_hello --data "World"
88
+ ```
89
+ Note follow has to be used with `run` command
90
+
91
+ Change copy style
92
+ ```bash
93
+ flyte run --copy-style examples/basics/devbox_one.py say_hello_nested --data "World"
94
+ ```
95
+
96
+ # Building Images
97
+ ```python
98
+
99
+ import flyte
100
+
101
+ env = flyte.TaskEnvironment(
102
+ name="hello_world",
103
+ image=flyte.Image.auto().with_apt_packages(...).with_pip_packages(...),
104
+ )
105
+
106
+ ```
107
+
108
+ ### Deploy
109
+ ```bash
110
+ flyte deploy examples/basics/devbox_one.py say_hello_nested
111
+ ```
112
+
113
+ CLI shortcuts
114
+
115
+ Get runs
116
+ ```bash
117
+ flyte get run
118
+ ```
119
+ Get specific run
120
+ ```bash
121
+ flyte get run "run-name"
122
+ ```
123
+
124
+ Get run actions
125
+ ```bash
126
+ flyte get actions "run-name"
127
+ ```
128
+
129
+ Get specific action
130
+ ```bash
131
+ flyte get action "run-name" "action-name"
132
+ ```
133
+
134
+ Get action logs
135
+ ```bash
136
+ flyte get logs "run-name" ["action-name"]
137
+ ```
138
+ defaults to root action if no action name is provided
139
+
140
+
141
+ you can run any python script directly within the script module using __main__:
142
+
143
+ ```python
144
+ if __name__ == "__main__":
145
+ import flyte
146
+ flyte.init()
147
+ flyte.run(say_hello_nested, "World")
148
+ ```
149
+
150
+ You can also run from cli
151
+
152
+ you can Also run a uv script with metadata headers:
153
+
154
+ ```bash
155
+ uv run scripts / hello_world.py
156
+ ```
@@ -1,28 +1,27 @@
1
- flyte/__init__.py,sha256=5rPeSCWYJSKbqbiCx4cjPW0728c7ow-aogoXLaHGhFg,1340
2
- flyte/_api_commons.py,sha256=9drgP2Qgr8rdDmZlI31TEpa056zCBiI1tAMO001SQ8o,64
3
- flyte/_build.py,sha256=MVBM-i2rCxHhIFQCR-Tc0JMA2XuJ5r4UZBW4M7HRvSw,580
1
+ flyte/__init__.py,sha256=gqNaDkBPRGcOC0BbTbgHYatkttjVJljjEKoULmswQ0Q,1392
2
+ flyte/_build.py,sha256=MkgfLAPeL56YeVrGRNZUCZgbwzlEzVP3wLbl5Qru4yk,578
4
3
  flyte/_context.py,sha256=pYa43ut8gp6i-Y_zOy1WW_N2IbP9Vd-zIORO11vqK1E,4995
5
- flyte/_deploy.py,sha256=xYSSA5Sqj79ePCLNid07-j3L28hn2arLAnK15FigE28,7725
4
+ flyte/_deploy.py,sha256=hHZKLU3U7t1ZF_8x6LykkPu_KSDyaHL3f2WzyjLj9BQ,7723
6
5
  flyte/_doc.py,sha256=_OPCf3t_git6UT7kSJISFaWO9cfNzJhhoe6JjVdyCJo,706
7
6
  flyte/_docstring.py,sha256=SsG0Ab_YMAwy2ABJlEo3eBKlyC3kwPdnDJ1FIms-ZBQ,1127
8
7
  flyte/_environment.py,sha256=ft0EsyFg6OnoIFPFbwkABLcq676veIH3TTR4SNilrj8,1499
9
8
  flyte/_group.py,sha256=64q2GFDp3koIkx3IV4GBeGEbu4v-GPUxTlxU_sV2fPk,743
10
9
  flyte/_hash.py,sha256=Of_Zl_DzzzF2jp4ZsLm-3o-xJFCCJ8_GubmLI1htx78,504
11
10
  flyte/_image.py,sha256=8xEGmAALY6jQAsLfJQH9NweeVUaSTWivFEQt-JchN24,29068
12
- flyte/_initialize.py,sha256=l7nSK7yZwJtmt4mBphFUUq4GDElrFyAMia7uxaC8O9o,15204
11
+ flyte/_initialize.py,sha256=ihTIvoMHs67UKbtFLR_zy9M1e7OK26ywoc_yMfLYwMw,16499
13
12
  flyte/_interface.py,sha256=MP5o_qpIwfBNtAc7zo_cLSjMugsPyanuO6EgUSk4fBE,3644
14
13
  flyte/_logging.py,sha256=FQvF3W1kkFypbARcOQ7WZVXO0XJasXp8EhozF6E6-aQ,3379
15
14
  flyte/_resources.py,sha256=UOLyEVhdxolvrHhddiBbYdJuE1RkM_l7xeS9G1abe6M,7583
16
15
  flyte/_retry.py,sha256=rfLv0MvWxzPByKESTglEmjPsytEAKiIvvmzlJxXwsfE,941
17
16
  flyte/_reusable_environment.py,sha256=P4FBATVKAYcIKpdFN98sI8acPyKy8eIGx6V0kUb9YdM,1289
18
- flyte/_run.py,sha256=s3m3VChDj4ge3pYoGx-QBlRqyizUBA9tDWMdvy3LlVE,17630
17
+ flyte/_run.py,sha256=2ugAk4tpvSAnNAlfhx4YysSrdFoce-hZHQ6XMHYxp0A,17783
19
18
  flyte/_secret.py,sha256=SqIHs6mi8hEkIIBZe3bI9jJsPt65Mt6dV5uh9_op1ME,2392
20
19
  flyte/_task.py,sha256=cqWfbMDMkEg1Q0sOkaSi1h_9Vn81DbGCOgNFZo8bMfI,14622
21
20
  flyte/_task_environment.py,sha256=svSJJMEiiYsqz403s_urMgPdjguHJJSGVuBobT3uwVo,8403
22
21
  flyte/_timeout.py,sha256=zx5sFcbYmjJAJbZWSGzzX-BpC9HC7Jfs35T7vVhKwkk,1571
23
22
  flyte/_tools.py,sha256=JewkQZBR_M85tS6QY8e4xXue75jbOE48nID4ZHnc9jY,632
24
- flyte/_trace.py,sha256=sXSlOvHsT32YhNjgCCLAY8lwmzXGSAgaS7nvoy9msWU,5441
25
- flyte/_version.py,sha256=XacSWiz9tAQaNJJWLmZnR0HoJ4NOWwq4HN54fRFaloI,519
23
+ flyte/_trace.py,sha256=7OQtQNosIlycTwaMjdc3GW4h3T3N0bYTsY6og4clPl8,5234
24
+ flyte/_version.py,sha256=aew4sh3XJsC-oHvLUBV1yrPYnRPf3pvzP7MaVQdQXzs,519
26
25
  flyte/errors.py,sha256=m2JUNqLC6anVW6UiDK_ihuA06q_Hkw1mIUMDskb2OW8,4289
27
26
  flyte/models.py,sha256=GTRuR6GXc0RAbLmPEnnH54oRF7__2TNFhmYjFoYMjZA,12660
28
27
  flyte/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -35,8 +34,8 @@ flyte/_cache/policy_function_body.py,sha256=_AcyN6XKRXq16yV5lWuRJYCIVUlmyPvvWuYR
35
34
  flyte/_code_bundle/__init__.py,sha256=G7DJTQ0UN_ETvdh55pYcWsTrZJKXEcyQl9iQQNQOBXQ,328
36
35
  flyte/_code_bundle/_ignore.py,sha256=Tfaoa62CQVTH17kBHD6Xv6xEh1FhcAyvXivl9m-MEE0,3853
37
36
  flyte/_code_bundle/_packaging.py,sha256=_wEozcQTYgqvAAaKQYna9ptvShIMlXk3vEdccwAOYn8,6873
38
- flyte/_code_bundle/_utils.py,sha256=jdGsKLN12gdjqWq8ZGXeLPGQ6InhrK4iY9UB-IGDTo0,12583
39
- flyte/_code_bundle/bundle.py,sha256=oh9xyONlw-sPUYc50kzrDd7jY1n4DgpvX25LlITdvOY,8788
37
+ flyte/_code_bundle/_utils.py,sha256=b0s3ZVKSRwaa_2CMTCqt2iRrUvTTW3FmlyqCD9k5BS0,12028
38
+ flyte/_code_bundle/bundle.py,sha256=8T0gcXck6dmg-8L2-0G3B2iNjC-Xwydu806iyKneMMY,8789
40
39
  flyte/_internal/__init__.py,sha256=vjXgGzAAjy609YFkAy9_RVPuUlslsHSJBXCLNTVnqOY,136
41
40
  flyte/_internal/controllers/__init__.py,sha256=qaawXUgYdC5yHh5JfQ9mCH3u9a7oTYriDChADekzuzo,3750
42
41
  flyte/_internal/controllers/_local_controller.py,sha256=wTrJitUZMKodvvZMiy4bQbmIv0doF8Pb-OCsa8lAHgA,4708
@@ -45,7 +44,7 @@ flyte/_internal/controllers/remote/__init__.py,sha256=9_azH1eHLqY6VULpDugXi7Kf1k
45
44
  flyte/_internal/controllers/remote/_action.py,sha256=w6vE1vPz1BwxvwfotDWjTNbDXfGEPrRBA8N3UVQ6P0w,4905
46
45
  flyte/_internal/controllers/remote/_client.py,sha256=HPbzbfaWZVv5wpOvKNtFXR6COiZDwd1cUJQqi60A7oU,1421
47
46
  flyte/_internal/controllers/remote/_controller.py,sha256=uqZYQDGG70DeJiqAU4y7n7VhXQ0gvD4ktWu15-zg86I,17387
48
- flyte/_internal/controllers/remote/_core.py,sha256=-EJEu3D4QFXtRmLBUBIKucWsYeuRbSLHmwllTgs3HAs,18091
47
+ flyte/_internal/controllers/remote/_core.py,sha256=2dka1rDnA8Ui_qhfE1ymZuN8E2BYQPn123h_eMixSiM,18091
49
48
  flyte/_internal/controllers/remote/_informer.py,sha256=6WPaT1EmDcIwQ3VlujGWICzHy-kaGhMut_zBh2ShZnE,14186
50
49
  flyte/_internal/controllers/remote/_service_protocol.py,sha256=B9qbIg6DiGeac-iSccLmX_AL2xUgX4ezNUOiAbSy4V0,1357
51
50
  flyte/_internal/imagebuild/__init__.py,sha256=cLXVxkAyFpbdC1y-k3Rb6FRW9f_xpoRQWVn__G9IqKs,354
@@ -100,14 +99,17 @@ flyte/_protos/secret/secret_pb2.pyi,sha256=gQ2SbW8J93TB2i4c7FjsrJdj38rlhLmdY1T3k
100
99
  flyte/_protos/secret/secret_pb2_grpc.py,sha256=3DOSlIwXhKUn_Kvsv3V6Hmnge1NgtZUI2V_wYOl3aak,9085
101
100
  flyte/_protos/secret/secret_pb2_grpc_grpc.py,sha256=3DOSlIwXhKUn_Kvsv3V6Hmnge1NgtZUI2V_wYOl3aak,9085
102
101
  flyte/_protos/validate/validate/validate_pb2.py,sha256=yJOyUdZVPAVOSvo8uNgynvObiS-fQFYJE97KilJnLZA,13409
102
+ flyte/_protos/workflow/common_pb2.py,sha256=NmukAKm8cxBvxYrZ7VuARExi5M5SB0mcP1AxSkq7n5E,1812
103
+ flyte/_protos/workflow/common_pb2.pyi,sha256=h69_9esVb6NRD5QNC-ahv7IbjxH77UrT9M9wvqbcjSA,652
104
+ flyte/_protos/workflow/common_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
103
105
  flyte/_protos/workflow/node_execution_service_pb2.py,sha256=IOLg3tNikY7n00kLOVsC69yyXc5Ttnx-_-xUuc0q05Q,1654
104
106
  flyte/_protos/workflow/node_execution_service_pb2.pyi,sha256=C7VVuw_bnxp68qemD3SLoGIL-Hmno6qkIoq3l6W2qb8,135
105
107
  flyte/_protos/workflow/node_execution_service_pb2_grpc.py,sha256=2JJDS3Aww3FFDW-qYdTaxC75gRpsgnn4an6LPZmF9uA,947
106
108
  flyte/_protos/workflow/queue_service_pb2.py,sha256=FuphK-Fy5kCjk9rLmQpD45-P9YS4B4aG8v7DEoF2XtE,11993
107
109
  flyte/_protos/workflow/queue_service_pb2.pyi,sha256=qSCS0NyNRfNSjPuAlmVRprD4Be9d9rJNP6Of8lNsKGM,7819
108
110
  flyte/_protos/workflow/queue_service_pb2_grpc.py,sha256=6KK87jYXrmK0jacf4AKhHp21QU9JFJPOiEBjbDRkBm0,7839
109
- flyte/_protos/workflow/run_definition_pb2.py,sha256=fpQ5VYWAlOFN4cnH4BRh64xpXHUed8r4NgQr5OlZ27c,16019
110
- flyte/_protos/workflow/run_definition_pb2.pyi,sha256=toTdsCzHF2aIei6d_r0bwEUkUpMy1u0c9pMsBfL-wfY,15140
111
+ flyte/_protos/workflow/run_definition_pb2.py,sha256=U8n2q4G63sxdbdYXtIV65Kpjx3Q-ZDAagjt_qEsPKiI,16078
112
+ flyte/_protos/workflow/run_definition_pb2.pyi,sha256=ttY8nwp6Jq_8C_VpE08KSF2N9lZhnXYRH5sG1iNSTi8,15259
111
113
  flyte/_protos/workflow/run_definition_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
112
114
  flyte/_protos/workflow/run_logs_service_pb2.py,sha256=MKG9keauunf7EmIrlthQKgXrQAfMjbX9LyeBMlLhK30,3358
113
115
  flyte/_protos/workflow/run_logs_service_pb2.pyi,sha256=88_Qp-qQh9PSUUPSsyuawc9gBi9_4OEbnp37cgH1VGE,1534
@@ -118,8 +120,8 @@ flyte/_protos/workflow/run_service_pb2_grpc.py,sha256=tO1qnrD5_0KrtToCIcuseVhkQN
118
120
  flyte/_protos/workflow/state_service_pb2.py,sha256=xDEak38Egukk2yR4kr7Y7y-SsL4Y1rCnPN-FiGmmYsM,5785
119
121
  flyte/_protos/workflow/state_service_pb2.pyi,sha256=S3oEFSPHem-t7ySb2UGcWjmf-QK7gFG2rNCWAiIwzGk,3545
120
122
  flyte/_protos/workflow/state_service_pb2_grpc.py,sha256=E5yH8ZHNWUBFJkvsvqgX7ZmVU45UmbaHZynHGcQUd70,5801
121
- flyte/_protos/workflow/task_definition_pb2.py,sha256=x-q44ATxHCswazGEHUbWfpvsl4UoMcs49FvZBx4v58M,6567
122
- flyte/_protos/workflow/task_definition_pb2.pyi,sha256=sw1JLQR7Rz1PUogtbPlp4VPGkNZeOmc_aNAqlZdPIFA,2917
123
+ flyte/_protos/workflow/task_definition_pb2.py,sha256=CmAhYoED4Dms4bxPxC-_9_dXvlyAtqxPTnJ4n-A1Irg,6786
124
+ flyte/_protos/workflow/task_definition_pb2.pyi,sha256=f1H0pTLvqlUTCtXVyPWgJ4HSNtAtJ6BgP2N6XbArRfY,3312
123
125
  flyte/_protos/workflow/task_definition_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
124
126
  flyte/_protos/workflow/task_service_pb2.py,sha256=lY1MamKB9kNprHpBm1zQkeg25aTItXARu7Ta7rxzlB8,3787
125
127
  flyte/_protos/workflow/task_service_pb2.pyi,sha256=YY9pajzA_eF_xMHgVQMvThNI0QYulgfLn1741IYo8tI,1495
@@ -134,24 +136,25 @@ flyte/_utils/lazy_module.py,sha256=fvXPjvZLzCfcI8Vzs4pKedUDdY0U_RQ1ZVrp9b8qBQY,1
134
136
  flyte/_utils/uv_script_parser.py,sha256=PxqD8lSMi6xv0uDd1s8LKB2IPZr4ttZJCUweqlyMTKk,1483
135
137
  flyte/cli/__init__.py,sha256=Hx_mrERToVkrvORPB56ZnUED86T4S50ac1nwLQfvsgo,278
136
138
  flyte/cli/_abort.py,sha256=WkXmjAOcrBU9NXXndcwF7YW7QcUTJzyUrvIRW0fjpSE,580
137
- flyte/cli/_common.py,sha256=dW4C9YwPapLp6-ebjQDet8BcSM4S2pFi37o5xy2Shbg,10432
139
+ flyte/cli/_common.py,sha256=u9Vf4VR601cEawlKw-o9bJJuQVNlLMMsFgCTWl-umU4,10748
138
140
  flyte/cli/_create.py,sha256=8g9LgrjhpJiusUkmWeIRB3XviTVmMfo1dGCEt8Hna00,2377
139
141
  flyte/cli/_delete.py,sha256=xOZN7Y13AQjAEQvdEod9qk1MQPU9l7bjQCkYzf_l4uY,497
140
142
  flyte/cli/_deploy.py,sha256=u30rb6KfZnr52M6zHlLueaOkgdCGoS2pIpfb0wFoTvY,4371
141
143
  flyte/cli/_get.py,sha256=u5PNAeJTPkGzdcz5gd2oiFrNvIfm8oRGK3MsjyY4Dzc,7553
142
144
  flyte/cli/_params.py,sha256=X3GpuftXmtfIsYQ7vBilD4kmlkXTc7_AxpaxohRjSuY,19458
143
- flyte/cli/_run.py,sha256=eOmLayNwKVAnBMBaa9dCteS-L5oHpYm0F91lE7HiMEc,7000
144
- flyte/cli/main.py,sha256=dYjh-YchlAIpfVF77ggnTRzUaxCCWD6Fv1Mh84zU0bQ,2878
145
- flyte/config/__init__.py,sha256=Za3haz4wHCN51e07obqpe7nbRgk9WTIl9F9FXu2IcrM,8602
146
- flyte/config/_config.py,sha256=feuToNukIUnAQNYBDbwrG4MiiZ8hyP1HvQVES7tys3U,7157
147
- flyte/config/_internal.py,sha256=ylQN6RKxlUVQsgOLSR2a_4lgZ0k99xRj8o-MNTfsgWE,2836
145
+ flyte/cli/_run.py,sha256=F8Io2WB4dGHvNWbCmvCtyx4YGQhmoCAxeARwAwNSn78,7150
146
+ flyte/cli/main.py,sha256=1-Qm3IAPIRQSKaWVL1iGajiJoOO0mRqJsRnNtfd_uw4,3064
147
+ flyte/config/__init__.py,sha256=MiwEYK5Iv7MRR22z61nzbsbvZ9Q6MdmAU_g9If1Pmb8,144
148
+ flyte/config/_config.py,sha256=QE3T0W8xOULjJaqDMdMF90f9gFVjGR6h8QPOLsyqjYw,9831
149
+ flyte/config/_internal.py,sha256=Bj0uzn3PYgxKbzM-q2GKXxp7Y6cyzhPzUB-Y2i6cQKo,2836
150
+ flyte/config/_reader.py,sha256=c16jm0_IYxwEAjXENtllLeO_sT5Eg2RNLG4UjnAv_x4,7157
148
151
  flyte/connectors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
152
  flyte/extras/__init__.py,sha256=FhB0uK7H1Yo5De9vOuF7UGnezTKncj3u2Wo5uQdWN0g,74
150
153
  flyte/extras/_container.py,sha256=JM-JNsj9-Mjf7E4OQcAS2Z5IJBXhB-HtQkGn_mu7gvk,11249
151
154
  flyte/io/__init__.py,sha256=e2wHVEoZ84TGOtOPrtTg6hJpeuxiYI56Sg011yq6nUQ,236
152
155
  flyte/io/_dataframe.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
- flyte/io/_dir.py,sha256=K3tz3pHKmpMppgX2HtI6Bz0H6EIdHFj96-7Ub47TJO8,15328
154
- flyte/io/_file.py,sha256=Ek40PN-Qo30HZvUKetXUGZKYooevtF-LoPtxMZGBa3I,15533
156
+ flyte/io/_dir.py,sha256=rih9CY1YjNX05bcAu5LG62Xoyij5GXAlv7jLyVF0je8,15310
157
+ flyte/io/_file.py,sha256=eL48TwJjPDyN9tPG9Hfs22P4qqc-GBsTm3E5e-JmfdY,15430
155
158
  flyte/io/pickle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
156
159
  flyte/io/pickle/transformer.py,sha256=b7vAxLHgi-HMHy3vOG0sGMeDf6LimFmU_jAcvNOZI1o,4047
157
160
  flyte/io/structured_dataset/__init__.py,sha256=69ixVV9OEXiLiQ6SV2S8tEC7dVQe7YTt9NV1OotlG64,4524
@@ -159,12 +162,12 @@ flyte/io/structured_dataset/basic_dfs.py,sha256=lrcALNYke_gSmmAhIiUN5afqhA-W5bSu
159
162
  flyte/io/structured_dataset/structured_dataset.py,sha256=DrRIHA3zbkfLBekw3pPTF_SM0Rbn_BGBp1YJPyd9zY0,52644
160
163
  flyte/remote/__init__.py,sha256=zBWV88VF-L8430xVrOyk07EmLsOKhOUMVBsqFUDtO6Q,565
161
164
  flyte/remote/_console.py,sha256=avmELJPx8nQMAVPrHlh6jEIRPjrMwFpdZjJsWOOa9rE,660
162
- flyte/remote/_data.py,sha256=qNZwB_cCXBojP6nSIwp8_x0idxhbPFXvmv0SoKwvENE,5791
163
- flyte/remote/_logs.py,sha256=M9ooDZTwxS3xjnPM7R5BdaGjkGZIZtOFz6NxCuLeSkM,5565
164
- flyte/remote/_project.py,sha256=shAs9Hw0e5PAOciTAEOGVsdvo70PunxBXdOylHSyWw8,2834
165
- flyte/remote/_run.py,sha256=rg_CSndY7tt3QOnOcoOG7Gm2eWOeEndi9Q2vgkcNwMY,29579
166
- flyte/remote/_secret.py,sha256=3fPx3RIuRJ0h15gj2CF9xKcAfTSCvhW3i0v4YqPMcCk,4394
167
- flyte/remote/_task.py,sha256=-cvXVrRB1Zjz-n4OTqFrzJxS7Exnuz7SY_Vk4tuPvxc,7916
165
+ flyte/remote/_data.py,sha256=DPK85gB6M71RjxqIh1Q5PdZ9xcJ0m1w_3cT2lAO0r7w,5795
166
+ flyte/remote/_logs.py,sha256=EOXg4OS8yYclsT6NASgOLMo0TA2sZpKb2MWZXpWBPuI,6404
167
+ flyte/remote/_project.py,sha256=dTBYqORDAbLvh9WnPO1Ytuzw2vxNYZwwNsKE2_b0o14,2807
168
+ flyte/remote/_run.py,sha256=Dk7LQaB_edxSd6H93H-khjeZKXT76PgHPSLKIuGJQfw,31021
169
+ flyte/remote/_secret.py,sha256=l5xeMS83uMcWWeSSTRsSZUNhS0N--1Dze09C-thSOQs,4341
170
+ flyte/remote/_task.py,sha256=6TBdjPWgxHmdY9OJMMPGZax8h7Qs7q9dprNktjnZ77E,7904
168
171
  flyte/remote/_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
169
172
  flyte/remote/_client/_protocols.py,sha256=RVlVpX0jNg9kIf80lgtYimIWlqv30HOiFAdmDAROXCs,5481
170
173
  flyte/remote/_client/controlplane.py,sha256=FsOfj4rO4MIMnYrpAT53F8q588VVf5t4sDuwoPuc840,3102
@@ -187,21 +190,23 @@ flyte/remote/_client/auth/_grpc_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
187
190
  flyte/remote/_client/auth/_grpc_utils/auth_interceptor.py,sha256=JCjdoWV41sjdvfJcUmrJdIfQ0meuGFwv2ArU7FQGDDA,12403
188
191
  flyte/remote/_client/auth/_grpc_utils/default_metadata_interceptor.py,sha256=IoMGWM42_VyzxqIVYe458o0uKsqhH-mcERUs9CY1L5U,6194
189
192
  flyte/report/__init__.py,sha256=yLbeUxYaVaDlgBod3Oh34zGBSotl1UlXq1vUkb9q7cs,152
190
- flyte/report/_report.py,sha256=36e0qikyY-Wsv4OzvTqkl23pk5ekrXIuhA4qsm_RRQs,5191
193
+ flyte/report/_report.py,sha256=jZXl-dqkZHiVAPBuUCmE4e1vE9FpHLkermOeZehi8Tc,5175
191
194
  flyte/report/_template.html,sha256=YehmLJG3QMYQ10UT1YZBu2ncVmAJ4iyqVp5hF3sXRAs,3458
192
195
  flyte/storage/__init__.py,sha256=kkOyqBXJVZSKt3ALitGn9zK6bkchy1-c3TOPB4QhPxk,499
193
196
  flyte/storage/_config.py,sha256=xVibWJaioOnkeTb_M30azgiUe1jvmQaOWRZEkpdoTao,8680
194
197
  flyte/storage/_remote_fs.py,sha256=kM_iszbccjVD5VtVdgfkl1FHS8NPnY__JOo_CPQUE4c,1124
195
198
  flyte/storage/_storage.py,sha256=mBy7MKII2M1UTVm_EUUDwVb7uT1_AOPzQr2wCJ-fgW0,9873
196
199
  flyte/storage/_utils.py,sha256=8oLCM-7D7JyJhzUi1_Q1NFx8GBUPRfou0T_5tPBmPbE,309
200
+ flyte/syncify/__init__.py,sha256=tmGOUw3XvDXpaxQk95oRmUTObcIzjEvBFaceSzrXATU,94
201
+ flyte/syncify/_api.py,sha256=Ayq9xzb1IJJrlHuTJ160C3k7tdrAjhX4z-FgQM-3T8M,9799
197
202
  flyte/types/__init__.py,sha256=xMIYOolT3Vq0qXy7unw90IVdYztdMDpKg0oG0XAPC9o,364
198
203
  flyte/types/_interface.py,sha256=mY7mb8v2hJPGk7AU99gdOWl4_jArA1VFtjYGlE31SK0,953
199
204
  flyte/types/_renderer.py,sha256=ygcCo5l60lHufyQISFddZfWwLlQ8kJAKxUT_XnR_6dY,4818
200
205
  flyte/types/_string_literals.py,sha256=NlG1xV8RSA-sZ-n-IFQCAsdB6jXJOAKkHWtnopxVVDk,4231
201
206
  flyte/types/_type_engine.py,sha256=QxyoDWRG_whfLCz88YqEVVoTTnca0FZv9eHeLLT0_-s,93645
202
207
  flyte/types/_utils.py,sha256=pbts9E1_2LTdLygAY0UYTLYJ8AsN3BZyviSXvrtcutc,2626
203
- flyte-0.2.0b4.dist-info/METADATA,sha256=F4sAAcSDtBDZOKMXVwaQKrRT0p6aFnmxXLnFnNo2RvQ,10271
204
- flyte-0.2.0b4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
205
- flyte-0.2.0b4.dist-info/entry_points.txt,sha256=MIq2z5dBurdCJfpXfMKzgBv7sJOakKRYxr8G0cMiTrg,75
206
- flyte-0.2.0b4.dist-info/top_level.txt,sha256=7dkyFbikvA12LEZEqawx8oDG1CMod6hTliPj7iWzgYo,6
207
- flyte-0.2.0b4.dist-info/RECORD,,
208
+ flyte-0.2.0b7.dist-info/METADATA,sha256=PEzzLl143Af5aF5AtaQFINAedUl2-txdzh36uHWd6fQ,3751
209
+ flyte-0.2.0b7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
210
+ flyte-0.2.0b7.dist-info/entry_points.txt,sha256=MIq2z5dBurdCJfpXfMKzgBv7sJOakKRYxr8G0cMiTrg,75
211
+ flyte-0.2.0b7.dist-info/top_level.txt,sha256=7dkyFbikvA12LEZEqawx8oDG1CMod6hTliPj7iWzgYo,6
212
+ flyte-0.2.0b7.dist-info/RECORD,,
flyte/_api_commons.py DELETED
@@ -1,3 +0,0 @@
1
- from synchronicity import Synchronizer
2
-
3
- syncer = Synchronizer()