flyte 0.2.0b4__py3-none-any.whl → 0.2.0b5__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/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
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flyte
3
- Version: 0.2.0b4
3
+ Version: 0.2.0b5
4
4
  Summary: Add your description here
5
5
  Author-email: Ketan Umare <kumare3@users.noreply.github.com>
6
6
  Requires-Python: >=3.10
@@ -18,7 +18,6 @@ Requires-Dist: pyyaml>=6.0.2
18
18
  Requires-Dist: rich-click>=1.8.9
19
19
  Requires-Dist: httpx>=0.28.1
20
20
  Requires-Dist: keyring>=25.6.0
21
- Requires-Dist: synchronicity>=0.9.11
22
21
  Requires-Dist: msgpack>=1.1.0
23
22
  Requires-Dist: toml>=0.10.2
24
23
  Requires-Dist: async-lru>=2.0.5
@@ -1,28 +1,27 @@
1
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
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=hdu-7p56KLCq3xFf-ErGuActhoJMA_iqggjU2MOQm2Y,15758
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=o929JDYrvIu0qnHyRbZTFJje2DxGPT9DaVUyysEN3SA,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
@@ -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
@@ -150,8 +152,8 @@ flyte/extras/__init__.py,sha256=FhB0uK7H1Yo5De9vOuF7UGnezTKncj3u2Wo5uQdWN0g,74
150
152
  flyte/extras/_container.py,sha256=JM-JNsj9-Mjf7E4OQcAS2Z5IJBXhB-HtQkGn_mu7gvk,11249
151
153
  flyte/io/__init__.py,sha256=e2wHVEoZ84TGOtOPrtTg6hJpeuxiYI56Sg011yq6nUQ,236
152
154
  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
155
+ flyte/io/_dir.py,sha256=rih9CY1YjNX05bcAu5LG62Xoyij5GXAlv7jLyVF0je8,15310
156
+ flyte/io/_file.py,sha256=eL48TwJjPDyN9tPG9Hfs22P4qqc-GBsTm3E5e-JmfdY,15430
155
157
  flyte/io/pickle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
156
158
  flyte/io/pickle/transformer.py,sha256=b7vAxLHgi-HMHy3vOG0sGMeDf6LimFmU_jAcvNOZI1o,4047
157
159
  flyte/io/structured_dataset/__init__.py,sha256=69ixVV9OEXiLiQ6SV2S8tEC7dVQe7YTt9NV1OotlG64,4524
@@ -159,12 +161,12 @@ flyte/io/structured_dataset/basic_dfs.py,sha256=lrcALNYke_gSmmAhIiUN5afqhA-W5bSu
159
161
  flyte/io/structured_dataset/structured_dataset.py,sha256=DrRIHA3zbkfLBekw3pPTF_SM0Rbn_BGBp1YJPyd9zY0,52644
160
162
  flyte/remote/__init__.py,sha256=zBWV88VF-L8430xVrOyk07EmLsOKhOUMVBsqFUDtO6Q,565
161
163
  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
164
+ flyte/remote/_data.py,sha256=DPK85gB6M71RjxqIh1Q5PdZ9xcJ0m1w_3cT2lAO0r7w,5795
165
+ flyte/remote/_logs.py,sha256=CzhHaPq-1nZn0yxZQPRjPpoEWmfWYBxPdAAp8zcHchU,6138
166
+ flyte/remote/_project.py,sha256=dTBYqORDAbLvh9WnPO1Ytuzw2vxNYZwwNsKE2_b0o14,2807
167
+ flyte/remote/_run.py,sha256=u42FCF837FVywdHgajHH6sZw5FVacyqVPH178rXKpio,30666
168
+ flyte/remote/_secret.py,sha256=l5xeMS83uMcWWeSSTRsSZUNhS0N--1Dze09C-thSOQs,4341
169
+ flyte/remote/_task.py,sha256=6TBdjPWgxHmdY9OJMMPGZax8h7Qs7q9dprNktjnZ77E,7904
168
170
  flyte/remote/_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
169
171
  flyte/remote/_client/_protocols.py,sha256=RVlVpX0jNg9kIf80lgtYimIWlqv30HOiFAdmDAROXCs,5481
