mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-01 23:08:43 +01:00
cache: don't initalize cloud cache until its needed (#5264)
This commit is contained in:
Vendored
+7
-2
@@ -65,18 +65,23 @@ class Cache:
|
||||
|
||||
self._cache[Schemes.LOCAL] = _get_cache(repo, settings)
|
||||
|
||||
for scheme in self.CLOUD_SCHEMES:
|
||||
def _initalize_cloud_cache(self, schemes):
|
||||
for scheme in schemes:
|
||||
remote = self.config.get(scheme)
|
||||
settings = {"name": remote} if remote else None
|
||||
self._cache[scheme] = _get_cache(repo, settings)
|
||||
self._cache[scheme] = _get_cache(self.repo, settings)
|
||||
|
||||
def __getattr__(self, name):
|
||||
if name not in self._cache and name in self.CLOUD_SCHEMES:
|
||||
self._initalize_cloud_cache([name])
|
||||
|
||||
try:
|
||||
return self._cache[name]
|
||||
except KeyError as exc:
|
||||
raise AttributeError from exc
|
||||
|
||||
def by_scheme(self):
|
||||
self._initalize_cloud_cache(self.CLOUD_SCHEMES)
|
||||
yield from self._cache.items()
|
||||
|
||||
|
||||
|
||||
@@ -132,3 +132,12 @@ def test_branch_config(tmp_dir, scm):
|
||||
|
||||
dvc = Repo(scm=scm, rev="branch")
|
||||
assert dvc.config["remote"]["branch"]["url"] == "/some/path"
|
||||
|
||||
|
||||
def test_dynamic_cache_initalization(tmp_dir, scm):
|
||||
dvc = Repo.init()
|
||||
with dvc.config.edit() as conf:
|
||||
conf["cache"]["ssh"] = "foo"
|
||||
conf["remote"]["foo"] = {"url": "remote://bar/baz"}
|
||||
|
||||
Repo(str(tmp_dir))
|
||||
|
||||
Reference in New Issue
Block a user