mycli 2.18.4__tar.gz → 2.19.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.
- {mycli-2.18.4 → mycli-2.19.0}/.github/workflows/ci.yml +3 -2
- {mycli-2.18.4 → mycli-2.19.0}/.github/workflows/publish.yml +3 -2
- {mycli-2.18.4/mycli.egg-info → mycli-2.19.0}/PKG-INFO +25 -36
- {mycli-2.18.4 → mycli-2.19.0}/README.md +18 -29
- {mycli-2.18.4 → mycli-2.19.0}/changelog.md +39 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/TIPS +6 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/client_commands.py +1 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/client_connection.py +6 -6
- {mycli-2.18.4 → mycli-2.19.0}/mycli/main_modes/batch.py +1 -2
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/special/__init__.py +2 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/special/dbcommands.py +19 -1
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/special/iocommands.py +3 -2
- {mycli-2.18.4 → mycli-2.19.0/mycli.egg-info}/PKG-INFO +25 -36
- {mycli-2.18.4 → mycli-2.19.0}/mycli.egg-info/requires.txt +6 -6
- mycli-2.19.0/mycli.egg-info/scm_version.json +8 -0
- {mycli-2.18.4 → mycli-2.19.0}/pyproject.toml +8 -13
- {mycli-2.18.4 → mycli-2.19.0}/test/features/fixture_data/help_commands.txt +1 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_client_commands.py +1 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_client_connection.py +1 -1
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_main_modes_batch.py +0 -3
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_special_dbcommands.py +55 -2
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_special_init.py +1 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_special_iocommands.py +15 -0
- mycli-2.18.4/mycli.egg-info/scm_version.json +0 -8
- {mycli-2.18.4 → mycli-2.19.0}/.git-blame-ignore-revs +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/.github/dependabot.yml +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/.github/workflows/lint.yml +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/.github/workflows/typecheck.yml +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/.gitignore +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/AGENTS.md +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/AUTHORS.rst +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/CONTRIBUTING.md +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/LICENSE.txt +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/MANIFEST.in +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/SPONSORS.rst +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/doc/key_bindings.rst +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/doc/llm.md +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/doc/screenshots/main.gif +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/doc/screenshots/tables.png +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/doc/screenshots/total_histogram.png +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/doc/transforms.md +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/AUTHORS +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/SPONSORS +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/__init__.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/app_state.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/boundary_tunnel.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/cli_runner.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/clibuffer.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/client.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/client_query.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/clistyle.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/clitoolbar.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/compat.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/completion_refresher.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/config.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/constants.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/key_bindings.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/lexer.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/main.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/main_modes/checkup.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/main_modes/completions.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/main_modes/execute.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/main_modes/list_dsn.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/main_modes/repl.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/myclirc +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/output.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/__init__.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/batch_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/cli_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/completion_engine.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/filepaths.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/hybrid_redirection.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/interactive_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/key_binding_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/polars_completion.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/polars_transform.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/ptoolkit/__init__.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/ptoolkit/fzf.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/ptoolkit/history.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/ptoolkit/utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/special/delimitercommand.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/special/dsn_aliases.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/special/favoritequeries.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/special/llm.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/special/main.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/special/utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/sql_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/sqlresult.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/string_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/tabular_output/__init__.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/packages/tabular_output/sql_format.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/password_sources.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/resources/completions/bash/mycli +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/resources/completions/fish/mycli.fish +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/resources/completions/zsh/_mycli +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/schema_prefetcher.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/sqlcompleter.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/sqlexecute.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/ssh_tunnel.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/types.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli/vault.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli.egg-info/SOURCES.txt +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli.egg-info/dependency_links.txt +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli.egg-info/entry_points.txt +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli.egg-info/scm_file_list.json +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/mycli.egg-info/top_level.txt +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/setup.cfg +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/__init__.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/__init__.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/auto_vertical.feature +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/basic_commands.feature +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/connection.feature +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/crud_database.feature +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/crud_table.feature +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/db_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/environment.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/fixture_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/iocommands.feature +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/named_queries.feature +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/specials.feature +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/steps/__init__.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/steps/auto_vertical.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/steps/basic_commands.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/steps/connection.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/steps/crud_database.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/steps/crud_table.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/steps/iocommands.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/steps/named_queries.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/steps/specials.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/steps/utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/steps/wrappers.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/features/wrappager.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/myclirc +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/mylogin.cnf +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/conftest.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_app_state.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_bash_completion.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_batch_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_boundary_tunnel.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_checkup.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_cli_runner.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_cli_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_clibuffer.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_client.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_client_query.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_clistyle.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_clitoolbar.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_completer_use_switch.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_completion_engine.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_completion_refresher.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_config.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_delimitercommand.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_dsn_aliases.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_favoritequeries.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_filepaths.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_fish_completion.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_hybrid_redirection.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_interactive_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_key_binding_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_key_bindings.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_main.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_main_modes_execute.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_main_modes_list_dsn.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_main_modes_repl.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_naive_completion.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_output.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_password_sources.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_polars_completion.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_polars_transform.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_ptoolkit_fzf.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_ptoolkit_history.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_ptoolkit_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_schema_prefetcher.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_smart_completion_public_schema_only.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_special_llm.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_special_main.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_special_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_sql_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_sqlcompleter.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_sqlexecute.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_sqlresult.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_ssh_tunnel.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_string_utils.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_tabular_output.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_vault.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/pytests/test_zsh_completion.py +0 -0
- {mycli-2.18.4 → mycli-2.19.0}/test/utils.py +0 -0
|
@@ -151,7 +151,8 @@ jobs:
|
|
|
151
151
|
- uses: vampire/setup-wsl@d1da7f2c0322a5ee4f24975344f67fc0f5baf364 # v7.0.0
|
|
152
152
|
with:
|
|
153
153
|
distribution: Ubuntu-24.04
|
|
154
|
-
|
|
154
|
+
use-cache: 'true'
|
|
155
|
+
update: 'false'
|
|
155
156
|
additional-packages: |
|
|
156
157
|
curl
|
|
157
158
|
git
|
|
@@ -165,7 +166,7 @@ jobs:
|
|
|
165
166
|
run: |
|
|
166
167
|
mkdir -p /root/mycli
|
|
167
168
|
|
|
168
|
-
- uses: ubuntu/wsl/.github/actions/wsl-checkout@
|
|
169
|
+
- uses: ubuntu/wsl/.github/actions/wsl-checkout@3b7a6b2a43af18aa541eeee1669ac27656630097
|
|
169
170
|
with:
|
|
170
171
|
distro: Ubuntu-24.04
|
|
171
172
|
working-dir: /root/mycli
|
|
@@ -159,7 +159,8 @@ jobs:
|
|
|
159
159
|
- uses: vampire/setup-wsl@d1da7f2c0322a5ee4f24975344f67fc0f5baf364 # v7.0.0
|
|
160
160
|
with:
|
|
161
161
|
distribution: Ubuntu-24.04
|
|
162
|
-
|
|
162
|
+
use-cache: 'true'
|
|
163
|
+
update: 'false'
|
|
163
164
|
additional-packages: |
|
|
164
165
|
curl
|
|
165
166
|
git
|
|
@@ -173,7 +174,7 @@ jobs:
|
|
|
173
174
|
run: |
|
|
174
175
|
mkdir -p /root/mycli
|
|
175
176
|
|
|
176
|
-
- uses: ubuntu/wsl/.github/actions/wsl-checkout@
|
|
177
|
+
- uses: ubuntu/wsl/.github/actions/wsl-checkout@3b7a6b2a43af18aa541eeee1669ac27656630097
|
|
177
178
|
with:
|
|
178
179
|
distro: Ubuntu-24.04
|
|
179
180
|
working-dir: /root/mycli
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mycli
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.19.0
|
|
4
4
|
Summary: Rich MySQL terminal client with autocompletion, syntax highlighting, and dataframes
|
|
5
5
|
Author: Mycli Core Team
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -28,15 +28,15 @@ Requires-Python: >=3.10
|
|
|
28
28
|
Description-Content-Type: text/markdown
|
|
29
29
|
License-File: LICENSE.txt
|
|
30
30
|
License-File: AUTHORS.rst
|
|
31
|
-
Requires-Dist: click~=8.
|
|
31
|
+
Requires-Dist: click~=8.5.0
|
|
32
32
|
Requires-Dist: clickdc~=0.1.1
|
|
33
33
|
Requires-Dist: cryptography~=50.0.0
|
|
34
34
|
Requires-Dist: Pygments~=2.21.0
|
|
35
35
|
Requires-Dist: prompt_toolkit<4.0.0,>=3.0.41
|
|
36
36
|
Requires-Dist: PyMySQL~=1.1.2
|
|
37
|
-
Requires-Dist: sqlparse
|
|
38
|
-
Requires-Dist: sqlglot~=30.
|
|
39
|
-
Requires-Dist: sqlglotc~=30.
|
|
37
|
+
Requires-Dist: sqlparse~=0.6.0
|
|
38
|
+
Requires-Dist: sqlglot~=30.17.0
|
|
39
|
+
Requires-Dist: sqlglotc~=30.17.0
|
|
40
40
|
Requires-Dist: configobj~=5.0.9
|
|
41
41
|
Requires-Dist: cli_helpers[styles]~=2.15.1
|
|
42
42
|
Requires-Dist: wcwidth~=0.8.2
|
|
@@ -50,9 +50,9 @@ Requires-Dist: yaspin~=3.4.0
|
|
|
50
50
|
Provides-Extra: llm
|
|
51
51
|
Requires-Dist: llm~=0.33; extra == "llm"
|
|
52
52
|
Requires-Dist: setuptools==83.*; extra == "llm"
|
|
53
|
-
Requires-Dist: pip~=26.1
|
|
53
|
+
Requires-Dist: pip~=26.2.1; extra == "llm"
|
|
54
54
|
Provides-Extra: dataframe
|
|
55
|
-
Requires-Dist: polars~=1.
|
|
55
|
+
Requires-Dist: polars~=1.44.1; extra == "dataframe"
|
|
56
56
|
Requires-Dist: altair~=6.2.2; extra == "dataframe"
|
|
57
57
|
Requires-Dist: vl-convert-python~=1.9.0; extra == "dataframe"
|
|
58
58
|
Provides-Extra: all
|
|
@@ -75,7 +75,7 @@ Dynamic: license-file
|
|
|
75
75
|
[](https://github.com/dbcli/mycli/actions?query=workflow%3Amycli)
|
|
76
76
|
[](https://github.com/dbcli/mycli/blob/main/LICENSE.txt)
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
Rich MySQL terminal client with auto-completion, syntax highlighting, and dataframes.
|
|
79
79
|
|
|
80
80
|
Homepage: [https://mycli.net](https://mycli.net)
|
|
81
81
|
|
|
@@ -93,14 +93,12 @@ Mycli is compatible with MySQL, MariaDB, Percona, TiDB, and Apache Doris.
|
|
|
93
93
|
|
|
94
94
|
Postgres Equivalent: [https://pgcli.com](https://pgcli.com)
|
|
95
95
|
|
|
96
|
-
Release 2.x
|
|
97
|
-
-----------
|
|
96
|
+
# Release 2.x
|
|
98
97
|
|
|
99
98
|
Release 2.0.0 has [breaking changes](https://github.com/dbcli/mycli/blob/v2.0.0/changelog.md#breaking-changes)!
|
|
100
99
|
|
|
101
100
|
|
|
102
|
-
Quick Start
|
|
103
|
-
-----------
|
|
101
|
+
# Quick Start
|
|
104
102
|
|
|
105
103
|
If you already know how to install Python packages, then you can install mycli
|
|
106
104
|
via `pip`. This package is always up to date.
|
|
@@ -111,19 +109,19 @@ You might need `sudo` on Linux.
|
|
|
111
109
|
pip install --upgrade 'mycli[all]'
|
|
112
110
|
```
|
|
113
111
|
|
|
114
|
-
or,
|
|
112
|
+
or, on macOS (`pygments` is optional but recommended):
|
|
115
113
|
|
|
116
114
|
```bash
|
|
117
115
|
brew update && brew install mycli pygments
|
|
118
116
|
```
|
|
119
117
|
|
|
120
|
-
or,
|
|
118
|
+
or, on Debian or Ubuntu (`fzf` and `pygments` are optional but recommended):
|
|
121
119
|
|
|
122
120
|
```bash
|
|
123
121
|
sudo apt-get install mycli fzf python3-pygments
|
|
124
122
|
```
|
|
125
123
|
|
|
126
|
-
|
|
124
|
+
# Usage
|
|
127
125
|
|
|
128
126
|
See
|
|
129
127
|
|
|
@@ -131,11 +129,9 @@ See
|
|
|
131
129
|
mycli --help
|
|
132
130
|
```
|
|
133
131
|
|
|
134
|
-
Features
|
|
135
|
-
--------
|
|
132
|
+
# Features
|
|
136
133
|
|
|
137
|
-
* Auto-completion as you type for SQL keywords as well as tables, views,
|
|
138
|
-
columns, enums, and more!
|
|
134
|
+
* Auto-completion as you type for SQL keywords as well as tables, views, columns, enums, and more!
|
|
139
135
|
* Fuzzy history search using [fzf](https://github.com/junegunn/fzf).
|
|
140
136
|
* Output explorer using [fzf](https://github.com/junegunn/fzf) or other tools.
|
|
141
137
|
* Syntax highlighting using [Pygments](https://pygments.org/).
|
|
@@ -147,8 +143,8 @@ Features
|
|
|
147
143
|
`/fs <alias> <query>` and execute it with `/f <alias>` or `/f <alias> --key=value`.
|
|
148
144
|
* Timing of sql statements and table rendering.
|
|
149
145
|
* Log every query and its results to a file (disabled by default).
|
|
150
|
-
* Pretty print tabular data
|
|
151
|
-
* Support for SSL connections
|
|
146
|
+
* Pretty print tabular data with colors.
|
|
147
|
+
* Support for SSL connections.
|
|
152
148
|
* Shell-style trailing redirects with `$>`, `$>>` and `$|` operators.
|
|
153
149
|
* [Polars](https://pola.rs) dataframe [transforms and plots](https://github.com/dbcli/mycli/blob/main/doc/transforms.md) with `.|`, and Parquet saves with `.>`.
|
|
154
150
|
* Support for [querying LLMs](https://www.mycli.net/llm) with context derived from your schema using `/llm`.
|
|
@@ -160,14 +156,7 @@ options in that file to configure the above features, and more.
|
|
|
160
156
|
Some features are only exposed as [key bindings](https://github.com/dbcli/mycli/blob/main/doc/key_bindings.rst).
|
|
161
157
|
|
|
162
158
|
|
|
163
|
-
|
|
164
|
-
--------------
|
|
165
|
-
|
|
166
|
-
`mycli` is written using [prompt_toolkit](https://github.com/jonathanslenders/python-prompt-toolkit/) and other Python libraries.
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
Contributions
|
|
170
|
-
-------------
|
|
159
|
+
# Contributions
|
|
171
160
|
|
|
172
161
|
If you're interested in contributing to this project, first of all we would like
|
|
173
162
|
to extend our heartfelt gratitude. We've written a small doc to describe how to
|
|
@@ -175,9 +164,9 @@ get mycli running in a development setup.
|
|
|
175
164
|
|
|
176
165
|
https://github.com/dbcli/mycli/blob/main/CONTRIBUTING.md
|
|
177
166
|
|
|
178
|
-
|
|
167
|
+
# Additional Install Instructions
|
|
179
168
|
|
|
180
|
-
|
|
169
|
+
## Shell Completions
|
|
181
170
|
|
|
182
171
|
If installed via Homebrew, shell completions [may already be configured](https://docs.brew.sh/Shell-Completion).
|
|
183
172
|
|
|
@@ -203,7 +192,7 @@ team but provided by OS package maintainers. OS packages could be considerably
|
|
|
203
192
|
out of date.
|
|
204
193
|
|
|
205
194
|
If present, the `fzf` package can be used for fuzzy history search, and as an
|
|
206
|
-
output "explorer" with the `\x` special command. `
|
|
195
|
+
output "explorer" with the `\x` special command. `pygmentize` can be used for
|
|
207
196
|
syntax highlighting within the fuzzy history search. The `less` package is
|
|
208
197
|
also expected, but almost always already installed.
|
|
209
198
|
|
|
@@ -271,7 +260,7 @@ pip install --upgrade 'mycli[all]'
|
|
|
271
260
|
|
|
272
261
|
PRs to complete WSL support would be welcome!
|
|
273
262
|
|
|
274
|
-
|
|
263
|
+
# Thanks
|
|
275
264
|
|
|
276
265
|
This project was funded through Kickstarter. Our thanks to the [backers](https://mycli.net/sponsors) who supported the project.
|
|
277
266
|
|
|
@@ -287,7 +276,7 @@ and printing error messages.
|
|
|
287
276
|
Thanks to [PyMysql](https://github.com/PyMySQL/PyMySQL) for a pure Python adapter to MySQL databases.
|
|
288
277
|
|
|
289
278
|
|
|
290
|
-
|
|
279
|
+
# Compatibility
|
|
291
280
|
|
|
292
281
|
Mycli is tested on macOS (full), Linux (full), Windows (partial), and WSL
|
|
293
282
|
(partial), and requires Python 3.10 or better.
|
|
@@ -301,9 +290,9 @@ following in `~/.myclirc`:
|
|
|
301
290
|
default_character_set = utf8
|
|
302
291
|
```
|
|
303
292
|
|
|
304
|
-
or
|
|
293
|
+
or use `--charset=utf8` when invoking mycli.
|
|
305
294
|
|
|
306
|
-
|
|
295
|
+
# Configuration and Usage
|
|
307
296
|
|
|
308
297
|
For more information on using and configuring mycli, [check out our documentation](https://mycli.net/docs).
|
|
309
298
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://github.com/dbcli/mycli/actions?query=workflow%3Amycli)
|
|
4
4
|
[](https://github.com/dbcli/mycli/blob/main/LICENSE.txt)
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
Rich MySQL terminal client with auto-completion, syntax highlighting, and dataframes.
|
|
7
7
|
|
|
8
8
|
Homepage: [https://mycli.net](https://mycli.net)
|
|
9
9
|
|
|
@@ -21,14 +21,12 @@ Mycli is compatible with MySQL, MariaDB, Percona, TiDB, and Apache Doris.
|
|
|
21
21
|
|
|
22
22
|
Postgres Equivalent: [https://pgcli.com](https://pgcli.com)
|
|
23
23
|
|
|
24
|
-
Release 2.x
|
|
25
|
-
-----------
|
|
24
|
+
# Release 2.x
|
|
26
25
|
|
|
27
26
|
Release 2.0.0 has [breaking changes](https://github.com/dbcli/mycli/blob/v2.0.0/changelog.md#breaking-changes)!
|
|
28
27
|
|
|
29
28
|
|
|
30
|
-
Quick Start
|
|
31
|
-
-----------
|
|
29
|
+
# Quick Start
|
|
32
30
|
|
|
33
31
|
If you already know how to install Python packages, then you can install mycli
|
|
34
32
|
via `pip`. This package is always up to date.
|
|
@@ -39,19 +37,19 @@ You might need `sudo` on Linux.
|
|
|
39
37
|
pip install --upgrade 'mycli[all]'
|
|
40
38
|
```
|
|
41
39
|
|
|
42
|
-
or,
|
|
40
|
+
or, on macOS (`pygments` is optional but recommended):
|
|
43
41
|
|
|
44
42
|
```bash
|
|
45
43
|
brew update && brew install mycli pygments
|
|
46
44
|
```
|
|
47
45
|
|
|
48
|
-
or,
|
|
46
|
+
or, on Debian or Ubuntu (`fzf` and `pygments` are optional but recommended):
|
|
49
47
|
|
|
50
48
|
```bash
|
|
51
49
|
sudo apt-get install mycli fzf python3-pygments
|
|
52
50
|
```
|
|
53
51
|
|
|
54
|
-
|
|
52
|
+
# Usage
|
|
55
53
|
|
|
56
54
|
See
|
|
57
55
|
|
|
@@ -59,11 +57,9 @@ See
|
|
|
59
57
|
mycli --help
|
|
60
58
|
```
|
|
61
59
|
|
|
62
|
-
Features
|
|
63
|
-
--------
|
|
60
|
+
# Features
|
|
64
61
|
|
|
65
|
-
* Auto-completion as you type for SQL keywords as well as tables, views,
|
|
66
|
-
columns, enums, and more!
|
|
62
|
+
* Auto-completion as you type for SQL keywords as well as tables, views, columns, enums, and more!
|
|
67
63
|
* Fuzzy history search using [fzf](https://github.com/junegunn/fzf).
|
|
68
64
|
* Output explorer using [fzf](https://github.com/junegunn/fzf) or other tools.
|
|
69
65
|
* Syntax highlighting using [Pygments](https://pygments.org/).
|
|
@@ -75,8 +71,8 @@ Features
|
|
|
75
71
|
`/fs <alias> <query>` and execute it with `/f <alias>` or `/f <alias> --key=value`.
|
|
76
72
|
* Timing of sql statements and table rendering.
|
|
77
73
|
* Log every query and its results to a file (disabled by default).
|
|
78
|
-
* Pretty print tabular data
|
|
79
|
-
* Support for SSL connections
|
|
74
|
+
* Pretty print tabular data with colors.
|
|
75
|
+
* Support for SSL connections.
|
|
80
76
|
* Shell-style trailing redirects with `$>`, `$>>` and `$|` operators.
|
|
81
77
|
* [Polars](https://pola.rs) dataframe [transforms and plots](https://github.com/dbcli/mycli/blob/main/doc/transforms.md) with `.|`, and Parquet saves with `.>`.
|
|
82
78
|
* Support for [querying LLMs](https://www.mycli.net/llm) with context derived from your schema using `/llm`.
|
|
@@ -88,14 +84,7 @@ options in that file to configure the above features, and more.
|
|
|
88
84
|
Some features are only exposed as [key bindings](https://github.com/dbcli/mycli/blob/main/doc/key_bindings.rst).
|
|
89
85
|
|
|
90
86
|
|
|
91
|
-
|
|
92
|
-
--------------
|
|
93
|
-
|
|
94
|
-
`mycli` is written using [prompt_toolkit](https://github.com/jonathanslenders/python-prompt-toolkit/) and other Python libraries.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
Contributions
|
|
98
|
-
-------------
|
|
87
|
+
# Contributions
|
|
99
88
|
|
|
100
89
|
If you're interested in contributing to this project, first of all we would like
|
|
101
90
|
to extend our heartfelt gratitude. We've written a small doc to describe how to
|
|
@@ -103,9 +92,9 @@ get mycli running in a development setup.
|
|
|
103
92
|
|
|
104
93
|
https://github.com/dbcli/mycli/blob/main/CONTRIBUTING.md
|
|
105
94
|
|
|
106
|
-
|
|
95
|
+
# Additional Install Instructions
|
|
107
96
|
|
|
108
|
-
|
|
97
|
+
## Shell Completions
|
|
109
98
|
|
|
110
99
|
If installed via Homebrew, shell completions [may already be configured](https://docs.brew.sh/Shell-Completion).
|
|
111
100
|
|
|
@@ -131,7 +120,7 @@ team but provided by OS package maintainers. OS packages could be considerably
|
|
|
131
120
|
out of date.
|
|
132
121
|
|
|
133
122
|
If present, the `fzf` package can be used for fuzzy history search, and as an
|
|
134
|
-
output "explorer" with the `\x` special command. `
|
|
123
|
+
output "explorer" with the `\x` special command. `pygmentize` can be used for
|
|
135
124
|
syntax highlighting within the fuzzy history search. The `less` package is
|
|
136
125
|
also expected, but almost always already installed.
|
|
137
126
|
|
|
@@ -199,7 +188,7 @@ pip install --upgrade 'mycli[all]'
|
|
|
199
188
|
|
|
200
189
|
PRs to complete WSL support would be welcome!
|
|
201
190
|
|
|
202
|
-
|
|
191
|
+
# Thanks
|
|
203
192
|
|
|
204
193
|
This project was funded through Kickstarter. Our thanks to the [backers](https://mycli.net/sponsors) who supported the project.
|
|
205
194
|
|
|
@@ -215,7 +204,7 @@ and printing error messages.
|
|
|
215
204
|
Thanks to [PyMysql](https://github.com/PyMySQL/PyMySQL) for a pure Python adapter to MySQL databases.
|
|
216
205
|
|
|
217
206
|
|
|
218
|
-
|
|
207
|
+
# Compatibility
|
|
219
208
|
|
|
220
209
|
Mycli is tested on macOS (full), Linux (full), Windows (partial), and WSL
|
|
221
210
|
(partial), and requires Python 3.10 or better.
|
|
@@ -229,9 +218,9 @@ following in `~/.myclirc`:
|
|
|
229
218
|
default_character_set = utf8
|
|
230
219
|
```
|
|
231
220
|
|
|
232
|
-
or
|
|
221
|
+
or use `--charset=utf8` when invoking mycli.
|
|
233
222
|
|
|
234
|
-
|
|
223
|
+
# Configuration and Usage
|
|
235
224
|
|
|
236
225
|
For more information on using and configuring mycli, [check out our documentation](https://mycli.net/docs).
|
|
237
226
|
|
|
@@ -1,3 +1,42 @@
|
|
|
1
|
+
2.19.0 (2026/09/02)
|
|
2
|
+
==============
|
|
3
|
+
|
|
4
|
+
Features
|
|
5
|
+
--------
|
|
6
|
+
* Add `/ping` special command.
|
|
7
|
+
* Hide timings after `/system clear`.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Documentation
|
|
11
|
+
--------
|
|
12
|
+
* Minor edits to `README.md`.
|
|
13
|
+
* Add `/system` special cases to TIPS.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
Internal
|
|
17
|
+
---------
|
|
18
|
+
* Upgrade `polars` dependency to v1.44.1.
|
|
19
|
+
* Upgrade `sqlparse` dependency to v0.6.0.
|
|
20
|
+
* Upgrade optional `pip` dependency to v26.2.1.
|
|
21
|
+
* Use cache and turn off distro update for WSL tests in CI.
|
|
22
|
+
* Upgrade `click` dependency to v8.5.0.
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
2.18.5 (2026/08/31)
|
|
26
|
+
==============
|
|
27
|
+
|
|
28
|
+
Bug Fixes
|
|
29
|
+
--------
|
|
30
|
+
* Fix incomplete release of Boundary tunnels from beta.
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
Internal
|
|
34
|
+
---------
|
|
35
|
+
* Upgrade `sqlglot` to v30.17.0.
|
|
36
|
+
* Remove `pyproject.toml` llm library cooldown policy exceptions.
|
|
37
|
+
* Upgrade `polars` to v1.43.2.
|
|
38
|
+
|
|
39
|
+
|
|
1
40
|
2.18.4 (2026/08/29)
|
|
2
41
|
==============
|
|
3
42
|
|
|
@@ -106,6 +106,10 @@ use /tee or /notee to write/stop-writing results to a output file!
|
|
|
106
106
|
|
|
107
107
|
use "/system <command>" to execute a shell command!
|
|
108
108
|
|
|
109
|
+
use "/system cd" to change the working directory!
|
|
110
|
+
|
|
111
|
+
use "/system clear" to clear the screen!
|
|
112
|
+
|
|
109
113
|
/T or /tableformat changes the interactive table format!
|
|
110
114
|
|
|
111
115
|
/u or /use changes to a new database!
|
|
@@ -118,6 +122,8 @@ use /dsn to manage saved DSNs!
|
|
|
118
122
|
|
|
119
123
|
use /config to inspect persistent configuration from the REPL!
|
|
120
124
|
|
|
125
|
+
/ping checks the health of the connection!
|
|
126
|
+
|
|
121
127
|
###
|
|
122
128
|
### environment variables
|
|
123
129
|
###
|
|
@@ -132,12 +132,12 @@ class ClientConnectionMixin:
|
|
|
132
132
|
sys.exit(1)
|
|
133
133
|
elif boundary_target_id:
|
|
134
134
|
use_keyring = False
|
|
135
|
-
boundary_executable = self.config.get('
|
|
136
|
-
boundary_address = self.config.get('
|
|
137
|
-
boundary_auth_method_id = self.config.get('
|
|
138
|
-
boundary_options = self.config.get('
|
|
139
|
-
boundary_test_command = self.config.get('
|
|
140
|
-
boundary_auth_command = self.config.get('
|
|
135
|
+
boundary_executable = self.config.get('boundary', {}).get('boundary_executable', 'boundary') or 'boundary'
|
|
136
|
+
boundary_address = self.config.get('boundary', {}).get('address') or None
|
|
137
|
+
boundary_auth_method_id = self.config.get('boundary', {}).get('auth_method_id') or None
|
|
138
|
+
boundary_options = self.config.get('boundary', {}).get('boundary_options') or None
|
|
139
|
+
boundary_test_command = self.config.get('boundary', {}).get('boundary_test_command') or None
|
|
140
|
+
boundary_auth_command = self.config.get('boundary', {}).get('boundary_auth_command') or None
|
|
141
141
|
try:
|
|
142
142
|
self.boundary_tunnel = BoundaryTunnel(
|
|
143
143
|
target_id=boundary_target_id,
|
|
@@ -214,9 +214,8 @@ def main_batch_without_progress_bar(mycli: 'MyCli', cli_args: 'CliArgs') -> int:
|
|
|
214
214
|
|
|
215
215
|
|
|
216
216
|
def main_batch_from_stdin(mycli: 'MyCli', cli_args: 'CliArgs') -> int:
|
|
217
|
-
batch_h = click.get_text_stream('stdin')
|
|
218
217
|
try:
|
|
219
|
-
for statement, counter in statements_from_filehandle(
|
|
218
|
+
for statement, counter in statements_from_filehandle(sys.stdin):
|
|
220
219
|
dispatch_batch_statements(mycli, cli_args, statement, counter)
|
|
221
220
|
except (ValueError, StopIteration, IOError, OSError, pymysql.err.Error) as e:
|
|
222
221
|
click.secho(str(e), err=True, fg='red')
|
|
@@ -10,6 +10,7 @@ import os
|
|
|
10
10
|
from mycli.packages.special.dbcommands import (
|
|
11
11
|
list_databases,
|
|
12
12
|
list_tables,
|
|
13
|
+
ping,
|
|
13
14
|
status,
|
|
14
15
|
)
|
|
15
16
|
from mycli.packages.special.iocommands import (
|
|
@@ -118,6 +119,7 @@ __all__: list[str] = [
|
|
|
118
119
|
'list_tables',
|
|
119
120
|
'open_external_editor',
|
|
120
121
|
'parse_special_command',
|
|
122
|
+
'ping',
|
|
121
123
|
'register_special_command',
|
|
122
124
|
'run_post_redirect_hook',
|
|
123
125
|
'set_delimiter',
|
|
@@ -2,7 +2,7 @@ import logging
|
|
|
2
2
|
import os
|
|
3
3
|
import platform
|
|
4
4
|
|
|
5
|
-
from pymysql import ProgrammingError
|
|
5
|
+
from pymysql import Error, ProgrammingError
|
|
6
6
|
from pymysql.cursors import Cursor
|
|
7
7
|
|
|
8
8
|
from mycli import __version__
|
|
@@ -80,6 +80,24 @@ def list_databases(cur: Cursor, **_) -> list[SQLResult]:
|
|
|
80
80
|
return [SQLResult()]
|
|
81
81
|
|
|
82
82
|
|
|
83
|
+
@special_command(
|
|
84
|
+
r'\ping',
|
|
85
|
+
'/ping',
|
|
86
|
+
'Check the connection.',
|
|
87
|
+
arg_type=ArgType.PARSED_QUERY,
|
|
88
|
+
completion_snippet='check connection',
|
|
89
|
+
)
|
|
90
|
+
def ping(cur: Cursor, arg: str | None = None, **_) -> list[SQLResult]:
|
|
91
|
+
if arg:
|
|
92
|
+
return [SQLResult(status='Syntax: /ping.')]
|
|
93
|
+
|
|
94
|
+
try:
|
|
95
|
+
cur.connection.ping(reconnect=False)
|
|
96
|
+
except Error:
|
|
97
|
+
return [SQLResult(status='Not connected')]
|
|
98
|
+
return [SQLResult(status='Connected')]
|
|
99
|
+
|
|
100
|
+
|
|
83
101
|
@special_command(
|
|
84
102
|
"status",
|
|
85
103
|
"/status",
|
|
@@ -787,8 +787,9 @@ def execute_system_command(arg: str, **_) -> list[SQLResult]:
|
|
|
787
787
|
completed_process = subprocess.run(command, check=False)
|
|
788
788
|
if completed_process.returncode:
|
|
789
789
|
return [SQLResult(status=f'Command exited with return code {completed_process.returncode}')]
|
|
790
|
-
|
|
791
|
-
return [
|
|
790
|
+
if command[0].lower() == 'clear':
|
|
791
|
+
return []
|
|
792
|
+
return [SQLResult()]
|
|
792
793
|
else:
|
|
793
794
|
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
794
795
|
try:
|