From 6ad43a56e6b8c57d87e53721788ac6a253703117 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 22 Jan 2025 11:59:48 -0700 Subject: [PATCH] v2.0.0 (#727) * Bumps version to 2.0.0 * chore: update changelog * fix: bump poetry versions in gha workflows * fix: update adapter deps * fix: improve theme error message --------- Co-authored-by: tconbeer --- .github/workflows/publish.yml | 4 +- .github/workflows/release.yml | 4 +- .github/workflows/static.yml | 4 +- .github/workflows/test.yml | 12 +- CHANGELOG.md | 13 +- poetry.lock | 370 +++++----------------------------- pyproject.toml | 22 +- src/harlequin/app_base.py | 1 + 8 files changed, 80 insertions(+), 350 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 4ad0f032..389d0434 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -35,7 +35,7 @@ jobs: uses: actions/cache@v4 with: path: ~/.local - key: ${{ runner.os }}-poetry-171 # increment to reset cache + key: ${{ runner.os }}-poetry-184 - name: Add cached Poetry to PATH if: steps.cached-poetry-install.outputs.cache-hit == 'true' @@ -45,7 +45,7 @@ jobs: if: steps.cached-poetry-install.outputs.cache-hit != 'true' uses: snok/install-poetry@v1 with: - version: 1.7.1 + version: 1.8.4 - name: Get harlequin Version id: harlequin_version diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7ed11fc1..38e4ca0d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,7 +34,7 @@ jobs: uses: actions/cache@v4 with: path: ~/.local - key: ${{ runner.os }}-poetry-171 # increment to reset cache + key: ${{ runner.os }}-poetry-184 - name: Add cached Poetry to PATH if: steps.cached-poetry-install.outputs.cache-hit == 'true' @@ -44,7 +44,7 @@ jobs: if: steps.cached-poetry-install.outputs.cache-hit != 'true' uses: snok/install-poetry@v1 with: - version: 1.7.1 + version: 1.8.4 - name: Create release branch run: | diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 38a18945..4ccf24d7 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -33,7 +33,7 @@ jobs: uses: actions/cache@v4 with: path: ~/.local - key: ${{ runner.os }}-poetry-171 # increment to reset cache + key: ${{ runner.os }}-poetry-184 - name: Add cached Poetry to PATH if: steps.cached-poetry-install.outputs.cache-hit == 'true' @@ -43,7 +43,7 @@ jobs: if: steps.cached-poetry-install.outputs.cache-hit != 'true' uses: snok/install-poetry@v1 with: - version: 1.7.1 + version: 1.8.4 - name: Load cached venv id: cached-poetry-dependencies diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8a019f59..791a8065 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -40,7 +40,7 @@ jobs: uses: actions/cache@v4 with: path: ~\.local - key: ${{ runner.os }}-poetry-171 + key: ${{ runner.os }}-poetry-184 - name: Add cached Poetry to PATH if: steps.cached-poetry-install.outputs.cache-hit == 'true' @@ -50,7 +50,7 @@ jobs: if: steps.cached-poetry-install.outputs.cache-hit != 'true' uses: snok/install-poetry@v1 with: - version: 1.7.1 + version: 1.8.4 - name: Install python dependencies run: | @@ -99,7 +99,7 @@ jobs: uses: actions/cache@v4 with: path: ~/.local - key: ${{ runner.os }}-poetry-171 + key: ${{ runner.os }}-poetry-184 - name: Add cached Poetry to PATH if: steps.cached-poetry-install.outputs.cache-hit == 'true' @@ -109,7 +109,7 @@ jobs: if: steps.cached-poetry-install.outputs.cache-hit != 'true' uses: snok/install-poetry@v1 with: - version: 1.7.1 + version: 1.8.4 - name: Load cached venv id: cached-poetry-dependencies @@ -171,7 +171,7 @@ jobs: uses: actions/cache@v4 with: path: ~/.local - key: ${{ runner.os }}-poetry-171-1 + key: ${{ runner.os }}-poetry-184 - name: Add cached Poetry to PATH if: steps.cached-poetry-install.outputs.cache-hit == 'true' @@ -181,7 +181,7 @@ jobs: if: steps.cached-poetry-install.outputs.cache-hit != 'true' uses: snok/install-poetry@v1 with: - version: 1.7.1 + version: 1.8.4 - name: Load cached venv id: cached-poetry-dependencies diff --git a/CHANGELOG.md b/CHANGELOG.md index 20737a94..085a6239 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,12 +4,18 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [2.0.0] - 2025-01-07 + ### Breaking Changes + - Drops support for Python 3.8. -- Drops support for Pygments themes in favor of Textual themes. +- Drops support for Pygments themes in favor of Textual themes. Use `harlequin --config` to update your config files with a new theme. The default theme, `harlequin`, remains unchanged. +- Removes the `cassandra` and `nebulagraph` extras, due to package compatibility issues. ### Features -- Fuzzy matching for autocomplete ([#671](https://github.com/tconbeer/harlequin/pull/671)) + +- Adds fuzzy matching for autocomplete ([#671](https://github.com/tconbeer/harlequin/pull/671)). +- Adds support for Python 3.13. ## [1.25.2] - 2024-10-31 @@ -755,7 +761,8 @@ All notable changes to this project will be documented in this file. - Use the DuckDB CLI. -[unreleased]: https://github.com/tconbeer/harlequin/compare/1.25.2...HEAD +[unreleased]: https://github.com/tconbeer/harlequin/compare/2.0.0...HEAD +[2.0.0]: https://github.com/tconbeer/harlequin/compare/1.25.2...2.0.0 [1.25.2]: https://github.com/tconbeer/harlequin/compare/1.25.1...1.25.2 [1.25.1]: https://github.com/tconbeer/harlequin/compare/1.25.0...1.25.1 [1.25.0]: https://github.com/tconbeer/harlequin/compare/1.24.1...1.25.0 diff --git a/poetry.lock b/poetry.lock index fa671fbf..7c08bc1b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -180,28 +180,6 @@ files = [ [package.dependencies] frozenlist = ">=1.1.0" -[[package]] -name = "anyio" -version = "4.8.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = true -python-versions = ">=3.9" -files = [ - {file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"}, - {file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"}, -] - -[package.dependencies] -exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} -idna = ">=2.8" -sniffio = ">=1.1" -typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} - -[package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"] -trio = ["trio (>=0.26.1)"] - [[package]] name = "async-timeout" version = "5.0.1" @@ -719,62 +697,15 @@ botocore = ["botocore"] [[package]] name = "cachetools" -version = "5.5.0" +version = "5.5.1" description = "Extensible memoizing collections and decorators" optional = true python-versions = ">=3.7" files = [ - {file = "cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292"}, - {file = "cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a"}, -] - -[[package]] -name = "cassandra-driver" -version = "3.29.2" -description = "DataStax Driver for Apache Cassandra" -optional = true -python-versions = "*" -files = [ - {file = "cassandra-driver-3.29.2.tar.gz", hash = "sha256:c4310a7d0457f51a63fb019d8ef501588c491141362b53097fbc62fa06559b7c"}, - {file = "cassandra_driver-3.29.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:957208093ff2353230d0d83edf8c8e8582e4f2999d9a33292be6558fec943562"}, - {file = "cassandra_driver-3.29.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d70353b6d9d6e01e2b261efccfe90ce0aa6f416588e6e626ca2ed0aff6b540cf"}, - {file = "cassandra_driver-3.29.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06ad489e4df2cc7f41d3aca8bd8ddeb8071c4fb98240ed07f1dcd9b5180fd879"}, - {file = "cassandra_driver-3.29.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7f1dfa33c3d93350057d6dc163bb92748b6e6a164c408c75cf2c59be0a203b7"}, - {file = "cassandra_driver-3.29.2-cp310-cp310-win32.whl", hash = "sha256:f9df1e6ae4201eb2eae899cb0649d46b3eb0843f075199b51360bc9d59679a31"}, - {file = "cassandra_driver-3.29.2-cp310-cp310-win_amd64.whl", hash = "sha256:c4a005bc0b4fd8b5716ad931e1cc788dbd45967b0bcbdc3dfde33c7f9fde40d4"}, - {file = "cassandra_driver-3.29.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e31cee01a6fc8cf7f32e443fa0031bdc75eed46126831b7a807ab167b4dc1316"}, - {file = "cassandra_driver-3.29.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:52edc6d4bd7d07b10dc08b7f044dbc2ebe24ad7009c23a65e0916faed1a34065"}, - {file = "cassandra_driver-3.29.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb3a9f24fc84324d426a69dc35df66de550833072a4d9a4d63d72fda8fcaecb9"}, - {file = "cassandra_driver-3.29.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e89de04809d02bb1d5d03c0946a7baaaf85e93d7e6414885b4ea2616efe9de0"}, - {file = "cassandra_driver-3.29.2-cp311-cp311-win32.whl", hash = "sha256:7104e5043e9cc98136d7fafe2418cbc448dacb4e1866fe38ff5be76f227437ef"}, - {file = "cassandra_driver-3.29.2-cp311-cp311-win_amd64.whl", hash = "sha256:69aa53f1bdb23487765faa92eef57366637878eafc412f46af999e722353b22f"}, - {file = "cassandra_driver-3.29.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a1e994a82b2e6ab022c5aec24e03ad49fca5f3d47e566a145de34eb0e768473a"}, - {file = "cassandra_driver-3.29.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2039201ae5d9b7c7ce0930af7138d2637ca16a4c7aaae2fbdd4355fbaf3003c5"}, - {file = "cassandra_driver-3.29.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8067fad22e76e250c3846507d804f90b53e943bba442fa1b26583bcac692aaf1"}, - {file = "cassandra_driver-3.29.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee0ebe8eb4fb007d8001ffcd1c3828b74defeb01075d8a1f1116ae9c60f75541"}, - {file = "cassandra_driver-3.29.2-cp312-cp312-win32.whl", hash = "sha256:83dc9399cdabe482fd3095ca54ec227212d8c491b563a7276f6c100e30ee856c"}, - {file = "cassandra_driver-3.29.2-cp312-cp312-win_amd64.whl", hash = "sha256:6c74610f56a4c53863a5d44a2af9c6c3405da19d51966fabd85d7f927d5c6abc"}, - {file = "cassandra_driver-3.29.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c86b0a796ff67d66de7df5f85243832a4dc853217f6a3eade84694f6f4fae151"}, - {file = "cassandra_driver-3.29.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c53700b0d1f8c1d777eaa9e9fb6d17839d9a83f27a61649e0cbaa15d9d3df34b"}, - {file = "cassandra_driver-3.29.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d348c769aa6c37919e7d6247e8cf09c23d387b7834a340408bd7d611f174d80"}, - {file = "cassandra_driver-3.29.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8c496318e3c136cf12ab21e1598fee4b48ea1c71746ea8cc9d32e4dcd09cb93"}, - {file = "cassandra_driver-3.29.2-cp38-cp38-win32.whl", hash = "sha256:d180183451bec81c15e0441fa37a63dc52c6489e860e832cadd854373b423141"}, - {file = "cassandra_driver-3.29.2-cp38-cp38-win_amd64.whl", hash = "sha256:a66b20c421d8fb21f18bd0ac713de6f09c5c25b6ab3d6043c3779b9c012d7c98"}, - {file = "cassandra_driver-3.29.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:70d4d0dce373943308ad461a425fc70a23d0f524859367b8c6fc292400f39954"}, - {file = "cassandra_driver-3.29.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b86427fab4d5a96e91ad82bb9338d4101ae4d3758ba96c356e0198da3de4d350"}, - {file = "cassandra_driver-3.29.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c25b42e1a99f377a933d79ae93ea27601e337a5abb7bb843a0e951cf1b3836f7"}, - {file = "cassandra_driver-3.29.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e36437288d6cd6f6c74b8ee5997692126e24adc2da3d031dc11c7dfea8bc220"}, - {file = "cassandra_driver-3.29.2-cp39-cp39-win32.whl", hash = "sha256:e967c1341a651f03bdc466f3835d72d3c0a0648b562035e6d780fa0b796c02f6"}, - {file = "cassandra_driver-3.29.2-cp39-cp39-win_amd64.whl", hash = "sha256:c5a9aab2367e8aad48ae853847a5a8985749ac5f102676de2c119b33fef13b42"}, + {file = "cachetools-5.5.1-py3-none-any.whl", hash = "sha256:b76651fdc3b24ead3c648bbdeeb940c1b04d365b38b4af66788f9ec4a81d42bb"}, + {file = "cachetools-5.5.1.tar.gz", hash = "sha256:70f238fbba50383ef62e55c6aff6d9673175fe59f7c6782c7a0b9e38f4a9df95"}, ] -[package.dependencies] -geomet = ">=0.1,<0.3" - -[package.extras] -cle = ["cryptography (>=35.0)"] -graph = ["gremlinpython (==3.4.6)"] - [[package]] name = "certifi" version = "2024.12.14" @@ -1166,32 +1097,6 @@ files = [ {file = "frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817"}, ] -[[package]] -name = "future" -version = "1.0.0" -description = "Clean single-source support for Python 3 and 2" -optional = true -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "future-1.0.0-py3-none-any.whl", hash = "sha256:929292d34f5872e70396626ef385ec22355a1fae8ad29e1a734c3e43f9fbc216"}, - {file = "future-1.0.0.tar.gz", hash = "sha256:bd2968309307861edae1458a4f8a4f3598c03be43b97521076aebf5d94c07b05"}, -] - -[[package]] -name = "geomet" -version = "0.2.1.post1" -description = "GeoJSON <-> WKT/WKB conversion utilities" -optional = true -python-versions = ">2.6, !=3.3.*, <4" -files = [ - {file = "geomet-0.2.1.post1-py3-none-any.whl", hash = "sha256:a41a1e336b381416d6cbed7f1745c848e91defaa4d4c1bdc1312732e46ffad2b"}, - {file = "geomet-0.2.1.post1.tar.gz", hash = "sha256:91d754f7c298cbfcabd3befdb69c641c27fe75e808b27aa55028605761d17e95"}, -] - -[package.dependencies] -click = "*" -six = "*" - [[package]] name = "google-api-core" version = "2.24.0" @@ -1253,13 +1158,13 @@ requests = ["requests (>=2.20.0,<3.0.0.dev0)"] [[package]] name = "google-cloud-bigquery" -version = "3.27.0" +version = "3.29.0" description = "Google BigQuery API client library" optional = true python-versions = ">=3.7" files = [ - {file = "google_cloud_bigquery-3.27.0-py2.py3-none-any.whl", hash = "sha256:b53b0431e5ba362976a4cd8acce72194b4116cdf8115030c7b339b884603fcc3"}, - {file = "google_cloud_bigquery-3.27.0.tar.gz", hash = "sha256:379c524054d7b090fa56d0c22662cc6e6458a6229b6754c0e7177e3a73421d2c"}, + {file = "google_cloud_bigquery-3.29.0-py2.py3-none-any.whl", hash = "sha256:5453a4eabe50118254eda9778f3d7dad413490de5f7046b5e66c98f5a1580308"}, + {file = "google_cloud_bigquery-3.29.0.tar.gz", hash = "sha256:fafc2b455ffce3bcc6ce0e884184ef50b6a11350a83b91e327fadda4d5566e72"}, ] [package.dependencies] @@ -1272,10 +1177,10 @@ python-dateutil = ">=2.7.3,<3.0dev" requests = ">=2.21.0,<3.0.0dev" [package.extras] -all = ["Shapely (>=1.8.4,<3.0.0dev)", "bigquery-magics (>=0.1.0)", "db-dtypes (>=0.3.0,<2.0.0dev)", "geopandas (>=0.9.0,<1.0dev)", "google-cloud-bigquery-storage (>=2.6.0,<3.0.0dev)", "grpcio (>=1.47.0,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "importlib-metadata (>=1.0.0)", "ipykernel (>=6.0.0)", "ipywidgets (>=7.7.0)", "opentelemetry-api (>=1.1.0)", "opentelemetry-instrumentation (>=0.20b0)", "opentelemetry-sdk (>=1.1.0)", "pandas (>=1.1.0)", "proto-plus (>=1.22.3,<2.0.0dev)", "protobuf (>=3.20.2,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<6.0.0dev)", "pyarrow (>=3.0.0)", "tqdm (>=4.7.4,<5.0.0dev)"] +all = ["google-cloud-bigquery[bigquery-v2,bqstorage,geopandas,ipython,ipywidgets,opentelemetry,pandas,tqdm]"] bigquery-v2 = ["proto-plus (>=1.22.3,<2.0.0dev)", "protobuf (>=3.20.2,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<6.0.0dev)"] bqstorage = ["google-cloud-bigquery-storage (>=2.6.0,<3.0.0dev)", "grpcio (>=1.47.0,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "pyarrow (>=3.0.0)"] -geopandas = ["Shapely (>=1.8.4,<3.0.0dev)", "geopandas (>=0.9.0,<1.0dev)"] +geopandas = ["Shapely (>=1.8.4,<3.0.0dev)", "geopandas (>=0.9.0,<2.0dev)"] ipython = ["bigquery-magics (>=0.1.0)"] ipywidgets = ["ipykernel (>=6.0.0)", "ipywidgets (>=7.7.0)"] opentelemetry = ["opentelemetry-api (>=1.1.0)", "opentelemetry-instrumentation (>=0.20b0)", "opentelemetry-sdk (>=1.1.0)"] @@ -1482,32 +1387,6 @@ googleapis-common-protos = ">=1.5.5" grpcio = ">=1.69.0" protobuf = ">=5.26.1,<6.0dev" -[[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = true -python-versions = ">=3.7" -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "h2" -version = "4.1.0" -description = "HTTP/2 State-Machine based protocol implementation" -optional = true -python-versions = ">=3.6.1" -files = [ - {file = "h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d"}, - {file = "h2-4.1.0.tar.gz", hash = "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb"}, -] - -[package.dependencies] -hpack = ">=4.0,<5" -hyperframe = ">=6.0,<7" - [[package]] name = "harlequin-adbc" version = "0.1.1" @@ -1532,34 +1411,19 @@ sqlite = ["adbc-driver-sqlite (>=0.9)"] [[package]] name = "harlequin-bigquery" -version = "1.0.2" +version = "1.0.3" description = "A Harlequin adapter for Google BigQuery." optional = true -python-versions = ">=3.8.1,<4.0" +python-versions = "<4.0,>=3.8.1" files = [ - {file = "harlequin_bigquery-1.0.2-py3-none-any.whl", hash = "sha256:d6a1d47ddddbaa97590051fbda35f56731044d0c166c2f42de6f509b79187325"}, - {file = "harlequin_bigquery-1.0.2.tar.gz", hash = "sha256:b883d884ae11e8dee9aac298d86a33906efa588fa0aeedae9ec2b90713b8fbf6"}, + {file = "harlequin_bigquery-1.0.3-py3-none-any.whl", hash = "sha256:1e704091fdeb463ebda89fe4fe70d04d90176b8ff69393a6fe75656b1694ddeb"}, + {file = "harlequin_bigquery-1.0.3.tar.gz", hash = "sha256:8dd0f099f894ef1e33978860d767afacfa8b1333c1d8cf3fd473787743751094"}, ] [package.dependencies] google-cloud-bigquery = ">=3.14.1,<4.0.0" google-cloud-bigquery-storage = ">=2.24.0,<3.0.0" -harlequin = ">=1.7,<2.0" - -[[package]] -name = "harlequin-cassandra" -version = "0.1.1" -description = "A Harlequin adapter for Cassandra." -optional = true -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "harlequin_cassandra-0.1.1-py3-none-any.whl", hash = "sha256:504b5ff8e4fe5586338210796b5b1156af3a5d161e692993e15a5ee936eac6cf"}, - {file = "harlequin_cassandra-0.1.1.tar.gz", hash = "sha256:11a52183abb59cddae83f1c2be3921790c0f89bb8cd75b8c371636d8b53334a4"}, -] - -[package.dependencies] -cassandra-driver = ">=3.29.1,<4.0.0" -harlequin = ">=1.20,<2.0" +harlequin = ">=1.7,<3" [[package]] name = "harlequin-databricks" @@ -1581,161 +1445,64 @@ databricks-sdk = ["databricks-sdk (>=0.40.0)"] [[package]] name = "harlequin-mysql" -version = "0.3.0" +version = "1.0.0" description = "A Harlequin adapter for MySQL." optional = false -python-versions = "<4.0,>=3.8.1" +python-versions = "<3.14,>=3.9" files = [ - {file = "harlequin_mysql-0.3.0-py3-none-any.whl", hash = "sha256:c4f3e76f13c23f73f2d59ec1162a023e6da999700da669e4bd406a391183cbb7"}, - {file = "harlequin_mysql-0.3.0.tar.gz", hash = "sha256:46ef42c5b658568f5340ee53c241cb1333f3e04914807c1f83741e83517878b3"}, + {file = "harlequin_mysql-1.0.0-py3-none-any.whl", hash = "sha256:853834cc2c8fdc223d6e1fbf8371fd55f9c95d65ddd35ccca0b671da70467a60"}, + {file = "harlequin_mysql-1.0.0.tar.gz", hash = "sha256:8e1f8d391e0980bcb6fa257aca939a4ef35f0fa699fad9a03e4835169b6f4585"}, ] [package.dependencies] -harlequin = ">=1.7,<2.0" +harlequin = ">=1.7,<3" mysql-connector-python = ">=8.2.0,<9.0.0" -[[package]] -name = "harlequin-nebulagraph" -version = "0.4.0" -description = "A Harlequin adapter for NebulaGraph." -optional = true -python-versions = "<4.0,>=3.8.1" -files = [ - {file = "harlequin_nebulagraph-0.4.0-py3-none-any.whl", hash = "sha256:ebd67d193da6768a2c50ae9c7b1979ed0aaa89c0547af70ac275c16aa1ecc6d4"}, - {file = "harlequin_nebulagraph-0.4.0.tar.gz", hash = "sha256:672060d9128a68d614e89ecb3ababacbeee8d55ba8677cc952021d273286d57a"}, -] - -[package.dependencies] -harlequin = ">=1.7,<2.0" -nebula3-python = ">=3.8.0,<4.0.0" - [[package]] name = "harlequin-odbc" -version = "0.1.1" +version = "0.2.0" description = "A Harlequin adapter for ODBC drivers." optional = true -python-versions = ">=3.8.1,<4.0" +python-versions = "<3.14,>=3.9" files = [ - {file = "harlequin_odbc-0.1.1-py3-none-any.whl", hash = "sha256:7c5554dec9ef0bedad5acb040b7346ae60257e8b907f6254398ba6beec0cde21"}, - {file = "harlequin_odbc-0.1.1.tar.gz", hash = "sha256:beb2b57836ccdb21b4fa4b151e2cd6fc1b946f4f914eb233de5debc2c08920cf"}, + {file = "harlequin_odbc-0.2.0-py3-none-any.whl", hash = "sha256:b36d1ba05bfc7a6ab98b09f74dbb0259c04569c7aef4ad5f67185bced1a7e167"}, + {file = "harlequin_odbc-0.2.0.tar.gz", hash = "sha256:9a61e182959642af1399df38b16c5027aa177af5b0e555f221f74daaafc91397"}, ] [package.dependencies] -harlequin = ">=1.9.1,<2.0.0" +harlequin = ">=1.9.1,<3" pyodbc = ">=5.0,<6.0" [[package]] name = "harlequin-postgres" -version = "0.4.0" +version = "1.0.0" description = "A Harlequin adapter for Postgres." optional = false -python-versions = "<4.0,>=3.8.1" +python-versions = "<3.14,>=3.9" files = [ - {file = "harlequin_postgres-0.4.0-py3-none-any.whl", hash = "sha256:b099de45e6b09ce3f37c3d1c77b4ac9844f784093924a818b17e0bb0268a06de"}, - {file = "harlequin_postgres-0.4.0.tar.gz", hash = "sha256:d72f12df3e994edf8f660ef9681fdb2a710f740b6a8d9d88ab206d50193c2050"}, + {file = "harlequin_postgres-1.0.0-py3-none-any.whl", hash = "sha256:f2626d9443691bfe9d34bae92a27cf796a7dccef69791df86242fe89a429e1f4"}, + {file = "harlequin_postgres-1.0.0.tar.gz", hash = "sha256:d7fb402e4639c33f6539673642c66411afeac740f18ca22255f5d37cebb8c101"}, ] [package.dependencies] -harlequin = ">=1.20,<2.0" +harlequin = ">=1.20,<3" psycopg = {version = ">=3.2,<4.0", extras = ["binary", "pool"]} [[package]] name = "harlequin-trino" -version = "0.1.3" +version = "0.1.4" description = "A Harlequin adapter for Trino." optional = true -python-versions = ">=3.8.1,<4.0" +python-versions = "<4.0,>=3.8.1" files = [ - {file = "harlequin_trino-0.1.3-py3-none-any.whl", hash = "sha256:f14d4d8297125a5aa95adbb31a1e9a44a69487a191059466f772392f496a8d7e"}, - {file = "harlequin_trino-0.1.3.tar.gz", hash = "sha256:c4308f506e8cc9863ef9e868b69a56a58b01a92990f32fe960fe18deb735ce71"}, + {file = "harlequin_trino-0.1.4-py3-none-any.whl", hash = "sha256:a070a422f33ca0dbed3ea2aa6d849c969baf1157929230f74807874d1a080074"}, + {file = "harlequin_trino-0.1.4.tar.gz", hash = "sha256:bea556eb232d69aabb375b2c62d6624e74d4b68fd8017dd6481dbcabcdbf618d"}, ] [package.dependencies] -harlequin = ">=1.7,<2.0" +harlequin = ">=1.7,<3" trino = ">=0.327.0,<0.328.0" -[[package]] -name = "hpack" -version = "4.0.0" -description = "Pure-Python HPACK header compression" -optional = true -python-versions = ">=3.6.1" -files = [ - {file = "hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c"}, - {file = "hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095"}, -] - -[[package]] -name = "httpcore" -version = "1.0.7" -description = "A minimal low-level HTTP client." -optional = true -python-versions = ">=3.8" -files = [ - {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, - {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, -] - -[package.dependencies] -certifi = "*" -h11 = ">=0.13,<0.15" - -[package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<1.0)"] - -[[package]] -name = "httplib2" -version = "0.22.0" -description = "A comprehensive HTTP client library." -optional = true -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "httplib2-0.22.0-py3-none-any.whl", hash = "sha256:14ae0a53c1ba8f3d37e9e27cf37eabb0fb9980f435ba405d546948b009dd64dc"}, - {file = "httplib2-0.22.0.tar.gz", hash = "sha256:d7a10bc5ef5ab08322488bde8c726eeee5c8618723fdb399597ec58f3d82df81"}, -] - -[package.dependencies] -pyparsing = {version = ">=2.4.2,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<4", markers = "python_version > \"3.0\""} - -[[package]] -name = "httpx" -version = "0.28.1" -description = "The next generation HTTP client." -optional = true -python-versions = ">=3.8" -files = [ - {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, - {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, -] - -[package.dependencies] -anyio = "*" -certifi = "*" -h2 = {version = ">=3,<5", optional = true, markers = "extra == \"http2\""} -httpcore = "==1.*" -idna = "*" - -[package.extras] -brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "hyperframe" -version = "6.0.1" -description = "HTTP/2 framing layer for Python" -optional = true -python-versions = ">=3.6.1" -files = [ - {file = "hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15"}, - {file = "hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914"}, -] - [[package]] name = "identify" version = "2.6.5" @@ -2310,24 +2077,6 @@ fido2 = ["fido2 (==1.1.2)"] gssapi = ["gssapi (>=1.6.9,<=1.8.2)"] opentelemetry = ["Deprecated (>=1.2.6)", "typing-extensions (>=3.7.4)", "zipp (>=0.5)"] -[[package]] -name = "nebula3-python" -version = "3.8.3" -description = "Python client for NebulaGraph v3" -optional = true -python-versions = ">=3.6.2" -files = [ - {file = "nebula3_python-3.8.3-py3-none-any.whl", hash = "sha256:ef583d15c012751cce05bcf8b3869881dbbc3286c6e3fa8b5c65b7c5bb808c38"}, - {file = "nebula3_python-3.8.3.tar.gz", hash = "sha256:da4693171079e9d5efb01a579f7fb62ef7655f6169cc2ff2cbb7b7d902e2cf3d"}, -] - -[package.dependencies] -future = ">=0.18.0" -httplib2 = ">=0.20.0" -httpx = {version = ">=0.22.0", extras = ["http2"]} -pytz = ">=2021.1" -six = ">=1.16.0" - [[package]] name = "nodeenv" version = "1.9.1" @@ -2699,22 +2448,22 @@ testing = ["google-api-core (>=1.31.5)"] [[package]] name = "protobuf" -version = "5.29.2" +version = "5.29.3" description = "" optional = true python-versions = ">=3.8" files = [ - {file = "protobuf-5.29.2-cp310-abi3-win32.whl", hash = "sha256:c12ba8249f5624300cf51c3d0bfe5be71a60c63e4dcf51ffe9a68771d958c851"}, - {file = "protobuf-5.29.2-cp310-abi3-win_amd64.whl", hash = "sha256:842de6d9241134a973aab719ab42b008a18a90f9f07f06ba480df268f86432f9"}, - {file = "protobuf-5.29.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a0c53d78383c851bfa97eb42e3703aefdc96d2036a41482ffd55dc5f529466eb"}, - {file = "protobuf-5.29.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:494229ecd8c9009dd71eda5fd57528395d1eacdf307dbece6c12ad0dd09e912e"}, - {file = "protobuf-5.29.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:b6b0d416bbbb9d4fbf9d0561dbfc4e324fd522f61f7af0fe0f282ab67b22477e"}, - {file = "protobuf-5.29.2-cp38-cp38-win32.whl", hash = "sha256:e621a98c0201a7c8afe89d9646859859be97cb22b8bf1d8eacfd90d5bda2eb19"}, - {file = "protobuf-5.29.2-cp38-cp38-win_amd64.whl", hash = "sha256:13d6d617a2a9e0e82a88113d7191a1baa1e42c2cc6f5f1398d3b054c8e7e714a"}, - {file = "protobuf-5.29.2-cp39-cp39-win32.whl", hash = "sha256:36000f97ea1e76e8398a3f02936aac2a5d2b111aae9920ec1b769fc4a222c4d9"}, - {file = "protobuf-5.29.2-cp39-cp39-win_amd64.whl", hash = "sha256:2d2e674c58a06311c8e99e74be43e7f3a8d1e2b2fdf845eaa347fbd866f23355"}, - {file = "protobuf-5.29.2-py3-none-any.whl", hash = "sha256:fde4554c0e578a5a0bcc9a276339594848d1e89f9ea47b4427c80e5d72f90181"}, - {file = "protobuf-5.29.2.tar.gz", hash = "sha256:b2cc8e8bb7c9326996f0e160137b0861f1a82162502658df2951209d0cb0309e"}, + {file = "protobuf-5.29.3-cp310-abi3-win32.whl", hash = "sha256:3ea51771449e1035f26069c4c7fd51fba990d07bc55ba80701c78f886bf9c888"}, + {file = "protobuf-5.29.3-cp310-abi3-win_amd64.whl", hash = "sha256:a4fa6f80816a9a0678429e84973f2f98cbc218cca434abe8db2ad0bffc98503a"}, + {file = "protobuf-5.29.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8434404bbf139aa9e1300dbf989667a83d42ddda9153d8ab76e0d5dcaca484e"}, + {file = "protobuf-5.29.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:daaf63f70f25e8689c072cfad4334ca0ac1d1e05a92fc15c54eb9cf23c3efd84"}, + {file = "protobuf-5.29.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:c027e08a08be10b67c06bf2370b99c811c466398c357e615ca88c91c07f0910f"}, + {file = "protobuf-5.29.3-cp38-cp38-win32.whl", hash = "sha256:84a57163a0ccef3f96e4b6a20516cedcf5bb3a95a657131c5c3ac62200d23252"}, + {file = "protobuf-5.29.3-cp38-cp38-win_amd64.whl", hash = "sha256:b89c115d877892a512f79a8114564fb435943b59067615894c3b13cd3e1fa107"}, + {file = "protobuf-5.29.3-cp39-cp39-win32.whl", hash = "sha256:0eb32bfa5219fc8d4111803e9a690658aa2e6366384fd0851064b963b6d1f2a7"}, + {file = "protobuf-5.29.3-cp39-cp39-win_amd64.whl", hash = "sha256:6ce8cc3389a20693bfde6c6562e03474c40851b44975c9b2bf6df7d8c4f864da"}, + {file = "protobuf-5.29.3-py3-none-any.whl", hash = "sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f"}, + {file = "protobuf-5.29.3.tar.gz", hash = "sha256:5da0f41edaf117bde316404bad1a486cb4ededf8e4a54891296f648e8e076620"}, ] [[package]] @@ -3045,20 +2794,6 @@ files = [ {file = "pyodbc-5.2.0.tar.gz", hash = "sha256:de8be39809c8ddeeee26a4b876a6463529cd487a60d1393eb2a93e9bcd44a8f5"}, ] -[[package]] -name = "pyparsing" -version = "3.2.1" -description = "pyparsing module - Classes and methods to define and execute parsing grammars" -optional = true -python-versions = ">=3.9" -files = [ - {file = "pyparsing-3.2.1-py3-none-any.whl", hash = "sha256:506ff4f4386c4cec0590ec19e6302d3aedb992fdc02c761e90416f158dacf8e1"}, - {file = "pyparsing-3.2.1.tar.gz", hash = "sha256:61980854fd66de3a90028d679a954d5f2623e83144b5afe5ee86f43d762e5f0a"}, -] - -[package.extras] -diagrams = ["jinja2", "railroad-diagrams"] - [[package]] name = "pyperclip" version = "1.9.0" @@ -3383,17 +3118,6 @@ files = [ {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = true -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - [[package]] name = "syrupy" version = "4.8.0" @@ -4253,10 +3977,8 @@ type = ["pytest-mypy"] [extras] adbc = ["harlequin-adbc"] bigquery = ["harlequin-bigquery"] -cassandra = ["harlequin-cassandra"] databricks = ["harlequin-databricks"] mysql = ["harlequin-mysql"] -nebulagraph = ["harlequin-nebulagraph"] odbc = ["harlequin-odbc"] postgres = ["harlequin-postgres"] s3 = ["boto3"] @@ -4265,4 +3987,4 @@ trino = ["harlequin-trino"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.14.0" -content-hash = "9dfdcbd19b31bd0f4472423acd9d8f6008f7da50897cc1810b8f85fd60c1817d" +content-hash = "7b3808a8a4bfe94462548d62f5fa952fe812bbbc128e9a4eddd2ce2152dd0327" diff --git a/pyproject.toml b/pyproject.toml index 9a191131..13071484 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "harlequin" -version = "1.25.2" +version = "2.0.0" description = "The SQL IDE for Your Terminal." authors = ["Ted Conbeer "] license = "MIT" @@ -54,21 +54,21 @@ pyarrow = [ ] # database adapters (optional installs for extras) -harlequin-postgres = { version = ">=0.3", optional = true } -harlequin-mysql = { version = ">=0.1", optional = true } -harlequin-odbc = { version = ">=0.1", optional = true } -harlequin-bigquery = { version = "^1.0", optional = true } +harlequin-postgres = { version = ">=1.0", optional = true } +harlequin-mysql = { version = ">=1.0", optional = true } +harlequin-odbc = { version = ">=0.2", optional = true } +harlequin-bigquery = { version = ">=1.0.3", optional = true } harlequin-trino = { version = ">=0.1", optional = true } harlequin-databricks = { version = ">=0.5.2", optional = true } harlequin-adbc = { version = ">=0.1", optional = true } -harlequin-cassandra = { version = ">=0.1", optional = true } -harlequin-nebulagraph = { version = ">=0.1", optional = true } +# harlequin-cassandra = { version = ">=0.1", optional = true } +# harlequin-nebulagraph = { version = ">=0.1", optional = true } [tool.poetry.group.dev.dependencies] pre-commit = "^3.3.1" textual-dev = { version="^1.0.1", python="<3.12.0" } -harlequin-postgres = ">=0.3,<0.5" -harlequin-mysql = ">=0.2,<0.4" +harlequin-postgres = "^1" +harlequin-mysql = "^1" pyinstrument = "^5" [tool.poetry.group.static.dependencies] @@ -96,8 +96,8 @@ bigquery = ["harlequin-bigquery"] trino = ["harlequin-trino"] databricks = ["harlequin-databricks"] adbc = ["harlequin-adbc"] -cassandra = ["harlequin-cassandra"] -nebulagraph = ["harlequin-nebulagraph"] +# cassandra = ["harlequin-cassandra"] +# nebulagraph = ["harlequin-nebulagraph"] [tool.poetry.plugins."harlequin.adapter"] duckdb = "harlequin_duckdb:DuckDbAdapter" diff --git a/src/harlequin/app_base.py b/src/harlequin/app_base.py index cb353f47..f1eec17e 100644 --- a/src/harlequin/app_base.py +++ b/src/harlequin/app_base.py @@ -51,6 +51,7 @@ def __init__( e = HarlequinThemeError( ( f"No theme found with the name {theme}.\n" + "Supported themes changed in Harlequin v2.0.0. " "Theme must be `harlequin` or the name of a Textual Theme:\n" f"{valid_themes}" ),