mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
(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:
+5
-1
@@ -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.
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user