truefoundry 0.5.0rc3__py3-none-any.whl → 0.5.0rc4__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.

Files changed (27) hide show
  1. truefoundry/deploy/v2/lib/deploy_workflow.py +8 -2
  2. truefoundry/ml/__init__.py +6 -3
  3. truefoundry/ml/autogen/client/__init__.py +9 -4
  4. truefoundry/ml/autogen/client/models/__init__.py +9 -4
  5. truefoundry/ml/autogen/client/models/artifact_version_dto.py +3 -5
  6. truefoundry/ml/autogen/client/models/artifact_version_manifest.py +111 -0
  7. truefoundry/ml/autogen/client/models/{external_model_source.py → external_artifact_source.py} +8 -8
  8. truefoundry/ml/autogen/client/models/finalize_artifact_version_request_dto.py +3 -5
  9. truefoundry/ml/autogen/client/models/manifest.py +154 -0
  10. truefoundry/ml/autogen/client/models/model_version_manifest.py +3 -3
  11. truefoundry/ml/autogen/client/models/source.py +23 -23
  12. truefoundry/ml/autogen/client/models/source1.py +154 -0
  13. truefoundry/ml/autogen/client/models/transformers_framework.py +6 -1
  14. truefoundry/ml/autogen/client/models/{truefoundry_model_source.py → true_foundry_artifact_source.py} +9 -9
  15. truefoundry/ml/autogen/client/models/update_artifact_version_request_dto.py +11 -1
  16. truefoundry/ml/autogen/client_README.md +5 -2
  17. truefoundry/ml/autogen/entities/artifacts.py +22 -8
  18. truefoundry/ml/log_types/artifacts/artifact.py +131 -63
  19. truefoundry/ml/log_types/artifacts/general_artifact.py +7 -26
  20. truefoundry/ml/log_types/artifacts/model.py +74 -81
  21. truefoundry/ml/mlfoundry_api.py +4 -4
  22. truefoundry/ml/mlfoundry_run.py +8 -5
  23. truefoundry/ml/model_framework.py +2 -2
  24. {truefoundry-0.5.0rc3.dist-info → truefoundry-0.5.0rc4.dist-info}/METADATA +2 -2
  25. {truefoundry-0.5.0rc3.dist-info → truefoundry-0.5.0rc4.dist-info}/RECORD +27 -24
  26. {truefoundry-0.5.0rc3.dist-info → truefoundry-0.5.0rc4.dist-info}/WHEEL +0 -0
  27. {truefoundry-0.5.0rc3.dist-info → truefoundry-0.5.0rc4.dist-info}/entry_points.txt +0 -0
@@ -4,6 +4,7 @@ import json
4
4
  import logging
5
5
  import os.path
6
6
  import tempfile
7
+ import typing
7
8
  import uuid
8
9
  import warnings
9
10
  from pathlib import Path
@@ -15,25 +16,23 @@ from truefoundry.ml.artifact.truefoundry_artifact_repo import (
15
16
  )
16
17
  from truefoundry.ml.autogen.client import ( # type: ignore[attr-defined]
17
18
  ArtifactType,
18
- ArtifactVersionSerializationFormat,
19
19
  CreateArtifactVersionRequestDto,
20
20
  DeleteArtifactVersionsRequestDto,
21
- ExternalModelSource,
21
+ ExternalArtifactSource,
22
22
  FinalizeArtifactVersionRequestDto,
23
23
  Framework,
24
+ Manifest,
24
25
  MlfoundryArtifactsApi,
25
26
  ModelDto,
26
27
  ModelVersionDto,
27
28
  ModelVersionManifest,
28
29
  NotifyArtifactVersionFailureDto,
29
- TruefoundryModelSource,
30
+ TrueFoundryArtifactSource,
30
31
  UpdateModelVersionRequestDto,
31
32
  )
32
- from truefoundry.ml.autogen.client import (
33
- Source as ModelVersionSource,
34
- )
35
33
  from truefoundry.ml.enums import ModelFramework
36
34
  from truefoundry.ml.exceptions import MlFoundryException
35
+ from truefoundry.ml.log_types.artifacts.artifact import BlobStorageDirectory
37
36
  from truefoundry.ml.log_types.artifacts.constants import (
38
37
  INTERNAL_METADATA_PATH,
39
38
  )
@@ -46,7 +45,7 @@ from truefoundry.ml.log_types.artifacts.utils import (
46
45
  )
47
46
  from truefoundry.ml.model_framework import ModelFrameworkType, _ModelFramework
48
47
  from truefoundry.ml.session import _get_api_client
49
- from truefoundry.pydantic_v1 import BaseModel, Extra, StrictStr
48
+ from truefoundry.pydantic_v1 import BaseModel, Extra
50
49
 
51
50
  if TYPE_CHECKING:
52
51
  from truefoundry.ml.mlfoundry_run import MlFoundryRun
@@ -75,10 +74,6 @@ class ModelVersionInternalMetadata(BaseModel):
75
74
  return dct
76
75
 
77
76
 
78
- class BlobStorageModelDirectory(BaseModel):
79
- uri: StrictStr
80
-
81
-
82
77
  class ModelVersionDownloadInfo(BaseModel):
83
78
  download_dir: str
84
79
  model_dir: str
@@ -101,7 +96,7 @@ class ModelVersion:
101
96
  self._deleted = False
102
97
  self._description: str = ""
103
98
  self._metadata: Dict[str, Any] = {}
104
- self._framework: Optional["Framework"] = None
99
+ self._framework: Optional[ModelFrameworkType] = None
105
100
  self._set_mutable_attrs()
106
101
 
107
102
  @classmethod
@@ -140,20 +135,29 @@ class ModelVersion:
140
135
  )
141
136
 
142
137
  def _set_mutable_attrs(self):
143
- self._description = self._model_version.description or ""
144
- self._metadata = copy.deepcopy(self._model_version.artifact_metadata)
145
- self._framework = (
146
- copy.deepcopy(self._model_version.manifest.framework)
147
- if self._model_version.manifest
148
- else None
149
- )
138
+ if self._model_version.manifest:
139
+ self._description = self._model_version.manifest.description or ""
140
+ self._metadata = copy.deepcopy(self._model_version.manifest.metadata)
141
+ if self._model_version.manifest.framework:
142
+ self._framework = copy.deepcopy(
143
+ self._model_version.manifest.framework.actual_instance
144
+ )
145
+ else:
146
+ self._framework = None
147
+ else:
148
+ self._description = self._model_version.description or ""
149
+ self._metadata = copy.deepcopy(self._model_version.artifact_metadata)
150
+ self._framework = _ModelFramework.to_model_framework_type(
151
+ self._model_version.model_framework
152
+ )
150
153
 
151
- def _refetch_model_version(self):
154
+ def _refetch_model_version(self, reset_mutable_attrs: bool = True):
152
155
  _model_version = self._mlfoundry_artifacts_api.get_model_version_get(
153
156
  id=self._model_version.id
154
157
  )
155
158
  self._model_version = _model_version.model_version
156
- self._set_mutable_attrs()
159
+ if reset_mutable_attrs:
160
+ self._set_mutable_attrs()
157
161
 
158
162
  def __repr__(self):
159
163
  return f"{self.__class__.__name__}(fqn={self.fqn!r})"
@@ -187,12 +191,14 @@ class ModelVersion:
187
191
  return self._model_version.fqn
188
192
 
189
193
  @property
190
- def step(self) -> int:
194
+ def step(self) -> Optional[int]:
191
195
  """Get the step in which model was created"""
196
+ if self._model_version.manifest:
197
+ return self._model_version.manifest.step
192
198
  return self._model_version.step
193
199
 
194
200
  @property
195
- def description(self) -> Optional[str]:
201
+ def description(self) -> str:
196
202
  """Get description of the model"""
197
203
  return self._description
198
204
 
@@ -201,8 +207,6 @@ class ModelVersion:
201
207
  """set the description of the model"""
202
208
  _validate_description(value)
203
209
  self._description = value
204
- if self._model_version.manifest:
205
- self._model_version.manifest.description = value
206
210
 
207
211
  @property
208
212
  def metadata(self) -> Dict[str, Any]:
@@ -213,52 +217,34 @@ class ModelVersion:
213
217
  def metadata(self, value: Dict[str, Any]):
214
218
  """set the metadata for current model"""
215
219
  _validate_artifact_metadata(value)
216
- self._metadata = value
217
- if self._model_version.manifest:
218
- self._model_version.manifest.metadata = value
220
+ self._metadata = copy.deepcopy(value)
219
221
 
220
222
  @property
221
223
  def framework(self) -> Optional["ModelFrameworkType"]:
222
224
  """Get the framework of the model"""
223
- return (
224
- _ModelFramework.from_dict(self._framework.actual_instance.dict())
225
- if self._framework and self._framework.actual_instance
226
- else None
227
- )
225
+ return self._framework
228
226
 
229
227
  @framework.setter
230
228
  def framework(
231
229
  self, value: Optional[Union[str, ModelFramework, "ModelFrameworkType"]]
232
230
  ):
233
- """set the framework of the model"""
234
- model_framework_type: Optional[ModelFrameworkType] = None
235
-
236
- if value is not None:
237
- model_framework_type = _ModelFramework.to_model_framework_type(value)
238
-
239
- if (
240
- self._model_version.serialization_format
241
- == ArtifactVersionSerializationFormat.V2
242
- ):
243
- self._model_version.manifest.framework = self._framework = (
244
- Framework.from_dict(model_framework_type.dict())
245
- if model_framework_type
246
- else None
247
- )
248
- else:
231
+ """Set the framework of the model"""
232
+ if not self._model_version.manifest:
249
233
  warnings.warn(
250
234
  message="This model version was created using an older serialization format. Framework will not be updated",
251
235
  category=DeprecationWarning,
252
236
  stacklevel=2,
253
237
  )
238
+ return
239
+ self._framework = _ModelFramework.to_model_framework_type(value)
254
240
 
255
241
  @property
256
- def created_at(self) -> datetime.datetime:
242
+ def created_at(self) -> Optional[datetime.datetime]:
257
243
  """Get the time at which model version was created"""
258
244
  return self._model_version.created_at
259
245
 
260
246
  @property
261
- def updated_at(self) -> datetime.datetime:
247
+ def updated_at(self) -> Optional[datetime.datetime]:
262
248
  """Get the information about when the model version was updated"""
263
249
  return self._model_version.updated_at
264
250
 
@@ -311,13 +297,11 @@ class ModelVersion:
311
297
  path=path, overwrite=overwrite, progress=progress
312
298
  )
313
299
 
314
- if (
315
- self._model_version.serialization_format
316
- == ArtifactVersionSerializationFormat.V2
317
- ):
300
+ if self._model_version.manifest:
301
+ _framework = self._model_version.manifest.framework
318
302
  model_framework = (
319
- ModelFramework(self.framework.type)
320
- if self.framework
303
+ ModelFramework(_framework.actual_instance.type)
304
+ if _framework
321
305
  else ModelFramework.UNKNOWN
322
306
  )
