in submitit/core/core.py [0:0]
def done(self, force_check: bool = False) -> bool:
"""Checks whether the job is finished.
This is done by checking if the result file is present,
or checking the job state regularly (at least every minute)
If the job has several tasks, the job is done once all tasks are done.
Parameters
----------
force_check: bool
Forces the slurm state update
Returns
-------
bool
whether the job is finished or not
Note
----
This function is not foolproof, and may say that the job is not terminated even
if it is when the job failed (no result file, but job not running) because
we avoid calling sacct/cinfo everytime done is called
"""
# TODO: keep state info once job is finished?
if self._sub_jobs:
return all(sub_job.done() for sub_job in self._sub_jobs)
p = self.paths.folder
try:
# trigger cache update: https://stackoverflow.com/questions/3112546/os-path-exists-lies/3112717
p.chmod(p.stat().st_mode)
except OSError:
pass
if self.paths.result_pickle.exists():
return True
# check with a call to sacct/cinfo
if self.watcher.is_done(self.job_id, mode="force" if force_check else "standard"):
return True
return False