Installation progressive enhancement#32
Conversation
…cies into groups, add convenience bundles, and clean up core dependencies for improved clarity and maintainability.
- Updated README.md to include installation options for core, recommended, and all providers, improving user guidance. - Introduced lazy loading for connection classes in __init__.py to prevent import errors for uninstalled providers. - Added provider detection and installation helpers in provider_detection.py to streamline provider management. - Refactored connection handling in provider_factory.py and connection_view.py to utilize lazy imports and improve user experience. - Updated info_panel.py to use provider_type for connection details, enhancing maintainability and clarity.
- Implemented a new dialog for installing missing database provider packages, allowing users to view installation instructions and install providers directly within the app. - Enhanced the settings dialog to include tabs for managing optional feature groups and database providers, with background checks for availability and uninstall options. - Added background threads for uninstalling features and providers, improving user experience during package management. - Updated connection view to handle provider installation prompts and refresh provider lists after installations. - Introduced lazy loading for feature dependencies, raising structured errors to guide users in installing required packages. Co-authored-by: Copilot <copilot@github.com>
…e handling - Introduced comprehensive tests for the ProviderInstallDialog, covering instantiation, UI state, installation success and failure paths, and feature compatibility. - Enhanced SettingsDialog tests to include feature tab functionality, ensuring correct button states and tooltips for install/uninstall actions. - Implemented fixtures to prevent modal dialogs from blocking tests in connection and visualization views. - Added checks for feature availability and proper handling of missing dependencies in visualization-related tests. Co-authored-by: Copilot <copilot@github.com>
…on features and CLI install wizard Co-authored-by: Copilot <copilot@github.com>
❌ 54 Tests Failed:
View the top 3 failed test(s) by shortest run time
View the full list of 18 ❄️ flaky test(s)
To view more test analytics, go to the Test Analytics Dashboard |
There was a problem hiding this comment.
Pull request overview
This PR introduces a progressive-installation model: the core app installs quickly with minimal dependencies, while database providers and feature packs become optional and installable on demand via UI prompts and a new CLI installer.
Changes:
- Refactors packaging to optional dependency groups/extras (plus bundles like
[recommended]and[all]) and bumps version to 0.8.0. - Adds provider/feature detection + in-app install dialog + settings management UI (install/uninstall + background status checks).
- Adds
--installCLI flow (direct install or interactive wizard) and expands tests/docs accordingly.
Reviewed changes
Copilot reviewed 28 out of 30 changed files in this pull request and generated 11 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/views/test_visualization_view.py | Prevents modal gating in tests; adds coverage for feature-missing handling. |
| tests/views/test_connection_view.py | Adds autouse patches for provider install dialog; updates connection-class patching for lazy provider loading. |
| tests/utils/test_lazy_imports.py | Skips sklearn-dependent tests when absent; adds tests for FeatureDependencyMissingError and missing-dep behavior. |
| tests/ui/test_settings_dialog.py | Adds test coverage for new Features/Providers tabs and install/uninstall flows. |
| tests/ui/test_provider_install_dialog.py | Adds comprehensive tests for the new modal install dialog behavior. |
| tests/test_cli.py | Adds tests for --install direct mode and interactive wizard mode. |
| tests/services/test_provider_install_service.py | Adds unit tests for provider/feature install & uninstall subprocess command construction and behavior. |
| tests/core/test_provider_detection_features.py | Adds tests for feature-group availability checks and metadata lookups. |
| tests/core/llm_providers/test_ollama.py | Updates expectations to match new Ollama logging behavior. |
| src/vector_inspector/utils/lazy_imports.py | Adds FeatureDependencyMissingError and structured missing-dependency signaling for optional features. |
| src/vector_inspector/ui/views/visualization_view.py | Adds viz dependency gating + install dialog flow; adds a feature_missing signal path from the reduction thread. |
| src/vector_inspector/ui/views/info_panel.py | Switches provider type detection away from direct isinstance imports toward a string-based provider id. |
| src/vector_inspector/ui/views/connection_view.py | Replaces hardcoded provider list with availability-aware provider detection + install prompts + refresh button. |
| src/vector_inspector/ui/dialogs/settings_dialog.py | Adds Features/Providers management tabs with background availability checking and uninstall threads. |
| src/vector_inspector/ui/dialogs/provider_install_dialog.py | Adds a reusable modal dialog to install providers/features with live pip output streaming. |
| src/vector_inspector/ui/components/profile_manager_panel.py | Populates providers dynamically with availability display and install prompting. |
| src/vector_inspector/ui/components/create_collection_dialog.py | Adds embeddings feature gating when enabling “Add sample data”. |
| src/vector_inspector/services/provider_install_service.py | Adds install/uninstall helpers for providers and feature groups via sys.executable -m pip. |
| src/vector_inspector/core/provider_factory.py | Switches provider creation to use get_connection_class() lazy imports. |
| src/vector_inspector/core/provider_detection.py | Introduces provider/feature registries and availability checks + static metadata helpers. |
| src/vector_inspector/core/llm_providers/ollama_provider.py | Adjusts logging severity/wording for expected “Ollama not running” conditions. |
| src/vector_inspector/core/connections/base_connection.py | Adds provider_type property used for provider identification without importing provider classes. |
| src/vector_inspector/core/connections/init.py | Adds get_connection_class() for lazy provider class imports. |
| src/vector_inspector/_cli.py | Adds --install early-exit provider installer (direct + wizard). |
| src/vector_inspector/init.py | Bumps __version__ to 0.8.0. |
| scripts/run.sh | Adds a PDM-based run script for local development. |
| pyproject.toml | Refactors dependencies into optional groups/extras; adds bundles; bumps version to 0.8.0. |
| docs/RELEASE_REASON.md | Updates release notes to document progressive installation and on-demand features/providers. |
| README.md | Updates installation docs for minimal/recommended/all installs + provider/feature extras. |
…r handling, and update UI interactions Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
- Consolidated installation and uninstallation functions into a single `install` and `uninstall` function in `install_service.py`. - Updated the `provider_install_dialog.py` and `settings_dialog.py` to use the new consolidated functions. - Removed the old `provider_install_service.py` and its associated tests. - Added comprehensive tests for the new installation and uninstallation functions in `test_install_service.py`. - Adjusted related tests and UI interactions to reflect the changes in service structure. Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
…p optional dependencies in pyproject.toml Co-authored-by: Copilot <copilot@github.com>
…d of extras Co-authored-by: Copilot <copilot@github.com>
…ndencies Co-authored-by: Copilot <copilot@github.com>
…nection type handling Co-authored-by: Copilot <copilot@github.com>
…on and visibility handling - Added mock providers for consistent testing. - Implemented tests for field visibility based on provider and connection type. - Verified correct behavior for saving profiles with placeholder providers. - Ensured proper handling of unavailable providers in the UI. Co-authored-by: Copilot <copilot@github.com>
…p logic Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
…rvice tests Co-authored-by: Copilot <copilot@github.com>
… configuration and improved handling of unavailable providers Co-authored-by: Copilot <copilot@github.com>
…dialog opening Co-authored-by: Copilot <copilot@github.com>
…nsformers in lazy imports
…ions Co-authored-by: Copilot <copilot@github.com>
|
@copilot review this pr |
Reviewed the PR. All CI checks are passing (tests, CodeQL, codecov). Here's a summary of the current state: All previously flagged issues have been addressed:
No new issues found. The code is clean, consistent with project conventions, and the progressive installation model is well-structured. Ready to merge. |
Agent-Logs-Url: https://github.com/anthonypdawson/vector-inspector/sessions/f838fa06-b9bd-498a-9ab5-99e4b72cc233 Co-authored-by: anthonypdawson <2496233+anthonypdawson@users.noreply.github.com>
…registry helpers for provider management Co-authored-by: Copilot <copilot@github.com>
This pull request delivers a major update focused on dramatically improving installation speed and user experience for Vector Inspector. The core app now installs in seconds, with all database providers and advanced features made optional, installable on demand via both the GUI and a new CLI wizard. The project’s dependency management has been refactored to support this modular approach, and the documentation has been updated to guide users through the new installation options.
Key changes include:
Progressive, Modular Installation
[recommended]or[all]for full functionality. [1] [2] [3]pyproject.tomlhas been refactored to define optional dependency groups for each provider and feature, as well as convenience bundles for common use cases. [1] [2]CLI and UI Enhancements for Provider Management
--installCLI flag enables users to install providers without launching the GUI, either interactively (wizard mode) or directly by provider ID. The CLI checks installed providers, displays installation commands, and streams output. [1] [2] [3]Documentation and Release Notes
README.mdand release notes have been rewritten to explain the new progressive installation workflow, all optional extras, and migration guidance for existing users. [1] [2] [3]Version Bump
0.8.0everywhere to reflect this major release. [1] [2] [3]These changes make Vector Inspector much more accessible, reduce installation friction, and lay the groundwork for further feature enhancements.