From ba7cd26abe25a36d280c5eb95c0d93be2d04d657 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saugat=20Pachhai=20=28=E0=A4=B8=E0=A5=8C=E0=A4=97=E0=A4=BE?= =?UTF-8?q?=E0=A4=A4=29?= Date: Fri, 23 Jan 2026 23:30:55 +0545 Subject: [PATCH 1/2] benchmarks: pin dulwich<1.0.0 for DVC versions before 3.44.0 Dulwich 1.0.0 removed deprecated methods including `Repo.stage()`, which breaks scmrepo versions before 3.5.4. Since DVC only requires scmrepo>=3 starting from version 3.44.0, older DVC versions cannot use the fixed scmrepo and need to be pinned to dulwich<1.0.0. This fixes dvc-bench CI failures when testing older DVC versions: ERROR: unexpected error - 'Repo' object has no attribute 'stage' Failure: https://github.com/treeverse/dvc-bench/actions/runs/21269812297/job/61217395932 Refs: - https://github.com/jelmer/dulwich/pull/2068 - https://github.com/treeverse/scmrepo/pull/447 --- dvc/testing/benchmarks/fixtures.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/dvc/testing/benchmarks/fixtures.py b/dvc/testing/benchmarks/fixtures.py index af8b30640e..f12b8561e2 100644 --- a/dvc/testing/benchmarks/fixtures.py +++ b/dvc/testing/benchmarks/fixtures.py @@ -9,7 +9,7 @@ import pytest from dulwich.porcelain import clone from funcy import first -from packaging import version +from packaging import version, specifiers from dvc.types import StrPath @@ -109,11 +109,19 @@ def make_dvc_bin( else: pkg = "dvc" packages = [f"{pkg} @ git+file://{dvc_repo}@{dvc_rev}"] - try: - if version.Version(dvc_rev) < version.Version("3.50.3"): - packages.append("pygit2==1.14.1") - except version.InvalidVersion: - pass + + version_constraints = [ + ("<3.50.3", ["pygit2==1.14.1"]), + ("<3.44.0", ["dulwich<1.0.0"]), + ] + for spec, pkgs in version_constraints: + try: + _dvc_version = version.Version(dvc_rev) + except version.InvalidVersion: + continue + if _dvc_version in specifiers.SpecifierSet(spec): + packages.extend(pkgs) + venv.install(*packages) dvc_venvs[dvc_rev] = venv From 61ac8e0c5b3a941307ad68c6df992fefff779cee Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 17:47:51 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dvc/testing/benchmarks/fixtures.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dvc/testing/benchmarks/fixtures.py b/dvc/testing/benchmarks/fixtures.py index f12b8561e2..8c326a2f38 100644 --- a/dvc/testing/benchmarks/fixtures.py +++ b/dvc/testing/benchmarks/fixtures.py @@ -9,7 +9,7 @@ import pytest from dulwich.porcelain import clone from funcy import first -from packaging import version, specifiers +from packaging import specifiers, version from dvc.types import StrPath