Skip to content

Commit 6633ddb

Browse files
committed
fs: base: make fs_args lazy
_prepare_credentials might check stuff and raise exceptions, which would prevent us from creating an fs instance lazilly. Related https://github.com/iterative/studio/pull/6963
1 parent e95f502 commit 6633ddb

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/dvc_objects/fs/base.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,15 @@ def __init__(self, fs=None, **kwargs: Any):
107107
self.jobs = kwargs.get("jobs") or self._JOBS
108108
self.hash_jobs = kwargs.get("checksum_jobs") or self.HASH_JOBS
109109
self._config = kwargs
110-
self.fs_args: Dict[str, Any] = {"skip_instance_cache": True}
111-
self.fs_args.update(self._prepare_credentials(**kwargs))
112110
if fs:
113111
self.fs = fs
114112

113+
@cached_property
114+
def fs_args(self) -> Dict[str, Any]:
115+
ret = {"skip_instance_cache": True}
116+
ret.update(self._prepare_credentials(**self._config))
117+
return ret
118+
115119
@property
116120
def config(self) -> Dict[str, Any]:
117121
return self._config
@@ -142,7 +146,7 @@ def fs(self) -> "AbstractFileSystem": # pylint: disable=method-hidden
142146

143147
@cached_property
144148
def version_aware(self) -> bool:
145-
return self.fs_args.get("version_aware", False)
149+
return self._config.get("version_aware", False)
146150

147151
@staticmethod
148152
def _get_kwargs_from_urls(urlpath: str) -> "Dict[str, Any]":

0 commit comments

Comments
 (0)