databricks-sdk 0.19.1__py3-none-any.whl → 0.21.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of databricks-sdk might be problematic. Click here for more details.

Files changed (35) hide show
  1. databricks/sdk/__init__.py +28 -6
  2. databricks/sdk/_widgets/__init__.py +2 -2
  3. databricks/sdk/config.py +3 -2
  4. databricks/sdk/core.py +4 -2
  5. databricks/sdk/mixins/workspace.py +2 -1
  6. databricks/sdk/oauth.py +1 -1
  7. databricks/sdk/runtime/__init__.py +85 -11
  8. databricks/sdk/runtime/dbutils_stub.py +1 -1
  9. databricks/sdk/service/_internal.py +1 -1
  10. databricks/sdk/service/billing.py +64 -1
  11. databricks/sdk/service/catalog.py +796 -84
  12. databricks/sdk/service/compute.py +391 -13
  13. databricks/sdk/service/dashboards.py +15 -0
  14. databricks/sdk/service/files.py +289 -15
  15. databricks/sdk/service/iam.py +214 -0
  16. databricks/sdk/service/jobs.py +242 -143
  17. databricks/sdk/service/ml.py +407 -0
  18. databricks/sdk/service/oauth2.py +83 -0
  19. databricks/sdk/service/pipelines.py +78 -8
  20. databricks/sdk/service/provisioning.py +108 -36
  21. databricks/sdk/service/serving.py +101 -35
  22. databricks/sdk/service/settings.py +1316 -186
  23. databricks/sdk/service/sharing.py +94 -18
  24. databricks/sdk/service/sql.py +230 -13
  25. databricks/sdk/service/vectorsearch.py +105 -60
  26. databricks/sdk/service/workspace.py +175 -1
  27. databricks/sdk/version.py +1 -1
  28. {databricks_sdk-0.19.1.dist-info → databricks_sdk-0.21.0.dist-info}/METADATA +3 -1
  29. databricks_sdk-0.21.0.dist-info/RECORD +53 -0
  30. databricks/sdk/runtime/stub.py +0 -48
  31. databricks_sdk-0.19.1.dist-info/RECORD +0 -54
  32. {databricks_sdk-0.19.1.dist-info → databricks_sdk-0.21.0.dist-info}/LICENSE +0 -0
  33. {databricks_sdk-0.19.1.dist-info → databricks_sdk-0.21.0.dist-info}/NOTICE +0 -0
  34. {databricks_sdk-0.19.1.dist-info → databricks_sdk-0.21.0.dist-info}/WHEEL +0 -0
  35. {databricks_sdk-0.19.1.dist-info → databricks_sdk-0.21.0.dist-info}/top_level.txt +0 -0
@@ -190,6 +190,20 @@ class CreateScope:
190
190
  scope_backend_type=_enum(d, 'scope_backend_type', ScopeBackendType))
191
191
 
192
192
 
193
+ @dataclass
194
+ class CreateScopeResponse:
195
+
196
+ def as_dict(self) -> dict:
197
+ """Serializes the CreateScopeResponse into a dictionary suitable for use as a JSON request body."""
198
+ body = {}
199
+ return body
200
+
201
+ @classmethod
202
+ def from_dict(cls, d: Dict[str, any]) -> CreateScopeResponse:
203
+ """Deserializes the CreateScopeResponse from a dictionary."""
204
+ return cls()
205
+
206
+
193
207
  @dataclass
194
208
  class CredentialInfo:
195
209
  credential_id: Optional[int] = None
@@ -263,6 +277,34 @@ class DeleteAcl:
263
277
  return cls(principal=d.get('principal', None), scope=d.get('scope', None))
264
278
 
265
279
 
280
+ @dataclass
281
+ class DeleteAclResponse:
282
+
283
+ def as_dict(self) -> dict:
284
+ """Serializes the DeleteAclResponse into a dictionary suitable for use as a JSON request body."""
285
+ body = {}
286
+ return body
287
+
288
+ @classmethod
289
+ def from_dict(cls, d: Dict[str, any]) -> DeleteAclResponse:
290
+ """Deserializes the DeleteAclResponse from a dictionary."""
291
+ return cls()
292
+
293
+
294
+ @dataclass
295
+ class DeleteResponse:
296
+
297
+ def as_dict(self) -> dict:
298
+ """Serializes the DeleteResponse into a dictionary suitable for use as a JSON request body."""
299
+ body = {}
300
+ return body
301
+
302
+ @classmethod
303
+ def from_dict(cls, d: Dict[str, any]) -> DeleteResponse:
304
+ """Deserializes the DeleteResponse from a dictionary."""
305
+ return cls()
306
+
307
+
266
308
  @dataclass
267
309
  class DeleteScope:
268
310
  scope: str
@@ -280,6 +322,20 @@ class DeleteScope:
280
322
  return cls(scope=d.get('scope', None))
281
323
 
282
324
 
325
+ @dataclass
326
+ class DeleteScopeResponse:
327
+
328
+ def as_dict(self) -> dict:
329
+ """Serializes the DeleteScopeResponse into a dictionary suitable for use as a JSON request body."""
330
+ body = {}
331
+ return body
332
+
333
+ @classmethod
334
+ def from_dict(cls, d: Dict[str, any]) -> DeleteScopeResponse:
335
+ """Deserializes the DeleteScopeResponse from a dictionary."""
336
+ return cls()
337
+
338
+
283
339
  @dataclass
284
340
  class DeleteSecret:
285
341
  scope: str
@@ -301,6 +357,20 @@ class DeleteSecret:
301
357
  return cls(key=d.get('key', None), scope=d.get('scope', None))
302
358
 
303
359
 
360
+ @dataclass
361
+ class DeleteSecretResponse:
362
+
363
+ def as_dict(self) -> dict:
364
+ """Serializes the DeleteSecretResponse into a dictionary suitable for use as a JSON request body."""
365
+ body = {}
366
+ return body
367
+
368
+ @classmethod
369
+ def from_dict(cls, d: Dict[str, any]) -> DeleteSecretResponse:
370
+ """Deserializes the DeleteSecretResponse from a dictionary."""
371
+ return cls()
372
+
373
+
304
374
  class ExportFormat(Enum):
305
375
 
306
376
  AUTO = 'AUTO'
@@ -478,6 +548,20 @@ class ImportFormat(Enum):
478
548
  SOURCE = 'SOURCE'
479
549
 
480
550
 
551
+ @dataclass
552
+ class ImportResponse:
553
+
554
+ def as_dict(self) -> dict:
555
+ """Serializes the ImportResponse into a dictionary suitable for use as a JSON request body."""
556
+ body = {}
557
+ return body
558
+
559
+ @classmethod
560
+ def from_dict(cls, d: Dict[str, any]) -> ImportResponse:
561
+ """Deserializes the ImportResponse from a dictionary."""
562
+ return cls()
563
+
564
+
481
565
  class Language(Enum):
482
566
  """The language of the object. This value is set only if the object type is `NOTEBOOK`."""
483
567
 
@@ -594,6 +678,20 @@ class Mkdirs:
594
678
  return cls(path=d.get('path', None))
595
679
 
596
680
 
681
+ @dataclass
682
+ class MkdirsResponse:
683
+
684
+ def as_dict(self) -> dict:
685
+ """Serializes the MkdirsResponse into a dictionary suitable for use as a JSON request body."""
686
+ body = {}
687
+ return body
688
+
689
+ @classmethod
690
+ def from_dict(cls, d: Dict[str, any]) -> MkdirsResponse:
691
+ """Deserializes the MkdirsResponse from a dictionary."""
692
+ return cls()
693
+
694
+
597
695
  @dataclass
598
696
  class ObjectInfo:
599
697
  created_at: Optional[int] = None
@@ -692,6 +790,20 @@ class PutAcl:
692
790
  scope=d.get('scope', None))
693
791
 
694
792
 
793
+ @dataclass
794
+ class PutAclResponse:
795
+
796
+ def as_dict(self) -> dict:
797
+ """Serializes the PutAclResponse into a dictionary suitable for use as a JSON request body."""
798
+ body = {}
799
+ return body
800
+
801
+ @classmethod
802
+ def from_dict(cls, d: Dict[str, any]) -> PutAclResponse:
803
+ """Deserializes the PutAclResponse from a dictionary."""
804
+ return cls()
805
+
806
+
695
807
  @dataclass
696
808
  class PutSecret:
697
809
  scope: str
@@ -724,6 +836,20 @@ class PutSecret:
724
836
  string_value=d.get('string_value', None))
725
837
 
726
838
 
839
+ @dataclass
840
+ class PutSecretResponse:
841
+
842
+ def as_dict(self) -> dict:
843
+ """Serializes the PutSecretResponse into a dictionary suitable for use as a JSON request body."""
844
+ body = {}
845
+ return body
846
+
847
+ @classmethod
848
+ def from_dict(cls, d: Dict[str, any]) -> PutSecretResponse:
849
+ """Deserializes the PutSecretResponse from a dictionary."""
850
+ return cls()
851
+
852
+
727
853
  @dataclass
728
854
  class RepoAccessControlRequest:
729
855
  group_name: Optional[str] = None
@@ -1103,6 +1229,20 @@ class UpdateRepo:
1103
1229
  tag=d.get('tag', None))
1104
1230
 
1105
1231
 
1232
+ @dataclass
1233
+ class UpdateResponse:
1234
+
1235
+ def as_dict(self) -> dict:
1236
+ """Serializes the UpdateResponse into a dictionary suitable for use as a JSON request body."""
1237
+ body = {}
1238
+ return body
1239
+
1240
+ @classmethod
1241
+ def from_dict(cls, d: Dict[str, any]) -> UpdateResponse:
1242
+ """Deserializes the UpdateResponse from a dictionary."""
1243
+ return cls()
1244
+
1245
+
1106
1246
  @dataclass
1107
1247
  class WorkspaceObjectAccessControlRequest:
1108
1248
  group_name: Optional[str] = None
@@ -1320,6 +1460,7 @@ class GitCredentialsAPI:
1320
1460
  if git_username is not None: body['git_username'] = git_username
1321
1461
  if personal_access_token is not None: body['personal_access_token'] = personal_access_token
1322
1462
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1463
+
1323
1464
  res = self._api.do('POST', '/api/2.0/git-credentials', body=body, headers=headers)
1324
1465
  return CreateCredentialsResponse.from_dict(res)
1325
1466
 
@@ -1335,6 +1476,7 @@ class GitCredentialsAPI:
1335
1476
  """
1336
1477
 
1337
1478
  headers = {}
1479
+
1338
1480
  self._api.do('DELETE', f'/api/2.0/git-credentials/{credential_id}', headers=headers)
1339
1481
 
1340
1482
  def get(self, credential_id: int) -> CredentialInfo:
@@ -1349,6 +1491,7 @@ class GitCredentialsAPI:
1349
1491
  """
1350
1492
 
1351
1493
  headers = {'Accept': 'application/json', }
1494
+
1352
1495
  res = self._api.do('GET', f'/api/2.0/git-credentials/{credential_id}', headers=headers)
1353
1496
  return CredentialInfo.from_dict(res)
1354
1497
 
@@ -1361,6 +1504,7 @@ class GitCredentialsAPI:
1361
1504
  """
1362
1505
 
1363
1506
  headers = {'Accept': 'application/json', }
1507
+
1364
1508
  json = self._api.do('GET', '/api/2.0/git-credentials', headers=headers)
1365
1509
  parsed = GetCredentialsResponse.from_dict(json).credentials
1366
1510
  return parsed if parsed is not None else []
@@ -1393,6 +1537,7 @@ class GitCredentialsAPI:
1393
1537
  if git_username is not None: body['git_username'] = git_username
1394
1538
  if personal_access_token is not None: body['personal_access_token'] = personal_access_token
1395
1539
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1540
+
1396
1541
  self._api.do('PATCH', f'/api/2.0/git-credentials/{credential_id}', body=body, headers=headers)
1397
1542
 
1398
1543
 
@@ -1441,6 +1586,7 @@ class ReposAPI:
1441
1586
  if sparse_checkout is not None: body['sparse_checkout'] = sparse_checkout.as_dict()
1442
1587
  if url is not None: body['url'] = url
1443
1588
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1589
+
1444
1590
  res = self._api.do('POST', '/api/2.0/repos', body=body, headers=headers)
1445
1591
  return RepoInfo.from_dict(res)
1446
1592
 
@@ -1456,6 +1602,7 @@ class ReposAPI:
1456
1602
  """
1457
1603
 
1458
1604
  headers = {}
1605
+
1459
1606
  self._api.do('DELETE', f'/api/2.0/repos/{repo_id}', headers=headers)
1460
1607
 
1461
1608
  def get(self, repo_id: int) -> RepoInfo:
@@ -1470,6 +1617,7 @@ class ReposAPI:
1470
1617
  """
1471
1618
 
1472
1619
  headers = {'Accept': 'application/json', }
1620
+
1473
1621
  res = self._api.do('GET', f'/api/2.0/repos/{repo_id}', headers=headers)
1474
1622
  return RepoInfo.from_dict(res)
1475
1623
 
@@ -1485,6 +1633,7 @@ class ReposAPI:
1485
1633
  """
1486
1634
 
1487
1635
  headers = {'Accept': 'application/json', }
1636
+
1488
1637
  res = self._api.do('GET', f'/api/2.0/permissions/repos/{repo_id}/permissionLevels', headers=headers)
1489
1638
  return GetRepoPermissionLevelsResponse.from_dict(res)
1490
1639
 
@@ -1500,6 +1649,7 @@ class ReposAPI:
1500
1649
  """
1501
1650
 
1502
1651
  headers = {'Accept': 'application/json', }
1652
+
1503
1653
  res = self._api.do('GET', f'/api/2.0/permissions/repos/{repo_id}', headers=headers)
1504
1654
  return RepoPermissions.from_dict(res)
1505
1655
 
@@ -1554,6 +1704,7 @@ class ReposAPI:
1554
1704
  if access_control_list is not None:
1555
1705
  body['access_control_list'] = [v.as_dict() for v in access_control_list]
1556
1706
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1707
+
1557
1708
  res = self._api.do('PUT', f'/api/2.0/permissions/repos/{repo_id}', body=body, headers=headers)
1558
1709
  return RepoPermissions.from_dict(res)
1559
1710
 
@@ -1587,6 +1738,7 @@ class ReposAPI:
1587
1738
  if sparse_checkout is not None: body['sparse_checkout'] = sparse_checkout.as_dict()
1588
1739
  if tag is not None: body['tag'] = tag
1589
1740
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1741
+
1590
1742
  self._api.do('PATCH', f'/api/2.0/repos/{repo_id}', body=body, headers=headers)
1591
1743
 
1592
1744
  def update_permissions(
@@ -1608,6 +1760,7 @@ class ReposAPI:
1608
1760
  if access_control_list is not None:
1609
1761
  body['access_control_list'] = [v.as_dict() for v in access_control_list]
1610
1762
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1763
+
1611
1764
  res = self._api.do('PATCH', f'/api/2.0/permissions/repos/{repo_id}', body=body, headers=headers)
1612
1765
  return RepoPermissions.from_dict(res)
1613
1766
 
@@ -1635,7 +1788,7 @@ class SecretsAPI:
1635
1788
  """Create a new secret scope.
1636
1789
 
1637
1790
  The scope name must consist of alphanumeric characters, dashes, underscores, and periods, and may not
1638
- exceed 128 characters. The maximum number of scopes in a workspace is 100.
1791
+ exceed 128 characters.
1639
1792
 
1640
1793
  :param scope: str
1641
1794
  Scope name requested by the user. Scope names are unique.
@@ -1655,6 +1808,7 @@ class SecretsAPI:
1655
1808
  if scope is not None: body['scope'] = scope
1656
1809
  if scope_backend_type is not None: body['scope_backend_type'] = scope_backend_type.value
1657
1810
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1811
+
1658
1812
  self._api.do('POST', '/api/2.0/secrets/scopes/create', body=body, headers=headers)
1659
1813
 
1660
1814
  def delete_acl(self, scope: str, principal: str):
@@ -1677,6 +1831,7 @@ class SecretsAPI:
1677
1831
  if principal is not None: body['principal'] = principal
1678
1832
  if scope is not None: body['scope'] = scope
1679
1833
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1834
+
1680
1835
  self._api.do('POST', '/api/2.0/secrets/acls/delete', body=body, headers=headers)
1681
1836
 
1682
1837
  def delete_scope(self, scope: str):
@@ -1695,6 +1850,7 @@ class SecretsAPI:
1695
1850
  body = {}
1696
1851
  if scope is not None: body['scope'] = scope
1697
1852
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1853
+
1698
1854
  self._api.do('POST', '/api/2.0/secrets/scopes/delete', body=body, headers=headers)
1699
1855
 
1700
1856
  def delete_secret(self, scope: str, key: str):
@@ -1717,6 +1873,7 @@ class SecretsAPI:
1717
1873
  if key is not None: body['key'] = key
1718
1874
  if scope is not None: body['scope'] = scope
1719
1875
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
1876
+
1720
1877
  self._api.do('POST', '/api/2.0/secrets/delete', body=body, headers=headers)
1721
1878
 
1722
1879
  def get_acl(self, scope: str, principal: str) -> AclItem:
@@ -1740,6 +1897,7 @@ class SecretsAPI:
1740
1897
  if principal is not None: query['principal'] = principal
1741
1898
  if scope is not None: query['scope'] = scope
1742
1899
  headers = {'Accept': 'application/json', }
1900
+
1743
1901
  res = self._api.do('GET', '/api/2.0/secrets/acls/get', query=query, headers=headers)
1744
1902
  return AclItem.from_dict(res)
1745
1903
 
@@ -1768,6 +1926,7 @@ class SecretsAPI:
1768
1926
  if key is not None: query['key'] = key
1769
1927
  if scope is not None: query['scope'] = scope
1770
1928
  headers = {'Accept': 'application/json', }
1929
+
1771
1930
  res = self._api.do('GET', '/api/2.0/secrets/get', query=query, headers=headers)
1772
1931
  return GetSecretResponse.from_dict(res)
1773
1932
 
@@ -1788,6 +1947,7 @@ class SecretsAPI:
1788
1947
  query = {}
1789
1948
  if scope is not None: query['scope'] = scope
1790
1949
  headers = {'Accept': 'application/json', }
1950
+
1791
1951
  json = self._api.do('GET', '/api/2.0/secrets/acls/list', query=query, headers=headers)
1792
1952
  parsed = ListAclsResponse.from_dict(json).items
1793
1953
  return parsed if parsed is not None else []
@@ -1803,6 +1963,7 @@ class SecretsAPI:
1803
1963
  """
1804
1964
 
1805
1965
  headers = {'Accept': 'application/json', }
1966
+
1806
1967
  json = self._api.do('GET', '/api/2.0/secrets/scopes/list', headers=headers)
1807
1968
  parsed = ListScopesResponse.from_dict(json).scopes
1808
1969
  return parsed if parsed is not None else []
@@ -1826,6 +1987,7 @@ class SecretsAPI:
1826
1987
  query = {}
1827
1988
  if scope is not None: query['scope'] = scope
1828
1989
  headers = {'Accept': 'application/json', }
1990
+
1829
1991
  json = self._api.do('GET', '/api/2.0/secrets/list', query=query, headers=headers)
1830
1992
  parsed = ListSecretsResponse.from_dict(json).secrets
1831
1993
  return parsed if parsed is not None else []
@@ -1872,6 +2034,7 @@ class SecretsAPI:
1872
2034
  if principal is not None: body['principal'] = principal
1873
2035
  if scope is not None: body['scope'] = scope
1874
2036
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
2037
+
1875
2038
  self._api.do('POST', '/api/2.0/secrets/acls/put', body=body, headers=headers)
1876
2039
 
1877
2040
  def put_secret(self,
@@ -1915,6 +2078,7 @@ class SecretsAPI:
1915
2078
  if scope is not None: body['scope'] = scope
1916
2079
  if string_value is not None: body['string_value'] = string_value
1917
2080
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
2081
+
1918
2082
  self._api.do('POST', '/api/2.0/secrets/put', body=body, headers=headers)
1919
2083
 
1920
2084
 
@@ -1950,6 +2114,7 @@ class WorkspaceAPI:
1950
2114
  if path is not None: body['path'] = path
1951
2115
  if recursive is not None: body['recursive'] = recursive
1952
2116
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
2117
+
1953
2118
  self._api.do('POST', '/api/2.0/workspace/delete', body=body, headers=headers)
1954
2119
 
1955
2120
  def export(self, path: str, *, format: Optional[ExportFormat] = None) -> ExportResponse:
@@ -1984,6 +2149,7 @@ class WorkspaceAPI:
1984
2149
  if format is not None: query['format'] = format.value
1985
2150
  if path is not None: query['path'] = path
1986
2151
  headers = {'Accept': 'application/json', }
2152
+
1987
2153
  res = self._api.do('GET', '/api/2.0/workspace/export', query=query, headers=headers)
1988
2154
  return ExportResponse.from_dict(res)
1989
2155
 
@@ -2002,6 +2168,7 @@ class WorkspaceAPI:
2002
2168
  """
2003
2169
 
2004
2170
  headers = {'Accept': 'application/json', }
