Skip to content

Commit 24af099

Browse files
committed
Put back rm -rf instead of rmtree() for non-Windows systems.
`rm -rf` appears more likely to succeed rather than throwing an OSError.
1 parent 6cb953c commit 24af099

File tree

2 files changed

+28
-11
lines changed

2 files changed

+28
-11
lines changed

pybnf/algorithms.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -293,11 +293,18 @@ def run_simulation(self, debug=False, failed_logs_dir=''):
293293
logger.warning('Discarding Result %s as having an infinite objective function value' % res.name)
294294
res.simdata = None
295295
if self.delete_folder:
296-
try:
297-
shutil.rmtree(self.folder)
298-
self.jlogger.debug('Removed folder %s' % self.folder)
299-
except OSError:
300-
self.jlogger.error('Failed to remove folder %s.' % self.folder)
296+
if os.name == 'nt': # Windows
297+
try:
298+
shutil.rmtree(self.folder)
299+
self.jlogger.debug('Removed folder %s' % self.folder)
300+
except OSError:
301+
self.jlogger.error('Failed to remove folder %s.' % self.folder)
302+
else:
303+
try:
304+
run(['rm', '-rf', self.folder], check=True, timeout=1800)
305+
self.jlogger.debug('Removed folder %s' % self.folder)
306+
except (CalledProcessError, TimeoutExpired):
307+
self.jlogger.error('Failed to remove folder %s.' % self.folder)
301308

302309
return res
303310

@@ -988,10 +995,13 @@ def run(self, client, resume=None, debug=False):
988995
if (isinstance(self, SimplexAlgorithm) or self.config.config['refine'] != 1) and self.bootstrap_number is None:
989996
# End of fitting; delete unneeded files
990997
if self.config.config['delete_old_files'] >= 1:
991-
try:
992-
shutil.rmtree(self.sim_dir)
993-
except OSError:
994-
logger.error('Failed to remove simulations directory '+self.sim_dir)
998+
if os.name == 'nt': # Windows
999+
try:
1000+
shutil.rmtree(self.sim_dir)
1001+
except OSError:
1002+
logger.error('Failed to remove simulations directory '+self.sim_dir)
1003+
else:
1004+
run(['rm', '-rf', self.sim_dir]) # More likely to succeed than rmtree()
9951005

9961006
logger.info("Fitting complete")
9971007

pybnf/pybnf.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import pybnf.algorithms as algs
1010
import pybnf.printing as printing
1111

12+
from subprocess import run
1213
from numpy import inf
1314

1415
import logging
@@ -372,10 +373,16 @@ def main():
372373
# (exists in directory where workers were instantiated)
373374
# Tries current and home directories
374375
if os.path.isdir('dask-worker-space'):
375-
shutil.rmtree('dask-worker-space', ignore_errors=True)
376+
if os.name == 'nt': # Windows
377+
shutil.rmtree('dask-worker-space', ignore_errors=True)
378+
else:
379+
run(['rm', '-rf', 'dask-worker-space']) # More likely to succeed than rmtree()
376380
home_dask_dir = os.path.expanduser(os.path.join('~', 'dask-worker-space'))
377381
if os.path.isdir(home_dask_dir):
378-
shutil.rmtree(home_dask_dir, ignore_errors=True)
382+
if os.name == 'nt': # Windows
383+
shutil.rmtree(home_dask_dir, ignore_errors=True)
384+
else:
385+
run(['rm', '-rf', home_dask_dir])
379386

380387
# After any error, try to clean up.
381388
try:

0 commit comments

Comments
 (0)