databricks-sdk 0.64.0__py3-none-any.whl → 0.66.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.

@@ -263,6 +263,9 @@ class GenieAttachment:
263
263
  query: Optional[GenieQueryAttachment] = None
264
264
  """Query Attachment if Genie responds with a SQL query"""
265
265
 
266
+ suggested_questions: Optional[GenieSuggestedQuestionsAttachment] = None
267
+ """Follow-up questions suggested by Genie"""
268
+
266
269
  text: Optional[TextAttachment] = None
267
270
  """Text Attachment if Genie responds with text"""
268
271
 
@@ -273,6 +276,8 @@ class GenieAttachment:
273
276
  body["attachment_id"] = self.attachment_id
274
277
  if self.query:
275
278
  body["query"] = self.query.as_dict()
279
+ if self.suggested_questions:
280
+ body["suggested_questions"] = self.suggested_questions.as_dict()
276
281
  if self.text:
277
282
  body["text"] = self.text.as_dict()
278
283
  return body
@@ -284,6 +289,8 @@ class GenieAttachment:
284
289
  body["attachment_id"] = self.attachment_id
285
290
  if self.query:
286
291
  body["query"] = self.query
292
+ if self.suggested_questions:
293
+ body["suggested_questions"] = self.suggested_questions
287
294
  if self.text:
288
295
  body["text"] = self.text
289
296
  return body
@@ -294,6 +301,7 @@ class GenieAttachment:
294
301
  return cls(
295
302
  attachment_id=d.get("attachment_id", None),
296
303
  query=_from_dict(d, "query", GenieQueryAttachment),
304
+ suggested_questions=_from_dict(d, "suggested_questions", GenieSuggestedQuestionsAttachment),
297
305
  text=_from_dict(d, "text", TextAttachment),
298
306
  )
299
307
 
@@ -413,6 +421,33 @@ class GenieConversationSummary:
413
421
  )
414
422
 
415
423
 
424
+ @dataclass
425
+ class GenieFeedback:
426
+ """Feedback containing rating and optional comment"""
427
+
428
+ rating: Optional[GenieFeedbackRating] = None
429
+ """The feedback rating"""
430
+
431
+ def as_dict(self) -> dict:
432
+ """Serializes the GenieFeedback into a dictionary suitable for use as a JSON request body."""
433
+ body = {}
434
+ if self.rating is not None:
435
+ body["rating"] = self.rating.value
436
+ return body
437
+
438
+ def as_shallow_dict(self) -> dict:
439
+ """Serializes the GenieFeedback into a shallow dictionary of its immediate attributes."""
440
+ body = {}
441
+ if self.rating is not None:
442
+ body["rating"] = self.rating
443
+ return body
444
+
445
+ @classmethod
446
+ def from_dict(cls, d: Dict[str, Any]) -> GenieFeedback:
447
+ """Deserializes the GenieFeedback from a dictionary."""
448
+ return cls(rating=_enum(d, "rating", GenieFeedbackRating))
449
+
450
+
416
451
  class GenieFeedbackRating(Enum):
417
452
  """Feedback rating for Genie messages"""
418
453
 
@@ -572,6 +607,9 @@ class GenieMessage:
572
607
  error: Optional[MessageError] = None
573
608
  """Error message if Genie failed to respond to the message"""
574
609
 
610
+ feedback: Optional[GenieFeedback] = None
611
+ """User feedback for the message if provided"""
612
+
575
613
  last_updated_timestamp: Optional[int] = None
576
614
  """Timestamp when the message was last updated"""
577
615
 
@@ -597,6 +635,8 @@ class GenieMessage:
597
635
  body["created_timestamp"] = self.created_timestamp
598
636
  if self.error:
599
637
  body["error"] = self.error.as_dict()
638
+ if self.feedback:
639
+ body["feedback"] = self.feedback.as_dict()
600
640
  if self.id is not None:
601
641
  body["id"] = self.id
602
642
  if self.last_updated_timestamp is not None:
@@ -626,6 +666,8 @@ class GenieMessage:
626
666
  body["created_timestamp"] = self.created_timestamp
627
667
  if self.error:
628
668
  body["error"] = self.error
