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

@@ -1210,51 +1210,6 @@ class ExperimentTag:
1210
1210
  return cls(key=d.get("key", None), value=d.get("value", None))
1211
1211
 
1212
1212
 
1213
- @dataclass
1214
- class Feature:
1215
- """Feature for model version."""
1216
-
1217
- feature_name: Optional[str] = None
1218
- """Feature name"""
1219
-
1220
- feature_table_id: Optional[str] = None
1221
- """Feature table id"""
1222
-
1223
- feature_table_name: Optional[str] = None
1224
- """Feature table name"""
1225
-
1226
- def as_dict(self) -> dict:
1227
- """Serializes the Feature into a dictionary suitable for use as a JSON request body."""
1228
- body = {}
1229
- if self.feature_name is not None:
1230
- body["feature_name"] = self.feature_name
1231
- if self.feature_table_id is not None:
1232
- body["feature_table_id"] = self.feature_table_id
1233
- if self.feature_table_name is not None:
1234
- body["feature_table_name"] = self.feature_table_name
1235
- return body
1236
-
1237
- def as_shallow_dict(self) -> dict:
1238
- """Serializes the Feature into a shallow dictionary of its immediate attributes."""
1239
- body = {}
1240
- if self.feature_name is not None:
1241
- body["feature_name"] = self.feature_name
1242
- if self.feature_table_id is not None:
1243
- body["feature_table_id"] = self.feature_table_id
1244
- if self.feature_table_name is not None:
1245
- body["feature_table_name"] = self.feature_table_name
1246
- return body
1247
-
1248
- @classmethod
1249
- def from_dict(cls, d: Dict[str, Any]) -> Feature:
1250
- """Deserializes the Feature from a dictionary."""
1251
- return cls(
1252
- feature_name=d.get("feature_name", None),
1253
- feature_table_id=d.get("feature_table_id", None),
1254
- feature_table_name=d.get("feature_table_name", None),
1255
- )
1256
-
1257
-
1258
1213
  @dataclass
1259
1214
  class FeatureLineage:
1260
1215
  feature_specs: Optional[List[FeatureLineageFeatureSpec]] = None
@@ -1391,7 +1346,7 @@ class FeatureLineageOnlineFeature:
1391
1346
  class FeatureList:
1392
1347
  """Feature list wrap all the features for a model version"""
1393
1348
 
1394
- features: Optional[List[Feature]] = None
1349
+ features: Optional[List[LinkedFeature]] = None
1395
1350
 
1396
1351
  def as_dict(self) -> dict:
1397
1352
  """Serializes the FeatureList into a dictionary suitable for use as a JSON request body."""
@@ -1410,7 +1365,7 @@ class FeatureList:
1410
1365
  @classmethod
1411
1366
  def from_dict(cls, d: Dict[str, Any]) -> FeatureList:
1412
1367
  """Deserializes the FeatureList from a dictionary."""
1413
- return cls(features=_repeated_dict(d, "features", Feature))
1368
+ return cls(features=_repeated_dict(d, "features", LinkedFeature))
1414
1369
 
1415
1370
 
1416
1371
  @dataclass
@@ -2054,6 +2009,51 @@ class JobSpecWithoutSecret:
2054
2009
  return cls(job_id=d.get("job_id", None), workspace_url=d.get("workspace_url", None))
2055
2010
 
2056
2011
 
2012
+ @dataclass
2013
+ class LinkedFeature:
2014
+ """Feature for model version. ([ML-57150] Renamed from Feature to LinkedFeature)"""
2015
+
2016
+ feature_name: Optional[str] = None
2017
+ """Feature name"""
2018
+
2019
+ feature_table_id: Optional[str] = None
2020
+ """Feature table id"""
2021
+
2022
+ feature_table_name: Optional[str] = None
2023
+ """Feature table name"""
2024
+
2025
+ def as_dict(self) -> dict:
2026
+ """Serializes the LinkedFeature into a dictionary suitable for use as a JSON request body."""
2027
+ body = {}
2028
+ if self.feature_name is not None:
2029
+ body["feature_name"] = self.feature_name
2030
+ if self.feature_table_id is not None:
2031
+ body["feature_table_id"] = self.feature_table_id
2032
+ if self.feature_table_name is not None:
2033
+ body["feature_table_name"] = self.feature_table_name
2034
+ return body
2035
+
2036
+ def as_shallow_dict(self) -> dict:
2037
+ """Serializes the LinkedFeature into a shallow dictionary of its immediate attributes."""
2038
+ body = {}
2039
+ if self.feature_name is not None:
2040
+ body["feature_name"] = self.feature_name
2041
+ if self.feature_table_id is not None:
2042
+ body["feature_table_id"] = self.feature_table_id
2043
+ if self.feature_table_name is not None:
2044
+ body["feature_table_name"] = self.feature_table_name
2045
+ return body
2046
+
2047
+ @classmethod
2048
+ def from_dict(cls, d: Dict[str, Any]) -> LinkedFeature:
2049
+ """Deserializes the LinkedFeature from a dictionary."""
2050
+ return cls(
2051
+ feature_name=d.get("feature_name", None),
2052
+ feature_table_id=d.get("feature_table_id", None),
2053
+ feature_table_name=d.get("feature_table_name", None),
2054
+ )
2055
+
2056
+
2057
2057
  @dataclass