2171
+
2005
2172
  res = self._api.do(
2006
2173
  'GET',
2007
2174
  f'/api/2.0/permissions/{workspace_object_type}/{workspace_object_id}/permissionLevels',
@@ -2024,6 +2191,7 @@ class WorkspaceAPI:
2024
2191
  """
2025
2192
 
2026
2193
  headers = {'Accept': 'application/json', }
2194
+
2027
2195
  res = self._api.do('GET',
2028
2196
  f'/api/2.0/permissions/{workspace_object_type}/{workspace_object_id}',
2029
2197
  headers=headers)
@@ -2044,6 +2212,7 @@ class WorkspaceAPI:
2044
2212
  query = {}
2045
2213
  if path is not None: query['path'] = path
2046
2214
  headers = {'Accept': 'application/json', }
2215
+
2047
2216
  res = self._api.do('GET', '/api/2.0/workspace/get-status', query=query, headers=headers)
2048
2217
  return ObjectInfo.from_dict(res)
2049
2218
 
@@ -2096,6 +2265,7 @@ class WorkspaceAPI:
2096
2265
  if overwrite is not None: body['overwrite'] = overwrite
2097
2266
  if path is not None: body['path'] = path
2098
2267
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
2268
+
2099
2269
  self._api.do('POST', '/api/2.0/workspace/import', body=body, headers=headers)
2100
2270
 
2101
2271
  def list(self, path: str, *, notebooks_modified_after: Optional[int] = None) -> Iterator[ObjectInfo]:
@@ -2116,6 +2286,7 @@ class WorkspaceAPI:
2116
2286
  if notebooks_modified_after is not None: query['notebooks_modified_after'] = notebooks_modified_after
2117
2287
  if path is not None: query['path'] = path
2118
2288
  headers = {'Accept': 'application/json', }
2289
+
2119
2290
  json = self._api.do('GET', '/api/2.0/workspace/list', query=query, headers=headers)
2120
2291
  parsed = ListResponse.from_dict(json).objects
2121
2292
  return parsed if parsed is not None else []
@@ -2139,6 +2310,7 @@ class WorkspaceAPI:
2139
2310
  body = {}
2140
2311
  if path is not None: body['path'] = path
2141
2312
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
2313
+
2142
2314
  self._api.do('POST', '/api/2.0/workspace/mkdirs', body=body, headers=headers)
2143
2315
 
2144
2316
  def set_permissions(
@@ -2165,6 +2337,7 @@ class WorkspaceAPI:
2165
2337
  if access_control_list is not None:
2166
2338
  body['access_control_list'] = [v.as_dict() for v in access_control_list]
2167
2339
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
2340
+
2168
2341
  res = self._api.do('PUT',
2169
2342
  f'/api/2.0/permissions/{workspace_object_type}/{workspace_object_id}',
2170
2343
  body=body,
@@ -2195,6 +2368,7 @@ class WorkspaceAPI:
2195
2368
  if access_control_list is not None:
2196
2369
  body['access_control_list'] = [v.as_dict() for v in access_control_list]
2197
2370
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
2371
+
2198
2372
  res = self._api.do('PATCH',
2199
2373
  f'/api/2.0/permissions/{workspace_object_type}/{workspace_object_id}',
2200
2374
  body=body,
databricks/sdk/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = '0.19.1'
1
+ __version__ = '0.21.0'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: databricks-sdk
3
- Version: 0.19.1
3
+ Version: 0.21.0
4
4
  Summary: Databricks SDK for Python (Beta)
5
5
  Home-page: https://databricks-sdk-py.readthedocs.io
6
6
  Author: Serge Smertin
@@ -28,6 +28,7 @@ Requires-Dist: google-auth (~=2.0)
28
28
  Requires-Dist: requests (<3,>=2.28.1)
29
29
  Provides-Extra: dev
30
30
  Requires-Dist: autoflake ; extra == 'dev'
31
+ Requires-Dist: databricks-connect ; extra == 'dev'
31
32
  Requires-Dist: ipython ; extra == 'dev'
32
33
  Requires-Dist: ipywidgets ; extra == 'dev'
33
34
  Requires-Dist: isort ; extra == 'dev'
@@ -51,6 +52,7 @@ Requires-Dist: ipywidgets (<9,>=8) ; extra == 'notebook'
51
52
  [![databricks-sdk](https://snyk.io/advisor/python/databricks-sdk/badge.svg)](https://snyk.io/advisor/python/databricks-sdk)
52
53
  ![PyPI](https://img.shields.io/pypi/v/databricks-sdk)
53
54
  [![codecov](https://codecov.io/gh/databricks/databricks-sdk-py/branch/main/graph/badge.svg?token=GU63K7WDBE)](https://codecov.io/gh/databricks/databricks-sdk-py)
55
+ [![lines of code](https://tokei.rs/b1/github/databricks/databricks-sdk-py)]([https://codecov.io/github/databricks/databricks-sdk-py](https://github.com/databricks/databricks-sdk-py))
54
56
 
55
57
  [Beta](https://docs.databricks.com/release-notes/release-types.html): This SDK is supported for production use cases,
56
58
  but we do expect future releases to have some interface changes; see [Interface stability](#interface-stability).
@@ -0,0 +1,53 @@
1
+ databricks/__init__.py,sha256=CF2MJcZFwbpn9TwQER8qnCDhkPooBGQNVkX4v7g6p3g,537
2
+ databricks/sdk/__init__.py,sha256=hfX1Qm45NJT90JCLIQLt78oZYahCcDqCYOrE4tHRJxQ,39853
3
+ databricks/sdk/azure.py,sha256=92fNK4CmQGs-pCTA9r7Anv7u_84l79Q5uQ9m1HugChk,2299
4
+ databricks/sdk/casing.py,sha256=NKYPrfPbQjM7lU4hhNQK3z1jb_VEA29BfH4FEdby2tg,1137
5
+ databricks/sdk/clock.py,sha256=Ivlow0r_TkXcTJ8UXkxSA0czKrY0GvwHAeOvjPkJnAQ,1360
6
+ databricks/sdk/config.py,sha256=mvnjRaeYf6gspfA9Tz2UCB9Ty7ZKbX-4FmdGBXPN9nk,18971
7
+ databricks/sdk/core.py,sha256=L2VRtBTqWY4z-QPKM-TWhisUDA9xAtNm57GORN-gmMw,18549
8
+ databricks/sdk/credentials_provider.py,sha256=zLmXLbt6zDS-P4jRBiS9if6QQGOea2CZn3fUrmJuJLY,26255
9
+ databricks/sdk/dbutils.py,sha256=k-3ENkdUQwWQqX6g59OpezY3cT7TQqafVnXAtUHBjIg,12947
10
+ databricks/sdk/environments.py,sha256=gStDfgI07ECd6Pb82Rf-nRjf48NH6hOY3UfTXm4YNZ4,2861
11
+ databricks/sdk/oauth.py,sha256=jqe0yrrTUfRL8kpR21Odwn4R_X6Ns-hTLu3dKYDI1EM,18313
12
+ databricks/sdk/py.typed,sha256=pSvaHpbY1UPNEXyVFUjlgBhjPFZMmVC_UNrPC7eMOHI,74
13
+ databricks/sdk/retries.py,sha256=WgLh12bwdBc6fCQlaig3kKu18cVhPzFDGsspvq629Ew,2454
14
+ databricks/sdk/version.py,sha256=UAuTYiKF41yTa-lG-LD9UUArhXc4aZ6bJs_6sGq2BuU,23
15
+ databricks/sdk/_widgets/__init__.py,sha256=Qm3JB8LmdPgEn_-VgxKkodTO4gn6OdaDPwsYcDmeIRI,2667
16
+ databricks/sdk/_widgets/default_widgets_utils.py,sha256=Rk59AFzVYVpOektB_yC_7j-vSt5OdtZA85IlG0kw0xA,1202
17
+ databricks/sdk/_widgets/ipywidgets_utils.py,sha256=P-AyGeahPiX3S59mxpAMgffi4gyJ0irEOY7Ekkn9nQ0,2850
18
+ databricks/sdk/errors/__init__.py,sha256=2X1j1rPSfgx0ryqDoMGTobTcnOaKqw-JIWhlpv7LH2E,123
19
+ databricks/sdk/errors/base.py,sha256=7bEBt-sOSNgL9EwSz87k_tZrwOfHdW3xfxxLHNdx_J4,2245
20
+ databricks/sdk/errors/mapper.py,sha256=6z_FLNr1bFGowstp45gHumCaBAf8Sdr4V-qmcxrguSI,927
21
+ databricks/sdk/errors/platform.py,sha256=dpD97-YcjXTqOwWg2XulFzdyb8qufN14PyU1FdukpF8,3017
22
+ databricks/sdk/errors/sdk.py,sha256=_euMruhvquB0v_SKtgqxJUiyXHWuTb4Jl7ji6_h0E_A,109
23
+ databricks/sdk/mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
+ databricks/sdk/mixins/compute.py,sha256=j5Pa0ufm97YGZPxzjALWYlH52XDTsIbF1kMJ2OYLBE8,11131
25
+ databricks/sdk/mixins/files.py,sha256=BnG665KY-pUqFqv91pVSUqVwA_iQUCZkVN4kh--l0uc,13256
26
+ databricks/sdk/mixins/workspace.py,sha256=dWMNvuEi8jJ5wMhrDt1LiqxNdWSsmEuDTzrcZR-eJzY,4896
27
+ databricks/sdk/runtime/__init__.py,sha256=9NnZkBzeZXZRQxcE1qKzAszQEzcpIgpL7lQzW3_kxEU,7266
28
+ databricks/sdk/runtime/dbutils_stub.py,sha256=UFbRZF-bBcwxjbv_pxma00bjNtktLLaYpo8oHRc4-9g,11421
29
+ databricks/sdk/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ databricks/sdk/service/_internal.py,sha256=VvKT8sYgF8aVYp-nxS2s8QYc8GhhQvI3IcFJZJx1g50,1841
31
+ databricks/sdk/service/billing.py,sha256=Hbe5bMsBrpebuAl8yj-GwVRGktrzKwiZJj3gq1wUMaI,50625
32
+ databricks/sdk/service/catalog.py,sha256=CrkICSlsFrwyDREWBZ08oKFypx1o64KxlEvVmcRJQQ8,394045
33
+ databricks/sdk/service/compute.py,sha256=fEDhQfFiycLWpOBz6ALhLXGvnNYVFsZvMlPm0j0lXpU,395632
34
+ databricks/sdk/service/dashboards.py,sha256=Dx_CTKVPCm6u9DUatr1w9S3sjbZPJH0_SNjqP2t8cjw,3497
35
+ databricks/sdk/service/files.py,sha256=myqpOOxwIaGwcepukUgV7QDhhZ-pHJg-SDvHU4NFX30,37599
36
+ databricks/sdk/service/iam.py,sha256=cYGRQIik2odwYzj1rmsGuUk5_Z_hKdHgI_yTSieHPuM,147437
37
+ databricks/sdk/service/jobs.py,sha256=BmWC-6_xHZjQmM0BQAlObfe2BHzBsD0nxyS5OykRfCs,285521
38
+ databricks/sdk/service/ml.py,sha256=vohBdESClI3EOpO-ZZ44W-CMz1alq5Tw4oJnWa99Z2M,236128
39
+ databricks/sdk/service/oauth2.py,sha256=zpEA7glY_EsPvMgkk-hmt4eVgrmtcSGgduI7XlShNUo,36215
40
+ databricks/sdk/service/pipelines.py,sha256=2Kum7q_4hVZcEaww2c0NLJj0Fbe9G0BGsF71JKDCvv8,101546
41
+ databricks/sdk/service/provisioning.py,sha256=DP4Df4X-p0JEUk4zAJQhjX_wxpMi673OKLXFhxl6YSE,142678
42
+ databricks/sdk/service/serving.py,sha256=KpPQ7IpaIm6rud2QJjhNlH5A2xQyXD2gnmwtQF80Kho,130368
43
+ databricks/sdk/service/settings.py,sha256=zpr1VeOFIdRJDecOweZ3oQpjKh2N2plAL40B4ci5OaQ,176536
44
+ databricks/sdk/service/sharing.py,sha256=nlDZPzZvj-FQVFxr1dByu7KY5AkVbAqq7LNqaNBGf_E,97807
45
+ databricks/sdk/service/sql.py,sha256=ugwmcd0aspfWIZnBtDebrHbbXL5kmeq6TKbeDBPUT3o,256288
46
+ databricks/sdk/service/vectorsearch.py,sha256=p8PIx6cKjko-kaHoKXpIvMc56r6qiQUIz1gDskPsrys,51124
47
+ databricks/sdk/service/workspace.py,sha256=Cc_fgKbZ5phzdjg7ryM-6uoVQ_ug3h4rhzQJFyk0RBM,96837
48
+ databricks_sdk-0.21.0.dist-info/LICENSE,sha256=afBgTZo-JsYqj4VOjnejBetMuHKcFR30YobDdpVFkqY,11411
49
+ databricks_sdk-0.21.0.dist-info/METADATA,sha256=_IMSZLdGbdK36yCz6ir3LVtDQGugCMDme9U265YruG0,34642
50
+ databricks_sdk-0.21.0.dist-info/NOTICE,sha256=Qnc0m8JjZNTDV80y0h1aJGvsr4GqM63m1nr2VTypg6E,963
51
+ databricks_sdk-0.21.0.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
52
+ databricks_sdk-0.21.0.dist-info/top_level.txt,sha256=7kRdatoSgU0EUurRQJ_3F1Nv4EOSHWAr6ng25tJOJKU,11
53
+ databricks_sdk-0.21.0.dist-info/RECORD,,
@@ -1,48 +0,0 @@
1
- from pyspark.sql.context import SQLContext
2
- from pyspark.sql.functions import udf as U
3
- from pyspark.sql.session import SparkSession
4
-
5
- udf = U
6
- spark: SparkSession
7
- sc = spark.sparkContext
8
- sqlContext: SQLContext
9
- sql = sqlContext.sql
10
- table = sqlContext.table
11
-
12
-
13
- def displayHTML(html):
14
- """
15
- Display HTML data.
16
- Parameters
17
- ----------
18
- data : URL or HTML string
19
- If data is a URL, display the resource at that URL, the resource is loaded dynamically by the browser.
20
- Otherwise data should be the HTML to be displayed.
21
- See also:
22
- IPython.display.HTML
23
- IPython.display.display_html
24
- """
25
- ...
26
-
27
-
28
- def display(input=None, *args, **kwargs):
29
- """
30
- Display plots or data.
31
- Display plot:
32
- - display() # no-op
33
- - display(matplotlib.figure.Figure)
34
- Display dataset:
35
- - display(spark.DataFrame)
36
- - display(list) # if list can be converted to DataFrame, e.g., list of named tuples
37
- - display(pandas.DataFrame)
38
- - display(koalas.DataFrame)
39
- - display(pyspark.pandas.DataFrame)
40
- Display any other value that has a _repr_html_() method
41
- For Spark 2.0 and 2.1:
42
- - display(DataFrame, streamName='optional', trigger=optional pyspark.sql.streaming.Trigger,
43
- checkpointLocation='optional')
44
- For Spark 2.2+:
45
- - display(DataFrame, streamName='optional', trigger=optional interval like '1 second',
46
- checkpointLocation='optional')
47
- """
48
- ...
@@ -1,54 +0,0 @@
1
- databricks/__init__.py,sha256=CF2MJcZFwbpn9TwQER8qnCDhkPooBGQNVkX4v7g6p3g,537
2
- databricks/sdk/__init__.py,sha256=GGRZwC0h_FjzZoY45bA86JNUauBWuOdIsCwNikmJ3gI,38684
3
- databricks/sdk/azure.py,sha256=92fNK4CmQGs-pCTA9r7Anv7u_84l79Q5uQ9m1HugChk,2299
4
- databricks/sdk/casing.py,sha256=NKYPrfPbQjM7lU4hhNQK3z1jb_VEA29BfH4FEdby2tg,1137
5
- databricks/sdk/clock.py,sha256=Ivlow0r_TkXcTJ8UXkxSA0czKrY0GvwHAeOvjPkJnAQ,1360
6
- databricks/sdk/config.py,sha256=3XdKDuKmPxrSRor7sZRE3XZ0nNNL01lSOChDf2h7q4o,18937
7
- databricks/sdk/core.py,sha256=yHtgGdB2SqEWXlujTTYY2d75EfqcAbHO6KpSG8TmWMc,18512
8
- databricks/sdk/credentials_provider.py,sha256=zLmXLbt6zDS-P4jRBiS9if6QQGOea2CZn3fUrmJuJLY,26255
9
- databricks/sdk/dbutils.py,sha256=k-3ENkdUQwWQqX6g59OpezY3cT7TQqafVnXAtUHBjIg,12947
10
- databricks/sdk/environments.py,sha256=gStDfgI07ECd6Pb82Rf-nRjf48NH6hOY3UfTXm4YNZ4,2861
11
- databricks/sdk/oauth.py,sha256=xSk2js5RaKkp4HY0ZAzIpA7Y73KFVwtGItmpoRJyEy8,18338
12
- databricks/sdk/py.typed,sha256=pSvaHpbY1UPNEXyVFUjlgBhjPFZMmVC_UNrPC7eMOHI,74
13
- databricks/sdk/retries.py,sha256=WgLh12bwdBc6fCQlaig3kKu18cVhPzFDGsspvq629Ew,2454
14
- databricks/sdk/version.py,sha256=aT4qjVYyx7Okb2myoMvgkyzvdYr5Ydlul8fdz-mEKTM,23
15
- databricks/sdk/_widgets/__init__.py,sha256=tm1Qv6j_l9zDZ2fVb83-kRI68jLW8cJRKrVSsy1iQWo,2669
16
- databricks/sdk/_widgets/default_widgets_utils.py,sha256=Rk59AFzVYVpOektB_yC_7j-vSt5OdtZA85IlG0kw0xA,1202
17
- databricks/sdk/_widgets/ipywidgets_utils.py,sha256=P-AyGeahPiX3S59mxpAMgffi4gyJ0irEOY7Ekkn9nQ0,2850
18
- databricks/sdk/errors/__init__.py,sha256=2X1j1rPSfgx0ryqDoMGTobTcnOaKqw-JIWhlpv7LH2E,123
19
- databricks/sdk/errors/base.py,sha256=7bEBt-sOSNgL9EwSz87k_tZrwOfHdW3xfxxLHNdx_J4,2245
20
- databricks/sdk/errors/mapper.py,sha256=6z_FLNr1bFGowstp45gHumCaBAf8Sdr4V-qmcxrguSI,927
21
- databricks/sdk/errors/platform.py,sha256=dpD97-YcjXTqOwWg2XulFzdyb8qufN14PyU1FdukpF8,3017
22
- databricks/sdk/errors/sdk.py,sha256=_euMruhvquB0v_SKtgqxJUiyXHWuTb4Jl7ji6_h0E_A,109
23
- databricks/sdk/mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- databricks/sdk/mixins/compute.py,sha256=j5Pa0ufm97YGZPxzjALWYlH52XDTsIbF1kMJ2OYLBE8,11131
25
- databricks/sdk/mixins/files.py,sha256=BnG665KY-pUqFqv91pVSUqVwA_iQUCZkVN4kh--l0uc,13256
26
- databricks/sdk/mixins/workspace.py,sha256=p-g06qatuGVaeVe1RapLlKKdp3tKn8SeLQbWqIahDUk,4856
27
- databricks/sdk/runtime/__init__.py,sha256=QM2dZK0xU2hvQsBw6WMCGtzJdLAj-lzLtxN1hYAuX3s,3591
28
- databricks/sdk/runtime/dbutils_stub.py,sha256=-kiNS2Mn8lGahJ3r5S-qsrqRdivRrbTp2f_wx-sECMw,11404
29
- databricks/sdk/runtime/stub.py,sha256=S9I9CkHcMHoYKrgft4NzC0uu7odNu_N2nHDsGAvFVJc,1676
30
- databricks/sdk/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
- databricks/sdk/service/_internal.py,sha256=79IeS-DAwfkHEIKWYek-7ZxrCRCk0SXtRezJrgKSPFc,1837
32
- databricks/sdk/service/billing.py,sha256=NTDZ3ujJo7Qk0ahXe6zEOKWl1M2a0WAizpXUBG-W8Uo,49040
33
- databricks/sdk/service/catalog.py,sha256=fyKDuct9nkp8ti-8m0z0ro15nOeaZm7wD0qEaoCjUVw,367888
34
- databricks/sdk/service/compute.py,sha256=kaHtdlXO5PmJeOnlEOm9JoXy0wWiTTJx2oqPTy3ld30,385984
35
- databricks/sdk/service/dashboards.py,sha256=2hSwCGqizskSJLyA71UrUqxbB68tldAV7eyV3MTxUC0,3119
36
- databricks/sdk/service/files.py,sha256=-yVGEaDhIMdBJ1ndJ8gbxfVnGXx22Tx6x55KRpktGfc,27880
37
- databricks/sdk/service/iam.py,sha256=Wp0YQtY3U6HOK89B8x8zE9YvYrXtN50ySZfxRnI5n5w,141143
38
- databricks/sdk/service/jobs.py,sha256=qa85SMZikv4xEbtfjmV93FrJxB39cJVGM2cZwCS1TA0,282620
39
- databricks/sdk/service/ml.py,sha256=3rhYmtCyM7Xpvc-ki_sn3IWZqNQhbWOfOjUjyVc6ghk,226046
40
- databricks/sdk/service/oauth2.py,sha256=N1cKI-nfmSlOThTMfvLmGEQ0k9rW37fnviQ6XLBq41Y,34025
41
- databricks/sdk/service/pipelines.py,sha256=0vYrct76HVgKXOqg0Cn5nDHpr6Zl2JJmYioIdTFGRR8,99814
42
- databricks/sdk/service/provisioning.py,sha256=vmuGk5YTwmMTw6Sv1MPYaw2K9pyegTAUqSQhiy5x0r8,140932
43
- databricks/sdk/service/serving.py,sha256=WH7VPZxXiPMTJUxI0WRNMBQW7gGJe4fRb6gTuMMcEwg,127864
44
- databricks/sdk/service/settings.py,sha256=q_9XfhF8iYBmSEaa9Li954GRLIWlM3VrtLuB2qafTCY,125962
45
- databricks/sdk/service/sharing.py,sha256=wk0SpqnlQQf-rAizxRH2wswDrGU40kH2QUZ7Yy-36_Q,96411
46
- databricks/sdk/service/sql.py,sha256=ceW0vg_LWX5o8r00LBF8px8o_T6IVqP1UlCPFk0hPro,250354
47
- databricks/sdk/service/vectorsearch.py,sha256=dpAR2O69J67JviWW27QYc5nLnSZUmKp0PgtowpEuITA,50099
48
- databricks/sdk/service/workspace.py,sha256=qeArqeM77WohyZhNVbj3vxDOCmOxx_fudP5Fu_9840E,93037
49
- databricks_sdk-0.19.1.dist-info/LICENSE,sha256=afBgTZo-JsYqj4VOjnejBetMuHKcFR30YobDdpVFkqY,11411
50
- databricks_sdk-0.19.1.dist-info/METADATA,sha256=FR638x-B3nw71Oa3qkYzEt1X1X1UtcSykZ7xi-1oKn8,34408
51
- databricks_sdk-0.19.1.dist-info/NOTICE,sha256=Qnc0m8JjZNTDV80y0h1aJGvsr4GqM63m1nr2VTypg6E,963
52
- databricks_sdk-0.19.1.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
53
- databricks_sdk-0.19.1.dist-info/top_level.txt,sha256=7kRdatoSgU0EUurRQJ_3F1Nv4EOSHWAr6ng25tJOJKU,11
54
- databricks_sdk-0.19.1.dist-info/RECORD,,