Skip to content

Commit eb2f709

Browse files
mashehurenovate[bot]nf-core-botclaudeJulianFlesch
authored
dev -> main for 4.1.0 (#4429)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: mashehu <mashehu3@gmail.com> Co-authored-by: nf-core-bot <core@nf-co.re> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: JulianFlesch <julianflesch@googlemail.com> Co-authored-by: Matthieu Muffato <mm49@sanger.ac.uk> Co-authored-by: yuxinNing <ningyuxin1999@126.com> Co-authored-by: yuxinNing <92061677+ningyuxin1999@users.noreply.github.com> Co-authored-by: JosuaCarl-Agents <josua.carl@web.de> Co-authored-by: CodSpeed Bot <no-reply@codspeed.io> Co-authored-by: louis <louislenezet@gmail.com> Co-authored-by: Louis Le Nézet <58640615+LouisLeNezet@users.noreply.github.com> Co-authored-by: Nicolas Vannieuwkerke <101190534+nvnieuwk@users.noreply.github.com> Co-authored-by: Jonathan Manning <jonathan.manning@seqera.io> Co-authored-by: Beatriz Vinhas <beatriz.sa.vinhas@gmail.com> Co-authored-by: Nicolas Vannieuwkerke <nicolas.vannieuwkerke@ugent.be> Co-authored-by: Alexander Peltzer <apeltzer@users.noreply.github.com> Co-authored-by: Adrien Coulier <adrien.coulier@pixelgen.com> Co-authored-by: Phil Ewels <phil.ewels@seqera.io> Co-authored-by: Maxime U Garcia <max.u.garcia@gmail.com> Co-authored-by: simojoe <37026683+simojoe@users.noreply.github.com> Co-authored-by: Joël Simoneau <simoneaujoel@gmail.com> Co-authored-by: Vincent Gao <gaobing1230@gmail.com> Co-authored-by: James A. Fellows Yates <jfy133@gmail.com> Co-authored-by: JulianFlesch <julian.flesch@qbic.uni-tuebingen.de> Co-authored-by: znorgaard <zach@fulcrumgenomics.com> Co-authored-by: Josua Carl <53010862+JosuaCarl@users.noreply.github.com> Co-authored-by: sanmaxdev <sanmaxdev@users.noreply.github.com> Co-authored-by: Sangeeth Thilakarathna <46221775+sanmaxdev@users.noreply.github.com> Co-authored-by: codspeed-hq[bot] <117304815+codspeed-hq[bot]@users.noreply.github.com> Co-authored-by: Damon-Lee Pointon <51855558+DLBPointon@users.noreply.github.com> Co-authored-by: Matthias Zepper <6963520+MatthiasZepper@users.noreply.github.com>
1 parent ae4951a commit eb2f709

175 files changed

Lines changed: 12252 additions & 3988 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.devcontainer/build-devcontainer/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# devcontainers/miniconda image based on debian (bookworm)
22
# see tags and images: https://mcr.microsoft.com/en-us/artifact/mar/devcontainers/miniconda/tags
3-
FROM mcr.microsoft.com/devcontainers/miniconda@sha256:1a85cf3e3da9d999f994f74cf501b1d02c9aa73ebfa3552f806dbe4570d7d5b5 AS build
3+
FROM mcr.microsoft.com/devcontainers/miniconda@sha256:617c7e42311066ac0bac3b7f0a3647daa9eec70fb8e3aeb8a5b083337a8a8687 AS build
44

55
# copy this repo at current revision
66
COPY . /root/nfcore-tools/
@@ -27,7 +27,7 @@ RUN rm -f /etc/apt/sources.list.d/yarn.list && \
2727
rm -rf /var/lib/apt/lists/*
2828

2929
# Final stage to copy only the required files after installation
30-
FROM mcr.microsoft.com/devcontainers/base:2.1.8-debian12@sha256:17e6cc517b483d1108b333d4c34352b0a21617f0117052e9b259d47113a9dc37 AS final
30+
FROM mcr.microsoft.com/devcontainers/base:2.1.11-debian12@sha256:bb7b81b6e5be17b5267f92f4ffda534fea37dab1df97b5e86c1f9b91da5c0b5d AS final
3131

3232
# Copy only the conda environment and site-packages from build stage
3333
COPY --from=build /opt/conda /opt/conda

.devcontainer/setup.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export PS1='\[\e[3;36m\]\w ->\[\e[0m\\] '
1010
nextflow self-update
1111

1212
# Install specifically the version of tools from the workspace
13-
uv sync --all-extras
13+
uv sync
1414

1515
# Activate the virtual environment automatically on login
1616
echo "source $(pwd)/.venv/bin/activate" >> $HOME/.bashrc

.github/actions/create-lint-wf/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ runs:
1616
export NXF_WORK=$(pwd)
1717
1818
- name: Install Nextflow
19-
uses: nf-core/setup-nextflow@b4ec1bc7c16a94435159de94a05253542fddf6ef # v3
19+
uses: nf-core/setup-nextflow@893c28b667aedeba26e37f296d260ccc5bc4d914 # v3
2020
with:
2121
version: ${{ matrix.NXF_VER }}
2222

.github/workflows/changelog.yml

Lines changed: 41 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,54 @@ on:
33
issue_comment:
44
types: [created] # Add "@nf-core-bot changelog" as a PR comment to trigger this workflow.
55

6+
permissions: {}
7+
68
jobs:
79
update_changelog:
810
runs-on: ubuntu-latest
9-
if: contains(github.event.comment.body, '@nf-core-bot changelog')
11+
if: >
12+
github.event.issue.pull_request &&
13+
contains(github.event.comment.body, '@nf-core-bot changelog')
1014
1115
steps:
12-
- name: branch-deploy
13-
id: branch-deploy
14-
if: github.event_name == 'issue_comment'
15-
uses: github/branch-deploy@fded0351b6b79f854b335c11b3d93063461dd288 # v11.1.2
16-
with:
17-
trigger: "@nf-core-bot changelog"
18-
reaction: "eyes"
19-
stable_branch: "dev"
16+
- name: Verify commenter is on the nf-core/infrastructure team
17+
env:
18+
GH_TOKEN: ${{ secrets.NF_CORE_BOT_AUTH_TOKEN }}
19+
ACTOR: ${{ github.event.comment.user.login }}
20+
run: |
21+
state=$(gh api "orgs/nf-core/teams/infrastructure/memberships/${ACTOR}" --jq '.state' 2>/dev/null || true)
22+
if [ "$state" != "active" ]; then
23+
echo "::error::@${ACTOR} is not an active member of nf-core/infrastructure; refusing to run."
24+
exit 1
25+
fi
26+
echo "@${ACTOR} is on nf-core/infrastructure — proceeding."
27+
28+
- name: React to the triggering comment
29+
env:
30+
GH_TOKEN: ${{ secrets.NF_CORE_BOT_AUTH_TOKEN }}
31+
run: |
32+
gh api --method POST \
33+
"repos/${{ github.repository }}/issues/comments/${{ github.event.comment.id }}/reactions" \
34+
-f content=eyes
2035
21-
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
36+
# Checks out the base ref (the trusted version of the repo) first.
37+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
2238
with:
2339
token: ${{ secrets.NF_CORE_BOT_AUTH_TOKEN }}
2440

25-
# Action runs on the issue comment, so we don't get the PR by default.
26-
# Use the GitHub CLI to check out the PR:
41+
- name: Save trusted scripts
42+
run: |
43+
cp "${GITHUB_WORKSPACE}/.github/workflows/changelog.py" "${RUNNER_TEMP}/changelog.py"
44+
cp "${GITHUB_WORKSPACE}/.pre-commit-config.yaml" "${RUNNER_TEMP}/pre-commit-config.yaml"
45+
2746
- name: Checkout Pull Request
2847
env:
2948
GH_TOKEN: ${{ secrets.NF_CORE_BOT_AUTH_TOKEN }}
3049
run: |
3150
PR_NUMBER="${{ github.event.issue.number }}"
3251
gh pr checkout $PR_NUMBER
3352
34-
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
53+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
3554
with:
3655
python-version: "3.14"
3756

@@ -45,30 +64,31 @@ jobs:
4564
PR_NUMBER: ${{ github.event.issue.number || github.event.pull_request.number }}
4665
PR_TITLE: ${{ github.event.issue.title || github.event.pull_request.title }}
4766
run: |
48-
python ${GITHUB_WORKSPACE}/.github/workflows/changelog.py
67+
python "${RUNNER_TEMP}/changelog.py"
4968
5069
- name: Check if CHANGELOG.md actually changed
5170
id: file_changed
5271
run: |
5372
# Show the diff for debugging
54-
git diff -- ${GITHUB_WORKSPACE}/CHANGELOG.md
73+
git diff -- "${GITHUB_WORKSPACE}/CHANGELOG.md"
5574
5675
# Check if file has unstaged changes
57-
[ -n "$(git diff -- ${GITHUB_WORKSPACE}/CHANGELOG.md)" ] && file_changed="TRUE" || file_changed="FALSE"
76+
[ -n "$(git diff -- "${GITHUB_WORKSPACE}/CHANGELOG.md")" ] && file_changed="TRUE" || file_changed="FALSE"
5877
5978
echo "File changed: $file_changed"
60-
echo "changed=$file_changed" >> $GITHUB_OUTPUT
79+
echo "changed=$file_changed" >> "$GITHUB_OUTPUT"
6180
6281
- name: Set up Python 3.14
63-
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
82+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
6483
with:
6584
python-version: "3.14"
6685

6786
- name: Run pre-commit rules with prek
68-
uses: j178/prek-action@6ad80277337ad479fe43bd70701c3f7f8aa74db3 # v2
87+
if: steps.file_changed.outputs.changed == 'TRUE'
88+
uses: j178/prek-action@5337cb91e0fa35a7ff31b9ca345126d8bbbcdf16 # v2
6989
continue-on-error: true
7090
with:
71-
extra-args: --config .pre-commit-config.yaml --all-files
91+
extra-args: --config ${{ runner.temp }}/pre-commit-config.yaml --files CHANGELOG.md
7292

7393
- name: Commit and push changes
7494
if: steps.file_changed.outputs.changed == 'TRUE'
@@ -77,7 +97,7 @@ jobs:
7797
run: |
7898
git config user.email "core@nf-co.re"
7999
git config user.name "nf-core-bot"
80-
git add ${GITHUB_WORKSPACE}/CHANGELOG.md
100+
git add "${GITHUB_WORKSPACE}/CHANGELOG.md"
81101
git status
82102
git commit -m "[automated] Update CHANGELOG.md [skip ci]"
83103
git push

.github/workflows/clean-up.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
issues: write
1111
pull-requests: write
1212
steps:
13-
- uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10
13+
- uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v11
1414
with:
1515
stale-issue-message: "This issue has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor. Remove stale label or add a comment otherwise this issue will be closed in 20 days."
1616
stale-pr-message: "This PR has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor. Remove stale label or add a comment if it is still useful."

.github/workflows/codspeed.yml

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: CodSpeed benchmarks
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- dev
8+
paths:
9+
- codspeed.yml
10+
- nf_core/**/*.py
11+
pull_request:
12+
paths:
13+
- codspeed.yml
14+
- nf_core/**/*.py
15+
workflow_dispatch:
16+
17+
# Cancel if a newer run with the same workflow name is queued
18+
concurrency:
19+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
20+
cancel-in-progress: true
21+
22+
permissions:
23+
contents: read
24+
id-token: write # for OpenID Connect authentication with CodSpeed
25+
26+
jobs:
27+
startup-benchmarks:
28+
name: Run start-up benchmarks
29+
runs-on: codspeed-macro
30+
steps:
31+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
32+
name: Check out source-code repository
33+
34+
- name: Set up Python
35+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
36+
with:
37+
python-version: "3.14"
38+
39+
- name: Install Nextflow
40+
uses: nf-core/setup-nextflow@893c28b667aedeba26e37f296d260ccc5bc4d914 # v3
41+
with:
42+
version: ${{ github.event.inputs.nextflow-version || matrix.nextflow-version }}
43+
44+
- name: Install uv
45+
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
46+
with:
47+
enable-cache: true
48+
49+
- name: Install dependencies
50+
run: uv sync --all-extras
51+
52+
# Clone nf-core/modules into the local cache here, while network is
53+
# available. The modules-install benchmark then runs entirely offline
54+
# (no per-round fetch), so it stays deterministic even if the CodSpeed
55+
# step sandboxes network during measurement.
56+
- name: Warm nf-core/modules cache
57+
run: uv run python -c "from nf_core.modules.modules_repo import ModulesRepo; ModulesRepo()"
58+
59+
# These benchmarks spawn a fresh interpreter per round to measure
60+
# import/start-up cost, which CodSpeed's instruction-counting
61+
# "simulation" instrument can't see. Use "walltime" mode instead.
62+
- name: Run start-up benchmarks
63+
uses: CodSpeedHQ/action@88472375d0a4572cf70a9f1fe3a4e0ab8da1b924 # v5.0.1
64+
with:
65+
mode: walltime
66+
run: uv run pytest benchmarks/test_startup_benchmarks.py --codspeed

.github/workflows/create-lint-wf.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,22 @@ jobs:
4242
export NXF_WORK=$(pwd)
4343
4444
# Get the repo code
45-
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
45+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
4646
name: Check out source-code repository
4747

4848
# Set up nf-core/tools
4949
- name: Set up Python 3.14
50-
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
50+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
5151
with:
5252
python-version: "3.14"
5353

5454
- name: Install uv
55-
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
55+
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
5656
with:
5757
enable-cache: true
5858

5959
- name: Install python dependencies
60-
run: uv sync --all-extras
60+
run: uv sync
6161

6262
- name: run create-lint-wf
6363
uses: ./.github/actions/create-lint-wf

.github/workflows/create-test-lint-wf-template.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
all_features: ${{ steps.create_matrix.outputs.matrix }}
3333
steps:
3434
- name: checkout
35-
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
35+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
3636
- name: Create Matrix
3737
id: create_matrix
3838
run: |
@@ -56,23 +56,23 @@ jobs:
5656

5757
steps:
5858
- name: Check out source-code repository
59-
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
59+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
6060

6161
- name: Set up Python 3.14
62-
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
62+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
6363
with:
6464
python-version: "3.14"
6565

6666
- name: Install uv
67-
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
67+
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
6868
with:
6969
enable-cache: true
7070

7171
- name: Install python dependencies
72-
run: uv sync --all-extras
72+
run: uv sync
7373

7474
- name: Install Nextflow
75-
uses: nf-core/setup-nextflow@b4ec1bc7c16a94435159de94a05253542fddf6ef # v3
75+
uses: nf-core/setup-nextflow@893c28b667aedeba26e37f296d260ccc5bc4d914 # v3
7676
with:
7777
version: latest-everything
7878

.github/workflows/create-test-wf.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,24 @@ jobs:
4141
cd create-test-wf
4242
export NXF_WORK=$(pwd)
4343
44-
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
44+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
4545
name: Check out source-code repository
4646

4747
- name: Set up Python 3.14
48-
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
48+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
4949
with:
5050
python-version: "3.14"
5151

5252
- name: Install uv
53-
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
53+
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
5454
with:
5555
enable-cache: true
5656

5757
- name: Install python dependencies
5858
run: uv sync
5959

6060
- name: Install Nextflow
61-
uses: nf-core/setup-nextflow@b4ec1bc7c16a94435159de94a05253542fddf6ef # v3
61+
uses: nf-core/setup-nextflow@893c28b667aedeba26e37f296d260ccc5bc4d914 # v3
6262
with:
6363
version: ${{ matrix.NXF_VER }}
6464

.github/workflows/deploy-pypi.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ jobs:
1313
runs-on: ubuntu-latest
1414

1515
steps:
16-
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
16+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
1717
name: Check out source-code repository
1818

1919
- name: Set up Python 3.14
20-
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
20+
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
2121
with:
2222
python-version: "3.14"
2323

2424
- name: Install uv
25-
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
25+
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
2626
with:
2727
enable-cache: true
2828

@@ -34,6 +34,6 @@ jobs:
3434

3535
- name: Publish dist to PyPI
3636
if: github.repository == 'nf-core/tools'
37-
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # release/v1
37+
uses: pypa/gh-action-pypi-publish@ba38be9e461d3875417946c167d0b5f3d385a247 # release/v1
3838
with:
3939
password: ${{ secrets.pypi_password }}

0 commit comments

Comments
 (0)