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

@@ -20,6 +20,66 @@ from databricks.sdk.service import sql
20
20
  # all definitions in this file are in alphabetical order
21
21
 
22
22
 
23
+ @dataclass
24
+ class CancelQueryExecutionResponse:
25
+ status: Optional[List[CancelQueryExecutionResponseStatus]] = None
26
+
27
+ def as_dict(self) -> dict:
28
+ """Serializes the CancelQueryExecutionResponse into a dictionary suitable for use as a JSON request body."""
29
+ body = {}
30
+ if self.status: body['status'] = [v.as_dict() for v in self.status]
31
+ return body
32
+
33
+ def as_shallow_dict(self) -> dict:
34
+ """Serializes the CancelQueryExecutionResponse into a shallow dictionary of its immediate attributes."""
35
+ body = {}
36
+ if self.status: body['status'] = self.status
37
+ return body
38
+
39
+ @classmethod
40
+ def from_dict(cls, d: Dict[str, any]) -> CancelQueryExecutionResponse:
41
+ """Deserializes the CancelQueryExecutionResponse from a dictionary."""
42
+ return cls(status=_repeated_dict(d, 'status', CancelQueryExecutionResponseStatus))
43
+
44
+
45
+ @dataclass
46
+ class CancelQueryExecutionResponseStatus:
47
+ data_token: str
48
+ """The token to poll for result asynchronously Example:
49
+ EC0A..ChAB7WCEn_4Qo4vkLqEbXsxxEgh3Y2pbWw45WhoQXgZSQo9aS5q2ZvFcbvbx9CgA-PAEAQ"""
50
+
51
+ pending: Optional[Empty] = None
52
+ """Represents an empty message, similar to google.protobuf.Empty, which is not available in the
53
+ firm right now."""
54
+
55
+ success: Optional[Empty] = None
56
+ """Represents an empty message, similar to google.protobuf.Empty, which is not available in the
57
+ firm right now."""
58
+
59
+ def as_dict(self) -> dict:
60
+ """Serializes the CancelQueryExecutionResponseStatus into a dictionary suitable for use as a JSON request body."""
61
+ body = {}
62
+ if self.data_token is not None: body['data_token'] = self.data_token
63
+ if self.pending: body['pending'] = self.pending.as_dict()
64
+ if self.success: body['success'] = self.success.as_dict()
65
+ return body
66
+
67
+ def as_shallow_dict(self) -> dict:
68
+ """Serializes the CancelQueryExecutionResponseStatus into a shallow dictionary of its immediate attributes."""
69
+ body = {}
70
+ if self.data_token is not None: body['data_token'] = self.data_token
71
+ if self.pending: body['pending'] = self.pending
72
+ if self.success: body['success'] = self.success
73
+ return body
74
+
75
+ @classmethod
76
+ def from_dict(cls, d: Dict[str, any]) -> CancelQueryExecutionResponseStatus:
77
+ """Deserializes the CancelQueryExecutionResponseStatus from a dictionary."""
78
+ return cls(data_token=d.get('data_token', None),
79
+ pending=_from_dict(d, 'pending', Empty),
80
+ success=_from_dict(d, 'success', Empty))
81
+
82
+
23
83
  @dataclass
24
84
  class CronSchedule:
25
85
  quartz_cron_expression: str
@@ -207,6 +267,87 @@ class DeleteSubscriptionResponse:
207
267
  return cls()
208
268
 
209
269
 
