docs: fix contribution section heading levels, fix docs testing setup order#3360
Conversation
…age and with references to python developer's guide
📝 WalkthroughWalkthroughThis pull request introduces several changes to the documentation and codebase of Snakemake. It updates the Changes
Possibly related PRs
Suggested reviewers
✨ 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
🔭 Outside diff range comments (1)
snakemake/ioutils/input.py (1)
12-31:⚠️ Potential issueFix issues in the checksum extraction function.
The function has several issues that need to be addressed:
- The
WorkflowErrorclass is not imported- Lambda function usage instead of a regular function definition
- Missing error chaining in the exception handler
Apply the following changes:
+from snakemake.exceptions import WorkflowError + def extract_checksum(infile, **kwargs): try: import pandas as pd - fix_file_name = lambda x: x.removeprefix("./") + def fix_file_name(x): + return x.removeprefix("./") + return ( pd.read_csv( infile, sep=" ", header=None, engine="python", converters={1: fix_file_name}, ) .set_index(1) .loc[fix_file_name(kwargs.get("file"))] .item() ) except ImportError as e: - raise WorkflowError("Pandas is required to extract checksum from file.") + raise WorkflowError("Pandas is required to extract checksum from file.") from e🧰 Tools
🪛 Ruff (0.8.2)
16-16: Do not assign a
lambdaexpression, use adefRewrite
fix_file_nameas adef(E731)
30-30: Within an
exceptclause, raise exceptions withraise ... from errorraise ... from Noneto distinguish them from errors in exception handling(B904)
30-30: Undefined name
WorkflowError(F821)
🧹 Nitpick comments (6)
.github/workflows/codespell.yml (1)
16-16: Conditional Execution for Codespell JobThe added condition
if: github.event.pull_request.merged != true || github.ref != 'refs/heads/main'ensures that the codespell job is skipped when a pull request is merged into the main branch. This logic aligns with the behavior in other workflow files. Please verify that using the OR (
||) operator meets your intended use cases—for example, if a PR is merged but not onmain, the job will run..github/workflows/main.yml (2)
52-54: Non-Empty Exclude Section in Testing JobThe
exclude: []section is now present but empty, which has been flagged by static analysis. If there are no exclusions to apply, it would be cleaner to remove this key entirely. Alternatively, if exclusions are expected in the future, consider adding a clarifying comment. Also, please remove any trailing spaces in these lines.🧰 Tools
🪛 actionlint (1.7.4)
52-52: "exclude" section should not be empty
(syntax-check)
🪛 YAMLlint (1.35.1)
[error] 53-53: trailing spaces
(trailing-spaces)
211-218: New Testing-Done Job and File End FormattingThe new
testing-donejob aggregates the results of the preceding test jobs by echoing "All tests passed." Ensure that this job meets your reporting needs. Additionally, static analysis indicates that the file is missing a trailing newline. Please add a newline at the end of the file to comply with YAML lint standards.🧰 Tools
🪛 YAMLlint (1.35.1)
[error] 218-218: no new line character at the end of file
(new-line-at-end-of-file)
docs/snakefiles/reporting.rst (3)
7-10: Clarify the report introduction text.
The added introduction clearly states that detailed self-contained HTML reports are available from Snakemake 5.1 on. Consider a minor wording tweak—for example, “from Snakemake 5.1 onward” might read slightly more formally. Overall, the text is clear and informative.
148-153: Consistent subsections in the “Linking between items” area.
The documentation now splits linking instructions into “From captions” and “From results.” While the content is detailed and useful, verify that the adornment for these subheadings (e.g. the quote-style underlines) matches the stylistic conventions used elsewhere in the docs for similar-level headings.
304-331: Detailed “Partial reports” and “Custom layout” sections.
The additions under “Partial reports” explain how to limit report contents effectively, while the “Custom layout” section instructs users on applying a custom stylesheet. Both sections add useful depth to the documentation. Consider verifying that the heading levels and underline styles for these sections are consistent with other parts of the document.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (3)
tests/test_script_xsh/expected-results/test.outis excluded by!**/*.outCHANGELOG.mdis excluded by!CHANGELOG.mdpyproject.tomlis excluded by!pyproject.toml
📒 Files selected for processing (30)
docs/snakefiles/deployment.rst(2 hunks)docs/snakefiles/reporting.rst(5 hunks)docs/snakefiles/rules.rst(1 hunks)snakemake/cli.py(1 hunks)snakemake/script/__init__.py(3 hunks)snakemake/workflow.py(1 hunks)tests/test_conda_python_3_7_script/Snakefile(1 hunks)tests/test_conda_python_3_7_script/test_script_python_3_7.py(1 hunks)tests/test_conda_run/Snakefile(1 hunks)tests/test_conda_run/expected-results/test.txt(1 hunks)tests/test_conda_run/test_python_env.yaml(1 hunks)tests/test_conda_run/test_script_run.py(1 hunks)tests/test_script_xsh/Snakefile(1 hunks)tests/test_script_xsh/envs/xonsh.yaml(1 hunks)tests/test_script_xsh/scripts/test.xsh(1 hunks)tests/tests_using_conda.py(1 hunks).github/workflows/codespell.yml(1 hunks).github/workflows/docs.yml(2 hunks).github/workflows/main.yml(6 hunks)docs/snakefiles/rules.rst(2 hunks)setup.py(1 hunks)snakemake/cli.py(1 hunks)snakemake/ioutils/__init__.py(2 hunks)snakemake/ioutils/input.py(1 hunks)snakemake/workflow.py(1 hunks)test-environment.yml(2 hunks)tests/test_ioutils/Snakefile(4 hunks)tests/test_ioutils/expected-results/c/1.txt(1 hunks)tests/test_ioutils/expected-results/results/switch~someswitch.column~sample.txt(1 hunks)tests/test_ioutils/samples.md5(1 hunks)
✅ Files skipped from review due to trivial changes (10)
- tests/test_conda_run/test_script_run.py
- tests/test_conda_run/expected-results/test.txt
- tests/test_ioutils/expected-results/c/1.txt
- tests/test_ioutils/samples.md5
- tests/test_script_xsh/envs/xonsh.yaml
- tests/test_conda_python_3_7_script/test_script_python_3_7.py
- tests/test_script_xsh/scripts/test.xsh
- tests/test_ioutils/expected-results/results/switch
someswitch.columnsample.txt - snakemake/cli.py
- tests/test_conda_run/test_python_env.yaml
🧰 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.
setup.pysnakemake/ioutils/__init__.pysnakemake/ioutils/input.pysnakemake/cli.pysnakemake/workflow.pytests/tests_using_conda.pysnakemake/script/__init__.py
🪛 Ruff (0.8.2)
snakemake/ioutils/input.py
16-16: Do not assign a lambda expression, use a def
Rewrite fix_file_name as a def
(E731)
30-30: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling
(B904)
30-30: Undefined name WorkflowError
(F821)
snakemake/workflow.py
1813-1813: Avoid inequality comparisons to False; use if ruleinfo.container_img: for truth checks
Replace with ruleinfo.container_img
(E712)
🪛 actionlint (1.7.4)
.github/workflows/main.yml
52-52: "exclude" section should not be empty
(syntax-check)
🪛 YAMLlint (1.35.1)
.github/workflows/main.yml
[error] 53-53: trailing spaces
(trailing-spaces)
[error] 218-218: no new line character at the end of file
(new-line-at-end-of-file)
⏰ Context from checks skipped due to timeout of 90000ms (30)
- GitHub Check: testing (10, 3.12, bash)
- GitHub Check: testing (10, 3.11, bash)
- GitHub Check: testing (9, 3.12, bash)
- GitHub Check: testing (9, 3.11, bash)
- GitHub Check: testing (8, 3.12, bash)
- GitHub Check: testing (8, 3.11, bash)
- GitHub Check: testing (7, 3.12, bash)
- GitHub Check: testing (7, 3.11, bash)
- GitHub Check: testing (6, 3.12, bash)
- GitHub Check: testing (6, 3.11, bash)
- GitHub Check: testing (5, 3.12, bash)
- GitHub Check: testing-windows (10)
- GitHub Check: testing (5, 3.11, bash)
- GitHub Check: testing-windows (9)
- GitHub Check: testing (4, 3.12, bash)
- GitHub Check: testing-windows (8)
- GitHub Check: testing (4, 3.11, bash)
- GitHub Check: testing-windows (7)
- GitHub Check: testing (3, 3.12, bash)
- GitHub Check: testing-windows (6)
- GitHub Check: testing (3, 3.11, bash)
- GitHub Check: testing (2, 3.12, bash)
- GitHub Check: testing-windows (5)
- GitHub Check: testing (2, 3.11, bash)
- GitHub Check: testing-windows (4)
- GitHub Check: testing-windows (3)
- GitHub Check: testing (1, 3.12, bash)
- GitHub Check: testing-windows (2)
- GitHub Check: testing (1, 3.11, bash)
- GitHub Check: testing-windows (1)
🔇 Additional comments (38)
.github/workflows/docs.yml (2)
16-16: Conditional Execution for the Docs JobThe condition added here prevents the docs job from running on merged pull requests or when the branch is
main. This aligns with the overall CI strategy and keeps documentation builds focused on feature branches.
41-41: Conditional Execution for the Apidocs JobSimilarly, the apidocs job is now guarded by the same condition. This consistency helps streamline your CI process. Please ensure that this behavior is in line with your release and testing strategy.
.github/workflows/main.yml (4)
16-16: Conditional Execution for the Formatting JobThe condition added to the formatting job:
if: github.event.pull_request.merged != true || github.ref != 'refs/heads/main'ensures that formatting checks are skipped for merged pull requests into the main branch. This helps optimize the CI runtime by avoiding redundant checks.
42-42: Conditional Execution for the Testing JobThe testing job now also includes the conditional check, which is consistent with the modifications across other jobs. This prevents tests from running on merged PRs, saving CI resources.
157-157: Conditional Execution for the Build Container Image JobThe build-container-image job now has a condition that stops its execution for merged PRs or when on the main branch. This change is consistent with the other jobs and contributes to a more efficient CI workflow.
167-167: Conditional Execution for the Testing-Windows JobThe condition added to the testing-windows job correctly prevents its execution under the specified scenarios. This consistency across jobs helps maintain a predictable CI process.
tests/test_conda_python_3_7_script/Snakefile (1)
7-7: Script file name updated to be more explicit about Python versionThe change from (presumably) "test_script.py" to "test_script_python_3_7.py" improves clarity by explicitly indicating that this script is intended for Python 3.7 testing. This aligns well with the PR objectives related to fixing the documentation testing setup.
tests/test_script_xsh/Snakefile (1)
1-13: Well-structured test case for xonsh script executionThis new Snakefile establishes a clear workflow test for xonsh script execution through Snakemake. The structure follows standard Snakemake patterns with an "all" rule that depends on the output of the "test_xonsh" rule. The conda environment specification and script reference are properly defined.
tests/test_conda_run/Snakefile (1)
1-13: Well-documented test rule with clear usage commentsThis rule provides a good test case for executing Python scripts through conda environments in Snakemake. The comments in lines 9-12 are particularly valuable as they explicitly state that this pattern is only for testing and not recommended for actual workflows, directing users to the script directive instead.
snakemake/ioutils/__init__.py (2)
8-8: New utility functions imported from input moduleAdding imports for
parse_inputandextract_checksumfunctions from the input module expands the available functionality in the ioutils package.
25-26: New utility functions registered in global namespaceRegistering the
parse_inputandextract_checksumfunctions in the global namespace makes them directly accessible to users, enhancing the usability of Snakemake for input file parsing and checksum validation operations.setup.py (1)
33-33: Added package data for unit tests templates.Including files from "unit_tests/templates/*" in the package data ensures these files are properly packaged and distributed with the module, allowing tests to access necessary template files.
tests/tests_using_conda.py (2)
309-316: LGTM! Test function for xonsh script execution added.This test function follows the same pattern as other test functions in the file, correctly using the
@skip_on_windowsand@condadecorators since xonsh scripts may not be compatible with Windows environments.
318-321: LGTM! Test function for conda run added.This test function properly tests the conda run functionality with the appropriate deployment method. Unlike the xonsh test, it doesn't have the
@skip_on_windowsdecorator, suggesting that this functionality should work on Windows as well.snakemake/workflow.py (1)
1294-1295: Conditional cleanup of storage objects.The change ensures storage objects are only cleaned up when
keep_storage_localis set toFalse. This provides greater control over storage object lifecycle, allowing users to retain local copies of storage objects when needed.snakemake/ioutils/input.py (1)
1-10: LGTM! New utility function for parsing input files.The
parse_inputfunction provides a clean abstraction for reading and parsing input files, with flexible handling for both raw content and custom parsers.snakemake/cli.py (1)
957-965: Improved help text for the--reportflag.The updated help text provides much clearer guidance on report generation options, explaining the difference between HTML and ZIP file outputs and when to use each format based on dataset size.
test-environment.yml (2)
7-7: Added setuptools as a dependency.Adding setuptools to the conda dependencies is appropriate since it's a common requirement for many Python packages.
61-62: Moved cwltool and cwl-utils from pip to conda dependencies.Relocating these packages from the pip section to the main conda dependencies improves consistency and likely leverages better integration with the conda ecosystem.
tests/test_ioutils/Snakefile (5)
11-13: Added assertion to test extract_checksum function.This is a good test addition to verify the functionality of the checksum extraction.
22-29: Updated rule a to use checksum functionality.Modified the rule to include a checksum file as input and use the extract_checksum function to parse it, improving the rule's functionality.
31-31: Updated shell command to output the checksum.Changed the shell command to output the parsed checksum value, which aligns with the other changes to this rule.
58-58: Added missing comma in input declaration.This is a necessary syntax fix to ensure the input declaration is properly formatted.
85-85: Reformatted shell command for consistency.This formatting change maintains the functionality while improving code style consistency.
snakemake/script/__init__.py (4)
1600-1603: Added XonshScript class to support Xonsh scripts.The new class inherits from PythonScript and implements the execute_script method to run Xonsh scripts, extending Snakemake's script capabilities.
1667-1668: Updated get_language function to recognize .xsh files.This change enables the detection of Xonsh script files by their extension, which is necessary for proper script handling.
1732-1732: Added Xonsh script mapping in the script function.This mapping allows the system to associate the "xonsh" language with the XonshScript class for execution.
1736-1737: Updated error message to include Xonsh scripts.This change ensures users receive accurate information about supported script types, now including Xonsh scripts.
docs/snakefiles/deployment.rst (1)
288-293: Clarify Conda Environment Usage in Special DirectivesThe added note clearly explains that while conda environments apply to most directives, the
rundirective is a special case—only affecting shell function calls executed within the run script. It also reminds users to install thejupyterpackage fornotebookdirectives. This documentation enhancement improves clarity and prevents potential confusion when using these special directives.docs/snakefiles/rules.rst (2)
551-571: Good Documentation for theparse_inputFunctionThe new section on
parse_inputprovides a clear explanation of its purpose, signature, and usage with a practical code example. It effectively demonstrates how one may extract a specific value from an input file for later use in the rule.Consider briefly mentioning what type of extra arguments (
kwargs) the parser might expect or examples of their usage, to further increase clarity for users.
573-593: Clear Explanation of theextract_checksumFunctionThe documentation for
extract_checksumis well structured. It explains the function’s signature and its intended behavior, and the example usage is illustrative. Ensure that the implementation ofextract_checksum(in the codebase) aligns with this description, particularly regarding error handling when the specified file is not found.If not already documented elsewhere, consider adding a note on the expected behavior (or return value) when the target file is missing, to avoid any ambiguity.
docs/snakefiles/reporting.rst (7)
13-14: Good addition of an explicit anchor.
The inclusion of the anchor directive.. _snakefiles-including_results_in_a_report:helps with internal linking and improves navigation in the documentation.
15-17: Well-structured “Including results in a report” section header.
The heading and its underline (using “-----------------------------”) clearly distinguish this new section. Just ensure that its heading level is consistent with the overall document’s style guidelines.
105-106: Clear “Defining file labels” subsection formatting.
The addition of this section—with its heading and underline marker—improves the documentation by explaining how to hide filenames behind labels. The clarity in instructions and formatting is on point.
142-147: Descriptive header for dynamic label configuration.
The new heading “Determining category, subcategory, and labels dynamically via functions” is clear and informative. The underline style is consistent with similar subsections. Ensure that any examples provided later fully illustrate the expected return types (string, number, or dict).
257-264: Effective “Rendering reports” section addition.
The new section explaining report rendering—including the automatic collection of runtime statistics—is clear and well explained. It might be helpful to briefly mention any prerequisites (if needed) for accessing the metadata stored in the.snakemakedirectory.
265-283: Comprehensive “Self-contained HTML file” instructions.
The new subsection on generating a self-contained HTML report provides clear, step-by-step instructions with relevant code blocks. The guidance regarding custom naming and usage is useful. Ensure that the command examples are consistent with the latest CLI options for Snakemake.
286-303: Clear guidance for creating a Self-contained ZIP archive.
The instructions on how to generate a ZIP archive for more complex reporting needs are clear and complete. The example commands and description of the main entry point (report.html) provide valuable context.
🤖 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>
… order (snakemake#3360) ### QC <!-- Make sure that you can tick the boxes below. --> * [ ] 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 - **Documentation** - Revised contribution guidelines to use standardized section heading terminology and structure for improved clarity. - Enhanced documentation on conda environments and apptainer integration within Snakemake workflows. - Expanded guidance on report generation features, including new report types and customization options. - Introduced new functions for parsing input files and extracting checksums in Snakemake rules. - **Chores** - Updated setup instructions by changing the environment name and activation command for a streamlined development process. - Added new YAML configuration files for managing Python environments in tests. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
🤖 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>



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
Documentation
Chores