669
+ if self.feedback:
670
+ body["feedback"] = self.feedback
629
671
  if self.id is not None:
630
672
  body["id"] = self.id
631
673
  if self.last_updated_timestamp is not None:
@@ -651,6 +693,7 @@ class GenieMessage:
651
693
  conversation_id=d.get("conversation_id", None),
652
694
  created_timestamp=d.get("created_timestamp", None),
653
695
  error=_from_dict(d, "error", MessageError),
696
+ feedback=_from_dict(d, "feedback", GenieFeedback),
654
697
  id=d.get("id", None),
655
698
  last_updated_timestamp=d.get("last_updated_timestamp", None),
656
699
  message_id=d.get("message_id", None),
@@ -779,6 +822,9 @@ class GenieSpace:
779
822
  description: Optional[str] = None
780
823
  """Description of the Genie Space"""
781
824
 
825
+ warehouse_id: Optional[str] = None
826
+ """Warehouse associated with the Genie Space"""
827
+
782
828
  def as_dict(self) -> dict:
783
829
  """Serializes the GenieSpace into a dictionary suitable for use as a JSON request body."""
784
830
  body = {}
@@ -788,6 +834,8 @@ class GenieSpace:
788
834
  body["space_id"] = self.space_id
789
835
  if self.title is not None:
790
836
  body["title"] = self.title
837
+ if self.warehouse_id is not None:
838
+ body["warehouse_id"] = self.warehouse_id
791
839
  return body
792
840
 
793
841
  def as_shallow_dict(self) -> dict:
@@ -799,12 +847,19 @@ class GenieSpace:
799
847
  body["space_id"] = self.space_id
800
848
  if self.title is not None:
801
849
  body["title"] = self.title
850
+ if self.warehouse_id is not None:
851
+ body["warehouse_id"] = self.warehouse_id
802
852
  return body
803
853
 
804
854
  @classmethod
805
855
  def from_dict(cls, d: Dict[str, Any]) -> GenieSpace:
806
856
  """Deserializes the GenieSpace from a dictionary."""
807
- return cls(description=d.get("description", None), space_id=d.get("space_id", None), title=d.get("title", None))
857
+ return cls(
858
+ description=d.get("description", None),
859
+ space_id=d.get("space_id", None),
860
+ title=d.get("title", None),
861
+ warehouse_id=d.get("warehouse_id", None),
862
+ )
808
863
 
809
864
 
810
865
  @dataclass
@@ -856,6 +911,33 @@ class GenieStartConversationResponse:
856
911
  )
857
912
 
858
913
 
914
+ @dataclass
915
+ class GenieSuggestedQuestionsAttachment:
916
+ """Follow-up questions suggested by Genie"""
917
+
918
+ questions: Optional[List[str]] = None
919
+ """The suggested follow-up questions"""
920
+
921
+ def as_dict(self) -> dict:
922
+ """Serializes the GenieSuggestedQuestionsAttachment into a dictionary suitable for use as a JSON request body."""
923
+ body = {}
924
+ if self.questions:
925
+ body["questions"] = [v for v in self.questions]
926
+ return body
927
+
928
+ def as_shallow_dict(self) -> dict:
929
+ """Serializes the GenieSuggestedQuestionsAttachment into a shallow dictionary of its immediate attributes."""
930
+ body = {}
931
+ if self.questions:
932
+ body["questions"] = self.questions
933
+ return body
934
+
935
+ @classmethod
936
+ def from_dict(cls, d: Dict[str, Any]) -> GenieSuggestedQuestionsAttachment:
937
+ """Deserializes the GenieSuggestedQuestionsAttachment from a dictionary."""
938
+ return cls(questions=d.get("questions", None))
939
+
940
+
859
941
  @dataclass
860
942
  class GetPublishedDashboardTokenInfoResponse:
861
943
  authorization_details: Optional[List[AuthorizationDetails]] = None
@@ -1063,6 +1145,8 @@ class MessageErrorType(Enum):
1063
1145
  GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION = "GENERIC_CHAT_COMPLETION_SERVICE_EXCEPTION"
1064
1146
  GENERIC_SQL_EXEC_API_CALL_EXCEPTION = "GENERIC_SQL_EXEC_API_CALL_EXCEPTION"
