v0.4.0
Highlights since v0.3.0:
Features:
dvx run --push each|endnow also pushes cache blobs to the remote (not justgit push), preventing "cache files do not exist" errors in downstream runs. Opt out with-P/--no-cache-push.dvx runcaches output blobs locally so historical versions stay retrievable.dvx statusgroups output by status (Stale → Missing → Transitive → Error → Fresh) with colored headers and counts. Filter with-s/--status(include) and-x/--omit(exclude), both prefix-matched (s→ stale,m→ missing, etc.). Flatten with-G.- Version-aware
dvx gcwith--keep Nand--older-thanretention policies. .dvx/config.ymlfor run config with per-stage commit/push overrides.dvx.stageIPC library (stage.commit(),stage.summary(),stage.push()).- Side-effect stages (no
outs, deps-only freshness) for deploys, syncs, posts. - Fetch schedules (daily/hourly/weekly/cron) for periodic data re-fetch.
- Directory
git_depsvia git tree SHAs. dvx import-url --git— git-tracked imports with URL provenance and-AUser-Agent.- Transitive staleness in
dvx status(⚠for indirectly stale stages). - Colored status output:
✗red,?magenta,⚠yellow,✓green. - Recursive
.dvcdiscovery indvx run(no targets = find all.dvcfiles). /-prefixed dep shorthand for out-of-dvc-dir deps (vs../../chains).
Bug fixes:
- Fix stale dep hashes written to
.dvcafter execution. - Fix targeted
dvx pullfor.dvcfiles (bypassdvc.yaml). - Fix side-effect stage path resolution in subdirectories.
- Fix dep freshness check for raw files without
.dvc. - Fix per-stage push config not gated on global push being enabled.
- Fix
Zsuffix in ISO 8601 parsing for Python 3.10. is_fetch_due: raise clearly whencroniteris missing.
Internal:
- Vendor
Meta.from_infomtime patch; depend on upstreamdvc-datafrom PyPI.
Removed:
after:stage ordering (redundant withgit_depson upstream.dvcfiles; never released to PyPI).
Full Changelog: v0.3.0...v0.4.0