NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3110 most downloaded on PyPI
Git for data scientists - manage your code and data together
Last release 6 months ago
31 Mar 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
555 releases · first in 2017
Resolve PyparsingDeprecationWarning for enablePackrat setParseAction parseString by @c-w-feldmann in #11016
PyparsingDeprecationWarning for enablePackrat setParseAction parseString by @c-w-feldmann in #11016Full Changelog: 3.67.0...3.67.1
One column per quarter.
fix: replace deprecated parseAll with parse_all in interpolate.py by @ritoban23 in #10971
Full Changelog: 3.66.1...3.67.0
Typo on flatten-dict dependency by @weiji14 in #10953
Full Changelog: 3.66.0...3.66.1
restrict pathspec to <1 by @vorj in #10948
--collapse-foreach-matrix option to collapse foreach/matrix stages into a single node by @fhausmann in #10945Full Changelog: 3.65.0...3.66.0
🚀 New Features and Enhancements
feat(webdav): add bearer_token_command for dynamic token acquisition by @GreenHatHG in #10917
Full Changelog: 3.64.1...3.64.2
exp: add support for --no-hydra flag by @StaszekM in #10866
🚀 New Features and Enhancements
Full Changelog: 3.63.0...3.64.0
…itself as a dataset. While this is technically a breaking change, we consider the previous behavior a bug and inconsistent with other DVC commands, in…
In dvc status --cloud, target now supports specifying path to a dataset. Previously, specifying a directory as the target caused DVC to search for .dvc and dvc.yaml files inside it, from which the datasets specified in those files were then checked for cloud/remote status, rather than considering the directory itself as a dataset.
While this is technically a breaking change, we consider the previous behavior a bug and inconsistent with other DVC commands, including plain dvc status. To restore the previous behavior, add the --recursive option.
Fixes #9336.
add --remote option to dvc data status --not-in-remote for checking files against a specified remote (instead of a default one) by @skshetry in #10843
# Check against the 'my-s3' remote instead of the default
$ dvc data status --not-in-remote --remote my-s3exp show accepts multiple --keep and --drop arguments in #10857
$ dvc exp show --keep 'featurize' --keep 'avg_prec' --drop '.*train' --drop '.*split'dvc init supports initializing DVC repository in an arbitrary directory in #10861
$ dvc init /path/to/dvc/repo/that/I/want/to/initializecheckout and pull reports granular summary of changes in #10842
Before, DVC would report statistics only about datasets affected during checkout phase.
$ dvc pull dataset/train/4
A dataset/
1 file added and 5843 files fetchedNow, it will report granular number of files affected by the operation.
$ dvc pull dataset/train/4
A dataset/
5842 files added and 5843 files fetcheddata status now detects file moves/renames by default in #10846
$ dvc move foo bar
$ dvc data status
DVC committed changes:
(git commit the corresponding dvc files to update the repo)
renamed: foo -> bardvcignore: share implementation between check-ignore and internal API used by DVC, improve support for unignores (eg: !data/** rules) in #10856 (Fixes #10722 and #10122)
support completing remote name in zsh/bash in #10858
$ dvc push --remote <TAB>
local my-s3commit, do not re-read on save from the workspace in #10839 (Fixes #10629)dvc diff result in #10845 (Fixes #7661)dvc data status in #10862dvc diff in #10844 (Fixes #7661)dvc.yaml filepath in error message when reading from git revisions in #10847Full Changelog: 3.62.0...3.63.0
🚀 New Features and Enhancements
Full Changelog: 3.61.0...3.62.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.60.1...3.60.2
site_cache_dir() must return DVC_SITE_CACHE_DIR if it exists by @rgoya in https://github.com/iterative/dvc/pull/10776
site_cache_dir() must return DVC_SITE_CACHE_DIR if it exists by @rgoya in https://github.com/iterative/dvc/pull/10776DVC_SITE_CACHE_DIR environment variable should override core.site_cache_dir by @rgoya in https://github.com/iterative/dvc/pull/10778Full Changelog: https://github.com/iterative/dvc/compare/3.60.0...3.60.1
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
url to repo by @skshetry in https://github.com/iterative/dvc/pull/10754Full Changelog: https://github.com/iterative/dvc/compare/3.59.2...3.60.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.59.1...3.59.2
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.59.0...3.59.1
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
--tree and --level support for ls-urlls-url has a new --tree flag to view files in a tree-like format. The url can be a local path or a path to a remote cloud (eg: s3://bucket/data).
$ dvc ls-url --tree .
data
├── .gitignore
├── data.xml.dvc
├── features
│ ├── test.pkl
│ └── train.pkl
└── prepared
├── test.tsv
└── train.tsv
To control the depth of recursion, --level=N option was added. That works with both --recursive and --tree display options.
Added by @skshetry in https://github.com/iterative/dvc/pull/10664.
DVC now officially supports Python 3.13. Added by @skshetry in https://github.com/iterative/dvc/pull/10665 and https://github.com/iterative/dvc/pull/10667.
Full Changelog: https://github.com/iterative/dvc/compare/3.58.0...3.59.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
--keep option for dvc experiments remove by @rmic in https://github.com/iterative/dvc/pull/10633--queue and -A by @rmic in https://github.com/iterative/dvc/pull/10641Full Changelog: https://github.com/iterative/dvc/compare/3.57.0...3.58.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
pre-commit to use pinned version of dvc and correct stage names by @mkdjr in https://github.com/iterative/dvc/pull/10621Full Changelog: https://github.com/iterative/dvc/compare/3.56.0...3.57.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
dvc ls by @petebachant in https://github.com/iterative/dvc/pull/10573cache.type is hardlink and on relink mode by @skshetry in https://github.com/iterative/dvc/pull/10557Full Changelog: https://github.com/iterative/dvc/compare/3.55.2...3.56.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.55.1...3.55.2
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.55.0...3.55.1
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
get() by reducing index.info calls() by @skshetry in https://github.com/iterative/dvc/pull/10540Full Changelog: https://github.com/iterative/dvc/compare/3.54.1...3.55.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.54.0...3.54.1
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Improves performance of building objects, especially for directories with large no. of files by as much as 70% - 90%. This affects most of the commands. For example,
checkout dropped by as much as 80% (see https://github.com/iterative/dvc/issues/10491).dvc add performance improved by more than 70%.See https://bench.dvc.org/latest.html for more.
Avoids relinking on dvc add and dvc commit if possible (iterative/dvc-data#548)
Improves performance for dvc diff rename detection (iterative/dvc-data#550).
Reintroduces support for hashing files concurrently. This is only done for files larger than 1MB to avoid Python's thread overhead.
Avoids stat calls (or, info() calls) during import-url and import. This is now done as part of walk().
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.53.1...3.53.2
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.53.0...3.53.1
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.52.0...3.53.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.51.3...3.52.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.51.2...3.51.3
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.51.1...3.51.2
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.51.0...3.51.1
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
repro --pull refactor by @dberenbaum in https://github.com/iterative/dvc/pull/10435Full Changelog: https://github.com/iterative/dvc/compare/3.50.3...3.51.0
<!-- Release notes generated using configuration in .github/release.yml at e82356ba9213394af5a9e91ac8026c3c09670bf9 -->
<!-- Release notes generated using configuration in .github/release.yml at e82356ba9213394af5a9e91ac8026c3c09670bf9 -->
Full Changelog: https://github.com/iterative/dvc/compare/3.50.2...3.50.3
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.50.1...3.50.2
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
>=3.3.2,<4 by @skshetry in https://github.com/iterative/dvc/pull/10406Full Changelog: https://github.com/iterative/dvc/compare/3.50.0...3.50.1
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.49.0...3.50.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.48.4...3.49.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.48.3...3.48.4
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
dvc studio login automatically push experiments by default by @AlexandreKempf in https://github.com/iterative/dvc/pull/10331Full Changelog: https://github.com/iterative/dvc/compare/3.48.2...3.48.3
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.48.1...3.48.2
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.48.0...3.48.1
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.47.0...3.48.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.46.0...3.47.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.45.0...3.46.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.44.0...3.45.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.43.1...3.44.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.43.0...3.43.1
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.42.0...3.43.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.41.0...3.41.1
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.41.0...3.42.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.40.1...3.41.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.40.0...3.40.1
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.39.0...3.40.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.38.1...3.39.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.38.0...3.38.1
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.37.0...3.38.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.36.1...3.37.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.36.0...3.36.1
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.35.0...3.36.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.34.0...3.35.0
<!-- Release notes generated using configuration in .github/release.yml at main -->
<!-- Release notes generated using configuration in .github/release.yml at main -->
Full Changelog: https://github.com/iterative/dvc/compare/3.33.4...3.34.0
Your coding agent can read these notes before it upgrades. Set up the MCP server →