1065
1147
  ILLEGAL_PARAMETER_DEFINITION_EXCEPTION = "ILLEGAL_PARAMETER_DEFINITION_EXCEPTION"
1148
+ INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION = "INTERNAL_CATALOG_MISSING_UC_PATH_EXCEPTION"
1149
+ INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION = "INTERNAL_CATALOG_PATH_OVERLAP_EXCEPTION"
1066
1150
  INVALID_CERTIFIED_ANSWER_FUNCTION_EXCEPTION = "INVALID_CERTIFIED_ANSWER_FUNCTION_EXCEPTION"
1067
1151
  INVALID_CERTIFIED_ANSWER_IDENTIFIER_EXCEPTION = "INVALID_CERTIFIED_ANSWER_IDENTIFIER_EXCEPTION"
1068
1152
  INVALID_CHAT_COMPLETION_ARGUMENTS_JSON_EXCEPTION = "INVALID_CHAT_COMPLETION_ARGUMENTS_JSON_EXCEPTION"
@@ -1921,8 +2005,8 @@ class GenieAPI:
1921
2005
  :param space_id: str
1922
2006
  The ID of the Genie space to retrieve conversations from.
1923
2007
  :param include_all: bool (optional)
1924
- Include all conversations in the space across all users. Requires "Can Manage" permission on the
1925
- space.
2008
+ Include all conversations in the space across all users. Requires at least CAN MANAGE permission on
2009
+ the space.
1926
2010
  :param page_size: int (optional)
1927
2011
  Maximum number of conversations to return per page
1928
2012
  :param page_token: str (optional)
@@ -1970,15 +2054,7 @@ class GenieAPI:
1970
2054
  res = self._api.do("GET", "/api/2.0/genie/spaces", query=query, headers=headers)
1971
2055
  return GenieListSpacesResponse.from_dict(res)
1972
2056
 
1973
- def send_message_feedback(
1974
- self,
1975
- space_id: str,
1976
- conversation_id: str,
1977
- message_id: str,
1978
- feedback_rating: GenieFeedbackRating,
1979
- *,
1980
- feedback_text: Optional[str] = None,
1981
- ):
2057
+ def send_message_feedback(self, space_id: str, conversation_id: str, message_id: str, rating: GenieFeedbackRating):
1982
2058
  """Send feedback for a message.
1983
2059
 
1984
2060
  :param space_id: str
@@ -1987,18 +2063,14 @@ class GenieAPI:
1987
2063
  The ID associated with the conversation.
1988
2064
  :param message_id: str
1989
2065
  The ID associated with the message to provide feedback for.
1990
- :param feedback_rating: :class:`GenieFeedbackRating`
2066
+ :param rating: :class:`GenieFeedbackRating`
1991
2067
  The rating (POSITIVE, NEGATIVE, or NONE).
1992
- :param feedback_text: str (optional)
1993
- Optional text feedback that will be stored as a comment.
1994
2068
 
1995
2069
 
1996
2070
  """
1997
2071
  body = {}
