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.
- {harlequin-2.5.0 → harlequin-2.5.2}/CHANGELOG.md +15 -1
- {harlequin-2.5.0 → harlequin-2.5.2}/PKG-INFO +3 -3
- {harlequin-2.5.0 → harlequin-2.5.2}/pyproject.toml +7 -11
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_duckdb/adapter.py +7 -2
- {harlequin-2.5.0 → harlequin-2.5.2}/.gitignore +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/LICENSE +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/README.md +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/__init__.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/__main__.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/actions.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/adapter.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/app.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/app.tcss +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/app_base.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/autocomplete/__init__.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/autocomplete/completers.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/autocomplete/completion.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/autocomplete/constants.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/bindings.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/cache.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/catalog.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/catalog_cache.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/cli.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/colors.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/__init__.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/code_editor.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/confirm_modal.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/data_catalog/__init__.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/data_catalog/database_tree.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/data_catalog/file_tree.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/data_catalog/s3_tree.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/data_catalog/tree.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/debug_info.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/error_modal.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/export_screen.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/help_screen.md +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/help_screen.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/history_screen.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/results_viewer.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/components/run_query_bar.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/config.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/config_wizard.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/copy_formats.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/copy_widgets.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/driver.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/editor_cache.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/exception.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/export.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/global.tcss +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/history.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/keymap.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/keys_app.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/keys_app.tcss +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/locale_manager.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/messages.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/options.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/plugins.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/py.typed +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/transaction_mode.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin/windows_timezone.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_duckdb/__init__.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_duckdb/catalog.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_duckdb/cli_options.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_duckdb/completions.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_duckdb/interactions.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_duckdb/py.typed +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_sqlite/__init__.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_sqlite/adapter.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_sqlite/catalog.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_sqlite/cli_options.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_sqlite/completions.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_sqlite/interactions.py +0 -0
- {harlequin-2.5.0 → harlequin-2.5.2}/src/harlequin_sqlite/py.typed +0 -0
- {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.
|
|
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.
|
|
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
|
|
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;
|
|
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.
|
|
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
|
|
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
|
-
|
|
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>=
|
|
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>=
|
|
81
|
-
"pytest-asyncio==
|
|
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.
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|