270
+ @dataclass
271
+ class Empty:
272
+ """Represents an empty message, similar to google.protobuf.Empty, which is not available in the
273
+ firm right now."""
274
+
275
+ def as_dict(self) -> dict:
276
+ """Serializes the Empty into a dictionary suitable for use as a JSON request body."""
277
+ body = {}
278
+ return body
279
+
280
+ def as_shallow_dict(self) -> dict:
281
+ """Serializes the Empty into a shallow dictionary of its immediate attributes."""
282
+ body = {}
283
+ return body
284
+
285
+ @classmethod
286
+ def from_dict(cls, d: Dict[str, any]) -> Empty:
287
+ """Deserializes the Empty from a dictionary."""
288
+ return cls()
289
+
290
+
291
+ @dataclass
292
+ class ExecutePublishedDashboardQueryRequest:
293
+ """Execute query request for published Dashboards. Since published dashboards have the option of
294
+ running as the publisher, the datasets, warehouse_id are excluded from the request and instead
295
+ read from the source (lakeview-config) via the additional parameters (dashboardName and
296
+ dashboardRevisionId)"""
297
+
298
+ dashboard_name: str
299
+ """Dashboard name and revision_id is required to retrieve PublishedDatasetDataModel which contains
300
+ the list of datasets, warehouse_id, and embedded_credentials"""
301
+
302
+ dashboard_revision_id: str
303
+
304
+ override_warehouse_id: Optional[str] = None
305
+ """A dashboard schedule can override the warehouse used as compute for processing the published
306
+ dashboard queries"""
307
+
308
+ def as_dict(self) -> dict:
309
+ """Serializes the ExecutePublishedDashboardQueryRequest into a dictionary suitable for use as a JSON request body."""
310
+ body = {}
311
+ if self.dashboard_name is not None: body['dashboard_name'] = self.dashboard_name
312
+ if self.dashboard_revision_id is not None: body['dashboard_revision_id'] = self.dashboard_revision_id
313
+ if self.override_warehouse_id is not None: body['override_warehouse_id'] = self.override_warehouse_id
314
+ return body
315
+
316
+ def as_shallow_dict(self) -> dict:
317
+ """Serializes the ExecutePublishedDashboardQueryRequest into a shallow dictionary of its immediate attributes."""
318
+ body = {}
319
+ if self.dashboard_name is not None: body['dashboard_name'] = self.dashboard_name
320
+ if self.dashboard_revision_id is not None: body['dashboard_revision_id'] = self.dashboard_revision_id
321
+ if self.override_warehouse_id is not None: body['override_warehouse_id'] = self.override_warehouse_id
322
+ return body
323
+
324
+ @classmethod
325
+ def from_dict(cls, d: Dict[str, any]) -> ExecutePublishedDashboardQueryRequest:
326
+ """Deserializes the ExecutePublishedDashboardQueryRequest from a dictionary."""
327
+ return cls(dashboard_name=d.get('dashboard_name', None),
328
+ dashboard_revision_id=d.get('dashboard_revision_id', None),
329
+ override_warehouse_id=d.get('override_warehouse_id', None))
330
+
331
+
332
+ @dataclass
333
+ class ExecuteQueryResponse:
334
+
335
+ def as_dict(self) -> dict:
336
+ """Serializes the ExecuteQueryResponse into a dictionary suitable for use as a JSON request body."""
337
+ body = {}
338
+ return body
339
+
340
+ def as_shallow_dict(self) -> dict:
341
+ """Serializes the ExecuteQueryResponse into a shallow dictionary of its immediate attributes."""
342
+ body = {}
343
+ return body
344
+
345
+ @classmethod
346
+ def from_dict(cls, d: Dict[str, any]) -> ExecuteQueryResponse:
347
+ """Deserializes the ExecuteQueryResponse from a dictionary."""
348
+ return cls()
349
+
350
+
210
351
  @dataclass
211
352
  class GenieAttachment:
212
353
  """Genie AI Response"""
@@ -513,6 +654,25 @@ class GenieStartConversationResponse:
513
654
  message_id=d.get('message_id', None))
514
655
 
515
656
 
