mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +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)
|
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)
|
remote = self.config.get(scheme)
|
||||||
settings = {"name": remote} if remote else None
|
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):
|
def __getattr__(self, name):
|
||||||
|
if name not in self._cache and name in self.CLOUD_SCHEMES:
|
||||||
|
self._initalize_cloud_cache([name])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return self._cache[name]
|
return self._cache[name]
|
||||||
except KeyError as exc:
|
except KeyError as exc:
|
||||||
raise AttributeError from exc
|
raise AttributeError from exc
|
||||||
|
|
||||||
def by_scheme(self):
|
def by_scheme(self):
|
||||||
|
self._initalize_cloud_cache(self.CLOUD_SCHEMES)
|
||||||
yield from self._cache.items()
|
yield from self._cache.items()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -132,3 +132,12 @@ def test_branch_config(tmp_dir, scm):
|
|||||||
|
|
||||||
dvc = Repo(scm=scm, rev="branch")
|
dvc = Repo(scm=scm, rev="branch")
|
||||||
assert dvc.config["remote"]["branch"]["url"] == "/some/path"
|
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