truefoundry 0.5.0rc6__py3-none-any.whl → 0.5.1rc1__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 (53) hide show
  1. truefoundry/common/utils.py +73 -1
  2. truefoundry/deploy/__init__.py +5 -0
  3. truefoundry/deploy/cli/cli.py +2 -0
  4. truefoundry/deploy/cli/commands/__init__.py +1 -0
  5. truefoundry/deploy/cli/commands/deploy_init_command.py +22 -0
  6. truefoundry/deploy/lib/dao/application.py +2 -1
  7. truefoundry/deploy/v2/lib/patched_models.py +8 -0
  8. truefoundry/ml/__init__.py +15 -12
  9. truefoundry/ml/artifact/truefoundry_artifact_repo.py +8 -3
  10. truefoundry/ml/autogen/client/__init__.py +11 -0
  11. truefoundry/ml/autogen/client/api/mlfoundry_artifacts_api.py +161 -0
  12. truefoundry/ml/autogen/client/models/__init__.py +11 -0
  13. truefoundry/ml/autogen/client/models/artifact_version_manifest.py +2 -2
  14. truefoundry/ml/autogen/client/models/export_deployment_files_request_dto.py +82 -0
  15. truefoundry/ml/autogen/client/models/infer_method_name.py +34 -0
  16. truefoundry/ml/autogen/client/models/model_server.py +34 -0
  17. truefoundry/ml/autogen/client/models/model_version_environment.py +97 -0
  18. truefoundry/ml/autogen/client/models/model_version_manifest.py +14 -3
  19. truefoundry/ml/autogen/client/models/serialization_format.py +35 -0
  20. truefoundry/ml/autogen/client/models/sklearn_framework.py +31 -2
  21. truefoundry/ml/autogen/client/models/transformers_framework.py +2 -2
  22. truefoundry/ml/autogen/client/models/xg_boost_framework.py +20 -2
  23. truefoundry/ml/autogen/client_README.md +6 -0
  24. truefoundry/ml/autogen/entities/artifacts.py +65 -6
  25. truefoundry/ml/cli/commands/model_init.py +97 -0
  26. truefoundry/ml/cli/utils.py +34 -0
  27. truefoundry/ml/log_types/artifacts/model.py +48 -24
  28. truefoundry/ml/log_types/artifacts/utils.py +37 -1
  29. truefoundry/ml/mlfoundry_api.py +77 -79
  30. truefoundry/ml/mlfoundry_run.py +3 -31
  31. truefoundry/ml/model_framework.py +257 -3
  32. truefoundry/ml/validation_utils.py +2 -0
  33. {truefoundry-0.5.0rc6.dist-info → truefoundry-0.5.1rc1.dist-info}/METADATA +2 -6
  34. {truefoundry-0.5.0rc6.dist-info → truefoundry-0.5.1rc1.dist-info}/RECORD +36 -45
  35. truefoundry/deploy/function_service/__init__.py +0 -3
  36. truefoundry/deploy/function_service/__main__.py +0 -27
  37. truefoundry/deploy/function_service/app.py +0 -92
  38. truefoundry/deploy/function_service/build.py +0 -45
  39. truefoundry/deploy/function_service/remote/__init__.py +0 -6
  40. truefoundry/deploy/function_service/remote/context.py +0 -3
  41. truefoundry/deploy/function_service/remote/method.py +0 -67
  42. truefoundry/deploy/function_service/remote/remote.py +0 -144
  43. truefoundry/deploy/function_service/route.py +0 -137
  44. truefoundry/deploy/function_service/service.py +0 -113
  45. truefoundry/deploy/function_service/utils.py +0 -53
  46. truefoundry/langchain/__init__.py +0 -12
  47. truefoundry/langchain/deprecated.py +0 -302
  48. truefoundry/langchain/truefoundry_chat.py +0 -130
  49. truefoundry/langchain/truefoundry_embeddings.py +0 -171
  50. truefoundry/langchain/truefoundry_llm.py +0 -106
  51. truefoundry/langchain/utils.py +0 -44
  52. {truefoundry-0.5.0rc6.dist-info → truefoundry-0.5.1rc1.dist-info}/WHEEL +0 -0
  53. {truefoundry-0.5.0rc6.dist-info → truefoundry-0.5.1rc1.dist-info}/entry_points.txt +0 -0
@@ -1,10 +1,63 @@
1
+ import os
1
2
  import warnings
2
- from typing import Any, Dict, Literal, Optional, Union, get_args
3
-
4
- from truefoundry.ml import ModelFramework
3
+ from collections import OrderedDict
4
+ from pickle import load as pickle_load
5
+ from typing import Any, Callable, Dict, List, Literal, Optional, Type, Union, get_args
6
+
7
+ from truefoundry.common.utils import (
8
+ get_python_version_major_minor,
9
+ list_pip_packages_installed,
10
+ )
11
+ from truefoundry.ml.autogen.client import SerializationFormat
5
12
  from truefoundry.ml.autogen.entities import artifacts as autogen_artifacts
13
+ from truefoundry.ml.enums import ModelFramework
14
+ from truefoundry.ml.log_types.artifacts.utils import (
15
+ get_single_file_path_if_only_one_in_directory,
16
+ to_unix_path,
17
+ )
6
18
  from truefoundry.pydantic_v1 import BaseModel, Field
7
19
 
20
+ # Map serialization format to corresponding pip packages
21
+ SERIALIZATION_FORMAT_TO_PACKAGES_NAME_MAP = {
22
+ SerializationFormat.JOBLIB: ["joblib"],
23
+ SerializationFormat.CLOUDPICKLE: ["cloudpickle"],
24
+ }
25
+
26
+
27
+ class _SerializationFormatLoaderRegistry:
28
+ def __init__(self):
29
+ # An OrderedDict is used to maintain the order of loaders based on priority
30
+ # The loaders are added in the following order:
31
+ # 1. joblib (if available)
32
+ # 2. cloudpickle (if available)
33
+ # 3. pickle (default fallback)
34
+ # This ensures that when looking up a loader, it follows the correct loading priority.
35
+ self._loader_map: Dict[SerializationFormat, Callable[[bytes], object]] = (
36
+ OrderedDict()
37
+ )
38
+ try:
39
+ from joblib import load as joblib_load
40
+
41
+ self._loader_map[SerializationFormat.JOBLIB] = joblib_load
42
+ except ImportError:
43
+ pass
44
+
45
+ try:
46
+ from cloudpickle import load as cloudpickle_load
47
+
48
+ self._loader_map[SerializationFormat.CLOUDPICKLE] = cloudpickle_load
49
+ except ImportError:
50
+ pass
51
+
52
+ # Add pickle loader as a fallback
53
+ self._loader_map[SerializationFormat.PICKLE] = pickle_load
54
+
55
+ def get_loader_map(self) -> Dict[SerializationFormat, Callable[[bytes], object]]:
56
+ return self._loader_map
57
+
58
+
59
+ _serialization_format_loader_registry = _SerializationFormatLoaderRegistry()
60
+
8
61
 
9
62
  class FastAIFramework(autogen_artifacts.FastAIFramework):
10
63
  """FastAI model Framework"""
@@ -167,3 +220,204 @@ class _ModelFramework(BaseModel):
167
220
  return None
168
221
 
169
222
  return cls.parse_obj(obj).__root__