657
+ @dataclass
658
+ class GetPublishedDashboardEmbeddedResponse:
659
+
660
+ def as_dict(self) -> dict:
661
+ """Serializes the GetPublishedDashboardEmbeddedResponse into a dictionary suitable for use as a JSON request body."""
662
+ body = {}
663
+ return body
664
+
665
+ def as_shallow_dict(self) -> dict:
666
+ """Serializes the GetPublishedDashboardEmbeddedResponse into a shallow dictionary of its immediate attributes."""
667
+ body = {}
668
+ return body
669
+
670
+ @classmethod
671
+ def from_dict(cls, d: Dict[str, any]) -> GetPublishedDashboardEmbeddedResponse:
672
+ """Deserializes the GetPublishedDashboardEmbeddedResponse from a dictionary."""
673
+ return cls()
674
+
675
+
516
676
  class LifecycleState(Enum):
517
677
 
518
678
  ACTIVE = 'ACTIVE'
@@ -667,6 +827,7 @@ class MessageErrorType(Enum):
667
827
  REPLY_PROCESS_TIMEOUT_EXCEPTION = 'REPLY_PROCESS_TIMEOUT_EXCEPTION'
668
828
  RETRYABLE_PROCESSING_EXCEPTION = 'RETRYABLE_PROCESSING_EXCEPTION'
669
829
  SQL_EXECUTION_EXCEPTION = 'SQL_EXECUTION_EXCEPTION'
830
+ STOP_PROCESS_DUE_TO_AUTO_REGENERATE = 'STOP_PROCESS_DUE_TO_AUTO_REGENERATE'
670
831
  TABLES_MISSING_EXCEPTION = 'TABLES_MISSING_EXCEPTION'
671
832
  TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION = 'TOO_MANY_CERTIFIED_ANSWERS_EXCEPTION'
672
833
  TOO_MANY_TABLES_EXCEPTION = 'TOO_MANY_TABLES_EXCEPTION'
@@ -747,6 +908,74 @@ class MigrateDashboardRequest:
747
908
  update_parameter_syntax=d.get('update_parameter_syntax', None))
748
909
 
749
910
 
911
+ @dataclass
912
+ class PendingStatus:
913
+ data_token: str
914
+ """The token to poll for result asynchronously Example:
915
+ EC0A..ChAB7WCEn_4Qo4vkLqEbXsxxEgh3Y2pbWw45WhoQXgZSQo9aS5q2ZvFcbvbx9CgA-PAEAQ"""
916
+
917
+ def as_dict(self) -> dict:
918
+ """Serializes the PendingStatus into a dictionary suitable for use as a JSON request body."""
919
+ body = {}
920
+ if self.data_token is not None: body['data_token'] = self.data_token
921
+ return body
922
+
923
+ def as_shallow_dict(self) -> dict:
924
+ """Serializes the PendingStatus into a shallow dictionary of its immediate attributes."""
925
+ body = {}
926
+ if self.data_token is not None: body['data_token'] = self.data_token
927
+ return body
928
+
929
+ @classmethod
930
+ def from_dict(cls, d: Dict[str, any]) -> PendingStatus:
931
+ """Deserializes the PendingStatus from a dictionary."""
932
+ return cls(data_token=d.get('data_token', None))
933
+
934
+
935
+ @dataclass
936
+ class PollQueryStatusResponse:
937
+ data: Optional[List[PollQueryStatusResponseData]] = None
938
+
939
+ def as_dict(self) -> dict:
940
+ """Serializes the PollQueryStatusResponse into a dictionary suitable for use as a JSON request body."""
941
+ body = {}
942
+ if self.data: body['data'] = [v.as_dict() for v in self.data]
943
+ return body
944
+
945
+ def as_shallow_dict(self) -> dict:
946
+ """Serializes the PollQueryStatusResponse into a shallow dictionary of its immediate attributes."""
947
+ body = {}
948
+ if self.data: body['data'] = self.data
949
+ return body
950
+
951
+ @classmethod
952
+ def from_dict(cls, d: Dict[str, any]) -> PollQueryStatusResponse:
953
+ """Deserializes the PollQueryStatusResponse from a dictionary."""
954
+ return cls(data=_repeated_dict(d, 'data', PollQueryStatusResponseData))
955
+
956
+
957
+ @dataclass
958
+ class PollQueryStatusResponseData:
959
+ status: QueryResponseStatus
960
+
961
+ def as_dict(self) -> dict:
962
+ """Serializes the PollQueryStatusResponseData into a dictionary suitable for use as a JSON request body."""
963
+ body = {}
964
+ if self.status: body['status'] = self.status.as_dict()
965
+ return body
966
+
967
+ def as_shallow_dict(self) -> dict:
968
+ """Serializes the PollQueryStatusResponseData into a shallow dictionary of its immediate attributes."""
969
+ body = {}
970
+ if self.status: body['status'] = self.status
971
+ return body
972
+
973
+ @classmethod
974
+ def from_dict(cls, d: Dict[str, any]) -> PollQueryStatusResponseData:
975
+ """Deserializes the PollQueryStatusResponseData from a dictionary."""
976
+ return cls(status=_from_dict(d, 'status', QueryResponseStatus))
977
+
978
+
750
979
  @dataclass
