harlequin 2.3.0__tar.gz → 2.4.0__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.3.0 → harlequin-2.4.0}/CHANGELOG.md +8 -1
  2. {harlequin-2.3.0 → harlequin-2.4.0}/PKG-INFO +17 -6
  3. {harlequin-2.3.0 → harlequin-2.4.0}/pyproject.toml +26 -7
  4. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/export.py +2 -2
  5. {harlequin-2.3.0 → harlequin-2.4.0}/.gitignore +0 -0
  6. {harlequin-2.3.0 → harlequin-2.4.0}/LICENSE +0 -0
  7. {harlequin-2.3.0 → harlequin-2.4.0}/README.md +0 -0
  8. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/__init__.py +0 -0
  9. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/__main__.py +0 -0
  10. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/actions.py +0 -0
  11. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/adapter.py +0 -0
  12. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/app.py +0 -0
  13. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/app.tcss +0 -0
  14. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/app_base.py +0 -0
  15. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/autocomplete/__init__.py +0 -0
  16. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/autocomplete/completers.py +0 -0
  17. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/autocomplete/completion.py +0 -0
  18. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/autocomplete/constants.py +0 -0
  19. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/bindings.py +0 -0
  20. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/cache.py +0 -0
  21. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/catalog.py +0 -0
  22. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/catalog_cache.py +0 -0
  23. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/cli.py +0 -0
  24. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/colors.py +0 -0
  25. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/__init__.py +0 -0
  26. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/code_editor.py +0 -0
  27. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/confirm_modal.py +0 -0
  28. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/data_catalog/__init__.py +0 -0
  29. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/data_catalog/database_tree.py +0 -0
  30. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/data_catalog/file_tree.py +0 -0
  31. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/data_catalog/s3_tree.py +0 -0
  32. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/data_catalog/tree.py +0 -0
  33. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/debug_info.py +0 -0
  34. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/error_modal.py +0 -0
  35. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/export_screen.py +0 -0
  36. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/help_screen.md +0 -0
  37. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/help_screen.py +0 -0
  38. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/history_screen.py +0 -0
  39. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/results_viewer.py +0 -0
  40. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/components/run_query_bar.py +0 -0
  41. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/config.py +0 -0
  42. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/config_wizard.py +0 -0
  43. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/copy_formats.py +0 -0
  44. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/copy_widgets.py +0 -0
  45. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/driver.py +0 -0
  46. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/editor_cache.py +0 -0
  47. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/exception.py +0 -0
  48. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/global.tcss +0 -0
  49. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/history.py +0 -0
  50. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/keymap.py +0 -0
  51. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/keys_app.py +0 -0
  52. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/keys_app.tcss +0 -0
  53. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/locale_manager.py +0 -0
  54. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/messages.py +0 -0
  55. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/options.py +0 -0
  56. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/plugins.py +0 -0
  57. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/py.typed +0 -0
  58. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/transaction_mode.py +0 -0
  59. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin/windows_timezone.py +0 -0
  60. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin_duckdb/__init__.py +0 -0
  61. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin_duckdb/adapter.py +0 -0
  62. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin_duckdb/catalog.py +0 -0
  63. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin_duckdb/cli_options.py +0 -0
  64. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin_duckdb/completions.py +0 -0
  65. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin_duckdb/interactions.py +0 -0
  66. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin_duckdb/py.typed +0 -0
  67. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin_sqlite/__init__.py +0 -0
  68. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin_sqlite/adapter.py +0 -0
  69. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin_sqlite/catalog.py +0 -0
  70. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin_sqlite/cli_options.py +0 -0
  71. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin_sqlite/completions.py +0 -0
  72. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin_sqlite/interactions.py +0 -0
  73. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin_sqlite/py.typed +0 -0
  74. {harlequin-2.3.0 → harlequin-2.4.0}/src/harlequin_vscode/__init__.py +0 -0
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [2.4.0] - 2025-10-29
8
+
9
+ ### Features
10
+
11
+ - Adds support for Python 3.14 for most Harlequin users ([#852](https://github.com/tconbeer/harlequin/issues/852), [#879](https://github.com/tconbeer/harlequin/pull/879), [#880](https://github.com/tconbeer/harlequin/pull/880) - thank you [@smartinussen](https://github.com/smartinussen) and especially [@branchvincent](https://github.com/branchvincent)!). **NOTE:** The `databricks` extra will not install the Databricks adapter on Python 3.14; Databricks users should continue to use Python 3.10-3.13. uv makes that easy with `uv tool install --python 3.13 'harlequin[databricks]'` See [this issue](https://github.com/alexmalins/harlequin-databricks/issues/23) for more information.
12
+
7
13
  ## [2.3.0] - 2025-10-24
8
14
 
9
15
  ### Breaking Changes
@@ -845,7 +851,8 @@ All notable changes to this project will be documented in this file.
845
851
 
846
852
  - Use the DuckDB CLI.
847
853
 
848
- [unreleased]: https://github.com/tconbeer/harlequin/compare/2.3.0...HEAD
854
+ [unreleased]: https://github.com/tconbeer/harlequin/compare/2.4.0...HEAD
855
+ [2.4.0]: https://github.com/tconbeer/harlequin/compare/2.3.0...2.4.0
849
856
  [2.3.0]: https://github.com/tconbeer/harlequin/compare/2.2.1...2.3.0
850
857
  [2.2.1]: https://github.com/tconbeer/harlequin/compare/2.2.0...2.2.1
851
858
  [2.2.0]: https://github.com/tconbeer/harlequin/compare/2.1.3...2.2.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: harlequin
3
- Version: 2.3.0
3
+ Version: 2.4.0
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
@@ -11,14 +11,25 @@ Author-email: Ted Conbeer <tconbeer@users.noreply.github.com>
11
11
  License-Expression: MIT
12
12
  License-File: LICENSE
13
13
  Keywords: harlequin,ide,sql,textual,tui
14
- Requires-Python: <3.14,>=3.10
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Operating System :: MacOS :: MacOS X
16
+ Classifier: Operating System :: Microsoft :: Windows
17
+ Classifier: Operating System :: POSIX :: Linux
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: 3.14
23
+ Requires-Python: >=3.10
15
24
  Requires-Dist: click==8.1.8
16
- Requires-Dist: duckdb>=0.8.0
25
+ Requires-Dist: duckdb>=0.8.0; python_version < '3.14'
26
+ Requires-Dist: duckdb>=1.4.2.dev0; python_version >= '3.14'
27
+ Requires-Dist: pandas>=2.3; python_version >= '3.14'
17
28
  Requires-Dist: platformdirs<5.0,>=3.10
18
29
  Requires-Dist: questionary==2.0.1
19
30
  Requires-Dist: rich-click==1.8.5
20
- Requires-Dist: shandy-sqlfmt>=0.19.0
21
- Requires-Dist: textual-fastdatatable==0.13.0
31
+ Requires-Dist: shandy-sqlfmt>=0.28.2
32
+ Requires-Dist: textual-fastdatatable==0.14.0
22
33
  Requires-Dist: textual-textarea==0.17.2
23
34
  Requires-Dist: textual==6.4.0
24
35
  Requires-Dist: tomlkit<0.14.0,>=0.12.5
@@ -29,7 +40,7 @@ Requires-Dist: harlequin-bigquery; extra == 'bigquery'
29
40
  Provides-Extra: cassandra
30
41
  Requires-Dist: harlequin-cassandra; extra == 'cassandra'
31
42
  Provides-Extra: databricks
32
- Requires-Dist: harlequin-databricks; extra == 'databricks'
43
+ Requires-Dist: harlequin-databricks; (python_version < '3.14') and extra == 'databricks'
33
44
  Provides-Extra: mysql
34
45
  Requires-Dist: harlequin-mysql; extra == 'mysql'
35
46
  Provides-Extra: nebulagraph
@@ -1,8 +1,8 @@
1
1
  [project]
2
2
 
3
3
  name = "harlequin"
4
- version = "2.3.0"
5
- requires-python = ">=3.10,<3.14"
4
+ version = "2.4.0"
5
+ requires-python = ">=3.10"
6
6
  description = "The SQL IDE for Your Terminal."
7
7
  authors = [
8
8
  { name = "Ted Conbeer", email = "tconbeer@users.noreply.github.com" }
@@ -10,10 +10,21 @@ authors = [
10
10
  license = "MIT"
11
11
  readme = "README.md"
12
12
  keywords = ["sql", "tui", "ide", "textual", "harlequin"]
13
+ classifiers = [
14
+ "Development Status :: 4 - Beta",
15
+ "Operating System :: MacOS :: MacOS X",
16
+ "Operating System :: Microsoft :: Windows",
17
+ "Operating System :: POSIX :: Linux",
18
+ "Programming Language :: Python :: 3.10",
19
+ "Programming Language :: Python :: 3.11",
20
+ "Programming Language :: Python :: 3.12",
21
+ "Programming Language :: Python :: 3.13",
22
+ "Programming Language :: Python :: 3.14",
23
+ ]
13
24
  dependencies = [
14
25
  # textual and component libraries
15
26
  "textual==6.4.0",
16
- "textual-fastdatatable==0.13.0",
27
+ "textual-fastdatatable==0.14.0",
17
28
  "textual-textarea==0.17.2",
18
29
 
19
30
  # click
@@ -21,11 +32,15 @@ dependencies = [
21
32
  "rich-click==1.8.5",
22
33
 
23
34
  # other deps
24
- "duckdb>=0.8.0",
25
- "shandy-sqlfmt>=0.19.0",
35
+ "duckdb>=0.8.0; python_version < '3.14'",
36
+ "shandy-sqlfmt>=0.28.2",
26
37
  "platformdirs>=3.10,<5.0",
27
38
  "tomlkit>=0.12.5,<0.14.0",
28
39
  "questionary==2.0.1",
40
+
41
+ # ensure we install from wheels
42
+ "duckdb>=1.4.2.dev0; python_version >= '3.14'",
43
+ "pandas>=2.3; python_version >= '3.14'",
29
44
  ]
30
45
 
31
46
 
@@ -37,7 +52,11 @@ mysql = ["harlequin-mysql"]
37
52
  odbc = ["harlequin-odbc"]
38
53
  bigquery = ["harlequin-bigquery"]
39
54
  trino = ["harlequin-trino"]
40
- databricks = ["harlequin-databricks"]
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'"]
41
60
  adbc = ["harlequin-adbc"]
42
61
  cassandra = ["harlequin-cassandra"]
43
62
  nebulagraph = ["harlequin-nebulagraph"]
@@ -63,7 +82,7 @@ test = [
63
82
  "pytest-textual-snapshot @ https://github.com/tconbeer/pytest-textual-snapshot.git#main",
64
83
  "boto3==1.34.22",
65
84
  # extension tests require consistent version of duckdb.
66
- "duckdb==1.1.1",
85
+ "duckdb==1.4.2.dev23",
67
86
  "flaky>=3.8.1",
68
87
  ]
69
88
 
@@ -64,7 +64,7 @@ def _export_csv(
64
64
  if "header" not in kwargs:
65
65
  kwargs["header"] = False
66
66
  try:
67
- relation = duckdb.arrow(data) # type: ignore[arg-type]
67
+ relation = duckdb.arrow(data)
68
68
  relation.write_csv(file_name=dest_path, **kwargs)
69
69
  except (duckdb.Error, OSError) as e:
70
70
  raise HarlequinCopyError(
@@ -81,7 +81,7 @@ def _export_parquet(
81
81
  import duckdb
82
82
 
83
83
  try:
84
- relation = duckdb.arrow(data) # type: ignore[arg-type]
84
+ relation = duckdb.arrow(data)
85
85
  relation.write_parquet(
86
86
  file_name=dest_path, compression=kwargs.get("compression")
87
87
  )
File without changes
File without changes
File without changes