[BUG]: DataladDataGrabber is not using the WorkDirManager #386

Merged
fraimondo merged 3 commits from fix/386 into main 2024-11-11 15:03:21 +00:00
2 changed files with 5 additions and 4 deletions

View file

@ -0,0 +1 @@
Use the :class:`junifer.pipeline.WorkDirManager` for temporary directories in the :class:`.DataladDataGrabber` by `Fede Raimondo`_

View file

@ -7,7 +7,6 @@
import atexit import atexit
import os import os
import shutil
import tempfile import tempfile
from pathlib import Path from pathlib import Path
from typing import Dict, Optional, Tuple, Union from typing import Dict, Optional, Tuple, Union
@ -17,6 +16,7 @@ import datalad.api as dl
from datalad.support.exceptions import IncompleteResultsError from datalad.support.exceptions import IncompleteResultsError
from datalad.support.gitrepo import GitRepo from datalad.support.gitrepo import GitRepo
from ..pipeline import WorkDirManager
from ..utils import logger, raise_error, warn_with_log from ..utils import logger, raise_error, warn_with_log
from .base import BaseDataGrabber from .base import BaseDataGrabber
@ -78,7 +78,8 @@ class DataladDataGrabber(BaseDataGrabber):
if datadir is None: if datadir is None:
logger.info("`datadir` is None, creating a temporary directory") logger.info("`datadir` is None, creating a temporary directory")
# Create temporary directory # Create temporary directory
tmpdir = Path(tempfile.mkdtemp()) tmpdir = WorkDirManager().get_tempdir(prefix="datalad")
self._tmpdir = tmpdir
datadir = tmpdir / "datadir" datadir = tmpdir / "datadir"
datadir.mkdir(parents=True, exist_ok=False) datadir.mkdir(parents=True, exist_ok=False)
logger.info(f"`datadir` set to {datadir}") logger.info(f"`datadir` set to {datadir}")
@ -104,7 +105,6 @@ class DataladDataGrabber(BaseDataGrabber):
"Datalad locks set to " "Datalad locks set to "
f"{datalad.cfg.get('datalad.locations.locks')}" f"{datalad.cfg.get('datalad.locations.locks')}"
) )
self._tmpdir = tmpdir
atexit.register(self._rmtmpdir) atexit.register(self._rmtmpdir)
# TODO: uri can be converted to a positional argument # TODO: uri can be converted to a positional argument
if uri is None: if uri is None:
@ -129,7 +129,7 @@ class DataladDataGrabber(BaseDataGrabber):
"""Remove temporary directory if it exists.""" """Remove temporary directory if it exists."""
if self._tmpdir.exists(): if self._tmpdir.exists():
logger.debug("Removing temporary directory") logger.debug("Removing temporary directory")
shutil.rmtree(self._tmpdir) WorkDirManager().delete_tempdir(self._tmpdir)
@property @property
def datadir(self) -> Path: def datadir(self) -> Path: