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.
Files changed (34) hide show
  1. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/CHANGELOG.md +10 -0
  2. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/PKG-INFO +2 -2
  3. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/pyproject.toml +2 -2
  4. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/__init__.py +1 -1
  5. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/retry.py +4 -2
  6. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/client.py +14 -7
  7. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/thrift_backend.py +9 -6
  8. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/LICENSE +0 -0
  9. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/README.md +0 -0
  10. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/__init__.py +0 -0
  11. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/__init__.py +0 -0
  12. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/auth.py +0 -0
  13. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/authenticators.py +0 -0
  14. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/endpoint.py +0 -0
  15. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/oauth.py +0 -0
  16. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/oauth_http_handler.py +0 -0
  17. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/auth/thrift_http_client.py +0 -0
  18. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/cloudfetch/download_manager.py +0 -0
  19. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/cloudfetch/downloader.py +0 -0
  20. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/exc.py +0 -0
  21. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/experimental/__init__.py +0 -0
  22. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/experimental/oauth_persistence.py +0 -0
  23. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/parameters/__init__.py +0 -0
  24. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/parameters/native.py +0 -0
  25. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/parameters/py.typed +0 -0
  26. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/py.typed +0 -0
  27. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/thrift_api/TCLIService/TCLIService-remote +0 -0
  28. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/thrift_api/TCLIService/TCLIService.py +0 -0
  29. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/thrift_api/TCLIService/__init__.py +0 -0
  30. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/thrift_api/TCLIService/constants.py +0 -0
  31. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/thrift_api/TCLIService/ttypes.py +0 -0
  32. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/thrift_api/__init__.py +0 -0
  33. {databricks_sql_connector-4.0.1 → databricks_sql_connector-4.0.3}/src/databricks/sql/types.py +0 -0
  34. {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.1
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.9.0,<3.0.0)
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.1"
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.9.0"
27
+ python-dateutil = "^2.8.0"
28
28
 
29
29
  [tool.poetry.extras]
30
30
  pyarrow = ["pyarrow"]
@@ -68,7 +68,7 @@ DATETIME = DBAPITypeObject("timestamp")
68
68
  DATE = DBAPITypeObject("date")
69
69
  ROWID = DBAPITypeObject()
70
70
 
71
- __version__ = "4.0.1"
71
+ __version__ = "4.0.3"
72
72
  USER_AGENT_NAME = "PyDatabricksSqlConnector"
73
73
 
74
74
  # These two functions are pyhive legacy
@@ -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
- if version.parse(urllib3.__version__) >= version.parse("2.0.0"):
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
 
@@ -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
- def is_executing(operation_state) -> "bool":
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
- schema_bytes = (
801
- t_result_set_metadata_resp.arrowSchema
802
- or self._hive_schema_to_arrow_schema(t_result_set_metadata_resp.schema)
803
- .serialize()
804
- .to_pybytes()
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,