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.
- truefoundry/deploy/auto_gen/models.py +11 -3
- truefoundry/deploy/builder/docker_service.py +1 -1
- truefoundry/deploy/cli/commands/delete_command.py +40 -8
- truefoundry/deploy/lib/clients/servicefoundry_client.py +11 -1
- truefoundry/deploy/lib/dao/delete.py +88 -0
- truefoundry/deploy/lib/messages.py +1 -0
- truefoundry/deploy/lib/model/entity.py +5 -0
- truefoundry/deploy/lib/session.py +1 -2
- truefoundry/deploy/python_deploy_codegen.py +1 -1
- truefoundry/deploy/v2/lib/deploy.py +3 -3
- truefoundry/ml/autogen/client/api/health_api.py +1 -2
- truefoundry/ml/autogen/client/exceptions.py +1 -1
- truefoundry/ml/autogen/models/schema.py +1 -1
- truefoundry/ml/log_types/plot.py +2 -2
- truefoundry/ml/mlfoundry_run.py +1 -1
- truefoundry-0.5.8rc4.dist-info/METADATA +72 -0
- {truefoundry-0.5.8rc3.dist-info → truefoundry-0.5.8rc4.dist-info}/RECORD +54 -53
- {truefoundry-0.5.8rc3.dist-info → truefoundry-0.5.8rc4.dist-info}/WHEEL +1 -1
- truefoundry-0.5.8rc4.dist-info/entry_points.txt +3 -0
- truefoundry-0.5.8rc3.dist-info/METADATA +0 -79
- truefoundry-0.5.8rc3.dist-info/entry_points.txt +0 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: application.json
|
|
3
|
-
# timestamp: 2025-
|
|
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=
|
|
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=
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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}[/]"""
|
|
@@ -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
|
|
|
@@ -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,
|
|
218
|
-
type: {getattr(component,
|
|
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,
|
|
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})\
|
|
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 `{
|
|
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():
|
truefoundry/ml/log_types/plot.py
CHANGED
|
@@ -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,
|
truefoundry/ml/mlfoundry_run.py
CHANGED
|
@@ -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/
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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/
|
|
365
|
-
truefoundry/
|
|
366
|
-
truefoundry-0.5.
|
|
367
|
-
truefoundry-0.5.
|
|
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,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
|
-
|