2058
2058
  class ListArtifactsResponse:
2059
2059
  files: Optional[List[FileInfo]] = None
@@ -613,6 +613,9 @@ class IngestionPipelineDefinition:
613
613
  objects: Optional[List[IngestionConfig]] = None
614
614
  """Required. Settings specifying tables to replicate and the destination for the replicated tables."""
615
615
 
616
+ source_configurations: Optional[List[SourceConfig]] = None
617
+ """Top-level source configurations"""
618
+
616
619
  source_type: Optional[IngestionSourceType] = None
617
620
  """The type of the foreign source. The source type will be inferred from the source connection or
618
621
  ingestion gateway. This field is output only and will be ignored if provided."""
@@ -630,6 +633,8 @@ class IngestionPipelineDefinition:
630
633
  body["ingestion_gateway_id"] = self.ingestion_gateway_id
631
634
  if self.objects:
632
635
  body["objects"] = [v.as_dict() for v in self.objects]
636
+ if self.source_configurations:
637
+ body["source_configurations"] = [v.as_dict() for v in self.source_configurations]
633
638
  if self.source_type is not None:
634
639
  body["source_type"] = self.source_type.value
635
640
  if self.table_configuration:
@@ -645,6 +650,8 @@ class IngestionPipelineDefinition:
645
650
  body["ingestion_gateway_id"] = self.ingestion_gateway_id
646
651
  if self.objects:
647
652
  body["objects"] = self.objects
653
+ if self.source_configurations:
654
+ body["source_configurations"] = self.source_configurations
648
655
  if self.source_type is not None:
649
656
  body["source_type"] = self.source_type
650
657
  if self.table_configuration:
@@ -658,6 +665,7 @@ class IngestionPipelineDefinition:
658
665
  connection_name=d.get("connection_name", None),
659
666
  ingestion_gateway_id=d.get("ingestion_gateway_id", None),
660
667
  objects=_repeated_dict(d, "objects", IngestionConfig),
668
+ source_configurations=_repeated_dict(d, "source_configurations", SourceConfig),
661
669
  source_type=_enum(d, "source_type", IngestionSourceType),
662
670
  table_configuration=_from_dict(d, "table_configuration", TableSpecificConfig),
663
671
  )
@@ -2239,6 +2247,67 @@ class PipelinesEnvironment:
2239
2247
  return cls(dependencies=d.get("dependencies", None))
2240
2248
 
2241
2249
 
