databricks-sql-connector 4.0.1__tar.gz → 4.0.3__tar.gz
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.
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/CHANGELOG.md +10 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/PKG-INFO +2 -2
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/pyproject.toml +2 -2
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/__init__.py +1 -1
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/retry.py +4 -2
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/client.py +14 -7
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/thrift_backend.py +9 -6
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/LICENSE +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/README.md +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/__init__.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/__init__.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/auth.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/authenticators.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/endpoint.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/oauth.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/oauth_http_handler.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/thrift_http_client.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/cloudfetch/download_manager.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/cloudfetch/downloader.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/exc.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/experimental/__init__.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/experimental/oauth_persistence.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/parameters/__init__.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/parameters/native.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/parameters/py.typed +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/py.typed +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/thrift_api/TCLIService/TCLIService-remote +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/thrift_api/TCLIService/TCLIService.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/thrift_api/TCLIService/__init__.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/thrift_api/TCLIService/constants.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/thrift_api/TCLIService/ttypes.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/thrift_api/__init__.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/types.py +0 -0
- {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/utils.py +0 -0
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
# Release History
|
|
2
2
|
|
|
3
|
+
# 4.0.3 (2025-04-22)
|
|
4
|
+
|
|
5
|
+
- Fix: Removed `packaging` dependency in favour of default libraries, for `urllib3` version checks (databricks/databricks-sql-python#547 by @jprakash-db)
|
|
6
|
+
-
|
|
7
|
+
# 4.0.2 (2025-04-01)
|
|
8
|
+
|
|
9
|
+
- Fix: Relaxed the pin for `python-dateutil` to be `^2.8.0` (databricks/databricks-sql-python#538 by @jprakash-db)
|
|
10
|
+
|
|
3
11
|
# 4.0.1 (2025-03-19)
|
|
4
12
|
|
|
13
|
+
**Note: this release was yanked from Pypi on 19 March 2025 due to compatibility issues with `dbt-databricks<1.5.3`**
|
|
14
|
+
|
|
5
15
|
- Support for multiple timestamp formats parsing (databricks/databricks-sql-python#533 by @jprakash-db)
|
|
6
16
|
- Rename `_user_agent_entry` in connect call to `user_agent_entry` to expose it as a public parameter. (databricks/databricks-sql-python#530 by @shivam2680)
|
|
7
17
|
- Fix: compatibility with urllib3 versions less than 2.x. (databricks/databricks-sql-python#526 by @shivam2680)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: databricks-sql-connector
|
|
3
|
-
Version: 4.0.
|
|
3
|
+
Version: 4.0.3
|
|
4
4
|
Summary: Databricks SQL Connector for Python
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Author: Databricks
|
|
@@ -21,7 +21,7 @@ Requires-Dist: pandas (>=1.2.5,<2.3.0) ; python_version >= "3.8" and python_vers
|
|
|
21
21
|
Requires-Dist: pandas (>=2.2.3,<2.3.0) ; python_version >= "3.13"
|
|
22
22
|
Requires-Dist: pyarrow (>=14.0.1) ; (python_version >= "3.8" and python_version < "3.13") and (extra == "pyarrow")
|
|
23
23
|
Requires-Dist: pyarrow (>=18.0.0) ; (python_version >= "3.13") and (extra == "pyarrow")
|
|
24
|
-
Requires-Dist: python-dateutil (>=2.
|
|
24
|
+
Requires-Dist: python-dateutil (>=2.8.0,<3.0.0)
|
|
25
25
|
Requires-Dist: requests (>=2.18.1,<3.0.0)
|
|
26
26
|
Requires-Dist: thrift (>=0.16.0,<0.21.0)
|
|
27
27
|
Requires-Dist: urllib3 (>=1.26)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "databricks-sql-connector"
|
|
3
|
-
version = "4.0.
|
|
3
|
+
version = "4.0.3"
|
|
4
4
|
description = "Databricks SQL Connector for Python"
|
|
5
5
|
authors = ["Databricks <databricks-sql-connector-maintainers@databricks.com>"]
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -24,7 +24,7 @@ pyarrow = [
|
|
|
24
24
|
{ version = ">=14.0.1", python = ">=3.8,<3.13", optional=true },
|
|
25
25
|
{ version = ">=18.0.0", python = ">=3.13", optional=true }
|
|
26
26
|
]
|
|
27
|
-
python-dateutil = "^2.
|
|
27
|
+
python-dateutil = "^2.8.0"
|
|
28
28
|
|
|
29
29
|
[tool.poetry.extras]
|
|
30
30
|
pyarrow = ["pyarrow"]
|
{databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/retry.py
RENAMED
|
@@ -2,6 +2,7 @@ import logging
|
|
|
2
2
|
import random
|
|
3
3
|
import time
|
|
4
4
|
import typing
|
|
5
|
+
from importlib.metadata import version
|
|
5
6
|
from enum import Enum
|
|
6
7
|
from typing import List, Optional, Tuple, Union
|
|
7
8
|
|
|
@@ -16,7 +17,6 @@ except ImportError:
|
|
|
16
17
|
from urllib3 import HTTPResponse as BaseHTTPResponse
|
|
17
18
|
from urllib3 import Retry
|
|
18
19
|
from urllib3.util.retry import RequestHistory
|
|
19
|
-
from packaging import version
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
from databricks.sql.exc import (
|
|
@@ -312,7 +312,9 @@ class DatabricksRetryPolicy(Retry):
|
|
|
312
312
|
|
|
313
313
|
current_attempt = self.stop_after_attempts_count - int(self.total or 0)
|
|
314
314
|
proposed_backoff = (2**current_attempt) * self.delay_min
|
|
315
|
-
|
|
315
|
+
|
|
316
|
+
library_version = version("urllib3")
|
|
317
|
+
if int(library_version.split(".")[0]) >= 2:
|
|
316
318
|
if self.backoff_jitter != 0.0:
|
|
317
319
|
proposed_backoff += random.random() * self.backoff_jitter
|
|
318
320
|
|
{databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/client.py
RENAMED
|
@@ -896,6 +896,19 @@ class Cursor:
|
|
|
896
896
|
self._check_not_closed()
|
|
897
897
|
return self.thrift_backend.get_query_state(self.active_op_handle)
|
|
898
898
|
|
|
899
|
+
def is_query_pending(self):
|
|
900
|
+
"""
|
|
901
|
+
Checks whether the async executing query is in pending state or not
|
|
902
|
+
|
|
903
|
+
:return:
|
|
904
|
+
"""
|
|
905
|
+
operation_state = self.get_query_state()
|
|
906
|
+
|
|
907
|
+
return not operation_state or operation_state in [
|
|
908
|
+
ttypes.TOperationState.RUNNING_STATE,
|
|
909
|
+
ttypes.TOperationState.PENDING_STATE,
|
|
910
|
+
]
|
|
911
|
+
|
|
899
912
|
def get_async_execution_result(self):
|
|
900
913
|
"""
|
|
901
914
|
|
|
@@ -905,13 +918,7 @@ class Cursor:
|
|
|
905
918
|
"""
|
|
906
919
|
self._check_not_closed()
|
|
907
920
|
|
|
908
|
-
|
|
909
|
-
return not operation_state or operation_state in [
|
|
910
|
-
ttypes.TOperationState.RUNNING_STATE,
|
|
911
|
-
ttypes.TOperationState.PENDING_STATE,
|
|
912
|
-
]
|
|
913
|
-
|
|
914
|
-
while is_executing(self.get_query_state()):
|
|
921
|
+
while self.is_query_pending():
|
|
915
922
|
# Poll after some default time
|
|
916
923
|
time.sleep(self.ASYNC_DEFAULT_POLLING_INTERVAL)
|
|
917
924
|
|
|
@@ -797,12 +797,15 @@ class ThriftBackend:
|
|
|
797
797
|
t_result_set_metadata_resp.schema
|
|
798
798
|
)
|
|
799
799
|
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
800
|
+
if pyarrow:
|
|
801
|
+
schema_bytes = (
|
|
802
|
+
t_result_set_metadata_resp.arrowSchema
|
|
803
|
+
or self._hive_schema_to_arrow_schema(t_result_set_metadata_resp.schema)
|
|
804
|
+
.serialize()
|
|
805
|
+
.to_pybytes()
|
|
806
|
+
)
|
|
807
|
+
else:
|
|
808
|
+
schema_bytes = None
|
|
806
809
|
|
|
807
810
|
queue = ResultSetQueueFactory.build_queue(
|
|
808
811
|
row_set_type=resp.resultSetMetadata.resultFormat,
|
|
File without changes
|
|
File without changes
|
{databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/auth.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/oauth.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/py.typed
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/types.py
RENAMED
|
File without changes
|
{databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/utils.py
RENAMED
|
File without changes
|