223
+
224
+
225
+ # Mapping of model frameworks to pip packages
226
+ _MODEL_FRAMEWORK_TO_PIP_PACKAGES: Dict[Type[ModelFrameworkType], List[str]] = {
227
+ SklearnFramework: ["scikit-learn", "numpy", "pandas"],
228
+ XGBoostFramework: ["xgboost", "numpy", "pandas"],
229
+ }
230
+
231
+
232
+ def _get_required_framework_pip_packages(framework: "ModelFrameworkType") -> List[str]:
233
+ """
234
+ Fetches the pip packages required for a given model framework.
235
+
236
+ Args:
237
+ framework ("ModelFrameworkType"): The model framework for which to fetch the pip packages.
238
+
239
+ Returns:
240
+ List[str]: The list of pip packages required for the given model framework.
241
+ If no packages are found for the framework type, returns an empty list.
242
+ """
243
+ return _MODEL_FRAMEWORK_TO_PIP_PACKAGES.get(framework.__class__, [])
244
+
245
+
246
+ def _detect_model_serialization_format(
247
+ model_file_path: str,
248
+ ) -> Optional[SerializationFormat]:
249
+ """
250
+ The function will attempt to load the model using each framework's loader and return the first successful one.
251
+
252
+ Args:
253
+ model_file_path (str): The path to the file to be loaded.
254
+
255
+ Returns:
256
+ Optional[SerializationFormat]: The serialization format if successfully loaded, None otherwise.
257
+ """
258
+ # Attempt to load the model using each framework
259
+ for (
260
+ serialization_format,
261
+ loader,
262
+ ) in _serialization_format_loader_registry.get_loader_map().items():
263
+ try:
264
+ with open(model_file_path, "rb") as f:
265
+ loader(f)
266
+ return serialization_format
267
+ except Exception:
268
+ continue
269
+ return None
270
+
271
+
272
+ def _fetch_framework_specific_pip_packages(
273
+ framework: "ModelFrameworkType",
274
+ ) -> List[str]:
275
+ """
276
+ Fetch the pip packages required for the given framework, including any dependencies
277
+ related to the framework's serialization format.
278
+
279
+ Args:
280
+ framework: The framework object (e.g., SklearnFramework, XGBoostFramework).
281
+
282
+ Returns:
283
+ List[str]: A list of pip packages for the given framework and environment,
284
+ including any dependencies based on the serialization format
285
+ (e.g., ['numpy==1.19.5', ...]).
286
+ """
287
+ framework_package_names = _get_required_framework_pip_packages(framework=framework)
288
+
289
+ # Add serialization format dependencies if applicable
290
+ if isinstance(framework, (SklearnFramework, XGBoostFramework)):
291
+ framework_package_names.extend(
292
+ SERIALIZATION_FORMAT_TO_PACKAGES_NAME_MAP.get(
293
+ framework.serialization_format, []
294
+ )
295
+ )
296
+ return [
297
+ f"{package.name}=={package.version}"
298
+ for package in list_pip_packages_installed(
299
+ filter_package_names=framework_package_names
300
+ )
301
+ ]
302
+
303
+
304
+ def auto_update_environment_details(
305
+ environment: autogen_artifacts.ModelVersionEnvironment,
306
+ framework: Optional[ModelFrameworkType],
307
+ ):
308
+ """
309
+ Auto fetch the environment details if not provided, based on the provided environment and framework.
310
+
311
+ Args:
312
+ environment: The environment object that holds environment details like python_version and pip_packages.
313
+ framework: The framework object (e.g., SklearnFramework, XGBoostFramework) that may affect pip_package fetching.
314
+ """
315
+ # Auto fetch python_version if not provided
316
+ if not environment.python_version:
317
+ environment.python_version = get_python_version_major_minor()
318
+
319
+ # Framework-specific pip_package handling
320
+ if framework and not environment.pip_packages:
321
+ environment.pip_packages = _fetch_framework_specific_pip_packages(framework)
322
+
323
+
324
+ def _validate_and_get_absolute_model_filepath(
325
+ model_file_or_folder: str,
326
+ model_filepath: Optional[str] = None,
327
+ ) -> Optional[str]:
328
+ # If no model_filepath is set, resolve it from the directory
329
+ if not model_filepath:
330
+ # If model_filepath is not set, resolve it based on these cases:
331
+ # - Case 1: model_file_or_folder/model.joblib -> model.joblib
332
+ # - Case 2: model_file_or_folder/folder/model.joblib -> folder/model.joblib
333
+ # - Case 3: model_file_or_folder/folder/model.joblib, model_file_or_folder/config.json -> None
334
+ return get_single_file_path_if_only_one_in_directory(model_file_or_folder)
335
+
336
+ # If model_filepath is already set, validate and resolve it:
337
+ # - Case 1: Resolve the absolute file path of the model file relative to the provided directory.
338
+ # Example: If model_file_or_folder is '/root/models' and model_filepath is 'model.joblib',
339
+ # the resolved model file path would be '/root/models/model.joblib'. Validate it.
340
+ #
341
+ # - Case 2: If model_filepath is a relative path, resolve it to an absolute path based on the provided directory.
342
+ # Example: If model_file_or_folder is '/root/models' and model_filepath is 'subfolder/model.joblib',
343
+ # the resolved path would be '/root/models/subfolder/model.joblib'. Validate it.
344
+ #
345
+ # - Case 3: Verify that the resolved model file exists and is a valid file.
346
+ # Example: If the resolved path is '/root/models/model.joblib', check if the file exists.
347
+ # If it does not exist, raise a FileNotFoundError.
348
+ #
349
+ # - Case 4: Ensure the resolved model file is located within the specified directory or is the directory itself.
350
+ # Example: If the resolved path is '/root/models/model.joblib' and model_file_or_folder is '/root/models',
351
+ # the resolved path is valid. If the file lies outside '/root/models', raise a ValueError.
352
+ #
353
+
354
+ # If model_filepath is set, Resolve the absolute path of the model file (It can be a relative path or absolute path)
355
+ model_dir = (
356
+ os.path.dirname(model_file_or_folder)
357
+ if os.path.isfile(model_file_or_folder)
358
+ else model_file_or_folder
359
+ )
360
+ absolute_model_filepath = os.path.abspath(os.path.join(model_dir, model_filepath))
361
+
362
+ # Validate if resolve valid is within the provided directory or is the same as it
363
+ if not (
364
+ absolute_model_filepath == model_file_or_folder
365
+ or absolute_model_filepath.startswith(model_file_or_folder + os.sep)
366
+ ):
367
+ raise ValueError(
368
+ f"model_filepath '{model_filepath}' must be relative to "
369
+ f"{model_file_or_folder}. Resolved path '{absolute_model_filepath}' is invalid."
370
+ )
371
+
372
+ if not os.path.isfile(absolute_model_filepath):
373
+ raise FileNotFoundError(f"Model file not found: {absolute_model_filepath}")
374
+
375
+ return absolute_model_filepath
376
+
377
+
378
+ def _validate_and_resolve_model_filepath(
379
+ model_file_or_folder: str,
380
+ model_filepath: Optional[str] = None,
381
+ ) -> Optional[str]:
382
+ absolute_model_filepath = _validate_and_get_absolute_model_filepath(
383
+ model_file_or_folder=model_file_or_folder, model_filepath=model_filepath
384
+ )
385
+ if absolute_model_filepath:
386
+ return to_unix_path(
387
+ os.path.relpath(absolute_model_filepath, model_file_or_folder)
388
+ if os.path.isdir(model_file_or_folder)
389
+ else os.path.basename(absolute_model_filepath)
390
+ )
391
+
392
+
393
+ def auto_update_model_framework_details(
394
+ framework: "ModelFrameworkType", model_file_or_folder: str
395
+ ):
396
+ """
397
+ Auto update the model framework details based on the provided model file or folder path.
398
+
399
+ Args:
400
+ framework: The framework object (e.g., SklearnFramework, XGBoostFramework) to update.
401
+ model_file_or_folder: The path to the model file or folder.
402
+ """
403
+
404
+ # Ensure the model file or folder path is an absolute path
405
+ model_file_or_folder = os.path.abspath(model_file_or_folder)
406
+
407
+ if isinstance(framework, (SklearnFramework, XGBoostFramework)):
408
+ framework.model_filepath = _validate_and_resolve_model_filepath(
409
+ model_file_or_folder=model_file_or_folder,
410
+ model_filepath=framework.model_filepath,
411
+ )
412
+ if framework.model_filepath:
413
+ absolute_model_filepath = (
414
+ model_file_or_folder
415
+ if os.path.isfile(model_file_or_folder)
416
+ else os.path.join(model_file_or_folder, framework.model_filepath)
417
+ )
418
+ framework.serialization_format = (
419
+ framework.serialization_format
420
+ or _detect_model_serialization_format(
421
+ model_file_path=absolute_model_filepath
422
+ )
423
+ )
@@ -29,6 +29,8 @@ _ML_REPO_NAME_REGEX = re.compile(r"^[a-zA-Z][a-zA-Z0-9\-]{1,98}[a-zA-Z0-9]$")
29
29
  _RUN_NAME_REGEX = re.compile(r"^[a-zA-Z0-9-]*$")
30
30
  _RUN_LOG_LOG_TYPE_REGEX = re.compile(r"^[a-zA-Z0-9-/]*$")
31
31
  _RUN_LOG_KEY_REGEX = re.compile(r"^[a-zA-Z0-9-_]*$")
32
+ _APP_NAME_REGEX = re.compile(r"^[a-z][a-z0-9\\-]{1,30}[a-z0-9]$")
33
+
32
34
 
33
35
  MAX_PARAMS_TAGS_PER_BATCH = 100
34
36
  MAX_METRICS_PER_BATCH = 1000
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: truefoundry
3
- Version: 0.5.0rc6
3
+ Version: 0.5.1rc1
4
4
  Summary: Truefoundry CLI
5
5
  Author: Abhishek Choudhary
6
6
  Author-email: abhishek@truefoundry.com
@@ -19,7 +19,6 @@ Requires-Dist: aenum (>=3.0.0,<4.0.0)
19
19
  Requires-Dist: click (>=7.0.0,<9.0.0)
20
20
  Requires-Dist: coolname (>=1.1.0,<2.0.0)
21
21
  Requires-Dist: docker (>=6.1.2,<8.0.0)
22
- Requires-Dist: fastapi (>=0.56.0,<0.200.0)
23
22
  Requires-Dist: filelock (>=3.8.0,<4.0.0)
24
23
  Requires-Dist: flytekit (==1.13.13) ; extra == "workflow"
25
24
  Requires-Dist: gitignorefile (>=1.1.2,<2.0.0)
@@ -29,15 +28,13 @@ Requires-Dist: numpy (>=1.23.0,<2.0.0) ; python_version < "3.12"
29
28
  Requires-Dist: numpy (>=1.26.0,<2.0.0) ; python_version >= "3.12"
30
29
  Requires-Dist: openai (>=1.16.2,<2.0.0)
31
30
  Requires-Dist: packaging (>=20.0,<25.0)
32
- Requires-Dist: pandas (>=1.0.0,<3.0.0) ; python_version < "3.10"
33
- Requires-Dist: pandas (>=1.4.0,<3.0.0) ; python_version >= "3.10"
34
31
  Requires-Dist: pydantic (>=1.8.2,<3.0.0)
35
32
  Requires-Dist: pygments (>=2.12.0,<3.0.0)
36
33
  Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
37
34
  Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
38
35
  Requires-Dist: python-socketio[client] (>=5.5.2,<6.0.0)
39
36
  Requires-Dist: questionary (>=1.10.0,<2.0.0)
40
- Requires-Dist: requests (>=2.31.0,<3.0.0)
37
+ Requires-Dist: requests (>=2.18.0,<3.0.0)
41
38
  Requires-Dist: requirements-parser (>=0.11.0,<0.12.0)
42
39
  Requires-Dist: rich (>=13.7.1,<14.0.0)
43
40
  Requires-Dist: rich-click (>=1.2.1,<2.0.0)
@@ -46,7 +43,6 @@ Requires-Dist: scipy (>=1.5.0,<2.0.0) ; python_version < "3.12"
46
43
  Requires-Dist: tqdm (>=4.0.0,<5.0.0)
47
44
  Requires-Dist: typing-extensions (>=4.0)
48
45
  Requires-Dist: urllib3 (>=1.26.18,<3)
49
- Requires-Dist: uvicorn (>=0.13.0,<1.0.0)
50
46
  Requires-Dist: yq (>=3.1.0,<4.0.0)
51
47
  Description-Content-Type: text/markdown
52
48
 
@@ -34,8 +34,8 @@ 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/utils.py,sha256=MYFjNtHGqauqhj9tmbdErCJR49AfXDwg-5kYbBh8HpI,3258
38
- truefoundry/deploy/__init__.py,sha256=ugawKF2G02EmEXX35oZ2tec12d9oWN28Sf6mtGGIERY,2281
37
+ truefoundry/common/utils.py,sha256=XgMq06zOu-Fy8ACtbmWlQgAW6jFxKPGHUBirO7N82WA,5725
38
+ truefoundry/deploy/__init__.py,sha256=p14_yIJw2bcaKW3c1DTaoM7UwfHvt2T_MfeFlZIz1g4,2359
39
39
  truefoundry/deploy/auto_gen/models.py,sha256=8848BDbq2hO8Y75LsBH3cS0vi8qEOKU5x6oBtVmYorE,82552
40
40
  truefoundry/deploy/builder/__init__.py,sha256=1qjHMNBE1poRCZW0WrG46dFM1f1IlivD5352qzsioMU,4953
41
41
  truefoundry/deploy/builder/builders/__init__.py,sha256=tlFLXqyDaKLd4iZbo4Hcu_8gOmgtL6drnXpbmQ6x1P8,636
@@ -48,14 +48,15 @@ truefoundry/deploy/builder/constants.py,sha256=eIukBjD6I4KvEmAPpdbPlPPr76yhS-uNr
48
48
  truefoundry/deploy/builder/docker_service.py,sha256=OI8efqK0Gnoii8bcHihpA2StwHVzsMREfBk7NvMR4hY,3950
49
49
  truefoundry/deploy/builder/utils.py,sha256=9RZnkhoHFTRUt_x3nck0aVz7cLpzA3jiwQH-ZZZrjf8,938
50
50
  truefoundry/deploy/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- truefoundry/deploy/cli/cli.py,sha256=o19n7MsMzXXXG3GlpRYaxX3l9Xvtof-iPK4-y31Dw9k,2811
52
- truefoundry/deploy/cli/commands/__init__.py,sha256=oOstv608ueOJTxR3qlQbZBIdo-FsFe2O0NYNOXi01-s,1276
51
+ truefoundry/deploy/cli/cli.py,sha256=BuAW-R98oz1wzPDg00fPgrK1UDoCfy0Tu6pWW9Ud1Ns,2887
52
+ truefoundry/deploy/cli/commands/__init__.py,sha256=-i3ltscehEO0hy-Cf6gPLaiobfv8tZetPKaaCyR9B3M,1364
53
53
  truefoundry/deploy/cli/commands/apply_command.py,sha256=FdTeuyOPEoPSU6GP_aQGNOJV0S0rm7PkxrAlXiNvoX8,1864
54
54
  truefoundry/deploy/cli/commands/build_command.py,sha256=DQ7NARgkIgV4z0Zdnl3zMDKU_fSkN5-FkjCQypgmWpo,1255
55
55
  truefoundry/deploy/cli/commands/build_logs_command.py,sha256=WrPOlFec_wwuzdJmKZ8mjca-oFVvxgfblcqj2LlhWJA,2804
56
56
  truefoundry/deploy/cli/commands/create_command.py,sha256=ZjA4EP1jHYuVE1zx0kN-giBr3y0sEiXnu8xMsNyD2Rg,1850
57
57
  truefoundry/deploy/cli/commands/delete_command.py,sha256=4tyIameA1pVu9uZZNJPK6rqdV-cJogf51iCCrG-9noI,2390
58
58
  truefoundry/deploy/cli/commands/deploy_command.py,sha256=d2Yhgn-zTEIlFUR-IBYpt7-dsec__hsGd1no207u-Q8,4000
59
+ truefoundry/deploy/cli/commands/deploy_init_command.py,sha256=4NnAfd_S_LGwvhRB8z-HEGKoJ2GN1NnKpx9ReDP_HCk,607
59
60
  truefoundry/deploy/cli/commands/get_command.py,sha256=w7h5C4bJpmHJ99rgiGg9J_X0xi8aZUeB6Q-SoZUV1tg,5979
60
61
  truefoundry/deploy/cli/commands/list_command.py,sha256=cFARY22L5xspBX7TWsx41IF4RiRMok7KBwv7hQRFXNs,4498
61
62
  truefoundry/deploy/cli/commands/login_command.py,sha256=WV4Ad8PJ2_yNfCJi1VWW2GNwU6khZ2sWZbKebxJ7oVM,1038
@@ -74,17 +75,6 @@ truefoundry/deploy/cli/util.py,sha256=bxbNEX3mbhtDpXw3b2GAnbxe0xvCF9N1sCMK6yatz0
74
75
  truefoundry/deploy/core/__init__.py,sha256=j61bMWj4BkWihdssKMSFhieo7afJDtpc7qO7zk1rDB4,140
75
76
  truefoundry/deploy/core/login.py,sha256=N2VrW3nlBzoyoYulkipxwQvCpjBhi3sfsmhxK1ktWhg,236
76
77
  truefoundry/deploy/core/logout.py,sha256=TpWLq4_DsxYS5GX2OJQGDhekNOfiOLb-vO5khQueHXw,80
77
- truefoundry/deploy/function_service/__init__.py,sha256=9aVI0OdXz4pN8an39lMnVjls-NA38mAB38U7G4bM6N4,200
78
- truefoundry/deploy/function_service/__main__.py,sha256=a4CqaCo_Y2MlbusDme5ybEpc2zNnK10mI-PnV3moHf8,787
79
- truefoundry/deploy/function_service/app.py,sha256=YqkWav_Nnj0lgBkO2QoR7mMyFw6OzwM-C_VRaccEO3Q,2890
80
- truefoundry/deploy/function_service/build.py,sha256=XWB4bIIii76Cwq5UBupt5WUNs6InSA3rBQboiDDRDe8,1828
81
- truefoundry/deploy/function_service/remote/__init__.py,sha256=X1zEW6SSuemydmparLolvQuQSmwXkWUnx516xm3IUaA,199
82
- truefoundry/deploy/function_service/remote/context.py,sha256=g6HaHM-w-dcfswJFcu6muYhbyFCJID64XnuPN_c0fXo,67
83
- truefoundry/deploy/function_service/remote/method.py,sha256=DLLgtdQcnTmTiAfeX6pvqM57P1UPbO7kF9B-hPugAGo,1867
84
- truefoundry/deploy/function_service/remote/remote.py,sha256=iz3Rts03atxlD4fmDOuHeGIt8HlXLF1h8OYD7Lp6XZg,4203
85
- truefoundry/deploy/function_service/route.py,sha256=Wcn5YacWZXA2XKw98cXbwZLL-AaknLEskybN852LSkk,4513
86
- truefoundry/deploy/function_service/service.py,sha256=2RnwTSxVa1f12SSqkWD4Ttj6A9hoWchPIscvfXeX3IQ,4169
87
- truefoundry/deploy/function_service/utils.py,sha256=fSF8g19L-fpbaqf91SEB3HNtaJ93SwKC7txqYePhES0,1332
88
78
  truefoundry/deploy/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
79
  truefoundry/deploy/io/output_callback.py,sha256=V2YwUFec4G4a67lM4r-x_64AqdOVNo_9sTdfQWLlvi0,604
90
80
  truefoundry/deploy/io/rich_output_callback.py,sha256=TJLiRD-EnFVwgcepxR7WN0koKqW1X2DevETPhNPi_nU,829
@@ -95,7 +85,7 @@ truefoundry/deploy/lib/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
95
85
  truefoundry/deploy/lib/clients/servicefoundry_client.py,sha256=tkuPNbo9vDTgXPHD4p3d-t6HigBvKNfML1pTQXBwJfY,26170
96
86
  truefoundry/deploy/lib/const.py,sha256=repGJLuoMqtzeq5tCjjkN4bH187FVHVKI30BricOlvc,244
97
87
  truefoundry/deploy/lib/dao/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
- truefoundry/deploy/lib/dao/application.py,sha256=uUTFSQkLUrFCtQQgS2Jm9BpyHyhMkN4GI1yx9oJo4_E,9161
88
+ truefoundry/deploy/lib/dao/application.py,sha256=xUqF34abde71YZo9gkR-WvVJi1C6nBeGBNw4kL5FdIo,9226
99
89
  truefoundry/deploy/lib/dao/apply.py,sha256=sXnQY6RVzLVm1fX2BKuWHAoKlKISirrcByHEhY3x4zo,2570
100
90
  truefoundry/deploy/lib/dao/version.py,sha256=AtdW_4O1DPUKdfv2qy6iUJsZ_95vM6z0AqeEy3WDKs8,1130
101
91
  truefoundry/deploy/lib/dao/workspace.py,sha256=jm8UWytwVajVcrYyHSTCwWYDYl-RHuk0zAf9Caj4GzQ,2356
@@ -114,20 +104,14 @@ truefoundry/deploy/v2/lib/deploy.py,sha256=HIcY3SzQ5lWl7avuuKi3J0Z-PBES6Sf4hgMK-
114
104
  truefoundry/deploy/v2/lib/deploy_workflow.py,sha256=hgAhd1EGwFLz319Vs-WNXHDJmbKjdgkGPzDnBD1Up1k,12579
115
105
  truefoundry/deploy/v2/lib/deployable_patched_models.py,sha256=MROgMxhn9hDEAKwJSWl3iz12tUVvRKzEtqF2QUT6dAk,3343
116
106
  truefoundry/deploy/v2/lib/models.py,sha256=pSolLMTArDuYpeNsmeeS5DWliloN_iCDfZSpRllMHUg,1120
117
- truefoundry/deploy/v2/lib/patched_models.py,sha256=sokVDUdnhe3qx6dXlHM0shbf6HvSlF72-mvi8Lzt_Y8,13968
107
+ truefoundry/deploy/v2/lib/patched_models.py,sha256=NTU8J_CwdvEuF9zNXwFyN3suOp_196Wrm75DDy5qcXE,14184
118
108
  truefoundry/deploy/v2/lib/source.py,sha256=VHKuFREiixUP40D3Mrz-TA70spu1M0RbCzl--qwlFaY,9263
119
- truefoundry/langchain/__init__.py,sha256=zeYKxKrQhfYXQuBec3wvB_ZqKowDUUjLUKUhbiu9ZFs,558
120
- truefoundry/langchain/deprecated.py,sha256=8tfLHXwcifGl7DYhMNfzc4zRVCVqEgARg5BsbZp11NE,10835
121
- truefoundry/langchain/truefoundry_chat.py,sha256=ZA5iyW56fzJeBGxHUpNLFdpy2g9Kw0UHSh0YoNf-xUE,4960
122
- truefoundry/langchain/truefoundry_embeddings.py,sha256=8nRaZ7W1ao1WF0LHk6nNel1LubA8XtDaffGIlUZYeQM,6104
123
- truefoundry/langchain/truefoundry_llm.py,sha256=CJXyCgXIMbDsVRuuvEA5PKJsf6aRyVlYuG7zC4qtZXE,3802
124
- truefoundry/langchain/utils.py,sha256=PGLDe9chZ3BuUjakexOGpIqZRFoHEgu-zJ9yKdpLLmM,1329
125
109
  truefoundry/logger.py,sha256=u-YCNjg5HBwE70uQcpjIG64Ghos-K2ulTWaxC03BSj4,714
126
- truefoundry/ml/__init__.py,sha256=tcFeEcIgBLR92pUDiu7zDSeI1vsSshlCzuIgnSbyE8E,1839
110
+ truefoundry/ml/__init__.py,sha256=qfYk5FVNDl50_RJBvIjfzQakOQ4HHLH8oVYmb4SOOh0,1963
127
111
  truefoundry/ml/artifact/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
- truefoundry/ml/artifact/truefoundry_artifact_repo.py,sha256=VU8i3jnY62MLfzA3rxXuUjdqLz8Yaw4zqqPWSsf0mBg,45850
112
+ truefoundry/ml/artifact/truefoundry_artifact_repo.py,sha256=FksxhUpRHb9pgWZmAB16DhXqkAL6UIAPA1S3RJUApQU,46201
129
113
  truefoundry/ml/autogen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
- truefoundry/ml/autogen/client/__init__.py,sha256=6OSFtyl9gWo28jJvvZV6qzsyT0_X_1nQeReE1YvwsKQ,18893
114
+ truefoundry/ml/autogen/client/__init__.py,sha256=xQKSEKW6Kn-F7GRHaDKjKNjle8JTOFiMs4Liq2kh8Rc,19383
131
115
  truefoundry/ml/autogen/client/api/__init__.py,sha256=NyMBxBmIzB1o5LzZZwz9LiydHB3-hPqc_sevsnY6Jrw,746
132
116
  truefoundry/ml/autogen/client/api/auth_api.py,sha256=zpWzJhUmW6HHMY_atlUf0B25k77E1kue2hmix5I5Ih0,7017
133
117
  truefoundry/ml/autogen/client/api/deprecated_api.py,sha256=mu5x_skNcwz8v1Tr6VP72-tVP7pmBV9muyKy_2NH3F0,38824
@@ -135,14 +119,14 @@ truefoundry/ml/autogen/client/api/experiments_api.py,sha256=mRKS8qGzcFJUpTWjfQoF
135
119
  truefoundry/ml/autogen/client/api/generate_code_snippet_api.py,sha256=C8iABP-pYIyIoTlL8PFi3ZBG_6B_dkQf09eErNeoj7A,22316
136
120
  truefoundry/ml/autogen/client/api/health_api.py,sha256=IAPhRAo9CLUT5ipVR1fCf-qDx57UR0wg5ekhtUl8lug,11554
137
121
  truefoundry/ml/autogen/client/api/metrics_api.py,sha256=q3L38eD-2hu4_9YvcSdnWDYXD2V8il-X9reinOAABek,14908
138
- truefoundry/ml/autogen/client/api/mlfoundry_artifacts_api.py,sha256=i9uLXUCuQtiQG15bqutEcGyiE9gDeE_2cebN56iBGk0,299272
122
+ truefoundry/ml/autogen/client/api/mlfoundry_artifacts_api.py,sha256=6AXyTrxQVnBIxELij-4WkdqS-2AJUXZqrxBG_bBuCII,306208
139
123
  truefoundry/ml/autogen/client/api/run_artifacts_api.py,sha256=x-vVnY2LEFChZxiiFauswRWwFz6Qqh30PKXjzuTvxmc,8799
140
124
  truefoundry/ml/autogen/client/api/runs_api.py,sha256=-aghrZ2VYuZOw_vBtOzWDsnK7Ji29oZQxK2CLRgyo2w,119232
141
125
  truefoundry/ml/autogen/client/api_client.py,sha256=M31IycWorn10FYS8WbO_Whaipr0tVu2pVWFCfbS7XCo,29167
142
126
  truefoundry/ml/autogen/client/api_response.py,sha256=KRyvecPMXF05PaxILHZ8JHoP4rgKBjKONMgG83aU-rM,844
143
127
  truefoundry/ml/autogen/client/configuration.py,sha256=V1oaEnxt-NfpaNmp-EZpf2glovzVhM2coWYt8HBNB4M,15723
144
128
  truefoundry/ml/autogen/client/exceptions.py,sha256=XbCbDHhYT3BVejdoGNPgEa4oS56ypkwFdxk1iOc_tFY,5355
145
- truefoundry/ml/autogen/client/models/__init__.py,sha256=v5LbkCWeeuytmE6B8QFShtQxJIeXvncENaVG5vGTiPE,17515
129
+ truefoundry/ml/autogen/client/models/__init__.py,sha256=_nSy0foDUUFyyE5zSBYKz16d5BvbWzJfCCGvMraUieY,18005
146
130
  truefoundry/ml/autogen/client/models/add_custom_metrics_to_model_version_request_dto.py,sha256=_ISDspicTGjBCYYXubKfRYYSSQVyW3AvG-jFh47-Zfc,2163
147
131
  truefoundry/ml/autogen/client/models/add_features_to_model_version_request_dto.py,sha256=OT1-98DyWNfAHz_EgD2gMX2XkrGQ4Re945fhoAl8qSE,2099
148
132
  truefoundry/ml/autogen/client/models/agent.py,sha256=lUAbs092yo9hZmqzX6atKebDNf1uEwTf5jLvjOdvoeM,3872
@@ -154,7 +138,7 @@ truefoundry/ml/autogen/client/models/artifact_dto.py,sha256=JWL8_sITJJXbxywcfRj4
154
138
  truefoundry/ml/autogen/client/models/artifact_response_dto.py,sha256=T_HLjkHnqiO1bnSXiCUOlwDEHGz89mlUNhBq0SJTapo,2226
155
139
  truefoundry/ml/autogen/client/models/artifact_type.py,sha256=LBXGYUoesmL5J-0xzCR8jBST3bjb6HY86RmqSGvytRs,828
156
140
  truefoundry/ml/autogen/client/models/artifact_version_dto.py,sha256=GXjjKycpsEgJ60V2hAfL4NMxM2gZKLP2qV2yBb9WgdM,6174
157
- truefoundry/ml/autogen/client/models/artifact_version_manifest.py,sha256=EjmUxCLoN8wt-icGXAqd_q6nPwl3yBDwVqKu7kTYiLA,3532
141
+ truefoundry/ml/autogen/client/models/artifact_version_manifest.py,sha256=3_r-Xsc1OwydVeh9nORAnKegkI73fGgJw4AzKzj0UPQ,3617
158
142
  truefoundry/ml/autogen/client/models/artifact_version_response_dto.py,sha256=JmiSYdPYG-ki6LCBeF7NtihdQ2LPiHld8cSPivY2GmQ,2421
159
143
  truefoundry/ml/autogen/client/models/artifact_version_serialization_format.py,sha256=2Qfgq1nykn0_mKNEJzOxhQwHm_95WIr9wJcHLeFWXQM,774
160
144
  truefoundry/ml/autogen/client/models/artifact_version_status.py,sha256=iIcomqhuaJkZH2rT3e6IjQutM79t9hEshW-RCIMKHEY,780
@@ -199,6 +183,7 @@ truefoundry/ml/autogen/client/models/experiment_dto.py,sha256=bl4-Hp1EHl8CEKgWq6
199
183
  truefoundry/ml/autogen/client/models/experiment_id_request_dto.py,sha256=ZMH827n_UTpDI30UnkuOam-4ANBKCDgocIzI8StxFR8,1891
200
184
  truefoundry/ml/autogen/client/models/experiment_response_dto.py,sha256=wuflV6_f8PQq061-wU2GzNY4BZi8SG8ARCIbSQN1oT4,2268
201
185
  truefoundry/ml/autogen/client/models/experiment_tag_dto.py,sha256=nEpCkeZ9ficIDkjmmLfkJeNNokd-Rhgr-cepPWG6L3M,1902
186
+ truefoundry/ml/autogen/client/models/export_deployment_files_request_dto.py,sha256=6sITpcpFWZ3kC7WOvTKax2QO2OQNHONsPGlmjZQK6ww,2503
202
187
  truefoundry/ml/autogen/client/models/external_artifact_source.py,sha256=h94vLz48yQg5l86V17Ve9PuwMnmkrLJxeDlX_tFOJ48,2361
203
188
  truefoundry/ml/autogen/client/models/fast_ai_framework.py,sha256=GwVoMbIzYhr4srFXyFb565qq-_Q-7SkUsjT7zlRGz2k,2171
204
189
  truefoundry/ml/autogen/client/models/file_info_dto.py,sha256=7oc8venicsFVk8zT9wHNhHnZGtFkFlqimFnS7ozGL9k,2156
@@ -221,6 +206,7 @@ truefoundry/ml/autogen/client/models/h2_o_framework.py,sha256=5X-0Xbt4tpecV_q6Ww
221
206
  truefoundry/ml/autogen/client/models/http_validation_error.py,sha256=bU-uUlz_qeFba3iHdBT7cHjLu6WZ-JmImYqgZ-kCvxM,2466
222
207
  truefoundry/ml/autogen/client/models/image_content_part.py,sha256=m_LE5XqD_UD0f8jtWt0adRgz_FoLEvgZbCDTSYORnCc,2717
223
208
  truefoundry/ml/autogen/client/models/image_url.py,sha256=TN8iEdBUmtKdTFlApUodaC4o6X_Ggd3OSOKVPv7laJE,2170
209
+ truefoundry/ml/autogen/client/models/infer_method_name.py,sha256=01flpfaOwmqXYFZnrSJCVNl8XK4Sen5slxA6zCo4G18,788
224
210
  truefoundry/ml/autogen/client/models/internal_metadata.py,sha256=6OizrIzA3QxlEnwNFXCZGOMJuUDSYHctl_30q27uBDI,6232
225
211
  truefoundry/ml/autogen/client/models/keras_framework.py,sha256=sBKDT4Dzkvr3Rf7c8YKRbtzaO_KrPNsW8tdWI_n701Q,2150
226
212
  truefoundry/ml/autogen/client/models/latest_run_log_dto.py,sha256=wE8T8bANTb9u14Jv7DNyKWekZiUAvrzvTcE_H1cRhn4,2326
@@ -258,8 +244,10 @@ truefoundry/ml/autogen/client/models/mime_type.py,sha256=A-N5-Mof_IyHWguXmG67k9w
258
244
  truefoundry/ml/autogen/client/models/model_configuration.py,sha256=XKhwqO8caQ8w9XRCdb_pAl-84cd_PWkEutjLNSby6hQ,3861
259
245
  truefoundry/ml/autogen/client/models/model_dto.py,sha256=TUO74MDqe8XCVJBB2O7TiqiRON8qbE7gi8LNA3uWjYA,4685
260
246
  truefoundry/ml/autogen/client/models/model_response_dto.py,sha256=osrTxfygkuhxWj6SkRBALrSnFVPH4LSK6qTufTeZuJg,2163
247
+ truefoundry/ml/autogen/client/models/model_server.py,sha256=N5mcWmnX0KzTMtTH8A9h_FmiQcMld3B8CXD_UYeDKaA,700
261
248
  truefoundry/ml/autogen/client/models/model_version_dto.py,sha256=9Mh4d8V33gEGYr4sys5lYYDA3bHKajR3oAZLZMAy_io,7094
262
- truefoundry/ml/autogen/client/models/model_version_manifest.py,sha256=N5N1tOEc98RbQbXKpVQV_Na8RfZHJZfz67hqWcGRv_4,4263
249
+ truefoundry/ml/autogen/client/models/model_version_environment.py,sha256=wTayQjMen24eJCqXQugzoXLANY5NXdVsAvZSh-QIhJA,2827
250
+ truefoundry/ml/autogen/client/models/model_version_manifest.py,sha256=1FZ9VuMp4THs9bOrVM7YWs4eDHfQTcVTQZSN5UbJClI,4906
263
251
  truefoundry/ml/autogen/client/models/model_version_response_dto.py,sha256=D6XOCyggxqTkbePuypqYSHYh1PYeDv7R_J32q61sDM0,2320
264
252
  truefoundry/ml/autogen/client/models/multi_part_upload_dto.py,sha256=Ckq405vud8RQmMyKCJQJBlW5iXO7Y2mlgo8eVkiMvxg,3738
265
253
  truefoundry/ml/autogen/client/models/multi_part_upload_response_dto.py,sha256=VjH0kvl7rMjgDHjYGHnsh7KsZ5-qn-k3ksdGLJ49nIM,2431
@@ -282,10 +270,11 @@ truefoundry/ml/autogen/client/models/run_response_dto.py,sha256=iayBnhwmByVC3iiw
282
270
  truefoundry/ml/autogen/client/models/run_tag_dto.py,sha256=CdWwi9P-CXk1vvXWRHN2tHqRckgH-Igur1fowsS-I80,1795
283
271
  truefoundry/ml/autogen/client/models/search_runs_request_dto.py,sha256=TxUqdYG5aKj6qdqsqNDe_ih45o0cMw3jwGu2Hrv1X48,2852
284
272
  truefoundry/ml/autogen/client/models/search_runs_response_dto.py,sha256=u0l11v7p7zdxtaqV_RBoMtB2Zy8pJbvtMwZiL4B4qMg,2636
273
+ truefoundry/ml/autogen/client/models/serialization_format.py,sha256=CYq9DR1yipEGBA00XjBWyeJf_PIT8_l_F1tm6QafgRM,821
285
274
  truefoundry/ml/autogen/client/models/set_experiment_tag_request_dto.py,sha256=nrmi_NxLD1fI2gwlpdqFSMnBS11gRkjS4_GQFHgBcXs,2118
286
275
  truefoundry/ml/autogen/client/models/set_tag_request_dto.py,sha256=IRgAdMcWBxmjNV6nZJej4pcNfLmZwrelEZ3otwt7eeE,2144
