truefoundry 0.5.3rc1__py3-none-any.whl → 0.5.3rc3__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/autodeploy/agents/base.py +1 -1
- truefoundry/autodeploy/agents/developer.py +1 -1
- truefoundry/autodeploy/agents/project_identifier.py +1 -1
- truefoundry/autodeploy/agents/tester.py +1 -1
- truefoundry/autodeploy/tools/base.py +2 -1
- truefoundry/autodeploy/tools/commit.py +1 -1
- truefoundry/autodeploy/tools/docker_build.py +1 -1
- truefoundry/autodeploy/tools/docker_run.py +1 -1
- truefoundry/autodeploy/tools/file_type_counts.py +1 -1
- truefoundry/autodeploy/tools/list_files.py +1 -1
- truefoundry/autodeploy/tools/read_file.py +1 -2
- truefoundry/autodeploy/tools/send_request.py +1 -1
- truefoundry/autodeploy/tools/write_file.py +1 -1
- truefoundry/cli/__main__.py +4 -0
- truefoundry/cli/commands/pat.py +24 -0
- truefoundry/deploy/lib/clients/servicefoundry_client.py +24 -1
- truefoundry/gateway/__init__.py +1 -0
- truefoundry/gateway/cli/cli.py +30 -0
- truefoundry/gateway/lib/entities.py +28 -0
- truefoundry/gateway/lib/models.py +29 -0
- truefoundry/ml/autogen/client/__init__.py +3 -0
- truefoundry/ml/autogen/client/api/mlfoundry_artifacts_api.py +147 -0
- truefoundry/ml/autogen/client/models/__init__.py +3 -0
- truefoundry/ml/autogen/client/models/artifact_version_manifest.py +7 -1
- truefoundry/ml/autogen/client/models/get_artifact_tags_response_dto.py +65 -0
- truefoundry/ml/autogen/client/models/model_version_manifest.py +7 -0
- truefoundry/ml/autogen/client_README.md +2 -0
- truefoundry/ml/autogen/entities/artifacts.py +12 -1
- truefoundry/ml/log_types/artifacts/artifact.py +36 -4
- truefoundry/ml/log_types/artifacts/model.py +49 -9
- truefoundry/ml/model_framework.py +3 -2
- {truefoundry-0.5.3rc1.dist-info → truefoundry-0.5.3rc3.dist-info}/METADATA +1 -1
- {truefoundry-0.5.3rc1.dist-info → truefoundry-0.5.3rc3.dist-info}/RECORD +35 -29
- {truefoundry-0.5.3rc1.dist-info → truefoundry-0.5.3rc3.dist-info}/WHEEL +0 -0
- {truefoundry-0.5.3rc1.dist-info → truefoundry-0.5.3rc3.dist-info}/entry_points.txt +0 -0
|
@@ -17,12 +17,12 @@ from openai.types.chat.chat_completion_user_message_param import (
|
|
|
17
17
|
ChatCompletionUserMessageParam,
|
|
18
18
|
)
|
|
19
19
|
from openai.types.shared_params.function_definition import FunctionDefinition
|
|
20
|
-
from pydantic import BaseModel, ValidationError
|
|
21
20
|
|
|
22
21
|
from truefoundry.autodeploy.constants import AUTODEPLOY_MODEL_NAME
|
|
23
22
|
from truefoundry.autodeploy.logger import logger
|
|
24
23
|
from truefoundry.autodeploy.tools import Event, RequestEvent, Tool
|
|
25
24
|
from truefoundry.autodeploy.utils.pydantic_compat import model_dump, model_json_schema
|
|
25
|
+
from truefoundry.pydantic_v1 import BaseModel, ValidationError
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
def llm(
|
|
@@ -4,7 +4,6 @@ from typing import Dict, Optional
|
|
|
4
4
|
|
|
5
5
|
import docker
|
|
6
6
|
from openai import OpenAI
|
|
7
|
-
from pydantic import Field
|
|
8
7
|
|
|
9
8
|
from truefoundry.autodeploy.agents.base import Agent
|
|
10
9
|
from truefoundry.autodeploy.agents.project_identifier import ProjectIdentifier
|
|
@@ -18,6 +17,7 @@ from truefoundry.autodeploy.tools import (
|
|
|
18
17
|
RequestEvent,
|
|
19
18
|
ResponseEvent,
|
|
20
19
|
)
|
|
20
|
+
from truefoundry.pydantic_v1 import Field
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class Developer(Agent):
|
|
@@ -4,7 +4,6 @@ import enum
|
|
|
4
4
|
from typing import List, Optional
|
|
5
5
|
|
|
6
6
|
from openai import OpenAI
|
|
7
|
-
from pydantic import Field
|
|
8
7
|
from rich.console import Console
|
|
9
8
|
|
|
10
9
|
from truefoundry.autodeploy.agents.base import Agent
|
|
@@ -16,6 +15,7 @@ from truefoundry.autodeploy.tools import (
|
|
|
16
15
|
RequestEvent,
|
|
17
16
|
ResponseEvent,
|
|
18
17
|
)
|
|
18
|
+
from truefoundry.pydantic_v1 import Field
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class ComponentType(str, enum.Enum):
|
|
@@ -4,7 +4,6 @@ from typing import Dict, Optional
|
|
|
4
4
|
|
|
5
5
|
import docker
|
|
6
6
|
from openai import OpenAI
|
|
7
|
-
from pydantic import Field
|
|
8
7
|
from rich.console import Console
|
|
9
8
|
|
|
10
9
|
from truefoundry.autodeploy.agents.base import Agent
|
|
@@ -16,6 +15,7 @@ from truefoundry.autodeploy.tools import (
|
|
|
16
15
|
ResponseEvent,
|
|
17
16
|
SendRequest,
|
|
18
17
|
)
|
|
18
|
+
from truefoundry.pydantic_v1 import Field
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class Tester(Agent):
|
|
@@ -2,9 +2,10 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import Any, ClassVar, Generator, Optional, Protocol, Type
|
|
4
4
|
|
|
5
|
-
from pydantic import BaseModel
|
|
6
5
|
from rich.console import Console
|
|
7
6
|
|
|
7
|
+
from truefoundry.pydantic_v1 import BaseModel
|
|
8
|
+
|
|
8
9
|
|
|
9
10
|
class Event(BaseModel):
|
|
10
11
|
def render(self, _: Console) -> Optional[Any]: ...
|
|
@@ -4,7 +4,6 @@ import os
|
|
|
4
4
|
import tempfile
|
|
5
5
|
from typing import Any, Generator, Optional
|
|
6
6
|
|
|
7
|
-
from pydantic import Field
|
|
8
7
|
from rich.console import Console
|
|
9
8
|
from rich.padding import Padding
|
|
10
9
|
from rich.prompt import Confirm
|
|
@@ -20,6 +19,7 @@ from truefoundry.autodeploy.tools.base import (
|
|
|
20
19
|
from truefoundry.autodeploy.utils.client import get_git_binary
|
|
21
20
|
from truefoundry.autodeploy.utils.diff import LLMDiff
|
|
22
21
|
from truefoundry.autodeploy.utils.pydantic_compat import model_dump
|
|
22
|
+
from truefoundry.pydantic_v1 import Field
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
class CommitConfirmation(Event):
|
|
@@ -6,7 +6,6 @@ from typing import Any, Generator, Iterable, Optional
|
|
|
6
6
|
|
|
7
7
|
import docker
|
|
8
8
|
from docker.models.images import BuildError, json_stream
|
|
9
|
-
from pydantic import Field
|
|
10
9
|
from rich.console import Console, ConsoleOptions, RenderResult
|
|
11
10
|
from rich.padding import Padding
|
|
12
11
|
from rich.text import Text
|
|
@@ -19,6 +18,7 @@ from truefoundry.autodeploy.tools.base import (
|
|
|
19
18
|
Rule,
|
|
20
19
|
Tool,
|
|
21
20
|
)
|
|
21
|
+
from truefoundry.pydantic_v1 import Field
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
class DockerBuildLog(Event):
|
|
@@ -5,7 +5,6 @@ from typing import Any, Dict, Generator, List, Optional
|
|
|
5
5
|
|
|
6
6
|
import docker
|
|
7
7
|
import requests
|
|
8
|
-
from pydantic import Field
|
|
9
8
|
from rich.console import Console, ConsoleOptions, RenderResult
|
|
10
9
|
from rich.padding import Padding
|
|
11
10
|
from rich.text import Text
|
|
@@ -18,6 +17,7 @@ from truefoundry.autodeploy.tools.base import (
|
|
|
18
17
|
Rule,
|
|
19
18
|
Tool,
|
|
20
19
|
)
|
|
20
|
+
from truefoundry.pydantic_v1 import Field
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class DockerRunLog(Event):
|
|
@@ -5,7 +5,6 @@ from collections import Counter
|
|
|
5
5
|
from typing import Any, Dict, Generator
|
|
6
6
|
|
|
7
7
|
import gitignorefile
|
|
8
|
-
from pydantic import Field
|
|
9
8
|
from rich.console import Console
|
|
10
9
|
from rich.table import Table
|
|
11
10
|
|
|
@@ -17,6 +16,7 @@ from truefoundry.autodeploy.tools.base import (
|
|
|
17
16
|
Rule,
|
|
18
17
|
Tool,
|
|
19
18
|
)
|
|
19
|
+
from truefoundry.pydantic_v1 import Field
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class ShowFileCount(Event):
|
|
@@ -5,7 +5,6 @@ from fnmatch import fnmatch
|
|
|
5
5
|
from typing import Any, Generator, List, Optional
|
|
6
6
|
|
|
7
7
|
import gitignorefile
|
|
8
|
-
from pydantic import Field
|
|
9
8
|
|
|
10
9
|
from truefoundry.autodeploy.tools.base import (
|
|
11
10
|
Event,
|
|
@@ -15,6 +14,7 @@ from truefoundry.autodeploy.tools.base import (
|
|
|
15
14
|
Rule,
|
|
16
15
|
Tool,
|
|
17
16
|
)
|
|
17
|
+
from truefoundry.pydantic_v1 import Field
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
class ListFiles(Tool):
|
|
@@ -3,8 +3,6 @@ from __future__ import annotations
|
|
|
3
3
|
import os
|
|
4
4
|
from typing import Any, Generator, List, Optional
|
|
5
5
|
|
|
6
|
-
from pydantic import BaseModel, Field
|
|
7
|
-
|
|
8
6
|
from truefoundry.autodeploy.constants import MAX_FILE_SIZE_READ
|
|
9
7
|
from truefoundry.autodeploy.tools.base import (
|
|
10
8
|
Event,
|
|
@@ -14,6 +12,7 @@ from truefoundry.autodeploy.tools.base import (
|
|
|
14
12
|
Rule,
|
|
15
13
|
Tool,
|
|
16
14
|
)
|
|
15
|
+
from truefoundry.pydantic_v1 import BaseModel, Field
|
|
17
16
|
|
|
18
17
|
|
|
19
18
|
class Line(BaseModel):
|
|
@@ -3,7 +3,6 @@ from __future__ import annotations
|
|
|
3
3
|
from typing import Any, Generator, Optional
|
|
4
4
|
|
|
5
5
|
import requests
|
|
6
|
-
from pydantic import Field
|
|
7
6
|
|
|
8
7
|
from truefoundry.autodeploy.tools.base import (
|
|
9
8
|
Event,
|
|
@@ -13,6 +12,7 @@ from truefoundry.autodeploy.tools.base import (
|
|
|
13
12
|
Rule,
|
|
14
13
|
Tool,
|
|
15
14
|
)
|
|
15
|
+
from truefoundry.pydantic_v1 import Field
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class SendRequest(Tool):
|
|
@@ -4,12 +4,12 @@ from __future__ import annotations
|
|
|
4
4
|
import os
|
|
5
5
|
from typing import Optional
|
|
6
6
|
|
|
7
|
-
from pydantic import BaseModel, Field
|
|
8
7
|
from rich.console import Console
|
|
9
8
|
from rich.prompt import Confirm
|
|
10
9
|
|
|
11
10
|
from truefoundry.autodeploy.tools.base import Tool
|
|
12
11
|
from truefoundry.autodeploy.utils.diff import Diff
|
|
12
|
+
from truefoundry.pydantic_v1 import BaseModel, Field
|
|
13
13
|
|
|
14
14
|
INTERACTIVE_SESSION = True
|
|
15
15
|
|
truefoundry/cli/__main__.py
CHANGED
|
@@ -4,6 +4,7 @@ import sys
|
|
|
4
4
|
import rich_click as click
|
|
5
5
|
|
|
6
6
|
from truefoundry import logger
|
|
7
|
+
from truefoundry.cli.commands.pat import get_generate_pat_command
|
|
7
8
|
from truefoundry.cli.config import CliConfig
|
|
8
9
|
from truefoundry.cli.const import GROUP_CLS
|
|
9
10
|
from truefoundry.cli.util import setup_rich_click
|
|
@@ -21,6 +22,7 @@ from truefoundry.deploy.cli.commands import (
|
|
|
21
22
|
get_terminate_command,
|
|
22
23
|
get_trigger_command,
|
|
23
24
|
)
|
|
25
|
+
from truefoundry.gateway.cli.cli import get_gateway_cli
|
|
24
26
|
from truefoundry.ml.cli.cli import get_ml_cli
|
|
25
27
|
from truefoundry.version import __version__
|
|
26
28
|
|
|
@@ -88,6 +90,8 @@ def create_truefoundry_cli() -> click.MultiCommand:
|
|
|
88
90
|
cli.add_command(get_trigger_command())
|
|
89
91
|
cli.add_command(get_terminate_command())
|
|
90
92
|
cli.add_command(get_ml_cli())
|
|
93
|
+
cli.add_command(get_gateway_cli())
|
|
94
|
+
cli.add_command(get_generate_pat_command())
|
|
91
95
|
|
|
92
96
|
if not (sys.platform.startswith("win32") or sys.platform.startswith("cygwin")):
|
|
93
97
|
cli.add_command(get_patch_command())
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import click
|
|
2
|
+
|
|
3
|
+
from truefoundry.cli.console import console
|
|
4
|
+
from truefoundry.cli.const import COMMAND_CLS
|
|
5
|
+
from truefoundry.deploy.lib.clients.servicefoundry_client import (
|
|
6
|
+
ServiceFoundryServiceClient,
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@click.command(cls=COMMAND_CLS, name="generate-api-key")
|
|
11
|
+
@click.option(
|
|
12
|
+
"--name",
|
|
13
|
+
required=True,
|
|
14
|
+
help="Name for the API key",
|
|
15
|
+
)
|
|
16
|
+
def generate_pat(name: str):
|
|
17
|
+
"""Generate a new Personal Access Token with specified name"""
|
|
18
|
+
client = ServiceFoundryServiceClient()
|
|
19
|
+
pat = client.create_pat(name)
|
|
20
|
+
console.print(pat)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def get_generate_pat_command():
|
|
24
|
+
return generate_pat
|
|
@@ -4,7 +4,7 @@ import json
|
|
|
4
4
|
import os
|
|
5
5
|
import time
|
|
6
6
|
from datetime import datetime, timezone
|
|
7
|
-
from typing import TYPE_CHECKING, Any, Dict, List, Optional
|
|
7
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Literal, Optional
|
|
8
8
|
from urllib.parse import urljoin
|
|
9
9
|
|
|
10
10
|
import requests
|
|
@@ -43,6 +43,7 @@ from truefoundry.deploy.v2.lib.models import (
|
|
|
43
43
|
BuildResponse,
|
|
44
44
|
DeploymentFqnResponse,
|
|
45
45
|
)
|
|
46
|
+
from truefoundry.gateway.lib.entities import ProviderModels
|
|
46
47
|
from truefoundry.logger import logger
|
|
47
48
|
from truefoundry.pydantic_v1 import parse_obj_as
|
|
48
49
|
|
|
@@ -708,3 +709,25 @@ class ServiceFoundryServiceClient(BaseServiceFoundryServiceClient):
|
|
|
708
709
|
)
|
|
709
710
|
response_data = request_handling(response)
|
|
710
711
|
return response_data
|
|
712
|
+
|
|
713
|
+
def get_gateway_models(
|
|
714
|
+
self, model_type: Optional[Literal["chat", "completion", "embedding"]] = None
|
|
715
|
+
) -> ProviderModels:
|
|
716
|
+
url = f"{self._api_server_url}/{VERSION_PREFIX}/llm-gateway/model/enabled"
|
|
717
|
+
params = {}
|
|
718
|
+
if model_type:
|
|
719
|
+
params["modelType"] = model_type
|
|
720
|
+
response = session_with_retries().get(
|
|
721
|
+
url, headers=self._get_header(), params=params
|
|
722
|
+
)
|
|
723
|
+
response = request_handling(response)
|
|
724
|
+
return parse_obj_as(ProviderModels, response)
|
|
725
|
+
|
|
726
|
+
def create_pat(self, name: str):
|
|
727
|
+
url = f"{self._api_server_url}/{VERSION_PREFIX}/service-account/pat"
|
|
728
|
+
body = {"name": name}
|
|
729
|
+
response = session_with_retries().post(
|
|
730
|
+
url, headers=self._get_header(), json=body
|
|
731
|
+
)
|
|
732
|
+
response = request_handling(response)
|
|
733
|
+
return response
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Gateway module for Truefoundry CLI"""
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import click
|
|
2
|
+
|
|
3
|
+
from truefoundry.cli.const import COMMAND_CLS, GROUP_CLS
|
|
4
|
+
from truefoundry.cli.display_util import print_entity_list
|
|
5
|
+
from truefoundry.gateway.lib.models import list_models
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def get_gateway_cli():
|
|
9
|
+
@click.group(cls=GROUP_CLS, help="Commands to interact with TrueFoundry Gateway")
|
|
10
|
+
def gateway(): ...
|
|
11
|
+
|
|
12
|
+
@gateway.group("list", cls=GROUP_CLS, help="List gateway resources")
|
|
13
|
+
def list_group():
|
|
14
|
+
"""List gateway resources"""
|
|
15
|
+
pass
|
|
16
|
+
|
|
17
|
+
@list_group.command(
|
|
18
|
+
"models", cls=COMMAND_CLS, help="List available models filtered by type"
|
|
19
|
+
)
|
|
20
|
+
@click.option(
|
|
21
|
+
"--type",
|
|
22
|
+
"model_type",
|
|
23
|
+
type=click.Choice(["chat", "completion", "embedding"]),
|
|
24
|
+
help="Filter models by type",
|
|
25
|
+
)
|
|
26
|
+
def list_models_cli(model_type: str):
|
|
27
|
+
enabled_models = list_models(model_type)
|
|
28
|
+
print_entity_list("Models", enabled_models)
|
|
29
|
+
|
|
30
|
+
return gateway
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Optional, Union
|
|
2
|
+
|
|
3
|
+
from truefoundry.pydantic_v1 import BaseModel
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GatewayModel(BaseModel):
|
|
7
|
+
id: str
|
|
8
|
+
name: str
|
|
9
|
+
provider: str
|
|
10
|
+
model_id: Optional[str]
|
|
11
|
+
provider_account_name: str
|
|
12
|
+
tfy_application_id: Optional[str] = None
|
|
13
|
+
enabled: bool = True
|
|
14
|
+
types: Union[str, List[str]] = ""
|
|
15
|
+
created_by: str
|
|
16
|
+
tenant_name: str
|
|
17
|
+
model_fqn: str
|
|
18
|
+
|
|
19
|
+
def list_row_data(self) -> Dict[str, Any]:
|
|
20
|
+
return {
|
|
21
|
+
"model_id": self.model_fqn,
|
|
22
|
+
"provider": self.provider,
|
|
23
|
+
"provider_model_id": self.model_id,
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class ProviderModels(BaseModel):
|
|
28
|
+
__root__: Dict[str, Dict[str, List[GatewayModel]]]
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
from typing import List, Literal, Optional
|
|
2
|
+
|
|
3
|
+
from truefoundry.deploy.lib.clients.servicefoundry_client import (
|
|
4
|
+
ServiceFoundryServiceClient,
|
|
5
|
+
)
|
|
6
|
+
from truefoundry.gateway.lib.entities import GatewayModel
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def list_models(
|
|
10
|
+
model_type: Optional[Literal["chat", "completion", "embedding"]] = None,
|
|
11
|
+
) -> List[GatewayModel]:
|
|
12
|
+
"""List available models filtered by type
|
|
13
|
+
|
|
14
|
+
Args:
|
|
15
|
+
model_type (Optional[str], optional): Filter models by type ('chat' or 'completion'). Defaults to None.
|
|
16
|
+
|
|
17
|
+
Returns:
|
|
18
|
+
List: List of enabled models
|
|
19
|
+
"""
|
|
20
|
+
client = ServiceFoundryServiceClient()
|
|
21
|
+
models = client.get_gateway_models(model_type)
|
|
22
|
+
|
|
23
|
+
enabled_models = []
|
|
24
|
+
for _, accounts in models.__root__.items():
|
|
25
|
+
for _, model_list in accounts.items():
|
|
26
|
+
for model in model_list:
|
|
27
|
+
enabled_models.append(model)
|
|
28
|
+
|
|
29
|
+
return enabled_models
|
|
@@ -184,6 +184,9 @@ from truefoundry.ml.autogen.client.models.finalize_artifact_version_request_dto
|
|
|
184
184
|
FinalizeArtifactVersionRequestDto,
|
|
185
185
|
)
|
|
186
186
|
from truefoundry.ml.autogen.client.models.framework import Framework
|
|
187
|
+
from truefoundry.ml.autogen.client.models.get_artifact_tags_response_dto import (
|
|
188
|
+
GetArtifactTagsResponseDto,
|
|
189
|
+
)
|
|
187
190
|
from truefoundry.ml.autogen.client.models.get_experiment_response_dto import (
|
|
188
191
|
GetExperimentResponseDto,
|
|
189
192
|
)
|
|
@@ -79,6 +79,9 @@ from truefoundry.ml.autogen.client.models.export_deployment_files_request_dto im
|
|
|
79
79
|
from truefoundry.ml.autogen.client.models.finalize_artifact_version_request_dto import (
|
|
80
80
|
FinalizeArtifactVersionRequestDto,
|
|
81
81
|
)
|
|
82
|
+
from truefoundry.ml.autogen.client.models.get_artifact_tags_response_dto import (
|
|
83
|
+
GetArtifactTagsResponseDto,
|
|
84
|
+
)
|
|
82
85
|
from truefoundry.ml.autogen.client.models.get_signed_url_for_dataset_write_request_dto import (
|
|
83
86
|
GetSignedURLForDatasetWriteRequestDto,
|
|
84
87
|
)
|
|
@@ -5338,6 +5341,150 @@ class MlfoundryArtifactsApi:
|
|
|
5338
5341
|
_request_auth=_params.get("_request_auth"),
|
|
5339
5342
|
)
|
|
5340
5343
|
|
|
5344
|
+
@validate_arguments
|
|
5345
|
+
def get_tags_for_artifact_get(
|
|
5346
|
+
self, artifact_id: StrictStr, **kwargs
|
|
5347
|
+
) -> GetArtifactTagsResponseDto: # noqa: E501
|
|
5348
|
+
"""Get Tags For Artifact # noqa: E501
|
|
5349
|
+
|
|
5350
|
+
This method makes a synchronous HTTP request by default. To make an
|
|
5351
|
+
asynchronous HTTP request, please pass async_req=True
|
|
5352
|
+
|
|
5353
|
+
>>> thread = api.get_tags_for_artifact_get(artifact_id, async_req=True)
|
|
5354
|
+
>>> result = thread.get()
|
|
5355
|
+
|
|
5356
|
+
:param artifact_id: (required)
|
|
5357
|
+
:type artifact_id: str
|
|
5358
|
+
:param async_req: Whether to execute the request asynchronously.
|
|
5359
|
+
:type async_req: bool, optional
|
|
5360
|
+
:param _request_timeout: timeout setting for this request.
|
|
5361
|
+
If one number provided, it will be total request
|
|
5362
|
+
timeout. It can also be a pair (tuple) of
|
|
5363
|
+
(connection, read) timeouts.
|
|
5364
|
+
:return: Returns the result object.
|
|
5365
|
+
If the method is called asynchronously,
|
|
5366
|
+
returns the request thread.
|
|
5367
|
+
:rtype: GetArtifactTagsResponseDto
|
|
5368
|
+
"""
|
|
5369
|
+
kwargs["_return_http_data_only"] = True
|
|
5370
|
+
if "_preload_content" in kwargs:
|
|
5371
|
+
message = "Error! Please call the get_tags_for_artifact_get_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
|
|
5372
|
+
raise ValueError(message)
|
|
5373
|
+
return self.get_tags_for_artifact_get_with_http_info(artifact_id, **kwargs) # noqa: E501
|
|
5374
|
+
|
|
5375
|
+
@validate_arguments
|
|
5376
|
+
def get_tags_for_artifact_get_with_http_info(
|
|
5377
|
+
self, artifact_id: StrictStr, **kwargs
|
|
5378
|
+
) -> ApiResponse: # noqa: E501
|
|
5379
|
+
"""Get Tags For Artifact # noqa: E501
|
|
5380
|
+
|
|
5381
|
+
This method makes a synchronous HTTP request by default. To make an
|
|
5382
|
+
asynchronous HTTP request, please pass async_req=True
|
|
5383
|
+
|
|
5384
|
+
>>> thread = api.get_tags_for_artifact_get_with_http_info(artifact_id, async_req=True)
|
|
5385
|
+
>>> result = thread.get()
|
|
5386
|
+
|
|
5387
|
+
:param artifact_id: (required)
|
|
5388
|
+
:type artifact_id: str
|
|
5389
|
+
:param async_req: Whether to execute the request asynchronously.
|
|
5390
|
+
:type async_req: bool, optional
|
|
5391
|
+
:param _preload_content: if False, the ApiResponse.data will
|
|
5392
|
+
be set to none and raw_data will store the
|
|
5393
|
+
HTTP response body without reading/decoding.
|
|
5394
|
+
Default is True.
|
|
5395
|
+
:type _preload_content: bool, optional
|
|
5396
|
+
:param _return_http_data_only: response data instead of ApiResponse
|
|
5397
|
+
object with status code, headers, etc
|
|
5398
|
+
:type _return_http_data_only: bool, optional
|
|
5399
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
5400
|
+
number provided, it will be total request
|
|
5401
|
+
timeout. It can also be a pair (tuple) of
|
|
5402
|
+
(connection, read) timeouts.
|
|
5403
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
5404
|
+
request; this effectively ignores the authentication
|
|
5405
|
+
in the spec for a single request.
|
|
5406
|
+
:type _request_auth: dict, optional
|
|
5407
|
+
:type _content_type: string, optional: force content-type for the request
|
|
5408
|
+
:return: Returns the result object.
|
|
5409
|
+
If the method is called asynchronously,
|
|
5410
|
+
returns the request thread.
|
|
5411
|
+
:rtype: tuple(GetArtifactTagsResponseDto, status_code(int), headers(HTTPHeaderDict))
|
|
5412
|
+
"""
|
|
5413
|
+
|
|
5414
|
+
_params = locals()
|
|
5415
|
+
|
|
5416
|
+
_all_params = ["artifact_id"]
|
|
5417
|
+
_all_params.extend(
|
|
5418
|
+
[
|
|
5419
|
+
"async_req",
|
|
5420
|
+
"_return_http_data_only",
|
|
5421
|
+
"_preload_content",
|
|
5422
|
+
"_request_timeout",
|
|
5423
|
+
"_request_auth",
|
|
5424
|
+
"_content_type",
|
|
5425
|
+
"_headers",
|
|
5426
|
+
]
|
|
5427
|
+
)
|
|
5428
|
+
|
|
5429
|
+
# validate the arguments
|
|
5430
|
+
for _key, _val in _params["kwargs"].items():
|
|
5431
|
+
if _key not in _all_params:
|
|
5432
|
+
raise ApiTypeError(
|
|
5433
|
+
"Got an unexpected keyword argument '%s'"
|
|
5434
|
+
" to method get_tags_for_artifact_get" % _key
|
|
5435
|
+
)
|
|
5436
|
+
_params[_key] = _val
|
|
5437
|
+
del _params["kwargs"]
|
|
5438
|
+
|
|
5439
|
+
_collection_formats = {}
|
|
5440
|
+
|
|
5441
|
+
# process the path parameters
|
|
5442
|
+
_path_params = {}
|
|
5443
|
+
|
|
5444
|
+
# process the query parameters
|
|
5445
|
+
_query_params = []
|
|
5446
|
+
if _params.get("artifact_id") is not None: # noqa: E501
|
|
5447
|
+
_query_params.append(("artifact_id", _params["artifact_id"]))
|
|
5448
|
+
|
|
5449
|
+
# process the header parameters
|
|
5450
|
+
_header_params = dict(_params.get("_headers", {}))
|
|
5451
|
+
# process the form parameters
|
|
5452
|
+
_form_params = []
|
|
5453
|
+
_files = {}
|
|
5454
|
+
# process the body parameter
|
|
5455
|
+
_body_params = None
|
|
5456
|
+
# set the HTTP header `Accept`
|
|
5457
|
+
_header_params["Accept"] = self.api_client.select_header_accept(
|
|
5458
|
+
["application/json"]
|
|
5459
|
+
) # noqa: E501
|
|
5460
|
+
|
|
5461
|
+
# authentication setting
|
|
5462
|
+
_auth_settings = ["HTTPBearer", "APIKeyCookie"] # noqa: E501
|
|
5463
|
+
|
|
5464
|
+
_response_types_map = {
|
|
5465
|
+
"200": "GetArtifactTagsResponseDto",
|
|
5466
|
+
"422": "HTTPValidationError",
|
|
5467
|
+
}
|
|
5468
|
+
|
|
5469
|
+
return self.api_client.call_api(
|
|
5470
|
+
"/api/2.0/mlflow/mlfoundry-artifacts/artifacts/get-tags",
|
|
5471
|
+
"GET",
|
|
5472
|
+
_path_params,
|
|
5473
|
+
_query_params,
|
|
5474
|
+
_header_params,
|
|
5475
|
+
body=_body_params,
|
|
5476
|
+
post_params=_form_params,
|
|
5477
|
+
files=_files,
|
|
5478
|
+
response_types_map=_response_types_map,
|
|
5479
|
+
auth_settings=_auth_settings,
|
|
5480
|
+
async_req=_params.get("async_req"),
|
|
5481
|
+
_return_http_data_only=_params.get("_return_http_data_only"), # noqa: E501
|
|
5482
|
+
_preload_content=_params.get("_preload_content", True),
|
|
5483
|
+
_request_timeout=_params.get("_request_timeout"),
|
|
5484
|
+
collection_formats=_collection_formats,
|
|
5485
|
+
_request_auth=_params.get("_request_auth"),
|
|
5486
|
+
)
|
|
5487
|
+
|
|
5341
5488
|
@validate_arguments
|
|
5342
5489
|
def list_artifact_versions_post(
|
|
5343
5490
|
self,
|
|
@@ -155,6 +155,9 @@ from truefoundry.ml.autogen.client.models.finalize_artifact_version_request_dto
|
|
|
155
155
|
FinalizeArtifactVersionRequestDto,
|
|
156
156
|
)
|
|
157
157
|
from truefoundry.ml.autogen.client.models.framework import Framework
|
|
158
|
+
from truefoundry.ml.autogen.client.models.get_artifact_tags_response_dto import (
|
|
159
|
+
GetArtifactTagsResponseDto,
|
|
160
|
+
)
|
|
158
161
|
from truefoundry.ml.autogen.client.models.get_experiment_response_dto import (
|
|
159
162
|
GetExperimentResponseDto,
|
|
160
163
|
)
|
|
@@ -24,6 +24,7 @@ from truefoundry.pydantic_v1 import (
|
|
|
24
24
|
Field,
|
|
25
25
|
StrictStr,
|
|
26
26
|
conint,
|
|
27
|
+
conlist,
|
|
27
28
|
constr,
|
|
28
29
|
validator,
|
|
29
30
|
)
|
|
@@ -42,12 +43,16 @@ class ArtifactVersionManifest(BaseModel):
|
|
|
42
43
|
default=...,
|
|
43
44
|
description="+label=Metadata +docs=Metadata for the artifact or model version +usage=Metadata for the artifact or model version +uiType=JsonInput",
|
|
44
45
|
)
|
|
46
|
+
tags: Optional[conlist(constr(strict=True, max_length=128))] = Field(
|
|
47
|
+
default=None,
|
|
48
|
+
description="+label=Tags +usage=Tags for the artifact or model version +docs=Tags for the artifact or model version",
|
|
49
|
+
)
|
|
45
50
|
type: Optional[StrictStr] = "artifact-version"
|
|
46
51
|
source: Source = Field(...)
|
|
47
52
|
step: Optional[conint(strict=True, ge=0)] = Field(
|
|
48
53
|
default=0, description="+label=Step"
|
|
49
54
|
)
|
|
50
|
-
__properties = ["description", "metadata", "type", "source", "step"]
|
|
55
|
+
__properties = ["description", "metadata", "tags", "type", "source", "step"]
|
|
51
56
|
|
|
52
57
|
@validator("type")
|
|
53
58
|
def type_validate_enum(cls, value):
|
|
@@ -99,6 +104,7 @@ class ArtifactVersionManifest(BaseModel):
|
|
|
99
104
|
{
|
|
100
105
|
"description": obj.get("description"),
|
|
101
106
|
"metadata": obj.get("metadata"),
|
|
107
|
+
"tags": obj.get("tags"),
|
|
102
108
|
"type": obj.get("type")
|
|
103
109
|
if obj.get("type") is not None
|
|
104
110
|
else "artifact-version",
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
FastAPI
|
|
5
|
+
|
|
6
|
+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
|
|
8
|
+
The version of the OpenAPI document: 0.1.0
|
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
10
|
+
|
|
11
|
+
Do not edit the class manually.
|
|
12
|
+
""" # noqa: E501
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import json
|
|
17
|
+
import pprint
|
|
18
|
+
import re # noqa: F401
|
|
19
|
+
|
|
20
|
+
from truefoundry.pydantic_v1 import BaseModel, Field, StrictStr, conlist
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class GetArtifactTagsResponseDto(BaseModel):
|
|
24
|
+
"""
|
|
25
|
+
GetArtifactTagsResponseDto
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
tags: conlist(StrictStr) = Field(...)
|
|
29
|
+
__properties = ["tags"]
|
|
30
|
+
|
|
31
|
+
class Config:
|
|
32
|
+
"""Pydantic configuration"""
|
|
33
|
+
|
|
34
|
+
allow_population_by_field_name = True
|
|
35
|
+
validate_assignment = True
|
|
36
|
+
|
|
37
|
+
def to_str(self) -> str:
|
|
38
|
+
"""Returns the string representation of the model using alias"""
|
|
39
|
+
return pprint.pformat(self.dict(by_alias=True))
|
|
40
|
+
|
|
41
|
+
def to_json(self) -> str:
|
|
42
|
+
"""Returns the JSON representation of the model using alias"""
|
|
43
|
+
return json.dumps(self.to_dict())
|
|
44
|
+
|
|
45
|
+
@classmethod
|
|
46
|
+
def from_json(cls, json_str: str) -> GetArtifactTagsResponseDto:
|
|
47
|
+
"""Create an instance of GetArtifactTagsResponseDto from a JSON string"""
|
|
48
|
+
return cls.from_dict(json.loads(json_str))
|
|
49
|
+
|
|
50
|
+
def to_dict(self):
|
|
51
|
+
"""Returns the dictionary representation of the model using alias"""
|
|
52
|
+
_dict = self.dict(by_alias=True, exclude={}, exclude_none=True)
|
|
53
|
+
return _dict
|
|
54
|
+
|
|
55
|
+
@classmethod
|
|
56
|
+
def from_dict(cls, obj: dict) -> GetArtifactTagsResponseDto:
|
|
57
|
+
"""Create an instance of GetArtifactTagsResponseDto from a dict"""
|
|
58
|
+
if obj is None:
|
|
59
|
+
return None
|
|
60
|
+
|
|
61
|
+
if not isinstance(obj, dict):
|
|
62
|
+
return GetArtifactTagsResponseDto.parse_obj(obj)
|
|
63
|
+
|
|
64
|
+
_obj = GetArtifactTagsResponseDto.parse_obj({"tags": obj.get("tags")})
|
|
65
|
+
return _obj
|
|
@@ -28,6 +28,7 @@ from truefoundry.pydantic_v1 import (
|
|
|
28
28
|
Field,
|
|
29
29
|
StrictStr,
|
|
30
30
|
conint,
|
|
31
|
+
conlist,
|
|
31
32
|
constr,
|
|
32
33
|
validator,
|
|
33
34
|
)
|
|
@@ -46,6 +47,10 @@ class ModelVersionManifest(BaseModel):
|
|
|
46
47
|
default=...,
|
|
47
48
|
description="+label=Metadata +docs=Metadata for the artifact or model version +usage=Metadata for the artifact or model version +uiType=JsonInput",
|
|
48
49
|
)
|
|
50
|
+
tags: Optional[conlist(constr(strict=True, max_length=128))] = Field(
|
|
51
|
+
default=None,
|
|
52
|
+
description="+label=Tags +usage=Tags for the artifact or model version +docs=Tags for the artifact or model version",
|
|
53
|
+
)
|
|
49
54
|
type: Optional[StrictStr] = "model-version"
|
|
50
55
|
source: Source1 = Field(...)
|
|
51
56
|
framework: Optional[Framework] = None
|
|
@@ -56,6 +61,7 @@ class ModelVersionManifest(BaseModel):
|
|
|
56
61
|
__properties = [
|
|
57
62
|
"description",
|
|
58
63
|
"metadata",
|
|
64
|
+
"tags",
|
|
59
65
|
"type",
|
|
60
66
|
"source",
|
|
61
67
|
"framework",
|
|
@@ -119,6 +125,7 @@ class ModelVersionManifest(BaseModel):
|
|
|
119
125
|
{
|
|
120
126
|
"description": obj.get("description"),
|
|
121
127
|
"metadata": obj.get("metadata"),
|
|
128
|
+
"tags": obj.get("tags"),
|
|
122
129
|
"type": obj.get("type")
|
|
123
130
|
if obj.get("type") is not None
|
|
124
131
|
else "model-version",
|
|
@@ -121,6 +121,7 @@ Class | Method | HTTP request | Description
|
|
|
121
121
|
*MlfoundryArtifactsApi* | [**get_signed_urls_for_dataset_write_post**](truefoundry/ml/autogen/client/docs/MlfoundryArtifactsApi.md#get_signed_urls_for_dataset_write_post) | **POST** /api/2.0/mlflow/mlfoundry-artifacts/datasets/get-signed-urls-for-write | Get Signed Urls For Dataset Write
|
|
122
122
|
*MlfoundryArtifactsApi* | [**get_signed_urls_for_read_post**](truefoundry/ml/autogen/client/docs/MlfoundryArtifactsApi.md#get_signed_urls_for_read_post) | **POST** /api/2.0/mlflow/mlfoundry-artifacts/artifact-versions/get-signed-urls-for-read | Get Signed Urls For Read
|
|
123
123
|
*MlfoundryArtifactsApi* | [**get_signed_urls_for_write_post**](truefoundry/ml/autogen/client/docs/MlfoundryArtifactsApi.md#get_signed_urls_for_write_post) | **POST** /api/2.0/mlflow/mlfoundry-artifacts/artifact-versions/get-signed-urls-for-write | Get Signed Urls For Write
|
|
124
|
+
*MlfoundryArtifactsApi* | [**get_tags_for_artifact_get**](truefoundry/ml/autogen/client/docs/MlfoundryArtifactsApi.md#get_tags_for_artifact_get) | **GET** /api/2.0/mlflow/mlfoundry-artifacts/artifacts/get-tags | Get Tags For Artifact
|
|
124
125
|
*MlfoundryArtifactsApi* | [**list_artifact_versions_post**](truefoundry/ml/autogen/client/docs/MlfoundryArtifactsApi.md#list_artifact_versions_post) | **POST** /api/2.0/mlflow/mlfoundry-artifacts/artifact-versions/list | List Artifact Versions
|
|
125
126
|
*MlfoundryArtifactsApi* | [**list_artifacts_post**](truefoundry/ml/autogen/client/docs/MlfoundryArtifactsApi.md#list_artifacts_post) | **POST** /api/2.0/mlflow/mlfoundry-artifacts/artifacts/list | List Artifacts
|
|
126
127
|
*MlfoundryArtifactsApi* | [**list_datasets_post**](truefoundry/ml/autogen/client/docs/MlfoundryArtifactsApi.md#list_datasets_post) | **POST** /api/2.0/mlflow/mlfoundry-artifacts/datasets/list | List Datasets
|
|
@@ -219,6 +220,7 @@ Class | Method | HTTP request | Description
|
|
|
219
220
|
- [FileInfoDto](truefoundry/ml/autogen/client/docs/FileInfoDto.md)
|
|
220
221
|
- [FinalizeArtifactVersionRequestDto](truefoundry/ml/autogen/client/docs/FinalizeArtifactVersionRequestDto.md)
|
|
221
222
|
- [Framework](truefoundry/ml/autogen/client/docs/Framework.md)
|
|
223
|
+
- [GetArtifactTagsResponseDto](truefoundry/ml/autogen/client/docs/GetArtifactTagsResponseDto.md)
|
|
222
224
|
- [GetExperimentResponseDto](truefoundry/ml/autogen/client/docs/GetExperimentResponseDto.md)
|
|
223
225
|
- [GetLatestRunLogResponseDto](truefoundry/ml/autogen/client/docs/GetLatestRunLogResponseDto.md)
|
|
224
226
|
- [GetMetricHistoryResponse](truefoundry/ml/autogen/client/docs/GetMetricHistoryResponse.md)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: artifacts.json
|
|
3
|
-
# timestamp: 2024-12-
|
|
3
|
+
# timestamp: 2024-12-16T06:57:32+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -58,6 +58,17 @@ class BaseArtifactVersion(BaseModel):
|
|
|
58
58
|
...,
|
|
59
59
|
description="+label=Metadata\n+docs=Metadata for the artifact or model version\n+usage=Metadata for the artifact or model version\n+uiType=JsonInput",
|
|
60
60
|
)
|
|
61
|
+
tags: Optional[
|
|
62
|
+
List[
|
|
63
|
+
constr(
|
|
64
|
+
regex=r"^(?!^\d+$)(?!.*[._-]{2,})[a-zA-Z0-9]+([._-][a-zA-Z0-9]+)*$",
|
|
65
|
+
max_length=128,
|
|
66
|
+
)
|
|
67
|
+
]
|
|
68
|
+
] = Field(
|
|
69
|
+
None,
|
|
70
|
+
description="+label=Tags\n+usage=Tags for the artifact or model version\n+docs=Tags for the artifact or model version",
|
|
71
|
+
)
|
|
61
72
|
|
|
62
73
|
|
|
63
74
|
class MimeType(str, Enum):
|
|
@@ -5,11 +5,10 @@ import os
|
|
|
5
5
|
import tempfile
|
|
6
6
|
import typing
|
|
7
7
|
import uuid
|
|
8
|
+
import warnings
|
|
8
9
|
from pathlib import Path
|
|
9
10
|
from typing import TYPE_CHECKING, Any, Dict, List, NamedTuple, Optional, Union
|
|
10
11
|
|
|
11
|
-
from pydantic import StrictStr
|
|
12
|
-
|
|
13
12
|
from truefoundry.ml.artifact.truefoundry_artifact_repo import (
|
|
14
13
|
ArtifactIdentifier,
|
|
15
14
|
MlFoundryArtifactsRepository,
|
|
@@ -43,7 +42,7 @@ from truefoundry.ml.log_types.artifacts.utils import (
|
|
|
43
42
|
)
|
|
44
43
|
from truefoundry.ml.logger import logger
|
|
45
44
|
from truefoundry.ml.session import _get_api_client
|
|
46
|
-
from truefoundry.pydantic_v1 import BaseModel, Extra
|
|
45
|
+
from truefoundry.pydantic_v1 import BaseModel, Extra, StrictStr
|
|
47
46
|
|
|
48
47
|
if TYPE_CHECKING:
|
|
49
48
|
from truefoundry.ml.mlfoundry_run import MlFoundryRun
|
|
@@ -84,6 +83,7 @@ class ArtifactVersion:
|
|
|
84
83
|
self._deleted = False
|
|
85
84
|
self._description: str = ""
|
|
86
85
|
self._metadata: Dict[str, Any] = {}
|
|
86
|
+
self._tags: List[str] = []
|
|
87
87
|
self._set_mutable_attrs()
|
|
88
88
|
|
|
89
89
|
@classmethod
|
|
@@ -131,9 +131,13 @@ class ArtifactVersion:
|
|
|
131
131
|
manifest = self._artifact_version.manifest.actual_instance
|
|
132
132
|
self._description = manifest.description or ""
|
|
133
133
|
self._metadata = copy.deepcopy(manifest.metadata)
|
|
134
|
+
self._tags = copy.deepcopy(manifest.tags or [])
|
|
134
135
|
else:
|
|
135
136
|
self._description = self._artifact_version.description or ""
|
|
136
|
-
self._metadata = copy.deepcopy(
|
|
137
|
+
self._metadata = copy.deepcopy(
|
|
138
|
+
self._artifact_version.artifact_metadata or {}
|
|
139
|
+
)
|
|
140
|
+
self._tags = []
|
|
137
141
|
|
|
138
142
|
def _refetch_artifact_version(self, reset_mutable_attrs: bool = True):
|
|
139
143
|
_artifact_version = (
|
|
@@ -205,6 +209,33 @@ class ArtifactVersion:
|
|
|
205
209
|
_validate_artifact_metadata(value)
|
|
206
210
|
self._metadata = copy.deepcopy(value)
|
|
207
211
|
|
|
212
|
+
@property
|
|
213
|
+
def tags(self) -> List[str]:
|
|
214
|
+
"""
|
|
215
|
+
Get tags for the current model version
|
|
216
|
+
"""
|
|
217
|
+
if not self._artifact_version.manifest:
|
|
218
|
+
warnings.warn(
|
|
219
|
+
message="This model version was created using an older serialization format. tags do not exist, returning empty list",
|
|
220
|
+
category=DeprecationWarning,
|
|
221
|
+
stacklevel=2,
|
|
222
|
+
)
|
|
223
|
+
return self._tags
|
|
224
|
+
|
|
225
|
+
@tags.setter
|
|
226
|
+
def tags(self, value: List[str]):
|
|
227
|
+
"""
|
|
228
|
+
Set the tags for current model version
|
|
229
|
+
"""
|
|
230
|
+
if not self._artifact_version.manifest:
|
|
231
|
+
warnings.warn(
|
|
232
|
+
message="This model version was created using an older serialization format. Tags will not be updated",
|
|
233
|
+
category=DeprecationWarning,
|
|
234
|
+
stacklevel=2,
|
|
235
|
+
)
|
|
236
|
+
return
|
|
237
|
+
self._tags = copy.deepcopy(value)
|
|
238
|
+
|
|
208
239
|
@property
|
|
209
240
|
def created_at(self) -> Optional[datetime.datetime]:
|
|
210
241
|
"""Get the time at which artifact was created"""
|
|
@@ -367,6 +398,7 @@ class ArtifactVersion:
|
|
|
367
398
|
assert isinstance(manifest, ArtifactVersionManifest)
|
|
368
399
|
manifest.description = self.description
|
|
369
400
|
manifest.metadata = self.metadata
|
|
401
|
+
manifest.tags = self.tags
|
|
370
402
|
else:
|
|
371
403
|
manifest = None
|
|
372
404
|
try:
|
|
@@ -8,7 +8,7 @@ import typing
|
|
|
8
8
|
import uuid
|
|
9
9
|
import warnings
|
|
10
10
|
from pathlib import Path
|
|
11
|
-
from typing import TYPE_CHECKING, Any, Dict, Optional, Union
|
|
11
|
+
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union
|
|
12
12
|
|
|
13
13
|
from truefoundry.ml.artifact.truefoundry_artifact_repo import (
|
|
14
14
|
ArtifactIdentifier,
|
|
@@ -52,7 +52,7 @@ from truefoundry.ml.model_framework import (
|
|
|
52
52
|
auto_update_model_framework_details,
|
|
53
53
|
)
|
|
54
54
|
from truefoundry.ml.session import _get_api_client
|
|
55
|
-
from truefoundry.pydantic_v1 import BaseModel, Extra
|
|
55
|
+
from truefoundry.pydantic_v1 import BaseModel, Extra, parse_obj_as
|
|
56
56
|
|
|
57
57
|
if TYPE_CHECKING:
|
|
58
58
|
import numpy as np
|
|
@@ -108,6 +108,7 @@ class ModelVersion:
|
|
|
108
108
|
self._metadata: Dict[str, Any] = {}
|
|
109
109
|
self._environment: Optional[ModelVersionEnvironment] = None
|
|
110
110
|
self._framework: Optional[ModelFrameworkType] = None
|
|
111
|
+
self._tags: List[str] = []
|
|
111
112
|
self._set_mutable_attrs()
|
|
112
113
|
|
|
113
114
|
@classmethod
|
|
@@ -147,21 +148,26 @@ class ModelVersion:
|
|
|
147
148
|
|
|
148
149
|
def _set_mutable_attrs(self):
|
|
149
150
|
if self._model_version.manifest:
|
|
150
|
-
|
|
151
|
-
self.
|
|
152
|
-
self.
|
|
151
|
+
manifest = self._model_version.manifest
|
|
152
|
+
self._description = manifest.description or ""
|
|
153
|
+
self._metadata = copy.deepcopy(manifest.metadata)
|
|
154
|
+
self._environment = copy.deepcopy(manifest.environment)
|
|
153
155
|
self._framework = (
|
|
154
|
-
|
|
155
|
-
|
|
156
|
+
parse_obj_as(
|
|
157
|
+
ModelFrameworkType, manifest.framework.actual_instance.to_dict()
|
|
158
|
+
)
|
|
159
|
+
if manifest.framework
|
|
156
160
|
else None
|
|
157
161
|
)
|
|
162
|
+
self._tags = copy.deepcopy(self._model_version.manifest.tags) or []
|
|
158
163
|
else:
|
|
159
164
|
self._description = self._model_version.description or ""
|
|
160
|
-
self._metadata = copy.deepcopy(self._model_version.artifact_metadata)
|
|
165
|
+
self._metadata = copy.deepcopy(self._model_version.artifact_metadata or {})
|
|
161
166
|
self._environment = None
|
|
162
167
|
self._framework = _ModelFramework.to_model_framework_type(
|
|
163
168
|
self._model_version.model_framework
|
|
164
169
|
)
|
|
170
|
+
self._tags = []
|
|
165
171
|
|
|
166
172
|
def _refetch_model_version(self, reset_mutable_attrs: bool = True):
|
|
167
173
|
_model_version = self._mlfoundry_artifacts_api.get_model_version_get(
|
|
@@ -231,13 +237,46 @@ class ModelVersion:
|
|
|
231
237
|
_validate_artifact_metadata(value)
|
|
232
238
|
self._metadata = copy.deepcopy(value)
|
|
233
239
|
|
|
240
|
+
@property
|
|
241
|
+
def tags(self) -> List[str]:
|
|
242
|
+
"""
|
|
243
|
+
Get tags for the current artifact version
|
|
244
|
+
"""
|
|
245
|
+
if not self._model_version.manifest:
|
|
246
|
+
warnings.warn(
|
|
247
|
+
message="This model version was created using an older serialization format. tags do not exist, returning empty list",
|
|
248
|
+
category=DeprecationWarning,
|
|
249
|
+
stacklevel=2,
|
|
250
|
+
)
|
|
251
|
+
return self._tags
|
|
252
|
+
|
|
253
|
+
@tags.setter
|
|
254
|
+
def tags(self, value: List[str]):
|
|
255
|
+
"""
|
|
256
|
+
Set the tags for current artifact version
|
|
257
|
+
"""
|
|
258
|
+
if not self._model_version.manifest:
|
|
259
|
+
warnings.warn(
|
|
260
|
+
message="This model version was created using an older serialization format. Tags will not be updated",
|
|
261
|
+
category=DeprecationWarning,
|
|
262
|
+
stacklevel=2,
|
|
263
|
+
)
|
|
264
|
+
return
|
|
265
|
+
self._tags = copy.deepcopy(value)
|
|
266
|
+
|
|
234
267
|
@property
|
|
235
268
|
def environment(self) -> Optional[ModelVersionEnvironment]:
|
|
236
269
|
"""Get the environment details for the model"""
|
|
270
|
+
if not self._model_version.manifest:
|
|
271
|
+
warnings.warn(
|
|
272
|
+
message="This model version was created using an older serialization format. environment does not exist, returning None",
|
|
273
|
+
category=DeprecationWarning,
|
|
274
|
+
stacklevel=2,
|
|
275
|
+
)
|
|
237
276
|
return self._environment
|
|
238
277
|
|
|
239
278
|
@environment.setter
|
|
240
|
-
def environment(self, value: Optional[
|
|
279
|
+
def environment(self, value: Optional[ModelVersionEnvironment]):
|
|
241
280
|
"""set the environment details for the model"""
|
|
242
281
|
if not self._model_version.manifest:
|
|
243
282
|
warnings.warn(
|
|
@@ -449,6 +488,7 @@ class ModelVersion:
|
|
|
449
488
|
self._model_version.manifest.framework = (
|
|
450
489
|
Framework.from_dict(self.framework.dict()) if self.framework else None
|
|
451
490
|
)
|
|
491
|
+
self._model_version.manifest.tags = self.tags
|
|
452
492
|
try:
|
|
453
493
|
_model_version = self._mlfoundry_artifacts_api.update_model_version_post(
|
|
454
494
|
update_model_version_request_dto=UpdateModelVersionRequestDto(
|
|
@@ -20,7 +20,8 @@ from truefoundry.common.utils import (
|
|
|
20
20
|
get_python_version_major_minor,
|
|
21
21
|
list_pip_packages_installed,
|
|
22
22
|
)
|
|
23
|
-
from truefoundry.ml.autogen.client import (
|
|
23
|
+
from truefoundry.ml.autogen.client import ( # type: ignore[attr-defined]
|
|
24
|
+
ModelVersionEnvironment,
|
|
24
25
|
SklearnSerializationFormat,
|
|
25
26
|
XGBoostSerializationFormat,
|
|
26
27
|
)
|
|
@@ -344,7 +345,7 @@ def _fetch_framework_specific_pip_packages(
|
|
|
344
345
|
|
|
345
346
|
|
|
346
347
|
def auto_update_environment_details(
|
|
347
|
-
environment:
|
|
348
|
+
environment: ModelVersionEnvironment,
|
|
348
349
|
framework: Optional[ModelFrameworkType],
|
|
349
350
|
):
|
|
350
351
|
"""
|
|
@@ -1,30 +1,31 @@
|
|
|
1
1
|
truefoundry/__init__.py,sha256=jynqfY0pDmcaXlxewDnMQC5CYAIW9JFjptBrw7y76rY,81
|
|
2
2
|
truefoundry/autodeploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
3
|
truefoundry/autodeploy/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
truefoundry/autodeploy/agents/base.py,sha256=
|
|
5
|
-
truefoundry/autodeploy/agents/developer.py,sha256=
|
|
6
|
-
truefoundry/autodeploy/agents/project_identifier.py,sha256=
|
|
7
|
-
truefoundry/autodeploy/agents/tester.py,sha256=
|
|
4
|
+
truefoundry/autodeploy/agents/base.py,sha256=lYw6bKhfCWff5BbtXXn2k4MjMbRIUkOwPBjRT70iXE8,6420
|
|
5
|
+
truefoundry/autodeploy/agents/developer.py,sha256=tO9vmgGjoaqK4rX-DFCyMrViFC2Oqofd89WoXqsEm-A,4142
|
|
6
|
+
truefoundry/autodeploy/agents/project_identifier.py,sha256=KlF7FwrGHDCjF3y3-YaCDxZ8kE34s6XPBagXhG2U1aM,4520
|
|
7
|
+
truefoundry/autodeploy/agents/tester.py,sha256=lqvVBuVcFRvGZnSLAUF2r-1-Yti20o_cbybU19IlSXo,2418
|
|
8
8
|
truefoundry/autodeploy/cli.py,sha256=1VnDAP9ylM6l00v0Ko5KL6_Dr7bL_voeAPdbEvWvU3Y,14215
|
|
9
9
|
truefoundry/autodeploy/constants.py,sha256=vTh2nA7cjqghqbW2rNh3FbtcIk2scdAWZuuQCmVBO80,1273
|
|
10
10
|
truefoundry/autodeploy/exception.py,sha256=fa_ZyTDUKiMKG2Uayynk1yWcEMsuVluqk2GtV4tfTPU,158
|
|
11
11
|
truefoundry/autodeploy/logger.py,sha256=tkV2UKcOTFl5nz0cn4eRbzxF-2CZd8b7MK9vnhaflYw,325
|
|
12
12
|
truefoundry/autodeploy/tools/__init__.py,sha256=9zJiC1d4bv9EL-p5XTCa9fAQ6ZKV--AbgeLz9bBBkyQ,875
|
|
13
13
|
truefoundry/autodeploy/tools/ask.py,sha256=MxUFLP7rjpdJ85gCc3El0wUqTZDjpjAw7WOTdV4LLWE,856
|
|
14
|
-
truefoundry/autodeploy/tools/base.py,sha256=
|
|
15
|
-
truefoundry/autodeploy/tools/commit.py,sha256=
|
|
16
|
-
truefoundry/autodeploy/tools/docker_build.py,sha256=
|
|
17
|
-
truefoundry/autodeploy/tools/docker_run.py,sha256=
|
|
18
|
-
truefoundry/autodeploy/tools/file_type_counts.py,sha256=
|
|
19
|
-
truefoundry/autodeploy/tools/list_files.py,sha256=
|
|
20
|
-
truefoundry/autodeploy/tools/read_file.py,sha256=
|
|
21
|
-
truefoundry/autodeploy/tools/send_request.py,sha256=
|
|
22
|
-
truefoundry/autodeploy/tools/write_file.py,sha256=
|
|
14
|
+
truefoundry/autodeploy/tools/base.py,sha256=Ltzj2d6DO1gUMx_qSt2c2Zq91MJ5V4FJXpZwl4T3F8M,795
|
|
15
|
+
truefoundry/autodeploy/tools/commit.py,sha256=MXqPnCnMHagvimSCCBGYsAbNdl7k1pf05BBBRjOP8b8,6051
|
|
16
|
+
truefoundry/autodeploy/tools/docker_build.py,sha256=tAG62G1bk-kYrbRykieXxU48nkOlv3IcAv25k6zdTz8,4015
|
|
17
|
+
truefoundry/autodeploy/tools/docker_run.py,sha256=PuiIvF41_L3JJN_EyoU-PAr2YkZEu0C9XX0ABcTFoJk,5076
|
|
18
|
+
truefoundry/autodeploy/tools/file_type_counts.py,sha256=DUcULN0S2qIrZKTTTfz7GXeRy6RKtHSIeVkeECeEQZw,2369
|
|
19
|
+
truefoundry/autodeploy/tools/list_files.py,sha256=HNZdsz-m-Jxf5yrf2bn7kRplIsNACP69Ozd4bpjlGMk,2657
|
|
20
|
+
truefoundry/autodeploy/tools/read_file.py,sha256=ZpgTNef2-plWEoX4UHcVFVzHmNGoqZrvVUn1OVY_rrE,2268
|
|
21
|
+
truefoundry/autodeploy/tools/send_request.py,sha256=Ea6MG0esSik7ZtWNIx9yTHlKJ593CQc11bET_YeRZgc,1703
|
|
22
|
+
truefoundry/autodeploy/tools/write_file.py,sha256=tSO8LEwVJZbF17zva7FWE426_-C8pB5FVwc1vClpFjY,3145
|
|
23
23
|
truefoundry/autodeploy/utils/client.py,sha256=PvbSkfgAjAogGjisinqmh4mP4svowxAC0IwzEQz3Ai0,453
|
|
24
24
|
truefoundry/autodeploy/utils/diff.py,sha256=Ef8Y-VffDKel_-q-GxRam6gqiv8qTLMcqVg6iifXfcA,5358
|
|
25
25
|
truefoundry/autodeploy/utils/pydantic_compat.py,sha256=hEAUy5kLjhPdzw7yGZ2iXGMXbbMVXVlGzIofmyHafXQ,412
|
|
26
26
|
truefoundry/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
|
-
truefoundry/cli/__main__.py,sha256=
|
|
27
|
+
truefoundry/cli/__main__.py,sha256=mYgMZRvI3sBP3_6DA0WwtFUZQTV3r8gJpMFvMJb-OOE,3692
|
|
28
|
+
truefoundry/cli/commands/pat.py,sha256=0rm95ny1b3KfeBJSRWh1M4lR46ERnp96ovUZKu-P5Ss,602
|
|
28
29
|
truefoundry/cli/config.py,sha256=tf8w4UfVzcC6eYkENvuuCPYt_V3sqVpO1bclORV9tAk,206
|
|
29
30
|
truefoundry/cli/console.py,sha256=9-dMy4YPisCJQziRKTg8Qa0UJnOGl1soiUnJjsnLDvE,242
|
|
30
31
|
truefoundry/cli/const.py,sha256=dVHPo1uAiDSSMXwXoT2mR5kNQjExT98QNVRz98Hz_Ts,510
|
|
@@ -80,7 +81,7 @@ truefoundry/deploy/io/rich_output_callback.py,sha256=TJLiRD-EnFVwgcepxR7WN0koKqW
|
|
|
80
81
|
truefoundry/deploy/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
82
|
truefoundry/deploy/lib/auth/servicefoundry_session.py,sha256=5TCYPunAygtn5mb0mp_VcWKEalKMKPbyWMWer-Vty2g,1916
|
|
82
83
|
truefoundry/deploy/lib/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
|
-
truefoundry/deploy/lib/clients/servicefoundry_client.py,sha256=
|
|
84
|
+
truefoundry/deploy/lib/clients/servicefoundry_client.py,sha256=zx9c-TjQRzMDKGCa-wDvXEX_8FcWH1QlVif2SjxgLxs,27136
|
|
84
85
|
truefoundry/deploy/lib/const.py,sha256=Wg0GDnfFu-g1fJr4lU80NH2ULw0R0dYjV7LnW-PbOeM,173
|
|
85
86
|
truefoundry/deploy/lib/dao/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
86
87
|
truefoundry/deploy/lib/dao/application.py,sha256=xUqF34abde71YZo9gkR-WvVJi1C6nBeGBNw4kL5FdIo,9226
|
|
@@ -103,12 +104,16 @@ truefoundry/deploy/v2/lib/deployable_patched_models.py,sha256=MROgMxhn9hDEAKwJSW
|
|
|
103
104
|
truefoundry/deploy/v2/lib/models.py,sha256=pSolLMTArDuYpeNsmeeS5DWliloN_iCDfZSpRllMHUg,1120
|
|
104
105
|
truefoundry/deploy/v2/lib/patched_models.py,sha256=NTU8J_CwdvEuF9zNXwFyN3suOp_196Wrm75DDy5qcXE,14184
|
|
105
106
|
truefoundry/deploy/v2/lib/source.py,sha256=VHKuFREiixUP40D3Mrz-TA70spu1M0RbCzl--qwlFaY,9263
|
|
107
|
+
truefoundry/gateway/__init__.py,sha256=HvAMuk60-fuZcMmdOtozHrUaH_JcbEHxpMSlS9ci4ls,41
|
|
108
|
+
truefoundry/gateway/cli/cli.py,sha256=9raS6Nq_CNzagEPpbKICwUZ01zMoqmZINKMB9m_gJRE,908
|
|
109
|
+
truefoundry/gateway/lib/entities.py,sha256=1P9YjrMoHbg58M57Pq-HlsT1ISHRyyX4JxK-o4of6cY,695
|
|
110
|
+
truefoundry/gateway/lib/models.py,sha256=TXOur51tuYkq4Xil-icNVaVH-7xZbdOUyqS8N9295dg,876
|
|
106
111
|
truefoundry/logger.py,sha256=u-YCNjg5HBwE70uQcpjIG64Ghos-K2ulTWaxC03BSj4,714
|
|
107
112
|
truefoundry/ml/__init__.py,sha256=ssUEIs8BixPWxynKoeSh-dkRl6AtLXG0PBGYnUR5Az8,2217
|
|
108
113
|
truefoundry/ml/artifact/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
109
114
|
truefoundry/ml/artifact/truefoundry_artifact_repo.py,sha256=FksxhUpRHb9pgWZmAB16DhXqkAL6UIAPA1S3RJUApQU,46201
|
|
110
115
|
truefoundry/ml/autogen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
111
|
-
truefoundry/ml/autogen/client/__init__.py,sha256=
|
|
116
|
+
truefoundry/ml/autogen/client/__init__.py,sha256=42Y8v6C1oDlngKCaDODi9k3q-9MPMiqO8jGe39y5QJM,20097
|
|
112
117
|
truefoundry/ml/autogen/client/api/__init__.py,sha256=NyMBxBmIzB1o5LzZZwz9LiydHB3-hPqc_sevsnY6Jrw,746
|
|
113
118
|
truefoundry/ml/autogen/client/api/auth_api.py,sha256=zpWzJhUmW6HHMY_atlUf0B25k77E1kue2hmix5I5Ih0,7017
|
|
114
119
|
truefoundry/ml/autogen/client/api/deprecated_api.py,sha256=mu5x_skNcwz8v1Tr6VP72-tVP7pmBV9muyKy_2NH3F0,38824
|
|
@@ -116,14 +121,14 @@ truefoundry/ml/autogen/client/api/experiments_api.py,sha256=mRKS8qGzcFJUpTWjfQoF
|
|
|
116
121
|
truefoundry/ml/autogen/client/api/generate_code_snippet_api.py,sha256=C8iABP-pYIyIoTlL8PFi3ZBG_6B_dkQf09eErNeoj7A,22316
|
|
117
122
|
truefoundry/ml/autogen/client/api/health_api.py,sha256=IAPhRAo9CLUT5ipVR1fCf-qDx57UR0wg5ekhtUl8lug,11554
|
|
118
123
|
truefoundry/ml/autogen/client/api/metrics_api.py,sha256=q3L38eD-2hu4_9YvcSdnWDYXD2V8il-X9reinOAABek,14908
|
|
119
|
-
truefoundry/ml/autogen/client/api/mlfoundry_artifacts_api.py,sha256=
|
|
124
|
+
truefoundry/ml/autogen/client/api/mlfoundry_artifacts_api.py,sha256=Ze2mSkXH1IxUB6Zs3C8ISYwzpKfPXgGvdKgjmEa-XRA,319720
|
|
120
125
|
truefoundry/ml/autogen/client/api/run_artifacts_api.py,sha256=x-vVnY2LEFChZxiiFauswRWwFz6Qqh30PKXjzuTvxmc,8799
|
|
121
126
|
truefoundry/ml/autogen/client/api/runs_api.py,sha256=-aghrZ2VYuZOw_vBtOzWDsnK7Ji29oZQxK2CLRgyo2w,119232
|
|
122
127
|
truefoundry/ml/autogen/client/api_client.py,sha256=M31IycWorn10FYS8WbO_Whaipr0tVu2pVWFCfbS7XCo,29167
|
|
123
128
|
truefoundry/ml/autogen/client/api_response.py,sha256=KRyvecPMXF05PaxILHZ8JHoP4rgKBjKONMgG83aU-rM,844
|
|
124
129
|
truefoundry/ml/autogen/client/configuration.py,sha256=V1oaEnxt-NfpaNmp-EZpf2glovzVhM2coWYt8HBNB4M,15723
|
|
125
130
|
truefoundry/ml/autogen/client/exceptions.py,sha256=XbCbDHhYT3BVejdoGNPgEa4oS56ypkwFdxk1iOc_tFY,5355
|
|
126
|
-
truefoundry/ml/autogen/client/models/__init__.py,sha256=
|
|
131
|
+
truefoundry/ml/autogen/client/models/__init__.py,sha256=ZtmxIyFDWPGywDB8p-VZO73Cl_WkGcl4fVzEB9UHsTc,18719
|
|
127
132
|
truefoundry/ml/autogen/client/models/add_custom_metrics_to_model_version_request_dto.py,sha256=_ISDspicTGjBCYYXubKfRYYSSQVyW3AvG-jFh47-Zfc,2163
|
|
128
133
|
truefoundry/ml/autogen/client/models/add_features_to_model_version_request_dto.py,sha256=OT1-98DyWNfAHz_EgD2gMX2XkrGQ4Re945fhoAl8qSE,2099
|
|
129
134
|
truefoundry/ml/autogen/client/models/agent.py,sha256=lUAbs092yo9hZmqzX6atKebDNf1uEwTf5jLvjOdvoeM,3872
|
|
@@ -135,7 +140,7 @@ truefoundry/ml/autogen/client/models/artifact_dto.py,sha256=JWL8_sITJJXbxywcfRj4
|
|
|
135
140
|
truefoundry/ml/autogen/client/models/artifact_response_dto.py,sha256=T_HLjkHnqiO1bnSXiCUOlwDEHGz89mlUNhBq0SJTapo,2226
|
|
136
141
|
truefoundry/ml/autogen/client/models/artifact_type.py,sha256=LBXGYUoesmL5J-0xzCR8jBST3bjb6HY86RmqSGvytRs,828
|
|
137
142
|
truefoundry/ml/autogen/client/models/artifact_version_dto.py,sha256=GXjjKycpsEgJ60V2hAfL4NMxM2gZKLP2qV2yBb9WgdM,6174
|
|
138
|
-
truefoundry/ml/autogen/client/models/artifact_version_manifest.py,sha256=
|
|
143
|
+
truefoundry/ml/autogen/client/models/artifact_version_manifest.py,sha256=lzoIGTRplPIcXlO5Brq6DoCn1HCnzmxJmd9dPvZ3Nq4,3907
|
|
139
144
|
truefoundry/ml/autogen/client/models/artifact_version_response_dto.py,sha256=JmiSYdPYG-ki6LCBeF7NtihdQ2LPiHld8cSPivY2GmQ,2421
|
|
140
145
|
truefoundry/ml/autogen/client/models/artifact_version_serialization_format.py,sha256=2Qfgq1nykn0_mKNEJzOxhQwHm_95WIr9wJcHLeFWXQM,774
|
|
141
146
|
truefoundry/ml/autogen/client/models/artifact_version_status.py,sha256=iIcomqhuaJkZH2rT3e6IjQutM79t9hEshW-RCIMKHEY,780
|
|
@@ -186,6 +191,7 @@ truefoundry/ml/autogen/client/models/fast_ai_framework.py,sha256=GwVoMbIzYhr4srF
|
|
|
186
191
|
truefoundry/ml/autogen/client/models/file_info_dto.py,sha256=7oc8venicsFVk8zT9wHNhHnZGtFkFlqimFnS7ozGL9k,2156
|
|
187
192
|
truefoundry/ml/autogen/client/models/finalize_artifact_version_request_dto.py,sha256=tkPcNjI0_qhX-D3m6AXqLzdmo9_K0tFBtbPDeg0Zo7U,3818
|
|
188
193
|
truefoundry/ml/autogen/client/models/framework.py,sha256=W_KrqH1qKRvlrssCCWFIlmPaeAw0eiM6VqS3pbdlMXU,14720
|
|
194
|
+
truefoundry/ml/autogen/client/models/get_artifact_tags_response_dto.py,sha256=zS5eBxBqzm-f5dt4GspLJvVmq_RWTtZmZTXFV8rqbX0,1883
|
|
189
195
|
truefoundry/ml/autogen/client/models/get_experiment_response_dto.py,sha256=FhJpoUeRbZV1s1KR3Y07Kv6U4enLbbgdpGbguT9us0A,2923
|
|
190
196
|
truefoundry/ml/autogen/client/models/get_latest_run_log_response_dto.py,sha256=g5NG252VzjGHiA-w5nhxmZxGrowJO9XCHDQTjf8y2KE,2266
|
|
191
197
|
truefoundry/ml/autogen/client/models/get_metric_history_response.py,sha256=rTchO8o4sjGsNaZj8TW-VGtGGxsOBjUGzgaAWNtBZ-k,2428
|
|
@@ -244,7 +250,7 @@ truefoundry/ml/autogen/client/models/model_response_dto.py,sha256=osrTxfygkuhxWj
|
|
|
244
250
|
truefoundry/ml/autogen/client/models/model_server.py,sha256=N5mcWmnX0KzTMtTH8A9h_FmiQcMld3B8CXD_UYeDKaA,700
|
|
245
251
|
truefoundry/ml/autogen/client/models/model_version_dto.py,sha256=9Mh4d8V33gEGYr4sys5lYYDA3bHKajR3oAZLZMAy_io,7094
|
|
246
252
|
truefoundry/ml/autogen/client/models/model_version_environment.py,sha256=wTayQjMen24eJCqXQugzoXLANY5NXdVsAvZSh-QIhJA,2827
|
|
247
|
-
truefoundry/ml/autogen/client/models/model_version_manifest.py,sha256=
|
|
253
|
+
truefoundry/ml/autogen/client/models/model_version_manifest.py,sha256=pZysfaTZmew4MxhtH4MTnwCQWRt43JvqU3ii5gBgm9w,4955
|
|
248
254
|
truefoundry/ml/autogen/client/models/model_version_response_dto.py,sha256=D6XOCyggxqTkbePuypqYSHYh1PYeDv7R_J32q61sDM0,2320
|
|
249
255
|
truefoundry/ml/autogen/client/models/multi_part_upload_dto.py,sha256=Ckq405vud8RQmMyKCJQJBlW5iXO7Y2mlgo8eVkiMvxg,3738
|
|
250
256
|
truefoundry/ml/autogen/client/models/multi_part_upload_response_dto.py,sha256=VjH0kvl7rMjgDHjYGHnsh7KsZ5-qn-k3ksdGLJ49nIM,2431
|
|
@@ -305,8 +311,8 @@ truefoundry/ml/autogen/client/models/xg_boost_framework.py,sha256=a0EHzncxe_hSFU
|
|
|
305
311
|
truefoundry/ml/autogen/client/models/xg_boost_model_schema.py,sha256=QKJkiERNqF8UiolX2FjvhkUkUlUgDoo3CpTYPAdCxV8,2735
|
|
306
312
|
truefoundry/ml/autogen/client/models/xg_boost_serialization_format.py,sha256=wFFSH0Z9MP8eT_fysHfUu4iqdjEZART-HxTH4e4gNI8,872
|
|
307
313
|
truefoundry/ml/autogen/client/rest.py,sha256=9goba8qHjQuVx5O_yRaTKu7PvBnb7r7swfy3dwuTEgk,14281
|
|
308
|
-
truefoundry/ml/autogen/client_README.md,sha256=
|
|
309
|
-
truefoundry/ml/autogen/entities/artifacts.py,sha256=
|
|
314
|
+
truefoundry/ml/autogen/client_README.md,sha256=Dr3x2Lm10JIWsLlRBZuDsE4Y4T1XzIpsychLjZfr89Q,37262
|
|
315
|
+
truefoundry/ml/autogen/entities/artifacts.py,sha256=COkzHpmqzXpEttH2UstIO8p7WN3zz_tyAG63r66i-9w,20652
|
|
310
316
|
truefoundry/ml/autogen/models/__init__.py,sha256=--TGRea9SQBWFfwtcl3ekb1XGfFTdEkQGSG8a2SJ60I,187
|
|
311
317
|
truefoundry/ml/autogen/models/exceptions.py,sha256=q3n7FGBrg_hUy1UyoefhMnhcXUAaqXlLIGHoOVzn_d8,1390
|
|
312
318
|
truefoundry/ml/autogen/models/schema.py,sha256=IhpO9qbygLqEamP3NIt3m90SseJXCOm1ZTqNbNbW-M0,55772
|
|
@@ -329,11 +335,11 @@ truefoundry/ml/exceptions.py,sha256=8aJm2NYtAWWsRLu4MbzaoOqHsQZ6RjOFwBWQWqb6qrc,
|
|
|
329
335
|
truefoundry/ml/git_info.py,sha256=jvAVm9ilqivnGq8qJdUvYdd8Siv0PLtqurB-PXsS5ho,2023
|
|
330
336
|
truefoundry/ml/internal_namespace.py,sha256=QcqMHp6-C2im2H_02hlhi01EIcr1HhNaZprszs13EMU,1790
|
|
331
337
|
truefoundry/ml/log_types/__init__.py,sha256=g4u4D4Jaj0aBK5GtrLV88-qThKZR9pSZ17vFEkN-LmM,125
|
|
332
|
-
truefoundry/ml/log_types/artifacts/artifact.py,sha256=
|
|
338
|
+
truefoundry/ml/log_types/artifacts/artifact.py,sha256=VC0KbcHty1fblybUvGVcfDGFcINfLgT2LByyvPcS1Ro,21565
|
|
333
339
|
truefoundry/ml/log_types/artifacts/constants.py,sha256=qKxQ5mMvJE4j83BvGW3qNTKunxCiBg_EEjTdgbgJtyE,1036
|
|
334
340
|
truefoundry/ml/log_types/artifacts/dataset.py,sha256=a4dxd2EN8p7Ci-cLGGiDOboN3t0395_XhWE1dmTw1Q4,13112
|
|
335
341
|
truefoundry/ml/log_types/artifacts/general_artifact.py,sha256=B4XErLr-m6RmQWtxMTu3wlFRFcqSwPYp6J0OL4Ng6L0,3179
|
|
336
|
-
truefoundry/ml/log_types/artifacts/model.py,sha256=
|
|
342
|
+
truefoundry/ml/log_types/artifacts/model.py,sha256=p9cB3_0MSZkVyq8G2pyNWl1F3qICTazQlq6VCSzOV3s,24194
|
|
337
343
|
truefoundry/ml/log_types/artifacts/utils.py,sha256=8mmahc1b6wvrA_E795h9ynRfhYRIdci7LRGN8U6ySm8,7516
|
|
338
344
|
truefoundry/ml/log_types/image/__init__.py,sha256=fcOq8yQnNj1rkLcPeIjLXBpdA1WIeiPsXOlAAvMxx7M,76
|
|
339
345
|
truefoundry/ml/log_types/image/constants.py,sha256=wLtGEOA4T5fZHSlOXPuNDLX3lpbCtwlvGKPFk_1fah0,255
|
|
@@ -346,7 +352,7 @@ truefoundry/ml/log_types/utils.py,sha256=xjJ21jdPScvFmw3TbVh5NCzbzJwaqiXJyiiT4xx
|
|
|
346
352
|
truefoundry/ml/logger.py,sha256=VT-BF3BnBYTWVq87O58F0c8uXMu94gYzsiFlGY3_7Ao,458
|
|
347
353
|
truefoundry/ml/mlfoundry_api.py,sha256=avuGgjbRnQXk774Vd3Dx7n99bbrOkL9pob9DI-vNvWE,62368
|
|
348
354
|
truefoundry/ml/mlfoundry_run.py,sha256=scHjdjojRGbE4ZZlByZTFrcBTamRbm_JGidaSX9Gi9o,44601
|
|
349
|
-
truefoundry/ml/model_framework.py,sha256=
|
|
355
|
+
truefoundry/ml/model_framework.py,sha256=GAGu6bW8L4f8uvukOITB0bJOm1BSWzxC1MJxUGmpOqQ,18882
|
|
350
356
|
truefoundry/ml/run_utils.py,sha256=0W208wSLUrbdfk2pjNcZlkUi9bNxG2JORqoe-5rVqHI,2423
|
|
351
357
|
truefoundry/ml/session.py,sha256=F83GTC5WwGBjnJ69Ct8MqMnlutYc56JCc6YhEY1Wl-A,5394
|
|
352
358
|
truefoundry/ml/validation_utils.py,sha256=J5atNhcJLvKj64ralSV9Y5Fv1Rt4SE237ICdP9-7sP4,12149
|
|
@@ -367,7 +373,7 @@ truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py,sha256=5mBCIc-ON
|
|
|
367
373
|
truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py,sha256=Hf6Dk6Fu6P7DqsK5ULgraf9DStjgigf-kjaRAMBW-RU,8680
|
|
368
374
|
truefoundry/workflow/task.py,sha256=ToitYiKcNzFCtOVQwz1W8sRjbR97eVS7vQBdbgUQtKg,1779
|
|
369
375
|
truefoundry/workflow/workflow.py,sha256=WaTqUjhwfAXDWu4E5ehuwAxrCbDJkoAf1oWmR2E9Qy0,4575
|
|
370
|
-
truefoundry-0.5.
|
|
371
|
-
truefoundry-0.5.
|
|
372
|
-
truefoundry-0.5.
|
|
373
|
-
truefoundry-0.5.
|
|
376
|
+
truefoundry-0.5.3rc3.dist-info/METADATA,sha256=zuoxLW-MzlfmWPLCP8J2NF8eydbOKPu_LNhKouhQi_0,2887
|
|
377
|
+
truefoundry-0.5.3rc3.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
378
|
+
truefoundry-0.5.3rc3.dist-info/entry_points.txt,sha256=TXvUxQkI6zmqJuycPsyxEIMr3oqfDjgrWj0m_9X12x4,95
|
|
379
|
+
truefoundry-0.5.3rc3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|