Skip to content

Commit 9064b9e

Browse files
authored
Updates to use the Databricks Python sdk 0.30.0 (#247)
These changes contains the update to use the Databricks Python sdk 0.30.0
1 parent e2f2586 commit 9064b9e

File tree

3 files changed

+47
-36
lines changed

3 files changed

+47
-36
lines changed

src/databricks/labs/lsql/core.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import types
99
from collections.abc import Callable, Iterator
1010
from datetime import timedelta
11-
from typing import Any
11+
from typing import TYPE_CHECKING, Any
1212

1313
import requests
1414
import sqlglot
@@ -17,7 +17,6 @@
1717
from databricks.sdk.service.sql import (
1818
ColumnInfoTypeName,
1919
Disposition,
20-
ExecuteStatementResponse,
2120
Format,
2221
ServiceError,
2322
ServiceErrorCode,
@@ -26,6 +25,19 @@
2625
StatementStatus,
2726
)
2827

28+
if TYPE_CHECKING: # MyPy complains about the double import
29+
from databricks.sdk.service.sql import StatementResponse
30+
else:
31+
try:
32+
# databricks-sdk>=0.30.0
33+
from databricks.sdk.service.sql import StatementResponse
34+
except ImportError:
35+
# databricks-sdk<0.30.0
36+
from databricks.sdk.service.sql import (
37+
ExecuteStatementResponse as StatementResponse,
38+
)
39+
40+
2941
MAX_SLEEP_PER_ATTEMPT = 10
3042

3143
MAX_PLATFORM_TIMEOUT = 50
@@ -179,7 +191,7 @@ def execute(
179191
catalog: str | None = None,
180192
schema: str | None = None,
181193
timeout: timedelta | None = None,
182-
) -> ExecuteStatementResponse:
194+
) -> StatementResponse:
183195
"""Execute a SQL statement and block until results are ready, including starting
184196
the warehouse if needed.
185197
@@ -214,7 +226,7 @@ def execute(
214226
it is handled on the server side. If the timeout is greater than 50 seconds,
215227
Databricks SDK for Python cancels the statement execution and throws `TimeoutError`.
216228
If not given, it will use the timeout specified in the constructor.
217-
:return: ExecuteStatementResponse
229+
:return: StatementResponse
218230
"""
219231
# The wait_timeout field must be 0 seconds (disables wait),
220232
# or between 5 seconds and 50 seconds.
@@ -259,7 +271,7 @@ def execute(
259271
if not state:
260272
state = StatementState.FAILED
261273
if state == StatementState.SUCCEEDED:
262-
return ExecuteStatementResponse(
274+
return StatementResponse(
263275
manifest=res.manifest, result=res.result, statement_id=statement_id, status=result_status
264276
)
265277
status_message = f"current status: {state.value}"
@@ -378,7 +390,7 @@ def fetch_value(self, statement: str, **kwargs) -> Any | None:
378390
return v
379391
return None
380392

381-
def _result_converter(self, execute_response: ExecuteStatementResponse):
393+
def _result_converter(self, execute_response: StatementResponse):
382394
"""Get the result schema from the execute response."""
383395
manifest = execute_response.manifest
384396
if not manifest:

tests/unit/test_backends.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
from databricks.sdk.service.sql import (
1717
ColumnInfo,
1818
ColumnInfoTypeName,
19-
ExecuteStatementResponse,
2019
Format,
2120
ResultData,
2221
ResultManifest,
2322
ResultSchema,
23+
StatementResponse,
2424
StatementState,
2525
StatementStatus,
2626
)
@@ -56,7 +56,7 @@ class Bar:
5656

5757
def test_statement_execution_backend_execute_happy():
5858
ws = create_autospec(WorkspaceClient)
59-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
59+
ws.statement_execution.execute_statement.return_value = StatementResponse(
6060
status=StatementStatus(state=StatementState.SUCCEEDED)
6161
)
6262

@@ -78,7 +78,7 @@ def test_statement_execution_backend_execute_happy():
7878

7979
def test_statement_execution_backend_with_overrides():
8080
ws = create_autospec(WorkspaceClient)
81-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
81+
ws.statement_execution.execute_statement.return_value = StatementResponse(
8282
status=StatementStatus(state=StatementState.SUCCEEDED)
8383
)
8484

@@ -101,7 +101,7 @@ def test_statement_execution_backend_with_overrides():
101101
def test_statement_execution_backend_fetch_happy():
102102
ws = create_autospec(WorkspaceClient)
103103

104-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
104+
ws.statement_execution.execute_statement.return_value = StatementResponse(
105105
status=StatementStatus(state=StatementState.SUCCEEDED),
106106
manifest=ResultManifest(schema=ResultSchema(columns=[ColumnInfo(name="id", type_name=ColumnInfoTypeName.INT)])),
107107
result=ResultData(data_array=[["1"], ["2"], ["3"]]),
@@ -117,7 +117,7 @@ def test_statement_execution_backend_fetch_happy():
117117

118118
def test_statement_execution_backend_save_table_overwrite_empty_table():
119119
ws = create_autospec(WorkspaceClient)
120-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
120+
ws.statement_execution.execute_statement.return_value = StatementResponse(
121121
status=StatementStatus(state=StatementState.SUCCEEDED)
122122
)
123123
seb = StatementExecutionBackend(ws, "abc")
@@ -161,7 +161,7 @@ def test_statement_execution_backend_save_table_overwrite_empty_table():
161161
def test_statement_execution_backend_save_table_empty_records():
162162
ws = create_autospec(WorkspaceClient)
163163

164-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
164+
ws.statement_execution.execute_statement.return_value = StatementResponse(
165165
status=StatementStatus(state=StatementState.SUCCEEDED)
166166
)
167167

@@ -185,7 +185,7 @@ def test_statement_execution_backend_save_table_empty_records():
185185
def test_statement_execution_backend_save_table_two_records():
186186
ws = create_autospec(WorkspaceClient)
187187

188-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
188+
ws.statement_execution.execute_statement.return_value = StatementResponse(
189189
status=StatementStatus(state=StatementState.SUCCEEDED)
190190
)
191191

@@ -222,7 +222,7 @@ def test_statement_execution_backend_save_table_two_records():
222222
def test_statement_execution_backend_save_table_in_batches_of_two(mocker):
223223
ws = create_autospec(WorkspaceClient)
224224

225-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
225+
ws.statement_execution.execute_statement.return_value = StatementResponse(
226226
status=StatementStatus(state=StatementState.SUCCEEDED)
227227
)
228228

tests/unit/test_core.py

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,15 @@
88
ColumnInfo,
99
ColumnInfoTypeName,
1010
EndpointInfo,
11-
ExecuteStatementResponse,
1211
ExternalLink,
1312
Format,
14-
GetStatementResponse,
1513
ResultData,
1614
ResultManifest,
1715
ResultSchema,
1816
ServiceError,
1917
ServiceErrorCode,
2018
State,
19+
StatementResponse,
2120
StatementState,
2221
StatementStatus,
2322
timedelta,
@@ -67,7 +66,7 @@ def test_row_factory_with_generator():
6766
def test_selects_warehouse_from_config():
6867
ws = create_autospec(WorkspaceClient)
6968
ws.config.warehouse_id = "abc"
70-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
69+
ws.statement_execution.execute_statement.return_value = StatementResponse(
7170
status=StatementStatus(state=StatementState.SUCCEEDED),
7271
statement_id="bcd",
7372
)
@@ -96,7 +95,7 @@ def test_selects_warehouse_from_existing_first_running():
9695
EndpointInfo(id="cde", state=State.RUNNING),
9796
]
9897

99-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
98+
ws.statement_execution.execute_statement.return_value = StatementResponse(
10099
status=StatementStatus(state=StatementState.SUCCEEDED),
101100
)
102101

@@ -125,7 +124,7 @@ def test_selects_warehouse_from_existing_not_running():
125124
EndpointInfo(id="cde", state=State.STARTING),
126125
]
127126

128-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
127+
ws.statement_execution.execute_statement.return_value = StatementResponse(
129128
status=StatementStatus(state=StatementState.SUCCEEDED),
130129
)
131130

@@ -155,11 +154,11 @@ def test_no_warehouse_given():
155154

156155
def test_execute_poll_succeeds():
157156
ws = create_autospec(WorkspaceClient)
158-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
157+
ws.statement_execution.execute_statement.return_value = StatementResponse(
159158
status=StatementStatus(state=StatementState.PENDING),
160159
statement_id="bcd",
161160
)
162-
ws.statement_execution.get_statement.return_value = GetStatementResponse(
161+
ws.statement_execution.get_statement.return_value = StatementResponse(
163162
manifest=ResultManifest(),
164163
result=ResultData(byte_count=100500),
165164
statement_id="bcd",
@@ -202,7 +201,7 @@ def test_execute_poll_succeeds():
202201
def test_execute_fails(status_error, platform_error_type):
203202
ws = create_autospec(WorkspaceClient)
204203

205-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
204+
ws.statement_execution.execute_statement.return_value = StatementResponse(
206205
status=StatementStatus(state=StatementState.FAILED, error=status_error),
207206
statement_id="bcd",
208207
)
@@ -216,14 +215,14 @@ def test_execute_fails(status_error, platform_error_type):
216215
def test_execute_poll_waits():
217216
ws = create_autospec(WorkspaceClient)
218217

219-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
218+
ws.statement_execution.execute_statement.return_value = StatementResponse(
220219
status=StatementStatus(state=StatementState.PENDING),
221220
statement_id="bcd",
222221
)
223222

224223
ws.statement_execution.get_statement.side_effect = [
225-
GetStatementResponse(status=StatementStatus(state=StatementState.RUNNING), statement_id="bcd"),
226-
GetStatementResponse(
224+
StatementResponse(status=StatementStatus(state=StatementState.RUNNING), statement_id="bcd"),
225+
StatementResponse(
227226
manifest=ResultManifest(),
228227
result=ResultData(byte_count=100500),
229228
statement_id="bcd",
@@ -242,12 +241,12 @@ def test_execute_poll_waits():
242241
def test_execute_poll_timeouts_on_client():
243242
ws = create_autospec(WorkspaceClient)
244243

245-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
244+
ws.statement_execution.execute_statement.return_value = StatementResponse(
246245
status=StatementStatus(state=StatementState.PENDING),
247246
statement_id="bcd",
248247
)
249248

250-
ws.statement_execution.get_statement.return_value = GetStatementResponse(
249+
ws.statement_execution.get_statement.return_value = StatementResponse(
251250
status=StatementStatus(state=StatementState.RUNNING),
252251
statement_id="bcd",
253252
)
@@ -262,7 +261,7 @@ def test_execute_poll_timeouts_on_client():
262261
def test_fetch_all_no_chunks():
263262
ws = create_autospec(WorkspaceClient)
264263

265-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
264+
ws.statement_execution.execute_statement.return_value = StatementResponse(
266265
status=StatementStatus(state=StatementState.SUCCEEDED),
267266
manifest=ResultManifest(
268267
schema=ResultSchema(
@@ -298,7 +297,7 @@ def test_fetch_all_no_chunks():
298297
def test_fetch_all_no_chunks_no_converter():
299298
ws = create_autospec(WorkspaceClient)
300299

301-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
300+
ws.statement_execution.execute_statement.return_value = StatementResponse(
302301
status=StatementStatus(state=StatementState.SUCCEEDED),
303302
manifest=ResultManifest(
304303
schema=ResultSchema(
@@ -323,7 +322,7 @@ def test_fetch_all_no_chunks_no_converter():
323322
def test_fetch_all_two_chunks():
324323
ws = create_autospec(WorkspaceClient)
325324

326-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
325+
ws.statement_execution.execute_statement.return_value = StatementResponse(
327326
status=StatementStatus(state=StatementState.SUCCEEDED),
328327
manifest=ResultManifest(
329328
schema=ResultSchema(
@@ -361,7 +360,7 @@ def test_fetch_all_two_chunks():
361360
def test_fetch_one():
362361
ws = create_autospec(WorkspaceClient)
363362

364-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
363+
ws.statement_execution.execute_statement.return_value = StatementResponse(
365364
status=StatementStatus(state=StatementState.SUCCEEDED),
366365
manifest=ResultManifest(schema=ResultSchema(columns=[ColumnInfo(name="id", type_name=ColumnInfoTypeName.INT)])),
367366
result=ResultData(data_array=[["4"]]),
@@ -389,7 +388,7 @@ def test_fetch_one():
389388
def test_fetch_one_none():
390389
ws = create_autospec(WorkspaceClient)
391390

392-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
391+
ws.statement_execution.execute_statement.return_value = StatementResponse(
393392
status=StatementStatus(state=StatementState.SUCCEEDED),
394393
manifest=ResultManifest(schema=ResultSchema(columns=[ColumnInfo(name="id", type_name=ColumnInfoTypeName.INT)])),
395394
statement_id="bcd",
@@ -405,7 +404,7 @@ def test_fetch_one_none():
405404
def test_fetch_one_disable_magic():
406405
ws = create_autospec(WorkspaceClient)
407406

408-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
407+
ws.statement_execution.execute_statement.return_value = StatementResponse(
409408
status=StatementStatus(state=StatementState.SUCCEEDED),
410409
manifest=ResultManifest(schema=ResultSchema(columns=[ColumnInfo(name="id", type_name=ColumnInfoTypeName.INT)])),
411410
result=ResultData(data_array=[["4"], ["5"], ["6"]]),
@@ -433,7 +432,7 @@ def test_fetch_one_disable_magic():
433432
def test_fetch_value():
434433
ws = create_autospec(WorkspaceClient)
435434

436-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
435+
ws.statement_execution.execute_statement.return_value = StatementResponse(
437436
status=StatementStatus(state=StatementState.SUCCEEDED),
438437
manifest=ResultManifest(schema=ResultSchema(columns=[ColumnInfo(name="id", type_name=ColumnInfoTypeName.INT)])),
439438
result=ResultData(data_array=[["4"]]),
@@ -450,7 +449,7 @@ def test_fetch_value():
450449
def test_fetch_value_none():
451450
ws = create_autospec(WorkspaceClient)
452451

453-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
452+
ws.statement_execution.execute_statement.return_value = StatementResponse(
454453
status=StatementStatus(state=StatementState.SUCCEEDED),
455454
manifest=ResultManifest(schema=ResultSchema(columns=[ColumnInfo(name="id", type_name=ColumnInfoTypeName.INT)])),
456455
statement_id="bcd",
@@ -466,7 +465,7 @@ def test_fetch_value_none():
466465
def test_callable_returns_iterator():
467466
ws = create_autospec(WorkspaceClient)
468467

469-
ws.statement_execution.execute_statement.return_value = ExecuteStatementResponse(
468+
ws.statement_execution.execute_statement.return_value = StatementResponse(
470469
status=StatementStatus(state=StatementState.SUCCEEDED),
471470
manifest=ResultManifest(schema=ResultSchema(columns=[ColumnInfo(name="id", type_name=ColumnInfoTypeName.INT)])),
472471
result=ResultData(data_array=[["4"], ["5"], ["6"]]),

0 commit comments

Comments
 (0)