2250
+ @dataclass
2251
+ class PostgresCatalogConfig:
2252
+ """PG-specific catalog-level configuration parameters"""
2253
+
2254
+ slot_config: Optional[PostgresSlotConfig] = None
2255
+ """Optional. The Postgres slot configuration to use for logical replication"""
2256
+
2257
+ def as_dict(self) -> dict:
2258
+ """Serializes the PostgresCatalogConfig into a dictionary suitable for use as a JSON request body."""
2259
+ body = {}
2260
+ if self.slot_config:
2261
+ body["slot_config"] = self.slot_config.as_dict()
2262
+ return body
2263
+
2264
+ def as_shallow_dict(self) -> dict:
2265
+ """Serializes the PostgresCatalogConfig into a shallow dictionary of its immediate attributes."""
2266
+ body = {}
2267
+ if self.slot_config:
2268
+ body["slot_config"] = self.slot_config
2269
+ return body
2270
+
2271
+ @classmethod
2272
+ def from_dict(cls, d: Dict[str, Any]) -> PostgresCatalogConfig:
2273
+ """Deserializes the PostgresCatalogConfig from a dictionary."""
2274
+ return cls(slot_config=_from_dict(d, "slot_config", PostgresSlotConfig))
2275
+
2276
+
2277
+ @dataclass
2278
+ class PostgresSlotConfig:
2279
+ """PostgresSlotConfig contains the configuration for a Postgres logical replication slot"""
2280
+
2281
+ publication_name: Optional[str] = None
2282
+ """The name of the publication to use for the Postgres source"""
2283
+
2284
+ slot_name: Optional[str] = None
2285
+ """The name of the logical replication slot to use for the Postgres source"""
2286
+
2287
+ def as_dict(self) -> dict:
2288
+ """Serializes the PostgresSlotConfig into a dictionary suitable for use as a JSON request body."""
2289
+ body = {}
2290
+ if self.publication_name is not None:
2291
+ body["publication_name"] = self.publication_name
2292
+ if self.slot_name is not None:
2293
+ body["slot_name"] = self.slot_name
2294
+ return body
2295
+
2296
+ def as_shallow_dict(self) -> dict:
2297
+ """Serializes the PostgresSlotConfig into a shallow dictionary of its immediate attributes."""
2298
+ body = {}
2299
+ if self.publication_name is not None:
2300
+ body["publication_name"] = self.publication_name
2301
+ if self.slot_name is not None:
2302
+ body["slot_name"] = self.slot_name
2303
+ return body
2304
+
2305
+ @classmethod
2306
+ def from_dict(cls, d: Dict[str, Any]) -> PostgresSlotConfig:
2307
+ """Deserializes the PostgresSlotConfig from a dictionary."""
2308
+ return cls(publication_name=d.get("publication_name", None), slot_name=d.get("slot_name", None))
2309
+
2310
+
2242
2311
  @dataclass
2243
2312
  class ReportSpec:
2244
2313
  source_url: str
@@ -2527,6 +2596,67 @@ class SerializedException:
2527
2596
  )
2528
2597
 
2529
2598
 
2599
+ @dataclass
2600
+ class SourceCatalogConfig:
2601
+ """SourceCatalogConfig contains catalog-level custom configuration parameters for each source"""
2602
+
2603
+ postgres: Optional[PostgresCatalogConfig] = None
2604
+ """Postgres-specific catalog-level configuration parameters"""
2605
+
2606
+ source_catalog: Optional[str] = None
2607
+ """Source catalog name"""
2608
+
2609
+ def as_dict(self) -> dict:
2610
+ """Serializes the SourceCatalogConfig into a dictionary suitable for use as a JSON request body."""
2611
+ body = {}
2612
+ if self.postgres:
2613
+ body["postgres"] = self.postgres.as_dict()
2614
+ if self.source_catalog is not None:
2615
+ body["source_catalog"] = self.source_catalog
2616
+ return body
2617
+
2618
+ def as_shallow_dict(self) -> dict:
2619
+ """Serializes the SourceCatalogConfig into a shallow dictionary of its immediate attributes."""
2620
+ body = {}
2621
+ if self.postgres:
2622
+ body["postgres"] = self.postgres
2623
+ if self.source_catalog is not None:
2624
+ body["source_catalog"] = self.source_catalog
2625
+ return body
2626
+
2627
+ @classmethod
2628
+ def from_dict(cls, d: Dict[str, Any]) -> SourceCatalogConfig:
2629
+ """Deserializes the SourceCatalogConfig from a dictionary."""
2630
+ return cls(
2631
+ postgres=_from_dict(d, "postgres", PostgresCatalogConfig), source_catalog=d.get("source_catalog", None)
2632
+ )
2633
+
2634
+
2635
+ @dataclass
2636
+ class SourceConfig:
2637
+ catalog: Optional[SourceCatalogConfig] = None
2638
+ """Catalog-level source configuration parameters"""
2639
+
2640
+ def as_dict(self) -> dict:
2641
+ """Serializes the SourceConfig into a dictionary suitable for use as a JSON request body."""
2642
+ body = {}
2643
+ if self.catalog:
2644
+ body["catalog"] = self.catalog.as_dict()
2645
+ return body
2646
+
2647
+ def as_shallow_dict(self) -> dict:
2648
+ """Serializes the SourceConfig into a shallow dictionary of its immediate attributes."""
2649
+ body = {}
2650
+ if self.catalog:
2651
+ body["catalog"] = self.catalog
2652
+ return body
2653
+
2654
+ @classmethod
2655
+ def from_dict(cls, d: Dict[str, Any]) -> SourceConfig:
2656
+ """Deserializes the SourceConfig from a dictionary."""
2657
+ return cls(catalog=_from_dict(d, "catalog", SourceCatalogConfig))
2658
+
2659
+
2530
2660
  @dataclass
