feat: add flag --report-after-run to automatically generate the report after a successfull workflow run#3428
Conversation
📝 WalkthroughWalkthroughThe changes introduce a new command-line argument Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant CLI as "CLI Argument Parser"
participant Workflow as "Workflow Executor"
participant ReportGen as "Report Generator Plugin"
User->>CLI: Provide arguments (--report / --report-after-run)
CLI->>CLI: Parse arguments and group report flags
CLI->>Workflow: Call args_to_api() with updated report settings (reporter="html")
Workflow->>Workflow: Execute workflow
alt If '--report' flag is set
Workflow->>ReportGen: Generate report during execution
else If '--report_after_run' flag is set
Workflow->>ReportGen: Generate report after run
end
Suggested reviewers
Tip ⚡🧪 Multi-step agentic review comment chat (experimental)
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (3)
🚧 Files skipped from review as they are similar to previous changes (2)
🧰 Additional context used📓 Path-based instructions (1)`**/*.py`: Do not try to improve formatting. Do not suggest ...
⏰ Context from checks skipped due to timeout of 90000ms (38)
🔇 Additional comments (4)
✨ Finishing Touches
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (5)
tests/test_report_after_run/report/table.rst (1)
1-2: Example Table Entry ContentThe new file adds a simple entry
"An example table."as part of the reporting documentation. Verify that this minimal content aligns with the expected documentation formatting and style across the project.tests/test_report_after_run/report/testdir.rst (1)
1-1: Dynamic Placeholder VerificationThis file introduces dynamic content with the placeholder
{{ snakemake.wildcards.name }}. Please verify that during report generation the placeholder is correctly substituted with actual data. If needed, consider including guidance or a fallback value for clarity.tests/test_report_after_run/report/workflow.rst (1)
1-2: Workflow Description and Reference LinksThe workflow description now includes references (
fig1.svg_andStep 2_) intended to link to report assets. Ensure that these references are correctly defined elsewhere in your documentation so that they resolve in the final report.src/snakemake/cli.py (1)
2081-2186: Consider clarifying the conditional check for report-after-run.While the code works correctly, the conditional check after workflow execution only verifies if
report_plugin is not Nonerather than explicitly checking forargs.report_after_run. For clarity and to avoid potential future issues, consider modifying it to explicitly check for both conditions.-if report_plugin is not None: +if report_plugin is not None and args.report_after_run: dag_api.create_report( reporter=args.reporter, report_settings=report_settings, )tests/test_report_after_run/Snakefile (1)
55-61: External URL dependency could make test unstable.The rule downloads data from an external URL, which could lead to flaky tests if the URL becomes unavailable or changes. Consider one of these alternatives:
- Include the CSV file in the test data directory
- Use a more reliable data source
- Add error handling for the download
This will improve test reliability and prevent failures due to external dependencies.
rule d: output: report("test.csv", caption="report/table.rst"), run: shell( - "curl http://samplecsvs.s3.amazonaws.com/Sacramentorealestatetransactions.csv > {output}" + """ + if ! curl -f -s http://samplecsvs.s3.amazonaws.com/Sacramentorealestatetransactions.csv > {output}; then + echo "url,price,city\nsample,123,Sacramento" > {output} + echo "Warning: Could not download CSV, created fallback file" >&2 + fi + """ )
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (3)
tests/test_report_after_run/data/fig1.svgis excluded by!**/*.svgtests/test_report_after_run/data/fig2.pngis excluded by!**/*.pngtests/test_report_after_run/lorem-ipsum.pdfis excluded by!**/*.pdf
📒 Files selected for processing (10)
src/snakemake/cli.py(5 hunks)tests/common.py(2 hunks)tests/test_report_after_run/Snakefile(1 hunks)tests/test_report_after_run/envs/test.yaml(1 hunks)tests/test_report_after_run/report/fig1.rst(1 hunks)tests/test_report_after_run/report/fig2.rst(1 hunks)tests/test_report_after_run/report/table.rst(1 hunks)tests/test_report_after_run/report/testdir.rst(1 hunks)tests/test_report_after_run/report/workflow.rst(1 hunks)tests/tests.py(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.py`: Do not try to improve formatting. Do not suggest ...
**/*.py: Do not try to improve formatting.
Do not suggest type annotations for functions that are defined inside of functions or methods.
Do not suggest type annotation of theselfargument of methods.
Do not suggest type annotation of theclsargument of classmethods.
Do not suggest return type annotation if a function or method does not contain areturnstatement.
tests/common.pysrc/snakemake/cli.pytests/tests.py
⏰ Context from checks skipped due to timeout of 90000ms (34)
- GitHub Check: tests (10, windows-latest, py312, bash)
- GitHub Check: tests (10, windows-latest, py311, bash)
- GitHub Check: tests (10, ubuntu-latest, py312, bash)
- GitHub Check: tests (10, ubuntu-latest, py311, bash)
- GitHub Check: tests (8, ubuntu-latest, py312, bash)
- GitHub Check: tests (8, ubuntu-latest, py311, bash)
- GitHub Check: tests (7, windows-latest, py312, bash)
- GitHub Check: tests (7, windows-latest, py311, bash)
- GitHub Check: tests (7, ubuntu-latest, py312, bash)
- GitHub Check: tests (7, ubuntu-latest, py311, bash)
- GitHub Check: tests (6, windows-latest, py312, bash)
- GitHub Check: tests (6, windows-latest, py311, bash)
- GitHub Check: tests (6, ubuntu-latest, py312, bash)
- GitHub Check: tests (6, ubuntu-latest, py311, bash)
- GitHub Check: tests (5, windows-latest, py312, bash)
- GitHub Check: tests (5, windows-latest, py311, bash)
- GitHub Check: tests (5, ubuntu-latest, py312, bash)
- GitHub Check: tests (5, ubuntu-latest, py311, bash)
- GitHub Check: tests (4, windows-latest, py312, bash)
- GitHub Check: tests (4, windows-latest, py311, bash)
- GitHub Check: tests (4, ubuntu-latest, py312, bash)
- GitHub Check: tests (4, ubuntu-latest, py311, bash)
- GitHub Check: tests (3, windows-latest, py312, bash)
- GitHub Check: tests (3, windows-latest, py311, bash)
- GitHub Check: tests (3, ubuntu-latest, py312, bash)
- GitHub Check: tests (3, ubuntu-latest, py311, bash)
- GitHub Check: tests (2, windows-latest, py312, bash)
- GitHub Check: tests (2, windows-latest, py311, bash)
- GitHub Check: tests (2, ubuntu-latest, py312, bash)
- GitHub Check: tests (2, ubuntu-latest, py311, bash)
- GitHub Check: tests (1, windows-latest, py312, bash)
- GitHub Check: tests (1, windows-latest, py311, bash)
- GitHub Check: tests (1, ubuntu-latest, py312, bash)
- GitHub Check: tests (1, ubuntu-latest, py311, bash)
🔇 Additional comments (16)
tests/test_report_after_run/report/fig1.rst (1)
1-2: Caption with Hyperlink FormattingThe caption now includes an inline hyperlink using reStructuredText syntax:
This is a caption with a \link https://www.google.com`_.`
Ensure that external links are permitted in report captions and that this formatting renders as intended by your documentation tools.tests/test_report_after_run/report/fig2.rst (1)
1-2: Mathematical Expression RenderingThe file adds a math expression using the
:math:directive:
Some math :math:\\sum_i i^2`.`
Confirm that this expression complies with Sphinx/reStructuredText guidelines and renders properly in the final report output.tests/test_report_after_run/envs/test.yaml (1)
1-5: LGTM! Simple and appropriate Conda environment configuration for testing.The environment definition includes a standard channel (conda-forge) and the 'make' package as a dependency, which is a suitable minimal configuration for the test case.
tests/tests.py (1)
284-291: Well-structured test function that matches the existing testing pattern.The new test function for the report-after-run feature follows the existing pattern of other report tests and correctly utilizes the new parameter in the run function. This maintains consistency across the codebase.
tests/common.py (2)
175-175: Good addition of the new optional parameter.The parameter is correctly added with a default value of
None, maintaining backward compatibility with existing code.
427-436: Clean implementation of report generation after workflow execution.The implementation correctly handles the new parameter, creating a report using the same pattern as the existing report generation code. The logic is appropriately placed after workflow execution, as the name suggests.
src/snakemake/cli.py (3)
944-945: Good use of mutually exclusive group for report parameters.Creating a mutually exclusive group for report parameters ensures users can't specify both options at the same time, which makes sense since they serve similar purposes but at different times in the workflow.
962-977: Well-documented new command line parameter.The help text for the new parameter is clear, detailed, and matches the style of the existing report parameter, maintaining consistency in the command line interface.
1901-1904: Correct logic for detecting report generation options.The code correctly checks for either report parameter and sets up the HTML reporter appropriately.
tests/test_report_after_run/Snakefile (7)
2-2: Report template location specified correctly.The workflow report template is properly defined at the beginning of the file, which will be used for the HTML report generation when
--report-after-runis used.
5-5: Shell executable explicitly set to bash.This is good practice to ensure consistent behavior across different environments, especially for the shell commands containing bash-specific syntax later in the workflow.
8-10: Rule 'all' correctly defines expected outputs.The rule properly aggregates all the final outputs that should be generated by the workflow (SVG, PNG, CSV, and directory), ensuring that the entire workflow executes when running Snakemake without specific targets.
40-52:Details
✅ Verification successful
Rule 'b' demonstrates wildcards in report generation.
The rule effectively showcases how to use wildcards in report outputs, with dynamic categories and labels. This is a valuable test case for ensuring the reporting functionality handles parameterized outputs correctly.
🏁 Script executed:
#!/bin/bash # Check if the referenced data file exists if [ -f "tests/test_report_after_run/data/fig2.png" ]; then echo "✓ Source PNG file exists" else echo "✗ Source PNG file missing: tests/test_report_after_run/data/fig2.png" fi # Check if the caption file exists if [ -f "tests/test_report_after_run/report/fig2.rst" ]; then echo "✓ Caption file exists" else echo "✗ Caption file missing: tests/test_report_after_run/report/fig2.rst" fiLength of output: 223
Verified report generation using wildcards in rule 'b'.
- The shell script confirmed that both the source PNG (
tests/test_report_after_run/data/fig2.png) and the caption file (tests/test_report_after_run/report/fig2.rst) exist.- Rule 'b' successfully demonstrates dynamic report outputs through wildcards, ensuring that parameterized labels and categories are handled correctly.
- No further changes are needed based on the current test case.
64-76:Details
✅ Verification successful
Rule 'e' correctly implements directory reporting.
The rule demonstrates how to create and report on a directory output with pattern matching, which is an important test case for the directory reporting functionality. The shell script correctly creates the directory and populates it with numbered text files.
🏁 Script executed:
#!/bin/bash # Check if the caption file exists if [ -f "tests/test_report_after_run/report/testdir.rst" ]; then echo "✓ Caption file exists" else echo "✗ Caption file missing: tests/test_report_after_run/report/testdir.rst" fiLength of output: 112
Directory Reporting Verified
- The rule
'e'intests/test_report_after_run/Snakefilesuccessfully creates the directory and populates it with text files.- The verification script confirmed that the caption file at
tests/test_report_after_run/report/testdir.rstexists.This confirms that the directory reporting functionality works as intended. The code changes are approved.
26-37:Details
✅ Verification successful
Rule 'a' implements proper report generation with metadata.
The rule correctly:
- Uses the outputs from rule 'c' as dependencies
- Generates an SVG report with appropriate metadata (caption, category, and dynamic labels)
- Copies the source file from a data directory
This is a good test case for the report generation feature.
🏁 Script executed:
#!/bin/bash # Check if the referenced data file exists if [ -f "tests/test_report_after_run/data/fig1.svg" ]; then echo "✓ Source SVG file exists" else echo "✗ Source SVG file missing: tests/test_report_after_run/data/fig1.svg" fi # Check if the caption file exists if [ -f "tests/test_report_after_run/report/fig1.rst" ]; then echo "✓ Caption file exists" else echo "✗ Caption file missing: tests/test_report_after_run/report/fig1.rst" fiLength of output: 223
Verified Report Generation in Rule 'a'
The verification confirms that the rule correctly implements report generation with the necessary metadata. The source SVG file (
tests/test_report_after_run/data/fig1.svg) and the caption file (tests/test_report_after_run/report/fig1.rst) both exist, as expected. Specifically:
- The rule continues to use outputs from rule 'c' as dependencies.
- The generated SVG report includes the appropriate metadata (caption, category, and dynamic labels).
- The shell command correctly copies the source file from the data directory.
This is a robust test case for the report generation feature.
13-23:Details
✅ Verification successful
Consider handling potential issues with external dependencies.
The rule properly uses Singularity container and Conda environment for reproducibility. However, be aware that this might create testing dependencies that need to be available in CI environments.
The
sleepcommand with random duration could potentially cause non-deterministic behavior in tests, though it's likely intentional to simulate varying execution times.
🏁 Script executed:
#!/bin/bash # Check if the required Conda environment file exists if [ -f "tests/test_report_after_run/envs/test.yaml" ]; then echo "✓ Conda environment file exists" else echo "✗ Conda environment file missing: tests/test_report_after_run/envs/test.yaml" fi # Check if the referenced input file exists if [ -f "tests/test_report_after_run/lorem-ipsum.pdf" ]; then echo "✓ Input PDF file exists" else echo "✗ Input PDF file missing: tests/test_report_after_run/lorem-ipsum.pdf" fi # Check if the caption file exists if [ -f "tests/test_report_after_run/report/fig1.rst" ]; then echo "✓ Caption file exists" else echo "✗ Caption file missing: tests/test_report_after_run/report/fig1.rst" fiLength of output: 352
Attention: External Dependencies and CI Configuration Verified
The rule is correctly configured to use both a Singularity container and a Conda environment for reproducibility. Our verification confirms that the necessary external dependencies—the Conda environment file ("envs/test.yaml"), the input PDF ("lorem-ipsum.pdf"), and the caption file ("report/fig1.rst")—are all present.
Please ensure that your CI environment similarly provides these dependencies to avoid any issues in testing. Additionally, note that the use of a random sleep command appears intentional for simulating variable execution times, though it may introduce minor non-deterministic behavior in tests.
🤖 I have created a release *beep* *boop* --- ## [9.0.0](v8.30.0...v9.0.0) (2025-03-14) ### ⚠ BREAKING CHANGES * Logging refactor & add LoggerPluginInterface ([#3107](#3107)) ### Features * [#3412](#3412) - keep shadow folder of failed job if --keep-incomplete flag is set. ([#3430](#3430)) ([22978c3](22978c3)) * add flag --report-after-run to automatically generate the report after a successfull workflow run ([#3428](#3428)) ([b0a7f03](b0a7f03)) * add flatten function to IO utils ([#3424](#3424)) ([67fa392](67fa392)) * add helper functions to parse input files ([#2918](#2918)) ([63e45a7](63e45a7)) * Add option to print redacted file names ([#3089](#3089)) ([ba4d264](ba4d264)) * add support for validation of polars dataframe and lazyframe ([#3262](#3262)) ([c7473a6](c7473a6)) * added support for rendering dag with mermaid js ([#3409](#3409)) ([7bf8381](7bf8381)) * adding --replace-workflow-config to fully replace workflow configs (from config: directive) with --configfile, instead of merging them ([#3381](#3381)) ([47504a0](47504a0)) * Dynamic module name ([#3401](#3401)) ([024dc32](024dc32)) * Enable saving and reloading IOCache object ([#3386](#3386)) ([c935953](c935953)) * files added in rule params with workflow.source_path will be available in used containers ([#3385](#3385)) ([a6e45bf](a6e45bf)) * Fix keep_local in storage directive and more freedom over remote retrieval behaviour ([#3410](#3410)) ([67b4739](67b4739)) * inherit parameters of use rule and extend/replace individual items them when using 'with' directive ([#3365](#3365)) ([93e4b92](93e4b92)) * Logging refactor & add LoggerPluginInterface ([#3107](#3107)) ([86f1d6e](86f1d6e)) * Maximal file size for checksums ([#3368](#3368)) ([b039f8a](b039f8a)) * Modernize package configuration using Pixi ([#3369](#3369)) ([77992d8](77992d8)) * multiext support for named input/output ([#3372](#3372)) ([05e1378](05e1378)) * optionally auto-group jobs via temp files in case of remote execution ([#3378](#3378)) ([cc9bba2](cc9bba2)) ### Bug Fixes * `--delete-all-output` ignores `--dry-run` ([#3265](#3265)) ([23fef82](23fef82)) * 3342 faster touch runs and warning messages for non-existing files ([#3398](#3398)) ([cd9c3c3](cd9c3c3)) * add default value to max-jobs-per-timespan ([#3043](#3043)) ([2959abe](2959abe)) * checkpoints inside modules are overwritten ([#3359](#3359)) ([fba3ac7](fba3ac7)) * Convert Path to IOFile ([#3405](#3405)) ([c58684c](c58684c)) * Do not perform storage object cleanup with --keep-storage-local-copies set ([#3358](#3358)) ([9a6d14b](9a6d14b)) * edgecases of source deployment in case of remote execution ([#3396](#3396)) ([5da13be](5da13be)) * enhance error message formatting for strict DAG-building mode ([#3376](#3376)) ([a1c39ee](a1c39ee)) * fix bug in checkpoint handling that led to exceptions in case checkpoint output was missing upon rerun ([#3423](#3423)) ([8cf4a2f](8cf4a2f)) * force check all required outputs ([#3341](#3341)) ([495a4e7](495a4e7)) * group job formatting ([#3442](#3442)) ([f0b10a3](f0b10a3)) * in remote jobs, upload storage in topological order such that modification dates are preserved (e.g. in case of group jobs) ([#3377](#3377)) ([eace08f](eace08f)) * only skip eval when resource depends on input ([#3374](#3374)) ([4574c92](4574c92)) * Prevent execution of conda in apptainer when not explicitly requested in software deployment method ([#3388](#3388)) ([c43c5c0](c43c5c0)) * print filenames with quotes around them in RuleException ([#3269](#3269)) ([6baeda5](6baeda5)) * Re-evaluation of free resources ([#3399](#3399)) ([6371293](6371293)) * ReadTheDocs layout issue due to src directory change ([#3419](#3419)) ([695b127](695b127)) * robustly escaping quotes in generated bash scripts (v2) ([#3297](#3297)) ([#3389](#3389)) ([58720bd](58720bd)) * Show apptainer image URL in snakemake report ([#3407](#3407)) ([45f0450](45f0450)) * Update ReadTheDocs configuration for documentation build to use Pixi ([#3433](#3433)) ([3f227a6](3f227a6)) ### Documentation * Add pixi setup instructions to general use tutorial ([#3382](#3382)) ([115e81b](115e81b)) * fix contribution section heading levels, fix docs testing setup order ([#3360](#3360)) ([051dc53](051dc53)) * fix link to github.com/snakemake/poetry-snakemake-plugin ([#3436](#3436)) ([ec6d97c](ec6d97c)) * fix quoting ([#3394](#3394)) ([b40f599](b40f599)) * fix rerun-triggers default ([#3403](#3403)) ([4430e23](4430e23)) * fix typo 'safe' -> 'save' ([#3384](#3384)) ([7755861](7755861)) * mention code formatting in the contribution section ([#3431](#3431)) ([e8682b7](e8682b7)) * remove duplicated 'functions'. ([#3356](#3356)) ([7c595db](7c595db)) * update broken links documentation ([#3437](#3437)) ([e3d0d88](e3d0d88)) * Updating contributing guidelines with new pixi dev setup ([#3415](#3415)) ([8e95a12](8e95a12)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: snakemake-bot <snakemake-bot-admin@googlegroups.com>
…t after a successfull workflow run (snakemake#3428) Provide a new command line flag (`--report-after-run`) to generate the report directly after running the workflow. This solves snakemake#3418 ### QC <!-- Make sure that you can tick the boxes below. --> * [x] The PR contains a test case for the changes or the changes are already covered by an existing test case. * [ ] The documentation (`docs/`) is updated to reflect the changes or this is not necessary (e.g. if the change does neither modify the language nor the behavior or functionalities of Snakemake). <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced an additional command-line option to generate self-contained HTML reports after workflow execution. - Enhanced report generation to support dynamic outputs in various formats (e.g., visuals, data files). - **Documentation** - Updated report examples with descriptive captions, tables, and mathematical expressions. - Added new workflow descriptions and references in report files. - **Tests** - Added automated tests to verify the new post-run reporting functionality with customizable styling. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Johanna <johanna_schmitz@posteo.de>
🤖 I have created a release *beep* *boop* --- ## [9.0.0](snakemake/snakemake@v8.30.0...v9.0.0) (2025-03-14) ### ⚠ BREAKING CHANGES * Logging refactor & add LoggerPluginInterface ([snakemake#3107](snakemake#3107)) ### Features * [snakemake#3412](snakemake#3412) - keep shadow folder of failed job if --keep-incomplete flag is set. ([snakemake#3430](snakemake#3430)) ([22978c3](snakemake@22978c3)) * add flag --report-after-run to automatically generate the report after a successfull workflow run ([snakemake#3428](snakemake#3428)) ([b0a7f03](snakemake@b0a7f03)) * add flatten function to IO utils ([snakemake#3424](snakemake#3424)) ([67fa392](snakemake@67fa392)) * add helper functions to parse input files ([snakemake#2918](snakemake#2918)) ([63e45a7](snakemake@63e45a7)) * Add option to print redacted file names ([snakemake#3089](snakemake#3089)) ([ba4d264](snakemake@ba4d264)) * add support for validation of polars dataframe and lazyframe ([snakemake#3262](snakemake#3262)) ([c7473a6](snakemake@c7473a6)) * added support for rendering dag with mermaid js ([snakemake#3409](snakemake#3409)) ([7bf8381](snakemake@7bf8381)) * adding --replace-workflow-config to fully replace workflow configs (from config: directive) with --configfile, instead of merging them ([snakemake#3381](snakemake#3381)) ([47504a0](snakemake@47504a0)) * Dynamic module name ([snakemake#3401](snakemake#3401)) ([024dc32](snakemake@024dc32)) * Enable saving and reloading IOCache object ([snakemake#3386](snakemake#3386)) ([c935953](snakemake@c935953)) * files added in rule params with workflow.source_path will be available in used containers ([snakemake#3385](snakemake#3385)) ([a6e45bf](snakemake@a6e45bf)) * Fix keep_local in storage directive and more freedom over remote retrieval behaviour ([snakemake#3410](snakemake#3410)) ([67b4739](snakemake@67b4739)) * inherit parameters of use rule and extend/replace individual items them when using 'with' directive ([snakemake#3365](snakemake#3365)) ([93e4b92](snakemake@93e4b92)) * Logging refactor & add LoggerPluginInterface ([snakemake#3107](snakemake#3107)) ([86f1d6e](snakemake@86f1d6e)) * Maximal file size for checksums ([snakemake#3368](snakemake#3368)) ([b039f8a](snakemake@b039f8a)) * Modernize package configuration using Pixi ([snakemake#3369](snakemake#3369)) ([77992d8](snakemake@77992d8)) * multiext support for named input/output ([snakemake#3372](snakemake#3372)) ([05e1378](snakemake@05e1378)) * optionally auto-group jobs via temp files in case of remote execution ([snakemake#3378](snakemake#3378)) ([cc9bba2](snakemake@cc9bba2)) ### Bug Fixes * `--delete-all-output` ignores `--dry-run` ([snakemake#3265](snakemake#3265)) ([23fef82](snakemake@23fef82)) * 3342 faster touch runs and warning messages for non-existing files ([snakemake#3398](snakemake#3398)) ([cd9c3c3](snakemake@cd9c3c3)) * add default value to max-jobs-per-timespan ([snakemake#3043](snakemake#3043)) ([2959abe](snakemake@2959abe)) * checkpoints inside modules are overwritten ([snakemake#3359](snakemake#3359)) ([fba3ac7](snakemake@fba3ac7)) * Convert Path to IOFile ([snakemake#3405](snakemake#3405)) ([c58684c](snakemake@c58684c)) * Do not perform storage object cleanup with --keep-storage-local-copies set ([snakemake#3358](snakemake#3358)) ([9a6d14b](snakemake@9a6d14b)) * edgecases of source deployment in case of remote execution ([snakemake#3396](snakemake#3396)) ([5da13be](snakemake@5da13be)) * enhance error message formatting for strict DAG-building mode ([snakemake#3376](snakemake#3376)) ([a1c39ee](snakemake@a1c39ee)) * fix bug in checkpoint handling that led to exceptions in case checkpoint output was missing upon rerun ([snakemake#3423](snakemake#3423)) ([8cf4a2f](snakemake@8cf4a2f)) * force check all required outputs ([snakemake#3341](snakemake#3341)) ([495a4e7](snakemake@495a4e7)) * group job formatting ([snakemake#3442](snakemake#3442)) ([f0b10a3](snakemake@f0b10a3)) * in remote jobs, upload storage in topological order such that modification dates are preserved (e.g. in case of group jobs) ([snakemake#3377](snakemake#3377)) ([eace08f](snakemake@eace08f)) * only skip eval when resource depends on input ([snakemake#3374](snakemake#3374)) ([4574c92](snakemake@4574c92)) * Prevent execution of conda in apptainer when not explicitly requested in software deployment method ([snakemake#3388](snakemake#3388)) ([c43c5c0](snakemake@c43c5c0)) * print filenames with quotes around them in RuleException ([snakemake#3269](snakemake#3269)) ([6baeda5](snakemake@6baeda5)) * Re-evaluation of free resources ([snakemake#3399](snakemake#3399)) ([6371293](snakemake@6371293)) * ReadTheDocs layout issue due to src directory change ([snakemake#3419](snakemake#3419)) ([695b127](snakemake@695b127)) * robustly escaping quotes in generated bash scripts (v2) ([snakemake#3297](snakemake#3297)) ([snakemake#3389](snakemake#3389)) ([58720bd](snakemake@58720bd)) * Show apptainer image URL in snakemake report ([snakemake#3407](snakemake#3407)) ([45f0450](snakemake@45f0450)) * Update ReadTheDocs configuration for documentation build to use Pixi ([snakemake#3433](snakemake#3433)) ([3f227a6](snakemake@3f227a6)) ### Documentation * Add pixi setup instructions to general use tutorial ([snakemake#3382](snakemake#3382)) ([115e81b](snakemake@115e81b)) * fix contribution section heading levels, fix docs testing setup order ([snakemake#3360](snakemake#3360)) ([051dc53](snakemake@051dc53)) * fix link to github.com/snakemake/poetry-snakemake-plugin ([snakemake#3436](snakemake#3436)) ([ec6d97c](snakemake@ec6d97c)) * fix quoting ([snakemake#3394](snakemake#3394)) ([b40f599](snakemake@b40f599)) * fix rerun-triggers default ([snakemake#3403](snakemake#3403)) ([4430e23](snakemake@4430e23)) * fix typo 'safe' -> 'save' ([snakemake#3384](snakemake#3384)) ([7755861](snakemake@7755861)) * mention code formatting in the contribution section ([snakemake#3431](snakemake#3431)) ([e8682b7](snakemake@e8682b7)) * remove duplicated 'functions'. ([snakemake#3356](snakemake#3356)) ([7c595db](snakemake@7c595db)) * update broken links documentation ([snakemake#3437](snakemake#3437)) ([e3d0d88](snakemake@e3d0d88)) * Updating contributing guidelines with new pixi dev setup ([snakemake#3415](snakemake#3415)) ([8e95a12](snakemake@8e95a12)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: snakemake-bot <snakemake-bot-admin@googlegroups.com>
Provide a new command line flag (
--report-after-run) to generate the report directly after running the workflow.This solves #3418
QC
docs/) is updated to reflect the changes or this is not necessary (e.g. if the change does neither modify the language nor the behavior or functionalities of Snakemake).Summary by CodeRabbit
New Features
Documentation
Tests