Remove cached model directories recursively
This commit is contained in:
parent
4f603817b2
commit
6c4b33a418
3 changed files with 27 additions and 2 deletions
|
|
@ -332,7 +332,10 @@ class LargeFileBase(ABC):
|
||||||
logger.info(
|
logger.info(
|
||||||
f"Deleting file from cache to meet quota (max_cache_size={self.max_cache_size}): {file}"
|
f"Deleting file from cache to meet quota (max_cache_size={self.max_cache_size}): {file}"
|
||||||
)
|
)
|
||||||
os.unlink(file)
|
if file.is_dir():
|
||||||
|
shutil.rmtree(file)
|
||||||
|
else:
|
||||||
|
file.unlink()
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def _find_remote_instances(self) -> List[DataInstance]:
|
def _find_remote_instances(self) -> List[DataInstance]:
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import shutil
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any, List, Optional
|
from typing import Any, List, Optional
|
||||||
|
|
||||||
|
|
@ -80,4 +81,7 @@ class LargeFileLocal(LargeFileBase):
|
||||||
logger.info(
|
logger.info(
|
||||||
f"Removing old version (keep_last_n={self._keep_last_n}): {i.remote_path}"
|
f"Removing old version (keep_last_n={self._keep_last_n}): {i.remote_path}"
|
||||||
)
|
)
|
||||||
i.remote_path.unlink()
|
if i.remote_path.is_dir():
|
||||||
|
shutil.rmtree(i.remote_path)
|
||||||
|
else:
|
||||||
|
i.remote_path.unlink()
|
||||||
|
|
|
||||||
|
|
@ -27,3 +27,21 @@ def test_unrelated_cache_entries_are_ignored() -> None:
|
||||||
(LargeFileLocal.cache_path / "model-unrelated").write_text("unrelated")
|
(LargeFileLocal.cache_path / "model-unrelated").write_text("unrelated")
|
||||||
(LargeFileLocal.cache_path / "model-0").write_text("weights")
|
(LargeFileLocal.cache_path / "model-0").write_text("weights")
|
||||||
assert LargeFileLocal("model").get().read_text() == "weights"
|
assert LargeFileLocal("model").get().read_text() == "weights"
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("operation", ["delete", "prune"])
|
||||||
|
def test_cached_directories_can_be_removed(
|
||||||
|
tmp_path: Path, monkeypatch: pytest.MonkeyPatch, operation: str
|
||||||
|
) -> None:
|
||||||
|
source = tmp_path / "source"
|
||||||
|
source.mkdir()
|
||||||
|
(source / "weights").write_text("weights")
|
||||||
|
LargeFileLocal("model", "w").push(source)
|
||||||
|
reader = LargeFileLocal("model")
|
||||||
|
cached = reader.get()
|
||||||
|
if operation == "delete":
|
||||||
|
reader.delete()
|
||||||
|
else:
|
||||||
|
monkeypatch.setattr(LargeFileLocal, "max_cache_size", "0")
|
||||||
|
reader.clean_up()
|
||||||
|
assert not cached.exists()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue