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

@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: application.json
3
- # timestamp: 2025-01-29T10:40:43+00:00
3
+ # timestamp: 2025-02-19T09:48:05+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1565,7 +1565,7 @@ class Notebook(BaseWorkbenchInput):
1565
1565
  image: WorkbenchImage
1566
1566
  cull_timeout: conint(ge=5) = Field(
1567
1567
  30,
1568
- description="+label=Stop after (minutes of inactivity)\n+usage=Stop the notebook instance after this much time in minutes of inactivity.\nThe notebook instance will be stopped even if the notebook is open in your browser, but nothing is running on the notebook.\n+sort=5",
1568
+ description='+label=Stop after (minutes of inactivity)\n+usage=Stop the notebook instance after this much time in minutes of inactivity.\nThe notebook instance will be stopped even if the notebook is open in your browser, but nothing is running on the notebook.\n+sort=5\n+uiProps={"descriptionInline":true}',
1569
1569
  )
1570
1570
 
1571
1571
 
@@ -1656,7 +1656,7 @@ class SSHServer(BaseWorkbenchInput):
1656
1656
  )
1657
1657
  cull_timeout: Optional[conint(ge=5)] = Field(
1658
1658
  None,
1659
- description="+label=Stop after (minutes of inactivity)\n+usage=Stop the SSH Server instance after this much time in minutes of inactivity. \\\nThe instance is considered active if there is at least one active SSH connection (a client connected to the SSH server), \\\nor if a background job is running using tmux or screen, or if the pod has restarted.\n+sort=5",
1659
+ description='+label=Stop after (minutes of inactivity)\n+usage=Stop the SSH Server instance after this much time in minutes of inactivity. The instance is considered active if there is at least one active SSH connection (a client connected to the SSH server), or if a background job is running using tmux or screen, or if the pod has restarted.\n+sort=5\n+uiProps={"descriptionInline":true, "warningMessage":"Please note that stop after inactivity is only available for images with tag(including custom images) >= v0.3.10"}',
1660
1660
  )
1661
1661
 
1662
1662
 
@@ -1696,6 +1696,10 @@ class SparkJob(BaseModel):
1696
1696
  None,
1697
1697
  description="+label=Environment Variables\n+usage=Configure environment variables to be injected in the service either as plain text. [Docs](https://docs.truefoundry.com/docs/env-variables)\n+icon=fa-globe\n+sort=21000",
1698
1698
  )
1699
+ conf: Optional[Dict[str, Any]] = Field(
1700
+ None,
1701
+ description="+label=Spark Config Properties\n+usage=Extra configuration properties to be passed to the spark job. [Docs](https://spark.apache.org/docs/latest/configuration.html)\n+icon=fa-gear:#68BBE3\n+sort=21500",
1702
+ )
1699
1703
  mounts: Optional[List[VolumeMount]] = Field(
1700
1704
  None,
1701
1705
  description="+label=Mounts\n+usage=Configure volumes to be mounted to driver and executors. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)\n+sort=22000\n+uiType=Mounts",
@@ -1888,6 +1892,10 @@ class ApplicationSet(BaseModel):
1888
1892
  None,
1889
1893
  description="+label=Workspace FQN\n+docs=Fully qualified name of the workspace\n+uiType=Hidden",
1890
1894
  )
1895
+ convert_template_manifest: Optional[bool] = Field(
1896
+ None,
1897
+ description="+label=Convert Template Manifest\n+docs=Flag to indicate if the template manifest should be converted to TrueFoundry manifest\n+uiType=Hidden",
1898
+ )
1891
1899
 
1892
1900
 
1893
1901
  class Application(BaseModel):
@@ -38,7 +38,7 @@ def _catch_error_in_push(response: List[dict]):
38
38
  for line in response:
39
39
  if line.get("error") is not None:
40
40
  raise Exception(
41
- f'Failed to push to registry with message \'{line.get("error")}\''
41
+ f"Failed to push to registry with message '{line.get('error')}'"
42
42
  )
43
43
 
44
44
 
@@ -1,31 +1,63 @@
1
+ from typing import List, Tuple
2
+
1
3
  import rich_click as click
2
4
 
3
5
  from truefoundry.cli.config import CliConfig
6
+ from truefoundry.cli.console import console
4
7
  from truefoundry.cli.const import COMMAND_CLS, GROUP_CLS
5
8
  from truefoundry.cli.display_util import print_json
6
9
  from truefoundry.cli.util import handle_exception_wrapper
7
10
  from truefoundry.deploy.io.rich_output_callback import RichOutputCallBack
11
+ from truefoundry.deploy.lib.clients.servicefoundry_client import (
12
+ ServiceFoundryServiceClient,
13
+ )
8
14
  from truefoundry.deploy.lib.dao import application as application_lib
15
+ from truefoundry.deploy.lib.dao import delete as delete_lib
9
16
  from truefoundry.deploy.lib.dao import workspace as workspace_lib
10
17
  from truefoundry.deploy.lib.messages import (
11
18
  PROMPT_DELETED_APPLICATION,
12
19
  PROMPT_DELETED_WORKSPACE,
20
+ PROMPT_DELETING_MANIFEST,
13
21
  )
22
+ from truefoundry.deploy.lib.model.entity import DeleteResult
14
23
 
15
24
  # TODO (chiragjn): --json should disable all non json console prints
16
25
 
17
26
 
18
- @click.group(name="delete", cls=GROUP_CLS)
19
- def delete_command():
27
+ @click.group(name="delete", cls=GROUP_CLS, invoke_without_command=True)
28
+ @click.pass_context
29
+ @click.option(
30
+ "-f",
31
+ "--file",
32
+ "files",
33
+ type=click.Path(exists=True, dir_okay=False, resolve_path=True),
34
+ help="Path to yaml manifest file (You can pass multiple files at once by providing multiple -f options)",
35
+ show_default=True,
36
+ required=False,
37
+ multiple=True,
38
+ )
39
+ @handle_exception_wrapper
40
+ def delete_command(ctx, files: Tuple[str, ...]):
20
41
  """
21
42
  Delete TrueFoundry resources
22
-
23
- \b
24
- Supported resources:
25
- - Workspace
26
- - Application
27
43
  """
28
- pass
44
+ if ctx.invoked_subcommand is None:
45
+ if not files:
46
+ raise click.UsageError("Missing option '-f' / '--file'")
47
+ delete_results: List[DeleteResult] = []
48
+ client = ServiceFoundryServiceClient()
49
+ for file in files:
50
+ with console.status(PROMPT_DELETING_MANIFEST.format(file), spinner="dots"):
51
+ for delete_result in delete_lib.delete_manifest_file(file, client):
52
+ if delete_result.success:
53
+ console.print(f"[green]\u2714 {delete_result.message}[/]")
54
+ else:
55
+ console.print(f"[red]\u2718 {delete_result.message}[/]")
56
+
57
+ delete_results.append(delete_result)
58
+
59
+ if not all(delete_result.success for delete_result in delete_results):
60
+ raise Exception("Failed to delete one or more resource manifests")
29
61
 
30
62
 
31
63
  @click.command(name="workspace", cls=COMMAND_CLS, help="Delete a Workspace")
@@ -262,7 +262,7 @@ class ServiceFoundryServiceClient(BaseServiceFoundryServiceClient):
262
262
  time_obj.replace(tzinfo=timezone.utc)
263
263
  local_time = time_obj.astimezone(tzlocal())
264
264
  local_time_str = local_time.isoformat()
265
- return f'[{local_time_str}] {log["log"].strip()}'
265
+ return f"[{local_time_str}] {log['log'].strip()}"
266
266
 
267
267
  def _tail_logs(
268
268
  self,
@@ -693,6 +693,16 @@ class ServiceFoundryServiceClient(BaseServiceFoundryServiceClient):
693
693
  response_data = request_handling(response)
694
694
  return response_data
695
695
 
696
+ @check_min_cli_version
697
+ def delete(self, manifest: Dict[str, Any]):
698
+ url = f"{self._api_server_url}/{VERSION_PREFIX}/delete"
699
+ body = {"manifest": manifest}
700
+ response = session_with_retries().post(
701
+ url, headers=self._get_header(), json=body
702
+ )
703
+ response_data = request_handling(response)
704
+ return response_data
705
+
696
706
  def terminate_job_run(
697
707
  self,
698
708
  deployment_id: str,
@@ -0,0 +1,88 @@
1
+ from pathlib import Path
2
+ from typing import Any, Dict, Iterator, Optional
3
+
4
+ import yaml
5
+
6
+ from truefoundry.deploy.lib.clients.servicefoundry_client import (
7
+ ServiceFoundryServiceClient,
8
+ )
9
+ from truefoundry.deploy.lib.model.entity import DeleteResult, Manifest
10
+ from truefoundry.pydantic_v1 import ValidationError
11
+
12
+
13
+ def _delete_manifest(
14
+ manifest: Dict[str, Any],
15
+ client: Optional[ServiceFoundryServiceClient] = None,
16
+ filename: Optional[str] = None,
17
+ index: Optional[int] = None,
18
+ ) -> DeleteResult:
19
+ client = client or ServiceFoundryServiceClient()
20
+
21
+ file_metadata = ""
22
+ if index is not None:
23
+ file_metadata += f" at index {index}"
24
+ if filename:
25
+ file_metadata += f" from file {filename}"
26
+
27
+ try:
28
+ manifest = Manifest.parse_obj(manifest)
29
+ except ValidationError as ex:
30
+ return DeleteResult(
31
+ success=False,
32
+ message=f"Failed to parse manifest{file_metadata}. Error: {ex}",
33
+ )
34
+
35
+ try:
36
+ client.delete(manifest.dict())
37
+
38
+ return DeleteResult(
39
+ success=True,
40
+ message=(
41
+ f"Successfully deleted resource manifest {manifest.name} of type {manifest.type}."
42
+ ),
43
+ )
44
+ except Exception as ex:
45
+ return DeleteResult(
46
+ success=False,
47
+ message=(
48
+ f"Failed to delete resource manifest {manifest.name} of type {manifest.type}. Error: {ex}."
49
+ ),
50
+ )
51
+
52
+
53
+ def delete_manifest(
54
+ manifest: Dict[str, Any],
55
+ client: Optional[ServiceFoundryServiceClient] = None,
56
+ ) -> DeleteResult:
57
+ return _delete_manifest(manifest=manifest, client=client)
58
+
59
+
60
+ def delete_manifest_file(
61
+ filepath: str,
62
+ client: Optional[ServiceFoundryServiceClient] = None,
63
+ ) -> Iterator[DeleteResult]:
64
+ client = client or ServiceFoundryServiceClient()
65
+ filename = Path(filepath).name
66
+ try:
67
+ with open(filepath, "r") as f:
68
+ manifests_it = list(yaml.safe_load_all(f))
69
+ except Exception as ex:
70
+ yield DeleteResult(
71
+ success=False,
72
+ message=f"Failed to read file {filepath} as a valid YAML file. Error: {ex}",
73
+ )
74
+ else:
75
+ for index, manifest in enumerate(manifests_it):
76
+ if not isinstance(manifest, dict):
77
+ yield DeleteResult(
78
+ success=False,
79
+ message=f"Failed to delete resource manifest at index {index} from file {filename}. Error: A manifest must be a dict, got type {type(manifest)}",
80
+ )
81
+ continue
82
+
83
+ yield _delete_manifest(
84
+ manifest=manifest,
85
+ client=client,
86
+ filename=filename,
87
+ index=index,
88
+ )
@@ -10,3 +10,4 @@ PROMPT_NO_WORKSPACES = f"""[yellow]No workspaces found. Either cluster name is w
10
10
  PROMPT_NO_APPLICATIONS = f"""[yellow]No applications found. You can create one with [bold]{TFY} deploy[/] from within your application folder"""
11
11
  PROMPT_NO_VERSIONS = """[yellow]No application versions found."""
12
12
  PROMPT_APPLYING_MANIFEST = """[yellow]Applying manifest for file {!r}[/]"""
13
+ PROMPT_DELETING_MANIFEST = """[yellow]Deleting manifest for file {!r}[/]"""
@@ -280,6 +280,11 @@ class ApplyResult(BaseModel):
280
280
  message: str
281
281
 
282
282
 
283
+ class DeleteResult(BaseModel):
284
+ success: bool
285
+ message: str
286
+
287
+
283
288
  class Manifest(Base):
284
289
  type: str
285
290
  name: str
@@ -81,8 +81,7 @@ def login(
81
81
 
82
82
  user_info = token.to_user_info()
83
83
  output_hook.print_line(
84
- f"Successfully logged in to {cred_file_content.host!r} as "
85
- f"{user_info.user_id!r}"
84
+ f"Successfully logged in to {cred_file_content.host!r} as {user_info.user_id!r}"
86
85
  )
87
86
  return True
88
87
 
@@ -27,7 +27,7 @@ logging.basicConfig(level=logging.INFO)
27
27
 
28
28
  {application_type} = {spec_repr}
29
29
 
30
- {application_type}.deploy(workspace_fqn="{workspace_fqn}")\
30
+ {application_type}.deploy(workspace_fqn="{workspace_fqn}", wait=False)\
31
31
  """
32
32
  return code
33
33
 
@@ -214,8 +214,8 @@ No Workspace FQN was provided or mentioned in the spec.
214
214
  Either add a `workspace_fqn` to your yaml spec as
215
215
 
216
216
  ```
217
- name: {getattr(component, 'name', 'my-app')}
218
- type: {getattr(component, 'type', 'undefined')}
217
+ name: {getattr(component, "name", "my-app")}
218
+ type: {getattr(component, "type", "undefined")}
219
219
  ...
220
220
  workspace_fqn: <your workspace fqn>
221
221
  ```
@@ -224,7 +224,7 @@ or Python deployment spec as
224
224
 
225
225
  ```
226
226
  app = {component.__class__.__name__}(
227
- name='{getattr(component, 'name', 'my-app')}',
227
+ name='{getattr(component, "name", "my-app")}',
228
228
  ...
229
229
  workspace_fqn='<your workspace fqn>'
230
230
  )
@@ -247,8 +247,7 @@ class HealthApi:
247
247
  for _key, _val in _params["kwargs"].items():
248
248
  if _key not in _all_params:
249
249
  raise ApiTypeError(
250
- "Got an unexpected keyword argument '%s'"
251
- " to method serve_get" % _key
250
+ "Got an unexpected keyword argument '%s' to method serve_get" % _key
252
251
  )
253
252
  _params[_key] = _val
254
253
  del _params["kwargs"]
@@ -115,7 +115,7 @@ class ApiException(OpenApiException):
115
115
 
116
116
  def __str__(self):
117
117
  """Custom error messages for exception"""
118
- error_message = "({0})\n" "Reason: {1}\n".format(self.status, self.reason)
118
+ error_message = "({0})\nReason: {1}\n".format(self.status, self.reason)
119
119
  if self.headers:
120
120
  error_message += "HTTP response headers: {0}\n".format(self.headers)
121
121
 
@@ -767,7 +767,7 @@ class TensorInfo:
767
767
  def __init__(self, dtype: np.dtype, shape: Union[tuple, list]):
768
768
  if not isinstance(dtype, np.dtype):
769
769
  raise TypeError(
770
- f"Expected `dtype` to be instance of `{np.dtype}`, received `{ dtype.__class__}`"
770
+ f"Expected `dtype` to be instance of `{np.dtype}`, received `{dtype.__class__}`"
771
771
  )
772
772
  # Throw if size information exists flexible numpy data types
773
773
  if dtype.char in ["U", "S"] and not dtype.name.isalpha():
@@ -33,7 +33,7 @@ if TYPE_CHECKING:
33
33
  PlotObjType = Union[
34
34
  "matplotlib.figure.Figure",
35
35
  "plotly.graph_objects.Figure",
36
- "matplotlib.pyplot",
36
+ "matplotlib.pyplot", # type: ignore[valid-type]
37
37
  ]
38
38
 
39
39
 
@@ -103,7 +103,7 @@ def _save_matplotlib_figure(
103
103
 
104
104
 
105
105
  def _save_matplotlib_plt(
106
- plt: "matplotlib.pyplot",
106
+ plt: "matplotlib.pyplot", # type: ignore[valid-type]
107
107
  key: str,
108
108
  step: int,
109
109
  local_dir: str,
@@ -1109,7 +1109,7 @@ class MlFoundryRun:
1109
1109
  @_ensure_not_deleted
1110
1110
  def log_plots(
1111
1111
  self,
1112
- plots: Dict[
1112
+ plots: Dict[ # type: ignore[valid-type]
1113
1113
  str,
1114
1114
  Union[
1115
1115
  "matplotlib.pyplot",
@@ -0,0 +1,72 @@
1
+ Metadata-Version: 2.4
2
+ Name: truefoundry
3
+ Version: 0.5.8rc4
4
+ Summary: TrueFoundry CLI
5
+ Author-email: TrueFoundry Team <abhishek@truefoundry.com>
6
+ Requires-Python: <3.13,>=3.8.1
7
+ Requires-Dist: aenum<4.0.0,>=3.0.0
8
+ Requires-Dist: click<9.0.0,>=7.0.0
9
+ Requires-Dist: coolname<2.0.0,>=1.1.0
10
+ Requires-Dist: docker<8.0.0,>=6.1.2
11
+ Requires-Dist: filelock<4.0.0,>=3.8.0
12
+ Requires-Dist: gitignorefile<2.0.0,>=1.1.2
13
+ Requires-Dist: gitpython<4.0.0,>=3.1.43
14
+ Requires-Dist: importlib-metadata<9.0.0,>=4.11.3
15
+ Requires-Dist: importlib-resources<7.0.0,>=5.2.0
16
+ Requires-Dist: mako<2.0.0,>=1.1.6
17
+ Requires-Dist: numpy<2.0.0,>=1.23.0; python_version < '3.12'
18
+ Requires-Dist: numpy<2.0.0,>=1.26.0; python_version >= '3.12'
19
+ Requires-Dist: openai<2.0.0,>=1.16.2
20
+ Requires-Dist: packaging<25.0,>=20.0
21
+ Requires-Dist: pydantic<3.0.0,>=1.8.2
22
+ Requires-Dist: pygments<3.0.0,>=2.12.0
23
+ Requires-Dist: pyjwt<3.0.0,>=2.0.0
24
+ Requires-Dist: python-dateutil<3.0.0,>=2.8.2
25
+ Requires-Dist: python-dotenv<2.0.0,>=1.0.1
26
+ Requires-Dist: python-socketio[client]<6.0.0,>=5.5.2
27
+ Requires-Dist: pyyaml<7.0.0,>=6.0.0
28
+ Requires-Dist: questionary<2.0.0,>=1.10.0
29
+ Requires-Dist: requests<3.0.0,>=2.18.0
30
+ Requires-Dist: requirements-parser<0.12.0,>=0.11.0
31
+ Requires-Dist: rich-click<2.0.0,>=1.2.1
32
+ Requires-Dist: rich<14.0.0,>=13.7.1
33
+ Requires-Dist: scipy<2.0.0,>=1.12.0; python_version >= '3.12'
34
+ Requires-Dist: scipy<2.0.0,>=1.5.0; python_version < '3.12'
35
+ Requires-Dist: tqdm<5.0.0,>=4.0.0
36
+ Requires-Dist: typing-extensions>=4.0
37
+ Requires-Dist: urllib3<3,>=1.26.18
38
+ Requires-Dist: yq<4.0.0,>=3.1.0
39
+ Provides-Extra: workflow
40
+ Requires-Dist: flytekit==1.13.13; extra == 'workflow'
41
+ Description-Content-Type: text/markdown
42
+
43
+ # TrueFoundry
44
+
45
+ TrueFoundry library to help you interact with the platform programmatically by
46
+
47
+ - Interacting with the deployments side of TrueFoundry, enabling you to manage workspaces, deployments, applications, and view logs.
48
+ - Providing experiment tracking capabilities, allowing you to track ML experiments and interact with ML repositories within TrueFoundry.
49
+
50
+ You can access the health of your service, monitoring links, deployed endpoints and track metadata and artifacts by logging on to TrueFoundry's dashboard.
51
+
52
+ ## Installation
53
+
54
+ To install the `TrueFoundry CLI`, you can use pip:
55
+
56
+ ```bash
57
+ pip install truefoundry
58
+ ```
59
+
60
+ To install the `TrueFoundry CLI` with Workflow deployment features, you can use pip:
61
+
62
+ ```bash
63
+ pip install truefoundry[workflow]
64
+ ```
65
+
66
+ ## Examples
67
+
68
+ https://github.com/truefoundry/getting-started-examples
69
+
70
+ ## Documentation
71
+
72
+ https://docs.truefoundry.com/
@@ -1,14 +1,17 @@
1
1
  truefoundry/__init__.py,sha256=Go9M0PvV9kYX8dhldJzpH0RAYB_Pc1kVOxfNlsps89c,321
2
+ truefoundry/logger.py,sha256=u-YCNjg5HBwE70uQcpjIG64Ghos-K2ulTWaxC03BSj4,714
3
+ truefoundry/pydantic_v1.py,sha256=jSuhGtz0Mbk1qYu8jJ1AcnIDK4oxUsdhALc4spqstmM,345
4
+ truefoundry/version.py,sha256=bqiT4Q-VWrTC6P4qfK43mez-Ppf-smWfrl6DcwV7mrw,137
2
5
  truefoundry/autodeploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ truefoundry/autodeploy/cli.py,sha256=9ZxKu_MGIpraMzaW4ZyuQZhlKIQYE3biBrBV4S1h6Fo,14167
7
+ truefoundry/autodeploy/constants.py,sha256=vTh2nA7cjqghqbW2rNh3FbtcIk2scdAWZuuQCmVBO80,1273
8
+ truefoundry/autodeploy/exception.py,sha256=fa_ZyTDUKiMKG2Uayynk1yWcEMsuVluqk2GtV4tfTPU,158
9
+ truefoundry/autodeploy/logger.py,sha256=tkV2UKcOTFl5nz0cn4eRbzxF-2CZd8b7MK9vnhaflYw,325
3
10
  truefoundry/autodeploy/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
11
  truefoundry/autodeploy/agents/base.py,sha256=lYw6bKhfCWff5BbtXXn2k4MjMbRIUkOwPBjRT70iXE8,6420
5
12
  truefoundry/autodeploy/agents/developer.py,sha256=tO9vmgGjoaqK4rX-DFCyMrViFC2Oqofd89WoXqsEm-A,4142
6
13
  truefoundry/autodeploy/agents/project_identifier.py,sha256=KlF7FwrGHDCjF3y3-YaCDxZ8kE34s6XPBagXhG2U1aM,4520
7
14
  truefoundry/autodeploy/agents/tester.py,sha256=lqvVBuVcFRvGZnSLAUF2r-1-Yti20o_cbybU19IlSXo,2418
8
- truefoundry/autodeploy/cli.py,sha256=9ZxKu_MGIpraMzaW4ZyuQZhlKIQYE3biBrBV4S1h6Fo,14167
9
- truefoundry/autodeploy/constants.py,sha256=vTh2nA7cjqghqbW2rNh3FbtcIk2scdAWZuuQCmVBO80,1273
10
- truefoundry/autodeploy/exception.py,sha256=fa_ZyTDUKiMKG2Uayynk1yWcEMsuVluqk2GtV4tfTPU,158
11
- truefoundry/autodeploy/logger.py,sha256=tkV2UKcOTFl5nz0cn4eRbzxF-2CZd8b7MK9vnhaflYw,325
12
15
  truefoundry/autodeploy/tools/__init__.py,sha256=9zJiC1d4bv9EL-p5XTCa9fAQ6ZKV--AbgeLz9bBBkyQ,875
13
16
  truefoundry/autodeploy/tools/ask.py,sha256=MxUFLP7rjpdJ85gCc3El0wUqTZDjpjAw7WOTdV4LLWE,856
14
17
  truefoundry/autodeploy/tools/base.py,sha256=Ltzj2d6DO1gUMx_qSt2c2Zq91MJ5V4FJXpZwl4T3F8M,795
@@ -45,23 +48,24 @@ truefoundry/common/types.py,sha256=BMJFCsR1lPJAw66IQBSvLyV4I6o_x5oj78gVsUa9si8,1
45
48
  truefoundry/common/utils.py,sha256=E1kKw_hqlVMgwyPkER2SvVLIoQ-B_4TQCuM5IJXvgig,6046
46
49
  truefoundry/common/warnings.py,sha256=rs6BHwk7imQYedo07iwh3TWEOywAR3Lqhj0AY4khByg,504
47
50
  truefoundry/deploy/__init__.py,sha256=e0EgG-fVJ6N9PNIlBINO6QtIMEehQgmz3ONPPjYlcSY,2596
48
- truefoundry/deploy/auto_gen/models.py,sha256=83OoBHcu3VP8Xe75vBNaQmPGjqxhsSkHAZZZD4mROOM,87620
51
+ truefoundry/deploy/python_deploy_codegen.py,sha256=AainOFR20XvhNeztJkLPWGZ40lAT_nwc-ZmG77Kum4o,6525
52
+ truefoundry/deploy/auto_gen/models.py,sha256=u9gRv78pTebU3C0_DJI2UkvY-hyZGiJ80Z_AoUq1Ug4,88347
49
53
  truefoundry/deploy/builder/__init__.py,sha256=1qjHMNBE1poRCZW0WrG46dFM1f1IlivD5352qzsioMU,4953
54
+ truefoundry/deploy/builder/constants.py,sha256=amUkHoHvVKzGv0v_knfiioRuKiJM0V0xW0diERgWiI0,508
55
+ truefoundry/deploy/builder/docker_service.py,sha256=sm7GWeIqyrKaZpxskdLejZlsxcZnM3BTDJr6orvPN4E,3948
56
+ truefoundry/deploy/builder/utils.py,sha256=D68-bqM0NQx-Elg-56mtkENyVyg9faZ9tgTmBuo1Sjs,1076
50
57
  truefoundry/deploy/builder/builders/__init__.py,sha256=tlFLXqyDaKLd4iZbo4Hcu_8gOmgtL6drnXpbmQ6x1P8,636
51
58
  truefoundry/deploy/builder/builders/dockerfile.py,sha256=AXXTziCkaqIhuM_bwyD1vT1znOwemN1TKgU7eyo-KuM,1522
52
59
  truefoundry/deploy/builder/builders/tfy_notebook_buildpack/__init__.py,sha256=x_GwRFKz-Kb4-ZlxOFjBlr0mTgUDe_hVeG4dsIbHo8c,1796
53
60
  truefoundry/deploy/builder/builders/tfy_notebook_buildpack/dockerfile_template.py,sha256=rQgdvKmAT9HArVW4TAG5yd2QTKRs3S5LJ9RQbc_EkHE,2518
54
61
  truefoundry/deploy/builder/builders/tfy_python_buildpack/__init__.py,sha256=9r1PYahn-HfzpMth6NkvJoycmmHQpSl0vIVZxWF12xI,1864
55
62
  truefoundry/deploy/builder/builders/tfy_python_buildpack/dockerfile_template.py,sha256=X9mKH7SGZLGZGvY0S2aPB3sgWdSR9TY4eVXtqz_idEA,8973
56
- truefoundry/deploy/builder/constants.py,sha256=amUkHoHvVKzGv0v_knfiioRuKiJM0V0xW0diERgWiI0,508
57
- truefoundry/deploy/builder/docker_service.py,sha256=OI8efqK0Gnoii8bcHihpA2StwHVzsMREfBk7NvMR4hY,3950
58
- truefoundry/deploy/builder/utils.py,sha256=D68-bqM0NQx-Elg-56mtkENyVyg9faZ9tgTmBuo1Sjs,1076
59
63
  truefoundry/deploy/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
64
  truefoundry/deploy/cli/commands/__init__.py,sha256=wn_TsmrImj9pER16O5aK3aW2mfqbRgrhv-jn4x3_2oM,1278
61
65
  truefoundry/deploy/cli/commands/apply_command.py,sha256=Y2e_C8HVpo8CssVod-3JRz-89qStC5JRaNzJ7O2mRlY,2039
62
66
  truefoundry/deploy/cli/commands/build_command.py,sha256=zJBywMatbpUlXx5O2aqpEVmPeBIJ9RNnG9abSc8C8CE,1234
63
67
  truefoundry/deploy/cli/commands/create_command.py,sha256=rCajvQvAfZU10nDZOYpRACbAATH1zj52ihTWrhnLLUc,1829
64
- truefoundry/deploy/cli/commands/delete_command.py,sha256=JMibxvt1rsZ8sODa0jI1e6vavjN8Pv04ttVFURSTKTw,2362
68
+ truefoundry/deploy/cli/commands/delete_command.py,sha256=8SriRwg5mEHL4zP0mdDjJ0cKWJTU_1Pjq3450zMr9tk,3889
65
69
  truefoundry/deploy/cli/commands/deploy_command.py,sha256=8aTBvzPaT9xg6KPmpcpqJlmdj4yXzWUfAy6slcoPN74,4123
66
70
  truefoundry/deploy/cli/commands/deploy_init_command.py,sha256=g-jBfrEmhZ0TDWsyqPDn4K6q33EqJSGmBTt1eMYig-w,600
67
71
  truefoundry/deploy/cli/commands/get_command.py,sha256=HZQGWib-qrS0RdzctRDwDLfMGu0wqWkAM1u26cTZlsc,5944
@@ -81,50 +85,64 @@ truefoundry/deploy/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
81
85
  truefoundry/deploy/io/output_callback.py,sha256=V2YwUFec4G4a67lM4r-x_64AqdOVNo_9sTdfQWLlvi0,604
82
86
  truefoundry/deploy/io/rich_output_callback.py,sha256=TJLiRD-EnFVwgcepxR7WN0koKqW1X2DevETPhNPi_nU,829
83
87
  truefoundry/deploy/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
- truefoundry/deploy/lib/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
- truefoundry/deploy/lib/clients/servicefoundry_client.py,sha256=TjReImI1lL2xRQvdFh_ldfuVeVP7bohyxIf53PxYvNs,26341
86
88
  truefoundry/deploy/lib/const.py,sha256=Wg0GDnfFu-g1fJr4lU80NH2ULw0R0dYjV7LnW-PbOeM,173
89
+ truefoundry/deploy/lib/logs_utils.py,sha256=SQxRv3jDDmgHdOUMhlMaAPGYskybnBUMpst7QU_i_sc,1469
90
+ truefoundry/deploy/lib/messages.py,sha256=8424kj3kqCyDCX5Nr2WJZZ_UEutPoaSs_y2f9-O4yy8,1001
91
+ truefoundry/deploy/lib/session.py,sha256=-FX4gOtiGlc6Jk56JPVZpDqXR9xQza77AIlBvNJpYqQ,4919
92
+ truefoundry/deploy/lib/util.py,sha256=J7r8San2wKo48A7-BlH2-OKTlBO67zlPjLEhMsL8os0,1059
93
+ truefoundry/deploy/lib/win32.py,sha256=1RcvPTdlOAJ48rt8rCbE2Ufha2ztRqBAE9dueNXArrY,5009
94
+ truefoundry/deploy/lib/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
+ truefoundry/deploy/lib/clients/servicefoundry_client.py,sha256=RIlJnpBivhBXlDJZFaNQLIdIsFF6RpHKIDK1QMjqHBg,26712
87
96
  truefoundry/deploy/lib/dao/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
97
  truefoundry/deploy/lib/dao/application.py,sha256=oMszpueXPUfTUuN_XdKwoRjQyqAgWHhZ-10cbprCVdM,9226
89
98
  truefoundry/deploy/lib/dao/apply.py,sha256=Jadfa3DcbIRz-Bb4Tlixed179HLDnmDXOlrvSxfEgQ0,3021
99
+ truefoundry/deploy/lib/dao/delete.py,sha256=ajtnKnffhv8Uak4GhJx4npPMJPe2SHyWKIqb3vkAszw,2727
90
100
  truefoundry/deploy/lib/dao/version.py,sha256=AtdW_4O1DPUKdfv2qy6iUJsZ_95vM6z0AqeEy3WDKs8,1130
91
101
  truefoundry/deploy/lib/dao/workspace.py,sha256=6YvfCgWDzAULI3Q6JswyZmP1CwJ5rM-ANsIFkbQia0Q,2349
92
- truefoundry/deploy/lib/logs_utils.py,sha256=SQxRv3jDDmgHdOUMhlMaAPGYskybnBUMpst7QU_i_sc,1469
93
- truefoundry/deploy/lib/messages.py,sha256=nhp0bCYf_XpUM68hTq5lBY-__vtEyV2uP7NgnJXJ_Vg,925
94
102
  truefoundry/deploy/lib/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
- truefoundry/deploy/lib/model/entity.py,sha256=3YRdyvMYI1aUXUu2tB5b5lZWwpxKdAhjpT79gzTCZGo,8373
96
- truefoundry/deploy/lib/session.py,sha256=GIt2eTU6jWQwMkvseDJccSWdUVyEr3WLY5AKHf8Uy18,4931
97
- truefoundry/deploy/lib/util.py,sha256=J7r8San2wKo48A7-BlH2-OKTlBO67zlPjLEhMsL8os0,1059
98
- truefoundry/deploy/lib/win32.py,sha256=1RcvPTdlOAJ48rt8rCbE2Ufha2ztRqBAE9dueNXArrY,5009
99
- truefoundry/deploy/python_deploy_codegen.py,sha256=qJHH1BJQII9e6PhkcRFYiE_3De7_VMMm8nM4AX5Eq1o,6513
103
+ truefoundry/deploy/lib/model/entity.py,sha256=y6sj4QKxa5GEEu85j72bq9uTPXvJv4iSqaww65a9FKw,8441
100
104
  truefoundry/deploy/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
105
  truefoundry/deploy/v2/lib/__init__.py,sha256=WEiVMZXOVljzEE3tpGJil14liIn_PCDoACJ6b3tZ6sI,188
102
- truefoundry/deploy/v2/lib/deploy.py,sha256=aHYT3p5o_AejVudr-Zbau3wJpMRAzJ4FTlPCUsJ436M,12420
106
+ truefoundry/deploy/v2/lib/deploy.py,sha256=OvotIwCzluaOqX3xceV5sb86WFXYNs4fXn6FJsR9KBU,12420
103
107
  truefoundry/deploy/v2/lib/deploy_workflow.py,sha256=92aA8ji46-KjC3tu46KeJuvOFkajSU1WAdLKgqVOGh8,12869
104
108
  truefoundry/deploy/v2/lib/deployable_patched_models.py,sha256=hqfPxQvuA9rTjaxZY9YqV51hdNFT-0YBXyR-S859PTo,4060
105
109
  truefoundry/deploy/v2/lib/models.py,sha256=ogc1UYs1Z2nBdGSKCrde9sk8d0GxFKMkem99uqO5CmM,1148
106
110
  truefoundry/deploy/v2/lib/patched_models.py,sha256=v26Rm0BaV6RKr-TxKZ8O3gT-90JA91K4bnGSKgCrQ7o,16338
107
111
  truefoundry/deploy/v2/lib/source.py,sha256=zM8k3hJ2N5b8FgkVsYPhEvHPA4rt2rSqtLUMRcaGGiQ,9405
108
- truefoundry/logger.py,sha256=u-YCNjg5HBwE70uQcpjIG64Ghos-K2ulTWaxC03BSj4,714
109
112
  truefoundry/ml/__init__.py,sha256=ssUEIs8BixPWxynKoeSh-dkRl6AtLXG0PBGYnUR5Az8,2217
113
+ truefoundry/ml/constants.py,sha256=vDq72d4C9FSWqr9MMdjgTF4TuyNFApvo_6RVsSeAjB4,2837
114
+ truefoundry/ml/entities.py,sha256=si5GAqZsWzKu5MPrU4Hk6se7bebHOYhTiNw69ai-Uk8,1485
115
+ truefoundry/ml/enums.py,sha256=arqDkF8duU_oVLFeYMhcfWYbF6Nq5mmjwupJMIheyXM,1790
116
+ truefoundry/ml/exceptions.py,sha256=QpDJSWmF7dIsByS0qOQbQZ_jytdNTzkHDDO3BxhTSo0,332
117
+ truefoundry/ml/git_info.py,sha256=jvAVm9ilqivnGq8qJdUvYdd8Siv0PLtqurB-PXsS5ho,2023
118
+ truefoundry/ml/internal_namespace.py,sha256=QcqMHp6-C2im2H_02hlhi01EIcr1HhNaZprszs13EMU,1790
119
+ truefoundry/ml/logger.py,sha256=VT-BF3BnBYTWVq87O58F0c8uXMu94gYzsiFlGY3_7Ao,458
120
+ truefoundry/ml/mlfoundry_api.py,sha256=PUBGDcjrZsJKQYy1PjT8NYGYxrTvhhHzQ-0jLSl7-zc,61279
121
+ truefoundry/ml/mlfoundry_run.py,sha256=w9_Tph48eTDjna-rZ1fPa6PtX4JzhF-t5PS2hmbK2rY,44319
122
+ truefoundry/ml/model_framework.py,sha256=JGmzdG7o5P6CJr5EYTUOmuly53FfhpoNVqKrhfijAVg,18972
123
+ truefoundry/ml/run_utils.py,sha256=0W208wSLUrbdfk2pjNcZlkUi9bNxG2JORqoe-5rVqHI,2423
124
+ truefoundry/ml/session.py,sha256=IRXVoAAJTHik3md-pE4IpTPSGJvs5qdAyWBf0O9_TJo,4462
125
+ truefoundry/ml/validation_utils.py,sha256=J5atNhcJLvKj64ralSV9Y5Fv1Rt4SE237ICdP9-7sP4,12149
110
126
  truefoundry/ml/artifact/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
127
  truefoundry/ml/artifact/truefoundry_artifact_repo.py,sha256=myDpr3RZzEkd_UG9C3rZ4UKEFxXopO5HMVJNpNDiuAo,37737
112
128
  truefoundry/ml/autogen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
+ truefoundry/ml/autogen/client_README.md,sha256=RpZTi__4UauH1kPvz7LfixtrbmTreiVpc2rDyDWstTs,37139
113
130
  truefoundry/ml/autogen/client/__init__.py,sha256=Kh1qP7S8L-e7ItofskXQf3y7QFfmxGPFnv5ACAPzwKE,20123
131
+ truefoundry/ml/autogen/client/api_client.py,sha256=M31IycWorn10FYS8WbO_Whaipr0tVu2pVWFCfbS7XCo,29167
132
+ truefoundry/ml/autogen/client/api_response.py,sha256=KRyvecPMXF05PaxILHZ8JHoP4rgKBjKONMgG83aU-rM,844
133
+ truefoundry/ml/autogen/client/configuration.py,sha256=V1oaEnxt-NfpaNmp-EZpf2glovzVhM2coWYt8HBNB4M,15723
134
+ truefoundry/ml/autogen/client/exceptions.py,sha256=VGKETfmF3kru3LQ0Ao226B1keHhyLMMnjEd7aScP45c,5352
135
+ truefoundry/ml/autogen/client/rest.py,sha256=9goba8qHjQuVx5O_yRaTKu7PvBnb7r7swfy3dwuTEgk,14281
114
136
  truefoundry/ml/autogen/client/api/__init__.py,sha256=NyMBxBmIzB1o5LzZZwz9LiydHB3-hPqc_sevsnY6Jrw,746
115
137
  truefoundry/ml/autogen/client/api/auth_api.py,sha256=zpWzJhUmW6HHMY_atlUf0B25k77E1kue2hmix5I5Ih0,7017
116
138
  truefoundry/ml/autogen/client/api/deprecated_api.py,sha256=mu5x_skNcwz8v1Tr6VP72-tVP7pmBV9muyKy_2NH3F0,38824
117
139
  truefoundry/ml/autogen/client/api/experiments_api.py,sha256=VEwgHJca_mmfxYaoaJknQg_YYQOaY8Sd_Hx2wW8CSA8,68174
118
140
  truefoundry/ml/autogen/client/api/generate_code_snippet_api.py,sha256=C8iABP-pYIyIoTlL8PFi3ZBG_6B_dkQf09eErNeoj7A,22316
119
- truefoundry/ml/autogen/client/api/health_api.py,sha256=IAPhRAo9CLUT5ipVR1fCf-qDx57UR0wg5ekhtUl8lug,11554
141
+ truefoundry/ml/autogen/client/api/health_api.py,sha256=BMC9_V1UYqcsvdiSC9XXQLyaosnReg0a_r8Lvnru_i4,11531
120
142
  truefoundry/ml/autogen/client/api/metrics_api.py,sha256=q3L38eD-2hu4_9YvcSdnWDYXD2V8il-X9reinOAABek,14908
121
143
  truefoundry/ml/autogen/client/api/mlfoundry_artifacts_api.py,sha256=T8_cYdrd60KzDddRxX3nDeIQe6ihMq-jD8BOAAmzPHo,309716
122
144
  truefoundry/ml/autogen/client/api/run_artifacts_api.py,sha256=x-vVnY2LEFChZxiiFauswRWwFz6Qqh30PKXjzuTvxmc,8799
123
145
  truefoundry/ml/autogen/client/api/runs_api.py,sha256=-aghrZ2VYuZOw_vBtOzWDsnK7Ji29oZQxK2CLRgyo2w,119232
124
- truefoundry/ml/autogen/client/api_client.py,sha256=M31IycWorn10FYS8WbO_Whaipr0tVu2pVWFCfbS7XCo,29167
125
- truefoundry/ml/autogen/client/api_response.py,sha256=KRyvecPMXF05PaxILHZ8JHoP4rgKBjKONMgG83aU-rM,844
126
- truefoundry/ml/autogen/client/configuration.py,sha256=V1oaEnxt-NfpaNmp-EZpf2glovzVhM2coWYt8HBNB4M,15723
127
- truefoundry/ml/autogen/client/exceptions.py,sha256=XbCbDHhYT3BVejdoGNPgEa4oS56ypkwFdxk1iOc_tFY,5355
128
146
  truefoundry/ml/autogen/client/models/__init__.py,sha256=5LUnBRz-1KBea5KicUDeJ0LPDUKvHJYd6L0iP1q-rSs,18745
129
147
  truefoundry/ml/autogen/client/models/add_custom_metrics_to_model_version_request_dto.py,sha256=_ISDspicTGjBCYYXubKfRYYSSQVyW3AvG-jFh47-Zfc,2163
130
148
  truefoundry/ml/autogen/client/models/add_features_to_model_version_request_dto.py,sha256=OT1-98DyWNfAHz_EgD2gMX2XkrGQ4Re945fhoAl8qSE,2099
@@ -307,29 +325,24 @@ truefoundry/ml/autogen/client/models/validation_error_loc_inner.py,sha256=nThJ5G
307
325
  truefoundry/ml/autogen/client/models/xg_boost_framework.py,sha256=a0EHzncxe_hSFUCAk3nFOMuh8ztQQQBLbTfg0IbwTE8,3324
308
326
  truefoundry/ml/autogen/client/models/xg_boost_model_schema.py,sha256=QKJkiERNqF8UiolX2FjvhkUkUlUgDoo3CpTYPAdCxV8,2735
309
327
  truefoundry/ml/autogen/client/models/xg_boost_serialization_format.py,sha256=wFFSH0Z9MP8eT_fysHfUu4iqdjEZART-HxTH4e4gNI8,872
310
- truefoundry/ml/autogen/client/rest.py,sha256=9goba8qHjQuVx5O_yRaTKu7PvBnb7r7swfy3dwuTEgk,14281
311
- truefoundry/ml/autogen/client_README.md,sha256=RpZTi__4UauH1kPvz7LfixtrbmTreiVpc2rDyDWstTs,37139
312
328
  truefoundry/ml/autogen/entities/artifacts.py,sha256=TOm71ZrNo36le3YyMEsE1Cs_BYyMLkFQ7hQtAaMoB9M,21251
313
329
  truefoundry/ml/autogen/models/__init__.py,sha256=--TGRea9SQBWFfwtcl3ekb1XGfFTdEkQGSG8a2SJ60I,187
314
330
  truefoundry/ml/autogen/models/exceptions.py,sha256=q3n7FGBrg_hUy1UyoefhMnhcXUAaqXlLIGHoOVzn_d8,1390
315
- truefoundry/ml/autogen/models/schema.py,sha256=IhpO9qbygLqEamP3NIt3m90SseJXCOm1ZTqNbNbW-M0,55772
331
+ truefoundry/ml/autogen/models/schema.py,sha256=a_bp42MMPUbwO3407m0UW2W8EOhnxZXfSx3xS4aszVs,55771
316
332
  truefoundry/ml/autogen/models/signature.py,sha256=rBjpxUIsEeWM0sIyYG5uCJB18DKHR4k5yZw8TzuoP48,4987
317
333
  truefoundry/ml/autogen/models/utils.py,sha256=c7RtSLXhOLcP8rjuUtfnMdaKVTZvvbsmw98gPAkAFrs,24371
318
334
  truefoundry/ml/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
319
335
  truefoundry/ml/cli/cli.py,sha256=MwpY7z_NEeJE_XIP7XbZELjNeu2vpMmohttHCKDRk54,335
336
+ truefoundry/ml/cli/utils.py,sha256=j6_mZ4Spn114mz3P4QQ8jx0tmorXIuyQnHXVUSDvZi4,1035
320
337
  truefoundry/ml/cli/commands/__init__.py,sha256=diDUiRUX4l6TtNLI4iF-ZblczkELM7FRViJ-8gGNJQY,82
321
338
  truefoundry/ml/cli/commands/download.py,sha256=N9MhsEQ3U24v_OmnMZT8Q4SoAi38Sm7a21unrACOSDw,2573
322
339
  truefoundry/ml/cli/commands/model_init.py,sha256=9fHCernmQswjEhREzdrnKxwCCWkgmFrpL29H52Sd1gQ,2663
323
- truefoundry/ml/cli/utils.py,sha256=j6_mZ4Spn114mz3P4QQ8jx0tmorXIuyQnHXVUSDvZi4,1035
324
340
  truefoundry/ml/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
325
341
  truefoundry/ml/clients/servicefoundry_client.py,sha256=Rx-tjiDxNwUgOCDITjtL0vmZcQgJjh_tUdReE23TKIk,2363
326
- truefoundry/ml/constants.py,sha256=vDq72d4C9FSWqr9MMdjgTF4TuyNFApvo_6RVsSeAjB4,2837
327
- truefoundry/ml/entities.py,sha256=si5GAqZsWzKu5MPrU4Hk6se7bebHOYhTiNw69ai-Uk8,1485
328
- truefoundry/ml/enums.py,sha256=arqDkF8duU_oVLFeYMhcfWYbF6Nq5mmjwupJMIheyXM,1790
329
- truefoundry/ml/exceptions.py,sha256=QpDJSWmF7dIsByS0qOQbQZ_jytdNTzkHDDO3BxhTSo0,332
330
- truefoundry/ml/git_info.py,sha256=jvAVm9ilqivnGq8qJdUvYdd8Siv0PLtqurB-PXsS5ho,2023
331
- truefoundry/ml/internal_namespace.py,sha256=QcqMHp6-C2im2H_02hlhi01EIcr1HhNaZprszs13EMU,1790
332
342
  truefoundry/ml/log_types/__init__.py,sha256=g4u4D4Jaj0aBK5GtrLV88-qThKZR9pSZ17vFEkN-LmM,125
343
+ truefoundry/ml/log_types/plot.py,sha256=KsVJiZ1uXvMoAumjDTT7EpjWoagtRWxF5rRQDTCRGOY,7571
344
+ truefoundry/ml/log_types/pydantic_base.py,sha256=eBlw_AEyAz4iJKDP4zgJOCFWcldwQqpf7FADW1jzIQY,272
345
+ truefoundry/ml/log_types/utils.py,sha256=xjJ21jdPScvFmw3TbVh5NCzbzJwaqiXJyiiT4xxX1EI,335
333
346
  truefoundry/ml/log_types/artifacts/artifact.py,sha256=wIGmuwvf7-sgJ4WJSwhSYk3EBccJAdgcTG6wUiomBKg,22032
334
347
  truefoundry/ml/log_types/artifacts/constants.py,sha256=qKxQ5mMvJE4j83BvGW3qNTKunxCiBg_EEjTdgbgJtyE,1036
335
348
  truefoundry/ml/log_types/artifacts/dataset.py,sha256=a4dxd2EN8p7Ci-cLGGiDOboN3t0395_XhWE1dmTw1Q4,13112
@@ -341,29 +354,17 @@ truefoundry/ml/log_types/image/constants.py,sha256=wLtGEOA4T5fZHSlOXPuNDLX3lpbCt
341
354
  truefoundry/ml/log_types/image/image.py,sha256=qQnAVgErAq4Jn6wXFFpaveOd52zcjUuomUCqNRxO2io,12478
342
355
  truefoundry/ml/log_types/image/image_normalizer.py,sha256=vrzfuSpVGgIxw_Q2sbFe7kQ_JpAndX0bMwC7wtfi41g,3104
343
356
  truefoundry/ml/log_types/image/types.py,sha256=inFQlyAyDvZtfliFpENirNCm1XO9beyZ8DNn97DoDKs,1568
344
- truefoundry/ml/log_types/plot.py,sha256=HuYvvRA5r8V0xAIuuqMME2IHb9d3SfGHUiuEkOP3Uks,7515
345
- truefoundry/ml/log_types/pydantic_base.py,sha256=eBlw_AEyAz4iJKDP4zgJOCFWcldwQqpf7FADW1jzIQY,272
346
- truefoundry/ml/log_types/utils.py,sha256=xjJ21jdPScvFmw3TbVh5NCzbzJwaqiXJyiiT4xxX1EI,335
347
- truefoundry/ml/logger.py,sha256=VT-BF3BnBYTWVq87O58F0c8uXMu94gYzsiFlGY3_7Ao,458
348
- truefoundry/ml/mlfoundry_api.py,sha256=PUBGDcjrZsJKQYy1PjT8NYGYxrTvhhHzQ-0jLSl7-zc,61279
349
- truefoundry/ml/mlfoundry_run.py,sha256=M-0FkZYDxwv5EZUDtVqiV8JxC_3BWR80N7Kp4Yj7bPY,44291
350
- truefoundry/ml/model_framework.py,sha256=JGmzdG7o5P6CJr5EYTUOmuly53FfhpoNVqKrhfijAVg,18972
351
- truefoundry/ml/run_utils.py,sha256=0W208wSLUrbdfk2pjNcZlkUi9bNxG2JORqoe-5rVqHI,2423
352
- truefoundry/ml/session.py,sha256=IRXVoAAJTHik3md-pE4IpTPSGJvs5qdAyWBf0O9_TJo,4462
353
- truefoundry/ml/validation_utils.py,sha256=J5atNhcJLvKj64ralSV9Y5Fv1Rt4SE237ICdP9-7sP4,12149
354
- truefoundry/pydantic_v1.py,sha256=jSuhGtz0Mbk1qYu8jJ1AcnIDK4oxUsdhALc4spqstmM,345
355
- truefoundry/version.py,sha256=bqiT4Q-VWrTC6P4qfK43mez-Ppf-smWfrl6DcwV7mrw,137
356
357
  truefoundry/workflow/__init__.py,sha256=XY83vqtLAclI82atZXyBtF9ZgLROXaaXO5p60XH5hJA,1493
357
358
  truefoundry/workflow/container_task.py,sha256=8arieePsX4__OnG337hOtCiNgJwtKJJCsZcmFmCBJtk,402
358
359
  truefoundry/workflow/map_task.py,sha256=2m3qGXQ90k9LdS45q8dqCCECc3qr8t2m_LMCVd1mZ7g,1737
359
360
  truefoundry/workflow/python_task.py,sha256=SRXRLC4vdBqGjhkwuaY39LEWN6iPCpJAuW17URRdWTY,1128
361
+ truefoundry/workflow/task.py,sha256=34m55mALXx6ko9o5HkK6FDtMajdvJzBhOsHwDM2RcBA,1779
362
+ truefoundry/workflow/workflow.py,sha256=WaTqUjhwfAXDWu4E5ehuwAxrCbDJkoAf1oWmR2E9Qy0,4575
360
363
  truefoundry/workflow/remote_filesystem/__init__.py,sha256=LQ95ViEjJ7Ts4JcCGOxMPs7NZmQdZ4bTiq6qXtsjUhE,206
361
364
  truefoundry/workflow/remote_filesystem/logger.py,sha256=em2l7D6sw7xTLDP0kQSLpgfRRCLpN14Qw85TN7ujQcE,1022
362
365
  truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py,sha256=xcT0wQmQlgzcj0nP3tJopyFSVWT1uv3nhiTIuwfXYeg,12342
363
366
  truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py,sha256=nSGPZu0Gyd_jz0KsEE-7w_BmnTD8CVF1S8cUJoxaCbc,13305
364
- truefoundry/workflow/task.py,sha256=34m55mALXx6ko9o5HkK6FDtMajdvJzBhOsHwDM2RcBA,1779
365
- truefoundry/workflow/workflow.py,sha256=WaTqUjhwfAXDWu4E5ehuwAxrCbDJkoAf1oWmR2E9Qy0,4575
366
- truefoundry-0.5.8rc3.dist-info/METADATA,sha256=jWpi5FBYbnjWyjtakUC0pIyFydEUPuqSGitw0-VpCns,2887
367
- truefoundry-0.5.8rc3.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
368
- truefoundry-0.5.8rc3.dist-info/entry_points.txt,sha256=TXvUxQkI6zmqJuycPsyxEIMr3oqfDjgrWj0m_9X12x4,95
369
- truefoundry-0.5.8rc3.dist-info/RECORD,,
367
+ truefoundry-0.5.8rc4.dist-info/METADATA,sha256=FmamDp6h0WeTwzoj2Nt1uhx8K6jiacb-foS695wCBOA,2523
368
+ truefoundry-0.5.8rc4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
369
+ truefoundry-0.5.8rc4.dist-info/entry_points.txt,sha256=xVjn7RMN-MW2-9f7YU-bBdlZSvvrwzhpX1zmmRmsNPU,98
370
+ truefoundry-0.5.8rc4.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.0.1
2
+ Generator: hatchling 1.27.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ tfy = truefoundry.cli.__main__:main
3
+ truefoundry = truefoundry.cli.__main__:main
@@ -1,79 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: truefoundry
3
- Version: 0.5.8rc3
4
- Summary: TrueFoundry CLI
5
- Author: Abhishek Choudhary
6
- Author-email: abhishek@truefoundry.com
7
- Requires-Python: >=3.8.1,<3.13
8
- Classifier: Programming Language :: Python :: 3
9
- Classifier: Programming Language :: Python :: 3.9
10
- Classifier: Programming Language :: Python :: 3.10
11
- Classifier: Programming Language :: Python :: 3.11
12
- Classifier: Programming Language :: Python :: 3.12
13
- Provides-Extra: workflow
14
- Requires-Dist: GitPython (>=3.1.43,<4.0.0)
15
- Requires-Dist: Mako (>=1.1.6,<2.0.0)
16
- Requires-Dist: PyJWT (>=2.0.0,<3.0.0)
17
- Requires-Dist: PyYAML (>=6.0.0,<7.0.0)
18
- Requires-Dist: aenum (>=3.0.0,<4.0.0)
19
- Requires-Dist: click (>=7.0.0,<9.0.0)
20
- Requires-Dist: coolname (>=1.1.0,<2.0.0)
21
- Requires-Dist: docker (>=6.1.2,<8.0.0)
22
- Requires-Dist: filelock (>=3.8.0,<4.0.0)
23
- Requires-Dist: flytekit (==1.13.13) ; extra == "workflow"
24
- Requires-Dist: gitignorefile (>=1.1.2,<2.0.0)
25
- Requires-Dist: importlib-metadata (>=4.11.3,<9.0.0)
26
- Requires-Dist: importlib-resources (>=5.2.0,<7.0.0)
27
- Requires-Dist: numpy (>=1.23.0,<2.0.0) ; python_version < "3.12"
28
- Requires-Dist: numpy (>=1.26.0,<2.0.0) ; python_version >= "3.12"
29
- Requires-Dist: openai (>=1.16.2,<2.0.0)
30
- Requires-Dist: packaging (>=20.0,<25.0)
31
- Requires-Dist: pydantic (>=1.8.2,<3.0.0)
32
- Requires-Dist: pygments (>=2.12.0,<3.0.0)
33
- Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
34
- Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
35
- Requires-Dist: python-socketio[client] (>=5.5.2,<6.0.0)
36
- Requires-Dist: questionary (>=1.10.0,<2.0.0)
37
- Requires-Dist: requests (>=2.18.0,<3.0.0)
38
- Requires-Dist: requirements-parser (>=0.11.0,<0.12.0)
39
- Requires-Dist: rich (>=13.7.1,<14.0.0)
40
- Requires-Dist: rich-click (>=1.2.1,<2.0.0)
41
- Requires-Dist: scipy (>=1.12.0,<2.0.0) ; python_version >= "3.12"
42
- Requires-Dist: scipy (>=1.5.0,<2.0.0) ; python_version < "3.12"
43
- Requires-Dist: tqdm (>=4.0.0,<5.0.0)
44
- Requires-Dist: typing-extensions (>=4.0)
45
- Requires-Dist: urllib3 (>=1.26.18,<3)
46
- Requires-Dist: yq (>=3.1.0,<4.0.0)
47
- Description-Content-Type: text/markdown
48
-
49
- # TrueFoundry
50
-
51
- TrueFoundry library to help you interact with the platform programmatically by
52
-
53
- - Interacting with the deployments side of TrueFoundry, enabling you to manage workspaces, deployments, applications, and view logs.
54
- - Providing experiment tracking capabilities, allowing you to track ML experiments and interact with ML repositories within TrueFoundry.
55
-
56
- You can access the health of your service, monitoring links, deployed endpoints and track metadata and artifacts by logging on to TrueFoundry's dashboard.
57
-
58
- ## Installation
59
-
60
- To install the `TrueFoundry CLI`, you can use pip:
61
-
62
- ```bash
63
- pip install truefoundry
64
- ```
65
-
66
- To install the `TrueFoundry CLI` with Workflow deployment features, you can use pip:
67
-
68
- ```bash
69
- pip install truefoundry[workflow]
70
- ```
71
-
72
- ## Examples
73
-
74
- https://github.com/truefoundry/getting-started-examples
75
-
76
- ## Documentation
77
-
78
- https://docs.truefoundry.com/
79
-
@@ -1,4 +0,0 @@
1
- [console_scripts]
2
- tfy=truefoundry.cli.__main__:main
3
- truefoundry=truefoundry.cli.__main__:main
4
-