(fix) DVC_SITE_CACHE_DIR environment variable should override core.site_cache_dir (#10778)

* Prioritize DVC_SITE_CACHE_DIR over core.site_cache_dir

* Add tests for proper prioritization of env var and config

* Tests require python-3.9 compatible typing, use Optional

* Remove comment

* Fixup
This commit is contained in:
Rodrigo Goya
2025-06-12 14:19:30 +05:45
committed by GitHub
parent 346b1c064e
commit c7c7ba69fb
3 changed files with 16 additions and 2 deletions
+5 -1
View File
@@ -1,4 +1,5 @@
import os
from typing import Optional
import platformdirs
@@ -20,13 +21,16 @@ def global_config_dir():
)
def site_cache_dir():
def site_cache_dir(config_site_cache_dir: Optional[str] = None):
from platformdirs import PlatformDirs
from platformdirs.unix import Unix
if dvc_site_cache_dir := os.getenv(env.DVC_SITE_CACHE_DIR):
return dvc_site_cache_dir
if config_site_cache_dir is not None:
return config_site_cache_dir
if issubclass(Unix, PlatformDirs):
# Return the cache directory shared by users, e.g. `/var/tmp/$appname`
# NOTE: platformdirs>=5 changed `site_cache_dir` to return /var/cache/$appname.
+1 -1
View File
@@ -609,7 +609,7 @@ class Repo:
from dvc.fs import GitFileSystem
from dvc.version import version_tuple
cache_dir = self.config["core"].get("site_cache_dir") or site_cache_dir()
cache_dir = site_cache_dir(self.config["core"].get("site_cache_dir"))
subdir = None
if isinstance(self.fs, GitFileSystem):
+10
View File
@@ -21,3 +21,13 @@ def test_site_cache_dir_on_unix(monkeypatch):
def test_site_cache_dir_env_var(monkeypatch):
monkeypatch.setenv(DVC_SITE_CACHE_DIR, "foo_bar")
assert site_cache_dir() == "foo_bar"
def test_site_cache_dir_with_config_parameter(monkeypatch):
monkeypatch.delenv(DVC_SITE_CACHE_DIR)
assert site_cache_dir(config_site_cache_dir="foo_bar") == "foo_bar"
def test_site_cache_dir_env_var_precedence(monkeypatch):
monkeypatch.setenv(DVC_SITE_CACHE_DIR, "foo")
assert site_cache_dir(config_site_cache_dir="bar") == "foo"