/usr/local/lib/python3.6/site-packages/fsspec/implementations
NameSizeModeActions
__pycache__/-0755rm
arrow.py67620644editdlrm
cached.py277030644editdlrm
dask.py44410644editdlrm
dbfs.py146500644editdlrm
dvc.py21560644editdlrm
ftp.py107410644editdlrm
git.py40340644editdlrm
github.py72640644editdlrm
hdfs.py70720644editdlrm
http.py257740644editdlrm
jupyter.py38160644editdlrm
libarchive.py70730644editdlrm
local.py114190644editdlrm
memory.py86060644editdlrm
reference.py184480644editdlrm
sftp.py52090644editdlrm
smb.py100230644editdlrm
tar.py53560644editdlrm
webhdfs.py150860644editdlrm
zip.py32010644editdlrm
__init__.py00644editdlrm
Edit: /usr/local/lib/python3.6/site-packages/fsspec/implementations/dvc.py (2156B)
import os import dvc.repo from fsspec.implementations.local import LocalFileSystem from fsspec.spec import AbstractFileSystem lfs = LocalFileSystem() class DVCFileSystem(AbstractFileSystem): """DVC backend (experimental) Load data files that are versioned using the `Data Version Control`_ system .. _Data Version Control: https://dvc.org/ This interface is incomplete and experimental. """ root_marker = "" def __init__(self, path=None, **kwargs): """ Parameters ---------- path: str (optional) Location of the repo to access; defaults to the current directory. """ super().__init__(**kwargs) self.repo = dvc.repo.Repo(path) self.path = self.repo.find_root() @classmethod def _strip_protocol(cls, path): return super()._strip_protocol(path).lstrip("/") def ls(self, path, detail=False, **kwargs): path = self._strip_protocol(path) allfiles = self.repo.tree.walk(os.path.join(self.repo.root_dir, path)) dirname, dirs, files = next(allfiles) out = [os.path.join(path, f) for f in dirs + files] details = [] for f in out: full = os.path.join(self.repo.root_dir, f) file_info = lfs.info(full) if lfs.isdir(full): details.append(file_info) else: try: extra = self.repo.find_out_by_relpath(full).dumpd() except dvc.exceptions.OutputNotFoundError: continue details.append(dict(**extra, **file_info)) details[-1]["name"] = f if detail: return details return [d["name"] for d in details] def ukey(self, path): return self.info(path)["md5"] def _open( self, path, mode="rb", block_size=None, autocommit=True, cache_options=None, **kwargs, ): # returns a context file object (i.e., needs to be used with ``with`` path = self._strip_protocol(path) return self.repo.open_by_relpath(path)