truefoundry 0.4.4rc10__py3-none-any.whl → 0.4.4rc11__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.

@@ -29,10 +29,9 @@ from truefoundry.ml.autogen.entities.artifacts import ChatPrompt
29
29
  from truefoundry.ml.exceptions import MlFoundryException
30
30
  from truefoundry.ml.log_types.artifacts.constants import INTERNAL_METADATA_PATH
31
31
  from truefoundry.ml.log_types.artifacts.utils import (
32
- _get_src_dest_pairs,
33
32
  _validate_artifact_metadata,
34
33
  _validate_description,
35
- calculate_total_size,
34
+ calculate_local_directory_size,
36
35
  )
37
36
  from truefoundry.ml.logger import logger
38
37
  from truefoundry.ml.session import _get_api_client
@@ -398,7 +397,7 @@ class ChatPromptVersion(ArtifactVersion):
398
397
  @property
399
398
  def extra_parameters(self) -> Dict[str, Any]:
400
399
  _extra_parameters = self._chat_prompt.model_configuration.extra_parameters
401
- return _extra_parameters if _extra_parameters else {}
400
+ return _extra_parameters.dict(exclude_unset=True) if _extra_parameters else {}
402
401
 
403
402
  @property
404
403
  def variables(self) -> Dict[str, Any]:
@@ -410,7 +409,6 @@ def _log_artifact_version_helper(
410
409
  name: str,
411
410
  artifact_type: ArtifactType,
412
411
  artifact_dir: tempfile.TemporaryDirectory,
413
- dest_to_src_map: Dict[str, str],
414
412
  mlfoundry_artifacts_api: Optional[MlfoundryArtifactsApi] = None,
415
413
  ml_repo_id: Optional[str] = None,
416
414
  description: Optional[str] = None,
@@ -445,17 +443,15 @@ def _log_artifact_version_helper(
445
443
  ),
446
444
  api_client=mlfoundry_artifacts_api.api_client,
447
445
  )
448
-
449
- total_size = calculate_total_size(list(dest_to_src_map.values()))
446
+ total_size = calculate_local_directory_size(artifact_dir)
450
447
  try:
451
448
  logger.info(
452
- "Packaging and uploading files to remote with size: %.6f MB",
449
+ "Packaging and uploading files to remote with Artifact Size: %.6f MB",
453
450
  total_size / 1000000.0,
454
451
  )
