truefoundry 0.5.2__py3-none-any.whl → 0.5.3__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 truefoundry might be problematic. Click here for more details.
- truefoundry/__init__.py +10 -1
- truefoundry/autodeploy/agents/base.py +1 -1
- truefoundry/autodeploy/agents/developer.py +1 -1
- truefoundry/autodeploy/agents/project_identifier.py +1 -1
- truefoundry/autodeploy/agents/tester.py +1 -1
- truefoundry/autodeploy/cli.py +2 -2
- truefoundry/autodeploy/tools/base.py +2 -1
- truefoundry/autodeploy/tools/commit.py +1 -1
- truefoundry/autodeploy/tools/docker_build.py +1 -1
- truefoundry/autodeploy/tools/docker_run.py +1 -1
- truefoundry/autodeploy/tools/file_type_counts.py +1 -1
- truefoundry/autodeploy/tools/list_files.py +1 -1
- truefoundry/autodeploy/tools/read_file.py +1 -2
- truefoundry/autodeploy/tools/send_request.py +1 -1
- truefoundry/autodeploy/tools/write_file.py +1 -1
- truefoundry/cli/util.py +12 -3
- truefoundry/common/auth_service_client.py +7 -4
- truefoundry/common/constants.py +3 -0
- truefoundry/common/credential_provider.py +7 -8
- truefoundry/common/exceptions.py +11 -7
- truefoundry/common/request_utils.py +96 -14
- truefoundry/common/servicefoundry_client.py +31 -29
- truefoundry/common/session.py +93 -0
- truefoundry/common/storage_provider_utils.py +331 -0
- truefoundry/common/utils.py +9 -9
- truefoundry/common/warnings.py +21 -0
- truefoundry/deploy/builder/builders/tfy_python_buildpack/dockerfile_template.py +8 -21
- truefoundry/deploy/cli/commands/deploy_command.py +4 -4
- truefoundry/deploy/lib/clients/servicefoundry_client.py +13 -14
- truefoundry/deploy/lib/dao/application.py +2 -2
- truefoundry/deploy/lib/dao/workspace.py +1 -1
- truefoundry/deploy/lib/session.py +1 -1
- truefoundry/deploy/v2/lib/deploy.py +2 -2
- truefoundry/deploy/v2/lib/deploy_workflow.py +1 -1
- truefoundry/deploy/v2/lib/patched_models.py +70 -4
- truefoundry/deploy/v2/lib/source.py +2 -1
- truefoundry/ml/artifact/truefoundry_artifact_repo.py +33 -297
- truefoundry/ml/autogen/client/__init__.py +3 -0
- truefoundry/ml/autogen/client/api/mlfoundry_artifacts_api.py +149 -0
- truefoundry/ml/autogen/client/models/__init__.py +3 -0
- truefoundry/ml/autogen/client/models/artifact_version_manifest.py +25 -1
- truefoundry/ml/autogen/client/models/get_artifact_version_aliases_response_dto.py +67 -0
- truefoundry/ml/autogen/client/models/model_version_manifest.py +18 -0
- truefoundry/ml/autogen/client_README.md +2 -0
- truefoundry/ml/autogen/entities/artifacts.py +7 -1
- truefoundry/ml/clients/servicefoundry_client.py +36 -15
- truefoundry/ml/exceptions.py +2 -1
- truefoundry/ml/log_types/artifacts/artifact.py +37 -4
- truefoundry/ml/log_types/artifacts/model.py +51 -10
- truefoundry/ml/log_types/artifacts/utils.py +2 -2
- truefoundry/ml/mlfoundry_api.py +6 -38
- truefoundry/ml/mlfoundry_run.py +6 -15
- truefoundry/ml/model_framework.py +5 -3
- truefoundry/ml/session.py +69 -97
- truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py +42 -9
- truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py +126 -7
- {truefoundry-0.5.2.dist-info → truefoundry-0.5.3.dist-info}/METADATA +2 -2
- {truefoundry-0.5.2.dist-info → truefoundry-0.5.3.dist-info}/RECORD +60 -59
- {truefoundry-0.5.2.dist-info → truefoundry-0.5.3.dist-info}/WHEEL +1 -1
- truefoundry/deploy/lib/auth/servicefoundry_session.py +0 -61
- truefoundry/ml/clients/entities.py +0 -8
- truefoundry/ml/clients/utils.py +0 -122
- {truefoundry-0.5.2.dist-info → truefoundry-0.5.3.dist-info}/entry_points.txt +0 -0
|
@@ -2,18 +2,44 @@
|
|
|
2
2
|
# pylint: disable=W0223
|
|
3
3
|
import io
|
|
4
4
|
import os
|
|
5
|
+
from concurrent.futures import FIRST_EXCEPTION, Future, ThreadPoolExecutor, wait
|
|
5
6
|
from pathlib import Path
|
|
6
|
-
from
|
|
7
|
+
from threading import Event
|
|
8
|
+
from typing import List, Optional, Tuple
|
|
7
9
|
|
|
8
10
|
from fsspec.spec import DEFAULT_CALLBACK, AbstractBufferedFile, AbstractFileSystem
|
|
9
11
|
|
|
10
12
|
from truefoundry.common.constants import ENV_VARS
|
|
11
|
-
from truefoundry.
|
|
13
|
+
from truefoundry.common.storage_provider_utils import (
|
|
14
|
+
MultiPartUpload,
|
|
15
|
+
SignedURL,
|
|
16
|
+
_FileMultiPartInfo,
|
|
17
|
+
decide_file_parts,
|
|
18
|
+
s3_compatible_multipart_upload,
|
|
19
|
+
)
|
|
20
|
+
from truefoundry.workflow.remote_filesystem.logger import log_time, logger
|
|
12
21
|
from truefoundry.workflow.remote_filesystem.tfy_signed_url_client import (
|
|
13
22
|
LOG_PREFIX,
|
|
14
23
|
SignedURLClient,
|
|
24
|
+
SignedURLMultipartUploadAPIResponseDto,
|
|
15
25
|
)
|
|
16
26
|
|
|
27
|
+
MULTIPART_SUPPORTED_PROVIDERS = ["s3"]
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _add_file_for_upload(
|
|
31
|
+
local_file: str,
|
|
32
|
+
remote_path: str,
|
|
33
|
+
files_for_normal_upload: List[Tuple[str, str, _FileMultiPartInfo]],
|
|
34
|
+
files_for_multipart_upload: List[Tuple[str, str, _FileMultiPartInfo]],
|
|
35
|
+
multipart_upload_allowed: bool,
|
|
36
|
+
):
|
|
37
|
+
multipart_info = decide_file_parts(local_file, multipart_upload_allowed)
|
|
38
|
+
if multipart_info.num_parts == 1:
|
|
39
|
+
files_for_normal_upload.append((remote_path, local_file, multipart_info))
|
|
40
|
+
else:
|
|
41
|
+
files_for_multipart_upload.append((remote_path, local_file, multipart_info))
|
|
42
|
+
|
|
17
43
|
|
|
18
44
|
class SignedURLFileSystem(AbstractFileSystem):
|
|
19
45
|
def __init__(
|
|
@@ -100,7 +126,13 @@ class SignedURLFileSystem(AbstractFileSystem):
|
|
|
100
126
|
maxdepth=None,
|
|
101
127
|
**kwargs,
|
|
102
128
|
):
|
|
129
|
+
files_for_normal_upload: List[Tuple[str, str, _FileMultiPartInfo]] = []
|
|
130
|
+
files_for_multipart_upload: List[Tuple[str, str, _FileMultiPartInfo]] = []
|
|
103
131
|
local_path = Path(lpath)
|
|
132
|
+
multipart_upload_allowed = (
|
|
133
|
+
self.protocol in MULTIPART_SUPPORTED_PROVIDERS
|
|
134
|
+
and not ENV_VARS.TFY_ARTIFACTS_DISABLE_MULTIPART_UPLOAD
|
|
135
|
+
)
|
|
104
136
|
if local_path.is_dir():
|
|
105
137
|
if not recursive:
|
|
106
138
|
raise ValueError(
|
|
@@ -127,15 +159,102 @@ class SignedURLFileSystem(AbstractFileSystem):
|
|
|
127
159
|
for file in files:
|
|
128
160
|
local_file_path = Path(root) / file
|
|
129
161
|
remote_file_path = f"{remote_dir}/{file}"
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
162
|
+
_add_file_for_upload(
|
|
163
|
+
local_file=str(local_file_path),
|
|
164
|
+
remote_path=str(remote_file_path),
|
|
165
|
+
files_for_normal_upload=files_for_normal_upload,
|
|
166
|
+
files_for_multipart_upload=files_for_multipart_upload,
|
|
167
|
+
multipart_upload_allowed=multipart_upload_allowed,
|
|
133
168
|
)
|
|
134
|
-
return None
|
|
135
169
|
else:
|
|
136
170
|
if rpath.endswith("/"):
|
|
137
171
|
rpath = os.path.join(rpath, local_path.name)
|
|
138
|
-
|
|
172
|
+
_add_file_for_upload(
|
|
173
|
+
local_file=str(lpath),
|
|
174
|
+
remote_path=str(rpath),
|
|
175
|
+
files_for_normal_upload=files_for_normal_upload,
|
|
176
|
+
files_for_multipart_upload=files_for_multipart_upload,
|
|
177
|
+
multipart_upload_allowed=multipart_upload_allowed,
|
|
178
|
+
)
|
|
179
|
+
return self._upload(
|
|
180
|
+
files_for_normal_upload=files_for_normal_upload,
|
|
181
|
+
files_for_multipart_upload=files_for_multipart_upload,
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
def _upload(
|
|
185
|
+
self,
|
|
186
|
+
files_for_normal_upload: List[Tuple[str, str, _FileMultiPartInfo]],
|
|
187
|
+
files_for_multipart_upload: List[Tuple[str, str, _FileMultiPartInfo]],
|
|
188
|
+
):
|
|
189
|
+
abort_event = Event()
|
|
190
|
+
with ThreadPoolExecutor(
|
|
191
|
+
max_workers=ENV_VARS.TFY_ARTIFACTS_UPLOAD_MAX_WORKERS
|
|
192
|
+
) as executor:
|
|
193
|
+
futures: List[Future] = []
|
|
194
|
+
for remote_path, local_path, _ in files_for_normal_upload:
|
|
195
|
+
futures.append(
|
|
196
|
+
executor.submit(
|
|
197
|
+
self.client.upload,
|
|
198
|
+
file_path=local_path,
|
|
199
|
+
storage_uri=remote_path,
|
|
200
|
+
)
|
|
201
|
+
)
|
|
202
|
+
|
|
203
|
+
done, not_done = wait(futures, return_when=FIRST_EXCEPTION)
|
|
204
|
+
if len(not_done) > 0:
|
|
205
|
+
abort_event.set()
|
|
206
|
+
for future in not_done:
|
|
207
|
+
future.cancel()
|
|
208
|
+
for future in done:
|
|
209
|
+
if future.exception() is not None:
|
|
210
|
+
raise future.exception()
|
|
211
|
+
|
|
212
|
+
for remote_path, local_path, multipart_info in files_for_multipart_upload:
|
|
213
|
+
self._multipart_upload(
|
|
214
|
+
local_file=local_path,
|
|
215
|
+
artifact_path=remote_path,
|
|
216
|
+
multipart_info=multipart_info,
|
|
217
|
+
executor=executor,
|
|
218
|
+
abort_event=abort_event,
|
|
219
|
+
)
|
|
220
|
+
|
|
221
|
+
def _multipart_upload(
|
|
222
|
+
self,
|
|
223
|
+
local_file: str,
|
|
224
|
+
artifact_path: str,
|
|
225
|
+
multipart_info: _FileMultiPartInfo,
|
|
226
|
+
executor: ThreadPoolExecutor,
|
|
227
|
+
abort_event: Optional[Event] = None,
|
|
228
|
+
):
|
|
229
|
+
logger.info(
|
|
230
|
+
"Uploading %s to %s using multipart upload",
|
|
231
|
+
local_file,
|
|
232
|
+
artifact_path,
|
|
233
|
+
)
|
|
234
|
+
|
|
235
|
+
multipart_upload: SignedURLMultipartUploadAPIResponseDto = (
|
|
236
|
+
self.client.create_multipart_upload(
|
|
237
|
+
storage_uri=artifact_path,
|
|
238
|
+
num_parts=multipart_info.num_parts,
|
|
239
|
+
)
|
|
240
|
+
)
|
|
241
|
+
s3_compatible_multipart_upload(
|
|
242
|
+
multipart_upload=MultiPartUpload(
|
|
243
|
+
storage_provider=multipart_upload.storageProvider,
|
|
244
|
+
part_signed_urls=[
|
|
245
|
+
SignedURL(signed_url=url.signedUrl)
|
|
246
|
+
for url in multipart_upload.partSignedUrls
|
|
247
|
+
],
|
|
248
|
+
s3_compatible_upload_id=multipart_upload.uploadId,
|
|
249
|
+
finalize_signed_url=SignedURL(
|
|
250
|
+
signed_url=multipart_upload.finalizeSignedUrl
|
|
251
|
+
),
|
|
252
|
+
),
|
|
253
|
+
local_file=local_file,
|
|
254
|
+
executor=executor,
|
|
255
|
+
multipart_info=multipart_info,
|
|
256
|
+
abort_event=abort_event,
|
|
257
|
+
)
|
|
139
258
|
|
|
140
259
|
@log_time(prefix=LOG_PREFIX)
|
|
141
260
|
def isdir(self, path):
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
truefoundry/__init__.py,sha256=
|
|
1
|
+
truefoundry/__init__.py,sha256=Go9M0PvV9kYX8dhldJzpH0RAYB_Pc1kVOxfNlsps89c,321
|
|
2
2
|
truefoundry/autodeploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
3
|
truefoundry/autodeploy/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
truefoundry/autodeploy/agents/base.py,sha256=
|
|
5
|
-
truefoundry/autodeploy/agents/developer.py,sha256=
|
|
6
|
-
truefoundry/autodeploy/agents/project_identifier.py,sha256=
|
|
7
|
-
truefoundry/autodeploy/agents/tester.py,sha256=
|
|
8
|
-
truefoundry/autodeploy/cli.py,sha256=
|
|
4
|
+
truefoundry/autodeploy/agents/base.py,sha256=lYw6bKhfCWff5BbtXXn2k4MjMbRIUkOwPBjRT70iXE8,6420
|
|
5
|
+
truefoundry/autodeploy/agents/developer.py,sha256=tO9vmgGjoaqK4rX-DFCyMrViFC2Oqofd89WoXqsEm-A,4142
|
|
6
|
+
truefoundry/autodeploy/agents/project_identifier.py,sha256=KlF7FwrGHDCjF3y3-YaCDxZ8kE34s6XPBagXhG2U1aM,4520
|
|
7
|
+
truefoundry/autodeploy/agents/tester.py,sha256=lqvVBuVcFRvGZnSLAUF2r-1-Yti20o_cbybU19IlSXo,2418
|
|
8
|
+
truefoundry/autodeploy/cli.py,sha256=9ZxKu_MGIpraMzaW4ZyuQZhlKIQYE3biBrBV4S1h6Fo,14167
|
|
9
9
|
truefoundry/autodeploy/constants.py,sha256=vTh2nA7cjqghqbW2rNh3FbtcIk2scdAWZuuQCmVBO80,1273
|
|
10
10
|
truefoundry/autodeploy/exception.py,sha256=fa_ZyTDUKiMKG2Uayynk1yWcEMsuVluqk2GtV4tfTPU,158
|
|
11
11
|
truefoundry/autodeploy/logger.py,sha256=tkV2UKcOTFl5nz0cn4eRbzxF-2CZd8b7MK9vnhaflYw,325
|
|
12
12
|
truefoundry/autodeploy/tools/__init__.py,sha256=9zJiC1d4bv9EL-p5XTCa9fAQ6ZKV--AbgeLz9bBBkyQ,875
|
|
13
13
|
truefoundry/autodeploy/tools/ask.py,sha256=MxUFLP7rjpdJ85gCc3El0wUqTZDjpjAw7WOTdV4LLWE,856
|
|
14
|
-
truefoundry/autodeploy/tools/base.py,sha256=
|
|
15
|
-
truefoundry/autodeploy/tools/commit.py,sha256=
|
|
16
|
-
truefoundry/autodeploy/tools/docker_build.py,sha256=
|
|
17
|
-
truefoundry/autodeploy/tools/docker_run.py,sha256=
|
|
18
|
-
truefoundry/autodeploy/tools/file_type_counts.py,sha256=
|
|
19
|
-
truefoundry/autodeploy/tools/list_files.py,sha256=
|
|
20
|
-
truefoundry/autodeploy/tools/read_file.py,sha256=
|
|
21
|
-
truefoundry/autodeploy/tools/send_request.py,sha256=
|
|
22
|
-
truefoundry/autodeploy/tools/write_file.py,sha256=
|
|
14
|
+
truefoundry/autodeploy/tools/base.py,sha256=Ltzj2d6DO1gUMx_qSt2c2Zq91MJ5V4FJXpZwl4T3F8M,795
|
|
15
|
+
truefoundry/autodeploy/tools/commit.py,sha256=MXqPnCnMHagvimSCCBGYsAbNdl7k1pf05BBBRjOP8b8,6051
|
|
16
|
+
truefoundry/autodeploy/tools/docker_build.py,sha256=tAG62G1bk-kYrbRykieXxU48nkOlv3IcAv25k6zdTz8,4015
|
|
17
|
+
truefoundry/autodeploy/tools/docker_run.py,sha256=PuiIvF41_L3JJN_EyoU-PAr2YkZEu0C9XX0ABcTFoJk,5076
|
|
18
|
+
truefoundry/autodeploy/tools/file_type_counts.py,sha256=DUcULN0S2qIrZKTTTfz7GXeRy6RKtHSIeVkeECeEQZw,2369
|
|
19
|
+
truefoundry/autodeploy/tools/list_files.py,sha256=HNZdsz-m-Jxf5yrf2bn7kRplIsNACP69Ozd4bpjlGMk,2657
|
|
20
|
+
truefoundry/autodeploy/tools/read_file.py,sha256=ZpgTNef2-plWEoX4UHcVFVzHmNGoqZrvVUn1OVY_rrE,2268
|
|
21
|
+
truefoundry/autodeploy/tools/send_request.py,sha256=Ea6MG0esSik7ZtWNIx9yTHlKJ593CQc11bET_YeRZgc,1703
|
|
22
|
+
truefoundry/autodeploy/tools/write_file.py,sha256=tSO8LEwVJZbF17zva7FWE426_-C8pB5FVwc1vClpFjY,3145
|
|
23
23
|
truefoundry/autodeploy/utils/client.py,sha256=PvbSkfgAjAogGjisinqmh4mP4svowxAC0IwzEQz3Ai0,453
|
|
24
24
|
truefoundry/autodeploy/utils/diff.py,sha256=Ef8Y-VffDKel_-q-GxRam6gqiv8qTLMcqVg6iifXfcA,5358
|
|
25
25
|
truefoundry/autodeploy/utils/pydantic_compat.py,sha256=hEAUy5kLjhPdzw7yGZ2iXGMXbbMVXVlGzIofmyHafXQ,412
|
|
@@ -29,17 +29,20 @@ truefoundry/cli/config.py,sha256=tf8w4UfVzcC6eYkENvuuCPYt_V3sqVpO1bclORV9tAk,206
|
|
|
29
29
|
truefoundry/cli/console.py,sha256=9-dMy4YPisCJQziRKTg8Qa0UJnOGl1soiUnJjsnLDvE,242
|
|
30
30
|
truefoundry/cli/const.py,sha256=dVHPo1uAiDSSMXwXoT2mR5kNQjExT98QNVRz98Hz_Ts,510
|
|
31
31
|
truefoundry/cli/display_util.py,sha256=vypx4FQImmDwl2QAj7GpjwlpvG3VFhqoNPvCkBzGqNg,3120
|
|
32
|
-
truefoundry/cli/util.py,sha256=
|
|
32
|
+
truefoundry/cli/util.py,sha256=gLSKts2js8ThKXV19p2ENv5seSf12PrUemUsveNmcGY,3717
|
|
33
33
|
truefoundry/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
|
-
truefoundry/common/auth_service_client.py,sha256=
|
|
35
|
-
truefoundry/common/constants.py,sha256=
|
|
34
|
+
truefoundry/common/auth_service_client.py,sha256=N3YxKlx63r6cPZqbgb2lqBOPI69ShB7D7RCIq4FSCjc,7949
|
|
35
|
+
truefoundry/common/constants.py,sha256=WQjylPv7xTVYURv4zicJUHYL73Gv3c3i6Iw4oy9Lhg4,2744
|
|
36
36
|
truefoundry/common/credential_file_manager.py,sha256=1yEk1Zm2xS4G0VDFwKSZ4w0VUrcPWQ1nJnoBaz9xyKA,4251
|
|
37
|
-
truefoundry/common/credential_provider.py,sha256=
|
|
37
|
+
truefoundry/common/credential_provider.py,sha256=R666i1ADKb2ldwEVh9lnaFcPaa4q3vAscIX3MX1UiFA,4097
|
|
38
38
|
truefoundry/common/entities.py,sha256=8O-EGPk4PKqnyoFMKUTxISCU19rz0KBnfRDJU695DhY,3797
|
|
39
|
-
truefoundry/common/exceptions.py,sha256=
|
|
40
|
-
truefoundry/common/request_utils.py,sha256=
|
|
41
|
-
truefoundry/common/servicefoundry_client.py,sha256=
|
|
42
|
-
truefoundry/common/
|
|
39
|
+
truefoundry/common/exceptions.py,sha256=jkU0N7hV_P-EhXeud4I5vuB9glXXZSWPf8LcH04mSbw,459
|
|
40
|
+
truefoundry/common/request_utils.py,sha256=e9qrAQ1MutU7JALDKcucmNd0KQEVBqgW3yx0w1zeHIU,5700
|
|
41
|
+
truefoundry/common/servicefoundry_client.py,sha256=295ZXOEM46lXZP59O04XFTDCsZLtz3MssXRDMk2x9hg,3169
|
|
42
|
+
truefoundry/common/session.py,sha256=BiTJ2WEzLkTvzpqy67xX3fXgiKH_ltzzmQdFG7xUtwI,2904
|
|
43
|
+
truefoundry/common/storage_provider_utils.py,sha256=yURhMw8k0FLFvaviRHDiifhvc6GnuQwGMC9Qd2uM440,10934
|
|
44
|
+
truefoundry/common/utils.py,sha256=sZyg-vpShVXvnrwnINrdsyWJR3FHMUBiOB1CslYdQTo,6072
|
|
45
|
+
truefoundry/common/warnings.py,sha256=rs6BHwk7imQYedo07iwh3TWEOywAR3Lqhj0AY4khByg,504
|
|
43
46
|
truefoundry/deploy/__init__.py,sha256=p14_yIJw2bcaKW3c1DTaoM7UwfHvt2T_MfeFlZIz1g4,2359
|
|
44
47
|
truefoundry/deploy/auto_gen/models.py,sha256=3_GTdaYE95piMzhbM4SvMSQhP4UGWDGpJnLxERjYHGw,82555
|
|
45
48
|
truefoundry/deploy/builder/__init__.py,sha256=1qjHMNBE1poRCZW0WrG46dFM1f1IlivD5352qzsioMU,4953
|
|
@@ -48,7 +51,7 @@ truefoundry/deploy/builder/builders/dockerfile.py,sha256=AXXTziCkaqIhuM_bwyD1vT1
|
|
|
48
51
|
truefoundry/deploy/builder/builders/tfy_notebook_buildpack/__init__.py,sha256=x_GwRFKz-Kb4-ZlxOFjBlr0mTgUDe_hVeG4dsIbHo8c,1796
|
|
49
52
|
truefoundry/deploy/builder/builders/tfy_notebook_buildpack/dockerfile_template.py,sha256=rQgdvKmAT9HArVW4TAG5yd2QTKRs3S5LJ9RQbc_EkHE,2518
|
|
50
53
|
truefoundry/deploy/builder/builders/tfy_python_buildpack/__init__.py,sha256=9r1PYahn-HfzpMth6NkvJoycmmHQpSl0vIVZxWF12xI,1864
|
|
51
|
-
truefoundry/deploy/builder/builders/tfy_python_buildpack/dockerfile_template.py,sha256=
|
|
54
|
+
truefoundry/deploy/builder/builders/tfy_python_buildpack/dockerfile_template.py,sha256=X9mKH7SGZLGZGvY0S2aPB3sgWdSR9TY4eVXtqz_idEA,8973
|
|
52
55
|
truefoundry/deploy/builder/constants.py,sha256=amUkHoHvVKzGv0v_knfiioRuKiJM0V0xW0diERgWiI0,508
|
|
53
56
|
truefoundry/deploy/builder/docker_service.py,sha256=OI8efqK0Gnoii8bcHihpA2StwHVzsMREfBk7NvMR4hY,3950
|
|
54
57
|
truefoundry/deploy/builder/utils.py,sha256=D68-bqM0NQx-Elg-56mtkENyVyg9faZ9tgTmBuo1Sjs,1076
|
|
@@ -59,7 +62,7 @@ truefoundry/deploy/cli/commands/build_command.py,sha256=zJBywMatbpUlXx5O2aqpEVmP
|
|
|
59
62
|
truefoundry/deploy/cli/commands/build_logs_command.py,sha256=DE_yprQQ6PrhOQo3xsYxGWQrXSopzSYDkt3hWB4n728,2790
|
|
60
63
|
truefoundry/deploy/cli/commands/create_command.py,sha256=rCajvQvAfZU10nDZOYpRACbAATH1zj52ihTWrhnLLUc,1829
|
|
61
64
|
truefoundry/deploy/cli/commands/delete_command.py,sha256=JMibxvt1rsZ8sODa0jI1e6vavjN8Pv04ttVFURSTKTw,2362
|
|
62
|
-
truefoundry/deploy/cli/commands/deploy_command.py,sha256=
|
|
65
|
+
truefoundry/deploy/cli/commands/deploy_command.py,sha256=YW4OG-5ZD1BZn82ckrNInNRHWxVOwaUjHhRTgfCEUCU,3890
|
|
63
66
|
truefoundry/deploy/cli/commands/deploy_init_command.py,sha256=g-jBfrEmhZ0TDWsyqPDn4K6q33EqJSGmBTt1eMYig-w,600
|
|
64
67
|
truefoundry/deploy/cli/commands/get_command.py,sha256=HZQGWib-qrS0RdzctRDwDLfMGu0wqWkAM1u26cTZlsc,5944
|
|
65
68
|
truefoundry/deploy/cli/commands/list_command.py,sha256=zKu_JWY35eMIzgSNFYtmwi2uezZ4k-8yk3C1Vqsvshc,4470
|
|
@@ -78,37 +81,36 @@ truefoundry/deploy/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
|
78
81
|
truefoundry/deploy/io/output_callback.py,sha256=V2YwUFec4G4a67lM4r-x_64AqdOVNo_9sTdfQWLlvi0,604
|
|
79
82
|
truefoundry/deploy/io/rich_output_callback.py,sha256=TJLiRD-EnFVwgcepxR7WN0koKqW1X2DevETPhNPi_nU,829
|
|
80
83
|
truefoundry/deploy/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
|
-
truefoundry/deploy/lib/auth/servicefoundry_session.py,sha256=5TCYPunAygtn5mb0mp_VcWKEalKMKPbyWMWer-Vty2g,1916
|
|
82
84
|
truefoundry/deploy/lib/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
|
-
truefoundry/deploy/lib/clients/servicefoundry_client.py,sha256=
|
|
85
|
+
truefoundry/deploy/lib/clients/servicefoundry_client.py,sha256=E1AZo3KmvvXoCQV4Z7A8Iy_iPH8HethHPR-xnAImEEE,26096
|
|
84
86
|
truefoundry/deploy/lib/const.py,sha256=Wg0GDnfFu-g1fJr4lU80NH2ULw0R0dYjV7LnW-PbOeM,173
|
|
85
87
|
truefoundry/deploy/lib/dao/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
86
|
-
truefoundry/deploy/lib/dao/application.py,sha256=
|
|
88
|
+
truefoundry/deploy/lib/dao/application.py,sha256=oMszpueXPUfTUuN_XdKwoRjQyqAgWHhZ-10cbprCVdM,9226
|
|
87
89
|
truefoundry/deploy/lib/dao/apply.py,sha256=Jadfa3DcbIRz-Bb4Tlixed179HLDnmDXOlrvSxfEgQ0,3021
|
|
88
90
|
truefoundry/deploy/lib/dao/version.py,sha256=AtdW_4O1DPUKdfv2qy6iUJsZ_95vM6z0AqeEy3WDKs8,1130
|
|
89
|
-
truefoundry/deploy/lib/dao/workspace.py,sha256=
|
|
91
|
+
truefoundry/deploy/lib/dao/workspace.py,sha256=6YvfCgWDzAULI3Q6JswyZmP1CwJ5rM-ANsIFkbQia0Q,2349
|
|
90
92
|
truefoundry/deploy/lib/logs_utils.py,sha256=SQxRv3jDDmgHdOUMhlMaAPGYskybnBUMpst7QU_i_sc,1469
|
|
91
93
|
truefoundry/deploy/lib/messages.py,sha256=nhp0bCYf_XpUM68hTq5lBY-__vtEyV2uP7NgnJXJ_Vg,925
|
|
92
94
|
truefoundry/deploy/lib/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
93
95
|
truefoundry/deploy/lib/model/entity.py,sha256=3YRdyvMYI1aUXUu2tB5b5lZWwpxKdAhjpT79gzTCZGo,8373
|
|
94
|
-
truefoundry/deploy/lib/session.py,sha256=
|
|
96
|
+
truefoundry/deploy/lib/session.py,sha256=rNMkdzZejrxq5gTYTqJ-nGm869JzdlhHzaJQvINTQ4U,4953
|
|
95
97
|
truefoundry/deploy/lib/util.py,sha256=J7r8San2wKo48A7-BlH2-OKTlBO67zlPjLEhMsL8os0,1059
|
|
96
98
|
truefoundry/deploy/lib/win32.py,sha256=1RcvPTdlOAJ48rt8rCbE2Ufha2ztRqBAE9dueNXArrY,5009
|
|
97
99
|
truefoundry/deploy/python_deploy_codegen.py,sha256=qJHH1BJQII9e6PhkcRFYiE_3De7_VMMm8nM4AX5Eq1o,6513
|
|
98
100
|
truefoundry/deploy/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
99
101
|
truefoundry/deploy/v2/lib/__init__.py,sha256=WEiVMZXOVljzEE3tpGJil14liIn_PCDoACJ6b3tZ6sI,188
|
|
100
|
-
truefoundry/deploy/v2/lib/deploy.py,sha256=
|
|
101
|
-
truefoundry/deploy/v2/lib/deploy_workflow.py,sha256=
|
|
102
|
+
truefoundry/deploy/v2/lib/deploy.py,sha256=oK5yTlrhzKNTGZckwuBzu8Q_pxQYgBVcdA-KB-SbzCI,11990
|
|
103
|
+
truefoundry/deploy/v2/lib/deploy_workflow.py,sha256=6Y4PNhd5PCc_4TjpcIZPkr6FCm3BNIQ_SsJTvpUu7a0,12579
|
|
102
104
|
truefoundry/deploy/v2/lib/deployable_patched_models.py,sha256=MROgMxhn9hDEAKwJSWl3iz12tUVvRKzEtqF2QUT6dAk,3343
|
|
103
105
|
truefoundry/deploy/v2/lib/models.py,sha256=pSolLMTArDuYpeNsmeeS5DWliloN_iCDfZSpRllMHUg,1120
|
|
104
|
-
truefoundry/deploy/v2/lib/patched_models.py,sha256=
|
|
105
|
-
truefoundry/deploy/v2/lib/source.py,sha256=
|
|
106
|
+
truefoundry/deploy/v2/lib/patched_models.py,sha256=YDM75pdUPdMFgH2G8ZNbztalLIiMcHVHBHt7cLWmiDg,16050
|
|
107
|
+
truefoundry/deploy/v2/lib/source.py,sha256=tzMSOTrTH3dJzICjo8gI8iY6n0-ckktP3Dh7bVK-nTI,9344
|
|
106
108
|
truefoundry/logger.py,sha256=u-YCNjg5HBwE70uQcpjIG64Ghos-K2ulTWaxC03BSj4,714
|
|
107
109
|
truefoundry/ml/__init__.py,sha256=ssUEIs8BixPWxynKoeSh-dkRl6AtLXG0PBGYnUR5Az8,2217
|
|
108
110
|
truefoundry/ml/artifact/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
109
|
-
truefoundry/ml/artifact/truefoundry_artifact_repo.py,sha256=
|
|
111
|
+
truefoundry/ml/artifact/truefoundry_artifact_repo.py,sha256=myDpr3RZzEkd_UG9C3rZ4UKEFxXopO5HMVJNpNDiuAo,37737
|
|
110
112
|
truefoundry/ml/autogen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
111
|
-
truefoundry/ml/autogen/client/__init__.py,sha256=
|
|
113
|
+
truefoundry/ml/autogen/client/__init__.py,sha256=28MIn6pjqHZlnjuljt-kgrR7Dw07It7khbMZm3dlQlY,20118
|
|
112
114
|
truefoundry/ml/autogen/client/api/__init__.py,sha256=NyMBxBmIzB1o5LzZZwz9LiydHB3-hPqc_sevsnY6Jrw,746
|
|
113
115
|
truefoundry/ml/autogen/client/api/auth_api.py,sha256=zpWzJhUmW6HHMY_atlUf0B25k77E1kue2hmix5I5Ih0,7017
|
|
114
116
|
truefoundry/ml/autogen/client/api/deprecated_api.py,sha256=mu5x_skNcwz8v1Tr6VP72-tVP7pmBV9muyKy_2NH3F0,38824
|
|
@@ -116,14 +118,14 @@ truefoundry/ml/autogen/client/api/experiments_api.py,sha256=mRKS8qGzcFJUpTWjfQoF
|
|
|
116
118
|
truefoundry/ml/autogen/client/api/generate_code_snippet_api.py,sha256=C8iABP-pYIyIoTlL8PFi3ZBG_6B_dkQf09eErNeoj7A,22316
|
|
117
119
|
truefoundry/ml/autogen/client/api/health_api.py,sha256=IAPhRAo9CLUT5ipVR1fCf-qDx57UR0wg5ekhtUl8lug,11554
|
|
118
120
|
truefoundry/ml/autogen/client/api/metrics_api.py,sha256=q3L38eD-2hu4_9YvcSdnWDYXD2V8il-X9reinOAABek,14908
|
|
119
|
-
truefoundry/ml/autogen/client/api/mlfoundry_artifacts_api.py,sha256=
|
|
121
|
+
truefoundry/ml/autogen/client/api/mlfoundry_artifacts_api.py,sha256=i3OaGysy3Th-ZVqJ6HenSn7W7cQkRUDS_G5D28tk6e4,319913
|
|
120
122
|
truefoundry/ml/autogen/client/api/run_artifacts_api.py,sha256=x-vVnY2LEFChZxiiFauswRWwFz6Qqh30PKXjzuTvxmc,8799
|
|
121
123
|
truefoundry/ml/autogen/client/api/runs_api.py,sha256=-aghrZ2VYuZOw_vBtOzWDsnK7Ji29oZQxK2CLRgyo2w,119232
|
|
122
124
|
truefoundry/ml/autogen/client/api_client.py,sha256=M31IycWorn10FYS8WbO_Whaipr0tVu2pVWFCfbS7XCo,29167
|
|
123
125
|
truefoundry/ml/autogen/client/api_response.py,sha256=KRyvecPMXF05PaxILHZ8JHoP4rgKBjKONMgG83aU-rM,844
|
|
124
126
|
truefoundry/ml/autogen/client/configuration.py,sha256=V1oaEnxt-NfpaNmp-EZpf2glovzVhM2coWYt8HBNB4M,15723
|
|
125
127
|
truefoundry/ml/autogen/client/exceptions.py,sha256=XbCbDHhYT3BVejdoGNPgEa4oS56ypkwFdxk1iOc_tFY,5355
|
|
126
|
-
truefoundry/ml/autogen/client/models/__init__.py,sha256=
|
|
128
|
+
truefoundry/ml/autogen/client/models/__init__.py,sha256=m2SztLLPzl_aifXj8-aFFl_gqkArLijw0ZLabOFOdCM,18740
|
|
127
129
|
truefoundry/ml/autogen/client/models/add_custom_metrics_to_model_version_request_dto.py,sha256=_ISDspicTGjBCYYXubKfRYYSSQVyW3AvG-jFh47-Zfc,2163
|
|
128
130
|
truefoundry/ml/autogen/client/models/add_features_to_model_version_request_dto.py,sha256=OT1-98DyWNfAHz_EgD2gMX2XkrGQ4Re945fhoAl8qSE,2099
|
|
129
131
|
truefoundry/ml/autogen/client/models/agent.py,sha256=lUAbs092yo9hZmqzX6atKebDNf1uEwTf5jLvjOdvoeM,3872
|
|
@@ -135,7 +137,7 @@ truefoundry/ml/autogen/client/models/artifact_dto.py,sha256=JWL8_sITJJXbxywcfRj4
|
|
|
135
137
|
truefoundry/ml/autogen/client/models/artifact_response_dto.py,sha256=T_HLjkHnqiO1bnSXiCUOlwDEHGz89mlUNhBq0SJTapo,2226
|
|
136
138
|
truefoundry/ml/autogen/client/models/artifact_type.py,sha256=LBXGYUoesmL5J-0xzCR8jBST3bjb6HY86RmqSGvytRs,828
|
|
137
139
|
truefoundry/ml/autogen/client/models/artifact_version_dto.py,sha256=GXjjKycpsEgJ60V2hAfL4NMxM2gZKLP2qV2yBb9WgdM,6174
|
|
138
|
-
truefoundry/ml/autogen/client/models/artifact_version_manifest.py,sha256=
|
|
140
|
+
truefoundry/ml/autogen/client/models/artifact_version_manifest.py,sha256=AOg17pPxbOuqmSLCBj_us4_heijpr_k-CZWnl87RExw,4829
|
|
139
141
|
truefoundry/ml/autogen/client/models/artifact_version_response_dto.py,sha256=JmiSYdPYG-ki6LCBeF7NtihdQ2LPiHld8cSPivY2GmQ,2421
|
|
140
142
|
truefoundry/ml/autogen/client/models/artifact_version_serialization_format.py,sha256=2Qfgq1nykn0_mKNEJzOxhQwHm_95WIr9wJcHLeFWXQM,774
|
|
141
143
|
truefoundry/ml/autogen/client/models/artifact_version_status.py,sha256=iIcomqhuaJkZH2rT3e6IjQutM79t9hEshW-RCIMKHEY,780
|
|
@@ -186,6 +188,7 @@ truefoundry/ml/autogen/client/models/fast_ai_framework.py,sha256=GwVoMbIzYhr4srF
|
|
|
186
188
|
truefoundry/ml/autogen/client/models/file_info_dto.py,sha256=7oc8venicsFVk8zT9wHNhHnZGtFkFlqimFnS7ozGL9k,2156
|
|
187
189
|
truefoundry/ml/autogen/client/models/finalize_artifact_version_request_dto.py,sha256=tkPcNjI0_qhX-D3m6AXqLzdmo9_K0tFBtbPDeg0Zo7U,3818
|
|
188
190
|
truefoundry/ml/autogen/client/models/framework.py,sha256=W_KrqH1qKRvlrssCCWFIlmPaeAw0eiM6VqS3pbdlMXU,14720
|
|
191
|
+
truefoundry/ml/autogen/client/models/get_artifact_version_aliases_response_dto.py,sha256=W064ced8EQCeyJLpKikEtkCzuiqUDwNjS56sh7Mc3yg,2029
|
|
189
192
|
truefoundry/ml/autogen/client/models/get_experiment_response_dto.py,sha256=FhJpoUeRbZV1s1KR3Y07Kv6U4enLbbgdpGbguT9us0A,2923
|
|
190
193
|
truefoundry/ml/autogen/client/models/get_latest_run_log_response_dto.py,sha256=g5NG252VzjGHiA-w5nhxmZxGrowJO9XCHDQTjf8y2KE,2266
|
|
191
194
|
truefoundry/ml/autogen/client/models/get_metric_history_response.py,sha256=rTchO8o4sjGsNaZj8TW-VGtGGxsOBjUGzgaAWNtBZ-k,2428
|
|
@@ -244,7 +247,7 @@ truefoundry/ml/autogen/client/models/model_response_dto.py,sha256=osrTxfygkuhxWj
|
|
|
244
247
|
truefoundry/ml/autogen/client/models/model_server.py,sha256=N5mcWmnX0KzTMtTH8A9h_FmiQcMld3B8CXD_UYeDKaA,700
|
|
245
248
|
truefoundry/ml/autogen/client/models/model_version_dto.py,sha256=9Mh4d8V33gEGYr4sys5lYYDA3bHKajR3oAZLZMAy_io,7094
|
|
246
249
|
truefoundry/ml/autogen/client/models/model_version_environment.py,sha256=wTayQjMen24eJCqXQugzoXLANY5NXdVsAvZSh-QIhJA,2827
|
|
247
|
-
truefoundry/ml/autogen/client/models/model_version_manifest.py,sha256=
|
|
250
|
+
truefoundry/ml/autogen/client/models/model_version_manifest.py,sha256=UrusTkY39LBGpVfjIt0xG-zbnSIa6zVfqzxMXOQGOPI,5822
|
|
248
251
|
truefoundry/ml/autogen/client/models/model_version_response_dto.py,sha256=D6XOCyggxqTkbePuypqYSHYh1PYeDv7R_J32q61sDM0,2320
|
|
249
252
|
truefoundry/ml/autogen/client/models/multi_part_upload_dto.py,sha256=Ckq405vud8RQmMyKCJQJBlW5iXO7Y2mlgo8eVkiMvxg,3738
|
|
250
253
|
truefoundry/ml/autogen/client/models/multi_part_upload_response_dto.py,sha256=VjH0kvl7rMjgDHjYGHnsh7KsZ5-qn-k3ksdGLJ49nIM,2431
|
|
@@ -305,8 +308,8 @@ truefoundry/ml/autogen/client/models/xg_boost_framework.py,sha256=a0EHzncxe_hSFU
|
|
|
305
308
|
truefoundry/ml/autogen/client/models/xg_boost_model_schema.py,sha256=QKJkiERNqF8UiolX2FjvhkUkUlUgDoo3CpTYPAdCxV8,2735
|
|
306
309
|
truefoundry/ml/autogen/client/models/xg_boost_serialization_format.py,sha256=wFFSH0Z9MP8eT_fysHfUu4iqdjEZART-HxTH4e4gNI8,872
|
|
307
310
|
truefoundry/ml/autogen/client/rest.py,sha256=9goba8qHjQuVx5O_yRaTKu7PvBnb7r7swfy3dwuTEgk,14281
|
|
308
|
-
truefoundry/ml/autogen/client_README.md,sha256=
|
|
309
|
-
truefoundry/ml/autogen/entities/artifacts.py,sha256=
|
|
311
|
+
truefoundry/ml/autogen/client_README.md,sha256=qrAp9e6D4rKZETpvJry0U8Yn2ZkxDHMA9NUNsfmO_JY,37326
|
|
312
|
+
truefoundry/ml/autogen/entities/artifacts.py,sha256=jLBQk5OYpdhXwwLEIAQLkT-ttZbg522FBWHvgwOCQGQ,20995
|
|
310
313
|
truefoundry/ml/autogen/models/__init__.py,sha256=--TGRea9SQBWFfwtcl3ekb1XGfFTdEkQGSG8a2SJ60I,187
|
|
311
314
|
truefoundry/ml/autogen/models/exceptions.py,sha256=q3n7FGBrg_hUy1UyoefhMnhcXUAaqXlLIGHoOVzn_d8,1390
|
|
312
315
|
truefoundry/ml/autogen/models/schema.py,sha256=IhpO9qbygLqEamP3NIt3m90SseJXCOm1ZTqNbNbW-M0,55772
|
|
@@ -319,22 +322,20 @@ truefoundry/ml/cli/commands/download.py,sha256=N9MhsEQ3U24v_OmnMZT8Q4SoAi38Sm7a2
|
|
|
319
322
|
truefoundry/ml/cli/commands/model_init.py,sha256=9fHCernmQswjEhREzdrnKxwCCWkgmFrpL29H52Sd1gQ,2663
|
|
320
323
|
truefoundry/ml/cli/utils.py,sha256=j6_mZ4Spn114mz3P4QQ8jx0tmorXIuyQnHXVUSDvZi4,1035
|
|
321
324
|
truefoundry/ml/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
322
|
-
truefoundry/ml/clients/
|
|
323
|
-
truefoundry/ml/clients/servicefoundry_client.py,sha256=nmKrWBd7P0VEDGjPHZ8_scX3Xo9tv3wZSWlTIBwGptU,1597
|
|
324
|
-
truefoundry/ml/clients/utils.py,sha256=c0LdC8moejs-Zm30hu1sCqifLEmqhdq4SfZ_m0nUIDk,4402
|
|
325
|
+
truefoundry/ml/clients/servicefoundry_client.py,sha256=Rx-tjiDxNwUgOCDITjtL0vmZcQgJjh_tUdReE23TKIk,2363
|
|
325
326
|
truefoundry/ml/constants.py,sha256=vDq72d4C9FSWqr9MMdjgTF4TuyNFApvo_6RVsSeAjB4,2837
|
|
326
327
|
truefoundry/ml/entities.py,sha256=si5GAqZsWzKu5MPrU4Hk6se7bebHOYhTiNw69ai-Uk8,1485
|
|
327
328
|
truefoundry/ml/enums.py,sha256=arqDkF8duU_oVLFeYMhcfWYbF6Nq5mmjwupJMIheyXM,1790
|
|
328
|
-
truefoundry/ml/exceptions.py,sha256=
|
|
329
|
+
truefoundry/ml/exceptions.py,sha256=QpDJSWmF7dIsByS0qOQbQZ_jytdNTzkHDDO3BxhTSo0,332
|
|
329
330
|
truefoundry/ml/git_info.py,sha256=jvAVm9ilqivnGq8qJdUvYdd8Siv0PLtqurB-PXsS5ho,2023
|
|
330
331
|
truefoundry/ml/internal_namespace.py,sha256=QcqMHp6-C2im2H_02hlhi01EIcr1HhNaZprszs13EMU,1790
|
|
331
332
|
truefoundry/ml/log_types/__init__.py,sha256=g4u4D4Jaj0aBK5GtrLV88-qThKZR9pSZ17vFEkN-LmM,125
|
|
332
|
-
truefoundry/ml/log_types/artifacts/artifact.py,sha256=
|
|
333
|
+
truefoundry/ml/log_types/artifacts/artifact.py,sha256=b7GXYQx6MVI5qnPIS96xGqwwWVKGY4LYrEU9pCKkU_Y,21772
|
|
333
334
|
truefoundry/ml/log_types/artifacts/constants.py,sha256=qKxQ5mMvJE4j83BvGW3qNTKunxCiBg_EEjTdgbgJtyE,1036
|
|
334
335
|
truefoundry/ml/log_types/artifacts/dataset.py,sha256=a4dxd2EN8p7Ci-cLGGiDOboN3t0395_XhWE1dmTw1Q4,13112
|
|
335
336
|
truefoundry/ml/log_types/artifacts/general_artifact.py,sha256=B4XErLr-m6RmQWtxMTu3wlFRFcqSwPYp6J0OL4Ng6L0,3179
|
|
336
|
-
truefoundry/ml/log_types/artifacts/model.py,sha256=
|
|
337
|
-
truefoundry/ml/log_types/artifacts/utils.py,sha256=
|
|
337
|
+
truefoundry/ml/log_types/artifacts/model.py,sha256=UfGKJA9ywDtXEIH6E-VfdjvlQNdaKO-Kv76KaTZOVkA,24413
|
|
338
|
+
truefoundry/ml/log_types/artifacts/utils.py,sha256=MuPk6by8jIt7LepB1fqUC8emQBSxrTGJmIel7rbMBAc,7533
|
|
338
339
|
truefoundry/ml/log_types/image/__init__.py,sha256=fcOq8yQnNj1rkLcPeIjLXBpdA1WIeiPsXOlAAvMxx7M,76
|
|
339
340
|
truefoundry/ml/log_types/image/constants.py,sha256=wLtGEOA4T5fZHSlOXPuNDLX3lpbCtwlvGKPFk_1fah0,255
|
|
340
341
|
truefoundry/ml/log_types/image/image.py,sha256=qQnAVgErAq4Jn6wXFFpaveOd52zcjUuomUCqNRxO2io,12478
|
|
@@ -344,11 +345,11 @@ truefoundry/ml/log_types/plot.py,sha256=HuYvvRA5r8V0xAIuuqMME2IHb9d3SfGHUiuEkOP3
|
|
|
344
345
|
truefoundry/ml/log_types/pydantic_base.py,sha256=eBlw_AEyAz4iJKDP4zgJOCFWcldwQqpf7FADW1jzIQY,272
|
|
345
346
|
truefoundry/ml/log_types/utils.py,sha256=xjJ21jdPScvFmw3TbVh5NCzbzJwaqiXJyiiT4xxX1EI,335
|
|
346
347
|
truefoundry/ml/logger.py,sha256=VT-BF3BnBYTWVq87O58F0c8uXMu94gYzsiFlGY3_7Ao,458
|
|
347
|
-
truefoundry/ml/mlfoundry_api.py,sha256=
|
|
348
|
-
truefoundry/ml/mlfoundry_run.py,sha256=
|
|
349
|
-
truefoundry/ml/model_framework.py,sha256=
|
|
348
|
+
truefoundry/ml/mlfoundry_api.py,sha256=ofIbFimPI7u301KFxdbmWbJT0AIinbRMQyCwX7hbPzs,61543
|
|
349
|
+
truefoundry/ml/mlfoundry_run.py,sha256=M-0FkZYDxwv5EZUDtVqiV8JxC_3BWR80N7Kp4Yj7bPY,44291
|
|
350
|
+
truefoundry/ml/model_framework.py,sha256=JGmzdG7o5P6CJr5EYTUOmuly53FfhpoNVqKrhfijAVg,18972
|
|
350
351
|
truefoundry/ml/run_utils.py,sha256=0W208wSLUrbdfk2pjNcZlkUi9bNxG2JORqoe-5rVqHI,2423
|
|
351
|
-
truefoundry/ml/session.py,sha256=
|
|
352
|
+
truefoundry/ml/session.py,sha256=eQo1zG5nd0-8Ok68uEBCQDPAWYeJkpzqHak-DQX1ENU,4553
|
|
352
353
|
truefoundry/ml/validation_utils.py,sha256=J5atNhcJLvKj64ralSV9Y5Fv1Rt4SE237ICdP9-7sP4,12149
|
|
353
354
|
truefoundry/pydantic_v1.py,sha256=jSuhGtz0Mbk1qYu8jJ1AcnIDK4oxUsdhALc4spqstmM,345
|
|
354
355
|
truefoundry/version.py,sha256=bqiT4Q-VWrTC6P4qfK43mez-Ppf-smWfrl6DcwV7mrw,137
|
|
@@ -363,11 +364,11 @@ truefoundry/workflow/map_task.py,sha256=2m3qGXQ90k9LdS45q8dqCCECc3qr8t2m_LMCVd1m
|
|
|
363
364
|
truefoundry/workflow/python_task.py,sha256=SRXRLC4vdBqGjhkwuaY39LEWN6iPCpJAuW17URRdWTY,1128
|
|
364
365
|
truefoundry/workflow/remote_filesystem/__init__.py,sha256=LQ95ViEjJ7Ts4JcCGOxMPs7NZmQdZ4bTiq6qXtsjUhE,206
|
|
365
366
|
truefoundry/workflow/remote_filesystem/logger.py,sha256=em2l7D6sw7xTLDP0kQSLpgfRRCLpN14Qw85TN7ujQcE,1022
|
|
366
|
-
truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py,sha256=
|
|
367
|
-
truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py,sha256=
|
|
367
|
+
truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py,sha256=xcT0wQmQlgzcj0nP3tJopyFSVWT1uv3nhiTIuwfXYeg,12342
|
|
368
|
+
truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py,sha256=nSGPZu0Gyd_jz0KsEE-7w_BmnTD8CVF1S8cUJoxaCbc,13305
|
|
368
369
|
truefoundry/workflow/task.py,sha256=ToitYiKcNzFCtOVQwz1W8sRjbR97eVS7vQBdbgUQtKg,1779
|
|
369
370
|
truefoundry/workflow/workflow.py,sha256=WaTqUjhwfAXDWu4E5ehuwAxrCbDJkoAf1oWmR2E9Qy0,4575
|
|
370
|
-
truefoundry-0.5.
|
|
371
|
-
truefoundry-0.5.
|
|
372
|
-
truefoundry-0.5.
|
|
373
|
-
truefoundry-0.5.
|
|
371
|
+
truefoundry-0.5.3.dist-info/METADATA,sha256=zCd6nLACzS6uWBVJbXOpJOL7H0RWjvsj70Eo1s1prhc,2884
|
|
372
|
+
truefoundry-0.5.3.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
|
373
|
+
truefoundry-0.5.3.dist-info/entry_points.txt,sha256=TXvUxQkI6zmqJuycPsyxEIMr3oqfDjgrWj0m_9X12x4,95
|
|
374
|
+
truefoundry-0.5.3.dist-info/RECORD,,
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from typing import Optional
|
|
4
|
-
|
|
5
|
-
from truefoundry.common.credential_provider import (
|
|
6
|
-
CredentialProvider,
|
|
7
|
-
EnvCredentialProvider,
|
|
8
|
-
FileCredentialProvider,
|
|
9
|
-
)
|
|
10
|
-
from truefoundry.common.entities import UserInfo
|
|
11
|
-
from truefoundry.common.utils import relogin_error_message
|
|
12
|
-
from truefoundry.logger import logger
|
|
13
|
-
|
|
14
|
-
ACTIVE_SESSION: Optional[ServiceFoundrySession] = None
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class ServiceFoundrySession:
|
|
18
|
-
def __init__(self) -> None:
|
|
19
|
-
self._cred_provider = self._get_cred_provider()
|
|
20
|
-
self._user_info: UserInfo = self._cred_provider.token.to_user_info()
|
|
21
|
-
|
|
22
|
-
global ACTIVE_SESSION
|
|
23
|
-
if (ACTIVE_SESSION is None) or (
|
|
24
|
-
ACTIVE_SESSION
|
|
25
|
-
and ACTIVE_SESSION.base_url != self.base_url
|
|
26
|
-
and ACTIVE_SESSION.user_info != self.user_info
|
|
27
|
-
):
|
|
28
|
-
logger.info(
|
|
29
|
-
"Logged in to %r as %r (%s)",
|
|
30
|
-
self.base_url,
|
|
31
|
-
self.user_info.user_id,
|
|
32
|
-
self.user_info.email or self.user_info.user_type.value,
|
|
33
|
-
)
|
|
34
|
-
ACTIVE_SESSION = self
|
|
35
|
-
|
|
36
|
-
@staticmethod
|
|
37
|
-
def _get_cred_provider() -> CredentialProvider:
|
|
38
|
-
final_cred_provider = None
|
|
39
|
-
for cred_provider in [EnvCredentialProvider, FileCredentialProvider]:
|
|
40
|
-
if cred_provider.can_provide():
|
|
41
|
-
final_cred_provider = cred_provider()
|
|
42
|
-
break
|
|
43
|
-
if final_cred_provider is None:
|
|
44
|
-
raise Exception(
|
|
45
|
-
relogin_error_message(
|
|
46
|
-
"No active session found. Perhaps you are not logged in?",
|
|
47
|
-
)
|
|
48
|
-
)
|
|
49
|
-
return final_cred_provider
|
|
50
|
-
|
|
51
|
-
@property
|
|
52
|
-
def access_token(self) -> str:
|
|
53
|
-
return self._cred_provider.token.access_token
|
|
54
|
-
|
|
55
|
-
@property
|
|
56
|
-
def base_url(self) -> str:
|
|
57
|
-
return self._cred_provider.base_url
|
|
58
|
-
|
|
59
|
-
@property
|
|
60
|
-
def user_info(self) -> UserInfo:
|
|
61
|
-
return self._user_info
|
truefoundry/ml/clients/utils.py
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
from contextlib import contextmanager
|
|
3
|
-
from typing import Any, Optional
|
|
4
|
-
from urllib.parse import urljoin
|
|
5
|
-
|
|
6
|
-
import requests
|
|
7
|
-
|
|
8
|
-
from truefoundry.common.request_utils import requests_retry_session
|
|
9
|
-
from truefoundry.ml.clients.entities import HostCreds
|
|
10
|
-
from truefoundry.ml.exceptions import MlFoundryException
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
# TODO: This will be moved later to truefoundry.common.request_utils
|
|
14
|
-
def _make_url(host: str, endpoint: str) -> str:
|
|
15
|
-
if endpoint.startswith("/"):
|
|
16
|
-
raise ValueError("`endpoint` must not start with a leading slash (/)")
|
|
17
|
-
return urljoin(host, endpoint)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def _http_request(
|
|
21
|
-
*, method: str, url: str, token: Optional[str] = None, session=requests, **kwargs
|
|
22
|
-
) -> requests.Response:
|
|
23
|
-
headers = kwargs.pop("headers", {}) or {}
|
|
24
|
-
if token is not None:
|
|
25
|
-
headers["Authorization"] = f"Bearer {token}"
|
|
26
|
-
return session.request(method=method, url=url, headers=headers, **kwargs)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def http_request(
|
|
30
|
-
*, method: str, host_creds: HostCreds, endpoint: str, session=requests, **kwargs
|
|
31
|
-
) -> requests.Response:
|
|
32
|
-
url = _make_url(host=host_creds.host, endpoint=endpoint)
|
|
33
|
-
return _http_request(
|
|
34
|
-
method=method, url=url, token=host_creds.token, session=session, **kwargs
|
|
35
|
-
)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def http_request_safe(
|
|
39
|
-
*, method: str, host_creds: HostCreds, endpoint: str, session=requests, **kwargs
|
|
40
|
-
) -> Any:
|
|
41
|
-
url = _make_url(host=host_creds.host, endpoint=endpoint)
|
|
42
|
-
try:
|
|
43
|
-
response = _http_request(
|
|
44
|
-
method=method, url=url, token=host_creds.token, session=session, **kwargs
|
|
45
|
-
)
|
|
46
|
-
response.raise_for_status()
|
|
47
|
-
try:
|
|
48
|
-
return response.json()
|
|
49
|
-
except json.JSONDecodeError as je:
|
|
50
|
-
raise MlFoundryException(
|
|
51
|
-
f"Failed to parse response as json. Response: {response.text}"
|
|
52
|
-
) from je
|
|
53
|
-
except requests.exceptions.ConnectionError as ce:
|
|
54
|
-
raise MlFoundryException("Failed to connect to TrueFoundry") from ce
|
|
55
|
-
except requests.exceptions.Timeout as te:
|
|
56
|
-
raise MlFoundryException(f"Request to {url} timed out") from te
|
|
57
|
-
except requests.exceptions.HTTPError as he:
|
|
58
|
-
raise MlFoundryException(
|
|
59
|
-
f"Request to {url} with status code {he.response.status_code}. Response: {he.response.text}",
|
|
60
|
-
status_code=he.response.status_code,
|
|
61
|
-
) from he
|
|
62
|
-
except Exception as e:
|
|
63
|
-
raise MlFoundryException(
|
|
64
|
-
f"Request to {url} failed with an unknown error"
|
|
65
|
-
) from e
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
@contextmanager
|
|
69
|
-
def cloud_storage_http_request(
|
|
70
|
-
*,
|
|
71
|
-
method,
|
|
72
|
-
url,
|
|
73
|
-
session=None,
|
|
74
|
-
timeout=None,
|
|
75
|
-
**kwargs,
|
|
76
|
-
):
|
|
77
|
-
"""
|
|
78
|
-
Performs an HTTP PUT/GET request using Python's `requests` module with automatic retry.
|
|
79
|
-
"""
|
|
80
|
-
session = session or requests_retry_session(retries=5, backoff_factor=0.5)
|
|
81
|
-
kwargs["headers"] = kwargs.get("headers", {}) or {}
|
|
82
|
-
if "blob.core.windows.net" in url:
|
|
83
|
-
kwargs["headers"].update({"x-ms-blob-type": "BlockBlob"})
|
|
84
|
-
if method.lower() not in ("put", "get"):
|
|
85
|
-
raise ValueError(f"Illegal http method: {method}")
|
|
86
|
-
try:
|
|
87
|
-
yield _http_request(
|
|
88
|
-
method=method, url=url, session=session, timeout=timeout, **kwargs
|
|
89
|
-
)
|
|
90
|
-
except Exception as e:
|
|
91
|
-
raise MlFoundryException(
|
|
92
|
-
f"API request failed with exception {str(e)}"
|
|
93
|
-
) from None
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
def augmented_raise_for_status(response):
|
|
97
|
-
try:
|
|
98
|
-
response.raise_for_status()
|
|
99
|
-
except requests.exceptions.HTTPError as he:
|
|
100
|
-
raise MlFoundryException(
|
|
101
|
-
f"Request with status code {he.response.status_code}. Response: {he.response.text}",
|
|
102
|
-
status_code=he.response.status_code,
|
|
103
|
-
) from he
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
def download_file_using_http_uri(http_uri, download_path, chunk_size=100_000_000):
|
|
107
|
-
"""
|
|
108
|
-
Downloads a file specified using the `http_uri` to a local `download_path`. This function
|
|
109
|
-
uses a `chunk_size` to ensure an OOM error is not raised a large file is downloaded.
|
|
110
|
-
|
|
111
|
-
Note : This function is meant to download files using presigned urls from various cloud
|
|
112
|
-
providers.
|
|
113
|
-
"""
|
|
114
|
-
with cloud_storage_http_request(
|
|
115
|
-
method="get", url=http_uri, stream=True
|
|
116
|
-
) as response:
|
|
117
|
-
augmented_raise_for_status(response)
|
|
118
|
-
with open(download_path, "wb") as output_file:
|
|
119
|
-
for chunk in response.iter_content(chunk_size=chunk_size):
|
|
120
|
-
if not chunk:
|
|
121
|
-
break
|
|
122
|
-
output_file.write(chunk)
|
|
File without changes
|