Skip to content

artifact

mlte/store/api/endpoints/artifact.py

API definition for MLTE artifacts.

delete_artifact(model_id, version_id, artifact_id, current_user)

Delete an artifact by identifier.

Parameters:

Name Type Description Default
model_id str

The model identifier

required
version_id str

The version identifier

required
artifact_id str

The identifier for the artifact

required

Returns:

Type Description
ArtifactModel

The deleted artifact

Source code in mlte/backend/api/endpoints/artifact.py
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
@router.delete("/{artifact_id}")
def delete_artifact(
    model_id: str,
    version_id: str,
    artifact_id: str,
    current_user: AuthorizedUser,
) -> ArtifactModel:
    """
    Delete an artifact by identifier.
    :param model_id: The model identifier
    :param version_id: The version identifier
    :param artifact_id: The identifier for the artifact
    :return: The deleted artifact
    """
    model_id = url_utils.revert_valid_url_part(model_id)
    version_id = url_utils.revert_valid_url_part(version_id)
    artifact_id = url_utils.revert_valid_url_part(artifact_id)
    with state_stores.artifact_store_session() as handle:
        try:
            return handle.delete_artifact(model_id, version_id, artifact_id)
        except errors.ErrorNotFound as e:
            raise HTTPException(
                status_code=codes.NOT_FOUND, detail=f"{e} not found."
            )
        except Exception as ex:
            raise_http_internal_error(ex)

read_artifact(model_id, version_id, artifact_id, current_user)

Read an artifact by identifier.

Parameters:

Name Type Description Default
model_id str

The model identifier

required
version_id str

The version identifier

required
artifact_id str

The identifier for the artifact

required

Returns:

Type Description
ArtifactModel

The read artifact

Source code in mlte/backend/api/endpoints/artifact.py
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
@router.get("/{artifact_id}")
def read_artifact(
    model_id: str,
    version_id: str,
    artifact_id: str,
    current_user: AuthorizedUser,
) -> ArtifactModel:
    """
    Read an artifact by identifier.
    :param model_id: The model identifier
    :param version_id: The version identifier
    :param artifact_id: The identifier for the artifact
    :return: The read artifact
    """
    model_id = url_utils.revert_valid_url_part(model_id)
    version_id = url_utils.revert_valid_url_part(version_id)
    artifact_id = url_utils.revert_valid_url_part(artifact_id)
    with state_stores.artifact_store_session() as handle:
        try:
            return handle.read_artifact(model_id, version_id, artifact_id)
        except errors.ErrorNotFound as e:
            raise HTTPException(
                status_code=codes.NOT_FOUND, detail=f"{e} not found."
            )
        except Exception as ex:
            raise_http_internal_error(ex)

read_artifacts(model_id, version_id, current_user, limit=100, offset=0)

Read artifacts with limit and offset.

Parameters:

Name Type Description Default
model_id str

The model identifier

required
version_id str

The version identifier

required
limit int

The limit on returned artifacts

100
offset int

The offset on returned artifacts

0

Returns:

Type Description
List[ArtifactModel]

The read artifacts

Source code in mlte/backend/api/endpoints/artifact.py
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
@router.get("")
def read_artifacts(
    model_id: str,
    version_id: str,
    current_user: AuthorizedUser,
    limit: int = 100,
    offset: int = 0,
) -> List[ArtifactModel]:
    """
    Read artifacts with limit and offset.
    :param model_id: The model identifier
    :param version_id: The version identifier
    :param limit: The limit on returned artifacts
    :param offset: The offset on returned artifacts
    :return: The read artifacts
    """
    model_id = url_utils.revert_valid_url_part(model_id)
    version_id = url_utils.revert_valid_url_part(version_id)
    with state_stores.artifact_store_session() as handle:
        try:
            return handle.read_artifacts(model_id, version_id, limit, offset)
        except Exception as ex:
            raise_http_internal_error(ex)

search_artifacts(model_id, version_id, query, current_user)

Search artifacts.

Parameters:

Name Type Description Default
model_id str

The model identifier

required
version_id str

The version identifier

required
query Query

The artifact query

required

Returns:

Type Description
List[ArtifactModel]

The read artifacts

Source code in mlte/backend/api/endpoints/artifact.py
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
@router.post("/search")
def search_artifacts(
    model_id: str,
    version_id: str,
    query: Query,
    current_user: AuthorizedUser,
) -> List[ArtifactModel]:
    """
    Search artifacts.

    :param model_id: The model identifier
    :param version_id: The version identifier
    :param query: The artifact query
    :return: The read artifacts
    """
    model_id = url_utils.revert_valid_url_part(model_id)
    version_id = url_utils.revert_valid_url_part(version_id)
    with state_stores.artifact_store_session() as handle:
        try:
            return handle.search_artifacts(model_id, version_id, query)
        except Exception as ex:
            raise_http_internal_error(ex)

write_artifact(model_id, version_id, request, current_user)

Write an artifact.

Parameters:

Name Type Description Default
model_id str

The model identifier

required
version_id str

The version identifier

required
request WriteArtifactRequest

The artifact write request

required

Returns:

Type Description
WriteArtifactResponse

The created artifact

Source code in mlte/backend/api/endpoints/artifact.py
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
@router.post("")
def write_artifact(
    model_id: str,
    version_id: str,
    request: WriteArtifactRequest,
    current_user: AuthorizedUser,
) -> WriteArtifactResponse:
    """
    Write an artifact.
    :param model_id: The model identifier
    :param version_id: The version identifier
    :param request: The artifact write request
    :return: The created artifact
    """
    model_id = url_utils.revert_valid_url_part(model_id)
    version_id = url_utils.revert_valid_url_part(version_id)
    with state_stores.artifact_store_session() as artifact_store:
        try:
            artifact = artifact_store.write_artifact_with_header(
                model_id,
                version_id,
                request.artifact,
                force=request.force,
                parents=request.parents,
                user=current_user.username,
            )
            return WriteArtifactResponse(artifact=artifact)
        except errors.ErrorNotFound as e:
            raise HTTPException(
                status_code=codes.NOT_FOUND, detail=f"{e} not found."
            )
        except errors.ErrorAlreadyExists as e:
            raise HTTPException(
                status_code=codes.ALREADY_EXISTS, detail=f"{e} already exists."
            )
        except Exception as ex:
            raise_http_internal_error(ex)