in submitit/local/debug.py [0:0]
def results(self) -> List[R]:
self._check_not_cancelled()
if self._submission.done():
return [self._submission._result]
environ_backup = dict(os.environ)
# Restore os.environ from job creation time.
os.environ.clear()
os.environ.update(self.environ)
root_logger = logging.getLogger("")
self.paths.stdout.parent.mkdir(exist_ok=True, parents=True)
stdout_handler = logging.FileHandler(self.paths.stdout)
stdout_handler.setLevel(logging.DEBUG)
stderr_handler = logging.FileHandler(self.paths.stderr)
stderr_handler.setLevel(logging.WARNING)
root_logger.addHandler(stdout_handler)
root_logger.addHandler(stderr_handler)
root_logger.warning(
f"Logging is written both to stderr/stdout and to {self.paths.stdout}/err. "
"But call to print will only appear in the console."
)
try:
return [self._submission.result()]
except Exception as e:
print(e)
# Try to mimic `breakpoint()` behavior
# pylint: disable=import-outside-toplevel
if os.environ.get("PYTHONBREAKPOINT", "").startswith("ipdb"):
import ipdb # pylint: disable=import-error
ipdb.post_mortem()
else:
import pdb
pdb.post_mortem()
raise
finally:
os.environ.clear()
os.environ.update(environ_backup)
root_logger.removeHandler(stdout_handler)
root_logger.removeHandler(stderr_handler)