harlequin 2.5.0__tar.gz → 2.5.2__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 (74) hide show
  1. {harlequin-2.5.0 → harlequin-2.5.2}/CHANGELOG.md +15 -1
  2. {harlequin-2.5.0 → harlequin-2.5.2}/PKG-INFO +3 -3
  3. {harlequin-2.5.0 → harlequin-2.5.2}/pyproject.toml +7 -11
  4. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_duckdb/adapter.py +7 -2
  5. {harlequin-2.5.0 → harlequin-2.5.2}/.gitignore +0 -0
  6. {harlequin-2.5.0 → harlequin-2.5.2}/LICENSE +0 -0
  7. {harlequin-2.5.0 → harlequin-2.5.2}/README.md +0 -0
  8. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/__init__.py +0 -0
  9. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/__main__.py +0 -0
  10. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/actions.py +0 -0
  11. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/adapter.py +0 -0
  12. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/app.py +0 -0
  13. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/app.tcss +0 -0
  14. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/app_base.py +0 -0
  15. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/autocomplete/__init__.py +0 -0
  16. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/autocomplete/completers.py +0 -0
  17. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/autocomplete/completion.py +0 -0
  18. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/autocomplete/constants.py +0 -0
  19. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/bindings.py +0 -0
  20. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/cache.py +0 -0
  21. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/catalog.py +0 -0
  22. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/catalog_cache.py +0 -0
  23. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/cli.py +0 -0
  24. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/colors.py +0 -0
  25. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/__init__.py +0 -0
  26. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/code_editor.py +0 -0
  27. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/confirm_modal.py +0 -0
  28. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/data_catalog/__init__.py +0 -0
  29. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/data_catalog/database_tree.py +0 -0
  30. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/data_catalog/file_tree.py +0 -0
  31. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/data_catalog/s3_tree.py +0 -0
  32. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/data_catalog/tree.py +0 -0
  33. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/debug_info.py +0 -0
  34. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/error_modal.py +0 -0
  35. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/export_screen.py +0 -0
  36. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/help_screen.md +0 -0
  37. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/help_screen.py +0 -0
  38. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/history_screen.py +0 -0
  39. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/results_viewer.py +0 -0
  40. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/run_query_bar.py +0 -0
  41. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/config.py +0 -0
  42. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/config_wizard.py +0 -0
  43. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/copy_formats.py +0 -0
  44. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/copy_widgets.py +0 -0
  45. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/driver.py +0 -0
  46. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/editor_cache.py +0 -0
  47. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/exception.py +0 -0
  48. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/export.py +0 -0
  49. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/global.tcss +0 -0
  50. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/history.py +0 -0
  51. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/keymap.py +0 -0
  52. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/keys_app.py +0 -0
  53. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/keys_app.tcss +0 -0
  54. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/locale_manager.py +0 -0
  55. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/messages.py +0 -0
  56. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/options.py +0 -0
  57. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/plugins.py +0 -0
  58. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/py.typed +0 -0
  59. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/transaction_mode.py +0 -0
  60. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/windows_timezone.py +0 -0
  61. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_duckdb/__init__.py +0 -0
  62. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_duckdb/catalog.py +0 -0
  63. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_duckdb/cli_options.py +0 -0
  64. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_duckdb/completions.py +0 -0
  65. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_duckdb/interactions.py +0 -0
  66. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_duckdb/py.typed +0 -0
  67. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_sqlite/__init__.py +0 -0
  68. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_sqlite/adapter.py +0 -0
  69. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_sqlite/catalog.py +0 -0
  70. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_sqlite/cli_options.py +0 -0
  71. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_sqlite/completions.py +0 -0
  72. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_sqlite/interactions.py +0 -0
  73. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_sqlite/py.typed +0 -0
  74. {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_vscode/__init__.py +0 -0
@@ -4,6 +4,18 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [2.5.2] - 2026-03-25
8
+
9
+ ### Bug Fixes
10
+
11
+ - Fixes a crash caused by DuckDB typing API change in DuckDB >= 1.5.0 ([#946](https://github.com/tconbeer/harlequin/pull/946), [#944](https://github.com/tconbeer/harlequin/pull/944) - thank you, [@draew6](https://github.com/draew6) and [@AJCThree](https://github.com/AJCThree)!)
12
+
13
+ ## [2.5.1] - 2025-12-19
14
+
15
+ ### Bug Fixes
16
+
17
+ - Improves Python 3.14 support; re-enables databricks extra for Python 3.14 users; cleans up duckdb dependency for 3.14 users ([#882](https://github.com/tconbeer/harlequin/issues/882), [alexmalins/harlequin-databricks#23](https://github.com/alexmalins/harlequin-databricks/issues/23) - thank you [@alexmalins](https://github.com/alexmalins) for the Databricks fix!).
18
+
7
19
  ## [2.5.0] - 2025-12-17
8
20
 
9
21
  - Allows setting the config path using the `HARLEQUIN_CONFIG_PATH` environment variable ([#897](https://github.com/tconbeer/harlequin/issues/897))
@@ -861,7 +873,9 @@ All notable changes to this project will be documented in this file.
861
873
 
862
874
  - Use the DuckDB CLI.
863
875
 
864
- [unreleased]: https://github.com/tconbeer/harlequin/compare/2.5.0...HEAD
876
+ [unreleased]: https://github.com/tconbeer/harlequin/compare/2.5.2...HEAD
877
+ [2.5.2]: https://github.com/tconbeer/harlequin/compare/2.5.1...2.5.2
878
+ [2.5.1]: https://github.com/tconbeer/harlequin/compare/2.5.0...2.5.1
865
879
  [2.5.0]: https://github.com/tconbeer/harlequin/compare/2.4.1...2.5.0
866
880
  [2.4.1]: https://github.com/tconbeer/harlequin/compare/2.4.0...2.4.1
867
881
  [2.4.0]: https://github.com/tconbeer/harlequin/compare/2.3.0...2.4.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: harlequin
3
- Version: 2.5.0
3
+ Version: 2.5.2
4
4
  Summary: The SQL IDE for Your Terminal.
5
5
  Project-URL: Homepage, https://harlequin.sh
6
6
  Project-URL: Documentation, https://harlequin.sh/docs/getting-started/index
@@ -23,7 +23,7 @@ Classifier: Programming Language :: Python :: 3.14
23
23
  Requires-Python: >=3.10
24
24
  Requires-Dist: click==8.1.8
25
25
  Requires-Dist: duckdb>=0.8.0; python_version < '3.14'
26
- Requires-Dist: duckdb>=1.4.2.dev0; python_version >= '3.14'
26
+ Requires-Dist: duckdb>=1.4.2; python_version >= '3.14'
27
27
  Requires-Dist: pandas>=2.3; python_version >= '3.14'
28
28
  Requires-Dist: platformdirs<5.0,>=3.10
29
29
  Requires-Dist: questionary==2.0.1
@@ -40,7 +40,7 @@ Requires-Dist: harlequin-bigquery; extra == 'bigquery'
40
40
  Provides-Extra: cassandra
41
41
  Requires-Dist: harlequin-cassandra; extra == 'cassandra'
42
42
  Provides-Extra: databricks
43
- Requires-Dist: harlequin-databricks; (python_version < '3.14') and extra == 'databricks'
43
+ Requires-Dist: harlequin-databricks; extra == 'databricks'
44
44
  Provides-Extra: mysql
45
45
  Requires-Dist: harlequin-mysql; extra == 'mysql'
46
46
  Provides-Extra: nebulagraph
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
 
3
3
  name = "harlequin"
4
- version = "2.5.0"
4
+ version = "2.5.2"
5
5
  requires-python = ">=3.10"
6
6
  description = "The SQL IDE for Your Terminal."
7
7
  authors = [
@@ -39,7 +39,7 @@ dependencies = [
39
39
  "questionary==2.0.1",
40
40
 
41
41
  # ensure we install from wheels
42
- "duckdb>=1.4.2.dev0; python_version >= '3.14'",
42
+ "duckdb>=1.4.2; python_version >= '3.14'",
43
43
  "pandas>=2.3; python_version >= '3.14'",
44
44
  ]
45
45
 
@@ -52,11 +52,7 @@ mysql = ["harlequin-mysql"]
52
52
  odbc = ["harlequin-odbc"]
53
53
  bigquery = ["harlequin-bigquery"]
54
54
  trino = ["harlequin-trino"]
55
- # databricks-sql-connector pins numpy to 2.2, which has to be
56
- # built from source on python 3.14. Rather than forcing all
57
- # 3.14 users to build numpy from source, make databricks
58
- # unavailable on 3.14
59
- databricks = ["harlequin-databricks; python_version < '3.14'"]
55
+ databricks = ["harlequin-databricks"]
60
56
  adbc = ["harlequin-adbc"]
61
57
  cassandra = ["harlequin-cassandra"]
62
58
  nebulagraph = ["harlequin-nebulagraph"]
@@ -64,7 +60,7 @@ nebulagraph = ["harlequin-nebulagraph"]
64
60
 
65
61
  [dependency-groups]
66
62
  dev = [
67
- "pre-commit>=3.3,<4",
63
+ "pre-commit>=4.5,<5",
68
64
  "textual-dev==1.8.0",
69
65
  "harlequin-postgres>=1.1.1,<2",
70
66
  "harlequin-mysql>=1,<2",
@@ -77,12 +73,12 @@ static = [
77
73
  "boto3-stubs>=1.34.23,<2",
78
74
  ]
79
75
  test = [
80
- "pytest>=7.3.1,<9.0.0",
81
- "pytest-asyncio==0.21.0",
76
+ "pytest>=9.0.2,<9.1.0",
77
+ "pytest-asyncio==1.3.0",
82
78
  "pytest-textual-snapshot @ https://github.com/tconbeer/pytest-textual-snapshot.git#main",
83
79
  "boto3==1.34.22",
84
80
  # extension tests require consistent version of duckdb.
85
- "duckdb==1.4.2.dev23",
81
+ "duckdb==1.5.1",
86
82
  "flaky>=3.8.1",
87
83
  ]
88
84
 
@@ -5,7 +5,12 @@ from pathlib import Path
5
5
  from typing import Any, Sequence
6
6
 
7
7
  import duckdb
8
- from duckdb.typing import DuckDBPyType
8
+
9
+ try:
10
+ from duckdb.sqltypes import DuckDBPyType
11
+ except ImportError:
12
+ from duckdb.typing import DuckDBPyType # type: ignore[import-not-found,no-redef]
13
+
9
14
  from textual_fastdatatable.backend import AutoBackendType
10
15
 
11
16
  from harlequin.adapter import HarlequinAdapter, HarlequinConnection, HarlequinCursor
@@ -296,7 +301,7 @@ class DuckDbAdapter(HarlequinAdapter):
296
301
  primary_db, *other_dbs = self.conn_str
297
302
  token = f"?token={self.md_token}" if self.md_token else ""
298
303
  saas = "?saas_mode=true" if self.md_saas else ""
299
- config = {
304
+ config: dict[str, str | bool | int | float | list[str]] | None = {
300
305
  "allow_unsigned_extensions": str(self.allow_unsigned_extensions).lower()
301
306
  }
302
307
 
File without changes
File without changes
File without changes