Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bypass cleanup of temporary dirs if needed #389

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/changes/newsfragments/389.enh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add a ``cleanup`` parameter to the :class:`junifer.pipeline.WorkDirManager`, which allows to disable cleaning up temporary directories by `Fede Raimondo`_
17 changes: 15 additions & 2 deletions junifer/pipeline/workdir_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,20 @@ class WorkDirManager:
The path to the element directory.
root_tempdir : pathlib.Path or None
The path to the root temporary directory.
cleanup : bool
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cleanup : bool, optional

If false, the directories are not cleaned up after the object is
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

false -> False

destroyed. This is useful for debugging purposes. Default is True.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

. Default is True. -> purposes (default True).

"""

def __init__(self, workdir: Optional[Union[str, Path]] = None) -> None:
def __init__(
self, workdir: Optional[Union[str, Path]] = None, cleanup=True
) -> None:
"""Initialize the class."""
self._workdir = Path(workdir) if isinstance(workdir, str) else workdir
self._elementdir = None
self._root_tempdir = None

self._cleanup_dirs = cleanup
self._set_default_workdir()

def _set_default_workdir(self) -> None:
Expand All @@ -73,6 +78,8 @@ def __del__(self) -> None:

def _cleanup(self) -> None:
"""Clean up the element and temporary directories."""
if self._cleanup_dirs is False:
return
# Remove element directory
self.cleanup_elementdir()
# Remove root temporary directory
Expand Down Expand Up @@ -172,6 +179,8 @@ def delete_element_tempdir(self, tempdir: Path) -> None:
The temporary directory path to be deleted.
"""
if self._cleanup_dirs is False:
return
logger.debug(f"Deleting element temporary directory at {tempdir}")
shutil.rmtree(tempdir, ignore_errors=True)

Expand All @@ -183,6 +192,8 @@ def cleanup_elementdir(self) -> None:
can lead to required intermediate files not being found.
"""
if self._cleanup_dirs is False:
return
if self._elementdir is not None:
logger.debug(
"Deleting element directory at "
Expand Down Expand Up @@ -245,5 +256,7 @@ def delete_tempdir(self, tempdir: Path) -> None:
The temporary directory path to be deleted.
"""
if self._cleanup_dirs is False:
return
logger.debug(f"Deleting temporary directory at {tempdir}")
shutil.rmtree(tempdir, ignore_errors=True)
Loading