751
980
  class PublishRequest:
752
981
  dashboard_id: Optional[str] = None
@@ -895,6 +1124,55 @@ class QueryAttachment:
895
1124
  title=d.get('title', None))
896
1125
 
897
1126
 
1127
+ @dataclass
1128
+ class QueryResponseStatus:
1129
+ canceled: Optional[Empty] = None
1130
+ """Represents an empty message, similar to google.protobuf.Empty, which is not available in the
1131
+ firm right now."""
1132
+
1133
+ closed: Optional[Empty] = None
1134
+ """Represents an empty message, similar to google.protobuf.Empty, which is not available in the
1135
+ firm right now."""
1136
+
1137
+ pending: Optional[PendingStatus] = None
1138
+
1139
+ statement_id: Optional[str] = None
1140
+ """The statement id in format(01eef5da-c56e-1f36-bafa-21906587d6ba) The statement_id should be
1141
+ identical to data_token in SuccessStatus and PendingStatus. This field is created for audit
1142
+ logging purpose to record the statement_id of all QueryResponseStatus."""
1143
+
1144
+ success: Optional[SuccessStatus] = None
1145
+
1146
+ def as_dict(self) -> dict:
1147
+ """Serializes the QueryResponseStatus into a dictionary suitable for use as a JSON request body."""
1148
+ body = {}
1149
+ if self.canceled: body['canceled'] = self.canceled.as_dict()
1150
+ if self.closed: body['closed'] = self.closed.as_dict()
1151
+ if self.pending: body['pending'] = self.pending.as_dict()
1152
+ if self.statement_id is not None: body['statement_id'] = self.statement_id
1153
+ if self.success: body['success'] = self.success.as_dict()
1154
+ return body
1155
+
1156
+ def as_shallow_dict(self) -> dict:
1157
+ """Serializes the QueryResponseStatus into a shallow dictionary of its immediate attributes."""
1158
+ body = {}
1159
+ if self.canceled: body['canceled'] = self.canceled
1160
+ if self.closed: body['closed'] = self.closed
1161
+ if self.pending: body['pending'] = self.pending
1162
+ if self.statement_id is not None: body['statement_id'] = self.statement_id
1163
+ if self.success: body['success'] = self.success
1164
+ return body
1165
+
1166
+ @classmethod
1167
+ def from_dict(cls, d: Dict[str, any]) -> QueryResponseStatus:
1168
+ """Deserializes the QueryResponseStatus from a dictionary."""
1169
+ return cls(canceled=_from_dict(d, 'canceled', Empty),
1170
+ closed=_from_dict(d, 'closed', Empty),
1171
+ pending=_from_dict(d, 'pending', PendingStatus),
1172
+ statement_id=d.get('statement_id', None),
1173
+ success=_from_dict(d, 'success', SuccessStatus))
1174
+
1175
+
898
1176
  @dataclass
899
1177
  class QuerySchema:
900
1178
  columns: Optional[List[QuerySchemaColumn]] = None
@@ -1218,6 +1496,35 @@ class SubscriptionSubscriberUser:
1218
1496
  return cls(user_id=d.get('user_id', None))
1219
1497
 
1220
1498
 
1499
+ @dataclass
1500
+ class SuccessStatus:
1501
+ data_token: str
1502
+ """The token to poll for result asynchronously Example:
1503
+ EC0A..ChAB7WCEn_4Qo4vkLqEbXsxxEgh3Y2pbWw45WhoQXgZSQo9aS5q2ZvFcbvbx9CgA-PAEAQ"""
1504
+
1505
+ truncated: Optional[bool] = None
1506
+ """Whether the query result is truncated (either by byte limit or row limit)"""
1507
+
1508
+ def as_dict(self) -> dict:
1509
+ """Serializes the SuccessStatus into a dictionary suitable for use as a JSON request body."""
1510
+ body = {}
1511
+ if self.data_token is not None: body['data_token'] = self.data_token
1512
+ if self.truncated is not None: body['truncated'] = self.truncated
1513
+ return body
1514
+
1515
+ def as_shallow_dict(self) -> dict:
1516
+ """Serializes the SuccessStatus into a shallow dictionary of its immediate attributes."""
1517
+ body = {}
1518
+ if self.data_token is not None: body['data_token'] = self.data_token
1519
+ if self.truncated is not None: body['truncated'] = self.truncated
1520
+ return body
1521
+
1522
+ @classmethod
1523
+ def from_dict(cls, d: Dict[str, any]) -> SuccessStatus:
1524
+ """Deserializes the SuccessStatus from a dictionary."""
1525
+ return cls(data_token=d.get('data_token', None), truncated=d.get('truncated', None))
1526
+
1527
+
1221
1528
  @dataclass
1222
1529
  class TextAttachment:
1223
1530
  content: Optional[str] = None
@@ -1437,6 +1744,33 @@ class GenieAPI:
1437
1744
  headers=headers)
1438
1745
  return GenieGetMessageQueryResultResponse.from_dict(res)
1439
1746
 
1747
+ def get_message_query_result_by_attachment(self, space_id: str, conversation_id: str, message_id: str,
1748
+ attachment_id: str) -> GenieGetMessageQueryResultResponse:
1749
+ """Get conversation message SQL query result by attachment id.
1750
+
1751
+ Get the result of SQL query by attachment id This is only available if a message has a query
1752
+ attachment and the message status is `EXECUTING_QUERY`.
1753
+
1754
+ :param space_id: str
1755
+ Genie space ID
1756
+ :param conversation_id: str
1757
+ Conversation ID
1758
+ :param message_id: str
1759
+ Message ID
1760
+ :param attachment_id: str
1761
+ Attachment ID
1762
+
1763
+ :returns: :class:`GenieGetMessageQueryResultResponse`
1764
+ """
1765
+
1766
+ headers = {'Accept': 'application/json', }
1767
+
1768
+ res = self._api.do(
1769
+ 'GET',
1770
+ f'/api/2.0/genie/spaces/{space_id}/conversations/{conversation_id}/messages/{message_id}/query-result/{attachment_id}',
1771
+ headers=headers)
1772
+ return GenieGetMessageQueryResultResponse.from_dict(res)
1773
+
1440
1774
  def start_conversation(self, space_id: str, content: str) -> Wait[GenieMessage]:
1441
1775
  """Start conversation.
1442
1776
 
@@ -1907,3 +2241,107 @@ class LakeviewAPI:
1907
2241
  body=body,
1908
2242
  headers=headers)
1909
2243
  return Schedule.from_dict(res)
2244
+
2245
+
2246
+ class LakeviewEmbeddedAPI:
2247
+ """Token-based Lakeview APIs for embedding dashboards in external applications."""
2248
+
2249
+ def __init__(self, api_client):
2250
+ self._api = api_client
2251
+
2252
+ def get_published_dashboard_embedded(self, dashboard_id: str):
2253
+ """Read a published dashboard in an embedded ui.
2254
+
2255
+ Get the current published dashboard within an embedded context.
2256
+
2257
+ :param dashboard_id: str
2258
+ UUID identifying the published dashboard.
2259
+
2260
+
2261
+ """
2262
+
2263
+ headers = {'Accept': 'application/json', }
2264
+
2265
+ self._api.do('GET',
2266
+ f'/api/2.0/lakeview/dashboards/{dashboard_id}/published/embedded',
2267
+ headers=headers)
2268
+
2269
+
2270
+ class QueryExecutionAPI:
2271
+ """Query execution APIs for AI / BI Dashboards"""
2272
+
2273
+ def __init__(self, api_client):
2274
+ self._api = api_client
2275
+
2276
+ def cancel_published_query_execution(self,
2277
+ dashboard_name: str,
2278
+ dashboard_revision_id: str,
2279
+ *,
2280
+ tokens: Optional[List[str]] = None) -> CancelQueryExecutionResponse:
2281
+ """Cancel the results for the a query for a published, embedded dashboard.
2282
+
2283
+ :param dashboard_name: str
2284
+ :param dashboard_revision_id: str
2285
+ :param tokens: List[str] (optional)
2286
+ Example: EC0A..ChAB7WCEn_4Qo4vkLqEbXsxxEgh3Y2pbWw45WhoQXgZSQo9aS5q2ZvFcbvbx9CgA-PAEAQ
2287
+
2288
+ :returns: :class:`CancelQueryExecutionResponse`
2289
+ """
2290
+
2291
+ query = {}
2292
+ if dashboard_name is not None: query['dashboard_name'] = dashboard_name
2293
+ if dashboard_revision_id is not None: query['dashboard_revision_id'] = dashboard_revision_id
2294
+ if tokens is not None: query['tokens'] = [v for v in tokens]
2295
+ headers = {'Accept': 'application/json', }
2296
+
2297
+ res = self._api.do('DELETE', '/api/2.0/lakeview-query/query/published', query=query, headers=headers)
2298
+ return CancelQueryExecutionResponse.from_dict(res)
2299
+
2300
+ def execute_published_dashboard_query(self,
2301
+ dashboard_name: str,
2302
+ dashboard_revision_id: str,
2303
+ *,
2304
+ override_warehouse_id: Optional[str] = None):
2305
+ """Execute a query for a published dashboard.
2306
+
2307
+ :param dashboard_name: str
2308
+ Dashboard name and revision_id is required to retrieve PublishedDatasetDataModel which contains the
2309
+ list of datasets, warehouse_id, and embedded_credentials
2310
+ :param dashboard_revision_id: str
2311
+ :param override_warehouse_id: str (optional)
2312
+ A dashboard schedule can override the warehouse used as compute for processing the published
2313
+ dashboard queries
2314
+
2315
+
2316
+ """
2317
+ body = {}
2318
+ if dashboard_name is not None: body['dashboard_name'] = dashboard_name
2319
+ if dashboard_revision_id is not None: body['dashboard_revision_id'] = dashboard_revision_id
2320
+ if override_warehouse_id is not None: body['override_warehouse_id'] = override_warehouse_id
2321
+ headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
2322
+
2323
+ self._api.do('POST', '/api/2.0/lakeview-query/query/published', body=body, headers=headers)
2324
+
2325
+ def poll_published_query_status(self,
2326
+ dashboard_name: str,
2327
+ dashboard_revision_id: str,
2328
+ *,
2329
+ tokens: Optional[List[str]] = None) -> PollQueryStatusResponse:
2330
+ """Poll the results for the a query for a published, embedded dashboard.
2331
+
2332
+ :param dashboard_name: str
2333
+ :param dashboard_revision_id: str
2334
+ :param tokens: List[str] (optional)
2335
+ Example: EC0A..ChAB7WCEn_4Qo4vkLqEbXsxxEgh3Y2pbWw45WhoQXgZSQo9aS5q2ZvFcbvbx9CgA-PAEAQ
2336
+
2337
+ :returns: :class:`PollQueryStatusResponse`
2338
+ """
2339
+
2340
+ query = {}
2341
+ if dashboard_name is not None: query['dashboard_name'] = dashboard_name
2342
+ if dashboard_revision_id is not None: query['dashboard_revision_id'] = dashboard_revision_id
2343
+ if tokens is not None: query['tokens'] = [v for v in tokens]
2344
+ headers = {'Accept': 'application/json', }
2345
+
2346
+ res = self._api.do('GET', '/api/2.0/lakeview-query/query/published', query=query, headers=headers)
2347
+ return PollQueryStatusResponse.from_dict(res)
@@ -4915,6 +4915,10 @@ class RunTask:
4915
4915
  description: Optional[str] = None
4916
4916
  """An optional description for this task."""
4917
4917
 
4918
+ disabled: Optional[bool] = None
4919
+ """Denotes whether or not the task was disabled by the user. Disabled tasks do not execute and are
4920
+ immediately skipped as soon as they are unblocked."""
4921
+
4918
4922
  effective_performance_target: Optional[PerformanceTarget] = None
4919
4923
  """effective_performance_target is the actual performance target used by the run during execution.
4920
4924
  effective_performance_target can differ from performance_target depending on if the job was
@@ -5069,6 +5073,7 @@ class RunTask:
5069
5073
  if self.dbt_task: body['dbt_task'] = self.dbt_task.as_dict()
5070
5074
  if self.depends_on: body['depends_on'] = [v.as_dict() for v in self.depends_on]
5071
5075
  if self.description is not None: body['description'] = self.description
5076
+ if self.disabled is not None: body['disabled'] = self.disabled
5072
5077
  if self.effective_performance_target is not None:
5073
5078
  body['effective_performance_target'] = self.effective_performance_target.value
5074
5079
  if self.email_notifications: body['email_notifications'] = self.email_notifications.as_dict()
@@ -5116,6 +5121,7 @@ class RunTask:
5116
5121
  if self.dbt_task: body['dbt_task'] = self.dbt_task
5117
5122
  if self.depends_on: body['depends_on'] = self.depends_on
5118
5123
  if self.description is not None: body['description'] = self.description
5124
+ if self.disabled is not None: body['disabled'] = self.disabled
5119
5125
  if self.effective_performance_target is not None:
5120
5126
  body['effective_performance_target'] = self.effective_performance_target
5121
5127
  if self.email_notifications: body['email_notifications'] = self.email_notifications
@@ -5164,6 +5170,7 @@ class RunTask:
5164
5170
  dbt_task=_from_dict(d, 'dbt_task', DbtTask),
5165
5171
  depends_on=_repeated_dict(d, 'depends_on', TaskDependency),
5166
5172
  description=d.get('description', None),
5173
+ disabled=d.get('disabled', None),
5167
5174
  effective_performance_target=_enum(d, 'effective_performance_target', PerformanceTarget),
5168
5175
  email_notifications=_from_dict(d, 'email_notifications', JobEmailNotifications),
5169
5176
  end_time=d.get('end_time', None),
@@ -1247,7 +1247,7 @@ class ExternalModel:
1247
1247
  provider: ExternalModelProvider
1248
1248
  """The name of the provider for the external model. Currently, the supported providers are
1249
1249
  'ai21labs', 'anthropic', 'amazon-bedrock', 'cohere', 'databricks-model-serving',
1250
- 'google-cloud-vertex-ai', 'openai', and 'palm'."""
1250
+ 'google-cloud-vertex-ai', 'openai', 'palm', and 'custom'."""
1251
1251
 
1252
1252
  name: str
1253
1253
  """The name of the external model."""