170
172
  flyte/remote/_client/controlplane.py,sha256=FsOfj4rO4MIMnYrpAT53F8q588VVf5t4sDuwoPuc840,3102
@@ -187,21 +189,23 @@ flyte/remote/_client/auth/_grpc_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
187
189
  flyte/remote/_client/auth/_grpc_utils/auth_interceptor.py,sha256=JCjdoWV41sjdvfJcUmrJdIfQ0meuGFwv2ArU7FQGDDA,12403
188
190
  flyte/remote/_client/auth/_grpc_utils/default_metadata_interceptor.py,sha256=IoMGWM42_VyzxqIVYe458o0uKsqhH-mcERUs9CY1L5U,6194
189
191
  flyte/report/__init__.py,sha256=yLbeUxYaVaDlgBod3Oh34zGBSotl1UlXq1vUkb9q7cs,152
190
- flyte/report/_report.py,sha256=36e0qikyY-Wsv4OzvTqkl23pk5ekrXIuhA4qsm_RRQs,5191
192
+ flyte/report/_report.py,sha256=jZXl-dqkZHiVAPBuUCmE4e1vE9FpHLkermOeZehi8Tc,5175
191
193
  flyte/report/_template.html,sha256=YehmLJG3QMYQ10UT1YZBu2ncVmAJ4iyqVp5hF3sXRAs,3458
192
194
  flyte/storage/__init__.py,sha256=kkOyqBXJVZSKt3ALitGn9zK6bkchy1-c3TOPB4QhPxk,499
193
195
  flyte/storage/_config.py,sha256=xVibWJaioOnkeTb_M30azgiUe1jvmQaOWRZEkpdoTao,8680
194
196
  flyte/storage/_remote_fs.py,sha256=kM_iszbccjVD5VtVdgfkl1FHS8NPnY__JOo_CPQUE4c,1124
195
197
  flyte/storage/_storage.py,sha256=mBy7MKII2M1UTVm_EUUDwVb7uT1_AOPzQr2wCJ-fgW0,9873
196
198
  flyte/storage/_utils.py,sha256=8oLCM-7D7JyJhzUi1_Q1NFx8GBUPRfou0T_5tPBmPbE,309
199
+ flyte/syncify/__init__.py,sha256=tmGOUw3XvDXpaxQk95oRmUTObcIzjEvBFaceSzrXATU,94
200
+ flyte/syncify/_api.py,sha256=Ayq9xzb1IJJrlHuTJ160C3k7tdrAjhX4z-FgQM-3T8M,9799
197
201
  flyte/types/__init__.py,sha256=xMIYOolT3Vq0qXy7unw90IVdYztdMDpKg0oG0XAPC9o,364
198
202
  flyte/types/_interface.py,sha256=mY7mb8v2hJPGk7AU99gdOWl4_jArA1VFtjYGlE31SK0,953
199
203
  flyte/types/_renderer.py,sha256=ygcCo5l60lHufyQISFddZfWwLlQ8kJAKxUT_XnR_6dY,4818
200
204
  flyte/types/_string_literals.py,sha256=NlG1xV8RSA-sZ-n-IFQCAsdB6jXJOAKkHWtnopxVVDk,4231
201
205
  flyte/types/_type_engine.py,sha256=QxyoDWRG_whfLCz88YqEVVoTTnca0FZv9eHeLLT0_-s,93645
202
206
  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,,
207
+ flyte-0.2.0b5.dist-info/METADATA,sha256=k8vAmgiVFmkpS_8iz8AAnTAmsXTFVcSmXU2Lge-OnX8,10234
208
+ flyte-0.2.0b5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
209
+ flyte-0.2.0b5.dist-info/entry_points.txt,sha256=MIq2z5dBurdCJfpXfMKzgBv7sJOakKRYxr8G0cMiTrg,75
210
+ flyte-0.2.0b5.dist-info/top_level.txt,sha256=7dkyFbikvA12LEZEqawx8oDG1CMod6hTliPj7iWzgYo,6
211
+ flyte-0.2.0b5.dist-info/RECORD,,
flyte/_api_commons.py DELETED
@@ -1,3 +0,0 @@
1
- from synchronicity import Synchronizer
2
-
3
- syncer = Synchronizer()