diff --git a/src/dvc_data/index/collect.py b/src/dvc_data/index/collect.py index 14e44ef4..6493b16a 100644 --- a/src/dvc_data/index/collect.py +++ b/src/dvc_data/index/collect.py @@ -94,7 +94,7 @@ def collect( # noqa: C901, PLR0912 cache = storage_info.cache if storage != "cache" else None remote = storage_info.remote if storage != "remote" else None - if not data: + if not data or (push and data.read_only): continue try: diff --git a/src/dvc_data/index/index.py b/src/dvc_data/index/index.py index f89d93b8..0a591012 100644 --- a/src/dvc_data/index/index.py +++ b/src/dvc_data/index/index.py @@ -144,8 +144,9 @@ def close(self): class Storage(ABC): - def __init__(self, key: "DataIndexKey"): + def __init__(self, key: "DataIndexKey", read_only: bool = False): self.key = key + self.read_only = read_only @property @abstractmethod @@ -176,10 +177,11 @@ def __init__( key: "DataIndexKey", odb: "HashFileDB", index: Optional["DataIndex"] = None, + read_only: bool = False, ): self.odb = odb self.index = index - super().__init__(key) + super().__init__(key, read_only=read_only) @property def fs(self): @@ -235,12 +237,13 @@ def __init__( path: "str", index: Optional["DataIndex"] = None, prefix: Optional["DataIndexKey"] = None, + read_only: bool = False, ): self._fs = fs self._path = path self.index = index self.prefix = prefix if prefix is not None else key - super().__init__(key) + super().__init__(key, read_only=read_only) @property def fs(self):