323
307
  download_info = ModelVersionDownloadInfo(
@@ -429,22 +413,34 @@ class ModelVersion:
429
413
  ```
430
414
  """
431
415
  self._ensure_not_deleted()
432
- _model_version = self._mlfoundry_artifacts_api.update_model_version_post(
433
- update_model_version_request_dto=UpdateModelVersionRequestDto(
434
- id=self._model_version.id,
435
- description=self.description,
436
- artifact_metadata=self.metadata,
437
- manifest=self._model_version.manifest,
416
+ if self._model_version.manifest:
417
+ self._model_version.manifest.description = self.description
418
+ self._model_version.manifest.metadata = self.metadata
419
+ self._model_version.manifest.framework = (
420
+ Framework.from_dict(self.framework.dict()) if self.framework else None
438
421
  )
439
- )
440
- self._model_version = _model_version.model_version
441
- self._set_mutable_attrs()
422
+ try:
423
+ _model_version = self._mlfoundry_artifacts_api.update_model_version_post(
424
+ update_model_version_request_dto=UpdateModelVersionRequestDto(
425
+ id=self._model_version.id,
426
+ description=self.description,
427
+ artifact_metadata=self.metadata,
428
+ manifest=self._model_version.manifest,
429
+ )
430
+ )
431
+ except Exception:
432
+ # rollback edits to internal object
433
+ self._refetch_model_version(reset_mutable_attrs=False)
434
+ raise
435
+ else:
436
+ self._model_version = _model_version.model_version
437
+ self._set_mutable_attrs()
442
438
 
443
439
 
444
440
  def _log_model_version( # noqa: C901
445
441
  run: Optional["MlFoundryRun"],
446
442
  name: str,
447
- model_file_or_folder: Union[str, BlobStorageModelDirectory],
443
+ model_file_or_folder: Union[str, BlobStorageDirectory],
448
444
  mlfoundry_artifacts_api: Optional[MlfoundryArtifactsApi] = None,
449
445
  ml_repo_id: Optional[str] = None,
450
446
  additional_files: Sequence[Tuple[Union[str, Path], Optional[str]]] = (),
@@ -459,9 +455,9 @@ def _log_model_version( # noqa: C901
459
455
  "Exactly one of run, mlfoundry_artifacts_api should be passed"
460
456
  )
461
457
 
462
- if not isinstance(model_file_or_folder, (str, BlobStorageModelDirectory)):
458
+ if not isinstance(model_file_or_folder, (str, BlobStorageDirectory)):
463
459
  raise MlFoundryException(
464
- "model_file_or_folder should be of type str or BlobStorageModelDirectory"
460
+ "model_file_or_folder should be of type str or BlobStorageDirectory"
465
461
  )
466
462
 
467
463
  if mlfoundry_artifacts_api and not ml_repo_id:
@@ -522,11 +518,9 @@ def _log_model_version( # noqa: C901
522
518
  version_id = _create_artifact_version_response.id
523
519
  artifact_storage_root = _create_artifact_version_response.artifact_storage_root
524
520
  if isinstance(model_file_or_folder, str):
525
- # Source is of type TruefoundryModelSource
526
- source = ModelVersionSource.from_json(
527
- TruefoundryModelSource(
528
- type="truefoundry", uri=artifact_storage_root
529
- ).to_json()
521
+ # Source is of type TrueFoundryArtifactSource
522
+ source = TrueFoundryArtifactSource(
523
+ type="truefoundry", uri=artifact_storage_root
530
524
  )
531
525
  artifacts_repo = MlFoundryArtifactsRepository(
532
526
  artifact_identifier=ArtifactIdentifier(
@@ -555,20 +549,19 @@ def _log_model_version( # noqa: C901
555
549
  raise MlFoundryException("Failed to log model") from e
556
550
  finally:
557
551
  temp_dir.cleanup()
558
- elif isinstance(model_file_or_folder, BlobStorageModelDirectory):
559
- source = ModelVersionSource.from_json(
560
- ExternalModelSource(type="external", uri=model_file_or_folder.uri).to_json()
561
- )
552
+ elif isinstance(model_file_or_folder, BlobStorageDirectory):
553
+ source = ExternalArtifactSource(type="external", uri=model_file_or_folder.uri)
562
554
  else:
563
555
  raise MlFoundryException("Invalid model_file_or_folder provided")
564
556
 
565
557
  _framework = _ModelFramework.to_model_framework_type(framework)
558
+ _source_cls = typing.get_type_hints(ModelVersionManifest)["source"]
566
559
  model_manifest = ModelVersionManifest(
567
560
  description=description,
568
561
  metadata=metadata,
569
- source=source,
562
+ source=_source_cls.from_dict(source.dict()),
570
563
  framework=Framework.from_dict(_framework.dict()) if _framework else None,
571
- step=step if run else 0,
564
+ step=step,
572
565
  )
573
566
  artifact_version_response = mlfoundry_artifacts_api.finalize_artifact_version_post(
574
567
  finalize_artifact_version_request_dto=FinalizeArtifactVersionRequestDto(
@@ -578,7 +571,7 @@ def _log_model_version( # noqa: C901
578
571
  artifact_metadata=metadata,
579
572
  internal_metadata=None,
580
573
  step=model_manifest.step,
581
- manifest=model_manifest,
574
+ manifest=Manifest.from_dict(model_manifest.to_dict()),
582
575
  )
583
576
  )
584
577
  return ModelVersion.from_fqn(fqn=artifact_version_response.artifact_version.fqn)
@@ -48,12 +48,12 @@ from truefoundry.ml.internal_namespace import NAMESPACE
48
48
  from truefoundry.ml.log_types.artifacts.artifact import (
49
49
  ArtifactPath,
50
50
  ArtifactVersion,
51
+ BlobStorageDirectory,
51
52
  ChatPromptVersion,
52
53
  )
53
54
  from truefoundry.ml.log_types.artifacts.dataset import DataDirectory
54
55
  from truefoundry.ml.log_types.artifacts.general_artifact import _log_artifact_version
55
56
  from truefoundry.ml.log_types.artifacts.model import (
56
- BlobStorageModelDirectory,
57
57
  ModelVersion,
58
58
  _log_model_version,
59
59
  )
@@ -1226,7 +1226,7 @@ class MlFoundry:
1226
1226
  *,
1227
1227
  ml_repo: str,
1228
1228
  name: str,
1229
- model_file_or_folder: Union[str, BlobStorageModelDirectory],
1229
+ model_file_or_folder: Union[str, BlobStorageDirectory],
1230
1230
  additional_files: Sequence[Tuple[Union[str, Path], Optional[str]]] = (),
1231
1231
  description: Optional[str] = None,
1232
1232
  metadata: Optional[Dict[str, Any]] = None,
@@ -1244,12 +1244,12 @@ class MlFoundry:
1244
1244
  the logged model will be added as a new version under that `name`. If no models exist with the given
1245
1245
  `name`, the given model will be logged as version 1.
1246
1246
 
1247
- model_file_or_folder (Union[str, BlobStorageModelDirectory]):
1247
+ model_file_or_folder (Union[str, BlobStorageDirectory]):
1248
1248
  str:
1249
1249
  Path to either a single file or a folder containing model files.
1250
1250
  This folder is typically created using serialization methods from libraries or frameworks,
1251
1251
  e.g., `joblib.dump`, `model.save_pretrained(...)`, `torch.save(...)`, or `model.save(...)`.
1252
- BlobStorageModelDirectory:
1252
+ BlobStorageDirectory:
1253
1253
  uri (str): URI to the model file or folder in a storage integration associated with the specified ML Repo.
1254
1254
  The model files or folder must reside within the same storage integration as the specified ML Repo.
1255
1255
  Accepted URI formats include `s3://integration-bucket-name/prefix/path/to/model` or `gs://integration-bucket-name/prefix/path/to/model`.
@@ -44,10 +44,13 @@ from truefoundry.ml.enums import ModelFramework, RunStatus
44
44
  from truefoundry.ml.exceptions import MlFoundryException
45
45
  from truefoundry.ml.internal_namespace import NAMESPACE
46
46
  from truefoundry.ml.log_types import Image, Plot
47
- from truefoundry.ml.log_types.artifacts.artifact import ArtifactPath, ArtifactVersion
47
+ from truefoundry.ml.log_types.artifacts.artifact import (
48
+ ArtifactPath,
49
+ ArtifactVersion,
50
+ BlobStorageDirectory,
51
+ )
48
52
  from truefoundry.ml.log_types.artifacts.general_artifact import _log_artifact_version
49
53
  from truefoundry.ml.log_types.artifacts.model import (
50
- BlobStorageModelDirectory,
51
54
  ModelVersion,
52
55
  _log_model_version,
53
56
  )
@@ -926,7 +929,7 @@ class MlFoundryRun:
926
929
  self,
927
930
  *,
928
931
  name: str,
929
- model_file_or_folder: Union[str, BlobStorageModelDirectory],
932
+ model_file_or_folder: Union[str, BlobStorageDirectory],
930
933
  additional_files: Sequence[Tuple[Union[str, Path], Optional[str]]] = (),
931
934
  description: Optional[str] = None,
932
935
  metadata: Optional[Dict[str, Any]] = None,
@@ -945,12 +948,12 @@ class MlFoundryRun:
945
948
  name (str): Name of the model. If a model with this name already exists under the current ML Repo,
946
949
  the logged model will be added as a new version under that `name`. If no models exist with the given
947
950
  `name`, the given model will be logged as version 1.
948
- model_file_or_folder (Union[str, BlobStorageModelDirectory]):
951
+ model_file_or_folder (Union[str, BlobStorageDirectory]):
949
952
  str:
950
953
  Path to either a single file or a folder containing model files.
951
954
  This folder is typically created using serialization methods from libraries or frameworks,
952
955
  e.g., `joblib.dump`, `model.save_pretrained(...)`, `torch.save(...)`, or `model.save(...)`.
953
- BlobStorageModelDirectory:
956
+ BlobStorageDirectory:
954
957
  uri (str): URI to the model file or folder in a storage integration associated with the specified ML Repo.
955
958
  The model files or folder must reside within the same storage integration as the specified ML Repo.
956
959
  Accepted URI formats include `s3://integration-bucket-name/prefix/path/to/model` or `gs://integration-bucket-name/prefix/path/to/model`.
@@ -1,5 +1,5 @@
1
1
  import warnings
2
- from typing import Literal, Optional, Union, get_args
2
+ from typing import Any, Dict, Literal, Optional, Union, get_args
3
3
 
4
4
  from truefoundry.ml import ModelFramework
5
5
  from truefoundry.ml.autogen.entities import artifacts as autogen_artifacts
@@ -161,7 +161,7 @@ class _ModelFramework(BaseModel):
161
161
  )
162
162
 
163
163
  @classmethod
164
- def from_dict(cls, obj: dict) -> ModelFrameworkType:
164
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[ModelFrameworkType]:
165
165
  """Create an instance of ModelFramework from a dict"""
166
166
  if obj is None:
167
167
  return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: truefoundry
3
- Version: 0.5.0rc3
3
+ Version: 0.5.0rc4
4
4
  Summary: Truefoundry CLI
5
5
  Author: Abhishek Choudhary
6
6
  Author-email: abhishek@truefoundry.com
@@ -21,7 +21,7 @@ Requires-Dist: coolname (>=1.1.0,<2.0.0)
21
21
  Requires-Dist: docker (>=6.1.2,<8.0.0)
22
22
  Requires-Dist: fastapi (>=0.56.0,<0.200.0)
23
23
  Requires-Dist: filelock (>=3.8.0,<4.0.0)
24
- Requires-Dist: flytekit (==1.12.2) ; extra == "workflow"
24
+ Requires-Dist: flytekit (==1.13.13) ; extra == "workflow"
25
25
  Requires-Dist: gitignorefile (>=1.1.2,<2.0.0)
26
26
  Requires-Dist: importlib-metadata (>=4.11.3,<9.0.0)
27
27
  Requires-Dist: importlib-resources (>=5.2.0,<7.0.0)
@@ -111,7 +111,7 @@ truefoundry/deploy/python_deploy_codegen.py,sha256=qJHH1BJQII9e6PhkcRFYiE_3De7_V
111
111
  truefoundry/deploy/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
112
  truefoundry/deploy/v2/lib/__init__.py,sha256=WEiVMZXOVljzEE3tpGJil14liIn_PCDoACJ6b3tZ6sI,188
113
113
  truefoundry/deploy/v2/lib/deploy.py,sha256=HIcY3SzQ5lWl7avuuKi3J0Z-PBES6Sf4hgMK-m6_53U,11990
114
- truefoundry/deploy/v2/lib/deploy_workflow.py,sha256=WhlrBuRf7r83qoQdTZSQzHt635fw9D4_qQIqusFWGag,12372
114
+ truefoundry/deploy/v2/lib/deploy_workflow.py,sha256=hgAhd1EGwFLz319Vs-WNXHDJmbKjdgkGPzDnBD1Up1k,12579
115
115
  truefoundry/deploy/v2/lib/deployable_patched_models.py,sha256=MROgMxhn9hDEAKwJSWl3iz12tUVvRKzEtqF2QUT6dAk,3343
116
116
  truefoundry/deploy/v2/lib/models.py,sha256=pSolLMTArDuYpeNsmeeS5DWliloN_iCDfZSpRllMHUg,1120
117
117
  truefoundry/deploy/v2/lib/patched_models.py,sha256=sokVDUdnhe3qx6dXlHM0shbf6HvSlF72-mvi8Lzt_Y8,13968
@@ -123,11 +123,11 @@ truefoundry/langchain/truefoundry_embeddings.py,sha256=8nRaZ7W1ao1WF0LHk6nNel1Lu
123
123
  truefoundry/langchain/truefoundry_llm.py,sha256=CJXyCgXIMbDsVRuuvEA5PKJsf6aRyVlYuG7zC4qtZXE,3802
124
124
  truefoundry/langchain/utils.py,sha256=PGLDe9chZ3BuUjakexOGpIqZRFoHEgu-zJ9yKdpLLmM,1329
125
125
  truefoundry/logger.py,sha256=u-YCNjg5HBwE70uQcpjIG64Ghos-K2ulTWaxC03BSj4,714
126
- truefoundry/ml/__init__.py,sha256=ZMT9C7q9YnwfnfruI0xipizSo1OO__f8Ao-oE65DZyg,1836
126
+ truefoundry/ml/__init__.py,sha256=tcFeEcIgBLR92pUDiu7zDSeI1vsSshlCzuIgnSbyE8E,1839
127
127
  truefoundry/ml/artifact/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
128
  truefoundry/ml/artifact/truefoundry_artifact_repo.py,sha256=VU8i3jnY62MLfzA3rxXuUjdqLz8Yaw4zqqPWSsf0mBg,45850
129
129
  truefoundry/ml/autogen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
- truefoundry/ml/autogen/client/__init__.py,sha256=0-I7KuPudFU1I1Y4qPbkvAK54E7wzjwIdjnVB57fWGA,18958
130
+ truefoundry/ml/autogen/client/__init__.py,sha256=OD4hsjMELkJNFkpVzcRGX_0tEIfWxL2n_0XYuy8mMoo,19211
131
131
  truefoundry/ml/autogen/client/api/__init__.py,sha256=NyMBxBmIzB1o5LzZZwz9LiydHB3-hPqc_sevsnY6Jrw,746
132
132
  truefoundry/ml/autogen/client/api/auth_api.py,sha256=zpWzJhUmW6HHMY_atlUf0B25k77E1kue2hmix5I5Ih0,7017
133
133
  truefoundry/ml/autogen/client/api/deprecated_api.py,sha256=0qooHNzm5mgweKUEDjnESHPeUqrlzuNEsDJwW9Cm9Vs,24232
@@ -142,7 +142,7 @@ truefoundry/ml/autogen/client/api_client.py,sha256=8qg-WpadDuKgbRt5yABJ4wVS4IRxd
142
142
  truefoundry/ml/autogen/client/api_response.py,sha256=KRyvecPMXF05PaxILHZ8JHoP4rgKBjKONMgG83aU-rM,844
143
143
  truefoundry/ml/autogen/client/configuration.py,sha256=V1oaEnxt-NfpaNmp-EZpf2glovzVhM2coWYt8HBNB4M,15723
144
144
  truefoundry/ml/autogen/client/exceptions.py,sha256=XbCbDHhYT3BVejdoGNPgEa4oS56ypkwFdxk1iOc_tFY,5355
145
- truefoundry/ml/autogen/client/models/__init__.py,sha256=ZNjoIgoxY6uxmChlRP7q5ea1g2EZvNARDvHKIYujGXU,17580
145
+ truefoundry/ml/autogen/client/models/__init__.py,sha256=IH4Cx1qYoYds5nkThxh9yMShRYZ5mGwn5fFFyPvnG6Y,17833
146
146
  truefoundry/ml/autogen/client/models/add_custom_metrics_to_model_version_request_dto.py,sha256=_ISDspicTGjBCYYXubKfRYYSSQVyW3AvG-jFh47-Zfc,2163
147
147
  truefoundry/ml/autogen/client/models/add_features_to_model_version_request_dto.py,sha256=rU0h96pEE8K1Ukw2pzDSjq0e6BgtDEuOctI-aZMrpUY,2653
148
148
  truefoundry/ml/autogen/client/models/agent.py,sha256=fnMWdEPe5Iw50WKydtu7QAxU419j3ju1IukpChUnGqY,3871
@@ -153,7 +153,8 @@ truefoundry/ml/autogen/client/models/agent_with_fqn.py,sha256=_LFRmdT0KNe1CRNBfE
153
153
  truefoundry/ml/autogen/client/models/artifact_dto.py,sha256=JWL8_sITJJXbxywcfRj4xqt8jR9pyBmA4TfwNTdX6CE,4243
154
154
  truefoundry/ml/autogen/client/models/artifact_response_dto.py,sha256=T_HLjkHnqiO1bnSXiCUOlwDEHGz89mlUNhBq0SJTapo,2226
155
155
  truefoundry/ml/autogen/client/models/artifact_type.py,sha256=LBXGYUoesmL5J-0xzCR8jBST3bjb6HY86RmqSGvytRs,828
156
- truefoundry/ml/autogen/client/models/artifact_version_dto.py,sha256=oGWsRSxLDy8aGMI9dfaaNZH9JpPnqLevWSRmMCsHo44,6233
156
+ truefoundry/ml/autogen/client/models/artifact_version_dto.py,sha256=GXjjKycpsEgJ60V2hAfL4NMxM2gZKLP2qV2yBb9WgdM,6174
157
+ truefoundry/ml/autogen/client/models/artifact_version_manifest.py,sha256=xqznaihmb9voR_-GqQ3vlDG5ZxvYhjjWCP9nR-WmIIE,3531
157
158
  truefoundry/ml/autogen/client/models/artifact_version_response_dto.py,sha256=JmiSYdPYG-ki6LCBeF7NtihdQ2LPiHld8cSPivY2GmQ,2421
158
159
  truefoundry/ml/autogen/client/models/artifact_version_serialization_format.py,sha256=2Qfgq1nykn0_mKNEJzOxhQwHm_95WIr9wJcHLeFWXQM,774
159
160
  truefoundry/ml/autogen/client/models/artifact_version_status.py,sha256=iIcomqhuaJkZH2rT3e6IjQutM79t9hEshW-RCIMKHEY,780
@@ -198,12 +199,12 @@ truefoundry/ml/autogen/client/models/experiment_dto.py,sha256=bl4-Hp1EHl8CEKgWq6
198
199
  truefoundry/ml/autogen/client/models/experiment_id_request_dto.py,sha256=ZMH827n_UTpDI30UnkuOam-4ANBKCDgocIzI8StxFR8,1891
199
200
  truefoundry/ml/autogen/client/models/experiment_response_dto.py,sha256=wuflV6_f8PQq061-wU2GzNY4BZi8SG8ARCIbSQN1oT4,2268
200
201
  truefoundry/ml/autogen/client/models/experiment_tag_dto.py,sha256=nEpCkeZ9ficIDkjmmLfkJeNNokd-Rhgr-cepPWG6L3M,1902
