Skip to content

Add runtime dependency validation#498

Merged
tony merged 6 commits into
masterfrom
runtime-tests
Jul 5, 2026
Merged

Add runtime dependency validation#498
tony merged 6 commits into
masterfrom
runtime-tests

Conversation

@tony

@tony tony commented Jan 17, 2026

Copy link
Copy Markdown
Member

Summary

  • Keep vcspull runtime installs free of dev-only typing dependencies on Python 3.10+
  • Add an isolated runtime dependency smoke test that imports vcspull modules and checks CLI help paths
  • Run the smoke check in CI and document the opt-in pytest marker for contributors
  • Add an unreleased changelog entry for the runtime install assurance

Motivation

vcspull's development environment can mask imports that only work because dev/test dependencies are installed. The branch verifies the package the way users install it, so missing runtime dependencies are caught before release without adding typing_extensions to standard package dependencies.

Test plan

  • uv run ruff format . --check
  • uv run ruff check .
  • uv run mypy
  • uv run py.test — 1415 passed, 1 skipped
  • uv run py.test -m scripts__runtime_dep_smoketest -s
  • uvx --python 3.14 --isolated --no-cache --from . python scripts/runtime_dep_smoketest.py
  • uvx --python 3.10 --isolated --no-cache --from . python scripts/runtime_dep_smoketest.py
  • just build-docs

@codecov

codecov Bot commented Jan 17, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 69.29134% with 39 lines in your changes missing coverage. Please review.
✅ Project coverage is 83.30%. Comparing base (ebb93f1) to head (4e26918).
⚠️ Report is 7 commits behind head on master.

Files with missing lines Patch % Lines
scripts/runtime_dep_smoketest.py 62.50% 17 Missing and 10 partials ⚠️
scripts/test_runtime_dep_smoketest.py 41.17% 10 Missing ⚠️
conftest.py 77.77% 1 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #498      +/-   ##
==========================================
- Coverage   83.80%   83.30%   -0.50%     
==========================================
  Files          30       32       +2     
  Lines        4389     4492     +103     
  Branches      881      903      +22     
==========================================
+ Hits         3678     3742      +64     
- Misses        471      499      +28     
- Partials      240      251      +11     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

tony added 5 commits July 5, 2026 07:02
why: Runtime installs on newer Python versions should not need a
compatibility package solely for vcspull's TypedDict annotations.

what:
- Replace NotRequired fields with total=False TypedDict mixins
- Preserve existing worktree, pin, and config option fields
why: Release checks need a direct way to catch imports that only work
because dev or test dependencies are installed locally.

what:
- Add a script that imports vcspull modules from a runtime install
- Probe the base CLI and each subcommand with --help
- Report import and CLI failures with actionable output
why: Contributors and CI need an opt-in pytest entry point for the
network-dependent runtime dependency smoke check.

what:
- Add a marked pytest wrapper around the uvx isolated install check
- Collect scripts tests without running the smoke marker by default
- Register the scripts__runtime_dep_smoketest marker
why: Contributors need the exact command for the isolated runtime
smoke check and the matching opt-in pytest marker.

what:
- Add the uvx no-cache smoke-test command
- Document the pytest marker invocation
- Note the network dependency of the isolated install check
why: Pull-request checks should fail when the package imports only work
because development dependencies are present in the test environment.

what:
- Run the runtime dependency smoke script after pytest
- Use uvx with an isolated no-cache runtime install
@tony tony force-pushed the runtime-tests branch from 03fcb25 to cd53a26 Compare July 5, 2026 12:04
why: The runtime smoke branch needs a product-level changelog note
that explains the install-path benefit without exposing implementation
churn.

what:
- Add a What's new entry for runtime-only install checks
- Describe the user-facing dependency assurance
@tony tony marked this pull request as ready for review July 5, 2026 12:30
@tony tony merged commit 9535d85 into master Jul 5, 2026
8 checks passed
@tony tony mentioned this pull request Jul 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant