Skip to content

docs: fix contribution section heading levels, fix docs testing setup order#3360

Merged
johanneskoester merged 4 commits intomainfrom
docs/fix-contribution-section-heading-levels
Mar 11, 2025
Merged

docs: fix contribution section heading levels, fix docs testing setup order#3360
johanneskoester merged 4 commits intomainfrom
docs/fix-contribution-section-heading-levels

Conversation

@dlaehnemann
Copy link
Copy Markdown
Member

@dlaehnemann dlaehnemann commented Mar 10, 2025

QC

  • 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).

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.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 10, 2025

📝 Walkthrough

Walkthrough

This pull request introduces several changes to the documentation and codebase of Snakemake. It updates the contributing.rst document to standardize section headings according to Sphinx conventions, modifies the Conda environment setup by renaming the environment from snakemake to snakemake_docs, and updates its activation command. Additionally, it clarifies the usage of conda environments and apptainer integration in Snakemake workflows, enhances the documentation for report generation, introduces new functions in the rules documentation, and adds new test scripts and environment configurations. No changes were made to exported or public entities.

Changes

File(s) Summary of Changes
docs/.../contributing.rst Updated documentation guidelines: standardized section heading conventions, removed explicit heading examples, added a new paragraph heading, and modified Conda environment commands (renamed from snakemake to snakemake_docs).
docs/snakefiles/deployment.rst Clarified usage of conda environments and apptainer integration; updated to allow conda environments with all directives including run, with specific behavior noted for the run directive.
docs/snakefiles/reporting.rst Enhanced report generation documentation, added subsections for report types, clarified output requirements, and introduced sections for partial reports and custom layouts.
docs/snakefiles/rules.rst Introduced new functions parse_input and extract_checksum with detailed descriptions and examples.
snakemake/cli.py Modified help description for --keep-storage-local-copies to clarify it retains both input and output files.
snakemake/script/__init__.py Added new class XonshScript, updated language recognition for .xsh files, and modified the script mapping dictionary.
snakemake/workflow.py Altered execute method to conditionally call cleanup_storage_objects based on keep_storage_local setting.
tests/test_conda_python_3_7_script/Snakefile Updated script reference in random_python_conda_script rule to specify a Python 3.7 version.
tests/test_conda_run/Snakefile Introduced new rule random_python_conda_script with output file and conda environment.
tests/test_conda_run/expected-results/test.txt Added new content 3.0 to the file.
tests/test_conda_run/test_python_env.yaml Created new YAML file for conda environment setup with specified channels and dependencies.
tests/test_conda_run/test_script_run.py Introduced a new test script that creates a file and writes a computed value using numpy.
tests/test_script_xsh/Snakefile Added new rules for a workflow with conda environment and script execution.
tests/test_script_xsh/envs/xonsh.yaml Created new YAML file for xonsh environment setup with specified channels and dependencies.
tests/test_script_xsh/scripts/test.xsh Added a line to output "Hello, world!" to the specified output file.
tests/tests_using_conda.py Added two new test functions for testing conda deployment.
.github/workflows/codespell.yml Added conditional statement to run the codespell job only if the pull request is not merged or targeting the main branch.
.github/workflows/docs.yml Introduced conditions to skip docs and apidocs jobs if the pull request is merged or targeting the main branch.
.github/workflows/main.yml Added conditions to skip several jobs if the pull request is merged or targeting the main branch; introduced a new job testing-done to signal completion of tests.
setup.py Added new entry to package_data to include templates from unit_tests.
snakemake/ioutils/__init__.py Added parse_input and extract_checksum functions to the global namespace.
snakemake/ioutils/input.py Created new file with parse_input and extract_checksum functions for input processing.
test-environment.yml Restructured dependencies by adding setuptools, moving cwltool and cwl-utils to the top-level dependencies list.
tests/test_ioutils/Snakefile Modified rules to include checksum verification and updated shell commands.
tests/test_ioutils/expected-results/c/1.txt Updated expected output with a new checksum value.
tests/test_ioutils/expected-results/results/switch~someswitch.column~sample.txt Replaced a line with a new checksum value.
tests/test_ioutils/samples.md5 Created a new file containing hash values and filenames for checksum verification.

Possibly related PRs

Suggested reviewers

  • johanneskoester
✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@sonarqubecloud
Copy link
Copy Markdown

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🔭 Outside diff range comments (1)
snakemake/ioutils/input.py (1)

12-31: ⚠️ Potential issue

Fix issues in the checksum extraction function.

The function has several issues that need to be addressed:

  1. The WorkflowError class is not imported
  2. Lambda function usage instead of a regular function definition
  3. 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 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)

🧹 Nitpick comments (6)
.github/workflows/codespell.yml (1)

16-16: Conditional Execution for Codespell Job

The 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 on main, the job will run.

.github/workflows/main.yml (2)

52-54: Non-Empty Exclude Section in Testing Job

The 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 Formatting

The new testing-done job 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

📥 Commits

Reviewing files that changed from the base of the PR and between b62277d and 19fd383.

⛔ Files ignored due to path filters (3)
  • tests/test_script_xsh/expected-results/test.out is excluded by !**/*.out
  • CHANGELOG.md is excluded by !CHANGELOG.md
  • pyproject.toml is 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/switchsomeswitch.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 the self argument of methods.
Do not suggest type annotation of the cls argument of classmethods.
Do not suggest return type annotation if a function or method does not contain a return statement.

  • setup.py
  • snakemake/ioutils/__init__.py
  • snakemake/ioutils/input.py
  • snakemake/cli.py
  • snakemake/workflow.py
  • tests/tests_using_conda.py
  • snakemake/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 Job

The 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 Job

Similarly, 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 Job

The 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 Job

The 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 Job

The 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 Job

The 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 version

The 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 execution

This 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 comments

This 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 module

Adding imports for parse_input and extract_checksum functions from the input module expands the available functionality in the ioutils package.


25-26: New utility functions registered in global namespace

Registering the parse_input and extract_checksum functions 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_windows and @conda decorators 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_windows decorator, 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_local is set to False. 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_input function 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 --report flag.

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 Directives

The added note clearly explains that while conda environments apply to most directives, the run directive is a special case—only affecting shell function calls executed within the run script. It also reminds users to install the jupyter package for notebook directives. This documentation enhancement improves clarity and prevents potential confusion when using these special directives.

docs/snakefiles/rules.rst (2)

551-571: Good Documentation for the parse_input Function

The new section on parse_input provides 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 the extract_checksum Function

The documentation for extract_checksum is well structured. It explains the function’s signature and its intended behavior, and the example usage is illustrative. Ensure that the implementation of extract_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 .snakemake directory.


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.

@johanneskoester johanneskoester merged commit 051dc53 into main Mar 11, 2025
41 checks passed
@johanneskoester johanneskoester deleted the docs/fix-contribution-section-heading-levels branch March 11, 2025 15:20
@github-project-automation github-project-automation bot moved this from In review to Done in Snakemake Hackathon March 2025 Mar 11, 2025
johanneskoester pushed a commit that referenced this pull request Mar 14, 2025
🤖 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' -&gt; '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>
@coderabbitai coderabbitai bot mentioned this pull request Aug 21, 2025
2 tasks
kjohnsen pushed a commit to kjohnsen/snakemake that referenced this pull request Dec 15, 2025
… 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 -->
kjohnsen pushed a commit to kjohnsen/snakemake that referenced this pull request Dec 15, 2025
🤖 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' -&gt; '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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Development

Successfully merging this pull request may close these issues.

2 participants