2531
2661
  class StackFrame:
2532
2662
  declaring_class: Optional[str] = None
@@ -314,6 +314,9 @@ class AiGatewayRateLimit:
314
314
  """Principal field for a user, user group, or service principal to apply rate limiting to. Accepts
315
315
  a user email, group name, or service principal application ID."""
316
316
 
317
+ tokens: Optional[int] = None
318
+ """Used to specify how many tokens are allowed for a key within the renewal_period."""
319
+
317
320
  def as_dict(self) -> dict:
318
321
  """Serializes the AiGatewayRateLimit into a dictionary suitable for use as a JSON request body."""
319
322
  body = {}
@@ -325,6 +328,8 @@ class AiGatewayRateLimit:
325
328
  body["principal"] = self.principal
326
329
  if self.renewal_period is not None:
327
330
  body["renewal_period"] = self.renewal_period.value
331
+ if self.tokens is not None:
332
+ body["tokens"] = self.tokens
328
333
  return body
329
334
 
330
335
  def as_shallow_dict(self) -> dict:
@@ -338,6 +343,8 @@ class AiGatewayRateLimit:
338
343
  body["principal"] = self.principal
339
344
  if self.renewal_period is not None:
340
345
  body["renewal_period"] = self.renewal_period
346
+ if self.tokens is not None:
347
+ body["tokens"] = self.tokens
341
348
  return body
342
349
 
343
350
  @classmethod
@@ -348,6 +355,7 @@ class AiGatewayRateLimit:
348
355
  key=_enum(d, "key", AiGatewayRateLimitKey),
349
356
  principal=d.get("principal", None),
350
357
  renewal_period=_enum(d, "renewal_period", AiGatewayRateLimitRenewalPeriod),
358
+ tokens=d.get("tokens", None),
351
359
  )
352
360
 
353
361
 
@@ -3374,6 +3382,9 @@ class ServingEndpoint:
3374
3382
  task: Optional[str] = None
3375
3383
  """The task type of the serving endpoint."""
3376
3384
 
3385
+ usage_policy_id: Optional[str] = None
3386
+ """The usage policy associated with serving endpoint."""
3387
+
3377
3388
  def as_dict(self) -> dict:
3378
3389
  """Serializes the ServingEndpoint into a dictionary suitable for use as a JSON request body."""
3379
3390
  body = {}
@@ -3401,6 +3412,8 @@ class ServingEndpoint:
3401
3412
  body["tags"] = [v.as_dict() for v in self.tags]
3402
3413
  if self.task is not None:
3403
3414
  body["task"] = self.task
3415
+ if self.usage_policy_id is not None:
3416
+ body["usage_policy_id"] = self.usage_policy_id
3404
3417
  return body
3405
3418
 
3406
3419
  def as_shallow_dict(self) -> dict:
@@ -3430,6 +3443,8 @@ class ServingEndpoint:
3430
3443
  body["tags"] = self.tags
3431
3444
  if self.task is not None:
3432
3445
  body["task"] = self.task
3446
+ if self.usage_policy_id is not None:
3447
+ body["usage_policy_id"] = self.usage_policy_id
3433
3448
  return body
3434
3449
 
3435
3450
  @classmethod
@@ -3448,6 +3463,7 @@ class ServingEndpoint:
3448
3463
  state=_from_dict(d, "state", EndpointState),
3449
3464
  tags=_repeated_dict(d, "tags", EndpointTag),
3450
3465
  task=d.get("task", None),
3466
+ usage_policy_id=d.get("usage_policy_id", None),
3451
3467
  )
3452
3468
 
3453
3469
 
@@ -3587,8 +3587,32 @@ class LlmProxyPartnerPoweredWorkspace:
3587
3587
 
3588
3588
  @dataclass
3589
3589
  class MicrosoftTeamsConfig:
