databricks-sdk 0.61.0__tar.gz → 0.62.0__tar.gz

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 (87) hide show
  1. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/CHANGELOG.md +20 -0
  2. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/PKG-INFO +1 -1
  3. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/config.py +15 -2
  4. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/apps.py +4 -0
  5. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/dashboards.py +8 -0
  6. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/database.py +19 -1
  7. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/jobs.py +77 -1
  8. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/serving.py +80 -14
  9. databricks_sdk-0.62.0/databricks/sdk/version.py +1 -0
  10. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks_sdk.egg-info/PKG-INFO +1 -1
  11. databricks_sdk-0.61.0/databricks/sdk/version.py +0 -1
  12. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/CONTRIBUTING.md +0 -0
  13. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/DCO +0 -0
  14. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/LICENSE +0 -0
  15. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/MANIFEST.in +0 -0
  16. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/Makefile +0 -0
  17. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/NOTICE +0 -0
  18. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/README.md +0 -0
  19. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/SECURITY.md +0 -0
  20. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/__init__.py +0 -0
  21. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/__init__.py +0 -0
  22. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/_base_client.py +0 -0
  23. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/_property.py +0 -0
  24. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/_widgets/__init__.py +0 -0
  25. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/_widgets/default_widgets_utils.py +0 -0
  26. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/_widgets/ipywidgets_utils.py +0 -0
  27. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/azure.py +0 -0
  28. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/casing.py +0 -0
  29. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/clock.py +0 -0
  30. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/core.py +0 -0
  31. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/credentials_provider.py +0 -0
  32. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/data_plane.py +0 -0
  33. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/dbutils.py +0 -0
  34. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/environments.py +0 -0
  35. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/errors/__init__.py +0 -0
  36. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/errors/base.py +0 -0
  37. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/errors/customizer.py +0 -0
  38. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/errors/deserializer.py +0 -0
  39. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/errors/details.py +0 -0
  40. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/errors/mapper.py +0 -0
  41. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/errors/overrides.py +0 -0
  42. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/errors/parser.py +0 -0
  43. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/errors/platform.py +0 -0
  44. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/errors/private_link.py +0 -0
  45. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/errors/sdk.py +0 -0
  46. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/logger/__init__.py +0 -0
  47. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/logger/round_trip_logger.py +0 -0
  48. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/mixins/__init__.py +0 -0
  49. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/mixins/compute.py +0 -0
  50. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/mixins/files.py +0 -0
  51. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/mixins/jobs.py +0 -0
  52. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/mixins/open_ai_client.py +0 -0
  53. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/mixins/workspace.py +0 -0
  54. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/oauth.py +0 -0
  55. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/oidc.py +0 -0
  56. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/oidc_token_supplier.py +0 -0
  57. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/py.typed +0 -0
  58. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/retries.py +0 -0
  59. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/runtime/__init__.py +0 -0
  60. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/runtime/dbutils_stub.py +0 -0
  61. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/__init__.py +0 -0
  62. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/_internal.py +0 -0
  63. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/agentbricks.py +0 -0
  64. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/billing.py +0 -0
  65. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/catalog.py +0 -0
  66. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/cleanrooms.py +0 -0
  67. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/compute.py +0 -0
  68. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/files.py +0 -0
  69. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/iam.py +0 -0
  70. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/marketplace.py +0 -0
  71. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/ml.py +0 -0
  72. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/oauth2.py +0 -0
  73. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/pipelines.py +0 -0
  74. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/provisioning.py +0 -0
  75. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/qualitymonitorv2.py +0 -0
  76. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/settings.py +0 -0
  77. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/sharing.py +0 -0
  78. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/sql.py +0 -0
  79. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/vectorsearch.py +0 -0
  80. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/service/workspace.py +0 -0
  81. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks/sdk/useragent.py +0 -0
  82. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks_sdk.egg-info/SOURCES.txt +0 -0
  83. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks_sdk.egg-info/dependency_links.txt +0 -0
  84. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks_sdk.egg-info/requires.txt +0 -0
  85. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/databricks_sdk.egg-info/top_level.txt +0 -0
  86. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/pyproject.toml +0 -0
  87. {databricks_sdk-0.61.0 → databricks_sdk-0.62.0}/setup.cfg +0 -0
