sqlit-tui 1.4.0__tar.gz → 1.4.1__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.4.0 → sqlit_tui-1.4.1}/.github/workflows/release.yml +24 -8
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/PKG-INFO +3 -4
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/README.md +1 -1
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/aur/.SRCINFO +1 -2
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/aur/PKGBUILD +1 -2
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/infra/docker/docker-compose.test.yml +42 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/pyproject.toml +1 -3
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/_version.py +2 -2
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/install_strategy.py +23 -10
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/tunnel.py +12 -1
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/adapters/base.py +16 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/duckdb/adapter.py +43 -0
- sqlit_tui-1.4.1/sqlit/domains/connections/providers/duckdb/data_files.py +106 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/firebird/adapter.py +10 -2
- sqlit_tui-1.4.1/sqlit/domains/connections/providers/mariadb/adapter.py +208 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/model.py +12 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/mssql/adapter.py +138 -3
- sqlit_tui-1.4.1/sqlit/domains/connections/providers/mssql/token_cache.py +66 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/oracle/adapter.py +4 -4
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/postgresql/adapter.py +9 -2
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/snowflake/adapter.py +2 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/snowflake/schema.py +11 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/sqlite/adapter.py +3 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/ui/mixins/tree_filter.py +136 -12
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/app/query_service.py +10 -1
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/autocomplete_schema.py +6 -30
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/autocomplete_suggestions.py +14 -2
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/query_editing_clipboard.py +14 -7
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/results/ui/mixins/results.py +10 -24
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/app/services.py +1 -1
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/core/system_probe.py +18 -1
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/core/system_probe_fake.py +3 -0
- sqlit_tui-1.4.1/sqlit/shared/ui/clipboard.py +165 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/protocols/query.py +4 -1
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/widgets_filter.py +4 -1
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/widgets_tables.py +4 -1
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/widgets_text_area.py +22 -4
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/conftest.py +1 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/cockroachdb.py +2 -2
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/db2.py +2 -2
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/firebird.py +2 -2
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/impala.py +2 -2
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/mariadb.py +6 -6
- sqlit_tui-1.4.1/tests/fixtures/mariadb_charset.py +249 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/mssql.py +2 -2
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/mysql.py +2 -2
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/mysql_charset.py +3 -3
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/oracle.py +2 -2
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/oracle_legacy.py +2 -2
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/postgres.py +2 -2
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/utils.py +41 -1
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/test_stale_connection_reconnect.py +3 -3
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_charset_support.py +298 -2
- sqlit_tui-1.4.1/tests/ui/explorer/test_filter_accept_cursor_pilot.py +80 -0
- sqlit_tui-1.4.1/tests/ui/explorer/test_tree_filter_search.py +455 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/keybindings/test_visual_mode.py +45 -0
- sqlit_tui-1.4.1/tests/ui/test_blob_markup.py +64 -0
- sqlit_tui-1.4.1/tests/ui/test_filter_input_widget.py +62 -0
- sqlit_tui-1.4.1/tests/unit/test_autocomplete_multidb.py +155 -0
- sqlit_tui-1.4.1/tests/unit/test_clipboard.py +50 -0
- sqlit_tui-1.4.1/tests/unit/test_duckdb_data_files.py +257 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_extra_options_passthrough.py +33 -1
- sqlit_tui-1.4.1/tests/unit/test_install_strategy_uv.py +110 -0
- sqlit_tui-1.4.1/tests/unit/test_mssql_adapter.py +594 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_oracle_adapter.py +41 -11
- sqlit_tui-1.4.1/tests/unit/test_postgresql_adapter.py +76 -0
- sqlit_tui-1.4.1/tests/unit/test_probe_port.py +61 -0
- sqlit_tui-1.4.1/tests/unit/test_sqlite_returning.py +71 -0
- sqlit_tui-1.4.1/tests/unit/test_tunnel_paramiko_version.py +43 -0
- sqlit_tui-1.4.0/sqlit/domains/connections/providers/mariadb/adapter.py +0 -389
- sqlit_tui-1.4.0/tests/unit/test_mssql_adapter.py +0 -237
- sqlit_tui-1.4.0/tests/unit/test_postgresql_adapter.py +0 -34
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/.github/workflows/ci.yml +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/.gitignore +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/.pre-commit-config.yaml +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/CONTRIBUTING.md +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/LICENSE +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/assets/favorites/logo.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/assets/favorites/logo_sqlit.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/config/mock-ssh-missing.json +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/config/settings.template.json +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/config/sqlit-config/settings.json +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/demos/autocomplete-01-basics.gif +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/demos/autocomplete-02-select-from.gif +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/demos/autocomplete-03-joins.gif +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/demos/autocomplete-04-clauses.gif +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/demos/d1-demo.json +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/demos/demo-connect.gif +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/demos/demo-d1.gif +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/demos/demo-docker-picker.gif +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/demos/demo-filter/demo-filter.gif +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/demos/demo-history.gif +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/demos/demo-providers.gif +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/demos/demo-query.gif +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/demos/demo-sqlite.gif +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/demos/demo-supabase-mock.gif +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/catppuccin-latte.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/catppuccin-mocha.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/dracula.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/everforest.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/flexoki.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/gruvbox.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/hackerman.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/kanagawa.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/matte-black.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/monokai.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/nord.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/osaka-jade.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/ristretto.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/rose-pine-dawn.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/rose-pine-moon.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/rose-pine.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/solarized-dark.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/solarized-light.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/sqlit-light.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/sqlit.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/textual-ansi.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/textual-dark.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/textual-light.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/docs/screenshots/all/tokyo-night.png +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/flake.lock +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/flake.nix +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/infra/docker/impala_quickstart_conf/hive-site.xml +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/pyrightconfig.json +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/cli.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/core/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/core/action_validation.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/core/binding_contexts.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/core/connection_manager.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/core/input_context.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/core/key_router.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/core/keymap.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/core/leader_commands.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/core/state_base.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/core/vim.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/cloud_actions.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/connection_flow.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/credentials.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/executor.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/installer.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/mock_adapter_core.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/mock_data.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/mock_default_adapters.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/mock_profiles.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/mock_provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/mock_settings.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/mocks.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/persist_utils.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/save_connection.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/session.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/app/url_parser.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/cli/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/cli/commands.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/cli/helpers.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/cli/prompts.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/aws/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/aws/cache.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/aws/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/azure/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/azure/cache.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/azure/cli.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/azure/discovery.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/azure/firewall.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/azure/models.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/azure/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/base.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/gcp/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/gcp/cache.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/gcp/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/mock.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/cloud/registry.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/discovery/docker_detector.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/domain/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/domain/config.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/domain/password_command.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/domain/passwords.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/adapter_provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/adapters/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/athena/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/athena/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/athena/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/athena/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/bigquery/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/bigquery/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/bigquery/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/bigquery/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/catalog.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/clickhouse/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/clickhouse/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/clickhouse/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/clickhouse/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/cockroachdb/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/cockroachdb/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/cockroachdb/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/cockroachdb/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/config_service.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/d1/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/d1/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/d1/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/d1/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/db2/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/db2/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/db2/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/db2/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/docker.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/driver.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/duckdb/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/duckdb/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/duckdb/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/exceptions.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/explorer_nodes.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/firebird/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/firebird/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/firebird/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/flight/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/flight/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/flight/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/flight/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/hana/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/hana/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/hana/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/hana/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/impala/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/impala/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/impala/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/impala/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/mariadb/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/mariadb/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/mariadb/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/metadata.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/motherduck/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/motherduck/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/motherduck/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/motherduck/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/mssql/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/mssql/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/mssql/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/mysql/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/mysql/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/mysql/base.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/mysql/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/mysql/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/oracle/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/oracle/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/oracle/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/oracle_legacy/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/oracle_legacy/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/oracle_legacy/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/oracle_legacy/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/osquery/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/osquery/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/osquery/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/osquery/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/postgresql/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/postgresql/base.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/postgresql/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/postgresql/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/presto/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/presto/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/presto/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/presto/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/redshift/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/redshift/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/redshift/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/redshift/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/registry.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/schema_catalog.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/schema_helpers.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/snowflake/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/snowflake/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/spanner/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/spanner/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/spanner/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/spanner/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/sqlite/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/sqlite/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/sqlite/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/supabase/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/supabase/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/supabase/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/supabase/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/surrealdb/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/surrealdb/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/surrealdb/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/surrealdb/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/teradata/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/teradata/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/teradata/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/teradata/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/tls.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/trino/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/trino/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/trino/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/trino/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/turso/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/turso/adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/turso/provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/turso/schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/providers/validation.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/store/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/store/connections.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/store/memory.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/connection_error_handlers.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/connection_focus.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/connection_form.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/connection_test_controller.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/driver_status.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/driver_status_controller.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/field_widgets.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/fields.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/mixins/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/mixins/connection.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/restart_cache.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/azure_firewall.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/cloud_nodes.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/cloud_providers/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/cloud_providers/aws.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/cloud_providers/azure.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/cloud_providers/base.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/cloud_providers/gcp.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/cloud_providers/utils.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/constants.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/controllers/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/controllers/cloud.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/controllers/docker.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/screen.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/shortcuts.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/state.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/tabs/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/tabs/cloud.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/tabs/connections.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/tabs/docker.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_picker/view.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/connection_styles.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/folder_input.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/install_progress.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/package_setup.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/screens/password_input.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/validation.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/connections/ui/validation_ui_binder.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/app/schema_service.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/domain/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/domain/tree_nodes.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/state/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/state/tree_filter_active.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/state/tree_focused.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/state/tree_multi_select.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/state/tree_on_connection.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/state/tree_on_database.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/state/tree_on_folder.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/state/tree_on_object.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/state/tree_on_table.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/state/tree_visual_mode.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/ui/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/ui/mixins/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/ui/mixins/tree.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/ui/mixins/tree_labels.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/ui/mixins/tree_schema.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/ui/tree/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/ui/tree/builder.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/ui/tree/db_switching.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/ui/tree/expansion_state.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/ui/tree/loaders.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/ui/tree/object_info.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/explorer/ui/tree/schema_render.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/process_worker/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/process_worker/app/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/process_worker/app/process_worker.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/process_worker/app/process_worker_client.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/process_worker/app/support.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/process_worker/ui/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/process_worker/ui/mixins/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/process_worker/ui/mixins/process_worker_lifecycle.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/app/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/app/alerts.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/app/cancellable.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/app/multi_statement.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/app/query_runner.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/app/transaction.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/cli/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/cli/commands.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/completion/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/completion/alter_table.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/completion/completion.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/completion/core.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/completion/create_index.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/completion/create_table.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/completion/create_view.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/completion/delete.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/completion/drop.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/completion/insert.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/completion/keywords.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/completion/truncate.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/completion/update.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/clipboard.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/comments.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/deletion.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/motions/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/motions/basic.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/motions/brackets.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/motions/common.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/motions/lines.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/motions/registry.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/motions/search.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/motions/words.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/operators.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/text_objects.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/types.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/editing/undo_history.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/state/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/state/autocomplete_active.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/state/query_focused.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/state/query_insert.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/state/query_normal.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/state/query_visual.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/state/query_visual_line.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/store/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/store/history.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/store/memory.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/store/starred.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/autocomplete.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/query.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/query_constants.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/query_editing_comments.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/query_editing_common.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/query_editing_cursor.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/query_editing_operators.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/query_editing_selection.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/query_editing_undo.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/query_editing_visual.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/query_editing_visual_line.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/query_execution.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/mixins/query_results.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/screens/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/screens/char_pending_menu.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/screens/query_history.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/query/ui/screens/text_object_menu.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/results/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/results/formatters.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/results/state/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/results/state/results_filter_active.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/results/state/results_focused.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/results/state/value_view_active.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/results/ui/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/results/ui/mixins/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/results/ui/mixins/results_filter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/results/ui/screens/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/results/ui/screens/column_picker.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/results/ui/screens/save_file.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/results/ui/screens/value_view.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/app/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/app/commands/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/app/commands/alert.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/app/commands/credentials.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/app/commands/debug.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/app/commands/router.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/app/commands/watchdog.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/app/commands/worker.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/app/idle_scheduler.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/app/main.css +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/app/main.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/app/omarchy.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/app/startup_flow.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/app/theme_manager.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/app/themes.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/state/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/state/leader_pending.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/state/machine.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/state/main_screen.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/state/modal_active.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/state/query_executing.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/state/root.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/store/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/store/settings.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/ui/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/ui/mixins/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/ui/mixins/ui_leader.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/ui/mixins/ui_navigation.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/ui/mixins/ui_status.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/ui/screens/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/ui/screens/help.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/ui/screens/leader_menu.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/domains/shell/ui/screens/theme.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/mock_settings.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/app/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/app/runtime.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/app/startup_profiler.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/core/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/core/debug_events.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/core/processes.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/core/protocols.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/core/store.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/core/terminal.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/core/utils.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/lifecycle.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/protocols/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/protocols/autocomplete.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/protocols/connections.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/protocols/core.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/protocols/explorer.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/protocols/lifecycle.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/protocols/metadata.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/protocols/mixins.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/protocols/results.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/protocols/screens.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/protocols/startup.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/protocols/ui_navigation.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/protocols/vim.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/protocols/widgets.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/screens/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/screens/confirm.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/screens/error.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/screens/file_picker.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/screens/loading.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/screens/message.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/spinner.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/widgets.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/widgets_autocomplete.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/widgets_dialogs.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/widgets_flash.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/widgets_footer.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/widgets_json_tree.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/widgets_stacked_results.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/sqlit/shared/ui/widgets_value_view.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/.env.example +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/athena/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/athena/fixtures.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/athena/infra/.gitignore +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/athena/infra/create_view.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/athena/infra/main.tf +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/athena/infra/outputs.tf +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/athena/infra/variables.tf +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/athena/run_tests.sh +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/athena/test_athena.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/cli/test_cli_main.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/connections/providers/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/connections/providers/hana/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/connections/providers/hana/test_get_columns.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/connections/providers/oracle/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/connections/providers/oracle/test_cursor_cleanup.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/99-fix-sshd-config.sh +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/bigquery.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/cli.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/clickhouse.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/d1/Dockerfile +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/d1/index.js +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/d1/wrangler.toml +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/d1.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/data.duckdb +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/duckdb.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/flight.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/presto/catalog/memory.properties +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/presto.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/spanner.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/sqlite.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/ssh.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/sshd_config +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/surrealdb.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/trino/catalog/memory.properties +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/trino.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/fixtures/turso.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/helpers.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/browsing_base.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/docker_detect/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/docker_detect/conftest.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/docker_detect/database_configs.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/docker_detect/test_all_databases.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/docker_detect/test_docker_detection.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/python_packages/README.md +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/python_packages/docker-compose.yml +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/python_packages/dockerfiles/debian.Dockerfile +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/python_packages/run_tests.sh +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/python_packages/test_package_install_flow.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/test_autocomplete_mysql_columns.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/test_database_browsing_flow.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/test_explorer_refresh_cursor.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/test_mssql_datetimeoffset.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/test_multi_statement_limits.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/test_snowflake_fakesnow.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/test_telescope_watchdog.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/test_tls_cli_config.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/integration/test_transactions.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/performance/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/performance/test_large_dataset_rendering.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_adapter_system_databases.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_apply_database_override.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_autocomplete_database_modes.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_bigquery.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_clickhouse.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_cloud_discovery.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_cockroachdb.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_commands.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_credentials_connection_store.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_credentials_global.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_credentials_keyring.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_credentials_plaintext.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_cross_database_queries.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_d1.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_database_base.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_database_docker.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_db2.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_docker_detector.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_driver_resolver.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_duckdb.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_firebird.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_flight.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_impala.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_install_strategy.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_installer_cancel.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_mariadb.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_mocks.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_mssql.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_mysql.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_oracle.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_oracle_legacy.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_password_prompts.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_postgresql.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_presto.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_schema_capabilities.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_spanner.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_sqlite.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_ssh.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_surrealdb.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_trino.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_turso.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/test_validation.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/conftest.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/explorer/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/explorer/test_cross_database_query.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/explorer/test_markup_escaping.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/explorer/test_multidb_refresh.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/explorer/test_refresh_cursor_restore.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/explorer/test_refresh_expanded_loads.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/explorer/test_refresh_tree.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/explorer/test_tree_expansion.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/keybindings/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/keybindings/conftest.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/keybindings/test_contextual.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/keybindings/test_dialogs.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/keybindings/test_insert_mode.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/keybindings/test_keymap_provider.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/keybindings/test_leader.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/keybindings/test_results_vim_motions.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/keybindings/test_state_machine.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/keybindings/test_vim_motions.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/mocks.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/01_default_sqlite_screen.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/02_edit_mode_postgresql.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/03_before_cancel.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/04_empty_name_after_save_attempt.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/04_empty_name_before_save.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/05_after_switch_to_postgresql.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/05_before_switch_to_postgresql.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/06_sqlite_file_path_field.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/07_sqlite_filled_form.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/08_postgresql_after_switch.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/08_postgresql_filled_form.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/09_duplicate_name_validation.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/10_after_test_connection.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/10_before_test_connection.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/11_navigation_after_tab.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/11_navigation_initial_focus.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/12_navigation_after_shift_tab.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/12_navigation_after_two_tabs.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/snapshots/13_ssh_fields_hidden.svg +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/test_autocomplete_dropdown.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/test_command_version.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/test_connect_action.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/test_connection_screen.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/test_explorer_toggle.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/test_json_tree.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/test_multi_select_actions.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/test_password_input.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/test_query_history.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/test_results_incremental_rendering.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/test_telescope_fresh_start.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/ui/test_tree_schema_grouping.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/providers/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/providers/test_osquery_adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/__init__.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/test_alter_table.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/test_core.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/test_create_index.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/test_create_table.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/test_create_view.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/test_delete.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/test_drop.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/test_edge_cases_cross_returning.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/test_edge_cases_misc.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/test_edge_cases_select_window.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/test_edge_cases_union_cast.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/test_insert.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/test_select.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/test_truncate.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/sql_completion/test_update.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_auto_reconnect_after_driver_install.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_autocomplete_alias_multi_db.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_comments.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_config_dir_resolution.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_connection_config_from_dict.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_connection_flow.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_connection_mixin_edit.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_connection_picker_refresh.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_docker_credential_parsing.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_docker_tab_filtering.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_executor_reset_on_connection_switch.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_flight_adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_incremental_rendering_numeric_range.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_motherduck_adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_mssql_autocommit.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_multi_statement.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_open_line.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_password_command.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_process_worker_pickle_safety.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_query_alerts.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_query_deletion.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_sanitize_row.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_schema_config_validator.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_select_all.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_single_statement_execution.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_snowflake_adapter.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_starred.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_text_object_menu.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_tls_adapters.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_transaction_executor.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_transaction_state.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_undo_history.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_url_parser.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_vim_motions.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_vim_operators.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_vim_text_objects.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/tests/unit/test_vim_visual_mode.py +0 -0
- {sqlit_tui-1.4.0 → sqlit_tui-1.4.1}/uv.lock +0 -0
|
@@ -9,23 +9,37 @@ on:
|
|
|
9
9
|
version:
|
|
10
10
|
description: 'Version to release (e.g., 0.4.2)'
|
|
11
11
|
required: true
|
|
12
|
+
aur_only:
|
|
13
|
+
description: 'Only update AUR from the specified tag version'
|
|
14
|
+
required: false
|
|
15
|
+
type: boolean
|
|
16
|
+
default: false
|
|
17
|
+
|
|
18
|
+
env:
|
|
19
|
+
RELEASE_TAG: ${{ github.event_name == 'workflow_dispatch' && format('v{0}', github.event.inputs.version) || github.ref_name }}
|
|
12
20
|
|
|
13
21
|
jobs:
|
|
14
22
|
release:
|
|
23
|
+
if: ${{ !(github.event_name == 'workflow_dispatch' && github.event.inputs.aur_only == 'true') }}
|
|
15
24
|
runs-on: ubuntu-latest
|
|
16
25
|
permissions:
|
|
17
26
|
contents: write
|
|
18
27
|
steps:
|
|
19
28
|
- uses: actions/checkout@v4
|
|
29
|
+
with:
|
|
30
|
+
ref: ${{ env.RELEASE_TAG }}
|
|
20
31
|
|
|
21
32
|
- name: Extract version from tag
|
|
22
33
|
id: version
|
|
23
|
-
run:
|
|
34
|
+
run: |
|
|
35
|
+
echo "TAG=${RELEASE_TAG}" >> $GITHUB_OUTPUT
|
|
36
|
+
echo "VERSION=${RELEASE_TAG#v}" >> $GITHUB_OUTPUT
|
|
24
37
|
|
|
25
38
|
- name: Create GitHub Release
|
|
26
39
|
uses: softprops/action-gh-release@v1
|
|
27
40
|
with:
|
|
28
|
-
|
|
41
|
+
tag_name: ${{ steps.version.outputs.TAG }}
|
|
42
|
+
name: ${{ steps.version.outputs.TAG }}
|
|
29
43
|
generate_release_notes: true
|
|
30
44
|
draft: false
|
|
31
45
|
prerelease: false
|
|
@@ -34,6 +48,8 @@ jobs:
|
|
|
34
48
|
runs-on: ubuntu-latest
|
|
35
49
|
steps:
|
|
36
50
|
- uses: actions/checkout@v4
|
|
51
|
+
with:
|
|
52
|
+
ref: ${{ env.RELEASE_TAG }}
|
|
37
53
|
|
|
38
54
|
- name: Set up Python
|
|
39
55
|
uses: actions/setup-python@v5
|
|
@@ -53,6 +69,7 @@ jobs:
|
|
|
53
69
|
path: dist/
|
|
54
70
|
|
|
55
71
|
publish:
|
|
72
|
+
if: ${{ !(github.event_name == 'workflow_dispatch' && github.event.inputs.aur_only == 'true') }}
|
|
56
73
|
needs: build
|
|
57
74
|
runs-on: ubuntu-latest
|
|
58
75
|
environment: pypi
|
|
@@ -70,9 +87,12 @@ jobs:
|
|
|
70
87
|
|
|
71
88
|
aur:
|
|
72
89
|
needs: [build, publish]
|
|
90
|
+
if: ${{ always() && needs.build.result == 'success' && (needs.publish.result == 'success' || needs.publish.result == 'skipped') }}
|
|
73
91
|
runs-on: ubuntu-latest
|
|
74
92
|
steps:
|
|
75
93
|
- uses: actions/checkout@v4
|
|
94
|
+
with:
|
|
95
|
+
ref: ${{ env.RELEASE_TAG }}
|
|
76
96
|
|
|
77
97
|
- name: Download dist artifacts
|
|
78
98
|
uses: actions/download-artifact@v4
|
|
@@ -83,11 +103,7 @@ jobs:
|
|
|
83
103
|
- name: Extract version and checksum
|
|
84
104
|
id: info
|
|
85
105
|
run: |
|
|
86
|
-
|
|
87
|
-
VERSION="${{ github.event.inputs.version }}"
|
|
88
|
-
else
|
|
89
|
-
VERSION="${GITHUB_REF#refs/tags/v}"
|
|
90
|
-
fi
|
|
106
|
+
VERSION="${RELEASE_TAG#v}"
|
|
91
107
|
echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT
|
|
92
108
|
|
|
93
109
|
# Get checksum from the built artifact (no need to wait for PyPI)
|
|
@@ -116,7 +132,7 @@ jobs:
|
|
|
116
132
|
cat PKGBUILD
|
|
117
133
|
|
|
118
134
|
- name: Publish to AUR
|
|
119
|
-
uses: KSXGitHub/github-actions-deploy-aur@
|
|
135
|
+
uses: KSXGitHub/github-actions-deploy-aur@v4.1.3
|
|
120
136
|
with:
|
|
121
137
|
pkgname: sqlit
|
|
122
138
|
pkgbuild: ./aur/PKGBUILD
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sqlit-tui
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.1
|
|
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
|
|
@@ -38,7 +38,6 @@ Requires-Dist: hdbcli>=2.20.0; extra == 'all'
|
|
|
38
38
|
Requires-Dist: ibm-db>=3.2.0; extra == 'all'
|
|
39
39
|
Requires-Dist: impyla>=0.18.0; extra == 'all'
|
|
40
40
|
Requires-Dist: libsql>=0.1.0; extra == 'all'
|
|
41
|
-
Requires-Dist: mariadb>=1.1.0; extra == 'all'
|
|
42
41
|
Requires-Dist: mssql-python>=1.1.0; extra == 'all'
|
|
43
42
|
Requires-Dist: oracledb>=2.0.0; extra == 'all'
|
|
44
43
|
Requires-Dist: osquery>=3.0.0; extra == 'all'
|
|
@@ -77,7 +76,7 @@ Requires-Dist: hdbcli>=2.20.0; extra == 'hana'
|
|
|
77
76
|
Provides-Extra: impala
|
|
78
77
|
Requires-Dist: impyla>=0.18.0; extra == 'impala'
|
|
79
78
|
Provides-Extra: mariadb
|
|
80
|
-
Requires-Dist:
|
|
79
|
+
Requires-Dist: pymysql>=1.1.0; extra == 'mariadb'
|
|
81
80
|
Provides-Extra: mssql
|
|
82
81
|
Requires-Dist: mssql-python>=1.1.0; extra == 'mssql'
|
|
83
82
|
Provides-Extra: mysql
|
|
@@ -389,7 +388,7 @@ Most of the time you can just run `sqlit` and connect. If a Python driver is mis
|
|
|
389
388
|
| PostgreSQL / CockroachDB / Supabase | `psycopg2-binary` | `pipx inject sqlit-tui psycopg2-binary` | `python -m pip install psycopg2-binary` |
|
|
390
389
|
| SQL Server | `mssql-python` | `pipx inject sqlit-tui mssql-python` | `python -m pip install mssql-python` |
|
|
391
390
|
| MySQL | `PyMySQL` | `pipx inject sqlit-tui PyMySQL` | `python -m pip install PyMySQL` |
|
|
392
|
-
| MariaDB | `
|
|
391
|
+
| MariaDB | `PyMySQL` | `pipx inject sqlit-tui PyMySQL` | `python -m pip install PyMySQL` |
|
|
393
392
|
| Oracle | `oracledb` | `pipx inject sqlit-tui oracledb` | `python -m pip install oracledb` |
|
|
394
393
|
| DuckDB | `duckdb` | `pipx inject sqlit-tui duckdb` | `python -m pip install duckdb` |
|
|
395
394
|
| ClickHouse | `clickhouse-connect` | `pipx inject sqlit-tui clickhouse-connect` | `python -m pip install clickhouse-connect` |
|
|
@@ -278,7 +278,7 @@ Most of the time you can just run `sqlit` and connect. If a Python driver is mis
|
|
|
278
278
|
| PostgreSQL / CockroachDB / Supabase | `psycopg2-binary` | `pipx inject sqlit-tui psycopg2-binary` | `python -m pip install psycopg2-binary` |
|
|
279
279
|
| SQL Server | `mssql-python` | `pipx inject sqlit-tui mssql-python` | `python -m pip install mssql-python` |
|
|
280
280
|
| MySQL | `PyMySQL` | `pipx inject sqlit-tui PyMySQL` | `python -m pip install PyMySQL` |
|
|
281
|
-
| MariaDB | `
|
|
281
|
+
| MariaDB | `PyMySQL` | `pipx inject sqlit-tui PyMySQL` | `python -m pip install PyMySQL` |
|
|
282
282
|
| Oracle | `oracledb` | `pipx inject sqlit-tui oracledb` | `python -m pip install oracledb` |
|
|
283
283
|
| DuckDB | `duckdb` | `pipx inject sqlit-tui duckdb` | `python -m pip install duckdb` |
|
|
284
284
|
| ClickHouse | `clickhouse-connect` | `pipx inject sqlit-tui clickhouse-connect` | `python -m pip install clickhouse-connect` |
|
|
@@ -17,8 +17,7 @@ pkgbase = sqlit
|
|
|
17
17
|
depends = python-docker
|
|
18
18
|
optdepends = python-psycopg2: PostgreSQL, CockroachDB and Supabase support
|
|
19
19
|
optdepends = python-pyodbc: SQL Server support
|
|
20
|
-
optdepends = python-pymysql: MySQL support
|
|
21
|
-
optdepends = python-mariadb-connector: MariaDB support
|
|
20
|
+
optdepends = python-pymysql: MySQL and MariaDB support
|
|
22
21
|
optdepends = python-oracledb: Oracle support
|
|
23
22
|
optdepends = python-duckdb: DuckDB support
|
|
24
23
|
optdepends = python-clickhouse-connect: ClickHouse support
|
|
@@ -20,8 +20,7 @@ depends=(
|
|
|
20
20
|
optdepends=(
|
|
21
21
|
'python-psycopg2: PostgreSQL, CockroachDB and Supabase support'
|
|
22
22
|
'python-pyodbc: SQL Server support'
|
|
23
|
-
'python-pymysql: MySQL support'
|
|
24
|
-
'python-mariadb-connector: MariaDB support'
|
|
23
|
+
'python-pymysql: MySQL and MariaDB support'
|
|
25
24
|
'python-oracledb: Oracle support'
|
|
26
25
|
'python-duckdb: DuckDB support'
|
|
27
26
|
'python-clickhouse-connect: ClickHouse support'
|
|
@@ -289,6 +289,48 @@ services:
|
|
|
289
289
|
tmpfs:
|
|
290
290
|
- /var/lib/mysql
|
|
291
291
|
|
|
292
|
+
# MariaDB with TIS-620 charset (Thai) - for charset testing
|
|
293
|
+
mariadb-tis620:
|
|
294
|
+
image: mariadb:11
|
|
295
|
+
container_name: sqlit-test-mariadb-tis620
|
|
296
|
+
command: --character-set-server=tis620 --collation-server=tis620_thai_ci
|
|
297
|
+
environment:
|
|
298
|
+
MARIADB_ROOT_PASSWORD: "TestPassword123!"
|
|
299
|
+
MARIADB_USER: "testuser"
|
|
300
|
+
MARIADB_PASSWORD: "TestPassword123!"
|
|
301
|
+
MARIADB_DATABASE: "test_sqlit"
|
|
302
|
+
ports:
|
|
303
|
+
- "${MARIADB_TIS620_PORT:-3310}:3306"
|
|
304
|
+
healthcheck:
|
|
305
|
+
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
306
|
+
interval: 5s
|
|
307
|
+
timeout: 5s
|
|
308
|
+
retries: 10
|
|
309
|
+
start_period: 30s
|
|
310
|
+
tmpfs:
|
|
311
|
+
- /var/lib/mysql
|
|
312
|
+
|
|
313
|
+
# MariaDB with Latin1 charset - for charset testing
|
|
314
|
+
mariadb-latin1:
|
|
315
|
+
image: mariadb:11
|
|
316
|
+
container_name: sqlit-test-mariadb-latin1
|
|
317
|
+
command: --character-set-server=latin1 --collation-server=latin1_swedish_ci
|
|
318
|
+
environment:
|
|
319
|
+
MARIADB_ROOT_PASSWORD: "TestPassword123!"
|
|
320
|
+
MARIADB_USER: "testuser"
|
|
321
|
+
MARIADB_PASSWORD: "TestPassword123!"
|
|
322
|
+
MARIADB_DATABASE: "test_sqlit"
|
|
323
|
+
ports:
|
|
324
|
+
- "${MARIADB_LATIN1_PORT:-3311}:3306"
|
|
325
|
+
healthcheck:
|
|
326
|
+
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
327
|
+
interval: 5s
|
|
328
|
+
timeout: 5s
|
|
329
|
+
retries: 10
|
|
330
|
+
start_period: 30s
|
|
331
|
+
tmpfs:
|
|
332
|
+
- /var/lib/mysql
|
|
333
|
+
|
|
292
334
|
cockroachdb:
|
|
293
335
|
image: cockroachdb/cockroach:latest
|
|
294
336
|
container_name: sqlit-test-cockroachdb
|
|
@@ -40,7 +40,6 @@ all = [
|
|
|
40
40
|
"psycopg2-binary>=2.9.0",
|
|
41
41
|
"mssql-python>=1.1.0",
|
|
42
42
|
"PyMySQL>=1.1.0",
|
|
43
|
-
"mariadb>=1.1.0",
|
|
44
43
|
"oracledb>=2.0.0",
|
|
45
44
|
"ibm_db>=3.2.0",
|
|
46
45
|
"hdbcli>=2.20.0",
|
|
@@ -68,7 +67,7 @@ postgres = ["psycopg2-binary>=2.9.0"]
|
|
|
68
67
|
cockroachdb = ["psycopg2-binary>=2.9.0"]
|
|
69
68
|
mssql = ["mssql-python>=1.1.0"]
|
|
70
69
|
mysql = ["PyMySQL>=1.1.0"]
|
|
71
|
-
mariadb = ["
|
|
70
|
+
mariadb = ["PyMySQL>=1.1.0"]
|
|
72
71
|
oracle = ["oracledb>=2.0.0"]
|
|
73
72
|
db2 = ["ibm_db>=3.2.0"]
|
|
74
73
|
hana = ["hdbcli>=2.20.0"]
|
|
@@ -225,7 +224,6 @@ namespace_packages = true
|
|
|
225
224
|
[[tool.mypy.overrides]]
|
|
226
225
|
module = [
|
|
227
226
|
"pymysql",
|
|
228
|
-
"mariadb",
|
|
229
227
|
"oracledb",
|
|
230
228
|
"duckdb",
|
|
231
229
|
"clickhouse_connect",
|
|
@@ -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.4.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 4,
|
|
21
|
+
__version__ = version = '1.4.1'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 4, 1)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -80,7 +80,6 @@ def _get_arch_package_name(package_name: str) -> str | None:
|
|
|
80
80
|
"mssql-python": "python-mssql",
|
|
81
81
|
"PyMySQL": "python-pymysql",
|
|
82
82
|
"mysql-connector-python": "python-mysql-connector",
|
|
83
|
-
"mariadb": "python-mariadb-connector",
|
|
84
83
|
"oracledb": "python-oracledb",
|
|
85
84
|
"duckdb": "python-duckdb",
|
|
86
85
|
"clickhouse-connect": "python-clickhouse-connect",
|
|
@@ -103,18 +102,23 @@ class InstallOption:
|
|
|
103
102
|
def detect_install_method(*, probe: SystemProbeProtocol | None = None) -> str:
|
|
104
103
|
"""Detect how sqlit was installed/is running.
|
|
105
104
|
|
|
106
|
-
Returns one of: 'pipx', 'uvx', 'uv', 'conda', 'pip', or 'unknown'.
|
|
107
|
-
'pipx', 'uvx', 'uv' (uv run), and 'conda' are high-confidence
|
|
105
|
+
Returns one of: 'pipx', 'uv-tool', 'uvx', 'uv', 'conda', 'pip', or 'unknown'.
|
|
106
|
+
'pipx', 'uv-tool', 'uvx', 'uv' (uv run), and 'conda' are high-confidence
|
|
107
|
+
detections. 'uv-tool' means `uv tool install` (persistent); 'uvx' means
|
|
108
|
+
`uvx` / `uv tool run` (ephemeral) — the two require different injection
|
|
109
|
+
commands, so they must not be conflated.
|
|
108
110
|
"""
|
|
109
111
|
probe = probe or SystemProbe()
|
|
110
112
|
|
|
111
113
|
hint = _install_method_hint(probe)
|
|
112
|
-
if hint in {"pipx", "uvx", "uv", "conda", "pip", "unknown"}:
|
|
114
|
+
if hint in {"pipx", "uv-tool", "uvx", "uv", "conda", "pip", "unknown"}:
|
|
113
115
|
return hint
|
|
114
116
|
|
|
115
117
|
# Check high-confidence detections first (runtime environment)
|
|
116
118
|
if probe.is_pipx():
|
|
117
119
|
return "pipx"
|
|
120
|
+
if probe.is_uv_tool_install():
|
|
121
|
+
return "uv-tool"
|
|
118
122
|
if probe.is_uvx():
|
|
119
123
|
return "uvx"
|
|
120
124
|
if probe.is_uv_run():
|
|
@@ -146,7 +150,14 @@ def get_install_options(
|
|
|
146
150
|
"pip": InstallOption("pip", f"pip install {shell_target('pip')}"),
|
|
147
151
|
"pipx": InstallOption("pipx", f"pipx inject sqlit-tui {shell_target('pipx')}"),
|
|
148
152
|
"uv": InstallOption("uv", f"uv pip install {shell_target('uv')}"),
|
|
149
|
-
"
|
|
153
|
+
"uv-tool": InstallOption(
|
|
154
|
+
"uv-tool",
|
|
155
|
+
f"uv tool install --reinstall --with {shell_target('uv-tool')} sqlit-tui",
|
|
156
|
+
),
|
|
157
|
+
"uvx": InstallOption(
|
|
158
|
+
"uvx",
|
|
159
|
+
f"uvx --from sqlit-tui --with {shell_target('uvx')} sqlit",
|
|
160
|
+
),
|
|
150
161
|
"poetry": InstallOption("poetry", f"poetry add {shell_target('poetry')}"),
|
|
151
162
|
"pdm": InstallOption("pdm", f"pdm add {shell_target('pdm')}"),
|
|
152
163
|
"conda": InstallOption("conda", f"conda install {shell_target('conda')}"),
|
|
@@ -157,17 +168,19 @@ def get_install_options(
|
|
|
157
168
|
|
|
158
169
|
# Order based on detection - detected method first, then common alternatives
|
|
159
170
|
if detected == "pipx":
|
|
160
|
-
order = ["pipx", "pip", "uv", "uvx", "poetry", "pdm", "conda"]
|
|
171
|
+
order = ["pipx", "pip", "uv", "uv-tool", "uvx", "poetry", "pdm", "conda"]
|
|
172
|
+
elif detected == "uv-tool":
|
|
173
|
+
order = ["uv-tool", "uv", "pip", "uvx", "pipx", "poetry", "pdm", "conda"]
|
|
161
174
|
elif detected == "uvx":
|
|
162
|
-
order = ["uvx", "uv", "pip", "pipx", "poetry", "pdm", "conda"]
|
|
175
|
+
order = ["uvx", "uv-tool", "uv", "pip", "pipx", "poetry", "pdm", "conda"]
|
|
163
176
|
elif detected == "uv":
|
|
164
177
|
# uv run - prefer uv pip install
|
|
165
|
-
order = ["uv", "pip", "uvx", "pipx", "poetry", "pdm", "conda"]
|
|
178
|
+
order = ["uv", "pip", "uv-tool", "uvx", "pipx", "poetry", "pdm", "conda"]
|
|
166
179
|
elif detected == "conda":
|
|
167
|
-
order = ["conda", "pip", "uv", "pipx", "uvx", "poetry", "pdm"]
|
|
180
|
+
order = ["conda", "pip", "uv", "pipx", "uv-tool", "uvx", "poetry", "pdm"]
|
|
168
181
|
else:
|
|
169
182
|
# Default: pip first
|
|
170
|
-
order = ["pip", "uv", "pipx", "uvx", "poetry", "pdm", "conda"]
|
|
183
|
+
order = ["pip", "uv", "pipx", "uv-tool", "uvx", "poetry", "pdm", "conda"]
|
|
171
184
|
|
|
172
185
|
options = [all_options[key] for key in order]
|
|
173
186
|
|
|
@@ -11,9 +11,20 @@ if TYPE_CHECKING:
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def ensure_ssh_tunnel_available() -> None:
|
|
14
|
-
"""Ensure SSH tunnel dependencies are installed."""
|
|
14
|
+
"""Ensure SSH tunnel dependencies are installed and compatible."""
|
|
15
15
|
try:
|
|
16
|
+
import paramiko
|
|
16
17
|
import sshtunnel # noqa: F401
|
|
18
|
+
|
|
19
|
+
# paramiko 4 removed DSSKey, but sshtunnel still references it at
|
|
20
|
+
# runtime. Surface this as a MissingDriverError so the installer
|
|
21
|
+
# prompt suggests reinstalling with the [ssh] extra (pins paramiko<4).
|
|
22
|
+
if not hasattr(paramiko, "DSSKey"):
|
|
23
|
+
raise RuntimeError(
|
|
24
|
+
f"paramiko {getattr(paramiko, '__version__', '?')} is incompatible "
|
|
25
|
+
"with sshtunnel (DSSKey was removed in paramiko 4); reinstall with "
|
|
26
|
+
"the [ssh] extra to pin paramiko<4."
|
|
27
|
+
)
|
|
17
28
|
except Exception as e:
|
|
18
29
|
from sqlit.domains.connections.providers.exceptions import MissingDriverError
|
|
19
30
|
|
|
@@ -417,6 +417,22 @@ class DatabaseAdapter(ABC):
|
|
|
417
417
|
"""Quote an identifier (table name, column name, etc.)."""
|
|
418
418
|
pass
|
|
419
419
|
|
|
420
|
+
def qualified_name(self, database: str | None, schema: str | None, name: str) -> str:
|
|
421
|
+
"""Build a quoted qualified identifier, skipping empty segments.
|
|
422
|
+
|
|
423
|
+
Default handles SQL Server-style `[db].[schema].[name]`, PostgreSQL-
|
|
424
|
+
style `"schema"."name"`, and single-part `"name"` by omitting any
|
|
425
|
+
empty/None component. Dialects that want different composition
|
|
426
|
+
(e.g. MySQL, which has no schemas within databases) can override.
|
|
427
|
+
"""
|
|
428
|
+
parts: list[str] = []
|
|
429
|
+
if database:
|
|
430
|
+
parts.append(self.quote_identifier(database))
|
|
431
|
+
if schema:
|
|
432
|
+
parts.append(self.quote_identifier(schema))
|
|
433
|
+
parts.append(self.quote_identifier(name))
|
|
434
|
+
return ".".join(parts)
|
|
435
|
+
|
|
420
436
|
@abstractmethod
|
|
421
437
|
def build_select_query(self, table: str, limit: int, database: str | None = None, schema: str | None = None) -> str:
|
|
422
438
|
"""Build a SELECT query with limit.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
from pathlib import Path
|
|
5
6
|
from typing import TYPE_CHECKING, Any
|
|
6
7
|
|
|
7
8
|
from sqlit.domains.connections.providers.adapters.base import (
|
|
@@ -13,6 +14,11 @@ from sqlit.domains.connections.providers.adapters.base import (
|
|
|
13
14
|
TriggerInfo,
|
|
14
15
|
resolve_file_path,
|
|
15
16
|
)
|
|
17
|
+
from sqlit.domains.connections.providers.duckdb.data_files import (
|
|
18
|
+
get_read_function,
|
|
19
|
+
sidecar_path_for,
|
|
20
|
+
table_name_for,
|
|
21
|
+
)
|
|
16
22
|
|
|
17
23
|
if TYPE_CHECKING:
|
|
18
24
|
from sqlit.domains.connections.domain.config import ConnectionConfig
|
|
@@ -85,8 +91,45 @@ class DuckDBAdapter(DatabaseAdapter):
|
|
|
85
91
|
duckdb_any: Any = duckdb
|
|
86
92
|
connect_args: dict[str, Any] = {}
|
|
87
93
|
connect_args.update(config.extra_options)
|
|
94
|
+
|
|
95
|
+
read_fn = get_read_function(file_path)
|
|
96
|
+
if read_fn is not None:
|
|
97
|
+
return self._connect_data_file(
|
|
98
|
+
duckdb_any, file_path, read_fn, connect_args
|
|
99
|
+
)
|
|
100
|
+
|
|
88
101
|
return duckdb_any.connect(str(file_path), **connect_args)
|
|
89
102
|
|
|
103
|
+
def _connect_data_file(
|
|
104
|
+
self,
|
|
105
|
+
duckdb_any: Any,
|
|
106
|
+
file_path: Path,
|
|
107
|
+
read_fn: str,
|
|
108
|
+
connect_args: dict[str, Any],
|
|
109
|
+
) -> Any:
|
|
110
|
+
"""Connect to a per-process sidecar `.duckdb` backed by a data file.
|
|
111
|
+
|
|
112
|
+
On first connect within a sqlit process the source file is loaded
|
|
113
|
+
into a real table so the user can run UPDATE/INSERT/DELETE against
|
|
114
|
+
it. Subsequent connects in the same process reuse the sidecar so
|
|
115
|
+
in-session edits persist across query Runs. The sidecar lives under
|
|
116
|
+
a PID-scoped temp dir; a new process gets a fresh load from source.
|
|
117
|
+
Writing back to the source is explicit: `COPY <table> TO '<path>'`.
|
|
118
|
+
"""
|
|
119
|
+
sidecar = sidecar_path_for(file_path)
|
|
120
|
+
sidecar.parent.mkdir(parents=True, exist_ok=True)
|
|
121
|
+
needs_load = not sidecar.exists()
|
|
122
|
+
|
|
123
|
+
conn = duckdb_any.connect(str(sidecar), **connect_args)
|
|
124
|
+
if needs_load:
|
|
125
|
+
table = table_name_for(file_path)
|
|
126
|
+
path_literal = str(file_path).replace("'", "''")
|
|
127
|
+
conn.execute(
|
|
128
|
+
f'CREATE TABLE "{table}" AS '
|
|
129
|
+
f"SELECT * FROM {read_fn}('{path_literal}')"
|
|
130
|
+
)
|
|
131
|
+
return conn
|
|
132
|
+
|
|
90
133
|
def get_databases(self, conn: Any) -> list[str]:
|
|
91
134
|
"""DuckDB doesn't support multiple databases - return empty list."""
|
|
92
135
|
return []
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"""Detection of data files queryable directly by DuckDB.
|
|
2
|
+
|
|
3
|
+
DuckDB's `read_csv_auto`, `read_parquet`, `read_json_auto` etc. let you
|
|
4
|
+
query a raw data file as if it were a table. When a sqlit DuckDB connection
|
|
5
|
+
points at one of these files instead of a `.duckdb` database, the adapter:
|
|
6
|
+
|
|
7
|
+
1. Picks a per-process sidecar `.duckdb` file in the OS temp dir.
|
|
8
|
+
2. Loads the source file into a real TABLE in the sidecar on first connect.
|
|
9
|
+
3. Lets the user CRUD the table freely; edits persist for the lifetime of
|
|
10
|
+
the sqlit process and are wiped on restart.
|
|
11
|
+
4. Writing back to the source file is explicit (`COPY <table> TO '<path>'`).
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import hashlib
|
|
17
|
+
import os
|
|
18
|
+
import re
|
|
19
|
+
import tempfile
|
|
20
|
+
from pathlib import Path
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# File extension -> DuckDB table function that can read it.
|
|
24
|
+
_READ_FUNCTIONS: dict[str, str] = {
|
|
25
|
+
".csv": "read_csv_auto",
|
|
26
|
+
".tsv": "read_csv_auto",
|
|
27
|
+
".parquet": "read_parquet",
|
|
28
|
+
".pq": "read_parquet",
|
|
29
|
+
".json": "read_json_auto",
|
|
30
|
+
".jsonl": "read_json_auto",
|
|
31
|
+
".ndjson": "read_json_auto",
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
# Allowed compression suffixes that wrap the data extensions above. DuckDB's
|
|
35
|
+
# auto-readers transparently decompress these.
|
|
36
|
+
_COMPRESSION_SUFFIXES: frozenset[str] = frozenset({".gz", ".zst", ".bz2"})
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def get_read_function(path: Path) -> str | None:
|
|
40
|
+
"""Return the DuckDB table function for this file, or None if not a known
|
|
41
|
+
data file extension.
|
|
42
|
+
|
|
43
|
+
Handles compressed forms like `.csv.gz` by looking past the compression
|
|
44
|
+
suffix.
|
|
45
|
+
"""
|
|
46
|
+
suffixes = [s.lower() for s in path.suffixes]
|
|
47
|
+
if not suffixes:
|
|
48
|
+
return None
|
|
49
|
+
|
|
50
|
+
last = suffixes[-1]
|
|
51
|
+
if last in _COMPRESSION_SUFFIXES:
|
|
52
|
+
if len(suffixes) >= 2:
|
|
53
|
+
return _READ_FUNCTIONS.get(suffixes[-2])
|
|
54
|
+
return None
|
|
55
|
+
return _READ_FUNCTIONS.get(last)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def is_data_file(path: Path) -> bool:
|
|
59
|
+
"""True if the file extension is one DuckDB can query directly."""
|
|
60
|
+
return get_read_function(path) is not None
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def table_name_for(path: Path) -> str:
|
|
64
|
+
"""Build a SQL-safe table name from a file path basename.
|
|
65
|
+
|
|
66
|
+
Strips the data and (optional) compression extension, then sanitizes
|
|
67
|
+
non-identifier characters to underscores.
|
|
68
|
+
|
|
69
|
+
Examples:
|
|
70
|
+
sales.csv -> sales
|
|
71
|
+
sales-2024.csv -> sales_2024
|
|
72
|
+
events.json.gz -> events
|
|
73
|
+
123-data.parquet -> _123_data
|
|
74
|
+
"""
|
|
75
|
+
stem = path.name
|
|
76
|
+
# Strip compression suffix if present.
|
|
77
|
+
lower = stem.lower()
|
|
78
|
+
for comp in _COMPRESSION_SUFFIXES:
|
|
79
|
+
if lower.endswith(comp):
|
|
80
|
+
stem = stem[: -len(comp)]
|
|
81
|
+
break
|
|
82
|
+
# Strip data extension.
|
|
83
|
+
dot = stem.rfind(".")
|
|
84
|
+
if dot > 0:
|
|
85
|
+
stem = stem[:dot]
|
|
86
|
+
|
|
87
|
+
sanitized = re.sub(r"[^A-Za-z0-9_]+", "_", stem).strip("_")
|
|
88
|
+
if not sanitized:
|
|
89
|
+
sanitized = "data"
|
|
90
|
+
if sanitized[0].isdigit():
|
|
91
|
+
sanitized = "_" + sanitized
|
|
92
|
+
return sanitized.lower()
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def sidecar_path_for(source_path: Path) -> Path:
|
|
96
|
+
"""Per-process scratch `.duckdb` path for a data-file source.
|
|
97
|
+
|
|
98
|
+
Each sqlit process gets its own directory under the OS temp dir. The
|
|
99
|
+
sidecar persists for the lifetime of the process so edits within a
|
|
100
|
+
sqlit session survive across query Runs. A fresh process gets a fresh
|
|
101
|
+
sidecar, so source-file changes are picked up on restart and unsaved
|
|
102
|
+
edits are wiped (the user opted into "re-load from source each time").
|
|
103
|
+
"""
|
|
104
|
+
digest = hashlib.sha1(str(source_path.resolve()).encode()).hexdigest()[:16]
|
|
105
|
+
base = Path(tempfile.gettempdir()) / f"sqlit-{os.getpid()}" / "data-files"
|
|
106
|
+
return base / f"{digest}.duckdb"
|
|
@@ -273,7 +273,13 @@ class FirebirdAdapter(CursorBasedAdapter):
|
|
|
273
273
|
13: "TIME",
|
|
274
274
|
14: "CHAR",
|
|
275
275
|
16: "BIGINT",
|
|
276
|
+
23: "BOOLEAN",
|
|
277
|
+
24: "DECFLOAT(16)",
|
|
278
|
+
25: "DECFLOAT(34)",
|
|
279
|
+
26: "INT128",
|
|
276
280
|
27: "DOUBLE PRECISION",
|
|
281
|
+
28: "TIME WITH TIME ZONE",
|
|
282
|
+
29: "TIMESTAMP WITH TIME ZONE",
|
|
277
283
|
35: "TIMESTAMP",
|
|
278
284
|
37: "VARCHAR",
|
|
279
285
|
261: "BLOB",
|
|
@@ -302,7 +308,7 @@ class FirebirdAdapter(CursorBasedAdapter):
|
|
|
302
308
|
|
|
303
309
|
# Find the fields themselves.
|
|
304
310
|
cursor.execute(
|
|
305
|
-
"SELECT rf.rdb$field_name, f.rdb$field_type, f.rdb$character_length "
|
|
311
|
+
"SELECT rf.rdb$field_name, f.rdb$field_type, f.rdb$character_length, f.rdb$field_sub_type "
|
|
306
312
|
"FROM rdb$relation_fields AS rf "
|
|
307
313
|
"JOIN rdb$fields AS f ON f.rdb$field_name = rf.rdb$field_source "
|
|
308
314
|
"WHERE rdb$relation_name = ? "
|
|
@@ -313,8 +319,10 @@ class FirebirdAdapter(CursorBasedAdapter):
|
|
|
313
319
|
for row in cursor.fetchall():
|
|
314
320
|
if row[1] in [14, 37]: # CHAR, VARCHAR
|
|
315
321
|
data_type = f"{self._types[row[1]]}({row[2]})"
|
|
322
|
+
if row[1] == 261 and row[3] == 1:
|
|
323
|
+
data_type = "BLOB (text)"
|
|
316
324
|
else:
|
|
317
|
-
data_type = self._types
|
|
325
|
+
data_type = self._types.get(row[1], "UNKNOWN")
|
|
318
326
|
name = row[0].rstrip()
|
|
319
327
|
columns.append(ColumnInfo(name=name, data_type=data_type, is_primary_key=name in pk_fields))
|
|
320
328
|
return columns
|