From 1710e379f54abd52a62abff964e86b88efdbdbab Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Thu, 7 Sep 2023 02:55:32 +0300 Subject: [PATCH] dvcfs: add basic fsid Implements fsspec's fsid https://github.com/fsspec/filesystem_spec/pull/1122 Required for #9904 --- dvc/fs/dvc.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/dvc/fs/dvc.py b/dvc/fs/dvc.py index 2685dd438..72d7e836d 100644 --- a/dvc/fs/dvc.py +++ b/dvc/fs/dvc.py @@ -162,6 +162,15 @@ class _DVCFileSystem(AbstractFileSystem): # pylint:disable=abstract-method if hasattr(repo, "dvc_dir"): self._datafss[key] = DataFileSystem(index=repo.index.data["repo"]) + @functools.cached_property + def fsid(self) -> str: + from fsspec.utils import tokenize + + return "dvcfs_" + tokenize( + self.repo.url or self.repo.root_dir, + self.repo.get_rev() if self.repo.scm else None, + ) + def _get_key(self, path: "StrPath") -> Key: path = os.fspath(path) parts = self.repo.fs.path.relparts(path, self.repo.root_dir) @@ -413,6 +422,10 @@ class DVCFileSystem(FileSystem): def fs(self) -> "_DVCFileSystem": return _DVCFileSystem(**self.fs_args) + @property + def fsid(self) -> str: + return self.fs.fsid + def isdvc(self, path, **kwargs) -> bool: return self.fs.isdvc(path, **kwargs)