201
- truefoundry/ml/autogen/client/models/external_model_source.py,sha256=WE3JoHmaCDIeoHpcSOtkDsNocBoaTMzqiIuAiq6qIro,2336
202
+ truefoundry/ml/autogen/client/models/external_artifact_source.py,sha256=s7cDavSpmlCblMVV1DjSWur258YHYPxVjWze3uQTjXY,2360
202
203
  truefoundry/ml/autogen/client/models/fast_ai_framework.py,sha256=pl--nyTJF687SNmX0v1ICISmUCVc6ekF8VH_Rl1kHEQ,2170
203
204
  truefoundry/ml/autogen/client/models/feature_dto.py,sha256=XM7fF71P_bYP3UlO1ILjnD3DJNpf2tGwAWbrkQyvyA4,1924
204
205
  truefoundry/ml/autogen/client/models/feature_value_type.py,sha256=3ZKxxEfrrWk8ePlV7n11wa-FdDH0SRLyHRqSvIU7F-M,732
205
206
  truefoundry/ml/autogen/client/models/file_info_dto.py,sha256=7oc8venicsFVk8zT9wHNhHnZGtFkFlqimFnS7ozGL9k,2156
206
- truefoundry/ml/autogen/client/models/finalize_artifact_version_request_dto.py,sha256=tArvzRPp80PpfJ4CoMwwaKqPAfzonq-8C-yKBEjs9co,3877
207
+ truefoundry/ml/autogen/client/models/finalize_artifact_version_request_dto.py,sha256=tkPcNjI0_qhX-D3m6AXqLzdmo9_K0tFBtbPDeg0Zo7U,3818
207
208
  truefoundry/ml/autogen/client/models/framework.py,sha256=W_KrqH1qKRvlrssCCWFIlmPaeAw0eiM6VqS3pbdlMXU,14720
208
209
  truefoundry/ml/autogen/client/models/get_experiment_response_dto.py,sha256=FhJpoUeRbZV1s1KR3Y07Kv6U4enLbbgdpGbguT9us0A,2923
209
210
  truefoundry/ml/autogen/client/models/get_latest_run_log_response_dto.py,sha256=g5NG252VzjGHiA-w5nhxmZxGrowJO9XCHDQTjf8y2KE,2266
@@ -251,6 +252,7 @@ truefoundry/ml/autogen/client/models/list_run_logs_response_dto.py,sha256=ckQBBY
251
252
  truefoundry/ml/autogen/client/models/log_batch_request_dto.py,sha256=xDas-pmJP5T-8zKd17BbSnglZuX15ei3n9blBZUxa-Y,3702
252
253
  truefoundry/ml/autogen/client/models/log_metric_request_dto.py,sha256=QED1aIeaZJG-8iKFxT3NX9ozlUz_wom1xDsyZgL-a-4,2442
253
254
  truefoundry/ml/autogen/client/models/log_param_request_dto.py,sha256=Hd7AqrVnSkwfa9CcDbATERaim5Hf8rM59WZQNxSlJzk,2160
255
+ truefoundry/ml/autogen/client/models/manifest.py,sha256=PosK8HiHt54GARPhLecmMcDQrzCgPJhReV4UHArj19w,5078
254
256
  truefoundry/ml/autogen/client/models/method.py,sha256=NepwKtC72Wn0b4kkYM9uek6lZ55erqFEtlASOn1fYbU,734
255
257
  truefoundry/ml/autogen/client/models/metric_collection_dto.py,sha256=02ZWKm2_8DjGBhrPMysTACE2SQpyz4BSVMY01-k_qEA,2507
256
258
  truefoundry/ml/autogen/client/models/metric_dto.py,sha256=Xrcc8XRY0sZeg_cnb6gyf-AUUIS0FPxSGTCbDzcBzXQ,2174
@@ -260,7 +262,7 @@ truefoundry/ml/autogen/client/models/model_dto.py,sha256=TUO74MDqe8XCVJBB2O7Tiqi
260
262
  truefoundry/ml/autogen/client/models/model_response_dto.py,sha256=osrTxfygkuhxWj6SkRBALrSnFVPH4LSK6qTufTeZuJg,2163
261
263
  truefoundry/ml/autogen/client/models/model_schema_dto.py,sha256=ElEPK7fwuf3eiohNBBHJyl-nhNqzGnDLzZVzuQl-xC0,2620
262
264
  truefoundry/ml/autogen/client/models/model_version_dto.py,sha256=6kI1Z2czYAieJZBaVvcV8Y2eeNEUDyjPuTLHTdyWnOE,7282
263
- truefoundry/ml/autogen/client/models/model_version_manifest.py,sha256=Jd8oJj9-awzg-jP_hhLEMH3PSXir2p5Kc5o0YEB9ZRA,3957
265
+ truefoundry/ml/autogen/client/models/model_version_manifest.py,sha256=uglhFSCDbcp9beh-zKJ8eLxsmfwnMkS1si8_GnWTPI8,3961
264
266
  truefoundry/ml/autogen/client/models/model_version_response_dto.py,sha256=D6XOCyggxqTkbePuypqYSHYh1PYeDv7R_J32q61sDM0,2320
265
267
  truefoundry/ml/autogen/client/models/multi_part_upload_dto.py,sha256=Ckq405vud8RQmMyKCJQJBlW5iXO7Y2mlgo8eVkiMvxg,3738
266
268
  truefoundry/ml/autogen/client/models/multi_part_upload_response_dto.py,sha256=VjH0kvl7rMjgDHjYGHnsh7KsZ5-qn-k3ksdGLJ49nIM,2431
@@ -288,7 +290,8 @@ truefoundry/ml/autogen/client/models/set_experiment_tag_request_dto.py,sha256=nr
288
290
  truefoundry/ml/autogen/client/models/set_tag_request_dto.py,sha256=IRgAdMcWBxmjNV6nZJej4pcNfLmZwrelEZ3otwt7eeE,2144
289
291
  truefoundry/ml/autogen/client/models/signed_url_dto.py,sha256=9oHoXBj07xTdc04rqOqJO3eOjQWXCyWPhfHg-6qX60w,1897
290
292
  truefoundry/ml/autogen/client/models/sklearn_framework.py,sha256=8-GvfwN5fHVDiOXPvVa9rBeG0VEavwwTsfEp3Nl0uO8,2187