1998
- if feedback_rating is not None:
1999
- body["feedback_rating"] = feedback_rating.value
2000
- if feedback_text is not None:
2001
- body["feedback_text"] = feedback_text
2072
+ if rating is not None:
2073
+ body["rating"] = rating.value
2002
2074
  headers = {
2003
2075
  "Accept": "application/json",
2004
2076
  "Content-Type": "application/json",
@@ -125,38 +125,36 @@ class DatabaseInstance:
125
125
  creator: Optional[str] = None
126
126
  """The email of the creator of the instance."""
127
127
 
128
+ effective_capacity: Optional[str] = None
129
+ """Deprecated. The sku of the instance; this field will always match the value of capacity."""
130
+
131
+ effective_enable_pg_native_login: Optional[bool] = None
132
+ """Whether the instance has PG native password login enabled."""
133
+
128
134
  effective_enable_readable_secondaries: Optional[bool] = None
129
- """xref AIP-129. `enable_readable_secondaries` is owned by the client, while
130
- `effective_enable_readable_secondaries` is owned by the server. `enable_readable_secondaries`
131
- will only be set in Create/Update response messages if and only if the user provides the field
132
- via the request. `effective_enable_readable_secondaries` on the other hand will always bet set
133
- in all response messages (Create/Update/Get/List)."""
135
+ """Whether secondaries serving read-only traffic are enabled. Defaults to false."""
134
136
 
135
137
  effective_node_count: Optional[int] = None
136
- """xref AIP-129. `node_count` is owned by the client, while `effective_node_count` is owned by the
137
- server. `node_count` will only be set in Create/Update response messages if and only if the user
138
- provides the field via the request. `effective_node_count` on the other hand will always bet set
139
- in all response messages (Create/Update/Get/List)."""
138
+ """The number of nodes in the instance, composed of 1 primary and 0 or more secondaries. Defaults
139
+ to 1 primary and 0 secondaries."""
140
140
 
141
141
  effective_retention_window_in_days: Optional[int] = None
142
- """xref AIP-129. `retention_window_in_days` is owned by the client, while
143
- `effective_retention_window_in_days` is owned by the server. `retention_window_in_days` will
144
- only be set in Create/Update response messages if and only if the user provides the field via
145
- the request. `effective_retention_window_in_days` on the other hand will always bet set in all
146
- response messages (Create/Update/Get/List)."""
142
+ """The retention window for the instance. This is the time window in days for which the historical
143
+ data is retained."""
147
144
 
148
145
  effective_stopped: Optional[bool] = None
149
- """xref AIP-129. `stopped` is owned by the client, while `effective_stopped` is owned by the
150
- server. `stopped` will only be set in Create/Update response messages if and only if the user
151
- provides the field via the request. `effective_stopped` on the other hand will always bet set in
152
- all response messages (Create/Update/Get/List)."""
146
+ """Whether the instance is stopped."""
147
+
148
+ enable_pg_native_login: Optional[bool] = None
149
+ """Whether to enable PG native password login on the instance. Defaults to false."""
153
150
 
154
151
  enable_readable_secondaries: Optional[bool] = None
155
152
  """Whether to enable secondaries to serve read-only traffic. Defaults to false."""
156
153
 
157
154
  node_count: Optional[int] = None
158
155
  """The number of nodes in the instance, composed of 1 primary and 0 or more secondaries. Defaults
159
- to 1 primary and 0 secondaries."""
156
+ to 1 primary and 0 secondaries. This field is input only, see effective_node_count for the
157
+ output."""
160
158
 
161
159
  parent_instance_ref: Optional[DatabaseInstanceRef] = None
162
160
  """The ref of the parent instance. This is only available if the instance is child instance. Input:
@@ -181,7 +179,7 @@ class DatabaseInstance:
181
179
  """The current state of the instance."""
182
180
 
183
181
  stopped: Optional[bool] = None
184
- """Whether the instance is stopped."""
182
+ """Whether to stop the instance. An input only param, see effective_stopped for the output."""
185
183
 
186
184
  uid: Optional[str] = None
187
185
  """An immutable UUID identifier for the instance."""
@@ -197,6 +195,10 @@ class DatabaseInstance:
197
195
  body["creation_time"] = self.creation_time
198
196
  if self.creator is not None:
199
197
  body["creator"] = self.creator
198
+ if self.effective_capacity is not None:
199
+ body["effective_capacity"] = self.effective_capacity
200
+ if self.effective_enable_pg_native_login is not None:
201
+ body["effective_enable_pg_native_login"] = self.effective_enable_pg_native_login
200
202
  if self.effective_enable_readable_secondaries is not None:
201
203
  body["effective_enable_readable_secondaries"] = self.effective_enable_readable_secondaries
202
204
  if self.effective_node_count is not None:
@@ -205,6 +207,8 @@ class DatabaseInstance:
205
207
  body["effective_retention_window_in_days"] = self.effective_retention_window_in_days
206
208
  if self.effective_stopped is not None:
207
209
  body["effective_stopped"] = self.effective_stopped
210
+ if self.enable_pg_native_login is not None:
211
+ body["enable_pg_native_login"] = self.enable_pg_native_login
208
212
  if self.enable_readable_secondaries is not None:
209
213
  body["enable_readable_secondaries"] = self.enable_readable_secondaries
210
214
  if self.name is not None:
@@ -240,6 +244,10 @@ class DatabaseInstance:
240
244
  body["creation_time"] = self.creation_time
241
245
  if self.creator is not None:
242
246
  body["creator"] = self.creator
247
+ if self.effective_capacity is not None:
248
+ body["effective_capacity"] = self.effective_capacity
249
+ if self.effective_enable_pg_native_login is not None:
250
+ body["effective_enable_pg_native_login"] = self.effective_enable_pg_native_login
243
251
  if self.effective_enable_readable_secondaries is not None:
244
252
  body["effective_enable_readable_secondaries"] = self.effective_enable_readable_secondaries
245
253
  if self.effective_node_count is not None:
@@ -248,6 +256,8 @@ class DatabaseInstance:
248
256
  body["effective_retention_window_in_days"] = self.effective_retention_window_in_days
249
257
  if self.effective_stopped is not None:
250
258
  body["effective_stopped"] = self.effective_stopped
259
+ if self.enable_pg_native_login is not None:
260
+ body["enable_pg_native_login"] = self.enable_pg_native_login
251
261
  if self.enable_readable_secondaries is not None:
252
262
  body["enable_readable_secondaries"] = self.enable_readable_secondaries
253
263
  if self.name is not None:
@@ -280,10 +290,13 @@ class DatabaseInstance:
280
290
  child_instance_refs=_repeated_dict(d, "child_instance_refs", DatabaseInstanceRef),
281
291
  creation_time=d.get("creation_time", None),
282
292
  creator=d.get("creator", None),
293
+ effective_capacity=d.get("effective_capacity", None),
294
+ effective_enable_pg_native_login=d.get("effective_enable_pg_native_login", None),
283
295
  effective_enable_readable_secondaries=d.get("effective_enable_readable_secondaries", None),
284
296
  effective_node_count=d.get("effective_node_count", None),
285
297
  effective_retention_window_in_days=d.get("effective_retention_window_in_days", None),
286
298
  effective_stopped=d.get("effective_stopped", None),
299
+ enable_pg_native_login=d.get("enable_pg_native_login", None),
287
300
  enable_readable_secondaries=d.get("enable_readable_secondaries", None),
288
301
  name=d.get("name", None),
289
302
  node_count=d.get("node_count", None),
@@ -315,12 +328,9 @@ class DatabaseInstanceRef:
315
328
  provided as input to create a child instance."""
316
329
 
317
330
  effective_lsn: Optional[str] = None
318
- """xref AIP-129. `lsn` is owned by the client, while `effective_lsn` is owned by the server. `lsn`
319
- will only be set in Create/Update response messages if and only if the user provides the field
320
- via the request. `effective_lsn` on the other hand will always bet set in all response messages
321
- (Create/Update/Get/List). For a parent ref instance, this is the LSN on the parent instance from
322
- which the instance was created. For a child ref instance, this is the LSN on the instance from
323
- which the child instance was created."""
331
+ """For a parent ref instance, this is the LSN on the parent instance from which the instance was
332
+ created. For a child ref instance, this is the LSN on the instance from which the child instance
333
+ was created."""
324
334
 
325
335
  lsn: Optional[str] = None
326
336
  """User-specified WAL LSN of the ref database instance.
@@ -1591,12 +1601,8 @@ class DatabaseAPI:
1591
1601
  By default, a instance cannot be deleted if it has descendant instances created via PITR. If this
1592
1602
  flag is specified as true, all descendent instances will be deleted as well.
1593
1603
  :param purge: bool (optional)
1594
- Note purge=false is in development. If false, the database instance is soft deleted (implementation
1595
- pending). Soft deleted instances behave as if they are deleted, and cannot be used for CRUD
1596
- operations nor connected to. However they can be undeleted by calling the undelete API for a limited
1597
- time (implementation pending). If true, the database instance is hard deleted and cannot be
1598
- undeleted. For the time being, setting this value to true is required to delete an instance (soft
1599
- delete is not yet supported).
1604
+ Deprecated. Omitting the field or setting it to true will result in the field being hard deleted.
1605
+ Setting a value of false will throw a bad request.
1600
1606
 
1601
1607
 
1602
1608
  """