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 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.is_aws:
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, client_id, 'http://localhost:8020')
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
- 'redirect_uri': self._client.redirect_url
250
+ 'code': code
247
251
  }
248
252
  headers = {}
249
- if 'microsoft' in self._client.token_url:
250
- # Tokens issued for the 'Single-Page Application' client-type may
251
- # only be redeemed via cross-origin requests
252
- headers = {'Origin': self._client.redirect_url}
253
- token = retrieve_token(client_id=self._client.client_id,
254
- client_secret=self._client.client_secret,
255
- token_url=self._client.token_url,
256
- params=params,
257
- headers=headers,
258
- use_params=True)
259
- return RefreshableCredentials(self._client, token)
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.0'
1
+ __version__ = '0.1.1'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: databricks-sdk
3
- Version: 0.1.0
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=Lc-PwhID-UbrK463rWaynPjlG2BkJ_UqCR5lfmLD9DE,34099
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=JEl30pJQ2C912R1H30r3TvVJ9Kzbi3P24sWWaMFSTFI,13431
9
- databricks/sdk/version.py,sha256=IMjkMO3twhQzluVTo8Z6rE7Eg-9U79_LGKMcsWLKBkY,22
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.0.dist-info/LICENSE,sha256=afBgTZo-JsYqj4VOjnejBetMuHKcFR30YobDdpVFkqY,11411
33
- databricks_sdk-0.1.0.dist-info/METADATA,sha256=Q4Wfe3WjZLJEtLuoCucSb55FXELkr6o2Plso6YGwlF0,29578
34
- databricks_sdk-0.1.0.dist-info/NOTICE,sha256=FXJCqJfV8_zzXWjB4wgTx_iot23yvSo_d2SyCjrlleg,725
35
- databricks_sdk-0.1.0.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
36
- databricks_sdk-0.1.0.dist-info/top_level.txt,sha256=7kRdatoSgU0EUurRQJ_3F1Nv4EOSHWAr6ng25tJOJKU,11
37
- databricks_sdk-0.1.0.dist-info/RECORD,,
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,,