From ddf7b0322d429b245127793941da597785aaa9cd Mon Sep 17 00:00:00 2001 From: Oscar Levin Date: Fri, 5 Jun 2026 16:56:36 -0500 Subject: [PATCH 1/2] Script: wrap release_temporary_directories in try/except --- pretext/lib/common.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pretext/lib/common.py b/pretext/lib/common.py index 2f5e938fa..a58c69215 100644 --- a/pretext/lib/common.py +++ b/pretext/lib/common.py @@ -540,12 +540,16 @@ def release_temporary_directories(): # log.level is 10 for debug, greater for all other levels. if log.level > 10: - for td in __temps: - log.info("Removing temporary directory {}".format(td)) - # conservatively, raise exception on errors - shutil.rmtree(td, ignore_errors=False) - # reset list of temp direcotries to empty, to avoid duplicate requests + try: + for td in __temps: + log.info("Removing temporary directory {}".format(td)) + # conservatively, raise exception on errors + shutil.rmtree(td, ignore_errors=False) + log.warning("Removed temporary directory {}".format(td)) + # reset list of temp directories to empty, to avoid duplicate requests __temps = [] + except: + log.warning("Failed to remove temporary directories, starting with {} (and maybe some others)".format(td)) else: log.debug("Temporary directories left behind for inspection: {}".format(__temps)) From 4c6bb702609a93ace64d02f2af209342d2d3eeb4 Mon Sep 17 00:00:00 2001 From: Oscar Levin Date: Fri, 5 Jun 2026 17:17:08 -0500 Subject: [PATCH 2/2] Script: allow external tool to force tmp dir cleanup --- pretext/lib/common.py | 10 +++++++--- pretext/pretext | 3 ++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/pretext/lib/common.py b/pretext/lib/common.py index a58c69215..75729d56f 100644 --- a/pretext/lib/common.py +++ b/pretext/lib/common.py @@ -533,13 +533,17 @@ def get_output_filename(xml, out_file, dest_dir, suffix): return os.path.join(dest_dir, derivedname) -def release_temporary_directories(): - """Release scratch directories unless requesting debugging info""" +def release_temporary_directories(any_log_level): + """ + Release scratch directories unless requesting debugging info + - any_log_level: can be set to True by an external tool to force cleanup even if log level is set to debug (log.level == 10) + """ + global __temps # log.level is 10 for debug, greater for all other levels. - if log.level > 10: + if log.level > 10 or any_log_level: try: for td in __temps: log.info("Removing temporary directory {}".format(td)) diff --git a/pretext/pretext b/pretext/pretext index 2975c59ec..2839ff2e9 100755 --- a/pretext/pretext +++ b/pretext/pretext @@ -930,7 +930,8 @@ def main(): ) # Cleanup, if execution does not raise errors - ptx.release_temporary_directories() + # "any_log_level" is False, since we want to keep temporary directories if the log level is set to debug + ptx.release_temporary_directories(any_log_level=False) # Do it - lone top-level command