diff --git a/snakemake/dag.py b/snakemake/dag.py index 655148e13..dad8cdec5 100755 --- a/snakemake/dag.py +++ b/snakemake/dag.py @@ -235,14 +235,15 @@ def update_jobids(self): self._jobid[job] = len(self._jobid) def cleanup_workdir(self): - for io_dir in set( - os.path.dirname(io_file) - for job in self.jobs - for io_file in chain(job.output, job.input) - if not os.path.exists(io_file) - ): - if os.path.exists(io_dir) and not len(os.listdir(io_dir)): - os.removedirs(io_dir) + for job in self.jobs: + if not self.is_edit_notebook_job(job): + for io_dir, job in set( + os.path.dirname(io_file) + for io_file in chain(job.output, job.input) + if not os.path.exists(io_file) + ): + if os.path.exists(io_dir) and not len(os.listdir(io_dir)): + os.removedirs(io_dir) def cleanup(self): self.job_cache.clear() diff --git a/tests/test_jupyter_notebook_draft/Snakefile b/tests/test_jupyter_notebook_draft/Snakefile index 0b7526f01..7d04d595c 100644 --- a/tests/test_jupyter_notebook_draft/Snakefile +++ b/tests/test_jupyter_notebook_draft/Snakefile @@ -16,7 +16,7 @@ rule bar: input: infile = 'data.txt' output: - outfile = 'result_intermediate.txt' + outfile = 'results/result_intermediate.txt' conda: 'env.yaml' notebook: @@ -24,7 +24,7 @@ rule bar: rule baz: input: - infile = 'result_intermediate.txt' + infile = 'results/result_intermediate.txt' output: outfile = 'result_final.txt' log: @@ -37,7 +37,7 @@ rule baz: rule wild: input: - infile = 'result_intermediate.txt' + infile = 'results/result_intermediate.txt' output: outfile = '{what}.result_final.txt' conda: diff --git a/tests/test_jupyter_notebook_draft/expected-results/results/.gitkeep b/tests/test_jupyter_notebook_draft/expected-results/results/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/tests/tests.py b/tests/tests.py index d9eacb628..b6e995c05 100644 --- a/tests/tests.py +++ b/tests/tests.py @@ -1179,7 +1179,7 @@ def test_jupyter_notebook_draft(): dpath("test_jupyter_notebook_draft"), use_conda=True, edit_notebook=EditMode(draft_only=True), - targets=["result_intermediate.txt"], + targets=["results/result_intermediate.txt"], check_md5=False, )