291
- truefoundry/ml/autogen/client/models/source.py,sha256=8vQ6Fcky8kYAQiATuphxuhxKGRhH4WmcTiUa9N8iZQM,5095
293
+ truefoundry/ml/autogen/client/models/source.py,sha256=ZG2-3oIs_M8mZNPjoIRPzhHqlm63vLCVQC9idUxQ0XU,5180
294
+ truefoundry/ml/autogen/client/models/source1.py,sha256=io35b9uVzqSvOHw6RlCXxM30thN-vHm1upaSiN2i0II,5183
292
295
  truefoundry/ml/autogen/client/models/spa_cy_framework.py,sha256=JM1DLF8JL4c7-JZN-dQX_7NF8jIS6RP-mEk1uoWQpaU,2149
293
296
  truefoundry/ml/autogen/client/models/stats_models_framework.py,sha256=INndD-nZFAfRbKZXss4erx4xtotb_hlRFlEvitKrIzQ,2230
294
297
  truefoundry/ml/autogen/client/models/stop.py,sha256=UlAjRWI6Gjc92D2UME6qRAIfd6GoDI3VBWYkJqgixmU,4760
@@ -299,11 +302,11 @@ truefoundry/ml/autogen/client/models/system_message.py,sha256=yxRCJPl36FGv2zrsuH
299
302
  truefoundry/ml/autogen/client/models/tensor_flow_framework.py,sha256=lvABZqmVED7Hg7aDZ7bovN6usG_TZCWI4B8Ew6NAymw,2218
300
303
  truefoundry/ml/autogen/client/models/text.py,sha256=HAIK-w_TxB1kXGvVNK1d2cweoQi-GJ9d-0QSZl21u68,4862
301
304
  truefoundry/ml/autogen/client/models/text_content_part.py,sha256=fRQu22tiV3rDKmTgVZSLHX-cMcha3q53W8qWNCk5wmU,2492
302
- truefoundry/ml/autogen/client/models/transformers_framework.py,sha256=ialS6K3F64iLSe19qVXeuXNctEq6IzMFi7cBhP00bdg,2903
305
+ truefoundry/ml/autogen/client/models/transformers_framework.py,sha256=0lbFboK0hfHxZGLRiLAhX0imn-EAJHunFWDORF6-zSY,3203
303
306
  truefoundry/ml/autogen/client/models/trigger_job_run_config_request_dto.py,sha256=1HtO6zfW6Ulq8Gm_UL0YqVrse0795vZkMxgCQ0GKD9w,2864
304
307
  truefoundry/ml/autogen/client/models/trigger_job_run_config_response_dto.py,sha256=P35xzE8MyS_HtxCcXC9fZORPX2wbf93LbCZCRggkQxw,2144
305
- truefoundry/ml/autogen/client/models/truefoundry_model_source.py,sha256=Jc3sP2n05kQz92nHaU5RCcwP9bfeIBFUuxfvwdojub8,2418
306
- truefoundry/ml/autogen/client/models/update_artifact_version_request_dto.py,sha256=AhXj2afmrKskBi5uMT0-mSywZyz3g17lFE3uMRQ5pEM,2246
308
+ truefoundry/ml/autogen/client/models/true_foundry_artifact_source.py,sha256=Qwtowy8XSqMgQQ9yEk9AUL1ghaETLbwQW9sGNQfh6D0,2456
309
+ truefoundry/ml/autogen/client/models/update_artifact_version_request_dto.py,sha256=nBcEe5aCIvqKz_iIeegkDKsOedSTq6-ahlC_GAwxkO4,2766
307
310
  truefoundry/ml/autogen/client/models/update_dataset_request_dto.py,sha256=MF-rjJGUP6sDZVH3xP4Q8AEC9CV2PXEO9cXrR6yK57A,2182
308
311
  truefoundry/ml/autogen/client/models/update_experiment_request_dto.py,sha256=QE_kZzTDdiXKtQ2U-zbI_gb5vxS5Yv9YupYvD22RkFs,2198
309
312
  truefoundry/ml/autogen/client/models/update_model_version_request_dto.py,sha256=0xWqHHflnpO8FyT79psPiPBIGW6Aiovs-b6H7sjMSDQ,3589
@@ -315,8 +318,8 @@ truefoundry/ml/autogen/client/models/validation_error.py,sha256=mFjwoc8g2-Usu1HX
315
318
  truefoundry/ml/autogen/client/models/validation_error_loc_inner.py,sha256=nThJ5Gmy8W2Wok-ZOI4sK7uRe1BAkLS0qzq-XZbq8zs,4915
316
319
  truefoundry/ml/autogen/client/models/xg_boost_framework.py,sha256=kXijWcmEd5mc6Rks0mYQLqgYp1v7bxp31HQAmaJLZ3s,2182
317
320
  truefoundry/ml/autogen/client/rest.py,sha256=9goba8qHjQuVx5O_yRaTKu7PvBnb7r7swfy3dwuTEgk,14281
318
- truefoundry/ml/autogen/client_README.md,sha256=h8EUUiMl1vHri3Jrt0PjkFD-CoXAf5WXSgG4iRqlouc,35564
319
- truefoundry/ml/autogen/entities/artifacts.py,sha256=qc4XW3X8BR-zE32tNbCBMJ5kc_aPehDOBhyugvAYY-8,16646
321
+ truefoundry/ml/autogen/client_README.md,sha256=nIyCT1OXBMLV_cadu0OIqQCtXmGm3frJnO0gbJ_7b9Q,35790
322
+ truefoundry/ml/autogen/entities/artifacts.py,sha256=KQvJEVqlQGtq3AKRZ4xhwZC05XtC1JDcuh8_CB1tZ78,17167
320
323
  truefoundry/ml/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
321
324
  truefoundry/ml/cli/cli.py,sha256=ckBcjUpqfhgrPE1okqT_G2iouOLt-0KjpLhHp2YdVFU,256
322
325
  truefoundry/ml/cli/commands/__init__.py,sha256=diDUiRUX4l6TtNLI4iF-ZblczkELM7FRViJ-8gGNJQY,82
@@ -332,11 +335,11 @@ truefoundry/ml/exceptions.py,sha256=8aJm2NYtAWWsRLu4MbzaoOqHsQZ6RjOFwBWQWqb6qrc,
332
335
  truefoundry/ml/git_info.py,sha256=jvAVm9ilqivnGq8qJdUvYdd8Siv0PLtqurB-PXsS5ho,2023