3590
+ app_id: Optional[str] = None
3591
+ """[Input-Only] App ID for Microsoft Teams App."""
3592
+
3593
+ app_id_set: Optional[bool] = None
3594
+ """[Output-Only] Whether App ID is set."""
3595
+
3596
+ auth_secret: Optional[str] = None
3597
+ """[Input-Only] Secret for Microsoft Teams App authentication."""
3598
+
3599
+ auth_secret_set: Optional[bool] = None
3600
+ """[Output-Only] Whether secret is set."""
3601
+
3602
+ channel_url: Optional[str] = None
3603
+ """[Input-Only] Channel URL for Microsoft Teams App."""
3604
+
3605
+ channel_url_set: Optional[bool] = None
3606
+ """[Output-Only] Whether Channel URL is set."""
3607
+
3608
+ tenant_id: Optional[str] = None
3609
+ """[Input-Only] Tenant ID for Microsoft Teams App."""
3610
+
3611
+ tenant_id_set: Optional[bool] = None
3612
+ """[Output-Only] Whether Tenant ID is set."""
3613
+
3590
3614
  url: Optional[str] = None
3591
- """[Input-Only] URL for Microsoft Teams."""
3615
+ """[Input-Only] URL for Microsoft Teams webhook."""
3592
3616
 
3593
3617
  url_set: Optional[bool] = None
3594
3618
  """[Output-Only] Whether URL is set."""
@@ -3596,6 +3620,22 @@ class MicrosoftTeamsConfig:
3596
3620
  def as_dict(self) -> dict:
3597
3621
  """Serializes the MicrosoftTeamsConfig into a dictionary suitable for use as a JSON request body."""
3598
3622
  body = {}
3623
+ if self.app_id is not None:
3624
+ body["app_id"] = self.app_id
3625
+ if self.app_id_set is not None:
3626
+ body["app_id_set"] = self.app_id_set
3627
+ if self.auth_secret is not None:
3628
+ body["auth_secret"] = self.auth_secret
3629
+ if self.auth_secret_set is not None:
3630
+ body["auth_secret_set"] = self.auth_secret_set
3631
+ if self.channel_url is not None:
3632
+ body["channel_url"] = self.channel_url
3633
+ if self.channel_url_set is not None:
3634
+ body["channel_url_set"] = self.channel_url_set
3635
+ if self.tenant_id is not None:
3636
+ body["tenant_id"] = self.tenant_id
3637
+ if self.tenant_id_set is not None:
3638
+ body["tenant_id_set"] = self.tenant_id_set
3599
3639
  if self.url is not None:
3600
3640
  body["url"] = self.url
3601
3641
  if self.url_set is not None:
@@ -3605,6 +3645,22 @@ class MicrosoftTeamsConfig:
3605
3645
  def as_shallow_dict(self) -> dict:
3606
3646
  """Serializes the MicrosoftTeamsConfig into a shallow dictionary of its immediate attributes."""
3607
3647
  body = {}
3648
+ if self.app_id is not None:
3649
+ body["app_id"] = self.app_id
3650
+ if self.app_id_set is not None:
3651
+ body["app_id_set"] = self.app_id_set
3652
+ if self.auth_secret is not None:
3653
+ body["auth_secret"] = self.auth_secret
3654
+ if self.auth_secret_set is not None:
3655
+ body["auth_secret_set"] = self.auth_secret_set
3656
+ if self.channel_url is not None:
3657
+ body["channel_url"] = self.channel_url
3658
+ if self.channel_url_set is not None:
3659
+ body["channel_url_set"] = self.channel_url_set
3660
+ if self.tenant_id is not None:
3661
+ body["tenant_id"] = self.tenant_id
3662
+ if self.tenant_id_set is not None:
3663
+ body["tenant_id_set"] = self.tenant_id_set
3608
3664
  if self.url is not None:
3609
3665
  body["url"] = self.url
3610
3666
  if self.url_set is not None:
@@ -3614,7 +3670,18 @@ class MicrosoftTeamsConfig:
3614
3670
  @classmethod
3615
3671
  def from_dict(cls, d: Dict[str, Any]) -> MicrosoftTeamsConfig:
3616
3672
  """Deserializes the MicrosoftTeamsConfig from a dictionary."""
3617
- return cls(url=d.get("url", None), url_set=d.get("url_set", None))
3673
+ return cls(
3674
+ app_id=d.get("app_id", None),
3675
+ app_id_set=d.get("app_id_set", None),
3676
+ auth_secret=d.get("auth_secret", None),
3677
+ auth_secret_set=d.get("auth_secret_set", None),
3678
+ channel_url=d.get("channel_url", None),
3679
+ channel_url_set=d.get("channel_url_set", None),
3680
+ tenant_id=d.get("tenant_id", None),
3681
+ tenant_id_set=d.get("tenant_id_set", None),
3682
+ url=d.get("url", None),
3683
+ url_set=d.get("url_set", None),
3684
+ )
3618
3685
 
3619
3686
 
3620
3687
  @dataclass