flyte 0.2.0b1__py3-none-any.whl → 0.2.0b3__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/__init__.py +3 -4
- flyte/_bin/runtime.py +21 -7
- flyte/_cache/cache.py +1 -2
- flyte/_cli/_common.py +26 -4
- flyte/_cli/_create.py +48 -0
- flyte/_cli/_deploy.py +4 -2
- flyte/_cli/_get.py +18 -7
- flyte/_cli/_run.py +1 -0
- flyte/_cli/main.py +11 -5
- flyte/_code_bundle/bundle.py +42 -11
- flyte/_context.py +1 -1
- flyte/_deploy.py +3 -1
- flyte/_group.py +1 -1
- flyte/_initialize.py +28 -247
- flyte/_internal/controllers/__init__.py +6 -6
- flyte/_internal/controllers/_local_controller.py +14 -5
- flyte/_internal/controllers/_trace.py +1 -1
- flyte/_internal/controllers/remote/__init__.py +27 -7
- flyte/_internal/controllers/remote/_action.py +1 -1
- flyte/_internal/controllers/remote/_client.py +5 -1
- flyte/_internal/controllers/remote/_controller.py +68 -24
- flyte/_internal/controllers/remote/_core.py +1 -1
- flyte/_internal/runtime/convert.py +34 -8
- flyte/_internal/runtime/entrypoints.py +1 -1
- flyte/_internal/runtime/io.py +3 -3
- flyte/_internal/runtime/task_serde.py +31 -1
- flyte/_internal/runtime/taskrunner.py +1 -1
- flyte/_internal/runtime/types_serde.py +1 -1
- flyte/_run.py +47 -28
- flyte/_task.py +2 -2
- flyte/_task_environment.py +1 -1
- flyte/_trace.py +5 -6
- flyte/_utils/__init__.py +2 -0
- flyte/_utils/async_cache.py +139 -0
- flyte/_version.py +2 -2
- flyte/config/__init__.py +26 -4
- flyte/config/_config.py +13 -4
- flyte/extras/_container.py +3 -3
- flyte/{_datastructures.py → models.py} +3 -2
- flyte/remote/_client/auth/_auth_utils.py +14 -0
- flyte/remote/_client/auth/_channel.py +28 -3
- flyte/remote/_client/auth/_token_client.py +3 -3
- flyte/remote/_client/controlplane.py +13 -13
- flyte/remote/_logs.py +1 -1
- flyte/remote/_run.py +4 -8
- flyte/remote/_task.py +2 -2
- flyte/storage/__init__.py +5 -0
- flyte/storage/_config.py +233 -0
- flyte/storage/_storage.py +23 -3
- flyte/types/_interface.py +1 -1
- flyte/types/_type_engine.py +1 -1
- {flyte-0.2.0b1.dist-info → flyte-0.2.0b3.dist-info}/METADATA +2 -2
- {flyte-0.2.0b1.dist-info → flyte-0.2.0b3.dist-info}/RECORD +56 -54
- flyte/_internal/controllers/pbhash.py +0 -39
- {flyte-0.2.0b1.dist-info → flyte-0.2.0b3.dist-info}/WHEEL +0 -0
- {flyte-0.2.0b1.dist-info → flyte-0.2.0b3.dist-info}/entry_points.txt +0 -0
- {flyte-0.2.0b1.dist-info → flyte-0.2.0b3.dist-info}/top_level.txt +0 -0
flyte/storage/_config.py
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import datetime
|
|
4
|
+
import os
|
|
5
|
+
import typing
|
|
6
|
+
from dataclasses import dataclass
|
|
7
|
+
from typing import ClassVar
|
|
8
|
+
|
|
9
|
+
from flyte.config import set_if_exists
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass(init=True, repr=True, eq=True, frozen=True)
|
|
13
|
+
class Storage(object):
|
|
14
|
+
"""
|
|
15
|
+
Data storage configuration that applies across any provider.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
retries: int = 3
|
|
19
|
+
backoff: datetime.timedelta = datetime.timedelta(seconds=5)
|
|
20
|
+
enable_debug: bool = False
|
|
21
|
+
attach_execution_metadata: bool = True
|
|
22
|
+
|
|
23
|
+
_KEY_ENV_VAR_MAPPING: ClassVar[typing.Dict[str, str]] = {
|
|
24
|
+
"enable_debug": "UNION_STORAGE_DEBUG",
|
|
25
|
+
"retries": "UNION_STORAGE_RETRIES",
|
|
26
|
+
"backoff": "UNION_STORAGE_BACKOFF_SECONDS",
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
def get_fsspec_kwargs(self, anonymous: bool = False, **kwargs) -> typing.Dict[str, typing.Any]:
|
|
30
|
+
"""
|
|
31
|
+
Returns the configuration as kwargs for constructing an fsspec filesystem.
|
|
32
|
+
"""
|
|
33
|
+
return {}
|
|
34
|
+
|
|
35
|
+
@classmethod
|
|
36
|
+
def _auto_as_kwargs(cls) -> typing.Dict[str, typing.Any]:
|
|
37
|
+
retries = os.getenv(cls._KEY_ENV_VAR_MAPPING["retries"])
|
|
38
|
+
backoff = os.getenv(cls._KEY_ENV_VAR_MAPPING["backoff"])
|
|
39
|
+
enable_debug = os.getenv(cls._KEY_ENV_VAR_MAPPING["enable_debug"])
|
|
40
|
+
|
|
41
|
+
kwargs: typing.Dict[str, typing.Any] = {}
|
|
42
|
+
kwargs = set_if_exists(kwargs, "enable_debug", enable_debug)
|
|
43
|
+
kwargs = set_if_exists(kwargs, "retries", retries)
|
|
44
|
+
kwargs = set_if_exists(kwargs, "backoff", backoff)
|
|
45
|
+
return kwargs
|
|
46
|
+
|
|
47
|
+
@classmethod
|
|
48
|
+
def auto(cls) -> Storage:
|
|
49
|
+
"""
|
|
50
|
+
Construct the config object automatically from environment variables.
|
|
51
|
+
"""
|
|
52
|
+
return cls(**cls._auto_as_kwargs())
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@dataclass(init=True, repr=True, eq=True, frozen=True)
|
|
56
|
+
class S3(Storage):
|
|
57
|
+
"""
|
|
58
|
+
S3 specific configuration
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
endpoint: typing.Optional[str] = None
|
|
62
|
+
access_key_id: typing.Optional[str] = None
|
|
63
|
+
secret_access_key: typing.Optional[str] = None
|
|
64
|
+
|
|
65
|
+
_KEY_ENV_VAR_MAPPING: ClassVar[typing.Dict[str, str]] = {
|
|
66
|
+
"endpoint": "FLYTE_AWS_ENDPOINT",
|
|
67
|
+
"access_key_id": "FLYTE_AWS_ACCESS_KEY_ID",
|
|
68
|
+
"secret_access_key": "FLYTE_AWS_SECRET_ACCESS_KEY",
|
|
69
|
+
} | Storage._KEY_ENV_VAR_MAPPING
|
|
70
|
+
|
|
71
|
+
# Refer to https://github.com/developmentseed/obstore/blob/33654fc37f19a657689eb93327b621e9f9e01494/obstore/python/obstore/store/_aws.pyi#L11
|
|
72
|
+
# for key and secret
|
|
73
|
+
_CONFIG_KEY_FSSPEC_S3_KEY_ID: ClassVar = "access_key_id"
|
|
74
|
+
_CONFIG_KEY_FSSPEC_S3_SECRET: ClassVar = "secret_access_key"
|
|
75
|
+
_CONFIG_KEY_ENDPOINT: ClassVar = "endpoint_url"
|
|
76
|
+
_KEY_SKIP_SIGNATURE: ClassVar = "skip_signature"
|
|
77
|
+
|
|
78
|
+
@classmethod
|
|
79
|
+
def auto(cls) -> S3:
|
|
80
|
+
"""
|
|
81
|
+
:return: Config
|
|
82
|
+
"""
|
|
83
|
+
endpoint = os.getenv(cls._KEY_ENV_VAR_MAPPING["endpoint"], None)
|
|
84
|
+
access_key_id = os.getenv(cls._KEY_ENV_VAR_MAPPING["access_key_id"], None)
|
|
85
|
+
secret_access_key = os.getenv(cls._KEY_ENV_VAR_MAPPING["secret_access_key"], None)
|
|
86
|
+
|
|
87
|
+
kwargs = super()._auto_as_kwargs()
|
|
88
|
+
kwargs = set_if_exists(kwargs, "endpoint", endpoint)
|
|
89
|
+
kwargs = set_if_exists(kwargs, "access_key_id", access_key_id)
|
|
90
|
+
kwargs = set_if_exists(kwargs, "secret_access_key", secret_access_key)
|
|
91
|
+
|
|
92
|
+
return S3(**kwargs)
|
|
93
|
+
|
|
94
|
+
@classmethod
|
|
95
|
+
def for_sandbox(cls) -> S3:
|
|
96
|
+
"""
|
|
97
|
+
:return:
|
|
98
|
+
"""
|
|
99
|
+
kwargs = super()._auto_as_kwargs()
|
|
100
|
+
final_kwargs = kwargs | {
|
|
101
|
+
"endpoint": "http://localhost:4566",
|
|
102
|
+
"access_key_id": "minio",
|
|
103
|
+
"secret_access_key": "miniostorage",
|
|
104
|
+
}
|
|
105
|
+
return S3(**final_kwargs)
|
|
106
|
+
|
|
107
|
+
def get_fsspec_kwargs(self, anonymous: bool = False, **kwargs) -> typing.Dict[str, typing.Any]:
|
|
108
|
+
# Construct the config object
|
|
109
|
+
kwargs.pop("anonymous", None) # Remove anonymous if it exists, as we handle it separately
|
|
110
|
+
config: typing.Dict[str, typing.Any] = {}
|
|
111
|
+
if self._CONFIG_KEY_FSSPEC_S3_KEY_ID in kwargs or self.access_key_id:
|
|
112
|
+
config[self._CONFIG_KEY_FSSPEC_S3_KEY_ID] = kwargs.pop(
|
|
113
|
+
self._CONFIG_KEY_FSSPEC_S3_KEY_ID, self.access_key_id
|
|
114
|
+
)
|
|
115
|
+
if self._CONFIG_KEY_FSSPEC_S3_SECRET in kwargs or self.secret_access_key:
|
|
116
|
+
config[self._CONFIG_KEY_FSSPEC_S3_SECRET] = kwargs.pop(
|
|
117
|
+
self._CONFIG_KEY_FSSPEC_S3_SECRET, self.secret_access_key
|
|
118
|
+
)
|
|
119
|
+
if self._CONFIG_KEY_ENDPOINT in kwargs or self.endpoint:
|
|
120
|
+
config["endpoint_url"] = kwargs.pop(self._CONFIG_KEY_ENDPOINT, self.endpoint)
|
|
121
|
+
|
|
122
|
+
retries = kwargs.pop("retries", self.retries)
|
|
123
|
+
backoff = kwargs.pop("backoff", self.backoff)
|
|
124
|
+
|
|
125
|
+
if anonymous:
|
|
126
|
+
config[self._KEY_SKIP_SIGNATURE] = True
|
|
127
|
+
|
|
128
|
+
retry_config = {
|
|
129
|
+
"max_retries": retries,
|
|
130
|
+
"backoff": {
|
|
131
|
+
"base": 2,
|
|
132
|
+
"init_backoff": backoff,
|
|
133
|
+
"max_backoff": datetime.timedelta(seconds=16),
|
|
134
|
+
},
|
|
135
|
+
"retry_timeout": datetime.timedelta(minutes=3),
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
client_options = {"timeout": "99999s", "allow_http": True}
|
|
139
|
+
|
|
140
|
+
if config:
|
|
141
|
+
kwargs["config"] = config
|
|
142
|
+
kwargs["client_options"] = client_options or None
|
|
143
|
+
kwargs["retry_config"] = retry_config or None
|
|
144
|
+
|
|
145
|
+
return kwargs
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
@dataclass(init=True, repr=True, eq=True, frozen=True)
|
|
149
|
+
class GCS(Storage):
|
|
150
|
+
"""
|
|
151
|
+
Any GCS specific configuration.
|
|
152
|
+
"""
|
|
153
|
+
|
|
154
|
+
gsutil_parallelism: bool = False
|
|
155
|
+
|
|
156
|
+
_KEY_ENV_VAR_MAPPING: ClassVar[dict[str, str]] = {
|
|
157
|
+
"gsutil_parallelism": "GCP_GSUTIL_PARALLELISM",
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
@classmethod
|
|
161
|
+
def auto(cls) -> GCS:
|
|
162
|
+
gsutil_parallelism = os.getenv(cls._KEY_ENV_VAR_MAPPING["gsutil_parallelism"], None)
|
|
163
|
+
|
|
164
|
+
kwargs: typing.Dict[str, typing.Any] = {}
|
|
165
|
+
kwargs = set_if_exists(kwargs, "gsutil_parallelism", gsutil_parallelism)
|
|
166
|
+
return GCS(**kwargs)
|
|
167
|
+
|
|
168
|
+
def get_fsspec_kwargs(self, anonymous: bool = False, **kwargs) -> typing.Dict[str, typing.Any]:
|
|
169
|
+
kwargs.pop("anonymous", None)
|
|
170
|
+
return kwargs
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
@dataclass(init=True, repr=True, eq=True, frozen=True)
|
|
174
|
+
class ABFS(Storage):
|
|
175
|
+
"""
|
|
176
|
+
Any Azure Blob Storage specific configuration.
|
|
177
|
+
"""
|
|
178
|
+
|
|
179
|
+
account_name: typing.Optional[str] = None
|
|
180
|
+
account_key: typing.Optional[str] = None
|
|
181
|
+
tenant_id: typing.Optional[str] = None
|
|
182
|
+
client_id: typing.Optional[str] = None
|
|
183
|
+
client_secret: typing.Optional[str] = None
|
|
184
|
+
|
|
185
|
+
_KEY_ENV_VAR_MAPPING: ClassVar[dict[str, str]] = {
|
|
186
|
+
"account_name": "AZURE_STORAGE_ACCOUNT_NAME",
|
|
187
|
+
"account_key": "AZURE_STORAGE_ACCOUNT_KEY",
|
|
188
|
+
"tenant_id": "AZURE_TENANT_ID",
|
|
189
|
+
"client_id": "AZURE_CLIENT_ID",
|
|
190
|
+
"client_secret": "AZURE_CLIENT_SECRET",
|
|
191
|
+
}
|
|
192
|
+
_KEY_SKIP_SIGNATURE: ClassVar = "skip_signature"
|
|
193
|
+
|
|
194
|
+
@classmethod
|
|
195
|
+
def auto(cls) -> ABFS:
|
|
196
|
+
account_name = os.getenv(cls._KEY_ENV_VAR_MAPPING["account_name"], None)
|
|
197
|
+
account_key = os.getenv(cls._KEY_ENV_VAR_MAPPING["account_key"], None)
|
|
198
|
+
tenant_id = os.getenv(cls._KEY_ENV_VAR_MAPPING["tenant_id"], None)
|
|
199
|
+
client_id = os.getenv(cls._KEY_ENV_VAR_MAPPING["client_id"], None)
|
|
200
|
+
client_secret = os.getenv(cls._KEY_ENV_VAR_MAPPING["client_secret"], None)
|
|
201
|
+
|
|
202
|
+
kwargs: typing.Dict[str, typing.Any] = {}
|
|
203
|
+
kwargs = set_if_exists(kwargs, "account_name", account_name)
|
|
204
|
+
kwargs = set_if_exists(kwargs, "account_key", account_key)
|
|
205
|
+
kwargs = set_if_exists(kwargs, "tenant_id", tenant_id)
|
|
206
|
+
kwargs = set_if_exists(kwargs, "client_id", client_id)
|
|
207
|
+
kwargs = set_if_exists(kwargs, "client_secret", client_secret)
|
|
208
|
+
return ABFS(**kwargs)
|
|
209
|
+
|
|
210
|
+
def get_fsspec_kwargs(self, anonymous: bool = False, **kwargs) -> typing.Dict[str, typing.Any]:
|
|
211
|
+
kwargs.pop("anonymous", None)
|
|
212
|
+
config: typing.Dict[str, typing.Any] = {}
|
|
213
|
+
if "account_name" in kwargs or self.account_name:
|
|
214
|
+
config["account_name"] = kwargs.get("account_name", self.account_name)
|
|
215
|
+
if "account_key" in kwargs or self.account_key:
|
|
216
|
+
config["account_key"] = kwargs.get("account_key", self.account_key)
|
|
217
|
+
if "client_id" in kwargs or self.client_id:
|
|
218
|
+
config["client_id"] = kwargs.get("client_id", self.client_id)
|
|
219
|
+
if "client_secret" in kwargs or self.client_secret:
|
|
220
|
+
config["client_secret"] = kwargs.get("client_secret", self.client_secret)
|
|
221
|
+
if "tenant_id" in kwargs or self.tenant_id:
|
|
222
|
+
config["tenant_id"] = kwargs.get("tenant_id", self.tenant_id)
|
|
223
|
+
|
|
224
|
+
if anonymous:
|
|
225
|
+
config[self._KEY_SKIP_SIGNATURE] = True
|
|
226
|
+
|
|
227
|
+
client_options = {"timeout": "99999s", "allow_http": "true"}
|
|
228
|
+
|
|
229
|
+
if config:
|
|
230
|
+
kwargs["config"] = config
|
|
231
|
+
kwargs["client_options"] = client_options
|
|
232
|
+
|
|
233
|
+
return kwargs
|
flyte/storage/_storage.py
CHANGED
|
@@ -74,7 +74,27 @@ def get_underlying_filesystem(
|
|
|
74
74
|
|
|
75
75
|
storage_config = get_storage()
|
|
76
76
|
if storage_config:
|
|
77
|
-
kwargs
|
|
77
|
+
kwargs = storage_config.get_fsspec_kwargs(anonymous, **kwargs)
|
|
78
|
+
elif protocol:
|
|
79
|
+
match protocol:
|
|
80
|
+
case "s3":
|
|
81
|
+
# If the protocol is s3, we can use the s3 filesystem
|
|
82
|
+
from flyte.storage import S3
|
|
83
|
+
|
|
84
|
+
kwargs = S3.auto().get_fsspec_kwargs(anonymous=anonymous, **kwargs)
|
|
85
|
+
case "gs":
|
|
86
|
+
# If the protocol is gs, we can use the gs filesystem
|
|
87
|
+
from flyte.storage import GCS
|
|
88
|
+
|
|
89
|
+
kwargs = GCS.auto().get_fsspec_kwargs(anonymous=anonymous, **kwargs)
|
|
90
|
+
case "abfs" | "abfss":
|
|
91
|
+
# If the protocol is abfs or abfss, we can use the abfs filesystem
|
|
92
|
+
from flyte.storage import ABFS
|
|
93
|
+
|
|
94
|
+
kwargs = ABFS.auto().get_fsspec_kwargs(anonymous=anonymous, **kwargs)
|
|
95
|
+
case _:
|
|
96
|
+
pass
|
|
97
|
+
|
|
78
98
|
return fsspec.filesystem(protocol, **kwargs)
|
|
79
99
|
|
|
80
100
|
|
|
@@ -127,7 +147,7 @@ async def _get_from_filesystem(
|
|
|
127
147
|
return to_path
|
|
128
148
|
|
|
129
149
|
|
|
130
|
-
async def put(from_path: str, to_path: Optional[str] = None, recursive: bool = False, **kwargs):
|
|
150
|
+
async def put(from_path: str, to_path: Optional[str] = None, recursive: bool = False, **kwargs) -> str:
|
|
131
151
|
if not to_path:
|
|
132
152
|
from flyte._context import internal_ctx
|
|
133
153
|
|
|
@@ -142,7 +162,7 @@ async def put(from_path: str, to_path: Optional[str] = None, recursive: bool = F
|
|
|
142
162
|
else:
|
|
143
163
|
dst = file_system.put(from_path, to_path, recursive=recursive, **kwargs)
|
|
144
164
|
if isinstance(dst, (str, pathlib.Path)):
|
|
145
|
-
return dst
|
|
165
|
+
return str(dst)
|
|
146
166
|
else:
|
|
147
167
|
return to_path
|
|
148
168
|
|
flyte/types/_interface.py
CHANGED
|
@@ -2,7 +2,7 @@ from typing import Any, Dict, Type, cast
|
|
|
2
2
|
|
|
3
3
|
from flyteidl.core import interface_pb2
|
|
4
4
|
|
|
5
|
-
from flyte.
|
|
5
|
+
from flyte.models import NativeInterface
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def guess_interface(interface: interface_pb2.TypedInterface) -> NativeInterface:
|
flyte/types/_type_engine.py
CHANGED
|
@@ -38,10 +38,10 @@ from mashumaro.mixins.json import DataClassJSONMixin
|
|
|
38
38
|
from typing_extensions import Annotated, get_args, get_origin
|
|
39
39
|
|
|
40
40
|
import flyte.storage as storage
|
|
41
|
-
from flyte._datastructures import NativeInterface
|
|
42
41
|
from flyte._hash import HashMethod
|
|
43
42
|
from flyte._logging import logger
|
|
44
43
|
from flyte._utils.helpers import load_proto_from_file
|
|
44
|
+
from flyte.models import NativeInterface
|
|
45
45
|
|
|
46
46
|
from ._utils import literal_types_match
|
|
47
47
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flyte
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.0b3
|
|
4
4
|
Summary: Add your description here
|
|
5
5
|
Author-email: Ketan Umare <kumare3@users.noreply.github.com>
|
|
6
6
|
Requires-Python: >=3.10
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
8
|
Requires-Dist: aiofiles>=24.1.0
|
|
9
|
-
Requires-Dist: click
|
|
9
|
+
Requires-Dist: click>=8.2.1
|
|
10
10
|
Requires-Dist: flyteidl==1.15.4b0
|
|
11
11
|
Requires-Dist: cloudpickle>=3.1.1
|
|
12
12
|
Requires-Dist: fsspec>=2025.3.0
|
|
@@ -1,61 +1,60 @@
|
|
|
1
|
-
flyte/__init__.py,sha256=
|
|
1
|
+
flyte/__init__.py,sha256=5rPeSCWYJSKbqbiCx4cjPW0728c7ow-aogoXLaHGhFg,1340
|
|
2
2
|
flyte/_api_commons.py,sha256=9drgP2Qgr8rdDmZlI31TEpa056zCBiI1tAMO001SQ8o,64
|
|
3
3
|
flyte/_build.py,sha256=MVBM-i2rCxHhIFQCR-Tc0JMA2XuJ5r4UZBW4M7HRvSw,580
|
|
4
|
-
flyte/_context.py,sha256=
|
|
5
|
-
flyte/
|
|
6
|
-
flyte/_deploy.py,sha256=hSk9kDfIyM0fDxh145RD1wMP6RskHikx3AzDFKBz3c4,7663
|
|
4
|
+
flyte/_context.py,sha256=pYa43ut8gp6i-Y_zOy1WW_N2IbP9Vd-zIORO11vqK1E,4995
|
|
5
|
+
flyte/_deploy.py,sha256=xYSSA5Sqj79ePCLNid07-j3L28hn2arLAnK15FigE28,7725
|
|
7
6
|
flyte/_doc.py,sha256=_OPCf3t_git6UT7kSJISFaWO9cfNzJhhoe6JjVdyCJo,706
|
|
8
7
|
flyte/_docstring.py,sha256=SsG0Ab_YMAwy2ABJlEo3eBKlyC3kwPdnDJ1FIms-ZBQ,1127
|
|
9
8
|
flyte/_environment.py,sha256=ft0EsyFg6OnoIFPFbwkABLcq676veIH3TTR4SNilrj8,1499
|
|
10
|
-
flyte/_group.py,sha256=
|
|
9
|
+
flyte/_group.py,sha256=64q2GFDp3koIkx3IV4GBeGEbu4v-GPUxTlxU_sV2fPk,743
|
|
11
10
|
flyte/_hash.py,sha256=Of_Zl_DzzzF2jp4ZsLm-3o-xJFCCJ8_GubmLI1htx78,504
|
|
12
11
|
flyte/_image.py,sha256=8xEGmAALY6jQAsLfJQH9NweeVUaSTWivFEQt-JchN24,29068
|
|
13
|
-
flyte/_initialize.py,sha256=
|
|
12
|
+
flyte/_initialize.py,sha256=l7nSK7yZwJtmt4mBphFUUq4GDElrFyAMia7uxaC8O9o,15204
|
|
14
13
|
flyte/_interface.py,sha256=MP5o_qpIwfBNtAc7zo_cLSjMugsPyanuO6EgUSk4fBE,3644
|
|
15
14
|
flyte/_logging.py,sha256=FQvF3W1kkFypbARcOQ7WZVXO0XJasXp8EhozF6E6-aQ,3379
|
|
16
15
|
flyte/_resources.py,sha256=UOLyEVhdxolvrHhddiBbYdJuE1RkM_l7xeS9G1abe6M,7583
|
|
17
16
|
flyte/_retry.py,sha256=rfLv0MvWxzPByKESTglEmjPsytEAKiIvvmzlJxXwsfE,941
|
|
18
17
|
flyte/_reusable_environment.py,sha256=P4FBATVKAYcIKpdFN98sI8acPyKy8eIGx6V0kUb9YdM,1289
|
|
19
|
-
flyte/_run.py,sha256=
|
|
18
|
+
flyte/_run.py,sha256=s3m3VChDj4ge3pYoGx-QBlRqyizUBA9tDWMdvy3LlVE,17630
|
|
20
19
|
flyte/_secret.py,sha256=SqIHs6mi8hEkIIBZe3bI9jJsPt65Mt6dV5uh9_op1ME,2392
|
|
21
|
-
flyte/_task.py,sha256=
|
|
22
|
-
flyte/_task_environment.py,sha256=
|
|
20
|
+
flyte/_task.py,sha256=cqWfbMDMkEg1Q0sOkaSi1h_9Vn81DbGCOgNFZo8bMfI,14622
|
|
21
|
+
flyte/_task_environment.py,sha256=svSJJMEiiYsqz403s_urMgPdjguHJJSGVuBobT3uwVo,8403
|
|
23
22
|
flyte/_timeout.py,sha256=zx5sFcbYmjJAJbZWSGzzX-BpC9HC7Jfs35T7vVhKwkk,1571
|
|
24
23
|
flyte/_tools.py,sha256=JewkQZBR_M85tS6QY8e4xXue75jbOE48nID4ZHnc9jY,632
|
|
25
|
-
flyte/_trace.py,sha256=
|
|
26
|
-
flyte/_version.py,sha256=
|
|
24
|
+
flyte/_trace.py,sha256=sXSlOvHsT32YhNjgCCLAY8lwmzXGSAgaS7nvoy9msWU,5441
|
|
25
|
+
flyte/_version.py,sha256=Z1N7oGzKZRF2f0T3kLgDOXvNT_dEF6I0XUajA-kd-A4,519
|
|
27
26
|
flyte/errors.py,sha256=ulVzQ3TncddYOqQ3gvauDJAHTShWTpY0XZpqNqBZyOY,4036
|
|
27
|
+
flyte/models.py,sha256=GTRuR6GXc0RAbLmPEnnH54oRF7__2TNFhmYjFoYMjZA,12660
|
|
28
28
|
flyte/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
29
|
flyte/_bin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
|
-
flyte/_bin/runtime.py,sha256=
|
|
30
|
+
flyte/_bin/runtime.py,sha256=Q1vajoQ913KUfCQSP0u8Qoj-AYgfvU2i2wI19ydqnDw,4849
|
|
31
31
|
flyte/_cache/__init__.py,sha256=zhdO5UuHQRdzn8GHmSN40nrxfAmI4ihDRuHZM11U84Y,305
|
|
32
|
-
flyte/_cache/cache.py,sha256=
|
|
32
|
+
flyte/_cache/cache.py,sha256=ErhWzzJdEjTIuEF4f-r6IBgko-3Al9iUs1Eq4O42TUE,5021
|
|
33
33
|
flyte/_cache/defaults.py,sha256=gzJZW0QJPUfd2OPnGpv3tzIfwPtgFjAKoie3NP1P97U,217
|
|
34
34
|
flyte/_cache/policy_function_body.py,sha256=_AcyN6XKRXq16yV5lWuRJYCIVUlmyPvvWuYRxfU-Ldo,1507
|
|
35
35
|
flyte/_cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
-
flyte/_cli/_common.py,sha256=
|
|
37
|
-
flyte/_cli/_create.py,sha256=
|
|
36
|
+
flyte/_cli/_common.py,sha256=ru0ScwPp1JkICnOFbT_2019FchKf0UasWyHHYIGlLBk,10299
|
|
37
|
+
flyte/_cli/_create.py,sha256=BtA8zKqrq-IEucIXHIpVwvl330PS9R5WnHyz-rlyE3o,2378
|
|
38
38
|
flyte/_cli/_delete.py,sha256=MVxMKIgQC3R-EKDEYSySCqHTLHhQrhjwo4sdv5TynEA,498
|
|
39
|
-
flyte/_cli/_deploy.py,sha256=
|
|
40
|
-
flyte/_cli/_get.py,sha256=
|
|
39
|
+
flyte/_cli/_deploy.py,sha256=u30rb6KfZnr52M6zHlLueaOkgdCGoS2pIpfb0wFoTvY,4371
|
|
40
|
+
flyte/_cli/_get.py,sha256=EfxLRSLr9snseFpcicu1Qw7zjQ5Z4yMbxP3LWRCFUqA,7185
|
|
41
41
|
flyte/_cli/_params.py,sha256=X3GpuftXmtfIsYQ7vBilD4kmlkXTc7_AxpaxohRjSuY,19458
|
|
42
|
-
flyte/_cli/_run.py,sha256=
|
|
43
|
-
flyte/_cli/main.py,sha256=
|
|
42
|
+
flyte/_cli/_run.py,sha256=8FDBpLKQStPlKsBqhvpBBLCQ9BfjxqEFj3UrmISbTbw,5806
|
|
43
|
+
flyte/_cli/main.py,sha256=NDT0A3p13utLfZzPxYu5h-kr_U5FaHf6-igs0eJ0--k,2450
|
|
44
44
|
flyte/_code_bundle/__init__.py,sha256=G7DJTQ0UN_ETvdh55pYcWsTrZJKXEcyQl9iQQNQOBXQ,328
|
|
45
45
|
flyte/_code_bundle/_ignore.py,sha256=Tfaoa62CQVTH17kBHD6Xv6xEh1FhcAyvXivl9m-MEE0,3853
|
|
46
46
|
flyte/_code_bundle/_packaging.py,sha256=_wEozcQTYgqvAAaKQYna9ptvShIMlXk3vEdccwAOYn8,6873
|
|
47
47
|
flyte/_code_bundle/_utils.py,sha256=jdGsKLN12gdjqWq8ZGXeLPGQ6InhrK4iY9UB-IGDTo0,12583
|
|
48
|
-
flyte/_code_bundle/bundle.py,sha256=
|
|
48
|
+
flyte/_code_bundle/bundle.py,sha256=oh9xyONlw-sPUYc50kzrDd7jY1n4DgpvX25LlITdvOY,8788
|
|
49
49
|
flyte/_internal/__init__.py,sha256=vjXgGzAAjy609YFkAy9_RVPuUlslsHSJBXCLNTVnqOY,136
|
|
50
|
-
flyte/_internal/controllers/__init__.py,sha256=
|
|
51
|
-
flyte/_internal/controllers/_local_controller.py,sha256=
|
|
52
|
-
flyte/_internal/controllers/_trace.py,sha256
|
|
53
|
-
flyte/_internal/controllers/
|
|
54
|
-
flyte/_internal/controllers/remote/
|
|
55
|
-
flyte/_internal/controllers/remote/
|
|
56
|
-
flyte/_internal/controllers/remote/
|
|
57
|
-
flyte/_internal/controllers/remote/
|
|
58
|
-
flyte/_internal/controllers/remote/_core.py,sha256=NRPfL7PO8UKywr4lyBqSeplqWJpXHVTeKVeWFrdBTVw,18000
|
|
50
|
+
flyte/_internal/controllers/__init__.py,sha256=qaawXUgYdC5yHh5JfQ9mCH3u9a7oTYriDChADekzuzo,3750
|
|
51
|
+
flyte/_internal/controllers/_local_controller.py,sha256=wTrJitUZMKodvvZMiy4bQbmIv0doF8Pb-OCsa8lAHgA,4708
|
|
52
|
+
flyte/_internal/controllers/_trace.py,sha256=Ga2b65sn9q2IoOwHBZV2inMYyO6-CSDwzN7E3pDxsEI,1126
|
|
53
|
+
flyte/_internal/controllers/remote/__init__.py,sha256=9_azH1eHLqY6VULpDugXi7Kf1kK1ODqEnsQ_3wM6IqU,1919
|
|
54
|
+
flyte/_internal/controllers/remote/_action.py,sha256=w6vE1vPz1BwxvwfotDWjTNbDXfGEPrRBA8N3UVQ6P0w,4905
|
|
55
|
+
flyte/_internal/controllers/remote/_client.py,sha256=HPbzbfaWZVv5wpOvKNtFXR6COiZDwd1cUJQqi60A7oU,1421
|
|
56
|
+
flyte/_internal/controllers/remote/_controller.py,sha256=uqZYQDGG70DeJiqAU4y7n7VhXQ0gvD4ktWu15-zg86I,17387
|
|
57
|
+
flyte/_internal/controllers/remote/_core.py,sha256=P3hJPGtqnMt38oRjXD2IxZUh4evS2H6oCmxzVY0i69s,17999
|
|
59
58
|
flyte/_internal/controllers/remote/_informer.py,sha256=6WPaT1EmDcIwQ3VlujGWICzHy-kaGhMut_zBh2ShZnE,14186
|
|
60
59
|
flyte/_internal/controllers/remote/_service_protocol.py,sha256=-p5FXdo5pp5xmr9fJ0sGB9aE7mimeC6x13bqwyIR77k,1345
|
|
61
60
|
flyte/_internal/imagebuild/__init__.py,sha256=cLXVxkAyFpbdC1y-k3Rb6FRW9f_xpoRQWVn__G9IqKs,354
|
|
@@ -67,13 +66,13 @@ flyte/_internal/resolvers/_task_module.py,sha256=jwy1QYygUK7xmpCZLt1SPTfJCkfox3C
|
|
|
67
66
|
flyte/_internal/resolvers/common.py,sha256=ADQLRoyGsJ4vuUkitffMGrMKKjy0vpk6X53g4FuKDLc,993
|
|
68
67
|
flyte/_internal/resolvers/default.py,sha256=nX4DHUYod1nRvEsl_vSgutQVEdExu2xL8pRkyi4VWbY,981
|
|
69
68
|
flyte/_internal/runtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
|
-
flyte/_internal/runtime/convert.py,sha256=
|
|
71
|
-
flyte/_internal/runtime/entrypoints.py,sha256=
|
|
72
|
-
flyte/_internal/runtime/io.py,sha256=
|
|
69
|
+
flyte/_internal/runtime/convert.py,sha256=ThvyrR4EnuNu6i1rhgeKy259UMpbn_tmFY7YCBDNlh4,9122
|
|
70
|
+
flyte/_internal/runtime/entrypoints.py,sha256=Kyi19i7LYk7YM3ZV_Y4FXGt5Pc1tIftGkIDohopblyY,5127
|
|
71
|
+
flyte/_internal/runtime/io.py,sha256=Lgdy4iPjlKjUO-V_AkoPZff6lywaFjZUG-PErRukmx4,4248
|
|
73
72
|
flyte/_internal/runtime/resources_serde.py,sha256=tvMMv3l6cZEt_cfs7zVE_Kqs5qh-_r7fsEPxb6xMxMk,4812
|
|
74
|
-
flyte/_internal/runtime/task_serde.py,sha256=
|
|
75
|
-
flyte/_internal/runtime/taskrunner.py,sha256=
|
|
76
|
-
flyte/_internal/runtime/types_serde.py,sha256=
|
|
73
|
+
flyte/_internal/runtime/task_serde.py,sha256=985eItmPsnA17CQdRXknjVDBK8wzOx4956AUuVjLsM8,9772
|
|
74
|
+
flyte/_internal/runtime/taskrunner.py,sha256=2lxA6QiDGlNPXnPkzP0bUr6_hWO_QWueHr1TagfgQ7Y,7243
|
|
75
|
+
flyte/_internal/runtime/types_serde.py,sha256=EjRh9Yypx9-20XXQprtNgp766LeQVRoYWtY6XPGMZQg,1813
|
|
77
76
|
flyte/_protos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
78
77
|
flyte/_protos/common/authorization_pb2.py,sha256=6G7CAfq_Vq1qrm8JFkAnMAj0AaEipiX7MkjA7nk91-M,6707
|
|
79
78
|
flyte/_protos/common/authorization_pb2.pyi,sha256=tdqc3wZo3Yc6lKfjVgJlUFUFzGv4GAaCknIv43RGd-8,4759
|
|
@@ -134,19 +133,20 @@ flyte/_protos/workflow/task_definition_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8g
|
|
|
134
133
|
flyte/_protos/workflow/task_service_pb2.py,sha256=lY1MamKB9kNprHpBm1zQkeg25aTItXARu7Ta7rxzlB8,3787
|
|
135
134
|
flyte/_protos/workflow/task_service_pb2.pyi,sha256=YY9pajzA_eF_xMHgVQMvThNI0QYulgfLn1741IYo8tI,1495
|
|
136
135
|
flyte/_protos/workflow/task_service_pb2_grpc.py,sha256=PdhEfPraBIeN-UQulZsA2D0on830aTbfkBpvxPZBq9E,4311
|
|
137
|
-
flyte/_utils/__init__.py,sha256=
|
|
136
|
+
flyte/_utils/__init__.py,sha256=ZlVA1bLeAEnzwbkK7eEVAVmeVQnbBCuGqfd2UIk-yNc,599
|
|
138
137
|
flyte/_utils/asyn.py,sha256=KeJKarXNIyD16g6oPM0T9cH7JDmh1KY7JLbwo7i0IlQ,3673
|
|
138
|
+
flyte/_utils/async_cache.py,sha256=JtZJmWO62OowJ0QFNl6wryWqh-kuDi76aAASMie87QY,4596
|
|
139
139
|
flyte/_utils/coro_management.py,sha256=hlWzxdrsBYfUwzQS7qtltclG56XPxBMNgWE5lkuYdrY,760
|
|
140
140
|
flyte/_utils/file_handling.py,sha256=iU4TxW--fCho_Eg5xTMODn96P03SxzF-V-5f-7bZAZY,2233
|
|
141
141
|
flyte/_utils/helpers.py,sha256=Ntrs1WilJS7a4oLmcIPLXMi0cuzRDiCr_wwgtpV30uk,3953
|
|
142
142
|
flyte/_utils/lazy_module.py,sha256=fvXPjvZLzCfcI8Vzs4pKedUDdY0U_RQ1ZVrp9b8qBQY,1994
|
|
143
143
|
flyte/_utils/uv_script_parser.py,sha256=PxqD8lSMi6xv0uDd1s8LKB2IPZr4ttZJCUweqlyMTKk,1483
|
|
144
|
-
flyte/config/__init__.py,sha256=
|
|
145
|
-
flyte/config/_config.py,sha256=
|
|
144
|
+
flyte/config/__init__.py,sha256=Za3haz4wHCN51e07obqpe7nbRgk9WTIl9F9FXu2IcrM,8602
|
|
145
|
+
flyte/config/_config.py,sha256=FxQ3X5oq0tanR7lT1QY81aBpiy72kpOSAxxYH1SWFpI,7104
|
|
146
146
|
flyte/config/_internal.py,sha256=ylQN6RKxlUVQsgOLSR2a_4lgZ0k99xRj8o-MNTfsgWE,2836
|
|
147
147
|
flyte/connectors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
148
148
|
flyte/extras/__init__.py,sha256=FhB0uK7H1Yo5De9vOuF7UGnezTKncj3u2Wo5uQdWN0g,74
|
|
149
|
-
flyte/extras/_container.py,sha256=
|
|
149
|
+
flyte/extras/_container.py,sha256=JM-JNsj9-Mjf7E4OQcAS2Z5IJBXhB-HtQkGn_mu7gvk,11249
|
|
150
150
|
flyte/io/__init__.py,sha256=e2wHVEoZ84TGOtOPrtTg6hJpeuxiYI56Sg011yq6nUQ,236
|
|
151
151
|
flyte/io/_dataframe.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
152
152
|
flyte/io/_dir.py,sha256=K3tz3pHKmpMppgX2HtI6Bz0H6EIdHFj96-7Ub47TJO8,15328
|
|
@@ -159,20 +159,21 @@ flyte/io/structured_dataset/structured_dataset.py,sha256=DrRIHA3zbkfLBekw3pPTF_S
|
|
|
159
159
|
flyte/remote/__init__.py,sha256=zBWV88VF-L8430xVrOyk07EmLsOKhOUMVBsqFUDtO6Q,565
|
|
160
160
|
flyte/remote/_console.py,sha256=avmELJPx8nQMAVPrHlh6jEIRPjrMwFpdZjJsWOOa9rE,660
|
|
161
161
|
flyte/remote/_data.py,sha256=qNZwB_cCXBojP6nSIwp8_x0idxhbPFXvmv0SoKwvENE,5791
|
|
162
|
-
flyte/remote/_logs.py,sha256=
|
|
162
|
+
flyte/remote/_logs.py,sha256=xuRKYbgzfUWKqu_YHl2niCtTfPCvhBS9m1tC6OSlk0s,4241
|
|
163
163
|
flyte/remote/_project.py,sha256=shAs9Hw0e5PAOciTAEOGVsdvo70PunxBXdOylHSyWw8,2834
|
|
164
|
-
flyte/remote/_run.py,sha256=
|
|
164
|
+
flyte/remote/_run.py,sha256=I4SveRxh6F5FO_LCv0W-4Vu4xAqmIjpZ1THJm5IEAao,27913
|
|
165
165
|
flyte/remote/_secret.py,sha256=3fPx3RIuRJ0h15gj2CF9xKcAfTSCvhW3i0v4YqPMcCk,4394
|
|
166
|
-
flyte/remote/_task.py,sha256
|
|
166
|
+
flyte/remote/_task.py,sha256=-cvXVrRB1Zjz-n4OTqFrzJxS7Exnuz7SY_Vk4tuPvxc,7916
|
|
167
167
|
flyte/remote/_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
168
168
|
flyte/remote/_client/_protocols.py,sha256=RVlVpX0jNg9kIf80lgtYimIWlqv30HOiFAdmDAROXCs,5481
|
|
169
|
-
flyte/remote/_client/controlplane.py,sha256=
|
|
169
|
+
flyte/remote/_client/controlplane.py,sha256=FsOfj4rO4MIMnYrpAT53F8q588VVf5t4sDuwoPuc840,3102
|
|
170
170
|
flyte/remote/_client/auth/__init__.py,sha256=JQrIlwaqPlPzrxcOREhcfyFsC4LrfqL5TRz6A3JNSEA,413
|
|
171
|
-
flyte/remote/_client/auth/
|
|
171
|
+
flyte/remote/_client/auth/_auth_utils.py,sha256=Is6mr18J8AMQlbtu-Q63aMJgrZ27dXXNSig8KshR1_8,545
|
|
172
|
+
flyte/remote/_client/auth/_channel.py,sha256=LwFipIFIu7_oKqvpcRvApRNlXBNduCxdBw0o0bG-GMs,9213
|
|
172
173
|
flyte/remote/_client/auth/_client_config.py,sha256=Elit5TCLjMQDiktiUmMKy2POWwwb5rKgIXfG3-rpfbs,3304
|
|
173
174
|
flyte/remote/_client/auth/_default_html.py,sha256=XAdgP-25WySMODbusWOcQQPiXin1h-hfzmRJv_Dg3tE,1651
|
|
174
175
|
flyte/remote/_client/auth/_keyring.py,sha256=BL-FzGe5ryuBRCwwpvvG8IzkYuXiJTU2J0P1l-Za5IM,5176
|
|
175
|
-
flyte/remote/_client/auth/_token_client.py,sha256=
|
|
176
|
+
flyte/remote/_client/auth/_token_client.py,sha256=FxFaG_DcynQIZfEdAuJUsrcy0OnYbEr4gKLpu8WZHJo,10460
|
|
176
177
|
flyte/remote/_client/auth/errors.py,sha256=ZYS9k4GX_McacKhxHKt5V2A4CWjLUq4RkBx_goDTdHY,390
|
|
177
178
|
flyte/remote/_client/auth/_authenticators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
178
179
|
flyte/remote/_client/auth/_authenticators/base.py,sha256=7ygwRYIt_BoSNfUFuc0E7mS88xD9AkwIkSX2Cv8be34,16636
|
|
@@ -187,18 +188,19 @@ flyte/remote/_client/auth/_grpc_utils/default_metadata_interceptor.py,sha256=IoM
|
|
|
187
188
|
flyte/report/__init__.py,sha256=yLbeUxYaVaDlgBod3Oh34zGBSotl1UlXq1vUkb9q7cs,152
|
|
188
189
|
flyte/report/_report.py,sha256=36e0qikyY-Wsv4OzvTqkl23pk5ekrXIuhA4qsm_RRQs,5191
|
|
189
190
|
flyte/report/_template.html,sha256=YehmLJG3QMYQ10UT1YZBu2ncVmAJ4iyqVp5hF3sXRAs,3458
|
|
190
|
-
flyte/storage/__init__.py,sha256=
|
|
191
|
+
flyte/storage/__init__.py,sha256=kkOyqBXJVZSKt3ALitGn9zK6bkchy1-c3TOPB4QhPxk,499
|
|
192
|
+
flyte/storage/_config.py,sha256=xVibWJaioOnkeTb_M30azgiUe1jvmQaOWRZEkpdoTao,8680
|
|
191
193
|
flyte/storage/_remote_fs.py,sha256=kM_iszbccjVD5VtVdgfkl1FHS8NPnY__JOo_CPQUE4c,1124
|
|
192
|
-
flyte/storage/_storage.py,sha256=
|
|
194
|
+
flyte/storage/_storage.py,sha256=mBy7MKII2M1UTVm_EUUDwVb7uT1_AOPzQr2wCJ-fgW0,9873
|
|
193
195
|
flyte/storage/_utils.py,sha256=8oLCM-7D7JyJhzUi1_Q1NFx8GBUPRfou0T_5tPBmPbE,309
|
|
194
196
|
flyte/types/__init__.py,sha256=xMIYOolT3Vq0qXy7unw90IVdYztdMDpKg0oG0XAPC9o,364
|
|
195
|
-
flyte/types/_interface.py,sha256=
|
|
197
|
+
flyte/types/_interface.py,sha256=mY7mb8v2hJPGk7AU99gdOWl4_jArA1VFtjYGlE31SK0,953
|
|
196
198
|
flyte/types/_renderer.py,sha256=ygcCo5l60lHufyQISFddZfWwLlQ8kJAKxUT_XnR_6dY,4818
|
|
197
199
|
flyte/types/_string_literals.py,sha256=NlG1xV8RSA-sZ-n-IFQCAsdB6jXJOAKkHWtnopxVVDk,4231
|
|
198
|
-
flyte/types/_type_engine.py,sha256=
|
|
200
|
+
flyte/types/_type_engine.py,sha256=QxyoDWRG_whfLCz88YqEVVoTTnca0FZv9eHeLLT0_-s,93645
|
|
199
201
|
flyte/types/_utils.py,sha256=pbts9E1_2LTdLygAY0UYTLYJ8AsN3BZyviSXvrtcutc,2626
|
|
200
|
-
flyte-0.2.
|
|
201
|
-
flyte-0.2.
|
|
202
|
-
flyte-0.2.
|
|
203
|
-
flyte-0.2.
|
|
204
|
-
flyte-0.2.
|
|
202
|
+
flyte-0.2.0b3.dist-info/METADATA,sha256=Y0hyKBs_dOcuqW6I6JY2f0LhiT9yLt5MprRAUYpZH44,10271
|
|
203
|
+
flyte-0.2.0b3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
204
|
+
flyte-0.2.0b3.dist-info/entry_points.txt,sha256=xitFzPlyODadzpIwr-x1mFIpz0IFKpMUJl3dnmxgyPc,76
|
|
205
|
+
flyte-0.2.0b3.dist-info/top_level.txt,sha256=7dkyFbikvA12LEZEqawx8oDG1CMod6hTliPj7iWzgYo,6
|
|
206
|
+
flyte-0.2.0b3.dist-info/RECORD,,
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# This is a module that provides hashing utilities for Protobuf objects.
|
|
2
|
-
import base64
|
|
3
|
-
import hashlib
|
|
4
|
-
import json
|
|
5
|
-
|
|
6
|
-
from google.protobuf import json_format
|
|
7
|
-
from google.protobuf.message import Message
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def compute_hash(pb: Message) -> bytes:
|
|
11
|
-
"""
|
|
12
|
-
Computes a deterministic hash in bytes for the Protobuf object.
|
|
13
|
-
"""
|
|
14
|
-
try:
|
|
15
|
-
pb_dict = json_format.MessageToDict(pb)
|
|
16
|
-
# json.dumps with sorted keys to ensure stability
|
|
17
|
-
stable_json_str = json.dumps(
|
|
18
|
-
pb_dict, sort_keys=True, separators=(",", ":")
|
|
19
|
-
) # separators to ensure no extra spaces
|
|
20
|
-
except Exception as e:
|
|
21
|
-
raise ValueError(f"Failed to marshal Protobuf object {pb} to JSON with error: {e}")
|
|
22
|
-
|
|
23
|
-
try:
|
|
24
|
-
# Deterministically hash the JSON object to a byte array. Using SHA-256 for hashing here,
|
|
25
|
-
# assuming it provides a consistent hash output.
|
|
26
|
-
hash_obj = hashlib.sha256(stable_json_str.encode("utf-8"))
|
|
27
|
-
except Exception as e:
|
|
28
|
-
raise ValueError(f"Failed to hash JSON for Protobuf object {pb} with error: {e}")
|
|
29
|
-
|
|
30
|
-
# The digest is guaranteed to be 32 bytes long
|
|
31
|
-
return hash_obj.digest()
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
def compute_hash_string(pb: Message) -> str:
|
|
35
|
-
"""
|
|
36
|
-
Computes a deterministic hash in base64 encoded string for the Protobuf object
|
|
37
|
-
"""
|
|
38
|
-
hash_bytes = compute_hash(pb)
|
|
39
|
-
return base64.b64encode(hash_bytes).decode("utf-8")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|