From 319be54c80d3c7a7c6b92a6631049d28690cdf41 Mon Sep 17 00:00:00 2001 From: Jacob McDonald Date: Mon, 18 Nov 2024 13:05:41 -0500 Subject: [PATCH 1/2] Allow rmtree to ignore FileNotFoundErrors during rmtree --- src/fcache/cache.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/fcache/cache.py b/src/fcache/cache.py index 53326af..6d8f559 100644 --- a/src/fcache/cache.py +++ b/src/fcache/cache.py @@ -154,7 +154,13 @@ def delete(self): """Delete the write buffer and cache directory.""" if not self._sync: del self._buffer - shutil.rmtree(self.cache_dir) + + # Allow multiple processes to delete() at the same time, meaning some or all of cache_dir may already be deleted + def _on_error(function, path, excinfo): + if excinfo[0] != FileNotFoundError: + raise + + shutil.rmtree(self.cache_dir, onerror=_on_error) def close(self): """Sync the write buffer, then close the cache. From edc24018413622e8ec87258981678874175ceade Mon Sep 17 00:00:00 2001 From: Jacob McDonald Date: Tue, 19 Nov 2024 13:41:09 -0500 Subject: [PATCH 2/2] Fix formatting --- src/fcache/cache.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/fcache/cache.py b/src/fcache/cache.py index 6d8f559..7373b03 100644 --- a/src/fcache/cache.py +++ b/src/fcache/cache.py @@ -155,7 +155,8 @@ def delete(self): if not self._sync: del self._buffer - # Allow multiple processes to delete() at the same time, meaning some or all of cache_dir may already be deleted + # Allow multiple processes to delete() at the same time, + # meaning some or all of cache_dir may already be deleted def _on_error(function, path, excinfo): if excinfo[0] != FileNotFoundError: raise