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.

Files changed (31) hide show
  1. databricks/sdk/__init__.py +41 -24
  2. databricks/sdk/service/aibuilder.py +505 -0
  3. databricks/sdk/service/apps.py +14 -42
  4. databricks/sdk/service/billing.py +167 -220
  5. databricks/sdk/service/catalog.py +462 -1235
  6. databricks/sdk/service/cleanrooms.py +26 -43
  7. databricks/sdk/service/compute.py +75 -211
  8. databricks/sdk/service/dashboards.py +77 -511
  9. databricks/sdk/service/database.py +1271 -0
  10. databricks/sdk/service/files.py +20 -54
  11. databricks/sdk/service/iam.py +61 -171
  12. databricks/sdk/service/jobs.py +453 -68
  13. databricks/sdk/service/marketplace.py +46 -146
  14. databricks/sdk/service/ml.py +453 -477
  15. databricks/sdk/service/oauth2.py +17 -45
  16. databricks/sdk/service/pipelines.py +125 -40
  17. databricks/sdk/service/provisioning.py +30 -93
  18. databricks/sdk/service/qualitymonitorv2.py +265 -0
  19. databricks/sdk/service/serving.py +106 -46
  20. databricks/sdk/service/settings.py +1062 -390
  21. databricks/sdk/service/sharing.py +33 -88
  22. databricks/sdk/service/sql.py +292 -185
  23. databricks/sdk/service/vectorsearch.py +13 -43
  24. databricks/sdk/service/workspace.py +35 -105
  25. databricks/sdk/version.py +1 -1
  26. {databricks_sdk-0.55.0.dist-info → databricks_sdk-0.57.0.dist-info}/METADATA +1 -1
  27. {databricks_sdk-0.55.0.dist-info → databricks_sdk-0.57.0.dist-info}/RECORD +31 -28
  28. {databricks_sdk-0.55.0.dist-info → databricks_sdk-0.57.0.dist-info}/WHEEL +0 -0
  29. {databricks_sdk-0.55.0.dist-info → databricks_sdk-0.57.0.dist-info}/licenses/LICENSE +0 -0
  30. {databricks_sdk-0.55.0.dist-info → databricks_sdk-0.57.0.dist-info}/licenses/NOTICE +0 -0
  31. {databricks_sdk-0.55.0.dist-info → databricks_sdk-0.57.0.dist-info}/top_level.txt +0 -0
@@ -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
- """Name of the model whose events would trigger this webhook."""
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 ListLoggedModelArtifactsResponse:
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
- """Token that can be used to retrieve the next page of artifact results"""
2865
+ """Pagination token to request next page of models for the same query."""
3003
2866
 
3004
- root_uri: Optional[str] = None
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 ListLoggedModelArtifactsResponse into a dictionary suitable for use as a JSON request body."""
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.root_uri is not None:
3015
- body["root_uri"] = self.root_uri
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 ListLoggedModelArtifactsResponse into a shallow dictionary of its immediate attributes."""
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.root_uri is not None:
3026
- body["root_uri"] = self.root_uri
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]) -> ListLoggedModelArtifactsResponse:
3031
- """Deserializes the ListLoggedModelArtifactsResponse from a dictionary."""
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
- root_uri=d.get("root_uri", None),
2892
+ registered_models=_repeated_dict(d, "registered_models", Model),
3036
2893
  )
3037
2894
 
3038
2895
 
3039
2896
  @dataclass
3040
- class ListModelsResponse:
2897
+ class ListOnlineStoresResponse:
3041
2898
  next_page_token: Optional[str] = None
3042
- """Pagination token to request next page of models for the same query."""
2899
+ """Pagination token to request the next page of results for this query."""
3043
2900
 
3044
- registered_models: Optional[List[Model]] = None
2901
+ online_stores: Optional[List[OnlineStore]] = None
2902
+ """List of online stores."""
3045
2903
 
3046
2904
  def as_dict(self) -> dict:
3047
- """Serializes the ListModelsResponse into a dictionary suitable for use as a JSON request body."""
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.registered_models:
3052
- body["registered_models"] = [v.as_dict() for v in self.registered_models]
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 ListModelsResponse into a shallow dictionary of its immediate attributes."""
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.registered_models:
3061
- body["registered_models"] = self.registered_models
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]) -> ListModelsResponse:
3066
- """Deserializes the ListModelsResponse from a dictionary."""
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
- registered_models=_repeated_dict(d, "registered_models", Model),
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
- """**NOTE**: Experimental: This API field may change or be removed in a future release without
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
- """Create experiment.
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
- """Create a run.
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
- """Delete an experiment.
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
- """Delete a run.
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
- """Delete runs by creation time.
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
- """Delete a tag on a run.
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
- """Get an experiment by name.
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
- """Get an experiment.
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
- """Get metric history for a run.
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
- """Get experiment permission levels.
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
- """Get experiment permissions.
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
- """Get a run.
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
- """List experiments.
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
- """Log a batch of metrics/params/tags for a run.
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
- """Log inputs to a run.
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
- """Log params for a logged model.
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
- """Log a model.
7850
+ """**Note:** the [Create a logged model](/api/workspace/experiments/createloggedmodel) API replaces this
7851
+ endpoint.
7912
7852
 
7913
- **NOTE:** Experimental: This API may change or be removed in a future release without warning.
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
- """Log outputs from a run.
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
- """Log a param for a run.
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
- """Restore a run.
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
- """Restore runs by deletion time.
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
- """Search experiments.
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 logged models.
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
- """Search for runs.
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
- """Set a tag for an experiment.
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 a tag for a logged model.
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
- """Set experiment permissions.
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
- """Set a tag for a run.
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
- """Update an experiment.
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
- """Update experiment permissions.
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
- """Update a run.
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
- """Create a forecasting experiment.
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
- """Get a forecasting experiment.
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
- """Approve transition request.
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
- """Post a comment.
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
- """Create a model.
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
- """Create a model version.
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
- """Make a transition request.
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
- """Create a webhook.
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
- Name of the model whose events would trigger this webhook.
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
- """Delete a comment.
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
- """Delete a model.
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
- """Delete a model tag.
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
- """Delete a model version.
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
- """Delete a model version tag.
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
- """Delete a transition request.
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
- """Delete a webhook.
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
- """Get the latest version.
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
- """Get a model version URI.
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
- """Get registered model permission levels.
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
- """Get registered model permissions.
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
- """List models.
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
- """List transition requests.
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
- """List registry webhooks.
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
- """Reject a transition request.
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
- """Rename a model.
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
- """Set a tag.
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
- """Set a version tag.
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
- """Set registered model permissions.
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
- """Test a webhook.
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
- """Update a comment.
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
- """Update model.
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
- """Update model version.
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
- """Update registered model permissions.
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
- """Update a webhook.
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