Add CI minimal install tests and optional plotting import - #67
Conversation
- Add test-minimal CI job that tests with NO extras installed - Add pre-flight tests to release workflow before PyPI publish - Make plotting CLI import optional (graceful degradation) - Add adbc-driver-flightsql to [dremio] extra for faster queries This prevents ImportError crashes when running with minimal deps: uvx linkml-store --with dremio Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR aims to improve the installation experience and release quality by adding CI tests for minimal installs, making plotting imports optional, and adding ADBC driver support for Dremio. The primary motivation is to fix ImportError issues when running uvx linkml-store --with dremio without matplotlib installed.
Changes:
- Added CI job (
test-minimal) to verify minimal installs work without optional dependencies - Added pre-flight tests in the release workflow to catch issues before PyPI publication
- Made the plot CLI command optional by wrapping its import in try/except
- Added
adbc-driver-flightsqlto the dremio extra for faster Arrow Flight SQL queries
Reviewed changes
Copilot reviewed 4 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/main.yaml |
Adds test-minimal job to verify core CLI works without optional extras |
.github/workflows/pypi-publish.yaml |
Adds pre-flight tests including minimal install viability checks before PyPI release |
src/linkml_store/cli.py |
Wraps plot_cli import in try/except and conditionally adds plot command |
pyproject.toml |
Adds adbc-driver-flightsql to dremio extra and updates all extra dependencies |
uv.lock |
Updates lock file with ADBC driver packages (version 1.10.0) |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "pyarrow", | ||
| "adbc-driver-flightsql", | ||
| "matplotlib", | ||
| "seaborn", |
There was a problem hiding this comment.
The "all" extra is missing "plotly" which is included in the "analytics" extra (line 41). Since the "all" extra should include all optional dependencies, it should also include "plotly". This is inconsistent with the analytics extra definition.
| "seaborn", | |
| "seaborn", | |
| "plotly", |
- Add pytest markers infrastructure for core vs optional tests - Run CLI tests (except RAG inference) with minimal deps - Run API tests filtered to DuckDB only (skip mongodb, ibis, dremio) - Auto-skip tests when optional deps not installed
The test_validation tests require the `linkml` package which is only available with the `validation` extra. Since test-minimal runs with no extras to verify core functionality works without optional deps, these tests must be excluded. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
) * Pin linkml>=1.11.0rc1 and linkml-store>=0.3.1 to fix broken dev env The previous loose pins on main resolve to linkml 1.10.0 + linkml-runtime 1.10.0, which is broken on its own: linkml 1.10.0's __init__ references Format.JSON but linkml-runtime 1.10.0's Format enum no longer exposes it. Any code that imports linkml (including uv run linkml-store --help) hits AttributeError: JSON. linkml 1.11.0rc1 and linkml-runtime 1.11.0rc1 resolve the mismatch. They're on PyPI as pre-releases; the explicit rc marker in the spec lets uv resolve them. linkml-store 0.3.1 (released 2026-04-21) includes linkml/linkml-store#67, which makes the CLI survive minimal installs that don't have matplotlib/seaborn/scipy. Once linkml 1.11.0 final is released the rc markers can be dropped. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Fix linkml pins: drop RC, use linkml-store[all]>=0.3.1 + linkml>=1.10.0 linkml 1.11.0rc1 is not on public PyPI; the RC pin broke fresh installs. Resolves to linkml 1.10.0 + linkml-runtime 1.10.0 (verified via uv lock --upgrade-package). linkml-runtime is not pinned directly — linkml 1.10.0 requires >=1.9.5 and the resolver picks up 1.10.0 automatically. [all] extra on linkml-store satisfies Sierra's suggestion. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Pin linkml-runtime>=1.10.0 explicitly to close version-skew gap linkml 1.10.0's own floor (linkml-runtime>=1.9.5) is too loose — 1.9.x versions have documented version-skew breakage (linkml/linkml#3241, linkml/linkml PR#3183). The transitive constraint is not sufficient; an explicit floor is the only guarantee. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
Improve release quality and installation experience by:
Problem
Users running
uvx linkml-store --with dremiohit ImportError for matplotlib because:Changes
CI: Add minimal dependency test job
.github/workflows/main.yamltest-minimaljob runs BEFORE full test suitelinkml-store --helpand basic imports workRelease: Add pre-flight tests
.github/workflows/pypi-publish.yamlCLI: Optional plotting import
src/linkml_store/cli.pyplot_cliimport in try/exceptDependencies: ADBC for Dremio
pyproject.tomladbc-driver-flightsqlto[dremio]extraTesting
Related
Follows up on #66 (Dremio SQL support) by ensuring the new features don't break minimal installs.
🤖 Generated with Claude Code