sqlit-tui 1.5.1__tar.gz → 1.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.
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/PKG-INFO +1 -1
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/_version.py +2 -2
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/cli.py +7 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/adapters/base.py +15 -4
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/postgresql/base.py +9 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/process_worker/app/process_worker.py +8 -1
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/app/multi_statement.py +29 -1
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/completion/completion.py +8 -2
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/completion/core.py +78 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/autocomplete_schema.py +10 -10
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/autocomplete_suggestions.py +50 -4
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/results/ui/mixins/results.py +13 -6
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/cli/test_cli_main.py +26 -1
- sqlit_tui-1.5.2/tests/integration/test_autocomplete_postgresql_schema.py +308 -0
- sqlit_tui-1.5.2/tests/integration/test_results_qualified_mutation.py +222 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_autocomplete_multidb.py +68 -4
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_multi_statement.py +49 -0
- sqlit_tui-1.5.2/tests/unit/test_process_worker_statement_validation.py +68 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_results_copy_markup.py +5 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/.github/workflows/ci.yml +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/.github/workflows/release.yml +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/.gitignore +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/.pre-commit-config.yaml +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/CONTRIBUTING.md +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/LICENSE +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/README.md +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/assets/favorites/logo.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/assets/favorites/logo_sqlit.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/aur/.SRCINFO +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/aur/PKGBUILD +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/config/keymap.template.json +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/config/mock-ssh-missing.json +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/config/settings.template.json +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/config/sqlit-config/settings.json +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/demos/autocomplete-01-basics.gif +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/demos/autocomplete-02-select-from.gif +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/demos/autocomplete-03-joins.gif +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/demos/autocomplete-04-clauses.gif +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/demos/d1-demo.json +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/demos/demo-connect.gif +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/demos/demo-d1.gif +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/demos/demo-docker-picker.gif +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/demos/demo-filter/demo-filter.gif +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/demos/demo-history.gif +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/demos/demo-providers.gif +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/demos/demo-query.gif +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/demos/demo-sqlite.gif +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/demos/demo-supabase-mock.gif +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/catppuccin-latte.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/catppuccin-mocha.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/dracula.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/everforest.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/flexoki.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/gruvbox.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/hackerman.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/kanagawa.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/matte-black.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/monokai.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/nord.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/osaka-jade.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/ristretto.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/rose-pine-dawn.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/rose-pine-moon.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/rose-pine.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/solarized-dark.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/solarized-light.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/sqlit-light.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/sqlit.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/textual-ansi.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/textual-dark.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/textual-light.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/docs/screenshots/all/tokyo-night.png +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/flake.lock +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/flake.nix +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/infra/docker/docker-compose.test.yml +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/infra/docker/impala_quickstart_conf/hive-site.xml +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/pyproject.toml +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/pyrightconfig.json +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/core/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/core/action_validation.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/core/binding_contexts.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/core/connection_manager.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/core/input_context.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/core/key_router.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/core/keymap.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/core/leader_commands.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/core/state_base.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/core/vim.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/cloud_actions.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/connection_flow.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/credentials.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/executor.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/install_strategy.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/installer.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/mock_adapter_core.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/mock_data.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/mock_default_adapters.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/mock_profiles.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/mock_provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/mock_settings.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/mocks.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/persist_utils.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/save_connection.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/session.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/tunnel.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/app/url_parser.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/cli/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/cli/commands.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/cli/helpers.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/cli/prompts.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/aws/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/aws/cache.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/aws/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/azure/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/azure/cache.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/azure/cli.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/azure/discovery.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/azure/firewall.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/azure/models.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/azure/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/base.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/gcp/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/gcp/cache.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/gcp/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/mock.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/cloud/registry.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/discovery/docker_detector.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/domain/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/domain/config.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/domain/password_command.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/domain/passwords.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/domain/stdin_secret.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/adapter_provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/adapters/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/athena/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/athena/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/athena/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/athena/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/bigquery/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/bigquery/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/bigquery/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/bigquery/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/catalog.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/clickhouse/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/clickhouse/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/clickhouse/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/clickhouse/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/cockroachdb/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/cockroachdb/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/cockroachdb/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/cockroachdb/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/config_service.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/d1/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/d1/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/d1/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/d1/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/db2/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/db2/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/db2/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/db2/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/docker.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/driver.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/duckdb/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/duckdb/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/duckdb/data_files.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/duckdb/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/duckdb/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/exceptions.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/explorer_nodes.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/firebird/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/firebird/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/firebird/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/firebird/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/flight/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/flight/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/flight/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/flight/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/hana/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/hana/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/hana/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/hana/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/impala/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/impala/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/impala/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/impala/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/mariadb/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/mariadb/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/mariadb/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/mariadb/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/metadata.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/model.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/motherduck/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/motherduck/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/motherduck/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/motherduck/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/mssql/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/mssql/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/mssql/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/mssql/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/mssql/token_cache.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/mysql/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/mysql/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/mysql/base.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/mysql/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/mysql/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/oracle/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/oracle/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/oracle/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/oracle/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/oracle_legacy/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/oracle_legacy/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/oracle_legacy/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/oracle_legacy/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/osquery/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/osquery/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/osquery/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/osquery/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/postgresql/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/postgresql/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/postgresql/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/postgresql/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/presto/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/presto/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/presto/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/presto/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/redshift/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/redshift/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/redshift/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/redshift/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/registry.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/schema_catalog.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/schema_helpers.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/snowflake/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/snowflake/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/snowflake/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/snowflake/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/spanner/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/spanner/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/spanner/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/spanner/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/sqlite/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/sqlite/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/sqlite/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/sqlite/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/supabase/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/supabase/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/supabase/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/supabase/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/surrealdb/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/surrealdb/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/surrealdb/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/surrealdb/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/teradata/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/teradata/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/teradata/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/teradata/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/tls.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/trino/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/trino/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/trino/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/trino/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/turso/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/turso/adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/turso/provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/turso/schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/providers/validation.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/store/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/store/connections.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/store/memory.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/connection_error_handlers.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/connection_focus.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/connection_form.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/connection_test_controller.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/driver_status.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/driver_status_controller.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/field_widgets.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/fields.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/mixins/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/mixins/connection.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/restart_cache.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/azure_firewall.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/cloud_nodes.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/cloud_providers/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/cloud_providers/aws.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/cloud_providers/azure.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/cloud_providers/base.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/cloud_providers/gcp.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/cloud_providers/utils.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/constants.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/controllers/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/controllers/cloud.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/controllers/docker.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/screen.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/shortcuts.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/state.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/tabs/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/tabs/cloud.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/tabs/connections.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/tabs/docker.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_picker/view.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/connection_styles.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/folder_input.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/install_progress.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/package_setup.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/screens/password_input.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/validation.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/connections/ui/validation_ui_binder.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/app/schema_service.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/domain/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/domain/tree_nodes.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/state/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/state/tree_filter_active.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/state/tree_focused.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/state/tree_multi_select.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/state/tree_on_connection.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/state/tree_on_database.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/state/tree_on_folder.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/state/tree_on_object.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/state/tree_on_table.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/state/tree_visual_mode.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/ui/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/ui/mixins/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/ui/mixins/tree.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/ui/mixins/tree_filter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/ui/mixins/tree_labels.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/ui/mixins/tree_schema.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/ui/tree/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/ui/tree/builder.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/ui/tree/db_switching.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/ui/tree/expansion_state.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/ui/tree/loaders.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/ui/tree/object_info.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/explorer/ui/tree/schema_render.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/process_worker/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/process_worker/app/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/process_worker/app/process_worker_client.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/process_worker/app/support.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/process_worker/ui/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/process_worker/ui/mixins/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/process_worker/ui/mixins/process_worker_lifecycle.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/app/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/app/alerts.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/app/cancellable.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/app/editor.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/app/query_runner.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/app/query_service.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/app/transaction.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/cli/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/cli/alerts_commands.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/cli/commands.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/completion/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/completion/alter_table.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/completion/create_index.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/completion/create_table.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/completion/create_view.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/completion/delete.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/completion/drop.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/completion/insert.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/completion/keywords.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/completion/truncate.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/completion/update.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/clipboard.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/comments.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/deletion.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/motions/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/motions/basic.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/motions/brackets.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/motions/common.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/motions/lines.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/motions/registry.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/motions/search.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/motions/words.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/operators.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/text_objects.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/types.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/editing/undo_history.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/state/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/state/autocomplete_active.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/state/query_focused.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/state/query_insert.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/state/query_normal.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/state/query_visual.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/state/query_visual_line.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/store/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/store/history.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/store/memory.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/store/starred.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/autocomplete.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/query.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/query_constants.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/query_editing_clipboard.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/query_editing_comments.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/query_editing_common.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/query_editing_cursor.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/query_editing_operators.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/query_editing_selection.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/query_editing_undo.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/query_editing_visual.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/query_editing_visual_line.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/query_execution.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/query_results.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/screens/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/screens/char_pending_menu.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/screens/editor_picker.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/screens/query_history.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/screens/text_object_menu.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/results/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/results/formatters.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/results/state/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/results/state/results_filter_active.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/results/state/results_focused.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/results/state/value_view_active.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/results/ui/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/results/ui/mixins/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/results/ui/mixins/results_filter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/results/ui/screens/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/results/ui/screens/column_picker.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/results/ui/screens/save_file.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/results/ui/screens/value_view.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/commands/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/commands/alert.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/commands/credentials.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/commands/debug.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/commands/router.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/commands/watchdog.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/commands/worker.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/idle_scheduler.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/keymap_manager.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/main.css +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/main.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/omarchy.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/startup_flow.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/theme_manager.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/app/themes.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/state/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/state/help_doc.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/state/leader_pending.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/state/machine.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/state/main_screen.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/state/modal_active.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/state/query_executing.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/state/root.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/store/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/store/settings.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/ui/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/ui/mixins/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/ui/mixins/ui_leader.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/ui/mixins/ui_navigation.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/ui/mixins/ui_status.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/ui/screens/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/ui/screens/help.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/ui/screens/key_capture.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/ui/screens/keybinding_editor.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/ui/screens/leader_menu.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/shell/ui/screens/theme.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/mock_settings.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/app/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/app/runtime.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/app/services.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/app/startup_profiler.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/core/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/core/debug_events.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/core/processes.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/core/protocols.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/core/store.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/core/system_probe.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/core/system_probe_fake.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/core/terminal.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/core/utils.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/clipboard.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/lifecycle.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/protocols/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/protocols/autocomplete.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/protocols/connections.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/protocols/core.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/protocols/explorer.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/protocols/lifecycle.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/protocols/metadata.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/protocols/mixins.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/protocols/query.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/protocols/results.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/protocols/screens.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/protocols/startup.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/protocols/ui_navigation.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/protocols/vim.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/protocols/widgets.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/screens/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/screens/column_picker.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/screens/confirm.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/screens/error.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/screens/file_picker.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/screens/loading.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/screens/message.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/spinner.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/widgets.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/widgets_autocomplete.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/widgets_dialogs.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/widgets_filter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/widgets_flash.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/widgets_footer.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/widgets_json_tree.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/widgets_stacked_results.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/widgets_tables.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/widgets_text_area.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/shared/ui/widgets_value_view.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/.env.example +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/athena/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/athena/fixtures.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/athena/infra/.gitignore +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/athena/infra/create_view.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/athena/infra/main.tf +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/athena/infra/outputs.tf +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/athena/infra/variables.tf +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/athena/run_tests.sh +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/athena/test_athena.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/conftest.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/connections/providers/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/connections/providers/hana/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/connections/providers/hana/test_get_columns.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/connections/providers/oracle/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/connections/providers/oracle/test_cursor_cleanup.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/99-fix-sshd-config.sh +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/bigquery.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/cli.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/clickhouse.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/cockroachdb.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/d1/Dockerfile +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/d1/index.js +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/d1/wrangler.toml +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/d1.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/data.duckdb +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/db2.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/duckdb.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/firebird.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/flight.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/impala.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/mariadb.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/mariadb_charset.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/mssql.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/mysql.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/mysql_charset.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/oracle.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/oracle_legacy.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/postgres.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/presto/catalog/memory.properties +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/presto.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/spanner.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/sqlite.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/ssh.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/sshd_config +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/surrealdb.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/trino/catalog/memory.properties +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/trino.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/turso.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/fixtures/utils.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/helpers.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/browsing_base.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/docker_detect/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/docker_detect/conftest.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/docker_detect/database_configs.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/docker_detect/test_all_databases.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/docker_detect/test_docker_detection.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/python_packages/README.md +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/python_packages/docker-compose.yml +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/python_packages/dockerfiles/debian.Dockerfile +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/python_packages/run_tests.sh +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/python_packages/test_package_install_flow.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/test_autocomplete_mysql_columns.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/test_database_browsing_flow.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/test_explorer_refresh_cursor.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/test_mssql_datetimeoffset.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/test_multi_statement_limits.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/test_snowflake_fakesnow.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/test_stale_connection_reconnect.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/test_telescope_watchdog.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/test_tls_cli_config.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/integration/test_transactions.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/performance/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/performance/test_large_dataset_rendering.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_adapter_system_databases.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_apply_database_override.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_autocomplete_database_modes.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_bigquery.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_charset_support.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_clickhouse.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_cloud_discovery.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_cockroachdb.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_commands.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_credentials_connection_store.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_credentials_global.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_credentials_keyring.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_credentials_plaintext.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_cross_database_queries.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_d1.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_database_base.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_database_docker.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_db2.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_docker_detector.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_driver_resolver.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_duckdb.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_firebird.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_flight.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_impala.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_install_strategy.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_installer_cancel.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_mariadb.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_mocks.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_mssql.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_mysql.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_oracle.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_oracle_legacy.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_password_prompts.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_postgresql.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_presto.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_result_formatters.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_schema_capabilities.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_spanner.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_sqlite.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_ssh.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_surrealdb.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_trino.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_turso.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/test_validation.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/conftest.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/explorer/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/explorer/test_cross_database_query.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/explorer/test_filter_accept_cursor_pilot.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/explorer/test_markup_escaping.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/explorer/test_multidb_refresh.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/explorer/test_refresh_cursor_restore.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/explorer/test_refresh_expanded_loads.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/explorer/test_refresh_tree.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/explorer/test_tree_expansion.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/explorer/test_tree_filter_search.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/keybindings/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/keybindings/conftest.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/keybindings/test_contextual.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/keybindings/test_dialogs.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/keybindings/test_insert_mode.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/keybindings/test_keymap_manager.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/keybindings/test_keymap_provider.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/keybindings/test_leader.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/keybindings/test_results_vim_motions.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/keybindings/test_state_machine.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/keybindings/test_vim_motions.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/keybindings/test_visual_mode.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/mocks.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/01_default_sqlite_screen.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/02_edit_mode_postgresql.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/03_before_cancel.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/04_empty_name_after_save_attempt.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/04_empty_name_before_save.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/05_after_switch_to_postgresql.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/05_before_switch_to_postgresql.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/06_sqlite_file_path_field.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/07_sqlite_filled_form.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/08_postgresql_after_switch.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/08_postgresql_filled_form.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/09_duplicate_name_validation.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/10_after_test_connection.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/10_before_test_connection.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/11_navigation_after_tab.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/11_navigation_initial_focus.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/12_navigation_after_shift_tab.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/12_navigation_after_two_tabs.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/snapshots/13_ssh_fields_hidden.svg +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/test_autocomplete_dropdown.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/test_blob_markup.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/test_command_version.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/test_connect_action.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/test_connection_screen.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/test_edit_query_in_editor.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/test_explorer_toggle.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/test_filter_input_widget.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/test_json_tree.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/test_multi_select_actions.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/test_password_input.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/test_query_history.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/test_results_incremental_rendering.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/test_telescope_fresh_start.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/ui/test_tree_schema_grouping.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/providers/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/providers/test_osquery_adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/__init__.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/test_alter_table.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/test_core.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/test_create_index.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/test_create_table.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/test_create_view.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/test_delete.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/test_drop.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/test_edge_cases_cross_returning.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/test_edge_cases_misc.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/test_edge_cases_select_window.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/test_edge_cases_union_cast.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/test_insert.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/test_select.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/test_truncate.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/sql_completion/test_update.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_alert_command_handler.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_auto_reconnect_after_driver_install.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_autocomplete_alias_multi_db.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_cli_prewarm.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_clipboard.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_comments.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_config_dir_resolution.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_connection_config_from_dict.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_connection_flow.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_connection_mixin_edit.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_connection_picker_refresh.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_docker_credential_parsing.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_docker_tab_filtering.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_duckdb_data_files.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_editor_detection.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_executor_reset_on_connection_switch.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_extra_options_passthrough.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_flight_adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_history_store_file_backed.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_incremental_rendering_numeric_range.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_install_strategy_uv.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_motherduck_adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_mssql_adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_mssql_autocommit.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_open_line.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_oracle_adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_password_command.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_postgresql_adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_probe_port.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_process_worker_fallback.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_process_worker_pickle_safety.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_project_dir_routing.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_query_alerts.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_query_alerts_hierarchy.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_query_confirm_integration.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_query_deletion.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_sanitize_row.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_schema_config_validator.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_select_all.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_single_statement_execution.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_snowflake_adapter.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_sqlite_returning.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_starred.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_stdin_secret.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_text_object_menu.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_tls_adapters.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_transaction_executor.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_transaction_state.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_tunnel_paramiko_version.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_undo_history.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_url_parser.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_vim_motions.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_vim_operators.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_vim_text_objects.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/tests/unit/test_vim_visual_mode.py +0 -0
- {sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sqlit-tui
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.2
|
|
4
4
|
Summary: A terminal UI for SQL Server, PostgreSQL, MySQL, SQLite, Oracle, and more
|
|
5
5
|
Project-URL: Homepage, https://github.com/Maxteabag/sqlit
|
|
6
6
|
Project-URL: Repository, https://github.com/Maxteabag/sqlit
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.5.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 5,
|
|
21
|
+
__version__ = version = '1.5.2'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 5, 2)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -490,6 +490,7 @@ def main() -> int:
|
|
|
490
490
|
connection_url, filtered_argv = _extract_connection_url(filtered_argv)
|
|
491
491
|
|
|
492
492
|
log_startup_step("cli_parser_start")
|
|
493
|
+
from sqlit import __version__
|
|
493
494
|
parser = argparse.ArgumentParser(
|
|
494
495
|
prog="sqlit",
|
|
495
496
|
description="A terminal UI for SQL databases",
|
|
@@ -502,6 +503,12 @@ def main() -> int:
|
|
|
502
503
|
),
|
|
503
504
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
504
505
|
)
|
|
506
|
+
parser.add_argument(
|
|
507
|
+
"-v",
|
|
508
|
+
"--version",
|
|
509
|
+
action="version",
|
|
510
|
+
version=f"%(prog)s {__version__}",
|
|
511
|
+
)
|
|
505
512
|
|
|
506
513
|
parser.add_argument(
|
|
507
514
|
"--mock",
|
|
@@ -417,18 +417,29 @@ class DatabaseAdapter(ABC):
|
|
|
417
417
|
"""Quote an identifier (table name, column name, etc.)."""
|
|
418
418
|
pass
|
|
419
419
|
|
|
420
|
+
def format_autocomplete_identifier(self, name: str) -> str:
|
|
421
|
+
"""Format an identifier for insertion from autocomplete.
|
|
422
|
+
|
|
423
|
+
Most dialects keep the raw name for backwards-compatible suggestions.
|
|
424
|
+
Dialects with case-sensitive quoted identifiers can override this to
|
|
425
|
+
return executable SQL for names that need quoting.
|
|
426
|
+
"""
|
|
427
|
+
return name
|
|
428
|
+
|
|
420
429
|
def qualified_name(self, database: str | None, schema: str | None, name: str) -> str:
|
|
421
430
|
"""Build a quoted qualified identifier, skipping empty segments.
|
|
422
431
|
|
|
423
432
|
Default handles SQL Server-style `[db].[schema].[name]`, PostgreSQL-
|
|
424
433
|
style `"schema"."name"`, and single-part `"name"` by omitting any
|
|
425
|
-
empty/None component
|
|
426
|
-
|
|
434
|
+
empty/None component, removing database component if provider
|
|
435
|
+
doesn't support cross-database queries and remove default schema name.
|
|
436
|
+
Dialects that want different composition (e.g. MySQL, which has
|
|
437
|
+
no schemas within databases) can override.
|
|
427
438
|
"""
|
|
428
439
|
parts: list[str] = []
|
|
429
|
-
if database:
|
|
440
|
+
if database and self.supports_cross_database_queries:
|
|
430
441
|
parts.append(self.quote_identifier(database))
|
|
431
|
-
if schema:
|
|
442
|
+
if schema and (schema != self.default_schema or parts):
|
|
432
443
|
parts.append(self.quote_identifier(schema))
|
|
433
444
|
parts.append(self.quote_identifier(name))
|
|
434
445
|
return ".".join(parts)
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import re
|
|
5
6
|
from dataclasses import replace
|
|
6
7
|
from typing import TYPE_CHECKING, Any
|
|
7
8
|
|
|
@@ -17,6 +18,8 @@ from sqlit.domains.connections.providers.adapters.base import (
|
|
|
17
18
|
if TYPE_CHECKING:
|
|
18
19
|
from sqlit.domains.connections.domain.config import ConnectionConfig
|
|
19
20
|
|
|
21
|
+
_POSTGRES_SAFE_UNQUOTED_IDENTIFIER = re.compile(r"^[a-z_][a-z0-9_]*$")
|
|
22
|
+
|
|
20
23
|
|
|
21
24
|
class PostgresBaseAdapter(CursorBasedAdapter):
|
|
22
25
|
"""Base class for PostgreSQL-compatible databases (PostgreSQL, CockroachDB).
|
|
@@ -119,6 +122,12 @@ class PostgresBaseAdapter(CursorBasedAdapter):
|
|
|
119
122
|
escaped = name.replace('"', '""')
|
|
120
123
|
return f'"{escaped}"'
|
|
121
124
|
|
|
125
|
+
def format_autocomplete_identifier(self, name: str) -> str:
|
|
126
|
+
"""Quote autocomplete identifiers that PostgreSQL would otherwise fold."""
|
|
127
|
+
if _POSTGRES_SAFE_UNQUOTED_IDENTIFIER.fullmatch(name):
|
|
128
|
+
return name
|
|
129
|
+
return self.quote_identifier(name)
|
|
130
|
+
|
|
122
131
|
def build_select_query(self, table: str, limit: int, database: str | None = None, schema: str | None = None) -> str:
|
|
123
132
|
"""Build SELECT LIMIT query for PostgreSQL."""
|
|
124
133
|
schema = schema or "public"
|
|
@@ -140,7 +140,14 @@ class _WorkerState:
|
|
|
140
140
|
)
|
|
141
141
|
return
|
|
142
142
|
|
|
143
|
-
|
|
143
|
+
from sqlit.domains.query.editing.comments import is_comment_only_statement
|
|
144
|
+
|
|
145
|
+
executable_statements = [
|
|
146
|
+
statement
|
|
147
|
+
for statement in split_statements(query)
|
|
148
|
+
if not is_comment_only_statement(statement)
|
|
149
|
+
]
|
|
150
|
+
if len(executable_statements) > 1:
|
|
144
151
|
self.send(
|
|
145
152
|
{
|
|
146
153
|
"type": "error",
|
|
@@ -19,7 +19,8 @@ if TYPE_CHECKING:
|
|
|
19
19
|
def _iter_sql_chars(sql: str) -> Iterator[tuple[int, str, bool]]:
|
|
20
20
|
"""Iterate through SQL characters, tracking string literal context.
|
|
21
21
|
|
|
22
|
-
Handles escape sequences (backslash)
|
|
22
|
+
Handles escape sequences (backslash), SQL-style doubled quotes,
|
|
23
|
+
and PostgreSQL dollar-quoted strings ($$ or $tag$).
|
|
23
24
|
|
|
24
25
|
Yields:
|
|
25
26
|
(index, char, outside_string) tuples where outside_string is True
|
|
@@ -27,9 +28,24 @@ def _iter_sql_chars(sql: str) -> Iterator[tuple[int, str, bool]]:
|
|
|
27
28
|
"""
|
|
28
29
|
in_single_quote = False
|
|
29
30
|
in_double_quote = False
|
|
31
|
+
in_dollar_tag: str | None = None
|
|
30
32
|
i = 0
|
|
31
33
|
|
|
32
34
|
while i < len(sql):
|
|
35
|
+
# If inside a dollar-quoted string, check for the closing tag
|
|
36
|
+
if in_dollar_tag is not None:
|
|
37
|
+
if sql[i:].startswith(in_dollar_tag):
|
|
38
|
+
# Yield the characters of the closing tag as inside string
|
|
39
|
+
for offset in range(len(in_dollar_tag)):
|
|
40
|
+
yield (i + offset, sql[i + offset], False)
|
|
41
|
+
i += len(in_dollar_tag)
|
|
42
|
+
in_dollar_tag = None
|
|
43
|
+
continue
|
|
44
|
+
else:
|
|
45
|
+
yield (i, sql[i], False)
|
|
46
|
+
i += 1
|
|
47
|
+
continue
|
|
48
|
+
|
|
33
49
|
char = sql[i]
|
|
34
50
|
|
|
35
51
|
# Handle escape sequences in strings
|
|
@@ -51,6 +67,18 @@ def _iter_sql_chars(sql: str) -> Iterator[tuple[int, str, bool]]:
|
|
|
51
67
|
i += 2
|
|
52
68
|
continue
|
|
53
69
|
|
|
70
|
+
# Check for PostgreSQL dollar-quoted string start
|
|
71
|
+
if char == "$" and not in_single_quote and not in_double_quote:
|
|
72
|
+
# Match $[a-zA-Z_][a-zA-Z0-9_]*$ or $$
|
|
73
|
+
match = re.match(r"^\$([a-zA-Z_][a-zA-Z0-9_]*)?\$", sql[i:])
|
|
74
|
+
if match:
|
|
75
|
+
delimiter = match.group(0)
|
|
76
|
+
in_dollar_tag = delimiter
|
|
77
|
+
for offset in range(len(delimiter)):
|
|
78
|
+
yield (i + offset, sql[i + offset], False)
|
|
79
|
+
i += len(delimiter)
|
|
80
|
+
continue
|
|
81
|
+
|
|
54
82
|
# Toggle quote state and yield
|
|
55
83
|
if char == "'" and not in_double_quote:
|
|
56
84
|
in_single_quote = not in_single_quote
|
|
@@ -21,7 +21,9 @@ from .core import (
|
|
|
21
21
|
get_all_functions,
|
|
22
22
|
get_all_keywords,
|
|
23
23
|
get_current_word,
|
|
24
|
+
get_identifier_namespaces,
|
|
24
25
|
get_last_token_info,
|
|
26
|
+
get_names_for_namespace,
|
|
25
27
|
is_inside_string,
|
|
26
28
|
remove_comments,
|
|
27
29
|
remove_string_literals,
|
|
@@ -256,8 +258,11 @@ def get_completions(
|
|
|
256
258
|
|
|
257
259
|
# Schema.table prefix → suggest tables after schema name
|
|
258
260
|
# Pattern: FROM/JOIN schema. or schema.partial
|
|
259
|
-
|
|
260
|
-
|
|
261
|
+
namespace_match = re.search(r"\b(?:FROM|JOIN)\s+(\w+)\.\w*$", clean_before, re.IGNORECASE)
|
|
262
|
+
if namespace_match:
|
|
263
|
+
namespace = namespace_match.group(1)
|
|
264
|
+
names = get_names_for_namespace(namespace, tables)
|
|
265
|
+
return fuzzy_match(current_word, names if names else tables)
|
|
261
266
|
|
|
262
267
|
# ANY/ALL/SOME ( → suggest SELECT for subquery
|
|
263
268
|
if re.search(r"\b(ANY|ALL|SOME)\s*\(\s*\w*$", clean_before, re.IGNORECASE):
|
|
@@ -326,6 +331,7 @@ def get_completions(
|
|
|
326
331
|
|
|
327
332
|
for suggestion in suggestions:
|
|
328
333
|
if suggestion.type == SuggestionType.TABLE:
|
|
334
|
+
results.extend(get_identifier_namespaces(tables))
|
|
329
335
|
results.extend(tables)
|
|
330
336
|
results.extend(cte_names)
|
|
331
337
|
|
|
@@ -171,6 +171,84 @@ def fuzzy_match(text: str, candidates: list[str], max_results: int = 50) -> list
|
|
|
171
171
|
return [r[2] for r in results[:max_results]]
|
|
172
172
|
|
|
173
173
|
|
|
174
|
+
def split_identifier_parts(identifier: str) -> list[str]:
|
|
175
|
+
"""Split a possibly quoted qualified identifier into unquoted parts."""
|
|
176
|
+
parts: list[str] = []
|
|
177
|
+
current: list[str] = []
|
|
178
|
+
quote: str | None = None
|
|
179
|
+
bracketed = False
|
|
180
|
+
|
|
181
|
+
for char in identifier:
|
|
182
|
+
if bracketed:
|
|
183
|
+
if char == "]":
|
|
184
|
+
bracketed = False
|
|
185
|
+
else:
|
|
186
|
+
current.append(char)
|
|
187
|
+
continue
|
|
188
|
+
|
|
189
|
+
if quote:
|
|
190
|
+
if char == quote:
|
|
191
|
+
quote = None
|
|
192
|
+
else:
|
|
193
|
+
current.append(char)
|
|
194
|
+
continue
|
|
195
|
+
|
|
196
|
+
if char == "[":
|
|
197
|
+
bracketed = True
|
|
198
|
+
continue
|
|
199
|
+
if char in {'"', "`"}:
|
|
200
|
+
quote = char
|
|
201
|
+
continue
|
|
202
|
+
if char == ".":
|
|
203
|
+
part = "".join(current).strip()
|
|
204
|
+
if part:
|
|
205
|
+
parts.append(part)
|
|
206
|
+
current = []
|
|
207
|
+
continue
|
|
208
|
+
|
|
209
|
+
current.append(char)
|
|
210
|
+
|
|
211
|
+
part = "".join(current).strip()
|
|
212
|
+
if part:
|
|
213
|
+
parts.append(part)
|
|
214
|
+
return parts
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
def get_identifier_namespaces(identifiers: list[str]) -> list[str]:
|
|
218
|
+
"""Return first qualifier parts from schema/database-qualified names."""
|
|
219
|
+
namespaces: list[str] = []
|
|
220
|
+
seen: set[str] = set()
|
|
221
|
+
for identifier in identifiers:
|
|
222
|
+
parts = split_identifier_parts(identifier)
|
|
223
|
+
if len(parts) < 2:
|
|
224
|
+
continue
|
|
225
|
+
namespace = parts[0]
|
|
226
|
+
key = namespace.lower()
|
|
227
|
+
if key not in seen:
|
|
228
|
+
seen.add(key)
|
|
229
|
+
namespaces.append(namespace)
|
|
230
|
+
return namespaces
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
def get_names_for_namespace(namespace: str, identifiers: list[str]) -> list[str]:
|
|
234
|
+
"""Return final identifier parts that belong to the requested namespace."""
|
|
235
|
+
namespace_lower = namespace.lower()
|
|
236
|
+
names: list[str] = []
|
|
237
|
+
seen: set[str] = set()
|
|
238
|
+
|
|
239
|
+
for identifier in identifiers:
|
|
240
|
+
parts = split_identifier_parts(identifier)
|
|
241
|
+
if len(parts) < 2 or parts[0].lower() != namespace_lower:
|
|
242
|
+
continue
|
|
243
|
+
name = parts[-1]
|
|
244
|
+
key = name.lower()
|
|
245
|
+
if key not in seen:
|
|
246
|
+
seen.add(key)
|
|
247
|
+
names.append(name)
|
|
248
|
+
|
|
249
|
+
return names
|
|
250
|
+
|
|
251
|
+
|
|
174
252
|
def extract_table_refs(sql: str) -> list[TableRef]:
|
|
175
253
|
"""Extract table references and aliases from SQL.
|
|
176
254
|
|
|
@@ -403,12 +403,12 @@ class AutocompleteSchemaMixin:
|
|
|
403
403
|
try:
|
|
404
404
|
entries: list[tuple[str, list[tuple[str, tuple[str, str, str | None]]]]] = []
|
|
405
405
|
for schema_name, table_name in tables:
|
|
406
|
+
display_name = dialect.format_table_name(schema_name, table_name)
|
|
406
407
|
if single_db:
|
|
407
|
-
full_name =
|
|
408
|
+
full_name = display_name
|
|
408
409
|
else:
|
|
409
410
|
full_name = dialect.qualified_name(database, schema_name, table_name)
|
|
410
411
|
|
|
411
|
-
display_name = dialect.format_table_name(schema_name, table_name)
|
|
412
412
|
metadata = [
|
|
413
413
|
(display_name.lower(), (schema_name, table_name, database)),
|
|
414
414
|
(table_name.lower(), (schema_name, table_name, database)),
|
|
@@ -486,12 +486,12 @@ class AutocompleteSchemaMixin:
|
|
|
486
486
|
try:
|
|
487
487
|
entries: list[tuple[str, list[tuple[str, tuple[str, str, str | None]]]]] = []
|
|
488
488
|
for schema_name, view_name in views:
|
|
489
|
+
display_name = dialect.format_table_name(schema_name, view_name)
|
|
489
490
|
if single_db:
|
|
490
|
-
full_name =
|
|
491
|
+
full_name = display_name
|
|
491
492
|
else:
|
|
492
493
|
full_name = dialect.qualified_name(database, schema_name, view_name)
|
|
493
494
|
|
|
494
|
-
display_name = dialect.format_table_name(schema_name, view_name)
|
|
495
495
|
metadata = [
|
|
496
496
|
(display_name.lower(), (schema_name, view_name, database)),
|
|
497
497
|
(view_name.lower(), (schema_name, view_name, database)),
|
|
@@ -799,16 +799,16 @@ class AutocompleteSchemaMixin:
|
|
|
799
799
|
db_arg = self._get_metadata_db_arg(database)
|
|
800
800
|
tables = await run_db_call(inspector.get_tables, connection, db_arg)
|
|
801
801
|
for schema_name, table_name in tables:
|
|
802
|
+
display_name = dialect.format_table_name(schema_name, table_name)
|
|
802
803
|
# Use simple name if we have a default database, full qualifier otherwise
|
|
803
804
|
if len(databases) == 1:
|
|
804
|
-
# Single database -
|
|
805
|
-
schema_cache["tables"].append(
|
|
805
|
+
# Single database - omit only the provider's default schema
|
|
806
|
+
schema_cache["tables"].append(display_name)
|
|
806
807
|
else:
|
|
807
808
|
# Multiple databases - use qualified identifier
|
|
808
809
|
full_name = dialect.qualified_name(database, schema_name, table_name)
|
|
809
810
|
schema_cache["tables"].append(full_name)
|
|
810
811
|
# Keep metadata for column loading (multiple keys for flexible lookup)
|
|
811
|
-
display_name = dialect.format_table_name(schema_name, table_name)
|
|
812
812
|
table_metadata[display_name.lower()] = (schema_name, table_name, database)
|
|
813
813
|
table_metadata[table_name.lower()] = (schema_name, table_name, database)
|
|
814
814
|
if database:
|
|
@@ -820,16 +820,16 @@ class AutocompleteSchemaMixin:
|
|
|
820
820
|
# Get views
|
|
821
821
|
views = await run_db_call(inspector.get_views, connection, db_arg)
|
|
822
822
|
for schema_name, view_name in views:
|
|
823
|
+
display_name = dialect.format_table_name(schema_name, view_name)
|
|
823
824
|
# Use simple name if we have a default database, full qualifier otherwise
|
|
824
825
|
if len(databases) == 1:
|
|
825
|
-
# Single database -
|
|
826
|
-
schema_cache["views"].append(
|
|
826
|
+
# Single database - omit only the provider's default schema
|
|
827
|
+
schema_cache["views"].append(display_name)
|
|
827
828
|
else:
|
|
828
829
|
# Multiple databases - use qualified identifier
|
|
829
830
|
full_name = dialect.qualified_name(database, schema_name, view_name)
|
|
830
831
|
schema_cache["views"].append(full_name)
|
|
831
832
|
# Keep metadata for column loading (multiple keys for flexible lookup)
|
|
832
|
-
display_name = dialect.format_table_name(schema_name, view_name)
|
|
833
833
|
table_metadata[display_name.lower()] = (schema_name, view_name, database)
|
|
834
834
|
table_metadata[view_name.lower()] = (schema_name, view_name, database)
|
|
835
835
|
if database:
|
{sqlit_tui-1.5.1 → sqlit_tui-1.5.2}/sqlit/domains/query/ui/mixins/autocomplete_suggestions.py
RENAMED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import re
|
|
6
|
+
from typing import cast
|
|
6
7
|
|
|
7
8
|
from sqlit.domains.query.completion import (
|
|
8
9
|
SuggestionType,
|
|
@@ -16,6 +17,46 @@ from sqlit.shared.ui.protocols import AutocompleteMixinHost
|
|
|
16
17
|
class AutocompleteSuggestionsMixin:
|
|
17
18
|
"""Mixin providing SQL autocomplete suggestion logic."""
|
|
18
19
|
|
|
20
|
+
def _format_autocomplete_identifier(self: AutocompleteMixinHost, name: str) -> str:
|
|
21
|
+
provider = getattr(self, "current_provider", None)
|
|
22
|
+
formatter = getattr(getattr(provider, "dialect", None), "format_autocomplete_identifier", None)
|
|
23
|
+
if callable(formatter):
|
|
24
|
+
return cast(str, formatter(name))
|
|
25
|
+
return name
|
|
26
|
+
|
|
27
|
+
def _format_autocomplete_name(self: AutocompleteMixinHost, name: str) -> str:
|
|
28
|
+
if any(marker in name for marker in ('"', "`", "[", "]")):
|
|
29
|
+
return name
|
|
30
|
+
table_metadata = getattr(self, "_table_metadata", {}) or {}
|
|
31
|
+
metadata = table_metadata.get(name.lower())
|
|
32
|
+
if metadata:
|
|
33
|
+
schema_name, object_name, _database = metadata
|
|
34
|
+
provider = getattr(self, "current_provider", None)
|
|
35
|
+
default_schema = getattr(getattr(provider, "capabilities", None), "default_schema", None)
|
|
36
|
+
formatted_object = AutocompleteSuggestionsMixin._format_autocomplete_identifier(self, object_name)
|
|
37
|
+
if schema_name and schema_name != default_schema and name.lower().startswith(f"{schema_name.lower()}."):
|
|
38
|
+
formatted_schema = AutocompleteSuggestionsMixin._format_autocomplete_identifier(self, schema_name)
|
|
39
|
+
return f"{formatted_schema}.{formatted_object}"
|
|
40
|
+
return formatted_object
|
|
41
|
+
if "." not in name:
|
|
42
|
+
return AutocompleteSuggestionsMixin._format_autocomplete_identifier(self, name)
|
|
43
|
+
return ".".join(
|
|
44
|
+
AutocompleteSuggestionsMixin._format_autocomplete_identifier(self, part)
|
|
45
|
+
for part in name.split(".")
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
def _format_autocomplete_columns(
|
|
49
|
+
self: AutocompleteMixinHost,
|
|
50
|
+
columns: dict[str, list[str]],
|
|
51
|
+
) -> dict[str, list[str]]:
|
|
52
|
+
return {
|
|
53
|
+
table_key: [
|
|
54
|
+
AutocompleteSuggestionsMixin._format_autocomplete_identifier(self, column)
|
|
55
|
+
for column in column_names
|
|
56
|
+
]
|
|
57
|
+
for table_key, column_names in columns.items()
|
|
58
|
+
}
|
|
59
|
+
|
|
19
60
|
def _get_current_word(self: AutocompleteMixinHost, text: str, cursor_pos: int) -> str:
|
|
20
61
|
"""Get the word currently being typed at cursor position."""
|
|
21
62
|
before_cursor = text[:cursor_pos]
|
|
@@ -64,8 +105,13 @@ class AutocompleteSuggestionsMixin:
|
|
|
64
105
|
def _get_autocomplete_suggestions(self: AutocompleteMixinHost, text: str, cursor_pos: int) -> list[str]:
|
|
65
106
|
"""Get autocomplete suggestions using the SQL completion engine."""
|
|
66
107
|
# Build schema data for get_completions
|
|
67
|
-
|
|
68
|
-
|
|
108
|
+
raw_tables = self._schema_cache.get("tables", []) + self._schema_cache.get("views", [])
|
|
109
|
+
raw_columns = self._schema_cache.get("columns", {})
|
|
110
|
+
tables = [
|
|
111
|
+
AutocompleteSuggestionsMixin._format_autocomplete_name(self, table)
|
|
112
|
+
for table in raw_tables
|
|
113
|
+
]
|
|
114
|
+
columns = AutocompleteSuggestionsMixin._format_autocomplete_columns(self, raw_columns)
|
|
69
115
|
procedures = self._schema_cache.get("procedures", [])
|
|
70
116
|
|
|
71
117
|
# First check if we need to lazy-load columns before calling get_completions
|
|
@@ -81,7 +127,7 @@ class AutocompleteSuggestionsMixin:
|
|
|
81
127
|
been loaded yet. Returning Loading... for an unknown key would
|
|
82
128
|
wedge forever because the loader skips unknown tables silently.
|
|
83
129
|
"""
|
|
84
|
-
if key in
|
|
130
|
+
if key in raw_columns:
|
|
85
131
|
return False
|
|
86
132
|
if key not in table_metadata:
|
|
87
133
|
return False
|
|
@@ -102,7 +148,7 @@ class AutocompleteSuggestionsMixin:
|
|
|
102
148
|
scope = suggestion.table_scope
|
|
103
149
|
if scope:
|
|
104
150
|
scope_lower = scope.lower()
|
|
105
|
-
table_key = alias_map.get(scope_lower, scope_lower)
|
|
151
|
+
table_key = alias_map.get(scope_lower, scope_lower).lower()
|
|
106
152
|
|
|
107
153
|
if needs_column_load(table_key) and table_key not in loading:
|
|
108
154
|
self._load_columns_for_table(table_key)
|
|
@@ -1050,11 +1050,14 @@ class ResultsMixin:
|
|
|
1050
1050
|
return "'" + str(v).replace("'", "''") + "'"
|
|
1051
1051
|
|
|
1052
1052
|
# Get table name and primary key columns
|
|
1053
|
-
|
|
1053
|
+
qualified_name = "<table>"
|
|
1054
1054
|
pk_column_names: set[str] = set()
|
|
1055
1055
|
table_info = self._get_active_results_table_info(table, _stacked)
|
|
1056
1056
|
if table_info:
|
|
1057
|
-
|
|
1057
|
+
database_name = table_info.get("database")
|
|
1058
|
+
schema_name = table_info.get("schema")
|
|
1059
|
+
table_name = table_info.get("name")
|
|
1060
|
+
qualified_name = self.current_provider.dialect.qualified_name(database_name, schema_name, table_name)
|
|
1058
1061
|
# Get PK columns from column info
|
|
1059
1062
|
for col in table_info.get("columns", []):
|
|
1060
1063
|
if col.is_primary_key:
|
|
@@ -1090,7 +1093,7 @@ class ResultsMixin:
|
|
|
1090
1093
|
where_clause = " AND ".join(where_parts)
|
|
1091
1094
|
|
|
1092
1095
|
# Generate DELETE query for the row
|
|
1093
|
-
query = f"DELETE FROM {
|
|
1096
|
+
query = f"DELETE FROM {qualified_name} WHERE {where_clause};"
|
|
1094
1097
|
|
|
1095
1098
|
# Set query and switch to insert mode
|
|
1096
1099
|
self._suppress_autocomplete_once = True
|
|
@@ -1147,10 +1150,14 @@ class ResultsMixin:
|
|
|
1147
1150
|
return "'" + str(v).replace("'", "''") + "'"
|
|
1148
1151
|
|
|
1149
1152
|
# Get table name and primary key columns
|
|
1150
|
-
|
|
1153
|
+
qualified_name = "<table>"
|
|
1151
1154
|
pk_column_names: set[str] = set()
|
|
1152
1155
|
if table_info:
|
|
1153
|
-
|
|
1156
|
+
database_name = table_info.get("database")
|
|
1157
|
+
schema_name = table_info.get("schema")
|
|
1158
|
+
table_name = table_info.get("name")
|
|
1159
|
+
qualified_name = self.current_provider.dialect.qualified_name(database_name, schema_name, table_name)
|
|
1160
|
+
|
|
1154
1161
|
# Get PK columns from column info
|
|
1155
1162
|
for col in table_info.get("columns", []):
|
|
1156
1163
|
if col.is_primary_key:
|
|
@@ -1182,7 +1189,7 @@ class ResultsMixin:
|
|
|
1182
1189
|
where_clause = " AND ".join(where_parts)
|
|
1183
1190
|
|
|
1184
1191
|
# Generate UPDATE query with empty placeholder for the new value
|
|
1185
|
-
query = f"UPDATE {
|
|
1192
|
+
query = f"UPDATE {qualified_name} SET {column_name} = '' WHERE {where_clause};"
|
|
1186
1193
|
|
|
1187
1194
|
# Find position inside the empty quotes (after "SET column = '")
|
|
1188
1195
|
set_prefix = f"SET {column_name} = '"
|
|
@@ -15,7 +15,12 @@ def _run_cli_with_stdin(*args: str, stdin: str, env_config_dir: Path) -> subproc
|
|
|
15
15
|
input=stdin,
|
|
16
16
|
capture_output=True,
|
|
17
17
|
text=True,
|
|
18
|
-
|
|
18
|
+
cwd=str(env_config_dir),
|
|
19
|
+
env={
|
|
20
|
+
"SQLIT_CONFIG_DIR": str(env_config_dir),
|
|
21
|
+
"PATH": __import__("os").environ.get("PATH", ""),
|
|
22
|
+
"PYTHONPATH": __import__("os").environ.get("PYTHONPATH", ""),
|
|
23
|
+
},
|
|
19
24
|
)
|
|
20
25
|
|
|
21
26
|
|
|
@@ -118,3 +123,23 @@ def test_password_stdin_eof_errors_cleanly(tmp_path: Path):
|
|
|
118
123
|
|
|
119
124
|
assert result.returncode != 0
|
|
120
125
|
assert "EOF" in (result.stderr + result.stdout)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def test_cli_version_option(tmp_path: Path):
|
|
129
|
+
result = _run_cli_with_stdin(
|
|
130
|
+
"--version",
|
|
131
|
+
stdin="",
|
|
132
|
+
env_config_dir=tmp_path,
|
|
133
|
+
)
|
|
134
|
+
assert result.returncode == 0
|
|
135
|
+
assert "sqlit" in result.stdout
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def test_cli_version_short_option(tmp_path: Path):
|
|
139
|
+
result = _run_cli_with_stdin(
|
|
140
|
+
"-v",
|
|
141
|
+
stdin="",
|
|
142
|
+
env_config_dir=tmp_path,
|
|
143
|
+
)
|
|
144
|
+
assert result.returncode == 0
|
|
145
|
+
assert "sqlit" in result.stdout
|