287
276
  truefoundry/ml/autogen/client/models/signed_url_dto.py,sha256=9oHoXBj07xTdc04rqOqJO3eOjQWXCyWPhfHg-6qX60w,1897
288
- truefoundry/ml/autogen/client/models/sklearn_framework.py,sha256=duOKdvUfGlcY9-HueGj8o3mknuMMe1A2-gwPKo6e8As,2188
277
+ truefoundry/ml/autogen/client/models/sklearn_framework.py,sha256=sO3mQRTGKozmkJl4BrukZpNN9bC1WeEEtuxyio4qwn0,3290
289
278
  truefoundry/ml/autogen/client/models/source.py,sha256=ZG2-3oIs_M8mZNPjoIRPzhHqlm63vLCVQC9idUxQ0XU,5180
290
279
  truefoundry/ml/autogen/client/models/source1.py,sha256=io35b9uVzqSvOHw6RlCXxM30thN-vHm1upaSiN2i0II,5183
291
280
  truefoundry/ml/autogen/client/models/spa_cy_framework.py,sha256=Kyrvhdalnl1uQLoPMGMry2PuFGCcQ8AGp4Cx4B9AGXQ,2150
@@ -298,7 +287,7 @@ truefoundry/ml/autogen/client/models/system_message.py,sha256=2sPSNrDuz5elg_AG00
298
287
  truefoundry/ml/autogen/client/models/tensor_flow_framework.py,sha256=jsAtqm2rMuiQyR7vVNDTLXDqpIPKsXEOH2WLRGE-POw,2219
299
288
  truefoundry/ml/autogen/client/models/text.py,sha256=HAIK-w_TxB1kXGvVNK1d2cweoQi-GJ9d-0QSZl21u68,4862
300
289
  truefoundry/ml/autogen/client/models/text_content_part.py,sha256=IgJ5exYltwJdJUBdOxMr3VtjF6x9qbyA_4mTPDZ4QCY,2493
301
- truefoundry/ml/autogen/client/models/transformers_framework.py,sha256=NNsTWMXmQyk5pCFowAIIgIs-_Iaht05RK-8-fUcQk18,3204
290
+ truefoundry/ml/autogen/client/models/transformers_framework.py,sha256=VjzLe6BHZPm7htrtfGZEwt-7mdQt0wfLDSX_Z8hxILY,3496
302
291
  truefoundry/ml/autogen/client/models/trigger_job_run_config_request_dto.py,sha256=1HtO6zfW6Ulq8Gm_UL0YqVrse0795vZkMxgCQ0GKD9w,2864
303
292
  truefoundry/ml/autogen/client/models/trigger_job_run_config_response_dto.py,sha256=P35xzE8MyS_HtxCcXC9fZORPX2wbf93LbCZCRggkQxw,2144
304
293
  truefoundry/ml/autogen/client/models/true_foundry_artifact_source.py,sha256=LihHK1hS5sivJ6EtV1TsYU9ATYgSNDhg10Vhq6ypEG4,2457
@@ -312,10 +301,10 @@ truefoundry/ml/autogen/client/models/url.py,sha256=zMyOmdVkp1ANnQnc9GrHt42xlVwES
312
301
  truefoundry/ml/autogen/client/models/user_message.py,sha256=3TEM8qH_zT3dgM197bl44uV7m20IWn6sWeLGfStsN90,2784
313
302
  truefoundry/ml/autogen/client/models/validation_error.py,sha256=mFjwoc8g2-Usu1HXZhOQKQ4TGvLy4lwCzk8dHrJ69aA,2597
314
303
  truefoundry/ml/autogen/client/models/validation_error_loc_inner.py,sha256=nThJ5Gmy8W2Wok-ZOI4sK7uRe1BAkLS0qzq-XZbq8zs,4915
315
- truefoundry/ml/autogen/client/models/xg_boost_framework.py,sha256=kC5P2rCw4Wp9v2Vok8X6y_kONznJMohrzLIfN6J17lY,2183
304
+ truefoundry/ml/autogen/client/models/xg_boost_framework.py,sha256=_YYI6stH0_FRkB7zPfS_85hM_9biwYLr2pLhMBFjARA,2892
316
305
  truefoundry/ml/autogen/client/rest.py,sha256=9goba8qHjQuVx5O_yRaTKu7PvBnb7r7swfy3dwuTEgk,14281
317
- truefoundry/ml/autogen/client_README.md,sha256=3qPxCLIRf16kGgRP-cXgmpr3KutjLTddIdKUQpJPTpg,35393
318
- truefoundry/ml/autogen/entities/artifacts.py,sha256=EbGDmD0npfa5BSHau67Y8-dSk6qPJJlJX3I3N4kqAgA,17326
306
+ truefoundry/ml/autogen/client_README.md,sha256=9z0MWex6ROr_RjjQ_yOZj9iXWle0pMvNITY1sR_D6TM,36112
307
+ truefoundry/ml/autogen/entities/artifacts.py,sha256=Gz7lmWcQAKNsfLr3Qb5S0-orXuzLNbX66qMEscpyEwY,19483
319
308
  truefoundry/ml/autogen/models/__init__.py,sha256=--TGRea9SQBWFfwtcl3ekb1XGfFTdEkQGSG8a2SJ60I,187
320
309
  truefoundry/ml/autogen/models/exceptions.py,sha256=q3n7FGBrg_hUy1UyoefhMnhcXUAaqXlLIGHoOVzn_d8,1390
321
310
  truefoundry/ml/autogen/models/schema.py,sha256=IhpO9qbygLqEamP3NIt3m90SseJXCOm1ZTqNbNbW-M0,55772
@@ -325,6 +314,8 @@ truefoundry/ml/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
325
314
  truefoundry/ml/cli/cli.py,sha256=ckBcjUpqfhgrPE1okqT_G2iouOLt-0KjpLhHp2YdVFU,256
326
315
  truefoundry/ml/cli/commands/__init__.py,sha256=diDUiRUX4l6TtNLI4iF-ZblczkELM7FRViJ-8gGNJQY,82
327
316
  truefoundry/ml/cli/commands/download.py,sha256=cbz9KijiLKXj4-twlig3xZLTVRNm4fnjwpy0leZr31w,2342
317
+ truefoundry/ml/cli/commands/model_init.py,sha256=LzHYHDOT3MackBIRLi3t18zmrV0E3gCNFLmZSlwwTlk,2661
318
+ truefoundry/ml/cli/utils.py,sha256=j6_mZ4Spn114mz3P4QQ8jx0tmorXIuyQnHXVUSDvZi4,1035
328
319
  truefoundry/ml/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
329
320
  truefoundry/ml/clients/entities.py,sha256=sNP4DnAVdQoMfc06s0r3VTzKHTo7jmxAOuTlQOVmsMs,151
330
321
  truefoundry/ml/clients/servicefoundry_client.py,sha256=nmKrWBd7P0VEDGjPHZ8_scX3Xo9tv3wZSWlTIBwGptU,1597
@@ -340,9 +331,9 @@ truefoundry/ml/log_types/artifacts/artifact.py,sha256=6X4lO23DwM7yTgUOY4RRoYMrf9
340
331
  truefoundry/ml/log_types/artifacts/constants.py,sha256=qKxQ5mMvJE4j83BvGW3qNTKunxCiBg_EEjTdgbgJtyE,1036
341
332
  truefoundry/ml/log_types/artifacts/dataset.py,sha256=a4dxd2EN8p7Ci-cLGGiDOboN3t0395_XhWE1dmTw1Q4,13112