333
336
  truefoundry/ml/internal_namespace.py,sha256=QcqMHp6-C2im2H_02hlhi01EIcr1HhNaZprszs13EMU,1790
334
337
  truefoundry/ml/log_types/__init__.py,sha256=g4u4D4Jaj0aBK5GtrLV88-qThKZR9pSZ17vFEkN-LmM,125
335
- truefoundry/ml/log_types/artifacts/artifact.py,sha256=n2EwAupOigDcUXQQFIIESRqp7zipLZieec0vLQ2DVRQ,17593
338
+ truefoundry/ml/log_types/artifacts/artifact.py,sha256=6X4lO23DwM7yTgUOY4RRoYMrf9m2AbiBBo2WftS2-dc,20457
336
339
  truefoundry/ml/log_types/artifacts/constants.py,sha256=qKxQ5mMvJE4j83BvGW3qNTKunxCiBg_EEjTdgbgJtyE,1036
337
340
  truefoundry/ml/log_types/artifacts/dataset.py,sha256=a4dxd2EN8p7Ci-cLGGiDOboN3t0395_XhWE1dmTw1Q4,13112
338
- truefoundry/ml/log_types/artifacts/general_artifact.py,sha256=_EOlNGMg2PFjlevlD6LEOsaQBBwRWs60PkzJases6tE,3927
339
- truefoundry/ml/log_types/artifacts/model.py,sha256=fcMc63BKqcbjUygpA6w0SFuoWZDvyxJvlPHyh7bNKv4,21161
341
+ truefoundry/ml/log_types/artifacts/general_artifact.py,sha256=B4XErLr-m6RmQWtxMTu3wlFRFcqSwPYp6J0OL4Ng6L0,3179
342
+ truefoundry/ml/log_types/artifacts/model.py,sha256=giK2NyEDFTscSSA9M_paraFvI83hUt_xOouUo8aC8gs,21477
340
343
  truefoundry/ml/log_types/artifacts/model_extras.py,sha256=TIE73bLKfwIVzNiVcjmaZ841A70BHBwu4XAM6ZAQRFI,1045
341
344
  truefoundry/ml/log_types/artifacts/utils.py,sha256=3FVOYlfcvZiW8vTbMe7Ft1cjNPR2GW7J69M3dyAY-qc,6299
342
345
  truefoundry/ml/log_types/image/__init__.py,sha256=fcOq8yQnNj1rkLcPeIjLXBpdA1WIeiPsXOlAAvMxx7M,76
@@ -348,9 +351,9 @@ truefoundry/ml/log_types/plot.py,sha256=HuYvvRA5r8V0xAIuuqMME2IHb9d3SfGHUiuEkOP3
348
351
  truefoundry/ml/log_types/pydantic_base.py,sha256=eBlw_AEyAz4iJKDP4zgJOCFWcldwQqpf7FADW1jzIQY,272
349
352
  truefoundry/ml/log_types/utils.py,sha256=xjJ21jdPScvFmw3TbVh5NCzbzJwaqiXJyiiT4xxX1EI,335
350
353
  truefoundry/ml/logger.py,sha256=VT-BF3BnBYTWVq87O58F0c8uXMu94gYzsiFlGY3_7Ao,458
351
- truefoundry/ml/mlfoundry_api.py,sha256=eLzbXPSaUWBuIZQKld0r30StOHD-dXiS9zQL_Wq4Zk4,62037
352
- truefoundry/ml/mlfoundry_run.py,sha256=FDTEBflyKRA7nP8qCm834NyYjpyy9540J_WnagB25oI,46195
353
- truefoundry/ml/model_framework.py,sha256=YCdRD31rQbPQK-ehNLf1YHuOcPgserFjdPgrrB2Twqg,4737
354
+ truefoundry/ml/mlfoundry_api.py,sha256=29orLTRTH_w6A_GbTadKHMSIxcN3Ae82qYWP1ogxtk8,62017
355
+ truefoundry/ml/mlfoundry_run.py,sha256=Cj-4PWbuDyleKOHuJKM25Y2Xik6b04hK3R5RTXlf34o,46188
356
+ truefoundry/ml/model_framework.py,sha256=TosB73eEpTRlsh6v1AY_LnnW_4OoaSlzENnBXqkVRl4,4778
354
357
  truefoundry/ml/run_utils.py,sha256=0W208wSLUrbdfk2pjNcZlkUi9bNxG2JORqoe-5rVqHI,2423
355
358
  truefoundry/ml/session.py,sha256=F83GTC5WwGBjnJ69Ct8MqMnlutYc56JCc6YhEY1Wl-A,5394
356
359
  truefoundry/ml/validation_utils.py,sha256=XBSUd9OoyriWJpT3M5LKz17iWY3yVMr3hM5vdaVjtf0,12082
@@ -371,7 +374,7 @@ truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py,sha256=5mBCIc-ON
371
374
  truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py,sha256=Hf6Dk6Fu6P7DqsK5ULgraf9DStjgigf-kjaRAMBW-RU,8680
372
375
  truefoundry/workflow/task.py,sha256=ToitYiKcNzFCtOVQwz1W8sRjbR97eVS7vQBdbgUQtKg,1779
373
376
  truefoundry/workflow/workflow.py,sha256=WaTqUjhwfAXDWu4E5ehuwAxrCbDJkoAf1oWmR2E9Qy0,4575
374
- truefoundry-0.5.0rc3.dist-info/METADATA,sha256=NztODLVhdKXFCu6xs3BKqMuKiLFe9FBw98dKtIwmm5Q,3101
375
- truefoundry-0.5.0rc3.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
376
- truefoundry-0.5.0rc3.dist-info/entry_points.txt,sha256=TXvUxQkI6zmqJuycPsyxEIMr3oqfDjgrWj0m_9X12x4,95
377
- truefoundry-0.5.0rc3.dist-info/RECORD,,
377
+ truefoundry-0.5.0rc4.dist-info/METADATA,sha256=keTSBb2h2m_q1CiniPQt75UTizz5a2ZyEZzLQSlOkH8,3102
378
+ truefoundry-0.5.0rc4.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
379
+ truefoundry-0.5.0rc4.dist-info/entry_points.txt,sha256=TXvUxQkI6zmqJuycPsyxEIMr3oqfDjgrWj0m_9X12x4,95
380
+ truefoundry-0.5.0rc4.dist-info/RECORD,,