455
- src_dest_pairs = _get_src_dest_pairs(
456
- root_dir=artifact_dir.name, dest_to_src_map=dest_to_src_map
452
+ artifacts_repo.log_artifacts(
453
+ local_dir=artifact_dir.name, artifact_path=None, progress=progress
457
454
  )
458
- artifacts_repo.log_artifacts(src_dest_pairs=src_dest_pairs, progress=progress)
459
455
  except Exception as e:
460
456
  mlfoundry_artifacts_api.notify_failure_post(
461
457
  notify_artifact_version_failure_dto=NotifyArtifactVersionFailureDto(
@@ -19,10 +19,9 @@ from truefoundry.ml.entities import FileInfo
19
19
  from truefoundry.ml.exceptions import MlFoundryException
20
20
  from truefoundry.ml.log_types.artifacts.utils import (
21
21
  _copy_additional_files,
22
- _get_src_dest_pairs,
23
22
  _validate_artifact_metadata,
24
23
  _validate_description,
25
- calculate_total_size,
24
+ calculate_local_directory_size,
26
25
  )
27
26
  from truefoundry.ml.logger import logger
28
27
  from truefoundry.ml.session import _get_api_client
@@ -140,7 +139,6 @@ class DataDirectory:
140
139
  file_paths: List[
141
140
  Union[Tuple[str], Tuple[str, Optional[str]], DataDirectoryPath]
142
141
  ],
143
- progress: Optional[bool] = None,
144
142
  ) -> None:
145
143
  """Logs File in the `DataDirectory`.
146
144
 
@@ -209,7 +207,7 @@ class DataDirectory:
209
207
 
210
208
  try:
211
209
  logger.info("Copying the files to add")
212
- temp_dest_to_src_map = _copy_additional_files(
210
+ _copy_additional_files(
213
211
  root_dir=temp_dir.name,
214
212
  files_dir="",
215
213
  model_dir=None,
@@ -221,19 +219,13 @@ class DataDirectory:
221
219
  raise MlFoundryException("Failed to Add Files to DataDirectory") from e
222
220
 
223
221
  artifacts_repo = self._get_artifacts_repo()
224
- total_size = calculate_total_size(list(temp_dest_to_src_map.values()))
222
+ total_size = calculate_local_directory_size(temp_dir)
225
223
  try:
226
224
  logger.info(
227
- "Packaging and uploading files to remote with size: %.6f MB",
225
+ "Packaging and uploading files to remote with Size: %.6f MB",
228
226
  total_size / 1000000.0,
229
227
  )
230
- src_dest_pairs = _get_src_dest_pairs(
231
- root_dir=temp_dir.name, dest_to_src_map=temp_dest_to_src_map
232
- )
233
- artifacts_repo.log_artifacts(
234
- src_dest_pairs=src_dest_pairs,
235
- progress=progress,
236
- )
228
+ artifacts_repo.log_artifacts(local_dir=temp_dir.name, artifact_path=None)
237
229
  except Exception as e:
238
230
  raise MlFoundryException("Failed to Add Files to DataDirectory") from e
239
231
  finally:
@@ -77,7 +77,7 @@ def _log_artifact_version(
77
77
  os.makedirs(local_files_dir, exist_ok=True)
78
78
 
79
79
  logger.info("Copying the files to log")
80
- temp_dest_to_src_map = _copy_additional_files(
80
+ _copy_additional_files(
81
81
  root_dir=temp_dir.name,
82
82
  files_dir=internal_metadata.files_dir,
83
83
  model_dir=None,
@@ -94,7 +94,6 @@ def _log_artifact_version(
94
94
  os.makedirs(os.path.dirname(local_internal_metadata_path), exist_ok=True)
95
95
  with open(local_internal_metadata_path, "w") as f:
96
96
  json.dump(internal_metadata.dict(), f)
97
- temp_dest_to_src_map[local_internal_metadata_path] = local_internal_metadata_path
98
97
 
99
98
  return _log_artifact_version_helper(
100
99
  run=run,
@@ -102,7 +101,6 @@ def _log_artifact_version(
102
101
  name=name,
103
102
  artifact_type=ArtifactType.ARTIFACT,
104
103
  artifact_dir=temp_dir,
105
- dest_to_src_map=temp_dest_to_src_map,
106
104
  mlfoundry_artifacts_api=mlfoundry_artifacts_api,
107
105
  description=description,
108
106
  internal_metadata=internal_metadata,
@@ -40,10 +40,8 @@ from truefoundry.ml.log_types.artifacts.constants import (
40
40
  from truefoundry.ml.log_types.artifacts.model_extras import CustomMetric, ModelSchema
41
41
  from truefoundry.ml.log_types.artifacts.utils import (
42
42
  _copy_additional_files,
43
- _get_src_dest_pairs,
44
43
  _validate_artifact_metadata,
45
44
  _validate_description,
46
- calculate_total_size,
47
45
  )
48
46
  from truefoundry.ml.session import _get_api_client
49
47
  from truefoundry.pydantic_v1 import BaseModel, Extra
@@ -390,6 +388,24 @@ class ModelVersion:
390
388
  self._set_mutable_attrs()
391
389
 
392
390
 
391
+ def calculate_model_size(artifact_dir: tempfile.TemporaryDirectory):
392
+ """
393
+ Tells about the size of the model
394
+
395
+ Args:
396
+ artifact_dir (str): directory in which model is present.
397
+
398
+ Returns:
399
+ total size of the model
400
+ """
401
+ total_size = 0
402
+ for path, _dirs, files in os.walk(artifact_dir.name):
403
+ for f in files:
404
+ file_path = os.path.join(path, f)
405
+ total_size += os.stat(file_path).st_size
406
+ return total_size
407
+
408
+
393
409
  def _log_model_version( # noqa: C901
394
410
  run: Optional["MlFoundryRun"],
395
411
  name: str,
@@ -468,29 +484,28 @@ def _log_model_version( # noqa: C901
468
484
  os.makedirs(local_model_dir, exist_ok=True)
469
485
 
470
486
  logger.info("Adding model file/folder to model version content")
471
- _model_file_or_folder: Sequence[Tuple[str, str]] = [
472
- (model_file_or_folder, MODEL_DIR_NAME.rstrip(os.sep) + os.sep),
487
+ model_file_or_folder = [
488
+ (model_file_or_folder, MODEL_DIR_NAME.rstrip(os.sep) + os.sep)
473
489
  ]
474
-
475
- temp_dest_to_src_map = _copy_additional_files(
490
+ _copy_additional_files(
476
491
  root_dir=temp_dir.name,
477
492
  files_dir=internal_metadata.files_dir,
478
493
  model_dir=internal_metadata.model_dir,
479
- additional_files=_model_file_or_folder,
494
+ additional_files=model_file_or_folder,
480
495
  ignore_model_dir_dest_conflict=True,
481
496
  )
482
497
 
483
498
  # verify additional files and paths, copy additional files
484
499
  if additional_files:
485
500
  logger.info("Adding `additional_files` to model version contents")
486
- temp_dest_to_src_map = _copy_additional_files(
501
+ _copy_additional_files(
487
502
  root_dir=temp_dir.name,
488
503
  files_dir=internal_metadata.files_dir,
489
504
  model_dir=internal_metadata.model_dir,
490
505
  additional_files=additional_files,
491
506
  ignore_model_dir_dest_conflict=False,
492
- existing_dest_to_src_map=temp_dest_to_src_map,
493
507
  )
508
+
494
509
  except Exception as e:
495
510
  temp_dir.cleanup()
496
511
  raise MlFoundryException("Failed to log model") from e
@@ -500,7 +515,6 @@ def _log_model_version( # noqa: C901
500
515
  os.makedirs(os.path.dirname(local_internal_metadata_path), exist_ok=True)
501
516
  with open(local_internal_metadata_path, "w") as f:
502
517
  json.dump(internal_metadata.dict(), f)
503
- temp_dest_to_src_map[local_internal_metadata_path] = local_internal_metadata_path
504
518
 
505
519
  # create entry
506
520
  _create_artifact_version_response = (
@@ -519,17 +533,15 @@ def _log_model_version( # noqa: C901
519
533
  ),
520
534
  api_client=mlfoundry_artifacts_api.api_client,
521
535
  )
522
-
523
- total_size = calculate_total_size(list(temp_dest_to_src_map.values()))
536
+ model_size = calculate_model_size(temp_dir)
524
537
  try:
525
538
  logger.info(
526
- "Packaging and uploading files to remote with size: %.6f MB",
527
- total_size / 1000000.0,
539
+ "Packaging and uploading files to remote with Total Size: %.6f MB",
540
+ model_size / 1000000.0,
528
541
  )
529
- src_dest_pairs = _get_src_dest_pairs(
530
- root_dir=temp_dir.name, dest_to_src_map=temp_dest_to_src_map
542
+ artifacts_repo.log_artifacts(
543
+ local_dir=temp_dir.name, artifact_path=None, progress=progress
531
544
  )
532
- artifacts_repo.log_artifacts(src_dest_pairs=src_dest_pairs, progress=progress)
533
545
  except Exception as e:
534
546
  mlfoundry_artifacts_api.notify_failure_post(
535
547
  notify_artifact_version_failure_dto=NotifyArtifactVersionFailureDto(
@@ -550,7 +562,7 @@ def _log_model_version( # noqa: C901
550
562
  finalize_artifact_version_request_dto=FinalizeArtifactVersionRequestDto(
551
563
  id=version_id,
552
564
  run_uuid=run.run_id if run else None,
553
- artifact_size=total_size,
565
+ artifact_size=model_size,
554
566
  internal_metadata=internal_metadata_dto,
555
567
  step=step if run else None,
556
568
  )
@@ -2,6 +2,8 @@ import json
2
2
  import logging
3
3
  import os
4
4
  import posixpath
5
+ import shutil
6
+ import tempfile
5
7
  from pathlib import Path
6
8
  from typing import Any, Dict, Optional, Sequence, Tuple, Union
7
9
 
@@ -11,22 +13,20 @@ from truefoundry.ml.log_types.artifacts.constants import DESCRIPTION_MAX_LENGTH
11
13
  logger = logging.getLogger("truefoundry.ml")
12
14
 
13
15
 
14
- def _copy_tree(
15
- root_dir: str, src_path: str, dest_path: str, dest_to_src: Dict[str, str]
16
- ):
16
+ def _copy_tree(src_path, dest_path, symlinks=False, ignore_dangling_symlinks=False):
17
17
  os.makedirs(dest_path, exist_ok=True)
18
18
  for item in os.listdir(src_path):
19
19
  src = os.path.join(src_path, item)
20
20
  dest = os.path.join(dest_path, item)
21
21
  if os.path.isdir(src):
22
22
  _copy_tree(
23
- root_dir=root_dir,
24
- src_path=src,
25
- dest_path=dest,
26
- dest_to_src=dest_to_src,
23
+ src,
24
+ dest,
25
+ symlinks=symlinks,
26
+ ignore_dangling_symlinks=ignore_dangling_symlinks,
27
27
  )
28
28
  else:
29
- dest_to_src[dest] = src
29
+ shutil.copy2(src, dest, follow_symlinks=True)
30
30
 
31
31
 
32
32
  def is_destination_path_dirlike(dest_path) -> bool:
@@ -48,9 +48,9 @@ def _copy_additional_files(
48
48
  model_dir: Optional[str], # relative to files_dir e.g "model/"
49
49
  additional_files: Sequence[Tuple[Union[str, Path], Optional[str]]],
50
50
  ignore_model_dir_dest_conflict: bool = False,
51
- existing_dest_to_src_map: Optional[Dict[str, str]] = None,
52
- ) -> Dict[str, str]:
51
+ ):
53
52
  """
53
+
54
54
  File copying examples:
55
55
  # non ambiguous
56
56
  # a.txt -> /tmp/ result /tmp/a.txt
@@ -69,7 +69,6 @@ def _copy_additional_files(
69
69
  # .gitignore -> /tmp/.gitinclude result /tmp/.gitinclude
70
70
  # a.txt -> /tmp/a result /tmp/a
71
71
  """
72
- dest_to_src = existing_dest_to_src_map or {}
73
72
  for src_path, dest_path in additional_files:
74
73
  src_path = str(src_path)
75
74
  if not os.path.exists(src_path):
@@ -100,47 +99,26 @@ def _copy_additional_files(
100
99
  _src = src_path
101
100
  if is_destination_path_dirlike(dest_abs_path):
102
101
  os.makedirs(dest_abs_path, exist_ok=True)
103
- dest_abs_path = os.path.join(dest_abs_path, os.path.basename(_src))
102
+ _dst = os.path.relpath(
103
+ os.path.join(dest_abs_path, os.path.basename(_src)), files_abs_dir
104
+ )
104
105
  else:
105
106
  os.makedirs(os.path.dirname(dest_abs_path), exist_ok=True)
106
- _dst = os.path.relpath(dest_abs_path, files_abs_dir)
107
+ _dst = os.path.relpath(dest_abs_path, files_abs_dir)
107
108
  logger.info(f"Adding file {_src} as /{_dst}")
108
- dest_to_src[dest_abs_path] = src_path
109
+ shutil.copy2(src_path, dest_abs_path, follow_symlinks=True)
109
110
  elif os.path.isdir(src_path):
110
111
  os.makedirs(dest_abs_path, exist_ok=True)
111
112
  _src = src_path.rstrip("/")
112
113
  _dst = os.path.relpath(dest_abs_path, files_abs_dir).rstrip("/")
113
114
  logger.info(f"Adding contents of {_src}/ to /{_dst}/")
114
115
  _copy_tree(
115
- root_dir=root_dir,
116
116
  src_path=src_path,
117
117
  dest_path=dest_abs_path,
118
- dest_to_src=dest_to_src,
118
+ symlinks=True,
119
+ ignore_dangling_symlinks=False,
119
120
  )
120
121
 
121
- return dest_to_src
122
-
123
-
124
- def _make_dest_to_src_map_from_dir(root_dir: str) -> Dict[str, str]:
125
- dest_to_src_map = {}
126
- for root, _, files in os.walk(root_dir):
127
- for file in files:
128
- src = os.path.join(root, file)
129
- dest = src
130
- dest_to_src_map[dest] = src
131
- return dest_to_src_map
132
-
133
-
134
- def _get_src_dest_pairs(
135
- root_dir: str,
136
- dest_to_src_map: Dict[str, str],
137
- ) -> Sequence[Tuple[str, str]]:
138
- src_dest_pairs = [
139
- (src_path, os.path.relpath(dest_abs_path, root_dir))
140
- for dest_abs_path, src_path in dest_to_src_map.items()
141
- ]
142
- return src_dest_pairs
143
-
144
122
 
145
123
  def _validate_description(description: Optional[str]):
146
124
  if description is not None:
@@ -163,8 +141,8 @@ def _validate_artifact_metadata(metadata: Dict[str, Any]):
163
141
  raise MlFoundryException("`metadata` must be json serializable dict") from ve
164
142
 
165
143
 
166
- def calculate_total_size(
167
- paths: Sequence[str],
144
+ def calculate_local_directory_size(
145
+ directory: tempfile.TemporaryDirectory, # type: ignore[type-arg]
168
146
  ):
169
147
  """
170
148
  Tells about the size of the artifact
@@ -175,4 +153,9 @@ def calculate_total_size(
175
153
  Returns:
176
154
  total size of the artifact
177
155
  """
178
- return sum(os.stat(os.path.realpath(file_path)).st_size for file_path in paths)
156
+ total_size = 0
157
+ for path, _dirs, files in os.walk(directory.name):
158
+ for f in files:
159
+ file_path = os.path.join(path, f)
160
+ total_size += os.stat(file_path).st_size
161
+ return total_size
@@ -18,7 +18,6 @@ from truefoundry.ml.log_types.artifacts.constants import (
18
18
  FILES_DIR,
19
19
  INTERNAL_METADATA_PATH,
20
20
  )
21
- from truefoundry.ml.log_types.artifacts.utils import _make_dest_to_src_map_from_dir
22
21
  from truefoundry.ml.log_types.image.constants import (
23
22
  DEFAULT_IMAGE_FORMAT,
24
23
  IMAGE_KEY_REGEX,
@@ -345,7 +344,6 @@ class Image:
345
344
  name=key,
346
345
  artifact_type=ArtifactType.IMAGE,
347
346
  artifact_dir=temp_dir,
348
- dest_to_src_map=_make_dest_to_src_map_from_dir(root_dir=temp_dir.name),
349
347
  internal_metadata=internal_metadata,
350
348
  step=step,
351
349
  )
@@ -18,7 +18,6 @@ from truefoundry.ml.log_types.artifacts.constants import (
18
18
  FILES_DIR,
19
19
  INTERNAL_METADATA_PATH,
20
20
  )
21
- from truefoundry.ml.log_types.artifacts.utils import _make_dest_to_src_map_from_dir
22
21
  from truefoundry.ml.log_types.pydantic_base import PydanticBase
23
22
  from truefoundry.ml.log_types.utils import validate_key_name
24
23
  from truefoundry.pydantic_v1 import BaseModel
@@ -187,7 +186,6 @@ class Plot:
187
186
  name=key,
188
187
  artifact_type=ArtifactType.PLOT,
189
188
  artifact_dir=temp_dir,
190
- dest_to_src_map=_make_dest_to_src_map_from_dir(root_dir=temp_dir.name),
191
189
  internal_metadata=internal_metadata,
192
190
  step=step,
193
191
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: truefoundry
3
- Version: 0.4.4rc10
3
+ Version: 0.4.4rc11
4
4
  Summary: Truefoundry CLI
5
5
  Author: Abhishek Choudhary
6
6
  Author-email: abhishek@truefoundry.com
@@ -34,9 +34,9 @@ truefoundry/common/entities.py,sha256=8O-EGPk4PKqnyoFMKUTxISCU19rz0KBnfRDJU695Dh
34
34
  truefoundry/common/exceptions.py,sha256=ePpiQ_zmWe4e94gOgeMiyP_AZnKwjEBfyXsB5ScGYcI,329
35
35
  truefoundry/common/request_utils.py,sha256=5xw4YGUcMf71Ncal3OfFCa-PoWDIvG3hYGCDa4Da4OI,2854
36
36
  truefoundry/common/servicefoundry_client.py,sha256=2fxmgCM-ckFHpnm6n_mL-5Z8RWN_q-dYVvFC29bkYSg,3120
37
- truefoundry/common/tfy_signed_url_client.py,sha256=wa9pfZIUquXFE9EdHDOJXjqqU1uJr1PkvI_7vnOjZ9M,9904
37
+ truefoundry/common/tfy_signed_url_client.py,sha256=VklNm4K4xm1CcKZ1iiT8281X6jo803AhgYdtVvvwDXY,10183
38
38
  truefoundry/common/tfy_signed_url_fs.py,sha256=Vc7Il077nZIGbDBQ8aTPNtJVcypYaoZHr13vV00REko,8486
39
- truefoundry/common/utils.py,sha256=vacYbVTEvcEY4niH4C9Wb_aCeaGgh2un3_ApAt556VQ,3621
39
+ truefoundry/common/utils.py,sha256=XM3QsbR_kCEjyNBRpM8oRhV3kvz0xRFfAiqYG4dC1sU,3692
40
40
  truefoundry/deploy/__init__.py,sha256=ugawKF2G02EmEXX35oZ2tec12d9oWN28Sf6mtGGIERY,2281
41
41
  truefoundry/deploy/auto_gen/models.py,sha256=4MaxkG2_5Wg6avaZRlK0D4JiVEM5rk3NU0BCiTx8VyU,82477
42
42
  truefoundry/deploy/builder/__init__.py,sha256=1qjHMNBE1poRCZW0WrG46dFM1f1IlivD5352qzsioMU,4953
@@ -127,7 +127,7 @@ truefoundry/langchain/utils.py,sha256=PGLDe9chZ3BuUjakexOGpIqZRFoHEgu-zJ9yKdpLLm
127
127
  truefoundry/logger.py,sha256=7dLqW_Q2rEgo-_z1WZnQbGHaoy1L1MP3NqGgssaSS6o,685
128
128
  truefoundry/ml/__init__.py,sha256=2A1l7pgqbVRt3cRW_0Lxg92hyJEkMxkCUh1EFprrmc0,942
129
129
  truefoundry/ml/artifact/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
- truefoundry/ml/artifact/truefoundry_artifact_repo.py,sha256=VU8i3jnY62MLfzA3rxXuUjdqLz8Yaw4zqqPWSsf0mBg,45850
130
+ truefoundry/ml/artifact/truefoundry_artifact_repo.py,sha256=uS4FZq4wUhxB8-BDx--fLYTcsLYL_V9clNtb32G0Wo0,45050
131
131
  truefoundry/ml/autogen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
132
  truefoundry/ml/autogen/client/__init__.py,sha256=B6Z0oUmE-S9YqUCDRpKDuTyNWX2Fmx4es7nWx7Bhy10,17600
133
133
  truefoundry/ml/autogen/client/api/__init__.py,sha256=3sMSljMIS3UHYeF0BcNvrPPx6VbBSRt_1IfDn-13Kyc,752
@@ -319,19 +319,19 @@ truefoundry/ml/exceptions.py,sha256=8aJm2NYtAWWsRLu4MbzaoOqHsQZ6RjOFwBWQWqb6qrc,
319
319
  truefoundry/ml/git_info.py,sha256=jvAVm9ilqivnGq8qJdUvYdd8Siv0PLtqurB-PXsS5ho,2023
320
320
  truefoundry/ml/internal_namespace.py,sha256=QcqMHp6-C2im2H_02hlhi01EIcr1HhNaZprszs13EMU,1790
321
321
  truefoundry/ml/log_types/__init__.py,sha256=g4u4D4Jaj0aBK5GtrLV88-qThKZR9pSZ17vFEkN-LmM,125
322
- truefoundry/ml/log_types/artifacts/artifact.py,sha256=n2EwAupOigDcUXQQFIIESRqp7zipLZieec0vLQ2DVRQ,17593
322
+ truefoundry/ml/log_types/artifacts/artifact.py,sha256=ltHLkJLLeeRO1d6BqoSq3VtizicvyjdG_Hf52wqig7w,17478
323
323
  truefoundry/ml/log_types/artifacts/constants.py,sha256=qKxQ5mMvJE4j83BvGW3qNTKunxCiBg_EEjTdgbgJtyE,1036
324
- truefoundry/ml/log_types/artifacts/dataset.py,sha256=a4dxd2EN8p7Ci-cLGGiDOboN3t0395_XhWE1dmTw1Q4,13112
325
- truefoundry/ml/log_types/artifacts/general_artifact.py,sha256=_EOlNGMg2PFjlevlD6LEOsaQBBwRWs60PkzJases6tE,3927
326
- truefoundry/ml/log_types/artifacts/model.py,sha256=cuVvBhCaOy165LxyF3NuY7UH61tgYOqFiVUde4WzMwg,21920
324
+ truefoundry/ml/log_types/artifacts/dataset.py,sha256=ou6hF0RnwQ8clgpWW8SJPOu2YCG-xya51b91pGY-PjY,12823
325
+ truefoundry/ml/log_types/artifacts/general_artifact.py,sha256=fY74EUeCGdHdlkrp_GMoaZPvl7EQctt8OlRM6yFgLF8,3772
326
+ truefoundry/ml/log_types/artifacts/model.py,sha256=Qb0wq2qCbPCk4os74xsJwOXUQc-4sdGsBwKkV9emDsI,21998
327
327
  truefoundry/ml/log_types/artifacts/model_extras.py,sha256=TIE73bLKfwIVzNiVcjmaZ841A70BHBwu4XAM6ZAQRFI,1045
328
- truefoundry/ml/log_types/artifacts/utils.py,sha256=TZwa-Nu10lrNfiQZTh2AkudI9zLZnMxIpPUDMZtylsk,6307
328
+ truefoundry/ml/log_types/artifacts/utils.py,sha256=dwmRBrEmwIktVcA1a3lrsUfmROO7THTLgYwJ4MpSUWU,5885
329
329
  truefoundry/ml/log_types/image/__init__.py,sha256=fcOq8yQnNj1rkLcPeIjLXBpdA1WIeiPsXOlAAvMxx7M,76
330
330
  truefoundry/ml/log_types/image/constants.py,sha256=wLtGEOA4T5fZHSlOXPuNDLX3lpbCtwlvGKPFk_1fah0,255
331
- truefoundry/ml/log_types/image/image.py,sha256=qQnAVgErAq4Jn6wXFFpaveOd52zcjUuomUCqNRxO2io,12478
331
+ truefoundry/ml/log_types/image/image.py,sha256=y2FOUVTNGtjzGW5AcaXObIxKQDGr1GoiSYBoRAB7ZaM,12310
332
332
  truefoundry/ml/log_types/image/image_normalizer.py,sha256=vrzfuSpVGgIxw_Q2sbFe7kQ_JpAndX0bMwC7wtfi41g,3104
333
333
  truefoundry/ml/log_types/image/types.py,sha256=inFQlyAyDvZtfliFpENirNCm1XO9beyZ8DNn97DoDKs,1568
334
- truefoundry/ml/log_types/plot.py,sha256=HuYvvRA5r8V0xAIuuqMME2IHb9d3SfGHUiuEkOP3Uks,7515
334
+ truefoundry/ml/log_types/plot.py,sha256=oFnXNb2o5fVF0zsnRjvqjSjLaphQWUnQCdw72e2uiMY,7347
335
335
  truefoundry/ml/log_types/pydantic_base.py,sha256=eBlw_AEyAz4iJKDP4zgJOCFWcldwQqpf7FADW1jzIQY,272
336
336
  truefoundry/ml/log_types/utils.py,sha256=xjJ21jdPScvFmw3TbVh5NCzbzJwaqiXJyiiT4xxX1EI,335
337
337
  truefoundry/ml/logger.py,sha256=VT-BF3BnBYTWVq87O58F0c8uXMu94gYzsiFlGY3_7Ao,458
@@ -353,7 +353,7 @@ truefoundry/workflow/map_task.py,sha256=2m3qGXQ90k9LdS45q8dqCCECc3qr8t2m_LMCVd1m
353
353
  truefoundry/workflow/python_task.py,sha256=SRXRLC4vdBqGjhkwuaY39LEWN6iPCpJAuW17URRdWTY,1128
354
354
  truefoundry/workflow/task.py,sha256=ToitYiKcNzFCtOVQwz1W8sRjbR97eVS7vQBdbgUQtKg,1779
355
355
  truefoundry/workflow/workflow.py,sha256=WaTqUjhwfAXDWu4E5ehuwAxrCbDJkoAf1oWmR2E9Qy0,4575
356
- truefoundry-0.4.4rc10.dist-info/METADATA,sha256=S9m9mBKH3ow88eMA7hHPOgGYw7AJjfvn4fIZDK-m8cg,3102
357
- truefoundry-0.4.4rc10.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
358
- truefoundry-0.4.4rc10.dist-info/entry_points.txt,sha256=TXvUxQkI6zmqJuycPsyxEIMr3oqfDjgrWj0m_9X12x4,95
359
- truefoundry-0.4.4rc10.dist-info/RECORD,,
356
+ truefoundry-0.4.4rc11.dist-info/METADATA,sha256=47vgw6KFJIUdkhXwbyhuVFktZ4MxdJJR9_pBuHUakGw,3102
357
+ truefoundry-0.4.4rc11.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
358
+ truefoundry-0.4.4rc11.dist-info/entry_points.txt,sha256=TXvUxQkI6zmqJuycPsyxEIMr3oqfDjgrWj0m_9X12x4,95
359
+ truefoundry-0.4.4rc11.dist-info/RECORD,,