databricks-sdk 0.55.0__py3-none-any.whl → 0.57.0__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 databricks-sdk might be problematic. Click here for more details.
- databricks/sdk/__init__.py +41 -24
- databricks/sdk/service/aibuilder.py +505 -0
- databricks/sdk/service/apps.py +14 -42
- databricks/sdk/service/billing.py +167 -220
- databricks/sdk/service/catalog.py +462 -1235
- databricks/sdk/service/cleanrooms.py +26 -43
- databricks/sdk/service/compute.py +75 -211
- databricks/sdk/service/dashboards.py +77 -511
- databricks/sdk/service/database.py +1271 -0
- databricks/sdk/service/files.py +20 -54
- databricks/sdk/service/iam.py +61 -171
- databricks/sdk/service/jobs.py +453 -68
- databricks/sdk/service/marketplace.py +46 -146
- databricks/sdk/service/ml.py +453 -477
- databricks/sdk/service/oauth2.py +17 -45
- databricks/sdk/service/pipelines.py +125 -40
- databricks/sdk/service/provisioning.py +30 -93
- databricks/sdk/service/qualitymonitorv2.py +265 -0
- databricks/sdk/service/serving.py +106 -46
- databricks/sdk/service/settings.py +1062 -390
- databricks/sdk/service/sharing.py +33 -88
- databricks/sdk/service/sql.py +292 -185
- databricks/sdk/service/vectorsearch.py +13 -43
- databricks/sdk/service/workspace.py +35 -105
- databricks/sdk/version.py +1 -1
- {databricks_sdk-0.55.0.dist-info → databricks_sdk-0.57.0.dist-info}/METADATA +1 -1
- {databricks_sdk-0.55.0.dist-info → databricks_sdk-0.57.0.dist-info}/RECORD +31 -28
- {databricks_sdk-0.55.0.dist-info → databricks_sdk-0.57.0.dist-info}/WHEEL +0 -0
- {databricks_sdk-0.55.0.dist-info → databricks_sdk-0.57.0.dist-info}/licenses/LICENSE +0 -0
- {databricks_sdk-0.55.0.dist-info → databricks_sdk-0.57.0.dist-info}/licenses/NOTICE +0 -0
- {databricks_sdk-0.55.0.dist-info → databricks_sdk-0.57.0.dist-info}/top_level.txt +0 -0
databricks/sdk/service/ml.py
CHANGED
|
@@ -271,109 +271,6 @@ class ApproveTransitionRequestResponse:
|
|
|
271
271
|
return cls(activity=_from_dict(d, "activity", Activity))
|
|
272
272
|
|
|
273
273
|
|
|
274
|
-
@dataclass
|
|
275
|
-
class ArtifactCredentialInfo:
|
|
276
|
-
headers: Optional[List[ArtifactCredentialInfoHttpHeader]] = None
|
|
277
|
-
"""A collection of HTTP headers that should be specified when uploading to or downloading from the
|
|
278
|
-
specified `signed_uri`."""
|
|
279
|
-
|
|
280
|
-
path: Optional[str] = None
|
|
281
|
-
"""The path, relative to the Run's artifact root location, of the artifact that can be accessed
|
|
282
|
-
with the credential."""
|
|
283
|
-
|
|
284
|
-
run_id: Optional[str] = None
|
|
285
|
-
"""The ID of the MLflow Run containing the artifact that can be accessed with the credential."""
|
|
286
|
-
|
|
287
|
-
signed_uri: Optional[str] = None
|
|
288
|
-
"""The signed URI credential that provides access to the artifact."""
|
|
289
|
-
|
|
290
|
-
type: Optional[ArtifactCredentialType] = None
|
|
291
|
-
"""The type of the signed credential URI (e.g., an AWS presigned URL or an Azure Shared Access
|
|
292
|
-
Signature URI)."""
|
|
293
|
-
|
|
294
|
-
def as_dict(self) -> dict:
|
|
295
|
-
"""Serializes the ArtifactCredentialInfo into a dictionary suitable for use as a JSON request body."""
|
|
296
|
-
body = {}
|
|
297
|
-
if self.headers:
|
|
298
|
-
body["headers"] = [v.as_dict() for v in self.headers]
|
|
299
|
-
if self.path is not None:
|
|
300
|
-
body["path"] = self.path
|
|
301
|
-
if self.run_id is not None:
|
|
302
|
-
body["run_id"] = self.run_id
|
|
303
|
-
if self.signed_uri is not None:
|
|
304
|
-
body["signed_uri"] = self.signed_uri
|
|
305
|
-
if self.type is not None:
|
|
306
|
-
body["type"] = self.type.value
|
|
307
|
-
return body
|
|
308
|
-
|
|
309
|
-
def as_shallow_dict(self) -> dict:
|
|
310
|
-
"""Serializes the ArtifactCredentialInfo into a shallow dictionary of its immediate attributes."""
|
|
311
|
-
body = {}
|
|
312
|
-
if self.headers:
|
|
313
|
-
body["headers"] = self.headers
|
|
314
|
-
if self.path is not None:
|
|
315
|
-
body["path"] = self.path
|
|
316
|
-
if self.run_id is not None:
|
|
317
|
-
body["run_id"] = self.run_id
|
|
318
|
-
if self.signed_uri is not None:
|
|
319
|
-
body["signed_uri"] = self.signed_uri
|
|
320
|
-
if self.type is not None:
|
|
321
|
-
body["type"] = self.type
|
|
322
|
-
return body
|
|
323
|
-
|
|
324
|
-
@classmethod
|
|
325
|
-
def from_dict(cls, d: Dict[str, Any]) -> ArtifactCredentialInfo:
|
|
326
|
-
"""Deserializes the ArtifactCredentialInfo from a dictionary."""
|
|
327
|
-
return cls(
|
|
328
|
-
headers=_repeated_dict(d, "headers", ArtifactCredentialInfoHttpHeader),
|
|
329
|
-
path=d.get("path", None),
|
|
330
|
-
run_id=d.get("run_id", None),
|
|
331
|
-
signed_uri=d.get("signed_uri", None),
|
|
332
|
-
type=_enum(d, "type", ArtifactCredentialType),
|
|
333
|
-
)
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
@dataclass
|
|
337
|
-
class ArtifactCredentialInfoHttpHeader:
|
|
338
|
-
name: Optional[str] = None
|
|
339
|
-
"""The HTTP header name."""
|
|
340
|
-
|
|
341
|
-
value: Optional[str] = None
|
|
342
|
-
"""The HTTP header value."""
|
|
343
|
-
|
|
344
|
-
def as_dict(self) -> dict:
|
|
345
|
-
"""Serializes the ArtifactCredentialInfoHttpHeader into a dictionary suitable for use as a JSON request body."""
|
|
346
|
-
body = {}
|
|
347
|
-
if self.name is not None:
|
|
348
|
-
body["name"] = self.name
|
|
349
|
-
if self.value is not None:
|
|
350
|
-
body["value"] = self.value
|
|
351
|
-
return body
|
|
352
|
-
|
|
353
|
-
def as_shallow_dict(self) -> dict:
|
|
354
|
-
"""Serializes the ArtifactCredentialInfoHttpHeader into a shallow dictionary of its immediate attributes."""
|
|
355
|
-
body = {}
|
|
356
|
-
if self.name is not None:
|
|
357
|
-
body["name"] = self.name
|
|
358
|
-
if self.value is not None:
|
|
359
|
-
body["value"] = self.value
|
|
360
|
-
return body
|
|
361
|
-
|
|
362
|
-
@classmethod
|
|
363
|
-
def from_dict(cls, d: Dict[str, Any]) -> ArtifactCredentialInfoHttpHeader:
|
|
364
|
-
"""Deserializes the ArtifactCredentialInfoHttpHeader from a dictionary."""
|
|
365
|
-
return cls(name=d.get("name", None), value=d.get("value", None))
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
class ArtifactCredentialType(Enum):
|
|
369
|
-
"""The type of a given artifact access credential"""
|
|
370
|
-
|
|
371
|
-
AWS_PRESIGNED_URL = "AWS_PRESIGNED_URL"
|
|
372
|
-
AZURE_ADLS_GEN2_SAS_URI = "AZURE_ADLS_GEN2_SAS_URI"
|
|
373
|
-
AZURE_SAS_URI = "AZURE_SAS_URI"
|
|
374
|
-
GCP_SIGNED_URL = "GCP_SIGNED_URL"
|
|
375
|
-
|
|
376
|
-
|
|
377
274
|
class CommentActivityAction(Enum):
|
|
378
275
|
"""An action that a user (with sufficient permissions) could take on a comment. Valid values are: *
|
|
379
276
|
`EDIT_COMMENT`: Edit the comment
|
|
@@ -1076,7 +973,8 @@ class CreateRegistryWebhook:
|
|
|
1076
973
|
job_spec: Optional[JobSpec] = None
|
|
1077
974
|
|
|
1078
975
|
model_name: Optional[str] = None
|
|
1079
|
-
"""
|
|
976
|
+
"""If model name is not specified, a registry-wide webhook is created that listens for the
|
|
977
|
+
specified events across all versions of all registered models."""
|
|
1080
978
|
|
|
1081
979
|
status: Optional[RegistryWebhookStatus] = None
|
|
1082
980
|
"""Enable or disable triggering the webhook, or put the webhook into test mode. The default is
|
|
@@ -1604,6 +1502,24 @@ class DeleteModelVersionTagResponse:
|
|
|
1604
1502
|
return cls()
|
|
1605
1503
|
|
|
1606
1504
|
|
|
1505
|
+
@dataclass
|
|
1506
|
+
class DeleteOnlineStoreResponse:
|
|
1507
|
+
def as_dict(self) -> dict:
|
|
1508
|
+
"""Serializes the DeleteOnlineStoreResponse into a dictionary suitable for use as a JSON request body."""
|
|
1509
|
+
body = {}
|
|
1510
|
+
return body
|
|
1511
|
+
|
|
1512
|
+
def as_shallow_dict(self) -> dict:
|
|
1513
|
+
"""Serializes the DeleteOnlineStoreResponse into a shallow dictionary of its immediate attributes."""
|
|
1514
|
+
body = {}
|
|
1515
|
+
return body
|
|
1516
|
+
|
|
1517
|
+
@classmethod
|
|
1518
|
+
def from_dict(cls, d: Dict[str, Any]) -> DeleteOnlineStoreResponse:
|
|
1519
|
+
"""Deserializes the DeleteOnlineStoreResponse from a dictionary."""
|
|
1520
|
+
return cls()
|
|
1521
|
+
|
|
1522
|
+
|
|
1607
1523
|
@dataclass
|
|
1608
1524
|
class DeleteRun:
|
|
1609
1525
|
run_id: str
|
|
@@ -2235,7 +2151,7 @@ class FileInfo:
|
|
|
2235
2151
|
class FinalizeLoggedModelRequest:
|
|
2236
2152
|
status: LoggedModelStatus
|
|
2237
2153
|
"""Whether or not the model is ready for use. ``"LOGGED_MODEL_UPLOAD_FAILED"`` indicates that
|
|
2238
|
-
something went wrong when logging the model weights / agent code
|
|
2154
|
+
something went wrong when logging the model weights / agent code."""
|
|
2239
2155
|
|
|
2240
2156
|
model_id: Optional[str] = None
|
|
2241
2157
|
"""The ID of the logged model to finalize."""
|
|
@@ -2343,56 +2259,6 @@ class ForecastingExperimentState(Enum):
|
|
|
2343
2259
|
SUCCEEDED = "SUCCEEDED"
|
|
2344
2260
|
|
|
2345
2261
|
|
|
2346
|
-
@dataclass
|
|
2347
|
-
class GetCredentialsForTraceDataDownloadResponse:
|
|
2348
|
-
credential_info: Optional[ArtifactCredentialInfo] = None
|
|
2349
|
-
"""The artifact download credentials for the specified trace data."""
|
|
2350
|
-
|
|
2351
|
-
def as_dict(self) -> dict:
|
|
2352
|
-
"""Serializes the GetCredentialsForTraceDataDownloadResponse into a dictionary suitable for use as a JSON request body."""
|
|
2353
|
-
body = {}
|
|
2354
|
-
if self.credential_info:
|
|
2355
|
-
body["credential_info"] = self.credential_info.as_dict()
|
|
2356
|
-
return body
|
|
2357
|
-
|
|
2358
|
-
def as_shallow_dict(self) -> dict:
|
|
2359
|
-
"""Serializes the GetCredentialsForTraceDataDownloadResponse into a shallow dictionary of its immediate attributes."""
|
|
2360
|
-
body = {}
|
|
2361
|
-
if self.credential_info:
|
|
2362
|
-
body["credential_info"] = self.credential_info
|
|
2363
|
-
return body
|
|
2364
|
-
|
|
2365
|
-
@classmethod
|
|
2366
|
-
def from_dict(cls, d: Dict[str, Any]) -> GetCredentialsForTraceDataDownloadResponse:
|
|
2367
|
-
"""Deserializes the GetCredentialsForTraceDataDownloadResponse from a dictionary."""
|
|
2368
|
-
return cls(credential_info=_from_dict(d, "credential_info", ArtifactCredentialInfo))
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
@dataclass
|
|
2372
|
-
class GetCredentialsForTraceDataUploadResponse:
|
|
2373
|
-
credential_info: Optional[ArtifactCredentialInfo] = None
|
|
2374
|
-
"""The artifact upload credentials for the specified trace data."""
|
|
2375
|
-
|
|
2376
|
-
def as_dict(self) -> dict:
|
|
2377
|
-
"""Serializes the GetCredentialsForTraceDataUploadResponse into a dictionary suitable for use as a JSON request body."""
|
|
2378
|
-
body = {}
|
|
2379
|
-
if self.credential_info:
|
|
2380
|
-
body["credential_info"] = self.credential_info.as_dict()
|
|
2381
|
-
return body
|
|
2382
|
-
|
|
2383
|
-
def as_shallow_dict(self) -> dict:
|
|
2384
|
-
"""Serializes the GetCredentialsForTraceDataUploadResponse into a shallow dictionary of its immediate attributes."""
|
|
2385
|
-
body = {}
|
|
2386
|
-
if self.credential_info:
|
|
2387
|
-
body["credential_info"] = self.credential_info
|
|
2388
|
-
return body
|
|
2389
|
-
|
|
2390
|
-
@classmethod
|
|
2391
|
-
def from_dict(cls, d: Dict[str, Any]) -> GetCredentialsForTraceDataUploadResponse:
|
|
2392
|
-
"""Deserializes the GetCredentialsForTraceDataUploadResponse from a dictionary."""
|
|
2393
|
-
return cls(credential_info=_from_dict(d, "credential_info", ArtifactCredentialInfo))
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
2262
|
@dataclass
|
|
2397
2263
|
class GetExperimentByNameResponse:
|
|
2398
2264
|
experiment: Optional[Experiment] = None
|
|
@@ -2994,79 +2860,71 @@ class ListExperimentsResponse:
|
|
|
2994
2860
|
|
|
2995
2861
|
|
|
2996
2862
|
@dataclass
|
|
2997
|
-
class
|
|
2998
|
-
files: Optional[List[FileInfo]] = None
|
|
2999
|
-
"""File location and metadata for artifacts."""
|
|
3000
|
-
|
|
2863
|
+
class ListModelsResponse:
|
|
3001
2864
|
next_page_token: Optional[str] = None
|
|
3002
|
-
"""
|
|
2865
|
+
"""Pagination token to request next page of models for the same query."""
|
|
3003
2866
|
|
|
3004
|
-
|
|
3005
|
-
"""Root artifact directory for the logged model."""
|
|
2867
|
+
registered_models: Optional[List[Model]] = None
|
|
3006
2868
|
|
|
3007
2869
|
def as_dict(self) -> dict:
|
|
3008
|
-
"""Serializes the
|
|
2870
|
+
"""Serializes the ListModelsResponse into a dictionary suitable for use as a JSON request body."""
|
|
3009
2871
|
body = {}
|
|
3010
|
-
if self.files:
|
|
3011
|
-
body["files"] = [v.as_dict() for v in self.files]
|
|
3012
2872
|
if self.next_page_token is not None:
|
|
3013
2873
|
body["next_page_token"] = self.next_page_token
|
|
3014
|
-
if self.
|
|
3015
|
-
body["
|
|
2874
|
+
if self.registered_models:
|
|
2875
|
+
body["registered_models"] = [v.as_dict() for v in self.registered_models]
|
|
3016
2876
|
return body
|
|
3017
2877
|
|
|
3018
2878
|
def as_shallow_dict(self) -> dict:
|
|
3019
|
-
"""Serializes the
|
|
2879
|
+
"""Serializes the ListModelsResponse into a shallow dictionary of its immediate attributes."""
|
|
3020
2880
|
body = {}
|
|
3021
|
-
if self.files:
|
|
3022
|
-
body["files"] = self.files
|
|
3023
2881
|
if self.next_page_token is not None:
|
|
3024
2882
|
body["next_page_token"] = self.next_page_token
|
|
3025
|
-
if self.
|
|
3026
|
-
body["
|
|
2883
|
+
if self.registered_models:
|
|
2884
|
+
body["registered_models"] = self.registered_models
|
|
3027
2885
|
return body
|
|
3028
2886
|
|
|
3029
2887
|
@classmethod
|
|
3030
|
-
def from_dict(cls, d: Dict[str, Any]) ->
|
|
3031
|
-
"""Deserializes the
|
|
2888
|
+
def from_dict(cls, d: Dict[str, Any]) -> ListModelsResponse:
|
|
2889
|
+
"""Deserializes the ListModelsResponse from a dictionary."""
|
|
3032
2890
|
return cls(
|
|
3033
|
-
files=_repeated_dict(d, "files", FileInfo),
|
|
3034
2891
|
next_page_token=d.get("next_page_token", None),
|
|
3035
|
-
|
|
2892
|
+
registered_models=_repeated_dict(d, "registered_models", Model),
|
|
3036
2893
|
)
|
|
3037
2894
|
|
|
3038
2895
|
|
|
3039
2896
|
@dataclass
|
|
3040
|
-
class
|
|
2897
|
+
class ListOnlineStoresResponse:
|
|
3041
2898
|
next_page_token: Optional[str] = None
|
|
3042
|
-
"""Pagination token to request next page of
|
|
2899
|
+
"""Pagination token to request the next page of results for this query."""
|
|
3043
2900
|
|
|
3044
|
-
|
|
2901
|
+
online_stores: Optional[List[OnlineStore]] = None
|
|
2902
|
+
"""List of online stores."""
|
|
3045
2903
|
|
|
3046
2904
|
def as_dict(self) -> dict:
|
|
3047
|
-
"""Serializes the
|
|
2905
|
+
"""Serializes the ListOnlineStoresResponse into a dictionary suitable for use as a JSON request body."""
|
|
3048
2906
|
body = {}
|
|
3049
2907
|
if self.next_page_token is not None:
|
|
3050
2908
|
body["next_page_token"] = self.next_page_token
|
|
3051
|
-
if self.
|
|
3052
|
-
body["
|
|
2909
|
+
if self.online_stores:
|
|
2910
|
+
body["online_stores"] = [v.as_dict() for v in self.online_stores]
|
|
3053
2911
|
return body
|
|
3054
2912
|
|
|
3055
2913
|
def as_shallow_dict(self) -> dict:
|
|
3056
|
-
"""Serializes the
|
|
2914
|
+
"""Serializes the ListOnlineStoresResponse into a shallow dictionary of its immediate attributes."""
|
|
3057
2915
|
body = {}
|
|
3058
2916
|
if self.next_page_token is not None:
|
|
3059
2917
|
body["next_page_token"] = self.next_page_token
|
|
3060
|
-
if self.
|
|
3061
|
-
body["
|
|
2918
|
+
if self.online_stores:
|
|
2919
|
+
body["online_stores"] = self.online_stores
|
|
3062
2920
|
return body
|
|
3063
2921
|
|
|
3064
2922
|
@classmethod
|
|
3065
|
-
def from_dict(cls, d: Dict[str, Any]) ->
|
|
3066
|
-
"""Deserializes the
|
|
2923
|
+
def from_dict(cls, d: Dict[str, Any]) -> ListOnlineStoresResponse:
|
|
2924
|
+
"""Deserializes the ListOnlineStoresResponse from a dictionary."""
|
|
3067
2925
|
return cls(
|
|
3068
2926
|
next_page_token=d.get("next_page_token", None),
|
|
3069
|
-
|
|
2927
|
+
online_stores=_repeated_dict(d, "online_stores", OnlineStore),
|
|
3070
2928
|
)
|
|
3071
2929
|
|
|
3072
2930
|
|
|
@@ -4519,6 +4377,77 @@ class ModelVersionTag:
|
|
|
4519
4377
|
return cls(key=d.get("key", None), value=d.get("value", None))
|
|
4520
4378
|
|
|
4521
4379
|
|
|
4380
|
+
@dataclass
|
|
4381
|
+
class OnlineStore:
|
|
4382
|
+
"""An OnlineStore is a logical database instance that stores and serves features online."""
|
|
4383
|
+
|
|
4384
|
+
name: str
|
|
4385
|
+
"""The name of the online store. This is the unique identifier for the online store."""
|
|
4386
|
+
|
|
4387
|
+
capacity: Optional[str] = None
|
|
4388
|
+
"""The capacity of the online store. Valid values are "CU_1", "CU_2", "CU_4", "CU_8"."""
|
|
4389
|
+
|
|
4390
|
+
creation_time: Optional[str] = None
|
|
4391
|
+
"""The timestamp when the online store was created."""
|
|
4392
|
+
|
|
4393
|
+
creator: Optional[str] = None
|
|
4394
|
+
"""The email of the creator of the online store."""
|
|
4395
|
+
|
|
4396
|
+
state: Optional[OnlineStoreState] = None
|
|
4397
|
+
"""The current state of the online store."""
|
|
4398
|
+
|
|
4399
|
+
def as_dict(self) -> dict:
|
|
4400
|
+
"""Serializes the OnlineStore into a dictionary suitable for use as a JSON request body."""
|
|
4401
|
+
body = {}
|
|
4402
|
+
if self.capacity is not None:
|
|
4403
|
+
body["capacity"] = self.capacity
|
|
4404
|
+
if self.creation_time is not None:
|
|
4405
|
+
body["creation_time"] = self.creation_time
|
|
4406
|
+
if self.creator is not None:
|
|
4407
|
+
body["creator"] = self.creator
|
|
4408
|
+
if self.name is not None:
|
|
4409
|
+
body["name"] = self.name
|
|
4410
|
+
if self.state is not None:
|
|
4411
|
+
body["state"] = self.state.value
|
|
4412
|
+
return body
|
|
4413
|
+
|
|
4414
|
+
def as_shallow_dict(self) -> dict:
|
|
4415
|
+
"""Serializes the OnlineStore into a shallow dictionary of its immediate attributes."""
|
|
4416
|
+
body = {}
|
|
4417
|
+
if self.capacity is not None:
|
|
4418
|
+
body["capacity"] = self.capacity
|
|
4419
|
+
if self.creation_time is not None:
|
|
4420
|
+
body["creation_time"] = self.creation_time
|
|
4421
|
+
if self.creator is not None:
|
|
4422
|
+
body["creator"] = self.creator
|
|
4423
|
+
if self.name is not None:
|
|
4424
|
+
body["name"] = self.name
|
|
4425
|
+
if self.state is not None:
|
|
4426
|
+
body["state"] = self.state
|
|
4427
|
+
return body
|
|
4428
|
+
|
|
4429
|
+
@classmethod
|
|
4430
|
+
def from_dict(cls, d: Dict[str, Any]) -> OnlineStore:
|
|
4431
|
+
"""Deserializes the OnlineStore from a dictionary."""
|
|
4432
|
+
return cls(
|
|
4433
|
+
capacity=d.get("capacity", None),
|
|
4434
|
+
creation_time=d.get("creation_time", None),
|
|
4435
|
+
creator=d.get("creator", None),
|
|
4436
|
+
name=d.get("name", None),
|
|
4437
|
+
state=_enum(d, "state", OnlineStoreState),
|
|
4438
|
+
)
|
|
4439
|
+
|
|
4440
|
+
|
|
4441
|
+
class OnlineStoreState(Enum):
|
|
4442
|
+
|
|
4443
|
+
AVAILABLE = "AVAILABLE"
|
|
4444
|
+
DELETING = "DELETING"
|
|
4445
|
+
FAILING_OVER = "FAILING_OVER"
|
|
4446
|
+
STARTING = "STARTING"
|
|
4447
|
+
STOPPED = "STOPPED"
|
|
4448
|
+
UPDATING = "UPDATING"
|
|
4449
|
+
|
|
4450
|
+
|
|
4522
4451
|
@dataclass
|
|
4523
4452
|
class Param:
|
|
4524
4453
|
"""Param associated with a run."""
|
|
@@ -4564,6 +4493,124 @@ class PermissionLevel(Enum):
|
|
|
4564
4493
|
CAN_READ = "CAN_READ"
|
|
4565
4494
|
|
|
4566
4495
|
|
|
4496
|
+
@dataclass
|
|
4497
|
+
class PublishSpec:
|
|
4498
|
+
online_store: str
|
|
4499
|
+
"""The name of the target online store."""
|
|
4500
|
+
|
|
4501
|
+
online_table_name: Optional[str] = None
|
|
4502
|
+
"""The full three-part (catalog, schema, table) name of the online table. Auto-generated if not
|
|
4503
|
+
specified."""
|
|
4504
|
+
|
|
4505
|
+
publish_mode: Optional[PublishSpecPublishMode] = None
|
|
4506
|
+
"""The publish mode of the pipeline that syncs the online table with the source table. Defaults to
|
|
4507
|
+
TRIGGERED if not specified. All publish modes require the source table to have Change Data Feed
|
|
4508
|
+
(CDF) enabled."""
|
|
4509
|
+
|
|
4510
|
+
def as_dict(self) -> dict:
|
|
4511
|
+
"""Serializes the PublishSpec into a dictionary suitable for use as a JSON request body."""
|
|
4512
|
+
body = {}
|
|
4513
|
+
if self.online_store is not None:
|
|
4514
|
+
body["online_store"] = self.online_store
|
|
4515
|
+
if self.online_table_name is not None:
|
|
4516
|
+
body["online_table_name"] = self.online_table_name
|
|
4517
|
+
if self.publish_mode is not None:
|
|
4518
|
+
body["publish_mode"] = self.publish_mode.value
|
|
4519
|
+
return body
|
|
4520
|
+
|
|
4521
|
+
def as_shallow_dict(self) -> dict:
|
|
4522
|
+
"""Serializes the PublishSpec into a shallow dictionary of its immediate attributes."""
|
|
4523
|
+
body = {}
|
|
4524
|
+
if self.online_store is not None:
|
|
4525
|
+
body["online_store"] = self.online_store
|
|
4526
|
+
if self.online_table_name is not None:
|
|
4527
|
+
body["online_table_name"] = self.online_table_name
|
|
4528
|
+
if self.publish_mode is not None:
|
|
4529
|
+
body["publish_mode"] = self.publish_mode
|
|
4530
|
+
return body
|
|
4531
|
+
|
|
4532
|
+
@classmethod
|
|
4533
|
+
def from_dict(cls, d: Dict[str, Any]) -> PublishSpec:
|
|
4534
|
+
"""Deserializes the PublishSpec from a dictionary."""
|
|
4535
|
+
return cls(
|
|
4536
|
+
online_store=d.get("online_store", None),
|
|
4537
|
+
online_table_name=d.get("online_table_name", None),
|
|
4538
|
+
publish_mode=_enum(d, "publish_mode", PublishSpecPublishMode),
|
|
4539
|
+
)
|
|
4540
|
+
|
|
4541
|
+
|
|
4542
|
+
class PublishSpecPublishMode(Enum):
|
|
4543
|
+
|
|
4544
|
+
CONTINUOUS = "CONTINUOUS"
|
|
4545
|
+
TRIGGERED = "TRIGGERED"
|
|
4546
|
+
|
|
4547
|
+
|
|
4548
|
+
@dataclass
|
|
4549
|
+
class PublishTableRequest:
|
|
4550
|
+
publish_spec: PublishSpec
|
|
4551
|
+
"""The specification for publishing the online table from the source table."""
|
|
4552
|
+
|
|
4553
|
+
source_table_name: Optional[str] = None
|
|
4554
|
+
"""The full three-part (catalog, schema, table) name of the source table."""
|
|
4555
|
+
|
|
4556
|
+
def as_dict(self) -> dict:
|
|
4557
|
+
"""Serializes the PublishTableRequest into a dictionary suitable for use as a JSON request body."""
|
|
4558
|
+
body = {}
|
|
4559
|
+
if self.publish_spec:
|
|
4560
|
+
body["publish_spec"] = self.publish_spec.as_dict()
|
|
4561
|
+
if self.source_table_name is not None:
|
|
4562
|
+
body["source_table_name"] = self.source_table_name
|
|
4563
|
+
return body
|
|
4564
|
+
|
|
4565
|
+
def as_shallow_dict(self) -> dict:
|
|
4566
|
+
"""Serializes the PublishTableRequest into a shallow dictionary of its immediate attributes."""
|
|
4567
|
+
body = {}
|
|
4568
|
+
if self.publish_spec:
|
|
4569
|
+
body["publish_spec"] = self.publish_spec
|
|
4570
|
+
if self.source_table_name is not None:
|
|
4571
|
+
body["source_table_name"] = self.source_table_name
|
|
4572
|
+
return body
|
|
4573
|
+
|
|
4574
|
+
@classmethod
|
|
4575
|
+
def from_dict(cls, d: Dict[str, Any]) -> PublishTableRequest:
|
|
4576
|
+
"""Deserializes the PublishTableRequest from a dictionary."""
|
|
4577
|
+
return cls(
|
|
4578
|
+
publish_spec=_from_dict(d, "publish_spec", PublishSpec), source_table_name=d.get("source_table_name", None)
|
|
4579
|
+
)
|
|
4580
|
+
|
|
4581
|
+
|
|
4582
|
+
@dataclass
|
|
4583
|
+
class PublishTableResponse:
|
|
4584
|
+
online_table_name: Optional[str] = None
|
|
4585
|
+
"""The full three-part (catalog, schema, table) name of the online table."""
|
|
4586
|
+
|
|
4587
|
+
pipeline_id: Optional[str] = None
|
|
4588
|
+
"""The ID of the pipeline that syncs the online table with the source table."""
|
|
4589
|
+
|
|
4590
|
+
def as_dict(self) -> dict:
|
|
4591
|
+
"""Serializes the PublishTableResponse into a dictionary suitable for use as a JSON request body."""
|
|
4592
|
+
body = {}
|
|
4593
|
+
if self.online_table_name is not None:
|
|
4594
|
+
body["online_table_name"] = self.online_table_name
|
|
4595
|
+
if self.pipeline_id is not None:
|
|
4596
|
+
body["pipeline_id"] = self.pipeline_id
|
|
4597
|
+
return body
|
|
4598
|
+
|
|
4599
|
+
def as_shallow_dict(self) -> dict:
|
|
4600
|
+
"""Serializes the PublishTableResponse into a shallow dictionary of its immediate attributes."""
|
|
4601
|
+
body = {}
|
|
4602
|
+
if self.online_table_name is not None:
|
|
4603
|
+
body["online_table_name"] = self.online_table_name
|
|
4604
|
+
if self.pipeline_id is not None:
|
|
4605
|
+
body["pipeline_id"] = self.pipeline_id
|
|
4606
|
+
return body
|
|
4607
|
+
|
|
4608
|
+
@classmethod
|
|
4609
|
+
def from_dict(cls, d: Dict[str, Any]) -> PublishTableResponse:
|
|
4610
|
+
"""Deserializes the PublishTableResponse from a dictionary."""
|
|
4611
|
+
return cls(online_table_name=d.get("online_table_name", None), pipeline_id=d.get("pipeline_id", None))
|
|
4612
|
+
|
|
4613
|
+
|
|
4567
4614
|
@dataclass
|
|
4568
4615
|
class RegisteredModelAccessControlRequest:
|
|
4569
4616
|
group_name: Optional[str] = None
|
|
@@ -5494,10 +5541,7 @@ class RunInputs:
|
|
|
5494
5541
|
"""Run metrics."""
|
|
5495
5542
|
|
|
5496
5543
|
model_inputs: Optional[List[ModelInput]] = None
|
|
5497
|
-
"""
|
|
5498
|
-
warning.
|
|
5499
|
-
|
|
5500
|
-
Model inputs to the Run."""
|
|
5544
|
+
"""Model inputs to the Run."""
|
|
5501
5545
|
|
|
5502
5546
|
def as_dict(self) -> dict:
|
|
5503
5547
|
"""Serializes the RunInputs into a dictionary suitable for use as a JSON request body."""
|
|
@@ -7067,9 +7111,7 @@ class ExperimentsAPI:
|
|
|
7067
7111
|
def create_experiment(
|
|
7068
7112
|
self, name: str, *, artifact_location: Optional[str] = None, tags: Optional[List[ExperimentTag]] = None
|
|
7069
7113
|
) -> CreateExperimentResponse:
|
|
7070
|
-
"""
|
|
7071
|
-
|
|
7072
|
-
Creates an experiment with a name. Returns the ID of the newly created experiment. Validates that
|
|
7114
|
+
"""Creates an experiment with a name. Returns the ID of the newly created experiment. Validates that
|
|
7073
7115
|
another experiment with the same name does not already exist and fails if another experiment with the
|
|
7074
7116
|
same name already exists.
|
|
7075
7117
|
|
|
@@ -7160,9 +7202,7 @@ class ExperimentsAPI:
|
|
|
7160
7202
|
tags: Optional[List[RunTag]] = None,
|
|
7161
7203
|
user_id: Optional[str] = None,
|
|
7162
7204
|
) -> CreateRunResponse:
|
|
7163
|
-
"""
|
|
7164
|
-
|
|
7165
|
-
Creates a new run within an experiment. A run is usually a single execution of a machine learning or
|
|
7205
|
+
"""Creates a new run within an experiment. A run is usually a single execution of a machine learning or
|
|
7166
7206
|
data ETL pipeline. MLflow uses runs to track the `mlflowParam`, `mlflowMetric`, and `mlflowRunTag`
|
|
7167
7207
|
associated with a single execution.
|
|
7168
7208
|
|
|
@@ -7200,9 +7240,7 @@ class ExperimentsAPI:
|
|
|
7200
7240
|
return CreateRunResponse.from_dict(res)
|
|
7201
7241
|
|
|
7202
7242
|
def delete_experiment(self, experiment_id: str):
|
|
7203
|
-
"""
|
|
7204
|
-
|
|
7205
|
-
Marks an experiment and associated metadata, runs, metrics, params, and tags for deletion. If the
|
|
7243
|
+
"""Marks an experiment and associated metadata, runs, metrics, params, and tags for deletion. If the
|
|
7206
7244
|
experiment uses FileStore, artifacts associated with the experiment are also deleted.
|
|
7207
7245
|
|
|
7208
7246
|
:param experiment_id: str
|
|
@@ -7253,9 +7291,7 @@ class ExperimentsAPI:
|
|
|
7253
7291
|
self._api.do("DELETE", f"/api/2.0/mlflow/logged-models/{model_id}/tags/{tag_key}", headers=headers)
|
|
7254
7292
|
|
|
7255
7293
|
def delete_run(self, run_id: str):
|
|
7256
|
-
"""
|
|
7257
|
-
|
|
7258
|
-
Marks a run for deletion.
|
|
7294
|
+
"""Marks a run for deletion.
|
|
7259
7295
|
|
|
7260
7296
|
:param run_id: str
|
|
7261
7297
|
ID of the run to delete.
|
|
@@ -7275,9 +7311,7 @@ class ExperimentsAPI:
|
|
|
7275
7311
|
def delete_runs(
|
|
7276
7312
|
self, experiment_id: str, max_timestamp_millis: int, *, max_runs: Optional[int] = None
|
|
7277
7313
|
) -> DeleteRunsResponse:
|
|
7278
|
-
"""
|
|
7279
|
-
|
|
7280
|
-
Bulk delete runs in an experiment that were created prior to or at the specified timestamp. Deletes at
|
|
7314
|
+
"""Bulk delete runs in an experiment that were created prior to or at the specified timestamp. Deletes at
|
|
7281
7315
|
most max_runs per request. To call this API from a Databricks Notebook in Python, you can use the
|
|
7282
7316
|
client code snippet on
|
|
7283
7317
|
|
|
@@ -7308,9 +7342,7 @@ class ExperimentsAPI:
|
|
|
7308
7342
|
return DeleteRunsResponse.from_dict(res)
|
|
7309
7343
|
|
|
7310
7344
|
def delete_tag(self, run_id: str, key: str):
|
|
7311
|
-
"""
|
|
7312
|
-
|
|
7313
|
-
Deletes a tag on a run. Tags are run metadata that can be updated during a run and after a run
|
|
7345
|
+
"""Deletes a tag on a run. Tags are run metadata that can be updated during a run and after a run
|
|
7314
7346
|
completes.
|
|
7315
7347
|
|
|
7316
7348
|
:param run_id: str
|
|
@@ -7339,7 +7371,7 @@ class ExperimentsAPI:
|
|
|
7339
7371
|
The ID of the logged model to finalize.
|
|
7340
7372
|
:param status: :class:`LoggedModelStatus`
|
|
7341
7373
|
Whether or not the model is ready for use. ``"LOGGED_MODEL_UPLOAD_FAILED"`` indicates that something
|
|
7342
|
-
went wrong when logging the model weights / agent code
|
|
7374
|
+
went wrong when logging the model weights / agent code.
|
|
7343
7375
|
|
|
7344
7376
|
:returns: :class:`FinalizeLoggedModelResponse`
|
|
7345
7377
|
"""
|
|
@@ -7355,9 +7387,7 @@ class ExperimentsAPI:
|
|
|
7355
7387
|
return FinalizeLoggedModelResponse.from_dict(res)
|
|
7356
7388
|
|
|
7357
7389
|
def get_by_name(self, experiment_name: str) -> GetExperimentByNameResponse:
|
|
7358
|
-
"""
|
|
7359
|
-
|
|
7360
|
-
Gets metadata for an experiment.
|
|
7390
|
+
"""Gets metadata for an experiment.
|
|
7361
7391
|
|
|
7362
7392
|
This endpoint will return deleted experiments, but prefers the active experiment if an active and
|
|
7363
7393
|
deleted experiment share the same name. If multiple deleted experiments share the same name, the API
|
|
@@ -7381,42 +7411,8 @@ class ExperimentsAPI:
|
|
|
7381
7411
|
res = self._api.do("GET", "/api/2.0/mlflow/experiments/get-by-name", query=query, headers=headers)
|
|
7382
7412
|
return GetExperimentByNameResponse.from_dict(res)
|
|
7383
7413
|
|
|
7384
|
-
def get_credentials_for_trace_data_download(self, request_id: str) -> GetCredentialsForTraceDataDownloadResponse:
|
|
7385
|
-
"""Get credentials to download trace data.
|
|
7386
|
-
|
|
7387
|
-
:param request_id: str
|
|
7388
|
-
The ID of the trace to fetch artifact download credentials for.
|
|
7389
|
-
|
|
7390
|
-
:returns: :class:`GetCredentialsForTraceDataDownloadResponse`
|
|
7391
|
-
"""
|
|
7392
|
-
|
|
7393
|
-
headers = {
|
|
7394
|
-
"Accept": "application/json",
|
|
7395
|
-
}
|
|
7396
|
-
|
|
7397
|
-
res = self._api.do("GET", f"/api/2.0/mlflow/traces/{request_id}/credentials-for-data-download", headers=headers)
|
|
7398
|
-
return GetCredentialsForTraceDataDownloadResponse.from_dict(res)
|
|
7399
|
-
|
|
7400
|
-
def get_credentials_for_trace_data_upload(self, request_id: str) -> GetCredentialsForTraceDataUploadResponse:
|
|
7401
|
-
"""Get credentials to upload trace data.
|
|
7402
|
-
|
|
7403
|
-
:param request_id: str
|
|
7404
|
-
The ID of the trace to fetch artifact upload credentials for.
|
|
7405
|
-
|
|
7406
|
-
:returns: :class:`GetCredentialsForTraceDataUploadResponse`
|
|
7407
|
-
"""
|
|
7408
|
-
|
|
7409
|
-
headers = {
|
|
7410
|
-
"Accept": "application/json",
|
|
7411
|
-
}
|
|
7412
|
-
|
|
7413
|
-
res = self._api.do("GET", f"/api/2.0/mlflow/traces/{request_id}/credentials-for-data-upload", headers=headers)
|
|
7414
|
-
return GetCredentialsForTraceDataUploadResponse.from_dict(res)
|
|
7415
|
-
|
|
7416
7414
|
def get_experiment(self, experiment_id: str) -> GetExperimentResponse:
|
|
7417
|
-
"""
|
|
7418
|
-
|
|
7419
|
-
Gets metadata for an experiment. This method works on deleted experiments.
|
|
7415
|
+
"""Gets metadata for an experiment. This method works on deleted experiments.
|
|
7420
7416
|
|
|
7421
7417
|
:param experiment_id: str
|
|
7422
7418
|
ID of the associated experiment.
|
|
@@ -7443,9 +7439,7 @@ class ExperimentsAPI:
|
|
|
7443
7439
|
run_id: Optional[str] = None,
|
|
7444
7440
|
run_uuid: Optional[str] = None,
|
|
7445
7441
|
) -> Iterator[Metric]:
|
|
7446
|
-
"""
|
|
7447
|
-
|
|
7448
|
-
Gets a list of all values for the specified metric for a given run.
|
|
7442
|
+
"""Gets a list of all values for the specified metric for a given run.
|
|
7449
7443
|
|
|
7450
7444
|
:param metric_key: str
|
|
7451
7445
|
Name of the metric.
|
|
@@ -7504,9 +7498,7 @@ class ExperimentsAPI:
|
|
|
7504
7498
|
return GetLoggedModelResponse.from_dict(res)
|
|
7505
7499
|
|
|
7506
7500
|
def get_permission_levels(self, experiment_id: str) -> GetExperimentPermissionLevelsResponse:
|
|
7507
|
-
"""
|
|
7508
|
-
|
|
7509
|
-
Gets the permission levels that a user can have on an object.
|
|
7501
|
+
"""Gets the permission levels that a user can have on an object.
|
|
7510
7502
|
|
|
7511
7503
|
:param experiment_id: str
|
|
7512
7504
|
The experiment for which to get or manage permissions.
|
|
@@ -7522,9 +7514,7 @@ class ExperimentsAPI:
|
|
|
7522
7514
|
return GetExperimentPermissionLevelsResponse.from_dict(res)
|
|
7523
7515
|
|
|
7524
7516
|
def get_permissions(self, experiment_id: str) -> ExperimentPermissions:
|
|
7525
|
-
"""
|
|
7526
|
-
|
|
7527
|
-
Gets the permissions of an experiment. Experiments can inherit permissions from their root object.
|
|
7517
|
+
"""Gets the permissions of an experiment. Experiments can inherit permissions from their root object.
|
|
7528
7518
|
|
|
7529
7519
|
:param experiment_id: str
|
|
7530
7520
|
The experiment for which to get or manage permissions.
|
|
@@ -7540,9 +7530,7 @@ class ExperimentsAPI:
|
|
|
7540
7530
|
return ExperimentPermissions.from_dict(res)
|
|
7541
7531
|
|
|
7542
7532
|
def get_run(self, run_id: str, *, run_uuid: Optional[str] = None) -> GetRunResponse:
|
|
7543
|
-
"""
|
|
7544
|
-
|
|
7545
|
-
Gets the metadata, metrics, params, and tags for a run. In the case where multiple metrics with the
|
|
7533
|
+
"""Gets the metadata, metrics, params, and tags for a run. In the case where multiple metrics with the
|
|
7546
7534
|
same key are logged for a run, return only the value with the latest timestamp.
|
|
7547
7535
|
|
|
7548
7536
|
If there are multiple values with the latest timestamp, return the maximum of these values.
|
|
@@ -7576,9 +7564,7 @@ class ExperimentsAPI:
|
|
|
7576
7564
|
run_id: Optional[str] = None,
|
|
7577
7565
|
run_uuid: Optional[str] = None,
|
|
7578
7566
|
) -> Iterator[FileInfo]:
|
|
7579
|
-
"""List artifacts.
|
|
7580
|
-
|
|
7581
|
-
List artifacts for a run. Takes an optional `artifact_path` prefix which if specified, the response
|
|
7567
|
+
"""List artifacts for a run. Takes an optional `artifact_path` prefix which if specified, the response
|
|
7582
7568
|
contains only artifacts with the specified prefix. A maximum of 1000 artifacts will be retrieved for
|
|
7583
7569
|
UC Volumes. Please call `/api/2.0/fs/directories{directory_path}` for listing artifacts in UC Volumes,
|
|
7584
7570
|
which supports pagination. See [List directory contents | Files
|
|
@@ -7630,9 +7616,7 @@ class ExperimentsAPI:
|
|
|
7630
7616
|
page_token: Optional[str] = None,
|
|
7631
7617
|
view_type: Optional[ViewType] = None,
|
|
7632
7618
|
) -> Iterator[Experiment]:
|
|
7633
|
-
"""
|
|
7634
|
-
|
|
7635
|
-
Gets a list of all experiments.
|
|
7619
|
+
"""Gets a list of all experiments.
|
|
7636
7620
|
|
|
7637
7621
|
:param max_results: int (optional)
|
|
7638
7622
|
Maximum number of experiments desired. If `max_results` is unspecified, return all experiments. If
|
|
@@ -7666,41 +7650,6 @@ class ExperimentsAPI:
|
|
|
7666
7650
|
return
|
|
7667
7651
|
query["page_token"] = json["next_page_token"]
|
|
7668
7652
|
|
|
7669
|
-
def list_logged_model_artifacts(
|
|
7670
|
-
self, model_id: str, *, artifact_directory_path: Optional[str] = None, page_token: Optional[str] = None
|
|
7671
|
-
) -> ListLoggedModelArtifactsResponse:
|
|
7672
|
-
"""List artifacts for a logged model.
|
|
7673
|
-
|
|
7674
|
-
List artifacts for a logged model. Takes an optional ``artifact_directory_path`` prefix which if
|
|
7675
|
-
specified, the response contains only artifacts with the specified prefix.
|
|
7676
|
-
|
|
7677
|
-
:param model_id: str
|
|
7678
|
-
The ID of the logged model for which to list the artifacts.
|
|
7679
|
-
:param artifact_directory_path: str (optional)
|
|
7680
|
-
Filter artifacts matching this path (a relative path from the root artifact directory).
|
|
7681
|
-
:param page_token: str (optional)
|
|
7682
|
-
Token indicating the page of artifact results to fetch. `page_token` is not supported when listing
|
|
7683
|
-
artifacts in UC Volumes. A maximum of 1000 artifacts will be retrieved for UC Volumes. Please call
|
|
7684
|
-
`/api/2.0/fs/directories{directory_path}` for listing artifacts in UC Volumes, which supports
|
|
7685
|
-
pagination. See [List directory contents | Files API](/api/workspace/files/listdirectorycontents).
|
|
7686
|
-
|
|
7687
|
-
:returns: :class:`ListLoggedModelArtifactsResponse`
|
|
7688
|
-
"""
|
|
7689
|
-
|
|
7690
|
-
query = {}
|
|
7691
|
-
if artifact_directory_path is not None:
|
|
7692
|
-
query["artifact_directory_path"] = artifact_directory_path
|
|
7693
|
-
if page_token is not None:
|
|
7694
|
-
query["page_token"] = page_token
|
|
7695
|
-
headers = {
|
|
7696
|
-
"Accept": "application/json",
|
|
7697
|
-
}
|
|
7698
|
-
|
|
7699
|
-
res = self._api.do(
|
|
7700
|
-
"GET", f"/api/2.0/mlflow/logged-models/{model_id}/artifacts/directories", query=query, headers=headers
|
|
7701
|
-
)
|
|
7702
|
-
return ListLoggedModelArtifactsResponse.from_dict(res)
|
|
7703
|
-
|
|
7704
7653
|
def log_batch(
|
|
7705
7654
|
self,
|
|
7706
7655
|
*,
|
|
@@ -7709,9 +7658,7 @@ class ExperimentsAPI:
|
|
|
7709
7658
|
run_id: Optional[str] = None,
|
|
7710
7659
|
tags: Optional[List[RunTag]] = None,
|
|
7711
7660
|
):
|
|
7712
|
-
"""
|
|
7713
|
-
|
|
7714
|
-
Logs a batch of metrics, params, and tags for a run. If any data failed to be persisted, the server
|
|
7661
|
+
"""Logs a batch of metrics, params, and tags for a run. If any data failed to be persisted, the server
|
|
7715
7662
|
will respond with an error (non-200 status code).
|
|
7716
7663
|
|
|
7717
7664
|
In case of error (due to internal server error or an invalid request), partial data may be written.
|
|
@@ -7785,11 +7732,7 @@ class ExperimentsAPI:
|
|
|
7785
7732
|
def log_inputs(
|
|
7786
7733
|
self, run_id: str, *, datasets: Optional[List[DatasetInput]] = None, models: Optional[List[ModelInput]] = None
|
|
7787
7734
|
):
|
|
7788
|
-
"""
|
|
7789
|
-
|
|
7790
|
-
**NOTE:** Experimental: This API may change or be removed in a future release without warning.
|
|
7791
|
-
|
|
7792
|
-
Logs inputs, such as datasets and models, to an MLflow Run.
|
|
7735
|
+
"""Logs inputs, such as datasets and models, to an MLflow Run.
|
|
7793
7736
|
|
|
7794
7737
|
:param run_id: str
|
|
7795
7738
|
ID of the run to log under
|
|
@@ -7815,9 +7758,7 @@ class ExperimentsAPI:
|
|
|
7815
7758
|
self._api.do("POST", "/api/2.0/mlflow/runs/log-inputs", body=body, headers=headers)
|
|
7816
7759
|
|
|
7817
7760
|
def log_logged_model_params(self, model_id: str, *, params: Optional[List[LoggedModelParameter]] = None):
|
|
7818
|
-
"""
|
|
7819
|
-
|
|
7820
|
-
Logs params for a logged model. A param is a key-value pair (string key, string value). Examples
|
|
7761
|
+
"""Logs params for a logged model. A param is a key-value pair (string key, string value). Examples
|
|
7821
7762
|
include hyperparameters used for ML model training. A param can be logged only once for a logged
|
|
7822
7763
|
model, and attempting to overwrite an existing param with a different value will result in an error
|
|
7823
7764
|
|
|
@@ -7851,9 +7792,7 @@ class ExperimentsAPI:
|
|
|
7851
7792
|
run_uuid: Optional[str] = None,
|
|
7852
7793
|
step: Optional[int] = None,
|
|
7853
7794
|
):
|
|
7854
|
-
"""Log a metric for a run.
|
|
7855
|
-
|
|
7856
|
-
Log a metric for a run. A metric is a key-value pair (string key, float value) with an associated
|
|
7795
|
+
"""Log a metric for a run. A metric is a key-value pair (string key, float value) with an associated
|
|
7857
7796
|
timestamp. Examples include the various metrics that represent ML model accuracy. A metric can be
|
|
7858
7797
|
logged multiple times.
|
|
7859
7798
|
|
|
@@ -7908,9 +7847,10 @@ class ExperimentsAPI:
|
|
|
7908
7847
|
self._api.do("POST", "/api/2.0/mlflow/runs/log-metric", body=body, headers=headers)
|
|
7909
7848
|
|
|
7910
7849
|
def log_model(self, *, model_json: Optional[str] = None, run_id: Optional[str] = None):
|
|
7911
|
-
"""
|
|
7850
|
+
"""**Note:** the [Create a logged model](/api/workspace/experiments/createloggedmodel) API replaces this
|
|
7851
|
+
endpoint.
|
|
7912
7852
|
|
|
7913
|
-
|
|
7853
|
+
Log a model to an MLflow Run.
|
|
7914
7854
|
|
|
7915
7855
|
:param model_json: str (optional)
|
|
7916
7856
|
MLmodel file in json format.
|
|
@@ -7932,11 +7872,7 @@ class ExperimentsAPI:
|
|
|
7932
7872
|
self._api.do("POST", "/api/2.0/mlflow/runs/log-model", body=body, headers=headers)
|
|
7933
7873
|
|
|
7934
7874
|
def log_outputs(self, run_id: str, *, models: Optional[List[ModelOutput]] = None):
|
|
7935
|
-
"""
|
|
7936
|
-
|
|
7937
|
-
**NOTE**: Experimental: This API may change or be removed in a future release without warning.
|
|
7938
|
-
|
|
7939
|
-
Logs outputs, such as models, from an MLflow Run.
|
|
7875
|
+
"""Logs outputs, such as models, from an MLflow Run.
|
|
7940
7876
|
|
|
7941
7877
|
:param run_id: str
|
|
7942
7878
|
The ID of the Run from which to log outputs.
|
|
@@ -7958,9 +7894,7 @@ class ExperimentsAPI:
|
|
|
7958
7894
|
self._api.do("POST", "/api/2.0/mlflow/runs/outputs", body=body, headers=headers)
|
|
7959
7895
|
|
|
7960
7896
|
def log_param(self, key: str, value: str, *, run_id: Optional[str] = None, run_uuid: Optional[str] = None):
|
|
7961
|
-
"""
|
|
7962
|
-
|
|
7963
|
-
Logs a param used for a run. A param is a key-value pair (string key, string value). Examples include
|
|
7897
|
+
"""Logs a param used for a run. A param is a key-value pair (string key, string value). Examples include
|
|
7964
7898
|
hyperparameters used for ML model training and constant dates and values used in an ETL pipeline. A
|
|
7965
7899
|
param can be logged only once for a run.
|
|
7966
7900
|
|
|
@@ -7993,9 +7927,7 @@ class ExperimentsAPI:
|
|
|
7993
7927
|
self._api.do("POST", "/api/2.0/mlflow/runs/log-parameter", body=body, headers=headers)
|
|
7994
7928
|
|
|
7995
7929
|
def restore_experiment(self, experiment_id: str):
|
|
7996
|
-
"""Restore an experiment.
|
|
7997
|
-
|
|
7998
|
-
Restore an experiment marked for deletion. This also restores associated metadata, runs, metrics,
|
|
7930
|
+
"""Restore an experiment marked for deletion. This also restores associated metadata, runs, metrics,
|
|
7999
7931
|
params, and tags. If experiment uses FileStore, underlying artifacts associated with experiment are
|
|
8000
7932
|
also restored.
|
|
8001
7933
|
|
|
@@ -8017,9 +7949,7 @@ class ExperimentsAPI:
|
|
|
8017
7949
|
self._api.do("POST", "/api/2.0/mlflow/experiments/restore", body=body, headers=headers)
|
|
8018
7950
|
|
|
8019
7951
|
def restore_run(self, run_id: str):
|
|
8020
|
-
"""
|
|
8021
|
-
|
|
8022
|
-
Restores a deleted run. This also restores associated metadata, runs, metrics, params, and tags.
|
|
7952
|
+
"""Restores a deleted run. This also restores associated metadata, runs, metrics, params, and tags.
|
|
8023
7953
|
|
|
8024
7954
|
Throws `RESOURCE_DOES_NOT_EXIST` if the run was never created or was permanently deleted.
|
|
8025
7955
|
|
|
@@ -8041,9 +7971,7 @@ class ExperimentsAPI:
|
|
|
8041
7971
|
def restore_runs(
|
|
8042
7972
|
self, experiment_id: str, min_timestamp_millis: int, *, max_runs: Optional[int] = None
|
|
8043
7973
|
) -> RestoreRunsResponse:
|
|
8044
|
-
"""
|
|
8045
|
-
|
|
8046
|
-
Bulk restore runs in an experiment that were deleted no earlier than the specified timestamp. Restores
|
|
7974
|
+
"""Bulk restore runs in an experiment that were deleted no earlier than the specified timestamp. Restores
|
|
8047
7975
|
at most max_runs per request. To call this API from a Databricks Notebook in Python, you can use the
|
|
8048
7976
|
client code snippet on
|
|
8049
7977
|
|
|
@@ -8082,9 +8010,7 @@ class ExperimentsAPI:
|
|
|
8082
8010
|
page_token: Optional[str] = None,
|
|
8083
8011
|
view_type: Optional[ViewType] = None,
|
|
8084
8012
|
) -> Iterator[Experiment]:
|
|
8085
|
-
"""
|
|
8086
|
-
|
|
8087
|
-
Searches for experiments that satisfy specified search criteria.
|
|
8013
|
+
"""Searches for experiments that satisfy specified search criteria.
|
|
8088
8014
|
|
|
8089
8015
|
:param filter: str (optional)
|
|
8090
8016
|
String representing a SQL filter condition (e.g. "name ILIKE 'my-experiment%'")
|
|
@@ -8136,9 +8062,7 @@ class ExperimentsAPI:
|
|
|
8136
8062
|
order_by: Optional[List[SearchLoggedModelsOrderBy]] = None,
|
|
8137
8063
|
page_token: Optional[str] = None,
|
|
8138
8064
|
) -> SearchLoggedModelsResponse:
|
|
8139
|
-
"""Search
|
|
8140
|
-
|
|
8141
|
-
Search for Logged Models that satisfy specified search criteria.
|
|
8065
|
+
"""Search for Logged Models that satisfy specified search criteria.
|
|
8142
8066
|
|
|
8143
8067
|
:param datasets: List[:class:`SearchLoggedModelsDataset`] (optional)
|
|
8144
8068
|
List of datasets on which to apply the metrics filter clauses. For example, a filter with
|
|
@@ -8193,9 +8117,7 @@ class ExperimentsAPI:
|
|
|
8193
8117
|
page_token: Optional[str] = None,
|
|
8194
8118
|
run_view_type: Optional[ViewType] = None,
|
|
8195
8119
|
) -> Iterator[Run]:
|
|
8196
|
-
"""
|
|
8197
|
-
|
|
8198
|
-
Searches for runs that satisfy expressions.
|
|
8120
|
+
"""Searches for runs that satisfy expressions.
|
|
8199
8121
|
|
|
8200
8122
|
Search expressions can use `mlflowMetric` and `mlflowParam` keys.
|
|
8201
8123
|
|
|
@@ -8255,9 +8177,7 @@ class ExperimentsAPI:
|
|
|
8255
8177
|
body["page_token"] = json["next_page_token"]
|
|
8256
8178
|
|
|
8257
8179
|
def set_experiment_tag(self, experiment_id: str, key: str, value: str):
|
|
8258
|
-
"""
|
|
8259
|
-
|
|
8260
|
-
Sets a tag on an experiment. Experiment tags are metadata that can be updated.
|
|
8180
|
+
"""Sets a tag on an experiment. Experiment tags are metadata that can be updated.
|
|
8261
8181
|
|
|
8262
8182
|
:param experiment_id: str
|
|
8263
8183
|
ID of the experiment under which to log the tag. Must be provided.
|
|
@@ -8283,7 +8203,7 @@ class ExperimentsAPI:
|
|
|
8283
8203
|
self._api.do("POST", "/api/2.0/mlflow/experiments/set-experiment-tag", body=body, headers=headers)
|
|
8284
8204
|
|
|
8285
8205
|
def set_logged_model_tags(self, model_id: str, *, tags: Optional[List[LoggedModelTag]] = None):
|
|
8286
|
-
"""Set
|
|
8206
|
+
"""Set tags for a logged model.
|
|
8287
8207
|
|
|
8288
8208
|
:param model_id: str
|
|
8289
8209
|
The ID of the logged model to set the tags on.
|
|
@@ -8305,9 +8225,7 @@ class ExperimentsAPI:
|
|
|
8305
8225
|
def set_permissions(
|
|
8306
8226
|
self, experiment_id: str, *, access_control_list: Optional[List[ExperimentAccessControlRequest]] = None
|
|
8307
8227
|
) -> ExperimentPermissions:
|
|
8308
|
-
"""
|
|
8309
|
-
|
|
8310
|
-
Sets permissions on an object, replacing existing permissions if they exist. Deletes all direct
|
|
8228
|
+
"""Sets permissions on an object, replacing existing permissions if they exist. Deletes all direct
|
|
8311
8229
|
permissions if none are specified. Objects can inherit permissions from their root object.
|
|
8312
8230
|
|
|
8313
8231
|
:param experiment_id: str
|
|
@@ -8328,9 +8246,7 @@ class ExperimentsAPI:
|
|
|
8328
8246
|
return ExperimentPermissions.from_dict(res)
|
|
8329
8247
|
|
|
8330
8248
|
def set_tag(self, key: str, value: str, *, run_id: Optional[str] = None, run_uuid: Optional[str] = None):
|
|
8331
|
-
"""
|
|
8332
|
-
|
|
8333
|
-
Sets a tag on a run. Tags are run metadata that can be updated during a run and after a run completes.
|
|
8249
|
+
"""Sets a tag on a run. Tags are run metadata that can be updated during a run and after a run completes.
|
|
8334
8250
|
|
|
8335
8251
|
:param key: str
|
|
8336
8252
|
Name of the tag. Keys up to 250 bytes in size are supported.
|
|
@@ -8361,9 +8277,7 @@ class ExperimentsAPI:
|
|
|
8361
8277
|
self._api.do("POST", "/api/2.0/mlflow/runs/set-tag", body=body, headers=headers)
|
|
8362
8278
|
|
|
8363
8279
|
def update_experiment(self, experiment_id: str, *, new_name: Optional[str] = None):
|
|
8364
|
-
"""
|
|
8365
|
-
|
|
8366
|
-
Updates experiment metadata.
|
|
8280
|
+
"""Updates experiment metadata.
|
|
8367
8281
|
|
|
8368
8282
|
:param experiment_id: str
|
|
8369
8283
|
ID of the associated experiment.
|
|
@@ -8387,9 +8301,7 @@ class ExperimentsAPI:
|
|
|
8387
8301
|
def update_permissions(
|
|
8388
8302
|
self, experiment_id: str, *, access_control_list: Optional[List[ExperimentAccessControlRequest]] = None
|
|
8389
8303
|
) -> ExperimentPermissions:
|
|
8390
|
-
"""
|
|
8391
|
-
|
|
8392
|
-
Updates the permissions on an experiment. Experiments can inherit permissions from their root object.
|
|
8304
|
+
"""Updates the permissions on an experiment. Experiments can inherit permissions from their root object.
|
|
8393
8305
|
|
|
8394
8306
|
:param experiment_id: str
|
|
8395
8307
|
The experiment for which to get or manage permissions.
|
|
@@ -8417,9 +8329,7 @@ class ExperimentsAPI:
|
|
|
8417
8329
|
run_uuid: Optional[str] = None,
|
|
8418
8330
|
status: Optional[UpdateRunStatus] = None,
|
|
8419
8331
|
) -> UpdateRunResponse:
|
|
8420
|
-
"""
|
|
8421
|
-
|
|
8422
|
-
Updates run metadata.
|
|
8332
|
+
"""Updates run metadata.
|
|
8423
8333
|
|
|
8424
8334
|
:param end_time: int (optional)
|
|
8425
8335
|
Unix timestamp in milliseconds of when the run ended.
|
|
@@ -8455,6 +8365,146 @@ class ExperimentsAPI:
|
|
|
8455
8365
|
return UpdateRunResponse.from_dict(res)
|
|
8456
8366
|
|
|
8457
8367
|
|
|
8368
|
+
class FeatureStoreAPI:
|
|
8369
|
+
"""A feature store is a centralized repository that enables data scientists to find and share features. Using
|
|
8370
|
+
a feature store also ensures that the code used to compute feature values is the same during model
|
|
8371
|
+
training and when the model is used for inference.
|
|
8372
|
+
|
|
8373
|
+
An online store is a low-latency database used for feature lookup during real-time model inference or
|
|
8374
|
+
serve feature for real-time applications."""
|
|
8375
|
+
|
|
8376
|
+
def __init__(self, api_client):
|
|
8377
|
+
self._api = api_client
|
|
8378
|
+
|
|
8379
|
+
def create_online_store(self, online_store: OnlineStore) -> OnlineStore:
|
|
8380
|
+
"""Create an Online Feature Store.
|
|
8381
|
+
|
|
8382
|
+
:param online_store: :class:`OnlineStore`
|
|
8383
|
+
An OnlineStore is a logical database instance that stores and serves features online.
|
|
8384
|
+
|
|
8385
|
+
:returns: :class:`OnlineStore`
|
|
8386
|
+
"""
|
|
8387
|
+
body = online_store.as_dict()
|
|
8388
|
+
headers = {
|
|
8389
|
+
"Accept": "application/json",
|
|
8390
|
+
"Content-Type": "application/json",
|
|
8391
|
+
}
|
|
8392
|
+
|
|
8393
|
+
res = self._api.do("POST", "/api/2.0/feature-store/online-stores", body=body, headers=headers)
|
|
8394
|
+
return OnlineStore.from_dict(res)
|
|
8395
|
+
|
|
8396
|
+
def delete_online_store(self, name: str):
|
|
8397
|
+
"""Delete an Online Feature Store.
|
|
8398
|
+
|
|
8399
|
+
:param name: str
|
|
8400
|
+
Name of the online store to delete.
|
|
8401
|
+
|
|
8402
|
+
|
|
8403
|
+
"""
|
|
8404
|
+
|
|
8405
|
+
headers = {
|
|
8406
|
+
"Accept": "application/json",
|
|
8407
|
+
}
|
|
8408
|
+
|
|
8409
|
+
self._api.do("DELETE", f"/api/2.0/feature-store/online-stores/{name}", headers=headers)
|
|
8410
|
+
|
|
8411
|
+
def get_online_store(self, name: str) -> OnlineStore:
|
|
8412
|
+
"""Get an Online Feature Store.
|
|
8413
|
+
|
|
8414
|
+
:param name: str
|
|
8415
|
+
Name of the online store to get.
|
|
8416
|
+
|
|
8417
|
+
:returns: :class:`OnlineStore`
|
|
8418
|
+
"""
|
|
8419
|
+
|
|
8420
|
+
headers = {
|
|
8421
|
+
"Accept": "application/json",
|
|
8422
|
+
}
|
|
8423
|
+
|
|
8424
|
+
res = self._api.do("GET", f"/api/2.0/feature-store/online-stores/{name}", headers=headers)
|
|
8425
|
+
return OnlineStore.from_dict(res)
|
|
8426
|
+
|
|
8427
|
+
def list_online_stores(
|
|
8428
|
+
self, *, page_size: Optional[int] = None, page_token: Optional[str] = None
|
|
8429
|
+
) -> Iterator[OnlineStore]:
|
|
8430
|
+
"""List Online Feature Stores.
|
|
8431
|
+
|
|
8432
|
+
:param page_size: int (optional)
|
|
8433
|
+
The maximum number of results to return. Defaults to 100 if not specified.
|
|
8434
|
+
:param page_token: str (optional)
|
|
8435
|
+
Pagination token to go to the next page based on a previous query.
|
|
8436
|
+
|
|
8437
|
+
:returns: Iterator over :class:`OnlineStore`
|
|
8438
|
+
"""
|
|
8439
|
+
|
|
8440
|
+
query = {}
|
|
8441
|
+
if page_size is not None:
|
|
8442
|
+
query["page_size"] = page_size
|
|
8443
|
+
if page_token is not None:
|
|
8444
|
+
query["page_token"] = page_token
|
|
8445
|
+
headers = {
|
|
8446
|
+
"Accept": "application/json",
|
|
8447
|
+
}
|
|
8448
|
+
|
|
8449
|
+
while True:
|
|
8450
|
+
json = self._api.do("GET", "/api/2.0/feature-store/online-stores", query=query, headers=headers)
|
|
8451
|
+
if "online_stores" in json:
|
|
8452
|
+
for v in json["online_stores"]:
|
|
8453
|
+
yield OnlineStore.from_dict(v)
|
|
8454
|
+
if "next_page_token" not in json or not json["next_page_token"]:
|
|
8455
|
+
return
|
|
8456
|
+
query["page_token"] = json["next_page_token"]
|
|
8457
|
+
|
|
8458
|
+
def publish_table(self, source_table_name: str, publish_spec: PublishSpec) -> PublishTableResponse:
|
|
8459
|
+
"""Publish features.
|
|
8460
|
+
|
|
8461
|
+
:param source_table_name: str
|
|
8462
|
+
The full three-part (catalog, schema, table) name of the source table.
|
|
8463
|
+
:param publish_spec: :class:`PublishSpec`
|
|
8464
|
+
The specification for publishing the online table from the source table.
|
|
8465
|
+
|
|
8466
|
+
:returns: :class:`PublishTableResponse`
|
|
8467
|
+
"""
|
|
8468
|
+
body = {}
|
|
8469
|
+
if publish_spec is not None:
|
|
8470
|
+
body["publish_spec"] = publish_spec.as_dict()
|
|
8471
|
+
headers = {
|
|
8472
|
+
"Accept": "application/json",
|
|
8473
|
+
"Content-Type": "application/json",
|
|
8474
|
+
}
|
|
8475
|
+
|
|
8476
|
+
res = self._api.do(
|
|
8477
|
+
"POST", f"/api/2.0/feature-store/tables/{source_table_name}/publish", body=body, headers=headers
|
|
8478
|
+
)
|
|
8479
|
+
return PublishTableResponse.from_dict(res)
|
|
8480
|
+
|
|
8481
|
+
def update_online_store(self, name: str, online_store: OnlineStore, update_mask: str) -> OnlineStore:
|
|
8482
|
+
"""Update an Online Feature Store.
|
|
8483
|
+
|
|
8484
|
+
:param name: str
|
|
8485
|
+
The name of the online store. This is the unique identifier for the online store.
|
|
8486
|
+
:param online_store: :class:`OnlineStore`
|
|
8487
|
+
An OnlineStore is a logical database instance that stores and serves features online.
|
|
8488
|
+
:param update_mask: str
|
|
8489
|
+
The list of fields to update.
|
|
8490
|
+
|
|
8491
|
+
:returns: :class:`OnlineStore`
|
|
8492
|
+
"""
|
|
8493
|
+
body = online_store.as_dict()
|
|
8494
|
+
query = {}
|
|
8495
|
+
if update_mask is not None:
|
|
8496
|
+
query["update_mask"] = update_mask
|
|
8497
|
+
headers = {
|
|
8498
|
+
"Accept": "application/json",
|
|
8499
|
+
"Content-Type": "application/json",
|
|
8500
|
+
}
|
|
8501
|
+
|
|
8502
|
+
res = self._api.do(
|
|
8503
|
+
"PATCH", f"/api/2.0/feature-store/online-stores/{name}", query=query, body=body, headers=headers
|
|
8504
|
+
)
|
|
8505
|
+
return OnlineStore.from_dict(res)
|
|
8506
|
+
|
|
8507
|
+
|
|
8458
8508
|
class ForecastingAPI:
|
|
8459
8509
|
"""The Forecasting API allows you to create and get serverless forecasting experiments"""
|
|
8460
8510
|
|
|
@@ -8517,9 +8567,7 @@ class ForecastingAPI:
|
|
|
8517
8567
|
timeseries_identifier_columns: Optional[List[str]] = None,
|
|
8518
8568
|
training_frameworks: Optional[List[str]] = None,
|
|
8519
8569
|
) -> Wait[ForecastingExperiment]:
|
|
8520
|
-
"""
|
|
8521
|
-
|
|
8522
|
-
Creates a serverless forecasting experiment. Returns the experiment ID.
|
|
8570
|
+
"""Creates a serverless forecasting experiment. Returns the experiment ID.
|
|
8523
8571
|
|
|
8524
8572
|
:param train_data_path: str
|
|
8525
8573
|
The fully qualified path of a Unity Catalog table, formatted as catalog_name.schema_name.table_name,
|
|
@@ -8664,9 +8712,7 @@ class ForecastingAPI:
|
|
|
8664
8712
|
).result(timeout=timeout)
|
|
8665
8713
|
|
|
8666
8714
|
def get_experiment(self, experiment_id: str) -> ForecastingExperiment:
|
|
8667
|
-
"""
|
|
8668
|
-
|
|
8669
|
-
Public RPC to get forecasting experiment
|
|
8715
|
+
"""Public RPC to get forecasting experiment
|
|
8670
8716
|
|
|
8671
8717
|
:param experiment_id: str
|
|
8672
8718
|
The unique ID of a forecasting experiment
|
|
@@ -8697,9 +8743,7 @@ class ModelRegistryAPI:
|
|
|
8697
8743
|
def approve_transition_request(
|
|
8698
8744
|
self, name: str, version: str, stage: Stage, archive_existing_versions: bool, *, comment: Optional[str] = None
|
|
8699
8745
|
) -> ApproveTransitionRequestResponse:
|
|
8700
|
-
"""
|
|
8701
|
-
|
|
8702
|
-
Approves a model version stage transition request.
|
|
8746
|
+
"""Approves a model version stage transition request.
|
|
8703
8747
|
|
|
8704
8748
|
:param name: str
|
|
8705
8749
|
Name of the model.
|
|
@@ -8742,9 +8786,7 @@ class ModelRegistryAPI:
|
|
|
8742
8786
|
return ApproveTransitionRequestResponse.from_dict(res)
|
|
8743
8787
|
|
|
8744
8788
|
def create_comment(self, name: str, version: str, comment: str) -> CreateCommentResponse:
|
|
8745
|
-
"""
|
|
8746
|
-
|
|
8747
|
-
Posts a comment on a model version. A comment can be submitted either by a user or programmatically to
|
|
8789
|
+
"""Posts a comment on a model version. A comment can be submitted either by a user or programmatically to
|
|
8748
8790
|
display relevant information about the model. For example, test results or deployment errors.
|
|
8749
8791
|
|
|
8750
8792
|
:param name: str
|
|
@@ -8774,9 +8816,7 @@ class ModelRegistryAPI:
|
|
|
8774
8816
|
def create_model(
|
|
8775
8817
|
self, name: str, *, description: Optional[str] = None, tags: Optional[List[ModelTag]] = None
|
|
8776
8818
|
) -> CreateModelResponse:
|
|
8777
|
-
"""
|
|
8778
|
-
|
|
8779
|
-
Creates a new registered model with the name specified in the request body.
|
|
8819
|
+
"""Creates a new registered model with the name specified in the request body.
|
|
8780
8820
|
|
|
8781
8821
|
Throws `RESOURCE_ALREADY_EXISTS` if a registered model with the given name exists.
|
|
8782
8822
|
|
|
@@ -8814,9 +8854,7 @@ class ModelRegistryAPI:
|
|
|
8814
8854
|
run_link: Optional[str] = None,
|
|
8815
8855
|
tags: Optional[List[ModelVersionTag]] = None,
|
|
8816
8856
|
) -> CreateModelVersionResponse:
|
|
8817
|
-
"""
|
|
8818
|
-
|
|
8819
|
-
Creates a model version.
|
|
8857
|
+
"""Creates a model version.
|
|
8820
8858
|
|
|
8821
8859
|
:param name: str
|
|
8822
8860
|
Register model under this name
|
|
@@ -8859,9 +8897,7 @@ class ModelRegistryAPI:
|
|
|
8859
8897
|
def create_transition_request(
|
|
8860
8898
|
self, name: str, version: str, stage: Stage, *, comment: Optional[str] = None
|
|
8861
8899
|
) -> CreateTransitionRequestResponse:
|
|
8862
|
-
"""
|
|
8863
|
-
|
|
8864
|
-
Creates a model version stage transition request.
|
|
8900
|
+
"""Creates a model version stage transition request.
|
|
8865
8901
|
|
|
8866
8902
|
:param name: str
|
|
8867
8903
|
Name of the model.
|
|
@@ -8909,9 +8945,7 @@ class ModelRegistryAPI:
|
|
|
8909
8945
|
model_name: Optional[str] = None,
|
|
8910
8946
|
status: Optional[RegistryWebhookStatus] = None,
|
|
8911
8947
|
) -> CreateWebhookResponse:
|
|
8912
|
-
"""
|
|
8913
|
-
|
|
8914
|
-
**NOTE**: This endpoint is in Public Preview.
|
|
8948
|
+
"""**NOTE**: This endpoint is in Public Preview.
|
|
8915
8949
|
|
|
8916
8950
|
Creates a registry webhook.
|
|
8917
8951
|
|
|
@@ -8949,7 +8983,8 @@ class ModelRegistryAPI:
|
|
|
8949
8983
|
:param http_url_spec: :class:`HttpUrlSpec` (optional)
|
|
8950
8984
|
:param job_spec: :class:`JobSpec` (optional)
|
|
8951
8985
|
:param model_name: str (optional)
|
|
8952
|
-
|
|
8986
|
+
If model name is not specified, a registry-wide webhook is created that listens for the specified
|
|
8987
|
+
events across all versions of all registered models.
|
|
8953
8988
|
:param status: :class:`RegistryWebhookStatus` (optional)
|
|
8954
8989
|
Enable or disable triggering the webhook, or put the webhook into test mode. The default is
|
|
8955
8990
|
`ACTIVE`: * `ACTIVE`: Webhook is triggered when an associated event happens.
|
|
@@ -8983,11 +9018,10 @@ class ModelRegistryAPI:
|
|
|
8983
9018
|
return CreateWebhookResponse.from_dict(res)
|
|
8984
9019
|
|
|
8985
9020
|
def delete_comment(self, id: str):
|
|
8986
|
-
"""
|
|
8987
|
-
|
|
8988
|
-
Deletes a comment on a model version.
|
|
9021
|
+
"""Deletes a comment on a model version.
|
|
8989
9022
|
|
|
8990
9023
|
:param id: str
|
|
9024
|
+
Unique identifier of an activity
|
|
8991
9025
|
|
|
8992
9026
|
|
|
8993
9027
|
"""
|
|
@@ -9002,9 +9036,7 @@ class ModelRegistryAPI:
|
|
|
9002
9036
|
self._api.do("DELETE", "/api/2.0/mlflow/comments/delete", query=query, headers=headers)
|
|
9003
9037
|
|
|
9004
9038
|
def delete_model(self, name: str):
|
|
9005
|
-
"""
|
|
9006
|
-
|
|
9007
|
-
Deletes a registered model.
|
|
9039
|
+
"""Deletes a registered model.
|
|
9008
9040
|
|
|
9009
9041
|
:param name: str
|
|
9010
9042
|
Registered model unique name identifier.
|
|
@@ -9022,9 +9054,7 @@ class ModelRegistryAPI:
|
|
|
9022
9054
|
self._api.do("DELETE", "/api/2.0/mlflow/registered-models/delete", query=query, headers=headers)
|
|
9023
9055
|
|
|
9024
9056
|
def delete_model_tag(self, name: str, key: str):
|
|
9025
|
-
"""
|
|
9026
|
-
|
|
9027
|
-
Deletes the tag for a registered model.
|
|
9057
|
+
"""Deletes the tag for a registered model.
|
|
9028
9058
|
|
|
9029
9059
|
:param name: str
|
|
9030
9060
|
Name of the registered model that the tag was logged under.
|
|
@@ -9047,9 +9077,7 @@ class ModelRegistryAPI:
|
|
|
9047
9077
|
self._api.do("DELETE", "/api/2.0/mlflow/registered-models/delete-tag", query=query, headers=headers)
|
|
9048
9078
|
|
|
9049
9079
|
def delete_model_version(self, name: str, version: str):
|
|
9050
|
-
"""
|
|
9051
|
-
|
|
9052
|
-
Deletes a model version.
|
|
9080
|
+
"""Deletes a model version.
|
|
9053
9081
|
|
|
9054
9082
|
:param name: str
|
|
9055
9083
|
Name of the registered model
|
|
@@ -9071,9 +9099,7 @@ class ModelRegistryAPI:
|
|
|
9071
9099
|
self._api.do("DELETE", "/api/2.0/mlflow/model-versions/delete", query=query, headers=headers)
|
|
9072
9100
|
|
|
9073
9101
|
def delete_model_version_tag(self, name: str, version: str, key: str):
|
|
9074
|
-
"""
|
|
9075
|
-
|
|
9076
|
-
Deletes a model version tag.
|
|
9102
|
+
"""Deletes a model version tag.
|
|
9077
9103
|
|
|
9078
9104
|
:param name: str
|
|
9079
9105
|
Name of the registered model that the tag was logged under.
|
|
@@ -9108,9 +9134,7 @@ class ModelRegistryAPI:
|
|
|
9108
9134
|
*,
|
|
9109
9135
|
comment: Optional[str] = None,
|
|
9110
9136
|
):
|
|
9111
|
-
"""
|
|
9112
|
-
|
|
9113
|
-
Cancels a model version stage transition request.
|
|
9137
|
+
"""Cancels a model version stage transition request.
|
|
9114
9138
|
|
|
9115
9139
|
:param name: str
|
|
9116
9140
|
Name of the model.
|
|
@@ -9153,9 +9177,7 @@ class ModelRegistryAPI:
|
|
|
9153
9177
|
self._api.do("DELETE", "/api/2.0/mlflow/transition-requests/delete", query=query, headers=headers)
|
|
9154
9178
|
|
|
9155
9179
|
def delete_webhook(self, *, id: Optional[str] = None):
|
|
9156
|
-
"""
|
|
9157
|
-
|
|
9158
|
-
**NOTE:** This endpoint is in Public Preview.
|
|
9180
|
+
"""**NOTE:** This endpoint is in Public Preview.
|
|
9159
9181
|
|
|
9160
9182
|
Deletes a registry webhook.
|
|
9161
9183
|
|
|
@@ -9175,9 +9197,7 @@ class ModelRegistryAPI:
|
|
|
9175
9197
|
self._api.do("DELETE", "/api/2.0/mlflow/registry-webhooks/delete", query=query, headers=headers)
|
|
9176
9198
|
|
|
9177
9199
|
def get_latest_versions(self, name: str, *, stages: Optional[List[str]] = None) -> Iterator[ModelVersion]:
|
|
9178
|
-
"""
|
|
9179
|
-
|
|
9180
|
-
Gets the latest version of a registered model.
|
|
9200
|
+
"""Gets the latest version of a registered model.
|
|
9181
9201
|
|
|
9182
9202
|
:param name: str
|
|
9183
9203
|
Registered model unique name identifier.
|
|
@@ -9201,9 +9221,7 @@ class ModelRegistryAPI:
|
|
|
9201
9221
|
return parsed if parsed is not None else []
|
|
9202
9222
|
|
|
9203
9223
|
def get_model(self, name: str) -> GetModelResponse:
|
|
9204
|
-
"""Get model.
|
|
9205
|
-
|
|
9206
|
-
Get the details of a model. This is a Databricks workspace version of the [MLflow endpoint] that also
|
|
9224
|
+
"""Get the details of a model. This is a Databricks workspace version of the [MLflow endpoint] that also
|
|
9207
9225
|
returns the model's Databricks workspace ID and the permission level of the requesting user on the
|
|
9208
9226
|
model.
|
|
9209
9227
|
|
|
@@ -9228,8 +9246,6 @@ class ModelRegistryAPI:
|
|
|
9228
9246
|
def get_model_version(self, name: str, version: str) -> GetModelVersionResponse:
|
|
9229
9247
|
"""Get a model version.
|
|
9230
9248
|
|
|
9231
|
-
Get a model version.
|
|
9232
|
-
|
|
9233
9249
|
:param name: str
|
|
9234
9250
|
Name of the registered model
|
|
9235
9251
|
:param version: str
|
|
@@ -9251,9 +9267,7 @@ class ModelRegistryAPI:
|
|
|
9251
9267
|
return GetModelVersionResponse.from_dict(res)
|
|
9252
9268
|
|
|
9253
9269
|
def get_model_version_download_uri(self, name: str, version: str) -> GetModelVersionDownloadUriResponse:
|
|
9254
|
-
"""
|
|
9255
|
-
|
|
9256
|
-
Gets a URI to download the model version.
|
|
9270
|
+
"""Gets a URI to download the model version.
|
|
9257
9271
|
|
|
9258
9272
|
:param name: str
|
|
9259
9273
|
Name of the registered model
|
|
@@ -9276,9 +9290,7 @@ class ModelRegistryAPI:
|
|
|
9276
9290
|
return GetModelVersionDownloadUriResponse.from_dict(res)
|
|
9277
9291
|
|
|
9278
9292
|
def get_permission_levels(self, registered_model_id: str) -> GetRegisteredModelPermissionLevelsResponse:
|
|
9279
|
-
"""
|
|
9280
|
-
|
|
9281
|
-
Gets the permission levels that a user can have on an object.
|
|
9293
|
+
"""Gets the permission levels that a user can have on an object.
|
|
9282
9294
|
|
|
9283
9295
|
:param registered_model_id: str
|
|
9284
9296
|
The registered model for which to get or manage permissions.
|
|
@@ -9296,9 +9308,7 @@ class ModelRegistryAPI:
|
|
|
9296
9308
|
return GetRegisteredModelPermissionLevelsResponse.from_dict(res)
|
|
9297
9309
|
|
|
9298
9310
|
def get_permissions(self, registered_model_id: str) -> RegisteredModelPermissions:
|
|
9299
|
-
"""
|
|
9300
|
-
|
|
9301
|
-
Gets the permissions of a registered model. Registered models can inherit permissions from their root
|
|
9311
|
+
"""Gets the permissions of a registered model. Registered models can inherit permissions from their root
|
|
9302
9312
|
object.
|
|
9303
9313
|
|
|
9304
9314
|
:param registered_model_id: str
|
|
@@ -9315,9 +9325,7 @@ class ModelRegistryAPI:
|
|
|
9315
9325
|
return RegisteredModelPermissions.from_dict(res)
|
|
9316
9326
|
|
|
9317
9327
|
def list_models(self, *, max_results: Optional[int] = None, page_token: Optional[str] = None) -> Iterator[Model]:
|
|
9318
|
-
"""
|
|
9319
|
-
|
|
9320
|
-
Lists all available registered models, up to the limit specified in __max_results__.
|
|
9328
|
+
"""Lists all available registered models, up to the limit specified in __max_results__.
|
|
9321
9329
|
|
|
9322
9330
|
:param max_results: int (optional)
|
|
9323
9331
|
Maximum number of registered models desired. Max threshold is 1000.
|
|
@@ -9346,9 +9354,7 @@ class ModelRegistryAPI:
|
|
|
9346
9354
|
query["page_token"] = json["next_page_token"]
|
|
9347
9355
|
|
|
9348
9356
|
def list_transition_requests(self, name: str, version: str) -> Iterator[Activity]:
|
|
9349
|
-
"""
|
|
9350
|
-
|
|
9351
|
-
Gets a list of all open stage transition requests for the model version.
|
|
9357
|
+
"""Gets a list of all open stage transition requests for the model version.
|
|
9352
9358
|
|
|
9353
9359
|
:param name: str
|
|
9354
9360
|
Name of the model.
|
|
@@ -9378,9 +9384,7 @@ class ModelRegistryAPI:
|
|
|
9378
9384
|
model_name: Optional[str] = None,
|
|
9379
9385
|
page_token: Optional[str] = None,
|
|
9380
9386
|
) -> Iterator[RegistryWebhook]:
|
|
9381
|
-
"""
|
|
9382
|
-
|
|
9383
|
-
**NOTE:** This endpoint is in Public Preview.
|
|
9387
|
+
"""**NOTE:** This endpoint is in Public Preview.
|
|
9384
9388
|
|
|
9385
9389
|
Lists all registry webhooks.
|
|
9386
9390
|
|
|
@@ -9419,9 +9423,7 @@ class ModelRegistryAPI:
|
|
|
9419
9423
|
def reject_transition_request(
|
|
9420
9424
|
self, name: str, version: str, stage: Stage, *, comment: Optional[str] = None
|
|
9421
9425
|
) -> RejectTransitionRequestResponse:
|
|
9422
|
-
"""
|
|
9423
|
-
|
|
9424
|
-
Rejects a model version stage transition request.
|
|
9426
|
+
"""Rejects a model version stage transition request.
|
|
9425
9427
|
|
|
9426
9428
|
:param name: str
|
|
9427
9429
|
Name of the model.
|
|
@@ -9460,9 +9462,7 @@ class ModelRegistryAPI:
|
|
|
9460
9462
|
return RejectTransitionRequestResponse.from_dict(res)
|
|
9461
9463
|
|
|
9462
9464
|
def rename_model(self, name: str, *, new_name: Optional[str] = None) -> RenameModelResponse:
|
|
9463
|
-
"""
|
|
9464
|
-
|
|
9465
|
-
Renames a registered model.
|
|
9465
|
+
"""Renames a registered model.
|
|
9466
9466
|
|
|
9467
9467
|
:param name: str
|
|
9468
9468
|
Registered model unique name identifier.
|
|
@@ -9492,9 +9492,7 @@ class ModelRegistryAPI:
|
|
|
9492
9492
|
order_by: Optional[List[str]] = None,
|
|
9493
9493
|
page_token: Optional[str] = None,
|
|
9494
9494
|
) -> Iterator[ModelVersion]:
|
|
9495
|
-
"""Searches model versions.
|
|
9496
|
-
|
|
9497
|
-
Searches for specific model versions based on the supplied __filter__.
|
|
9495
|
+
"""Searches for specific model versions based on the supplied __filter__.
|
|
9498
9496
|
|
|
9499
9497
|
:param filter: str (optional)
|
|
9500
9498
|
String filter condition, like "name='my-model-name'". Must be a single boolean condition, with
|
|
@@ -9541,9 +9539,7 @@ class ModelRegistryAPI:
|
|
|
9541
9539
|
order_by: Optional[List[str]] = None,
|
|
9542
9540
|
page_token: Optional[str] = None,
|
|
9543
9541
|
) -> Iterator[Model]:
|
|
9544
|
-
"""Search models.
|
|
9545
|
-
|
|
9546
|
-
Search for registered models based on the specified __filter__.
|
|
9542
|
+
"""Search for registered models based on the specified __filter__.
|
|
9547
9543
|
|
|
9548
9544
|
:param filter: str (optional)
|
|
9549
9545
|
String filter condition, like "name LIKE 'my-model-name'". Interpreted in the backend automatically
|
|
@@ -9584,9 +9580,7 @@ class ModelRegistryAPI:
|
|
|
9584
9580
|
query["page_token"] = json["next_page_token"]
|
|
9585
9581
|
|
|
9586
9582
|
def set_model_tag(self, name: str, key: str, value: str):
|
|
9587
|
-
"""
|
|
9588
|
-
|
|
9589
|
-
Sets a tag on a registered model.
|
|
9583
|
+
"""Sets a tag on a registered model.
|
|
9590
9584
|
|
|
9591
9585
|
:param name: str
|
|
9592
9586
|
Unique name of the model.
|
|
@@ -9615,9 +9609,7 @@ class ModelRegistryAPI:
|
|
|
9615
9609
|
self._api.do("POST", "/api/2.0/mlflow/registered-models/set-tag", body=body, headers=headers)
|
|
9616
9610
|
|
|
9617
9611
|
def set_model_version_tag(self, name: str, version: str, key: str, value: str):
|
|
9618
|
-
"""
|
|
9619
|
-
|
|
9620
|
-
Sets a model version tag.
|
|
9612
|
+
"""Sets a model version tag.
|
|
9621
9613
|
|
|
9622
9614
|
:param name: str
|
|
9623
9615
|
Unique name of the model.
|
|
@@ -9655,9 +9647,7 @@ class ModelRegistryAPI:
|
|
|
9655
9647
|
*,
|
|
9656
9648
|
access_control_list: Optional[List[RegisteredModelAccessControlRequest]] = None,
|
|
9657
9649
|
) -> RegisteredModelPermissions:
|
|
9658
|
-
"""
|
|
9659
|
-
|
|
9660
|
-
Sets permissions on an object, replacing existing permissions if they exist. Deletes all direct
|
|
9650
|
+
"""Sets permissions on an object, replacing existing permissions if they exist. Deletes all direct
|
|
9661
9651
|
permissions if none are specified. Objects can inherit permissions from their root object.
|
|
9662
9652
|
|
|
9663
9653
|
:param registered_model_id: str
|
|
@@ -9682,9 +9672,7 @@ class ModelRegistryAPI:
|
|
|
9682
9672
|
def test_registry_webhook(
|
|
9683
9673
|
self, id: str, *, event: Optional[RegistryWebhookEvent] = None
|
|
9684
9674
|
) -> TestRegistryWebhookResponse:
|
|
9685
|
-
"""
|
|
9686
|
-
|
|
9687
|
-
**NOTE:** This endpoint is in Public Preview.
|
|
9675
|
+
"""**NOTE:** This endpoint is in Public Preview.
|
|
9688
9676
|
|
|
9689
9677
|
Tests a registry webhook.
|
|
9690
9678
|
|
|
@@ -9712,9 +9700,7 @@ class ModelRegistryAPI:
|
|
|
9712
9700
|
def transition_stage(
|
|
9713
9701
|
self, name: str, version: str, stage: Stage, archive_existing_versions: bool, *, comment: Optional[str] = None
|
|
9714
9702
|
) -> TransitionStageResponse:
|
|
9715
|
-
"""Transition a stage.
|
|
9716
|
-
|
|
9717
|
-
Transition a model version's stage. This is a Databricks workspace version of the [MLflow endpoint]
|
|
9703
|
+
"""Transition a model version's stage. This is a Databricks workspace version of the [MLflow endpoint]
|
|
9718
9704
|
that also accepts a comment associated with the transition to be recorded.",
|
|
9719
9705
|
|
|
9720
9706
|
[MLflow endpoint]: https://www.mlflow.org/docs/latest/rest-api.html#transition-modelversion-stage
|
|
@@ -9762,9 +9748,7 @@ class ModelRegistryAPI:
|
|
|
9762
9748
|
return TransitionStageResponse.from_dict(res)
|
|
9763
9749
|
|
|
9764
9750
|
def update_comment(self, id: str, comment: str) -> UpdateCommentResponse:
|
|
9765
|
-
"""
|
|
9766
|
-
|
|
9767
|
-
Post an edit to a comment on a model version.
|
|
9751
|
+
"""Post an edit to a comment on a model version.
|
|
9768
9752
|
|
|
9769
9753
|
:param id: str
|
|
9770
9754
|
Unique identifier of an activity
|
|
@@ -9787,9 +9771,7 @@ class ModelRegistryAPI:
|
|
|
9787
9771
|
return UpdateCommentResponse.from_dict(res)
|
|
9788
9772
|
|
|
9789
9773
|
def update_model(self, name: str, *, description: Optional[str] = None):
|
|
9790
|
-
"""
|
|
9791
|
-
|
|
9792
|
-
Updates a registered model.
|
|
9774
|
+
"""Updates a registered model.
|
|
9793
9775
|
|
|
9794
9776
|
:param name: str
|
|
9795
9777
|
Registered model unique name identifier.
|
|
@@ -9811,9 +9793,7 @@ class ModelRegistryAPI:
|
|
|
9811
9793
|
self._api.do("PATCH", "/api/2.0/mlflow/registered-models/update", body=body, headers=headers)
|
|
9812
9794
|
|
|
9813
9795
|
def update_model_version(self, name: str, version: str, *, description: Optional[str] = None):
|
|
9814
|
-
"""
|
|
9815
|
-
|
|
9816
|
-
Updates the model version.
|
|
9796
|
+
"""Updates the model version.
|
|
9817
9797
|
|
|
9818
9798
|
:param name: str
|
|
9819
9799
|
Name of the registered model
|
|
@@ -9844,9 +9824,7 @@ class ModelRegistryAPI:
|
|
|
9844
9824
|
*,
|
|
9845
9825
|
access_control_list: Optional[List[RegisteredModelAccessControlRequest]] = None,
|
|
9846
9826
|
) -> RegisteredModelPermissions:
|
|
9847
|
-
"""
|
|
9848
|
-
|
|
9849
|
-
Updates the permissions on a registered model. Registered models can inherit permissions from their
|
|
9827
|
+
"""Updates the permissions on a registered model. Registered models can inherit permissions from their
|
|
9850
9828
|
root object.
|
|
9851
9829
|
|
|
9852
9830
|
:param registered_model_id: str
|
|
@@ -9878,9 +9856,7 @@ class ModelRegistryAPI:
|
|
|
9878
9856
|
job_spec: Optional[JobSpec] = None,
|
|
9879
9857
|
status: Optional[RegistryWebhookStatus] = None,
|
|
9880
9858
|
):
|
|
9881
|
-
"""
|
|
9882
|
-
|
|
9883
|
-
**NOTE:** This endpoint is in Public Preview.
|
|
9859
|
+
"""**NOTE:** This endpoint is in Public Preview.
|
|
9884
9860
|
|
|
9885
9861
|
Updates a registry webhook.
|
|
9886
9862
|
|