Skip to content

Commit c7c7ba6

Browse files
authored
(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
1 parent 346b1c0 commit c7c7ba6

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

dvc/dirs.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import os
2+
from typing import Optional
23

34
import platformdirs
45

@@ -20,13 +21,16 @@ def global_config_dir():
2021
)
2122

2223

23-
def site_cache_dir():
24+
def site_cache_dir(config_site_cache_dir: Optional[str] = None):
2425
from platformdirs import PlatformDirs
2526
from platformdirs.unix import Unix
2627

2728
if dvc_site_cache_dir := os.getenv(env.DVC_SITE_CACHE_DIR):
2829
return dvc_site_cache_dir
2930

31+
if config_site_cache_dir is not None:
32+
return config_site_cache_dir
33+
3034
if issubclass(Unix, PlatformDirs):
3135
# Return the cache directory shared by users, e.g. `/var/tmp/$appname`
3236
# NOTE: platformdirs>=5 changed `site_cache_dir` to return /var/cache/$appname.

dvc/repo/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,7 @@ def site_cache_dir(self) -> str:
609609
from dvc.fs import GitFileSystem
610610
from dvc.version import version_tuple
611611

612-
cache_dir = self.config["core"].get("site_cache_dir") or site_cache_dir()
612+
cache_dir = site_cache_dir(self.config["core"].get("site_cache_dir"))
613613

614614
subdir = None
615615
if isinstance(self.fs, GitFileSystem):

tests/unit/test_dirs.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,13 @@ def test_site_cache_dir_on_unix(monkeypatch):
2121
def test_site_cache_dir_env_var(monkeypatch):
2222
monkeypatch.setenv(DVC_SITE_CACHE_DIR, "foo_bar")
2323
assert site_cache_dir() == "foo_bar"
24+
25+
26+
def test_site_cache_dir_with_config_parameter(monkeypatch):
27+
monkeypatch.delenv(DVC_SITE_CACHE_DIR)
28+
assert site_cache_dir(config_site_cache_dir="foo_bar") == "foo_bar"
29+
30+
31+
def test_site_cache_dir_env_var_precedence(monkeypatch):
32+
monkeypatch.setenv(DVC_SITE_CACHE_DIR, "foo")
33+
assert site_cache_dir(config_site_cache_dir="bar") == "foo"

0 commit comments

Comments
 (0)