truefoundry 0.5.5rc2__py3-none-any.whl → 0.5.6rc1__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 +25 -25
- truefoundry/deploy/cli/commands/__init__.py +0 -1
- truefoundry/deploy/lib/clients/servicefoundry_client.py +20 -16
- truefoundry/deploy/v2/lib/deploy.py +23 -15
- truefoundry/deploy/v2/lib/patched_models.py +3 -3
- truefoundry/ml/autogen/client/__init__.py +4 -4
- truefoundry/ml/autogen/client/api/experiments_api.py +0 -156
- truefoundry/ml/autogen/client/api/mlfoundry_artifacts_api.py +49 -305
- truefoundry/ml/autogen/client/models/__init__.py +4 -4
- truefoundry/ml/autogen/client/models/agent.py +64 -13
- truefoundry/ml/autogen/client/models/agent_open_api_tool.py +63 -17
- truefoundry/ml/autogen/client/models/agent_open_api_tool_with_fqn.py +63 -17
- truefoundry/ml/autogen/client/models/agent_with_fqn.py +64 -12
- truefoundry/ml/autogen/client/models/artifact_version_manifest.py +39 -4
- truefoundry/ml/autogen/client/models/chat_prompt.py +60 -22
- truefoundry/ml/autogen/client/models/{external_artifact_source.py → external_blob_storage_source.py} +10 -11
- truefoundry/ml/autogen/client/models/model_version_manifest.py +39 -4
- truefoundry/ml/autogen/client/models/source.py +22 -22
- truefoundry/ml/autogen/client/models/source1.py +22 -22
- truefoundry/ml/autogen/client/models/{true_foundry_artifact_source.py → true_foundry_managed_source.py} +12 -11
- truefoundry/ml/autogen/client_README.md +2 -3
- truefoundry/ml/autogen/entities/artifacts.py +87 -69
- truefoundry/ml/log_types/artifacts/artifact.py +26 -18
- truefoundry/ml/log_types/artifacts/general_artifact.py +4 -13
- truefoundry/ml/log_types/artifacts/model.py +28 -21
- truefoundry/ml/mlfoundry_api.py +2 -6
- truefoundry/workflow/task.py +1 -1
- {truefoundry-0.5.5rc2.dist-info → truefoundry-0.5.6rc1.dist-info}/METADATA +2 -2
- {truefoundry-0.5.5rc2.dist-info → truefoundry-0.5.6rc1.dist-info}/RECORD +31 -32
- truefoundry/deploy/cli/commands/build_logs_command.py +0 -89
- {truefoundry-0.5.5rc2.dist-info → truefoundry-0.5.6rc1.dist-info}/WHEEL +0 -0
- {truefoundry-0.5.5rc2.dist-info → truefoundry-0.5.6rc1.dist-info}/entry_points.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: application.json
|
|
3
|
-
# timestamp: 2025-01-
|
|
3
|
+
# timestamp: 2025-01-29T10:40:43+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -149,7 +149,7 @@ class BaseAutoscaling(BaseModel):
|
|
|
149
149
|
|
|
150
150
|
class BasicAuthCreds(BaseModel):
|
|
151
151
|
"""
|
|
152
|
-
+label=Username and password
|
|
152
|
+
+label=Username and password
|
|
153
153
|
"""
|
|
154
154
|
|
|
155
155
|
type: Literal["basic_auth"] = Field(..., description="+value=basic_auth")
|
|
@@ -979,7 +979,7 @@ class SecretMount(BaseModel):
|
|
|
979
979
|
)
|
|
980
980
|
secret_fqn: constr(regex=r"^tfy-secret:\/\/.+:.+:.+$") = Field(
|
|
981
981
|
...,
|
|
982
|
-
description="+label=Secret\n+usage=The
|
|
982
|
+
description="+label=Secret\n+usage=The TrueFoundry secret whose value will be the file content.",
|
|
983
983
|
)
|
|
984
984
|
|
|
985
985
|
|
|
@@ -1111,20 +1111,10 @@ class TaskPythonBuild(BaseModel):
|
|
|
1111
1111
|
)
|
|
1112
1112
|
|
|
1113
1113
|
|
|
1114
|
-
class
|
|
1115
|
-
"""
|
|
1116
|
-
+label=Login with truefoundry
|
|
1117
|
-
"""
|
|
1118
|
-
|
|
1119
|
-
type: Literal["truefoundry_oauth"] = Field(
|
|
1120
|
-
..., description="+value=truefoundry_oauth"
|
|
1121
|
-
)
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
class TruefoundryArtifactSource(BaseModel):
|
|
1114
|
+
class TrueFoundryArtifactSource(BaseModel):
|
|
1125
1115
|
"""
|
|
1126
|
-
+docs=Input for Artifact from
|
|
1127
|
-
+label=
|
|
1116
|
+
+docs=Input for Artifact from TrueFoundry Artifact Registry
|
|
1117
|
+
+label=TrueFoundry Artifact Source
|
|
1128
1118
|
"""
|
|
1129
1119
|
|
|
1130
1120
|
type: Literal["truefoundry-artifact"] = Field(
|
|
@@ -1140,6 +1130,16 @@ class TruefoundryArtifactSource(BaseModel):
|
|
|
1140
1130
|
)
|
|
1141
1131
|
|
|
1142
1132
|
|
|
1133
|
+
class TrueFoundryInteractiveLogin(BaseModel):
|
|
1134
|
+
"""
|
|
1135
|
+
+label=Login with truefoundry
|
|
1136
|
+
"""
|
|
1137
|
+
|
|
1138
|
+
type: Literal["truefoundry_oauth"] = Field(
|
|
1139
|
+
..., description="+value=truefoundry_oauth"
|
|
1140
|
+
)
|
|
1141
|
+
|
|
1142
|
+
|
|
1143
1143
|
class VolumeBrowser(BaseModel):
|
|
1144
1144
|
"""
|
|
1145
1145
|
+label=Volume Browser
|
|
@@ -1172,7 +1172,7 @@ class VolumeMount(BaseModel):
|
|
|
1172
1172
|
)
|
|
1173
1173
|
volume_fqn: constr(regex=r"^tfy-volume:\/\/.+:.+:.+$") = Field(
|
|
1174
1174
|
...,
|
|
1175
|
-
description="+label=Volume\n+usage=The
|
|
1175
|
+
description="+label=Volume\n+usage=The TrueFoundry volume that needs to be mounted.",
|
|
1176
1176
|
)
|
|
1177
1177
|
|
|
1178
1178
|
|
|
@@ -1203,7 +1203,7 @@ class ArtifactsDownload(BaseModel):
|
|
|
1203
1203
|
"""
|
|
1204
1204
|
|
|
1205
1205
|
cache_volume: Optional[ArtifactsCacheVolume] = None
|
|
1206
|
-
artifacts: List[Union[
|
|
1206
|
+
artifacts: List[Union[TrueFoundryArtifactSource, HuggingfaceArtifactSource]] = (
|
|
1207
1207
|
Field(
|
|
1208
1208
|
..., description="+label=Artifacts\n+usage=List of artifacts to be cached"
|
|
1209
1209
|
)
|
|
@@ -1228,7 +1228,7 @@ class BaseWorkbenchInput(BaseModel):
|
|
|
1228
1228
|
+docs=Describes the configuration for the service
|
|
1229
1229
|
"""
|
|
1230
1230
|
|
|
1231
|
-
name: constr(regex=r"^[a-z][a-z0-9
|
|
1231
|
+
name: constr(regex=r"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$") = Field(
|
|
1232
1232
|
...,
|
|
1233
1233
|
description="+usage=Name of the workbench. This uniquely identifies this workbench in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long\n+sort=1\n+message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number",
|
|
1234
1234
|
)
|
|
@@ -1378,7 +1378,7 @@ class HealthProbe(BaseModel):
|
|
|
1378
1378
|
|
|
1379
1379
|
class Helm(BaseModel):
|
|
1380
1380
|
type: Literal["helm"] = Field(..., description="+value=helm")
|
|
1381
|
-
name: constr(regex=r"^[a-z][a-z0-9
|
|
1381
|
+
name: constr(regex=r"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$") = Field(
|
|
1382
1382
|
...,
|
|
1383
1383
|
description="+sort=1\n+message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number\n+usage=Name of the Helm deployment. This will be set as the release name of the chart you are deploying.",
|
|
1384
1384
|
)
|
|
@@ -1405,7 +1405,7 @@ class Job(BaseModel):
|
|
|
1405
1405
|
"""
|
|
1406
1406
|
|
|
1407
1407
|
type: Literal["job"] = Field(..., description="+value=job")
|
|
1408
|
-
name: constr(regex=r"^[a-z][a-z0-9
|
|
1408
|
+
name: constr(regex=r"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$") = Field(
|
|
1409
1409
|
...,
|
|
1410
1410
|
description="+usage=Name of the job\n+sort=1\n+message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number",
|
|
1411
1411
|
)
|
|
@@ -1673,7 +1673,7 @@ class SparkExecutorConfig(BaseModel):
|
|
|
1673
1673
|
|
|
1674
1674
|
class SparkJob(BaseModel):
|
|
1675
1675
|
type: Literal["spark-job"] = Field(..., description="+value=spark-job\n+sort=1")
|
|
1676
|
-
name: constr(regex=r"^[a-z][a-z0-9
|
|
1676
|
+
name: constr(regex=r"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$") = Field(
|
|
1677
1677
|
...,
|
|
1678
1678
|
description="+label=Name\n+usage=Name of the job\n+message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number\n+sort=2",
|
|
1679
1679
|
)
|
|
@@ -1715,7 +1715,7 @@ class SparkJob(BaseModel):
|
|
|
1715
1715
|
|
|
1716
1716
|
class Volume(BaseModel):
|
|
1717
1717
|
type: Literal["volume"] = Field(..., description="+value=volume")
|
|
1718
|
-
name: constr(regex=r"^[a-z][a-z0-9
|
|
1718
|
+
name: constr(regex=r"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$") = Field(
|
|
1719
1719
|
...,
|
|
1720
1720
|
description="+sort=1\n+message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number\n+usage=Name of the Volume. This will be set as the volume name.",
|
|
1721
1721
|
)
|
|
@@ -1750,7 +1750,7 @@ class WorkerConfig(BaseModel):
|
|
|
1750
1750
|
|
|
1751
1751
|
|
|
1752
1752
|
class BaseService(BaseModel):
|
|
1753
|
-
name: constr(regex=r"^[a-z][a-z0-9
|
|
1753
|
+
name: constr(regex=r"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$") = Field(
|
|
1754
1754
|
...,
|
|
1755
1755
|
description="+usage=Name of the service. This uniquely identifies this service in the workspace.\n> Name can only contain alphanumeric characters and '-' and can be atmost 25 characters long\n+sort=1\n+message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number",
|
|
1756
1756
|
)
|
|
@@ -1845,7 +1845,7 @@ class Workflow(BaseModel):
|
|
|
1845
1845
|
"""
|
|
1846
1846
|
|
|
1847
1847
|
type: Literal["workflow"] = Field(..., description="+value=workflow")
|
|
1848
|
-
name: constr(regex=r"^[a-z][a-z0-9
|
|
1848
|
+
name: constr(regex=r"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$") = Field(
|
|
1849
1849
|
...,
|
|
1850
1850
|
description="+usage=Name of the workflow\n+sort=1\n+message=3 to 32 lower case characters long alphanumeric word, may contain - in between, cannot start with a number",
|
|
1851
1851
|
)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
from truefoundry.deploy.cli.commands.apply_command import get_apply_command
|
|
2
2
|
from truefoundry.deploy.cli.commands.build_command import get_build_command
|
|
3
|
-
from truefoundry.deploy.cli.commands.build_logs_command import get_build_logs_command
|
|
4
3
|
from truefoundry.deploy.cli.commands.create_command import get_create_command
|
|
5
4
|
from truefoundry.deploy.cli.commands.delete_command import get_delete_command
|
|
6
5
|
from truefoundry.deploy.cli.commands.deploy_command import get_deploy_command
|
|
@@ -273,20 +273,33 @@ class ServiceFoundryServiceClient(BaseServiceFoundryServiceClient):
|
|
|
273
273
|
subscribe_message: str,
|
|
274
274
|
socketio_path: str = "socket.io",
|
|
275
275
|
callback=None,
|
|
276
|
-
|
|
277
|
-
):
|
|
276
|
+
) -> socketio.Client:
|
|
278
277
|
callback = callback or OutputCallBack()
|
|
279
278
|
sio = socketio.Client(request_timeout=60)
|
|
280
279
|
callback.print_line("Waiting for the task to start...")
|
|
280
|
+
next_log_start_timestamp = query_dict.get("startTs")
|
|
281
281
|
|
|
282
282
|
@sio.on(subscribe_message)
|
|
283
283
|
def logs(data):
|
|
284
284
|
try:
|
|
285
285
|
_log = json.loads(data)
|
|
286
|
-
|
|
286
|
+
body = _log["body"]
|
|
287
|
+
callback.print_line(self._get_log_print_line(body))
|
|
288
|
+
nonlocal next_log_start_timestamp
|
|
289
|
+
next_log_start_timestamp = body["time"]
|
|
287
290
|
except Exception:
|
|
288
291
|
logger.exception(f"Error while parsing log line, {data!r}")
|
|
289
292
|
|
|
293
|
+
@sio.on("connect")
|
|
294
|
+
def on_connect():
|
|
295
|
+
# TODO: We should have have a timeout here. `emit` does
|
|
296
|
+
# not support timeout. Explore `sio.call`.
|
|
297
|
+
query_dict["startTs"] = next_log_start_timestamp
|
|
298
|
+
sio.emit(
|
|
299
|
+
subscribe_message,
|
|
300
|
+
json.dumps(query_dict),
|
|
301
|
+
)
|
|
302
|
+
|
|
290
303
|
def sio_disconnect_no_exception():
|
|
291
304
|
try:
|
|
292
305
|
sio.disconnect()
|
|
@@ -300,14 +313,7 @@ class ServiceFoundryServiceClient(BaseServiceFoundryServiceClient):
|
|
|
300
313
|
headers=self._get_header(),
|
|
301
314
|
socketio_path=socketio_path,
|
|
302
315
|
)
|
|
303
|
-
|
|
304
|
-
# not support timeout. Explore `sio.call`.
|
|
305
|
-
sio.emit(
|
|
306
|
-
subscribe_message,
|
|
307
|
-
json.dumps(query_dict),
|
|
308
|
-
)
|
|
309
|
-
if wait:
|
|
310
|
-
sio.wait()
|
|
316
|
+
return sio
|
|
311
317
|
|
|
312
318
|
@check_min_cli_version
|
|
313
319
|
def get_deployment(self, application_id: str, deployment_id: str) -> Deployment:
|
|
@@ -372,11 +378,10 @@ class ServiceFoundryServiceClient(BaseServiceFoundryServiceClient):
|
|
|
372
378
|
self,
|
|
373
379
|
build_response: BuildResponse,
|
|
374
380
|
callback=None,
|
|
375
|
-
|
|
376
|
-
):
|
|
381
|
+
) -> socketio.Client:
|
|
377
382
|
callback = callback or OutputCallBack()
|
|
378
383
|
tail_logs_obj = json.loads(build_response.tailLogsUrl)
|
|
379
|
-
self._tail_logs(
|
|
384
|
+
socket = self._tail_logs(
|
|
380
385
|
tail_logs_url=urljoin(
|
|
381
386
|
tail_logs_obj["uri"], f"/?type={BUILD_LOGS_SUBSCRIBE_MESSAGE}"
|
|
382
387
|
),
|
|
@@ -386,9 +391,9 @@ class ServiceFoundryServiceClient(BaseServiceFoundryServiceClient):
|
|
|
386
391
|
"startTs": build_response.logsStartTs,
|
|
387
392
|
},
|
|
388
393
|
callback=callback,
|
|
389
|
-
wait=wait,
|
|
390
394
|
subscribe_message=BUILD_LOGS_SUBSCRIBE_MESSAGE,
|
|
391
395
|
)
|
|
396
|
+
return socket
|
|
392
397
|
|
|
393
398
|
@check_min_cli_version
|
|
394
399
|
def tail_logs_for_deployment(
|
|
@@ -416,7 +421,6 @@ class ServiceFoundryServiceClient(BaseServiceFoundryServiceClient):
|
|
|
416
421
|
},
|
|
417
422
|
},
|
|
418
423
|
callback=callback,
|
|
419
|
-
wait=wait,
|
|
420
424
|
subscribe_message=DEPLOYMENT_LOGS_SUBSCRIBE_MESSAGE,
|
|
421
425
|
)
|
|
422
426
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import sys
|
|
2
2
|
import time
|
|
3
|
-
from typing import
|
|
3
|
+
from typing import Optional, TypeVar
|
|
4
4
|
|
|
5
|
+
import socketio
|
|
5
6
|
from rich.status import Status
|
|
6
7
|
|
|
7
8
|
from truefoundry.common.utils import poll_for_function
|
|
@@ -96,18 +97,15 @@ def _log_application_dashboard_url(deployment: Deployment, log_message: str):
|
|
|
96
97
|
logger.info(log_message, url)
|
|
97
98
|
|
|
98
99
|
|
|
99
|
-
def _tail_build_logs(
|
|
100
|
+
def _tail_build_logs(build_response: BuildResponse) -> socketio.Client:
|
|
100
101
|
client = ServiceFoundryServiceClient()
|
|
101
102
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
for build_response in build_responses:
|
|
106
|
-
logger.info("Tailing build logs for '%s'", build_response.componentName)
|
|
107
|
-
client.tail_build_logs(build_response=build_response, wait=True)
|
|
103
|
+
logger.info("Tailing build logs for '%s'", build_response.componentName)
|
|
104
|
+
socket = client.tail_build_logs(build_response=build_response)
|
|
105
|
+
return socket
|
|
108
106
|
|
|
109
107
|
|
|
110
|
-
def _deploy_wait_handler(
|
|
108
|
+
def _deploy_wait_handler( # noqa: C901
|
|
111
109
|
deployment: Deployment,
|
|
112
110
|
) -> Optional[DeploymentTransitionStatus]:
|
|
113
111
|
_log_application_dashboard_url(
|
|
@@ -122,9 +120,10 @@ def _deploy_wait_handler(
|
|
|
122
120
|
last_status_printed = None
|
|
123
121
|
client = ServiceFoundryServiceClient()
|
|
124
122
|
start_time = time.monotonic()
|
|
125
|
-
total_timeout_time: int =
|
|
123
|
+
total_timeout_time: int = 600
|
|
126
124
|
poll_interval_seconds = 5
|
|
127
125
|
time_elapsed = 0
|
|
126
|
+
socket: socketio.Client = None
|
|
128
127
|
|
|
129
128
|
for deployment_statuses in poll_for_function(
|
|
130
129
|
client.get_deployment_statuses,
|
|
@@ -150,20 +149,29 @@ def _deploy_wait_handler(
|
|
|
150
149
|
last_status_printed = status_to_print
|
|
151
150
|
|
|
152
151
|
if latest_deployment_status.state.isTerminalState:
|
|
152
|
+
if socket and socket.connected:
|
|
153
|
+
socket.disconnect()
|
|
153
154
|
break
|
|
154
155
|
|
|
155
156
|
if (
|
|
156
157
|
latest_deployment_status.transition
|
|
157
158
|
== DeploymentTransitionStatus.BUILDING
|
|
158
159
|
):
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
160
|
+
if not socket:
|
|
161
|
+
build_responses = client.get_deployment_build_response(
|
|
162
|
+
application_id=deployment.applicationId,
|
|
163
|
+
deployment_id=deployment.id,
|
|
164
|
+
)
|
|
165
|
+
socket = _tail_build_logs(build_responses[0])
|
|
163
166
|
|
|
164
167
|
time_elapsed = time.monotonic() - start_time
|
|
165
168
|
if time_elapsed > total_timeout_time:
|
|
166
|
-
logger.warning(
|
|
169
|
+
logger.warning(
|
|
170
|
+
"Polled server for %s secs. Disconnecting from server, the deployment will still continue.",
|
|
171
|
+
int(time_elapsed),
|
|
172
|
+
)
|
|
173
|
+
if socket and socket.connected:
|
|
174
|
+
socket.disconnect()
|
|
167
175
|
break
|
|
168
176
|
|
|
169
177
|
return last_status_printed
|
|
@@ -504,12 +504,12 @@ class HuggingfaceArtifactSource(models.HuggingfaceArtifactSource, PatchedModelBa
|
|
|
504
504
|
type: Literal["huggingface-hub"] = "huggingface-hub"
|
|
505
505
|
|
|
506
506
|
|
|
507
|
-
class
|
|
507
|
+
class TrueFoundryArtifactSource(models.TrueFoundryArtifactSource, PatchedModelBase):
|
|
508
508
|
type: Literal["truefoundry-artifact"] = "truefoundry-artifact"
|
|
509
509
|
|
|
510
510
|
|
|
511
|
-
#
|
|
512
|
-
|
|
511
|
+
# Deprecated alias, kept for backward compatibility
|
|
512
|
+
TruefoundryArtifactSource = TrueFoundryArtifactSource
|
|
513
513
|
|
|
514
514
|
|
|
515
515
|
class ArtifactsDownload(models.ArtifactsDownload, PatchedModelBase):
|
|
@@ -175,8 +175,8 @@ from truefoundry.ml.autogen.client.models.experiment_tag_dto import ExperimentTa
|
|
|
175
175
|
from truefoundry.ml.autogen.client.models.export_deployment_files_request_dto import (
|
|
176
176
|
ExportDeploymentFilesRequestDto,
|
|
177
177
|
)
|
|
178
|
-
from truefoundry.ml.autogen.client.models.
|
|
179
|
-
|
|
178
|
+
from truefoundry.ml.autogen.client.models.external_blob_storage_source import (
|
|
179
|
+
ExternalBlobStorageSource,
|
|
180
180
|
)
|
|
181
181
|
from truefoundry.ml.autogen.client.models.fast_ai_framework import FastAIFramework
|
|
182
182
|
from truefoundry.ml.autogen.client.models.file_info_dto import FileInfoDto
|
|
@@ -403,8 +403,8 @@ from truefoundry.ml.autogen.client.models.trigger_job_run_config_request_dto imp
|
|
|
403
403
|
from truefoundry.ml.autogen.client.models.trigger_job_run_config_response_dto import (
|
|
404
404
|
TriggerJobRunConfigResponseDto,
|
|
405
405
|
)
|
|
406
|
-
from truefoundry.ml.autogen.client.models.
|
|
407
|
-
|
|
406
|
+
from truefoundry.ml.autogen.client.models.true_foundry_managed_source import (
|
|
407
|
+
TrueFoundryManagedSource,
|
|
408
408
|
)
|
|
409
409
|
from truefoundry.ml.autogen.client.models.update_artifact_version_request_dto import (
|
|
410
410
|
UpdateArtifactVersionRequestDto,
|
|
@@ -1182,162 +1182,6 @@ class ExperimentsApi:
|
|
|
1182
1182
|
_request_auth=_params.get("_request_auth"),
|
|
1183
1183
|
)
|
|
1184
1184
|
|
|
1185
|
-
@validate_arguments
|
|
1186
|
-
def put_privacy_type_put(
|
|
1187
|
-
self, set_experiment_tag_request_dto: SetExperimentTagRequestDto, **kwargs
|
|
1188
|
-
) -> object: # noqa: E501
|
|
1189
|
-
"""Put Privacy Type # noqa: E501
|
|
1190
|
-
|
|
1191
|
-
Set the privacy type of an expermient to Private or Public(publically readable) # noqa: E501
|
|
1192
|
-
This method makes a synchronous HTTP request by default. To make an
|
|
1193
|
-
asynchronous HTTP request, please pass async_req=True
|
|
1194
|
-
|
|
1195
|
-
>>> thread = api.put_privacy_type_put(set_experiment_tag_request_dto, async_req=True)
|
|
1196
|
-
>>> result = thread.get()
|
|
1197
|
-
|
|
1198
|
-
:param set_experiment_tag_request_dto: (required)
|
|
1199
|
-
:type set_experiment_tag_request_dto: SetExperimentTagRequestDto
|
|
1200
|
-
:param async_req: Whether to execute the request asynchronously.
|
|
1201
|
-
:type async_req: bool, optional
|
|
1202
|
-
:param _request_timeout: timeout setting for this request.
|
|
1203
|
-
If one number provided, it will be total request
|
|
1204
|
-
timeout. It can also be a pair (tuple) of
|
|
1205
|
-
(connection, read) timeouts.
|
|
1206
|
-
:return: Returns the result object.
|
|
1207
|
-
If the method is called asynchronously,
|
|
1208
|
-
returns the request thread.
|
|
1209
|
-
:rtype: object
|
|
1210
|
-
"""
|
|
1211
|
-
kwargs["_return_http_data_only"] = True
|
|
1212
|
-
if "_preload_content" in kwargs:
|
|
1213
|
-
message = "Error! Please call the put_privacy_type_put_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
|
|
1214
|
-
raise ValueError(message)
|
|
1215
|
-
return self.put_privacy_type_put_with_http_info(
|
|
1216
|
-
set_experiment_tag_request_dto, **kwargs
|
|
1217
|
-
) # noqa: E501
|
|
1218
|
-
|
|
1219
|
-
@validate_arguments
|
|
1220
|
-
def put_privacy_type_put_with_http_info(
|
|
1221
|
-
self, set_experiment_tag_request_dto: SetExperimentTagRequestDto, **kwargs
|
|
1222
|
-
) -> ApiResponse: # noqa: E501
|
|
1223
|
-
"""Put Privacy Type # noqa: E501
|
|
1224
|
-
|
|
1225
|
-
Set the privacy type of an expermient to Private or Public(publically readable) # noqa: E501
|
|
1226
|
-
This method makes a synchronous HTTP request by default. To make an
|
|
1227
|
-
asynchronous HTTP request, please pass async_req=True
|
|
1228
|
-
|
|
1229
|
-
>>> thread = api.put_privacy_type_put_with_http_info(set_experiment_tag_request_dto, async_req=True)
|
|
1230
|
-
>>> result = thread.get()
|
|
1231
|
-
|
|
1232
|
-
:param set_experiment_tag_request_dto: (required)
|
|
1233
|
-
:type set_experiment_tag_request_dto: SetExperimentTagRequestDto
|
|
1234
|
-
:param async_req: Whether to execute the request asynchronously.
|
|
1235
|
-
:type async_req: bool, optional
|
|
1236
|
-
:param _preload_content: if False, the ApiResponse.data will
|
|
1237
|
-
be set to none and raw_data will store the
|
|
1238
|
-
HTTP response body without reading/decoding.
|
|
1239
|
-
Default is True.
|
|
1240
|
-
:type _preload_content: bool, optional
|
|
1241
|
-
:param _return_http_data_only: response data instead of ApiResponse
|
|
1242
|
-
object with status code, headers, etc
|
|
1243
|
-
:type _return_http_data_only: bool, optional
|
|
1244
|
-
:param _request_timeout: timeout setting for this request. If one
|
|
1245
|
-
number provided, it will be total request
|
|
1246
|
-
timeout. It can also be a pair (tuple) of
|
|
1247
|
-
(connection, read) timeouts.
|
|
1248
|
-
:param _request_auth: set to override the auth_settings for an a single
|
|
1249
|
-
request; this effectively ignores the authentication
|
|
1250
|
-
in the spec for a single request.
|
|
1251
|
-
:type _request_auth: dict, optional
|
|
1252
|
-
:type _content_type: string, optional: force content-type for the request
|
|
1253
|
-
:return: Returns the result object.
|
|
1254
|
-
If the method is called asynchronously,
|
|
1255
|
-
returns the request thread.
|
|
1256
|
-
:rtype: tuple(object, status_code(int), headers(HTTPHeaderDict))
|
|
1257
|
-
"""
|
|
1258
|
-
|
|
1259
|
-
_params = locals()
|
|
1260
|
-
|
|
1261
|
-
_all_params = ["set_experiment_tag_request_dto"]
|
|
1262
|
-
_all_params.extend(
|
|
1263
|
-
[
|
|
1264
|
-
"async_req",
|
|
1265
|
-
"_return_http_data_only",
|
|
1266
|
-
"_preload_content",
|
|
1267
|
-
"_request_timeout",
|
|
1268
|
-
"_request_auth",
|
|
1269
|
-
"_content_type",
|
|
1270
|
-
"_headers",
|
|
1271
|
-
]
|
|
1272
|
-
)
|
|
1273
|
-
|
|
1274
|
-
# validate the arguments
|
|
1275
|
-
for _key, _val in _params["kwargs"].items():
|
|
1276
|
-
if _key not in _all_params:
|
|
1277
|
-
raise ApiTypeError(
|
|
1278
|
-
"Got an unexpected keyword argument '%s'"
|
|
1279
|
-
" to method put_privacy_type_put" % _key
|
|
1280
|
-
)
|
|
1281
|
-
_params[_key] = _val
|
|
1282
|
-
del _params["kwargs"]
|
|
1283
|
-
|
|
1284
|
-
_collection_formats = {}
|
|
1285
|
-
|
|
1286
|
-
# process the path parameters
|
|
1287
|
-
_path_params = {}
|
|
1288
|
-
|
|
1289
|
-
# process the query parameters
|
|
1290
|
-
_query_params = []
|
|
1291
|
-
# process the header parameters
|
|
1292
|
-
_header_params = dict(_params.get("_headers", {}))
|
|
1293
|
-
# process the form parameters
|
|
1294
|
-
_form_params = []
|
|
1295
|
-
_files = {}
|
|
1296
|
-
# process the body parameter
|
|
1297
|
-
_body_params = None
|
|
1298
|
-
if _params["set_experiment_tag_request_dto"] is not None:
|
|
1299
|
-
_body_params = _params["set_experiment_tag_request_dto"]
|
|
1300
|
-
|
|
1301
|
-
# set the HTTP header `Accept`
|
|
1302
|
-
_header_params["Accept"] = self.api_client.select_header_accept(
|
|
1303
|
-
["application/json"]
|
|
1304
|
-
) # noqa: E501
|
|
1305
|
-
|
|
1306
|
-
# set the HTTP header `Content-Type`
|
|
1307
|
-
_content_types_list = _params.get(
|
|
1308
|
-
"_content_type",
|
|
1309
|
-
self.api_client.select_header_content_type(["application/json"]),
|
|
1310
|
-
)
|
|
1311
|
-
if _content_types_list:
|
|
1312
|
-
_header_params["Content-Type"] = _content_types_list
|
|
1313
|
-
|
|
1314
|
-
# authentication setting
|
|
1315
|
-
_auth_settings = ["HTTPBearer", "APIKeyCookie"] # noqa: E501
|
|
1316
|
-
|
|
1317
|
-
_response_types_map = {
|
|
1318
|
-
"200": "object",
|
|
1319
|
-
"422": "HTTPValidationError",
|
|
1320
|
-
}
|
|
1321
|
-
|
|
1322
|
-
return self.api_client.call_api(
|
|
1323
|
-
"/api/2.0/mlflow/experiments/privacy-type",
|
|
1324
|
-
"PUT",
|
|
1325
|
-
_path_params,
|
|
1326
|
-
_query_params,
|
|
1327
|
-
_header_params,
|
|
1328
|
-
body=_body_params,
|
|
1329
|
-
post_params=_form_params,
|
|
1330
|
-
files=_files,
|
|
1331
|
-
response_types_map=_response_types_map,
|
|
1332
|
-
auth_settings=_auth_settings,
|
|
1333
|
-
async_req=_params.get("async_req"),
|
|
1334
|
-
_return_http_data_only=_params.get("_return_http_data_only"), # noqa: E501
|
|
1335
|
-
_preload_content=_params.get("_preload_content", True),
|
|
1336
|
-
_request_timeout=_params.get("_request_timeout"),
|
|
1337
|
-
collection_formats=_collection_formats,
|
|
1338
|
-
_request_auth=_params.get("_request_auth"),
|
|
1339
|
-
)
|
|
1340
|
-
|
|
1341
1185
|
@validate_arguments
|
|
1342
1186
|
def restore_experiment_post(
|
|
1343
1187
|
self, experiment_id_request_dto: ExperimentIdRequestDto, **kwargs
|