Skip to content

Commit 630786a

Browse files
authored
Merge pull request #468 from nipreps/mnt/ci+build
maint: bump dependencies, test on python 3.13
2 parents e93a3ac + 3d938fb commit 630786a

File tree

6 files changed

+99
-140
lines changed

6 files changed

+99
-140
lines changed

.github/workflows/pytest.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ name: Pytest
22

33
on:
44
push:
5-
branches: ['*']
6-
tags: ['*']
5+
branches: [ '*' ]
6+
tags: [ '*' ]
77
pull_request:
8-
branches: [master, 'maint/*']
8+
branches: [ master, 'maint/*' ]
99

1010
defaults:
1111
run:
@@ -26,12 +26,12 @@ jobs:
2626
runs-on: ${{ matrix.os }}
2727
strategy:
2828
matrix:
29-
os: ['ubuntu-latest']
30-
python-version: ['3.10', '3.11', '3.12']
31-
dependencies: ['latest', 'pre']
29+
os: [ 'ubuntu-latest' ]
30+
python-version: [ '3.10', '3.11', '3.12', '3.13' ]
31+
dependencies: [ 'latest', 'pre' ]
3232
include:
3333
- os: ubuntu-latest
34-
python-version: '3.10'
34+
python-version: '3.13'
3535
dependencies: 'min'
3636

3737
env:

Dockerfile

Lines changed: 9 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,10 @@
2626
ARG BASE_IMAGE=ubuntu:jammy-20240405
2727

2828
# NiBabies wheel
29-
FROM python:slim AS src
30-
RUN pip install build
31-
RUN apt-get update && \
32-
apt-get install -y --no-install-recommends git
29+
FROM ghcr.io/astral-sh/uv:python3.12-alpine AS src
30+
RUN apk add git
3331
COPY . /src
34-
RUN python -m build /src
32+
RUN uvx --from build pyproject-build --installer uv -w /src
3533

3634
# Older Python to support legacy MCRIBS
3735
FROM python:3.6.15-slim as pyenv
@@ -54,7 +52,7 @@ FROM downloader as afni
5452
# The download link can point to newer releases
5553
# As a safeguard, take advantage of Docker caching, and
5654
# Bump the date to current to update AFNI
57-
RUN echo "2023.06.09"
55+
RUN echo "2025.06.12"
5856
RUN mkdir -p /opt/afni-latest \
5957
&& curl -fsSL --retry 5 https://afni.nimh.nih.gov/pub/dist/tgz/linux_openmp_64.tgz \
6058
| tar -xz -C /opt/afni-latest --strip-components 1 \
@@ -72,22 +70,6 @@ RUN mkdir -p /opt/afni-latest \
7270
-name "3dAutomask" -or \
7371
-name "3dvolreg" \) -delete
7472

75-
# ANTs 2.5.4
76-
FROM downloader as ants
77-
RUN mkdir -p /opt && \
78-
curl -sSLO "https://github.com/ANTsX/ANTs/releases/download/v2.5.4/ants-2.5.4-ubuntu-22.04-X64-gcc.zip" && \
79-
unzip ants-2.5.4-ubuntu-22.04-X64-gcc.zip -d /opt && \
80-
rm ants-2.5.4-ubuntu-22.04-X64-gcc.zip
81-
82-
# Connectome Workbench 1.5.0
83-
FROM downloader as workbench
84-
RUN mkdir /opt/workbench && \
85-
curl -sSLO https://www.humanconnectome.org/storage/app/media/workbench/workbench-linux64-v1.5.0.zip && \
86-
unzip workbench-linux64-v1.5.0.zip -d /opt && \
87-
rm workbench-linux64-v1.5.0.zip && \
88-
rm -rf /opt/workbench/libs_linux64_software_opengl /opt/workbench/plugins_linux64 && \
89-
strip --remove-section=.note.ABI-tag /opt/workbench/libs_linux64/libQt5Core.so.5
90-
9173
# Micromamba
9274
FROM downloader as micromamba
9375

@@ -99,15 +81,16 @@ RUN apt-get update && \
9981

10082
WORKDIR /
10183
# Bump the date to current to force update micromamba
102-
RUN echo "2024.04.25" && curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba
84+
RUN echo "2025.06.12" && curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba
10385
ENV MAMBA_ROOT_PREFIX="/opt/conda"
10486
COPY env.yml /tmp/env.yml
10587
COPY requirements.txt /tmp/requirements.txt
10688
WORKDIR /tmp
10789
RUN micromamba create -y -f /tmp/env.yml && \
10890
micromamba clean -y -a
10991

110-
ENV PATH="/opt/conda/envs/nibabies/bin:$PATH"
92+
ENV PATH="/opt/conda/envs/nibabies/bin:$PATH" \
93+
UV_USE_IO_URING=0
11194
RUN npm install -g svgo@^3.2.0 [email protected] && \
11295
rm -r ~/.npm
11396

@@ -180,23 +163,12 @@ RUN apt-get update -qq \
180163
&& ldconfig
181164

182165
COPY --from=afni /opt/afni-latest /opt/afni-latest
183-
COPY --from=ants /opt/ants-2.5.4 /opt/ants
184-
COPY --from=workbench /opt/workbench /opt/workbench
185166