342
333
  truefoundry/ml/log_types/artifacts/general_artifact.py,sha256=B4XErLr-m6RmQWtxMTu3wlFRFcqSwPYp6J0OL4Ng6L0,3179
343
- truefoundry/ml/log_types/artifacts/model.py,sha256=PZgqRO8NImvU7yfdjldqJ4Z3ow47GMnSL0A1DeE2DYk,22511
334
+ truefoundry/ml/log_types/artifacts/model.py,sha256=QJqqgDbflTfsmdsNuV30HvRb0fnaP2UaTrLLqL7jXGM,23312
344
335
  truefoundry/ml/log_types/artifacts/model_extras.py,sha256=TIE73bLKfwIVzNiVcjmaZ841A70BHBwu4XAM6ZAQRFI,1045
345
- truefoundry/ml/log_types/artifacts/utils.py,sha256=3FVOYlfcvZiW8vTbMe7Ft1cjNPR2GW7J69M3dyAY-qc,6299
336
+ truefoundry/ml/log_types/artifacts/utils.py,sha256=yhIZYe3Y-J0rG0Wcwql_Qjxe9hlefFbXUfRFqg4E9cM,7502
346
337
  truefoundry/ml/log_types/image/__init__.py,sha256=fcOq8yQnNj1rkLcPeIjLXBpdA1WIeiPsXOlAAvMxx7M,76
347
338
  truefoundry/ml/log_types/image/constants.py,sha256=wLtGEOA4T5fZHSlOXPuNDLX3lpbCtwlvGKPFk_1fah0,255
348
339
  truefoundry/ml/log_types/image/image.py,sha256=qQnAVgErAq4Jn6wXFFpaveOd52zcjUuomUCqNRxO2io,12478
@@ -352,12 +343,12 @@ truefoundry/ml/log_types/plot.py,sha256=HuYvvRA5r8V0xAIuuqMME2IHb9d3SfGHUiuEkOP3
352
343
  truefoundry/ml/log_types/pydantic_base.py,sha256=eBlw_AEyAz4iJKDP4zgJOCFWcldwQqpf7FADW1jzIQY,272
353
344
  truefoundry/ml/log_types/utils.py,sha256=xjJ21jdPScvFmw3TbVh5NCzbzJwaqiXJyiiT4xxX1EI,335
354
345
  truefoundry/ml/logger.py,sha256=VT-BF3BnBYTWVq87O58F0c8uXMu94gYzsiFlGY3_7Ao,458
355
- truefoundry/ml/mlfoundry_api.py,sha256=_LAXCBu1A-xg8fD3qzjQv9YlghEbSgYe6rQB0YgvXGQ,62111
356
- truefoundry/ml/mlfoundry_run.py,sha256=jLeDz9raUPKjXGH4PPAFel3Zg030iUWB_QP7FeW0DE0,46282
357
- truefoundry/ml/model_framework.py,sha256=TosB73eEpTRlsh6v1AY_LnnW_4OoaSlzENnBXqkVRl4,4778
346
+ truefoundry/ml/mlfoundry_api.py,sha256=HbtMh8uFFueJmxcmYTohV3GnziqbSGkOaq3Nv_I-1eU,62458
347
+ truefoundry/ml/mlfoundry_run.py,sha256=C4fhMc9o1m_ubkRsR8R8rk888ktpqWd0pkqZZQ-Pr4k,44691
348
+ truefoundry/ml/model_framework.py,sha256=2JTQ8m5oqy2FaIBqIEgPeDEfwNBfcQHTw-gdcMXF1pA,15033
358
349
  truefoundry/ml/run_utils.py,sha256=0W208wSLUrbdfk2pjNcZlkUi9bNxG2JORqoe-5rVqHI,2423
359
350
  truefoundry/ml/session.py,sha256=F83GTC5WwGBjnJ69Ct8MqMnlutYc56JCc6YhEY1Wl-A,5394
360
- truefoundry/ml/validation_utils.py,sha256=XBSUd9OoyriWJpT3M5LKz17iWY3yVMr3hM5vdaVjtf0,12082
351
+ truefoundry/ml/validation_utils.py,sha256=J5atNhcJLvKj64ralSV9Y5Fv1Rt4SE237ICdP9-7sP4,12149
361
352
  truefoundry/pydantic_v1.py,sha256=jSuhGtz0Mbk1qYu8jJ1AcnIDK4oxUsdhALc4spqstmM,345
362
353
  truefoundry/version.py,sha256=bqiT4Q-VWrTC6P4qfK43mez-Ppf-smWfrl6DcwV7mrw,137
363
354
  truefoundry/workflow/__init__.py,sha256=XY83vqtLAclI82atZXyBtF9ZgLROXaaXO5p60XH5hJA,1493
@@ -375,7 +366,7 @@ truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py,sha256=5mBCIc-ON
375
366
  truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py,sha256=Hf6Dk6Fu6P7DqsK5ULgraf9DStjgigf-kjaRAMBW-RU,8680
376
367
  truefoundry/workflow/task.py,sha256=ToitYiKcNzFCtOVQwz1W8sRjbR97eVS7vQBdbgUQtKg,1779
377
368
  truefoundry/workflow/workflow.py,sha256=WaTqUjhwfAXDWu4E5ehuwAxrCbDJkoAf1oWmR2E9Qy0,4575
378
- truefoundry-0.5.0rc6.dist-info/METADATA,sha256=uBUgaLgGtMVJfYQnnyciAnXSX-X5Qf1PV1jt5ILZNR8,3102
379
- truefoundry-0.5.0rc6.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
380
- truefoundry-0.5.0rc6.dist-info/entry_points.txt,sha256=TXvUxQkI6zmqJuycPsyxEIMr3oqfDjgrWj0m_9X12x4,95
381
- truefoundry-0.5.0rc6.dist-info/RECORD,,
369
+ truefoundry-0.5.1rc1.dist-info/METADATA,sha256=nz3SDzyjyfTrEYBTeMRUAUAvOrtcZewEmKq-AKZwp58,2887
370
+ truefoundry-0.5.1rc1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
371
+ truefoundry-0.5.1rc1.dist-info/entry_points.txt,sha256=TXvUxQkI6zmqJuycPsyxEIMr3oqfDjgrWj0m_9X12x4,95
372
+ truefoundry-0.5.1rc1.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- from truefoundry.deploy.function_service.build import BuildConfig
2
- from truefoundry.deploy.function_service.remote import remote
3
- from truefoundry.deploy.function_service.service import FunctionService
@@ -1,27 +0,0 @@
1
- import json
2
-
3
- import click
4
-
5
- from truefoundry.deploy.function_service.app import build_and_run_app
6
- from truefoundry.deploy.function_service.route import RouteGroups
7
-
8
-
9
- ####
10
- # I am keeping the CLI here for now. This will get refactored going forward.
11
- @click.group()
12
- def cli():
13
- pass
14
-
15
-
16
- # python -m truefoundry.deploy.function_service run --port 8000 --route-group-json ""
17
- # I am going to use this as "CMD" in the dockerfile to bring up the service
18
- @cli.command()
19
- @click.option("--route-groups-json", required=True, type=str)
20
- @click.option("--port", required=True, type=int)
21
- def run(port: int, route_groups_json: str):
22
- route_groups = RouteGroups.parse_obj(json.loads(route_groups_json))
23
- build_and_run_app(route_groups=route_groups, port=port)
24
-
25
-
26
- if __name__ == "__main__":
27
- cli()