Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: snakemake/snakemake
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v9.13.7
Choose a base ref
...
head repository: snakemake/snakemake
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v9.14.0
Choose a head ref
  • 15 commits
  • 49 files changed
  • 14 contributors

Commits on Nov 8, 2025

  1. feat: Support Hy in script directive (#3824)

    <!--Add a description of your PR here-->
    Add support for [Hy](https://hylang.org/) in the script directive. This
    will allow the use of a Lisp-like syntax for writing scripts, e.g.:
    
    ```hy
    (require hyrule [-> ->>])
    
    (defn is-odd? [n] (!= (% n 2) 0))
    
    (setv result
          (->> (get snakemake.input 0)
               open
               .readlines
               (map int)
               (filter is-odd?)
               sum))
    
    (print result
           :file
           (-> (get snakemake.output 0)
               (open "w")))
    ```
    
    ### 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.
    * [X] 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**
      * Added runtime support for Hy scripts.
    
    * **Documentation**
    * Added Hy and Xonsh language sections with examples and
    cross-references.
    * Fixed Bash example formatting and removed a duplicated Xonsh example.
    
    * **Tests**
    * Added end-to-end test exercising Hy script execution with a Snakefile,
    Hy script, and sample input/output.
    <!-- end of auto-generated comment: release notes by coderabbit.ai -->
    
    ---------
    
    Co-authored-by: Johannes Köster <[email protected]>
    Co-authored-by: Johannes Köster <[email protected]>
    3 people authored Nov 8, 2025
    Configuration menu
    Copy the full SHA
    2329c9e View commit details
    Browse the repository at this point in the history

Commits on Nov 18, 2025

  1. fix: Minor fixes/additions to logging module. (#3802)

    - Set the `initialized` attribute in `LoggerManager.setup()`.
    - Remove incorrect `if` statement in `DefaultFilter.filter()` that never
    matched.
    - Remove unused `DefaultFormatter` methods `format_info()` and
    `format_d3dag()`.
    - Replace the `get_event_level()` function with `get_event()` as the
    other return value wasn't being used.
    - Correct `LoggerManager.settings` annotation from
    `OutputSettingsLoggerInterface` to `OutputSettings` (uses attributes not
    defined in the former).
    - Add parameter annotations to some `DefaultFormatter` methods.
    - Document attributes for for `OutputSettings`, `LoggerManager`, and
    `DefaultFilter` classes.
    
    ### 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.
    * [x] 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
    
    * **Refactor**
    * Improved internal logging/event extraction and formatting flow, with
    stricter type annotations for more predictable behavior and
    maintainability.
    
    * **Chores**
    * Expanded documentation for output settings and simplified a default
    setting representation for clarity.
    <!-- end of auto-generated comment: release notes by coderabbit.ai -->
    
    ---------
    
    Co-authored-by: Cade Mirchandani <[email protected]>
    jlumpe and cademirch authored Nov 18, 2025
    Configuration menu
    Copy the full SHA
    3b3986d View commit details
    Browse the repository at this point in the history

Commits on Nov 19, 2025

  1. fix: fix backup for output marked by update (#3839)

    When an output file is marked to be updated snakemake fails if that file
    does not exist. That might happen when a file needs to be created by the
    rule before being updated in later workflow executions. This is fixed by
    validating if the output exists before creating a backup. In addition
    the behavior of restoring a backup after an error has been thrown needs
    to be adjusted. Previously an error was raised when no backup file
    exists for a file marked with `update`. As the newly introduced scenario
    might not have created a backup a waring is thrown instead of an error.
    
    ### 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
    
    ## Release Notes
    
    * **Bug Fixes**
    * Enhanced backup restoration to issue warnings instead of errors when
    backups are unavailable
      * Improved backup efficiency by only backing up files that exist
    * Refined directory backup handling to better preserve backup data after
    restoration
    
    <!-- end of auto-generated comment: release notes by coderabbit.ai -->
    FelixMoelder authored Nov 19, 2025
    Configuration menu
    Copy the full SHA
    09c64b7 View commit details
    Browse the repository at this point in the history

Commits on Nov 27, 2025

  1. build(deps): bump actions/checkout from 4 to 6 (#3846)

    Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to
    6.
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/actions/checkout/releases">actions/checkout's
    releases</a>.</em></p>
    <blockquote>
    <h2>v6.0.0</h2>
    <h2>What's Changed</h2>
    <ul>
    <li>Update README to include Node.js 24 support details and requirements
    by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
    in <a
    href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
    <li>Persist creds to a separate file by <a
    href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
    <li>v6-beta by <a
    href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2298">actions/checkout#2298</a></li>
    <li>update readme/changelog for v6 by <a
    href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2311">actions/checkout#2311</a></li>
    </ul>
    <p><strong>Full Changelog</strong>: <a
    href="https://github.com/actions/checkout/compare/v5.0.0...v6.0.0">https://github.com/actions/checkout/compare/v5.0.0...v6.0.0</a></p>
    <h2>v6-beta</h2>
    <h2>What's Changed</h2>
    <p>Updated persist-credentials to store the credentials under
    <code>$RUNNER_TEMP</code> instead of directly in the local git
    config.</p>
    <p>This requires a minimum Actions Runner version of <a
    href="https://github.com/actions/runner/releases/tag/v2.329.0">v2.329.0</a>
    to access the persisted credentials for <a
    href="https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action">Docker
    container action</a> scenarios.</p>
    <h2>v5.0.1</h2>
    <h2>What's Changed</h2>
    <ul>
    <li>Port v6 cleanup to v5 by <a
    href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
    </ul>
    <p><strong>Full Changelog</strong>: <a
    href="https://github.com/actions/checkout/compare/v5...v5.0.1">https://github.com/actions/checkout/compare/v5...v5.0.1</a></p>
    <h2>v5.0.0</h2>
    <h2>What's Changed</h2>
    <ul>
    <li>Update actions checkout to use node 24 by <a
    href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
    <li>Prepare v5.0.0 release by <a
    href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2238">actions/checkout#2238</a></li>
    </ul>
    <h2>⚠️ Minimum Compatible Runner Version</h2>
    <p><strong>v2.327.1</strong><br />
    <a
    href="https://github.com/actions/runner/releases/tag/v2.327.1">Release
    Notes</a></p>
    <p>Make sure your runner is updated to this version or newer to use this
    release.</p>
    <p><strong>Full Changelog</strong>: <a
    href="https://github.com/actions/checkout/compare/v4...v5.0.0">https://github.com/actions/checkout/compare/v4...v5.0.0</a></p>
    <h2>v4.3.1</h2>
    <h2>What's Changed</h2>
    <ul>
    <li>Port v6 cleanup to v4 by <a
    href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li>
    </ul>
    <p><strong>Full Changelog</strong>: <a
    href="https://github.com/actions/checkout/compare/v4...v4.3.1">https://github.com/actions/checkout/compare/v4...v4.3.1</a></p>
    <h2>v4.3.0</h2>
    <h2>What's Changed</h2>
    <ul>
    <li>docs: update README.md by <a
    href="https://github.com/motss"><code>@​motss</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
    <li>Add internal repos for checking out multiple repositories by <a
    href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
    <li>Documentation update - add recommended permissions to Readme by <a
    href="https://github.com/benwells"><code>@​benwells</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
    </ul>
    <!-- raw HTML omitted -->
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a
    href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's
    changelog</a>.</em></p>
    <blockquote>
    <h1>Changelog</h1>
    <h2>V6.0.0</h2>
    <ul>
    <li>Persist creds to a separate file by <a
    href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
    <li>Update README to include Node.js 24 support details and requirements
    by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
    in <a
    href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
    </ul>
    <h2>V5.0.1</h2>
    <ul>
    <li>Port v6 cleanup to v5 by <a
    href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
    </ul>
    <h2>V5.0.0</h2>
    <ul>
    <li>Update actions checkout to use node 24 by <a
    href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
    </ul>
    <h2>V4.3.1</h2>
    <ul>
    <li>Port v6 cleanup to v4 by <a
    href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li>
    </ul>
    <h2>V4.3.0</h2>
    <ul>
    <li>docs: update README.md by <a
    href="https://github.com/motss"><code>@​motss</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
    <li>Add internal repos for checking out multiple repositories by <a
    href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
    <li>Documentation update - add recommended permissions to Readme by <a
    href="https://github.com/benwells"><code>@​benwells</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
    <li>Adjust positioning of user email note and permissions heading by <a
    href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
    <li>Update README.md by <a
    href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
    <li>Update CODEOWNERS for actions by <a
    href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
    in <a
    href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
    <li>Update package dependencies by <a
    href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
    </ul>
    <h2>v4.2.2</h2>
    <ul>
    <li><code>url-helper.ts</code> now leverages well-known environment
    variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
    in <a
    href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
    <li>Expand unit test coverage for <code>isGhes</code> by <a
    href="https://github.com/jww3"><code>@​jww3</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
    </ul>
    <h2>v4.2.1</h2>
    <ul>
    <li>Check out other refs/* by commit if provided, fall back to ref by <a
    href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
    </ul>
    <h2>v4.2.0</h2>
    <ul>
    <li>Add Ref and Commit outputs by <a
    href="https://github.com/lucacome"><code>@​lucacome</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li>
    <li>Dependency updates by <a
    href="https://github.com/dependabot"><code>@​dependabot</code></a>- <a
    href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>,
    <a
    href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li>
    </ul>
    <h2>v4.1.7</h2>
    <ul>
    <li>Bump the minor-npm-dependencies group across 1 directory with 4
    updates by <a
    href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li>
    <li>Bump actions/checkout from 3 to 4 by <a
    href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li>
    <li>Check out other refs/* by commit by <a
    href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li>
    <li>Pin actions/checkout's own workflows to a known, good, stable
    version. by <a href="https://github.com/jww3"><code>@​jww3</code></a> in
    <a
    href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li>
    </ul>
    <h2>v4.1.6</h2>
    <ul>
    <li>Check platform to set archive extension appropriately by <a
    href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
    <a
    href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li>
    </ul>
    <h2>v4.1.5</h2>
    <ul>
    <li>Update NPM dependencies by <a
    href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
    <a
    href="https://redirect.github.com/actions/checkout/pull/1703">actions/checkout#1703</a></li>
    <li>Bump github/codeql-action from 2 to 3 by <a
    href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/1694">actions/checkout#1694</a></li>
    <li>Bump actions/setup-node from 1 to 4 by <a
    href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/1696">actions/checkout#1696</a></li>
    <li>Bump actions/upload-artifact from 2 to 4 by <a
    href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
    href="https://redirect.github.com/actions/checkout/pull/1695">actions/checkout#1695</a></li>
    </ul>
    <!-- raw HTML omitted -->
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/actions/checkout/commit/1af3b93b6815bc44a9784bd300feb67ff0d1eeb3"><code>1af3b93</code></a>
    update readme/changelog for v6 (<a
    href="https://redirect.github.com/actions/checkout/issues/2311">#2311</a>)</li>
    <li><a
    href="https://github.com/actions/checkout/commit/71cf2267d89c5cb81562390fa70a37fa40b1305e"><code>71cf226</code></a>
    v6-beta (<a
    href="https://redirect.github.com/actions/checkout/issues/2298">#2298</a>)</li>
    <li><a
    href="https://github.com/actions/checkout/commit/069c6959146423d11cd0184e6accf28f9d45f06e"><code>069c695</code></a>
    Persist creds to a separate file (<a
    href="https://redirect.github.com/actions/checkout/issues/2286">#2286</a>)</li>
    <li><a
    href="https://github.com/actions/checkout/commit/ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493"><code>ff7abcd</code></a>
    Update README to include Node.js 24 support details and requirements (<a
    href="https://redirect.github.com/actions/checkout/issues/2248">#2248</a>)</li>
    <li><a
    href="https://github.com/actions/checkout/commit/08c6903cd8c0fde910a37f88322edcfb5dd907a8"><code>08c6903</code></a>
    Prepare v5.0.0 release (<a
    href="https://redirect.github.com/actions/checkout/issues/2238">#2238</a>)</li>
    <li><a
    href="https://github.com/actions/checkout/commit/9f265659d3bb64ab1440b03b12f4d47a24320917"><code>9f26565</code></a>
    Update actions checkout to use node 24 (<a
    href="https://redirect.github.com/actions/checkout/issues/2226">#2226</a>)</li>
    <li>See full diff in <a
    href="https://github.com/actions/checkout/compare/v4...v6">compare
    view</a></li>
    </ul>
    </details>
    <br />
    
    
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=4&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    
    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.
    
    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)
    
    ---
    
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot merge` will merge this PR after your CI passes on it
    - `@dependabot squash and merge` will squash and merge this PR after
    your CI passes on it
    - `@dependabot cancel merge` will cancel a previously requested merge
    and block automerging
    - `@dependabot reopen` will reopen this PR if it is closed
    - `@dependabot close` will close this PR and stop Dependabot recreating
    it. You can achieve the same result by closing it manually
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)
    
    
    </details>
    
    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Nov 27, 2025
    Configuration menu
    Copy the full SHA
    dc3e961 View commit details
    Browse the repository at this point in the history
  2. fix: Addressed race condition in workdir_handler.py (#3844)

    Race condition existed in workdir_handler.py when for some reason (such
    as testing suites that might run in parallel) snakemake is run in
    parallel, and change_to is called, an exception is called, though
    control-flow can continue as normal without any issues.
    
    Here is a more thorough description of how the race condition can occur
    
    For reference, take a look at mkdir from pathlib
    
    ```python
        def mkdir(self, mode=0o777, parents=False, exist_ok=False):
            """
            Create a new directory at this given path.
            """
            try:
                os.mkdir(self, mode)
            except FileNotFoundError:
                if not parents or self.parent == self:
                    raise
                self.parent.mkdir(parents=True, exist_ok=True)
                self.mkdir(mode, parents=False, exist_ok=exist_ok)
            except OSError:
                # Cannot rely on checking for EEXIST, since the operating system
                # could give priority to other errors like EACCES or EROFS
                if not exist_ok or not self.is_dir():
                    raise
    ```
    
    Take two threads that are run on snakemake, and both try to cd into
    "/fake/address"
    
    Thread 1 and 2:
    checks if "/fake/address" (returns False)
    calls self.workdir.mkdir(parents=True) (with exists_ok defaulting to
    false)
    inside the try block: tries to mkdir "/fake/address" which fails with
    FileNotFoundError because "/fake" does not exist
    catches exception
    
    Thread 1:
    calls `self.parent.mkdir(parents=True, exist_ok=True)`
    successfully creates "/fake"
    
    Thread 2:
    calls  `self.parent.mkdir(parents=True, exist_ok=True)`
    "/fake" already exists, but that is not a problem
    calls `self.mkdir(mode, parents=False, exist_ok=exist_ok)` to create
    "/fake/address"
    succeeds
    
    Thread 1:
    calls `self.mkdir(mode, parents=False, exist_ok=exist_ok)` to create
    "/fake/address"
    fails because "/fake/address" exists
    
    Whereby there is no problem here that "/fake/address" exists. 
    
    Not sure if I should write a test for this, I personally wouldn't even
    know how to begin testing this issue, but it seems to have already been
    solved by pathlib, so just adding this small param should fix this niche
    issue.
    
    This PR does not change intended behavior.
    
    
    ### 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.
    * [x] 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
    
    # Release Notes
    
    * **Bug Fixes**
    * Enhanced working directory handling to gracefully manage scenarios
    where directories already exist, improving reliability during concurrent
    operations and preventing unnecessary errors.
    
    <sub>✏️ Tip: You can customize this high-level summary in your review
    settings.</sub>
    
    <!-- end of auto-generated comment: release notes by coderabbit.ai -->
    matthewakram authored Nov 27, 2025
    Configuration menu
    Copy the full SHA
    8dbfcfb View commit details
    Browse the repository at this point in the history
  3. fix: properly format input/output files in case of missing rule to pr…

    …oduce them (#3849)
    
    <!--Add a description of your PR here-->
    
    ### 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.
    * [x] 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
    
    * **Bug Fixes**
    * Improved formatting of file paths in missing-rule error messages so
    file locations are displayed more clearly and consistently.
    * This only affects the error message presentation; no functional
    behavior changes to rule handling.
    
    <sub>✏️ Tip: You can customize this high-level summary in your review
    settings.</sub>
    <!-- end of auto-generated comment: release notes by coderabbit.ai -->
    johanneskoester authored Nov 27, 2025
    Configuration menu
    Copy the full SHA
    69d5d24 View commit details
    Browse the repository at this point in the history
  4. fix: cleanup update-marked output files of failed jobs if there was n…

    …o backup to restore them (#3843)
    
    <!--Add a description of your PR here-->
    
    ### 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.
    * [x] 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
    
    * **Bug Fixes**
    * Cleanup now preserves outputs that were restored or explicitly marked
    to be kept after errors.
    * Restore-after-update now reports success/failure so restored outputs
    are correctly retained during cleanup.
    * Group-level cleanup simplified to rely on per-job cleanup to avoid
    accidental removal of recovered files.
    
    * **Tests**
    * Added a test validating cleanup behavior after a failed update to
    ensure updated outputs are removed or preserved as intended.
    
    <sub>✏️ Tip: You can customize this high-level summary in your review
    settings.</sub>
    <!-- end of auto-generated comment: release notes by coderabbit.ai -->
    
    ---------
    
    Co-authored-by: Felix Mölder <[email protected]>
    johanneskoester and FelixMoelder authored Nov 27, 2025
    Configuration menu
    Copy the full SHA
    41f1ce8 View commit details
    Browse the repository at this point in the history
  5. fix: expand env vars on resources (#3823)

    <!--Add a description of your PR here-->
    Envvars on resources (e.g. `tmpdir`) are not expanded correctly (e.g.
    runtime). This PR fixes that, as well as expansion of envvars on
    profiles. For that reason, changes from PR #3597 were reverted.
    
    Tests were also added for both cases.
    
    ### 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.
    * [x] 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**
    * Configuration values and resource expressions now expand environment
    variables (e.g., $VAR) and user home (~), allowing dynamic paths and
    settings.
    * **Tests**
    * Test workflows updated to validate environment-variable and
    home-directory expansion in configs and resource handling.
    <!-- end of auto-generated comment: release notes by coderabbit.ai -->
    fgvieira authored Nov 27, 2025
    Configuration menu
    Copy the full SHA
    fcfa1bc View commit details
    Browse the repository at this point in the history
  6. fix: correct Windows callable path handling (#3832)

    Fixes #3830
    
    Bugfix:
    - fix path handling on Windows when using callables for input/output
    files in rules by converting Path objects to POSIX-style strings
    
    ### 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.
    * [x] 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
    
    * **Bug Fixes**
    * Improved cross-platform path handling so input file paths are
    consistently formatted when workflows use callables.
    * **Tests**
    * Added an automated workflow test and accompanying test input to
    validate the callable-based input handling.
    <!-- end of auto-generated comment: release notes by coderabbit.ai -->
    Eric-Nitschke authored Nov 27, 2025
    Configuration menu
    Copy the full SHA
    5caad70 View commit details
    Browse the repository at this point in the history
  7. fix: mount local storage prefix into containers (#3840)

    ### Description
    
    <!--Add a description of your PR here-->
    
    ### 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.
    * [x] 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**
    * Workflows expose runtime paths that are propagated to scripts,
    notebooks, wrappers, CWL jobs, and executors.
    * A configurable local storage prefix is accepted and forwarded across
    relevant components.
    * Container executions now accept and apply runtime/local storage binds
    so runtime paths are available inside containers.
    
    <sub>✏️ Tip: You can customize this high-level summary in your review
    settings.</sub>
    <!-- end of auto-generated comment: release notes by coderabbit.ai -->
    johanneskoester authored Nov 27, 2025
    Configuration menu
    Copy the full SHA
    f1e8b62 View commit details
    Browse the repository at this point in the history
  8. build(deps): bump prefix-dev/setup-pixi from 0.9.1 to 0.9.3 (#3825)

    Bumps [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi)
    from 0.9.1 to 0.9.3.
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/prefix-dev/setup-pixi/releases">prefix-dev/setup-pixi's
    releases</a>.</em></p>
    <blockquote>
    <h2>v0.9.3</h2>
    <!-- raw HTML omitted -->
    <h2>What's Changed</h2>
    <h3>✨ New features</h3>
    <ul>
    <li>feat: Switch order of pixi info and pixi install by <a
    href="https://github.com/pavelzw"><code>@​pavelzw</code></a> in <a
    href="https://redirect.github.com/prefix-dev/setup-pixi/pull/234">prefix-dev/setup-pixi#234</a></li>
    </ul>
    <h3>📝 Documentation</h3>
    <ul>
    <li>Update documentation links to new pixi URLs by <a
    href="https://github.com/ruben-arts"><code>@​ruben-arts</code></a> in <a
    href="https://redirect.github.com/prefix-dev/setup-pixi/pull/230">prefix-dev/setup-pixi#230</a></li>
    </ul>
    <h3>⬆️ Dependency updates</h3>
    <ul>
    <li>chore(deps): bump the gh-actions group with 3 updates by <a
    href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
    in <a
    href="https://redirect.github.com/prefix-dev/setup-pixi/pull/228">prefix-dev/setup-pixi#228</a></li>
    <li>chore(deps): bump the gh-actions group with 4 updates by <a
    href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
    in <a
    href="https://redirect.github.com/prefix-dev/setup-pixi/pull/232">prefix-dev/setup-pixi#232</a></li>
    <li>chore(deps): bump the nodejs group across 1 directory with 9 updates
    by <a
    href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
    in <a
    href="https://redirect.github.com/prefix-dev/setup-pixi/pull/233">prefix-dev/setup-pixi#233</a></li>
    </ul>
    <p><strong>Full Changelog</strong>: <a
    href="https://github.com/prefix-dev/setup-pixi/compare/v0.9.2...v0.9.3">https://github.com/prefix-dev/setup-pixi/compare/v0.9.2...v0.9.3</a></p>
    <h2>v0.9.2</h2>
    <!-- raw HTML omitted -->
    <h2>What's Changed</h2>
    <h3>✨ New features</h3>
    <ul>
    <li>feat: Allow caching global environment(s) by <a
    href="https://github.com/olivier-lacroix"><code>@​olivier-lacroix</code></a>
    in <a
    href="https://redirect.github.com/prefix-dev/setup-pixi/pull/226">prefix-dev/setup-pixi#226</a></li>
    </ul>
    <p><strong>Full Changelog</strong>: <a
    href="https://github.com/prefix-dev/setup-pixi/compare/v0.9.1...v0.9.2">https://github.com/prefix-dev/setup-pixi/compare/v0.9.1...v0.9.2</a></p>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/prefix-dev/setup-pixi/commit/82d477f15f3a381dbcc8adc1206ce643fe110fb7"><code>82d477f</code></a>
    feat: Switch order of pixi info and pixi install (<a
    href="https://redirect.github.com/prefix-dev/setup-pixi/issues/234">#234</a>)</li>
    <li><a
    href="https://github.com/prefix-dev/setup-pixi/commit/a97638076335f9354933c7f56606c58b98165b63"><code>a976380</code></a>
    chore(deps): bump the nodejs group across 1 directory with 9 updates (<a
    href="https://redirect.github.com/prefix-dev/setup-pixi/issues/233">#233</a>)</li>
    <li><a
    href="https://github.com/prefix-dev/setup-pixi/commit/de110d6265c5ff3d76eaf3cfaba9b7e3029130b8"><code>de110d6</code></a>
    chore(deps): bump the gh-actions group with 4 updates (<a
    href="https://redirect.github.com/prefix-dev/setup-pixi/issues/232">#232</a>)</li>
    <li><a
    href="https://github.com/prefix-dev/setup-pixi/commit/59d669bca01299140a23e5e8a9f713ad36f1f069"><code>59d669b</code></a>
    Update documentation links to new pixi URLs (<a
    href="https://redirect.github.com/prefix-dev/setup-pixi/issues/230">#230</a>)</li>
    <li><a
    href="https://github.com/prefix-dev/setup-pixi/commit/046c0f75f27d4aa92d448dabd2e0a2f6ba152720"><code>046c0f7</code></a>
    chore(deps): bump the gh-actions group with 3 updates (<a
    href="https://redirect.github.com/prefix-dev/setup-pixi/issues/228">#228</a>)</li>
    <li><a
    href="https://github.com/prefix-dev/setup-pixi/commit/34ef3cc29847a6ef30b6da1585017362caf9163e"><code>34ef3cc</code></a>
    docs: Reference latest Pixi version in README (<a
    href="https://redirect.github.com/prefix-dev/setup-pixi/issues/227">#227</a>)</li>
    <li><a
    href="https://github.com/prefix-dev/setup-pixi/commit/28eb668aafebd9dede9d97c4ba1cd9989a4d0004"><code>28eb668</code></a>
    feat: Allow caching global environment(s) (<a
    href="https://redirect.github.com/prefix-dev/setup-pixi/issues/226">#226</a>)</li>
    <li>See full diff in <a
    href="https://github.com/prefix-dev/setup-pixi/compare/v0.9.1...v0.9.3">compare
    view</a></li>
    </ul>
    </details>
    <br />
    
    
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prefix-dev/setup-pixi&package-manager=github_actions&previous-version=0.9.1&new-version=0.9.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    
    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.
    
    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)
    
    ---
    
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot merge` will merge this PR after your CI passes on it
    - `@dependabot squash and merge` will squash and merge this PR after
    your CI passes on it
    - `@dependabot cancel merge` will cancel a previously requested merge
    and block automerging
    - `@dependabot reopen` will reopen this PR if it is closed
    - `@dependabot close` will close this PR and stop Dependabot recreating
    it. You can achieve the same result by closing it manually
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)
    
    
    </details>
    
    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Nov 27, 2025
    Configuration menu
    Copy the full SHA
    e58d8c6 View commit details
    Browse the repository at this point in the history
  9. fix: Add support for pathlib in notebook field (#3811)

    PR #3636 added support for Pathlike `notebook` specifications but
    @staadecker (the original author of that PR) did not provide a matching
    test.
        
    This PR superseeds @staadecker's original PR #3636 by merging in current
    `main` and adding a commit that adds such a test based on @staadecker's
    example.
        
    I have verified that this test
        
    * fails (with the expected `TypeError`:
      
      ```
      TypeError in file "</path/to/testdir>/Snakefile", line 7:
      expected str, got PosixPath
      ```
      
    ) at commit 8bd1df9 (v9.6.0; parent of
    @staadecker's original PR #3636),
    * passes after applying the changes of commit
    4445bb8 (@staadecker's original PR
    #3636),
    * still fails (with the same expected `TypeError`, see above) at commit
    395a5e6 (current `main`), and
    * still passes at commit 756656d
    merging the current `main` (see above) on top of @staadecker's original
    PR #3636).
    
    ---
    closes #3636
    
    <!-- This is an auto-generated comment: release notes by coderabbit.ai
    -->
    ## Summary by CodeRabbit
    
    * **Bug Fixes**
    * Ensure pathlike notebook resources are converted to strings before
    processing to avoid inconsistent handling.
    
    * **Tests**
    * Added test coverage verifying Jupyter notebook pathlike object support
    with Conda deployment.
    <!-- end of auto-generated comment: release notes by coderabbit.ai -->
    
    ---------
    
    Co-authored-by: Martin <[email protected]>
    mschilli87 and staadecker authored Nov 27, 2025
    Configuration menu
    Copy the full SHA
    7b2180a View commit details
    Browse the repository at this point in the history
  10. fix: Unpack AnnotatedString in _apply_wildcards (#3798)

    Unpacked functions (AnnotatedStrings) can be passed to
    `_is_deriving_function`. Ensure these unpacked functions are converted
    to callable functions first.
    
    Fixes #3797
    
    ### QC
    
    
    * [X] The PR contains a test case for the changes or the changes are
    already covered by an existing test case.
    * [X] 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
    
    * **Bug Fixes**
    * Fixed wildcard handling so unpacked annotated callables are evaluated
    correctly when determining derived vs non‑derived inputs, preventing
    incorrect derivation detection.
    * **Tests**
    * Added a test covering wildcard‑annotated parameters that verifies
    error behavior when unpacked annotated params are used.
    <!-- end of auto-generated comment: release notes by coderabbit.ai -->
    TomJohnZ authored Nov 27, 2025
    Configuration menu
    Copy the full SHA
    7886508 View commit details
    Browse the repository at this point in the history
  11. perf: retrieve storage inputs immediately before scheduling jobs inst…

    …ead of before running the entire workflow (#3850)
    
    This saves local disk space. After each job is finished, Snakemake
    already ensures that local storage copies are deleted once not needed
    anymore. Hence, in combination with this PR, the lifetime of local
    copies on disk will be minimized.
    
    ### 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.
    * [x] 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
    
    * **Refactor**
    * Simplified and unified storage-input retrieval flow, changing when
    preflight retrieval runs and clarifying external-input determination.
    
    * **New Features**
    * Asynchronous prefetching of storage inputs for remote jobs when local
    copies are configured.
    
    * **Style**
    * Consistent file I/O formatting and logging output across job
    reporting.
    
    <sub>✏️ Tip: You can customize this high-level summary in your review
    settings.</sub>
    <!-- end of auto-generated comment: release notes by coderabbit.ai -->
    johanneskoester authored Nov 27, 2025
    Configuration menu
    Copy the full SHA
    4ac6cda View commit details
    Browse the repository at this point in the history
  12. chore(main): release 9.14.0 (#3835)

    🤖 I have created a release *beep* *boop*
    ---
    
    
    ##
    [9.14.0](v9.13.7...v9.14.0)
    (2025-11-27)
    
    
    ### Features
    
    * Support Hy in script directive
    ([#3824](#3824))
    ([2329c9e](2329c9e))
    
    
    ### Bug Fixes
    
    * Add support for pathlib in `notebook` field
    ([#3811](#3811))
    ([7b2180a](7b2180a))
    * Addressed race condition in workdir_handler.py
    ([#3844](#3844))
    ([8dbfcfb](8dbfcfb))
    * cleanup update-marked output files of failed jobs if there was no
    backup to restore them
    ([#3843](#3843))
    ([41f1ce8](41f1ce8))
    * correct Windows callable path handling
    ([#3832](#3832))
    ([5caad70](5caad70))
    * expand env vars on resources
    ([#3823](#3823))
    ([fcfa1bc](fcfa1bc))
    * fix backup for output marked by `update`
    ([#3839](#3839))
    ([09c64b7](09c64b7))
    * Minor fixes/additions to logging module.
    ([#3802](#3802))
    ([3b3986d](3b3986d))
    * mount local storage prefix into containers
    ([#3840](#3840))
    ([f1e8b62](f1e8b62))
    * properly format input/output files in case of missing rule to produce
    them ([#3849](#3849))
    ([69d5d24](69d5d24))
    * Unpack AnnotatedString in _apply_wildcards
    ([#3798](#3798))
    ([7886508](7886508))
    
    
    ### Performance Improvements
    
    * retrieve storage inputs immediately before scheduling jobs instead of
    before running the entire workflow
    ([#3850](#3850))
    ([4ac6cda](4ac6cda))
    
    ---
    This PR was generated with [Release
    Please](https://github.com/googleapis/release-please). See
    [documentation](https://github.com/googleapis/release-please#release-please).
    snakemake-bot authored Nov 27, 2025
    Configuration menu
    Copy the full SHA
    12ce6c6 View commit details
    Browse the repository at this point in the history
Loading