databricks-sdk 0.1.0__py3-none-any.whl → 0.1.1__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.
- databricks/sdk/core.py +7 -2
- databricks/sdk/oauth.py +24 -13
- databricks/sdk/version.py +1 -1
- {databricks_sdk-0.1.0.dist-info → databricks_sdk-0.1.1.dist-info}/METADATA +3 -1
- {databricks_sdk-0.1.0.dist-info → databricks_sdk-0.1.1.dist-info}/RECORD +9 -9
- {databricks_sdk-0.1.0.dist-info → databricks_sdk-0.1.1.dist-info}/LICENSE +0 -0
- {databricks_sdk-0.1.0.dist-info → databricks_sdk-0.1.1.dist-info}/NOTICE +0 -0
- {databricks_sdk-0.1.0.dist-info → databricks_sdk-0.1.1.dist-info}/WHEEL +0 -0
- {databricks_sdk-0.1.0.dist-info → databricks_sdk-0.1.1.dist-info}/top_level.txt +0 -0
databricks/sdk/core.py
CHANGED
|
@@ -114,7 +114,9 @@ def oauth_service_principal(cfg: 'Config') -> Optional[HeaderFactory]:
|
|
|
114
114
|
def external_browser(cfg: 'Config') -> Optional[HeaderFactory]:
|
|
115
115
|
if cfg.auth_type != 'external-browser':
|
|
116
116
|
return None
|
|
117
|
-
if cfg.
|
|
117
|
+
if cfg.client_id:
|
|
118
|
+
client_id = cfg.client_id
|
|
119
|
+
elif cfg.is_aws:
|
|
118
120
|
client_id = 'databricks-cli'
|
|
119
121
|
elif cfg.is_azure:
|
|
120
122
|
# Use Azure AD app for cases when Azure CLI is not available on the machine.
|
|
@@ -123,7 +125,10 @@ def external_browser(cfg: 'Config') -> Optional[HeaderFactory]:
|
|
|
123
125
|
client_id = '6128a518-99a9-425b-8333-4cc94f04cacd'
|
|
124
126
|
else:
|
|
125
127
|
raise ValueError(f'local browser SSO is not supported')
|
|
126
|
-
oauth_client = OAuthClient(cfg.host,
|
|
128
|
+
oauth_client = OAuthClient(host=cfg.host,
|
|
129
|
+
client_id=client_id,
|
|
130
|
+
redirect_url='http://localhost:8020',
|
|
131
|
+
client_secret=cfg.client_secret)
|
|
127
132
|
consent = oauth_client.initiate_consent()
|
|
128
133
|
if not consent:
|
|
129
134
|
return None
|
databricks/sdk/oauth.py
CHANGED
|
@@ -15,6 +15,10 @@ from typing import Any, Dict, List
|
|
|
15
15
|
import requests
|
|
16
16
|
import requests.auth
|
|
17
17
|
|
|
18
|
+
# Error code for PKCE flow in Azure Active Directory, that gets additional retry.
|
|
19
|
+
# See https://stackoverflow.com/a/75466778/277035 for more info
|
|
20
|
+
NO_ORIGIN_FOR_SPA_CLIENT_ERROR = 'AADSTS9002327'
|
|
21
|
+
|
|
18
22
|
logger = logging.getLogger(__name__)
|
|
19
23
|
|
|
20
24
|
|
|
@@ -240,23 +244,30 @@ class Consent:
|
|
|
240
244
|
if self._state != state:
|
|
241
245
|
raise ValueError('state mismatch')
|
|
242
246
|
params = {
|
|
247
|
+
'redirect_uri': self._client.redirect_url,
|
|
243
248
|
'grant_type': 'authorization_code',
|
|
244
|
-
'code': code,
|
|
245
249
|
'code_verifier': self._verifier,
|
|
246
|
-
'
|
|
250
|
+
'code': code
|
|
247
251
|
}
|
|
248
252
|
headers = {}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
253
|
+
while True:
|
|
254
|
+
try:
|
|
255
|
+
token = retrieve_token(client_id=self._client.client_id,
|
|
256
|
+
client_secret=self._client.client_secret,
|
|
257
|
+
token_url=self._client.token_url,
|
|
258
|
+
params=params,
|
|
259
|
+
headers=headers,
|
|
260
|
+
use_params=True)
|
|
261
|
+
return RefreshableCredentials(self._client, token)
|
|
262
|
+
except ValueError as e:
|
|
263
|
+
if NO_ORIGIN_FOR_SPA_CLIENT_ERROR in str(e):
|
|
264
|
+
# Retry in cases of 'Single-Page Application' client-type with
|
|
265
|
+
# 'Origin' header equal to client's redirect URL.
|
|
266
|
+
headers['Origin'] = self._client.redirect_url
|
|
267
|
+
msg = f'Retrying OAuth token exchange with {self._client.redirect_url} origin'
|
|
268
|
+
logger.debug(msg)
|
|
269
|
+
continue
|
|
270
|
+
raise e
|
|
260
271
|
|
|
261
272
|
|
|
262
273
|
class OAuthClient:
|
databricks/sdk/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '0.1.
|
|
1
|
+
__version__ = '0.1.1'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: databricks-sdk
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Summary: Databricks SDK for Python (Experimental)
|
|
5
5
|
Home-page: https://github.com/databricks/databricks-sdk-py
|
|
6
6
|
Author: Serge Smertin
|
|
@@ -174,6 +174,8 @@ w = WorkspaceClient(host=input('Databricks Workspace URL: '),
|
|
|
174
174
|
azure_client_secret=input('AAD Client Secret: '))
|
|
175
175
|
```
|
|
176
176
|
|
|
177
|
+
Please see more examples in [this document](./docs/azure-ad.md).
|
|
178
|
+
|
|
177
179
|
### Overriding `.databrickscfg`
|
|
178
180
|
|
|
179
181
|
For [Databricks native authentication](#databricks-native-authentication), you can override the default behavior for using `.databrickscfg` as follows:
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
databricks/__init__.py,sha256=-1cBy2684NfMPosP7CE8LgIYlw8ve82AGkP1ZVp9M5A,260
|
|
2
2
|
databricks/sdk/__init__.py,sha256=5hL4sD2aCGU7BHQFpEz5DmME-xk7Yp5fCdjStNpFziM,12817
|
|
3
3
|
databricks/sdk/azure.py,sha256=2CljLtiyOnH-rUQcCSarbLsJd0zkil5f4vpjsSGzyxc,1656
|
|
4
|
-
databricks/sdk/core.py,sha256=
|
|
4
|
+
databricks/sdk/core.py,sha256=1AWSWam7aq-2xn2MNGMBVkxr1GqKNWznBEhzkrvOPOw,34311
|
|
5
5
|
databricks/sdk/dbconnect.py,sha256=mAqVSDSAIjuqy4oSsDbcKLWIgqDLEnWtXPlb133YYhQ,2616
|
|
6
6
|
databricks/sdk/dbutils.py,sha256=9lHGcXjRnIylWOSBFbioIym1JzVBo9of3laoXE7TvOA,11147
|
|
7
7
|
databricks/sdk/errors.py,sha256=SBy7QvNgGKzEg0j-zuyNpaiuChwx93DeKbya5MNftGc,94
|
|
8
|
-
databricks/sdk/oauth.py,sha256=
|
|
9
|
-
databricks/sdk/version.py,sha256=
|
|
8
|
+
databricks/sdk/oauth.py,sha256=0RHrbxbPvVEE_kFrSPigzgYQdqZr79aDJRE1q0IdsEs,13981
|
|
9
|
+
databricks/sdk/version.py,sha256=ls1camlIoMxEZz9gSkZ1OJo-MXqHWwKPtdPbZJmwp7E,22
|
|
10
10
|
databricks/sdk/mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
11
|
databricks/sdk/mixins/compute.py,sha256=cCoRkkChrV9bEXq2h8WwxdWJ4sVB5dT9KazjJMSC74I,8909
|
|
12
12
|
databricks/sdk/mixins/dbfs.py,sha256=nvAhP_Aem_xmB3GT0LAozAb_PjUXB5Xc9Xev9BpW5aM,12666
|
|
@@ -29,9 +29,9 @@ databricks/sdk/service/settings.py,sha256=rfcv96j5Y4udGKr9LzjA2jkAj8kuL8A7lXqW0N
|
|
|
29
29
|
databricks/sdk/service/sharing.py,sha256=N83p-0AysFO8nwnm-HUSYT5qaQUgMsvXET6lY9JaOR4,44357
|
|
30
30
|
databricks/sdk/service/sql.py,sha256=geciXxYvv3Le-JHP7k_K0r4XBVw003TqXJ1oA7UzeoE,140031
|
|
31
31
|
databricks/sdk/service/workspace.py,sha256=h_zgD2ElOjJq83xxs-SG6QrGP-x0zDxZHADMiqKwD4o,43457
|
|
32
|
-
databricks_sdk-0.1.
|
|
33
|
-
databricks_sdk-0.1.
|
|
34
|
-
databricks_sdk-0.1.
|
|
35
|
-
databricks_sdk-0.1.
|
|
36
|
-
databricks_sdk-0.1.
|
|
37
|
-
databricks_sdk-0.1.
|
|
32
|
+
databricks_sdk-0.1.1.dist-info/LICENSE,sha256=afBgTZo-JsYqj4VOjnejBetMuHKcFR30YobDdpVFkqY,11411
|
|
33
|
+
databricks_sdk-0.1.1.dist-info/METADATA,sha256=iniqjP2p8RkicUG9w6yHTl7quH3AlgEstwmolcnGDeM,29644
|
|
34
|
+
databricks_sdk-0.1.1.dist-info/NOTICE,sha256=FXJCqJfV8_zzXWjB4wgTx_iot23yvSo_d2SyCjrlleg,725
|
|
35
|
+
databricks_sdk-0.1.1.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
|
36
|
+
databricks_sdk-0.1.1.dist-info/top_level.txt,sha256=7kRdatoSgU0EUurRQJ_3F1Nv4EOSHWAr6ng25tJOJKU,11
|
|
37
|
+
databricks_sdk-0.1.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|