186167
# AFNI config
187168
ENV PATH="/opt/afni-latest:$PATH" \
188169
AFNI_IMSAVE_WARNINGS="NO" \
189170
AFNI_PLUGINPATH="/opt/afni-latest"
190171

191-
# ANTs config
192-
ENV ANTSPATH="/opt/ants" \
193-
PATH="/opt/ants/bin:$PATH" \
194-
LD_LIBRARY_PATH="/opt/ants/lib:$LD_LIBRARY_PATH"
195-
196-
# Workbench config
197-
ENV PATH="/opt/workbench/bin_linux64:$PATH" \
198-
LD_LIBRARY_PATH="/opt/workbench/lib_linux64:$LD_LIBRARY_PATH"
199-
200172
# Install FreeSurfer (with Infant Module)
201173
COPY --from=nipreps/freesurfer@sha256:3b895fc732a7080374a15c4f976510f39c0c48dc76c030ab27316febd5e419ee /opt/freesurfer /opt/freesurfer
202174
ENV FREESURFER_HOME="/opt/freesurfer"
@@ -278,8 +250,8 @@ ARG BUILD_DATE
278250
ARG VCS_REF
279251
ARG VERSION
280252
LABEL org.label-schema.build-date=$BUILD_DATE \
281-
org.label-schema.name="NiBabies" \
282-
org.label-schema.description="NiBabies - NeuroImaging tools for babies" \
253+
org.label-schema.name="fMRIPrep Lifespan" \
254+
org.label-schema.description="fMRIPrep Lifespan - fMRI processing tool from birth and on" \
283255
org.label-schema.url="https://github.com/nipreps/nibabies" \
284256
org.label-schema.vcs-ref=$VCS_REF \
285257
org.label-schema.vcs-url="https://github.com/nipreps/nibabies" \

env.yml

Lines changed: 41 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,46 @@
11
name: nibabies
22
channels:
3-
- https://fsl.fmrib.ox.ac.uk/fsldownloads/fslconda/public/
4-
- conda-forge
5-
# Update this ~yearly; last updated April 2023
3+
- https://fsl.fmrib.ox.ac.uk/fsldownloads/fslconda/public/
4+
- conda-forge
5+
# Update this ~yearly; last updated June 12 2025
66
dependencies:
7-
- python =3.11
8-
# Needed for svgo and bids-validator; consider moving to deno
9-
- nodejs=20
10-
# Intel Math Kernel Library for numpy
11-
- mkl=2023.2.0
12-
- mkl-service=2.4.0
13-
# git-annex for templateflow users with DataLad superdatasets
14-
- git-annex=*=alldep*
15-
# Base scientific python stack; required by FSL, so pinned here
16-
- numpy=1.26
17-
- scipy=1.11
18-
- matplotlib=3.8
19-
- pandas=2.2
20-
- h5py=3.10
21-
# Dependencies compiled against numpy, best to stick with conda
22-
- nitime=0.10
23-
- scikit-image=0.22
24-
- scikit-learn=1.4
25-
# Utilities
26-
- graphviz=9.0
27-
- pandoc=3.1
28-
# Workflow dependencies: ANTs
29-
- ants=2.5
30-
# Workflow dependencies: Convert3d
31-
- convert3d=1.4
32-
# Workflow dependencies: FSL (versions pinned in 6.0.7.7)
33-
- fsl-bet2=2111.4
34-
- fsl-flirt=2111.2
35-
- fsl-fast4=2111.3
36-
- fsl-fugue=2201.4
37-
- fsl-mcflirt=2111.0
38-
- fsl-miscmaths=2203.2
39-
- fsl-topup=2203.2
40-
- pip
41-
- pip:
42-
- -r requirements.txt
7+
- python=3.13
8+
# Needed for svgo and bids-validator; consider moving to deno
9+
- nodejs=20
10+
# Intel Math Kernel Library for numpy
11+
- mkl=2024.2.2
12+
- mkl-service=2.4.2
13+
# git-annex for templateflow users with DataLad superdatasets
14+
- git-annex=*=alldep*
15+
# Base scientific python stack; required by FSL, so pinned here
16+
- numpy=2.3
17+
- scipy=1.15
18+
- matplotlib=3.10
19+
- pandas=2.3
20+
- h5py=3.14
21+
# Dependencies compiled against numpy, best to stick with conda
22+
- nitime=0.11
23+
- scikit-image=0.25
24+
- scikit-learn=1.7
25+
# Utilities
26+
- graphviz=12.2
27+
- pandoc=3.7
28+
# Workflow dependencies: ANTs
29+
- ants=2.6
30+
# Workflow dependencies: Connectome Workbench
31+
- connectome-workbench-cli=2.0
32+
# Workflow dependencies: Convert3d
33+
- convert3d=1.4
34+
# Workflow dependencies: FSL (versions pinned in 6.0.7.17.20250415.fe1c582e)
35+
- fsl-bet2=2111.8
36+
- fsl-flirt=2111.4
37+
- fsl-fast4=2111.3
38+
- fsl-fugue=2201.5
39+
- fsl-mcflirt=2111.0
40+
- fsl-miscmaths=2412.4
41+
- fsl-topup=2203.5
42+
- pip
43+
- pip:
44+
- -r requirements.txt
4345
variables:
4446
FSLOUTPUTTYPE: NIFTI_GZ

0 commit comments

Comments
 (0)