@@ -1,5 +1,25 @@
1
1
  # Version changelog
2
2
 
3
+ ## Release v0.62.0
4
+
5
+ ### Bug Fixes
6
+
7
+ * Fix `Config.oauth_token()` to avoid re-creating a new `CredentialsProvider` at each call. This fix indirectly makes `oauth_token()` benefit from the internal caching mechanism of some providers.
8
+
9
+ ### API Changes
10
+ * Added `statement_id_signature` field for `databricks.sdk.service.dashboards.Result`.
11
+ * Added `effective_database_instance_name` and `effective_logical_database_name` fields for `databricks.sdk.service.database.SyncedDatabaseTable`.
12
+ * Added `table` field for `databricks.sdk.service.jobs.TriggerStateProto`.
13
+ * Added `email_notifications` field for `databricks.sdk.service.serving.CreatePtEndpointRequest`.
14
+ * Added `email_notifications` field for `databricks.sdk.service.serving.CreateServingEndpoint`.
15
+ * Added `email_notifications` field for `databricks.sdk.service.serving.ServingEndpointDetailed`.
16
+ * [Breaking] Changed `list()` method for [w.consumer_providers](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/marketplace/consumer_providers.html) workspace-level service . New request type is `databricks.sdk.service.marketplace.ListConsumerProvidersRequest` dataclass.
17
+ * [Breaking] Changed `create()` method for [a.private_access](https://databricks-sdk-py.readthedocs.io/en/latest/account/provisioning/private_access.html) account-level service with new required argument order.
18
+ * [Breaking] Changed `create()` method for [a.private_access](https://databricks-sdk-py.readthedocs.io/en/latest/account/provisioning/private_access.html) account-level service . New request type is `databricks.sdk.service.provisioning.CreatePrivateAccessSettingsRequest` dataclass.
19
+ * [Breaking] Changed `replace()` method for [a.private_access](https://databricks-sdk-py.readthedocs.io/en/latest/account/provisioning/private_access.html) account-level service . New request type is `databricks.sdk.service.provisioning.ReplacePrivateAccessSettingsRequest` dataclass.
20
+ * [Breaking] Removed `is_featured` field for `databricks.sdk.service.marketplace.ListProvidersRequest`.
21
+
22
+
3
23
  ## Release v0.61.0
4
24
 
5
25
  ### API Changes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: databricks-sdk
3
- Version: 0.61.0
3
+ Version: 0.62.0
4
4
  Summary: Databricks SDK for Python (Beta)
5
5
  Project-URL: Documentation, https://databricks-sdk-py.readthedocs.io
6
6
  Keywords: databricks,sdk
@@ -13,7 +13,8 @@ import requests
13
13
  from . import useragent
14
14
  from ._base_client import _fix_host_if_needed
15
15
  from .clock import Clock, RealClock
16
- from .credentials_provider import CredentialsStrategy, DefaultCredentials
16
+ from .credentials_provider import (CredentialsStrategy, DefaultCredentials,
17
+ OAuthCredentialsProvider)
17
18
  from .environments import (ALL_ENVS, AzureEnvironment, Cloud,
18
19
  DatabricksEnvironment, get_environment_for_hostname)
19
20
  from .oauth import (OidcEndpoints, Token, get_account_endpoints,
@@ -200,7 +201,19 @@ class Config:
200
201
  raise ValueError(message) from e
201
202
 
202
203
  def oauth_token(self) -> Token:
203
- return self._credentials_strategy.oauth_token(self)
204
+ """Returns the OAuth token from the current credential provider.
205
+
206
+ This method only works when using OAuth-based authentication methods.
207
+ If the current credential provider is an OAuthCredentialsProvider, it reuses
208
+ the existing provider. Otherwise, it raises a ValueError indicating that
209
+ OAuth tokens are not available for the current authentication method.
210
+ """
211
+ if isinstance(self._header_factory, OAuthCredentialsProvider):
212
+ return self._header_factory.oauth_token()
213
+ raise ValueError(
214
+ f"OAuth tokens are not available for {self.auth_type} authentication. "
215
+ f"Use an OAuth-based authentication method to access OAuth tokens."
216
+ )
204
217
 
205
218
  def wrap_debug_info(self, message: str) -> str:
206
219
  debug_string = self.debug_string()
@@ -32,6 +32,8 @@ class App:
32
32
  app_status: Optional[ApplicationStatus] = None
33
33
 
34
34
  budget_policy_id: Optional[str] = None
35
+ """TODO: Deprecate this field after serverless entitlements are released to all prod stages and the
36
+ new usage_policy_id is properly populated and used."""
35
37
 
36
38
  compute_status: Optional[ComputeStatus] = None
37
39
 
@@ -49,6 +51,8 @@ class App:
49
51
  """The description of the app."""
50
52
 
51
53
  effective_budget_policy_id: Optional[str] = None
54
+ """TODO: Deprecate this field after serverless entitlements are released to all prod stages and the
55
+ new usage_policy_id is properly populated and used."""
52
56
 
53
57
  effective_user_api_scopes: Optional[List[str]] = None
54
58
  """The effective api scopes granted to the user access token."""
@@ -1148,6 +1148,9 @@ class Result:
1148
1148
  """Statement Execution API statement id. Use [Get status, manifest, and result first
1149
1149
  chunk](:method:statementexecution/getstatement) to get the full result data."""
1150
1150
 
1151
+ statement_id_signature: Optional[str] = None
1152
+ """JWT corresponding to the statement contained in this result"""
1153
+
1151
1154
  def as_dict(self) -> dict:
1152
1155
  """Serializes the Result into a dictionary suitable for use as a JSON request body."""
1153
1156
  body = {}
@@ -1157,6 +1160,8 @@ class Result:
1157
1160
  body["row_count"] = self.row_count
1158
1161
  if self.statement_id is not None:
1159
1162
  body["statement_id"] = self.statement_id
1163
+ if self.statement_id_signature is not None:
1164
+ body["statement_id_signature"] = self.statement_id_signature
1160
1165
  return body
1161
1166
 
1162
1167
  def as_shallow_dict(self) -> dict:
@@ -1168,6 +1173,8 @@ class Result:
1168
1173
  body["row_count"] = self.row_count
1169
1174
  if self.statement_id is not None:
1170
1175
  body["statement_id"] = self.statement_id
1176
+ if self.statement_id_signature is not None:
1177
+ body["statement_id_signature"] = self.statement_id_signature
1171
1178
  return body
1172
1179
 
1173
1180
  @classmethod
@@ -1177,6 +1184,7 @@ class Result:
1177
1184
  is_truncated=d.get("is_truncated", None),
1178
1185
  row_count=d.get("row_count", None),
1179
1186
  statement_id=d.get("statement_id", None),
1187
+ statement_id_signature=d.get("statement_id_signature", None),
1180
1188
  )
1181
1189
 
1182
1190
 
@@ -790,7 +790,7 @@ class RequestedResource:
790
790
 
791
791
  @dataclass
792
792
  class SyncedDatabaseTable:
793
- """Next field marker: 12"""
793
+ """Next field marker: 14"""
794
794
 
795
795
  name: str
796
796
  """Full three-part (catalog, schema, table) name of the table."""
@@ -805,6 +805,14 @@ class SyncedDatabaseTable:
805
805
  database instance name MUST match that of the registered catalog (or the request will be
806
806
  rejected)."""
807
807
 
808
+ effective_database_instance_name: Optional[str] = None
809
+ """The name of the database instance that this table is registered to. This field is always
810
+ returned, and for tables inside database catalogs is inferred database instance associated with
811
+ the catalog."""
812
+
813
+ effective_logical_database_name: Optional[str] = None
814
+ """The name of the logical database that this table is registered to."""
815
+
808
816
  logical_database_name: Optional[str] = None
809
817
  """Target Postgres database object (logical database) name for this table.
810
818
 
@@ -831,6 +839,10 @@ class SyncedDatabaseTable:
831
839
  body["data_synchronization_status"] = self.data_synchronization_status.as_dict()
832
840
  if self.database_instance_name is not None:
833
841
  body["database_instance_name"] = self.database_instance_name
842
+ if self.effective_database_instance_name is not None:
843
+ body["effective_database_instance_name"] = self.effective_database_instance_name
844
+ if self.effective_logical_database_name is not None:
845
+ body["effective_logical_database_name"] = self.effective_logical_database_name
834
846
  if self.logical_database_name is not None:
835
847
  body["logical_database_name"] = self.logical_database_name
836
848
  if self.name is not None:
@@ -848,6 +860,10 @@ class SyncedDatabaseTable:
848
860
  body["data_synchronization_status"] = self.data_synchronization_status
849
861
  if self.database_instance_name is not None:
850
862
  body["database_instance_name"] = self.database_instance_name
863
+ if self.effective_database_instance_name is not None:
864
+ body["effective_database_instance_name"] = self.effective_database_instance_name
865
+ if self.effective_logical_database_name is not None:
866
+ body["effective_logical_database_name"] = self.effective_logical_database_name
851
867
  if self.logical_database_name is not None:
852
868
  body["logical_database_name"] = self.logical_database_name
853
869
  if self.name is not None:
@@ -864,6 +880,8 @@ class SyncedDatabaseTable:
864
880
  return cls(
865
881
  data_synchronization_status=_from_dict(d, "data_synchronization_status", SyncedTableStatus),
866
882
  database_instance_name=d.get("database_instance_name", None),
883
+ effective_database_instance_name=d.get("effective_database_instance_name", None),
884
+ effective_logical_database_name=d.get("effective_logical_database_name", None),
867
885
  logical_database_name=d.get("logical_database_name", None),
868
886
  name=d.get("name", None),
869
887
  spec=_from_dict(d, "spec", SyncedTableSpec),
@@ -7223,6 +7223,73 @@ class SubscriptionSubscriber:
7223
7223
  return cls(destination_id=d.get("destination_id", None), user_name=d.get("user_name", None))
7224
7224
 
7225
7225
 
7226
+ @dataclass
7227
+ class TableState:
7228
+ has_seen_updates: Optional[bool] = None
7229
+ """Whether or not the table has seen updates since either the creation of the trigger or the last
7230
+ successful evaluation of the trigger"""
7231
+
7232
+ table_name: Optional[str] = None
7233
+ """Full table name of the table to monitor, e.g. `mycatalog.myschema.mytable`"""
7234
+
7235
+ def as_dict(self) -> dict:
7236
+ """Serializes the TableState into a dictionary suitable for use as a JSON request body."""
7237
+ body = {}
7238
+ if self.has_seen_updates is not None:
7239
+ body["has_seen_updates"] = self.has_seen_updates
7240
+ if self.table_name is not None:
7241
+ body["table_name"] = self.table_name
7242
+ return body
7243
+
7244
+ def as_shallow_dict(self) -> dict:
7245
+ """Serializes the TableState into a shallow dictionary of its immediate attributes."""
7246
+ body = {}
7247
+ if self.has_seen_updates is not None:
7248
+ body["has_seen_updates"] = self.has_seen_updates
7249
+ if self.table_name is not None:
7250
+ body["table_name"] = self.table_name
7251
+ return body
7252
+
7253
+ @classmethod
7254
+ def from_dict(cls, d: Dict[str, Any]) -> TableState:
7255
+ """Deserializes the TableState from a dictionary."""
7256
+ return cls(has_seen_updates=d.get("has_seen_updates", None), table_name=d.get("table_name", None))
7257
+
7258
+
7259
+ @dataclass
7260
+ class TableTriggerState:
7261
+ last_seen_table_states: Optional[List[TableState]] = None
7262
+
7263
+ using_scalable_monitoring: Optional[bool] = None
7264
+ """Indicates whether the trigger is using scalable monitoring."""
7265
+
7266
+ def as_dict(self) -> dict:
7267
+ """Serializes the TableTriggerState into a dictionary suitable for use as a JSON request body."""
7268
+ body = {}
7269
+ if self.last_seen_table_states:
7270
+ body["last_seen_table_states"] = [v.as_dict() for v in self.last_seen_table_states]
7271
+ if self.using_scalable_monitoring is not None:
7272
+ body["using_scalable_monitoring"] = self.using_scalable_monitoring
7273
+ return body
7274
+
7275
+ def as_shallow_dict(self) -> dict:
7276
+ """Serializes the TableTriggerState into a shallow dictionary of its immediate attributes."""
7277
+ body = {}
7278
+ if self.last_seen_table_states:
7279
+ body["last_seen_table_states"] = self.last_seen_table_states
7280
+ if self.using_scalable_monitoring is not None:
7281
+ body["using_scalable_monitoring"] = self.using_scalable_monitoring
7282
+ return body
7283
+
7284
+ @classmethod
7285
+ def from_dict(cls, d: Dict[str, Any]) -> TableTriggerState:
7286
+ """Deserializes the TableTriggerState from a dictionary."""
7287
+ return cls(
7288
+ last_seen_table_states=_repeated_dict(d, "last_seen_table_states", TableState),
7289
+ using_scalable_monitoring=d.get("using_scalable_monitoring", None),
7290
+ )
7291
+
7292
+
7226
7293
  @dataclass
7227
7294
  class TableUpdateTriggerConfiguration:
7228
7295
  condition: Optional[Condition] = None
@@ -7993,11 +8060,15 @@ class TriggerSettings:
7993
8060
  class TriggerStateProto:
7994
8061
  file_arrival: Optional[FileArrivalTriggerState] = None
7995
8062
 
8063
+ table: Optional[TableTriggerState] = None
8064
+
7996
8065
  def as_dict(self) -> dict:
7997
8066
  """Serializes the TriggerStateProto into a dictionary suitable for use as a JSON request body."""
7998
8067
  body = {}
7999
8068
  if self.file_arrival:
8000
8069
  body["file_arrival"] = self.file_arrival.as_dict()
8070
+ if self.table:
8071
+ body["table"] = self.table.as_dict()
8001
8072
  return body
8002
8073
 
8003
8074
  def as_shallow_dict(self) -> dict:
@@ -8005,12 +8076,17 @@ class TriggerStateProto:
8005
8076
  body = {}
8006
8077
  if self.file_arrival:
8007
8078
  body["file_arrival"] = self.file_arrival
8079
+ if self.table:
8080
+ body["table"] = self.table
8008
8081
  return body
8009
8082
 
8010
8083
  @classmethod
8011
8084
  def from_dict(cls, d: Dict[str, Any]) -> TriggerStateProto:
8012
8085
  """Deserializes the TriggerStateProto from a dictionary."""
8013
- return cls(file_arrival=_from_dict(d, "file_arrival", FileArrivalTriggerState))
8086
+ return cls(
8087
+ file_arrival=_from_dict(d, "file_arrival", FileArrivalTriggerState),
8088
+ table=_from_dict(d, "table", TableTriggerState),
8089
+ )
8014
8090
 
8015
8091
 
8016
8092
  class TriggerType(Enum):
@@ -990,10 +990,13 @@ class DatabricksModelServingConfig:
990
990
  @dataclass
991
991
  class DataframeSplitInput:
992
992
  columns: Optional[List[Any]] = None
993
+ """Columns array for the dataframe"""
993
994
 
994
995
  data: Optional[List[Any]] = None
996
+ """Data array for the dataframe"""
995
997
 
996
998
  index: Optional[List[int]] = None
999
+ """Index array for the dataframe"""
997
1000
 
998
1001
  def as_dict(self) -> dict:
999
1002
  """Serializes the DataframeSplitInput into a dictionary suitable for use as a JSON request body."""
@@ -1041,9 +1044,46 @@ class DeleteResponse:
1041
1044
  return cls()
1042
1045
 
1043
1046
 
1047
+ @dataclass
1048
+ class EmailNotifications:
1049
+ on_update_failure: Optional[List[str]] = None
1050
+ """A list of email addresses to be notified when an endpoint fails to update its configuration or
1051
+ state."""
1052
+
1053
+ on_update_success: Optional[List[str]] = None
1054
+ """A list of email addresses to be notified when an endpoint successfully updates its configuration
1055
+ or state."""
1056
+
1057
+ def as_dict(self) -> dict:
1058
+ """Serializes the EmailNotifications into a dictionary suitable for use as a JSON request body."""
1059
+ body = {}
1060
+ if self.on_update_failure:
1061
+ body["on_update_failure"] = [v for v in self.on_update_failure]
1062
+ if self.on_update_success:
1063
+ body["on_update_success"] = [v for v in self.on_update_success]
1064
+ return body
1065
+
1066
+ def as_shallow_dict(self) -> dict:
1067
+ """Serializes the EmailNotifications into a shallow dictionary of its immediate attributes."""
1068
+ body = {}
1069
+ if self.on_update_failure:
1070
+ body["on_update_failure"] = self.on_update_failure
1071
+ if self.on_update_success:
1072
+ body["on_update_success"] = self.on_update_success
1073
+ return body
1074
+
1075
+ @classmethod
1076
+ def from_dict(cls, d: Dict[str, Any]) -> EmailNotifications:
1077
+ """Deserializes the EmailNotifications from a dictionary."""
1078
+ return cls(
1079
+ on_update_failure=d.get("on_update_failure", None), on_update_success=d.get("on_update_success", None)
1080
+ )
1081
+
1082
+
1044
1083
  @dataclass
1045
1084
  class EmbeddingsV1ResponseEmbeddingElement:
1046
1085
  embedding: Optional[List[float]] = None
1086
+ """The embedding vector"""
1047
1087
 
1048
1088
  index: Optional[int] = None
1049
1089
  """The index of the embedding in the response."""
@@ -3262,11 +3302,11 @@ class ServedModelState:
3262
3302
 
3263
3303
  class ServedModelStateDeployment(Enum):
3264
3304
 
3265
- ABORTED = "DEPLOYMENT_ABORTED"
3266
- CREATING = "DEPLOYMENT_CREATING"
3267
- FAILED = "DEPLOYMENT_FAILED"
3268
- READY = "DEPLOYMENT_READY"
3269
- RECOVERING = "DEPLOYMENT_RECOVERING"
3305
+ DEPLOYMENT_ABORTED = "DEPLOYMENT_ABORTED"
3306
+ DEPLOYMENT_CREATING = "DEPLOYMENT_CREATING"
3307
+ DEPLOYMENT_FAILED = "DEPLOYMENT_FAILED"
3308
+ DEPLOYMENT_READY = "DEPLOYMENT_READY"
3309
+ DEPLOYMENT_RECOVERING = "DEPLOYMENT_RECOVERING"
3270
3310
 
3271
3311
 
3272
3312
  @dataclass
@@ -3545,6 +3585,9 @@ class ServingEndpointDetailed:
3545
3585
  description: Optional[str] = None
3546
3586
  """Description of the serving model"""
3547
3587
 
3588
+ email_notifications: Optional[EmailNotifications] = None
3589
+ """Email notification settings."""
3590
+
3548
3591
  endpoint_url: Optional[str] = None
3549
3592
  """Endpoint invocation url if route optimization is enabled for endpoint"""
3550
3593
 
@@ -3593,6 +3636,8 @@ class ServingEndpointDetailed:
3593
3636
  body["data_plane_info"] = self.data_plane_info.as_dict()
3594
3637
  if self.description is not None:
3595
3638
  body["description"] = self.description
3639
+ if self.email_notifications:
3640
+ body["email_notifications"] = self.email_notifications.as_dict()
3596
3641
  if self.endpoint_url is not None:
3597
3642
  body["endpoint_url"] = self.endpoint_url
3598
3643
  if self.id is not None:
@@ -3632,6 +3677,8 @@ class ServingEndpointDetailed:
3632
3677
  body["data_plane_info"] = self.data_plane_info
3633
3678
  if self.description is not None:
3634
3679
  body["description"] = self.description
3680
+ if self.email_notifications:
3681
+ body["email_notifications"] = self.email_notifications
3635
3682
  if self.endpoint_url is not None:
3636
3683
  body["endpoint_url"] = self.endpoint_url
3637
3684
  if self.id is not None:
@@ -3665,6 +3712,7 @@ class ServingEndpointDetailed:
3665
3712
  creator=d.get("creator", None),
3666
3713
  data_plane_info=_from_dict(d, "data_plane_info", ModelDataPlaneInfo),
3667
3714
  description=d.get("description", None),
3715
+ email_notifications=_from_dict(d, "email_notifications", EmailNotifications),
3668
3716
  endpoint_url=d.get("endpoint_url", None),
3669
3717
  id=d.get("id", None),
3670
3718
  last_updated_timestamp=d.get("last_updated_timestamp", None),
@@ -3978,6 +4026,7 @@ class ServingEndpointsAPI:
3978
4026
  budget_policy_id: Optional[str] = None,
3979
4027
  config: Optional[EndpointCoreConfigInput] = None,
3980
4028
  description: Optional[str] = None,
4029
+ email_notifications: Optional[EmailNotifications] = None,
3981
4030
  rate_limits: Optional[List[RateLimit]] = None,
3982
4031
  route_optimized: Optional[bool] = None,
3983
4032
  tags: Optional[List[EndpointTag]] = None,
@@ -3996,6 +4045,8 @@ class ServingEndpointsAPI:
3996
4045
  :param config: :class:`EndpointCoreConfigInput` (optional)
3997
4046
  The core config of the serving endpoint.
3998
4047
  :param description: str (optional)
4048
+ :param email_notifications: :class:`EmailNotifications` (optional)
4049
+ Email notification settings.
3999
4050
  :param rate_limits: List[:class:`RateLimit`] (optional)
4000
4051
  Rate limits to be applied to the serving endpoint. NOTE: this field is deprecated, please use AI
4001
4052
  Gateway to manage rate limits.
@@ -4017,6 +4068,8 @@ class ServingEndpointsAPI:
4017
4068
  body["config"] = config.as_dict()
4018
4069
  if description is not None:
4019
4070
  body["description"] = description
4071
+ if email_notifications is not None:
4072
+ body["email_notifications"] = email_notifications.as_dict()
4020
4073
  if name is not None:
4021
4074
  body["name"] = name
4022
4075
  if rate_limits is not None:
@@ -4045,6 +4098,7 @@ class ServingEndpointsAPI:
4045
4098
  budget_policy_id: Optional[str] = None,
4046
4099
  config: Optional[EndpointCoreConfigInput] = None,
4047
4100
  description: Optional[str] = None,
4101
+ email_notifications: Optional[EmailNotifications] = None,
4048
4102
  rate_limits: Optional[List[RateLimit]] = None,
4049
4103
  route_optimized: Optional[bool] = None,
4050
4104
  tags: Optional[List[EndpointTag]] = None,
@@ -4055,6 +4109,7 @@ class ServingEndpointsAPI:
4055
4109
  budget_policy_id=budget_policy_id,
4056
4110
  config=config,
4057
4111
  description=description,
4112
+ email_notifications=email_notifications,
4058
4113
  name=name,
4059
4114
  rate_limits=rate_limits,
4060
4115
  route_optimized=route_optimized,
@@ -4068,6 +4123,7 @@ class ServingEndpointsAPI:
4068
4123
  *,
4069
4124
  ai_gateway: Optional[AiGatewayConfig] = None,
4070
4125
  budget_policy_id: Optional[str] = None,
4126
+ email_notifications: Optional[EmailNotifications] = None,
4071
4127
  tags: Optional[List[EndpointTag]] = None,
4072
4128
  ) -> Wait[ServingEndpointDetailed]:
4073
4129
  """Create a new PT serving endpoint.
@@ -4081,6 +4137,8 @@ class ServingEndpointsAPI:
4081
4137
  The AI Gateway configuration for the serving endpoint.
4082
4138
  :param budget_policy_id: str (optional)
4083
4139
  The budget policy associated with the endpoint.
4140
+ :param email_notifications: :class:`EmailNotifications` (optional)
4141
+ Email notification settings.
4084
4142
  :param tags: List[:class:`EndpointTag`] (optional)
4085
4143
  Tags to be attached to the serving endpoint and automatically propagated to billing logs.
4086
4144
 
@@ -4095,6 +4153,8 @@ class ServingEndpointsAPI:
4095
4153
  body["budget_policy_id"] = budget_policy_id
4096
4154
  if config is not None:
4097
4155
  body["config"] = config.as_dict()
4156
+ if email_notifications is not None:
4157
+ body["email_notifications"] = email_notifications.as_dict()
4098
4158
  if name is not None:
4099
4159
  body["name"] = name
4100
4160
  if tags is not None:
@@ -4118,11 +4178,17 @@ class ServingEndpointsAPI:
4118
4178
  *,
4119
4179
  ai_gateway: Optional[AiGatewayConfig] = None,
4120
4180
  budget_policy_id: Optional[str] = None,
4181
+ email_notifications: Optional[EmailNotifications] = None,
4121
4182
  tags: Optional[List[EndpointTag]] = None,
4122
4183
  timeout=timedelta(minutes=20),
4123
4184
  ) -> ServingEndpointDetailed:
4124
4185
  return self.create_provisioned_throughput_endpoint(
4125
- ai_gateway=ai_gateway, budget_policy_id=budget_policy_id, config=config, name=name, tags=tags
4186
+ ai_gateway=ai_gateway,
4187
+ budget_policy_id=budget_policy_id,
4188
+ config=config,
4189
+ email_notifications=email_notifications,
4190
+ name=name,
4191
+ tags=tags,
4126
4192
  ).result(timeout=timeout)
4127
4193
 
4128
4194
  def delete(self, name: str):
@@ -4422,10 +4488,10 @@ class ServingEndpointsAPI:
4422
4488
  stream: Optional[bool] = None,
4423
4489
  temperature: Optional[float] = None,
4424
4490
  ) -> QueryEndpointResponse:
4425
- """Query a serving endpoint.
4491
+ """Query a serving endpoint
4426
4492
 
4427
4493
  :param name: str
4428
- The name of the serving endpoint. This field is required.
4494
+ The name of the serving endpoint. This field is required and is provided via the path parameter.
4429
4495
  :param dataframe_records: List[Any] (optional)
4430
4496
  Pandas Dataframe input in the records orientation.
4431
4497
  :param dataframe_split: :class:`DataframeSplitInput` (optional)
@@ -4446,8 +4512,8 @@ class ServingEndpointsAPI:
4446
4512
  The max tokens field used ONLY for __completions__ and __chat external & foundation model__ serving
4447
4513
  endpoints. This is an integer and should only be used with other chat/completions query fields.
4448
4514
  :param messages: List[:class:`ChatMessage`] (optional)
4449
- The messages field used ONLY for __chat external & foundation model__ serving endpoints. This is a
4450
- map of strings and should only be used with other chat query fields.
4515
+ The messages field used ONLY for __chat external & foundation model__ serving endpoints. This is an
4516
+ array of ChatMessage objects and should only be used with other chat query fields.
4451
4517
  :param n: int (optional)
4452
4518
  The n (number of candidates) field used ONLY for __completions__ and __chat external & foundation
4453
4519
  model__ serving endpoints. This is an integer between 1 and 5 with a default of 1 and should only be
@@ -4725,10 +4791,10 @@ class ServingEndpointsDataPlaneAPI:
4725
4791
  stream: Optional[bool] = None,
4726
4792
  temperature: Optional[float] = None,
4727
4793
  ) -> QueryEndpointResponse:
4728
- """Query a serving endpoint.
4794
+ """Query a serving endpoint
4729
4795
 
4730
4796
  :param name: str
4731
- The name of the serving endpoint. This field is required.
4797
+ The name of the serving endpoint. This field is required and is provided via the path parameter.
4732
4798
  :param dataframe_records: List[Any] (optional)
4733
4799
  Pandas Dataframe input in the records orientation.
4734
4800
  :param dataframe_split: :class:`DataframeSplitInput` (optional)
@@ -4749,8 +4815,8 @@ class ServingEndpointsDataPlaneAPI:
4749
4815
  The max tokens field used ONLY for __completions__ and __chat external & foundation model__ serving
4750
4816
  endpoints. This is an integer and should only be used with other chat/completions query fields.
4751
4817
  :param messages: List[:class:`ChatMessage`] (optional)
4752
- The messages field used ONLY for __chat external & foundation model__ serving endpoints. This is a
4753
- map of strings and should only be used with other chat query fields.
4818
+ The messages field used ONLY for __chat external & foundation model__ serving endpoints. This is an
4819
+ array of ChatMessage objects and should only be used with other chat query fields.
4754
4820
  :param n: int (optional)
4755
4821
  The n (number of candidates) field used ONLY for __completions__ and __chat external & foundation
4756
4822
  model__ serving endpoints. This is an integer between 1 and 5 with a default of 1 and should only be
@@ -0,0 +1 @@
1
+ __version__ = "0.62.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: databricks-sdk
3
- Version: 0.61.0
3
+ Version: 0.62.0
4
4
  Summary: Databricks SDK for Python (Beta)
5
5
  Project-URL: Documentation, https://databricks-sdk-py.readthedocs.io
6
6
  Keywords: databricks,sdk
@@ -1 +0,0 @@
1
- __version__ = "0.61.0"
File without changes
File without changes
File without changes