Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 39 additions & 8 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -123,15 +123,15 @@ jobs:
fetch-tags: true
- uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
version: "0.7.21"
python-version: "3.11"
version: "0.12.0"
python-version: "3.12"
cache-suffix: ${{ matrix.package }}-lower-bound
- name: Test with lowest direct dependencies
working-directory: packages/${{ matrix.package }}
run: uv run --extra=test --resolution=lowest-direct pytest

latest-dependencies:
name: Latest dependencies ${{ matrix.package }}
name: Latest dependencies ${{ matrix.package }} py${{ matrix.python }}
strategy:
fail-fast: false
matrix:
Expand All @@ -143,23 +143,54 @@ jobs:
- essreflectometry
- esssans
- essspectroscopy
python: ["3.12", "3.13", "3.14"]
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
with:
fetch-tags: true
- uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
version: "0.7.21"
python-version: "3.11"
cache-suffix: ${{ matrix.package }}-latest
version: "0.12.0"
python-version: ${{ matrix.python }}
cache-suffix: ${{ matrix.package }}-latest-py${{ matrix.python }}
- name: Test with latest dependencies
working-directory: packages/${{ matrix.package }}
run: uv run --extra=test --resolution=highest pytest

free-threaded:
name: Free-threaded ${{ matrix.package }}
strategy:
fail-fast: false
matrix:
# Excluded packages that do not work on free-threaded Python yet:
# - essnmx: importing bitshuffle re-enables the GIL, which

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Can you suppress that warning specifically in the project? I think that is less likely to cause issues down the line than silently not testing the package.

# filterwarnings = error escalates to a collection error.
# - essdiffraction: numba-jitted code aborts the interpreter when run

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Will #707 fix this?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

actually yes, it should

# from dask worker threads.
package:
- essreduce
- essimaging
- essreflectometry
- esssans
- essspectroscopy
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
with:
fetch-tags: true
- uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
version: "0.12.0"
python-version: "3.14t"
cache-suffix: ${{ matrix.package }}-free-threaded
- name: Test on free-threaded Python
working-directory: packages/${{ matrix.package }}
run: uv run --extra=test pytest

report-test-failure:
name: Report nightly failures
needs: [ test, publish, lower-bound, latest-dependencies ]
needs: [ test, publish, lower-bound, latest-dependencies, free-threaded ]
runs-on: ubuntu-slim
if: failure() && github.event_name == 'schedule'
env:
Expand All @@ -184,7 +215,7 @@ jobs:

report-test-success:
name: Report nightly success
needs: [ test, publish, lower-bound, latest-dependencies ]
needs: [ test, publish, lower-bound, latest-dependencies, free-threaded ]
runs-on: ubuntu-slim
if: github.ref == 'refs/heads/main'
env:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ jobs:
fetch-depth: 0
- uses: actions/setup-python@v6
with:
python-version: "3.11"
python-version: "3.12"
- name: Copy LICENSE into package
run: cp LICENSE packages/${{ needs.determine-package.outputs.package }}/LICENSE
- name: Build package
Expand Down Expand Up @@ -157,7 +157,7 @@ jobs:
fetch-depth: 0 # Fetch depth must be 0 otherwise the git log comment won't find all relevant commits between tags.
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # 6.2.0
with:
python-version: "3.11"
python-version: "3.12"
- name: Install dependencise
run: pip install pydantic==2.13.3
- name: Download PR metadata
Expand Down
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.11
3.12
4 changes: 2 additions & 2 deletions packages/essdiffraction/.copier-answers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
_commit: 024a41b

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Maybe I missed something but we do we still have copier answers? I thought we were not using copier in the monorepo?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

We still have copier.yml lying around, I am happy to remove copier.yml files here if we have fully decided on not using copier in the monorepo. I am not sure if we had a final decision here? cc @YooSunYoung

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We kept it at the beginning in case we want to use copier template to, e.g. update python version using copier template,,, but if I'm the only one who's willing to maintain the copier template we should just remove them... I don't want to be too important.

In Short: Let's remove them...?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Yes, but in a separate PR, please.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@YooSunYoung I'm not saying the copier template is not important. It's still used in plenty of other repositories. I just thought that they no longer serve a purpose here because I don't think it can work in subdirectories of a repo (e.g. for the docs config), and all the CI setup and dependencies is now managed centrally at the root of the monorepo.

_src_path: gh:scipp/copier_template
description: Diffraction data reduction for the European Spallation Source
max_python: '3.13'
min_python: '3.11'
max_python: '3.14'
min_python: '3.12'
namespace_package: ess
nightly_deps: scipp,scippnexus,sciline,plopp,scippneutron,essreduce,tof
orgname: scipp
Expand Down
2 changes: 1 addition & 1 deletion packages/essdiffraction/docs/developer/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Alternatively, if you want a different workflow, take a look at ``tox.ini`` or `
Run the tests using

```sh
tox -e py311
tox -e py312
```

(or just `tox` if you want to run all environments).
Expand Down
4 changes: 2 additions & 2 deletions packages/essdiffraction/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ classifiers = [
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Scientific/Engineering",
"Typing :: Typed",
]
requires-python = ">=3.11"
requires-python = ">=3.12"

# IMPORTANT:
# Run 'tox -e deps' after making changes here. This will update requirement files.
Expand Down
4 changes: 2 additions & 2 deletions packages/essimaging/.copier-answers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
_commit: b87e087
_src_path: gh:scipp/copier_template
description: Imaging data reduction for the European Spallation Source
max_python: '3.13'
min_python: '3.11'
max_python: '3.14'
min_python: '3.12'
namespace_package: ess
nightly_deps: scipp,sciline,scippnexus,plopp,essreduce,scippneutron,tof,scitiff
orgname: scipp
Expand Down
2 changes: 1 addition & 1 deletion packages/essimaging/docs/developer/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Alternatively, if you want a different workflow, take a look at ``tox.ini`` or `
Run the tests using

```sh
tox -e py311
tox -e py312

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This documentation seems out of date? We no longer use tox. Left over from copier?

```

(or just `tox` if you want to run all environments).
Expand Down
4 changes: 2 additions & 2 deletions packages/essimaging/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ classifiers = [
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Scientific/Engineering",
"Typing :: Typed",
]
# The min python version should be updated in the root pixi.toml file
# pre-commit will automatically update the following pin
requires-python = ">=3.11"
requires-python = ">=3.12"

dynamic = ["version"]

Expand Down
4 changes: 2 additions & 2 deletions packages/essnmx/.copier-answers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
_commit: 0dae45f
_src_path: gh:scipp/copier_template
description: Data reduction for NMX at the European Spallation Source.
max_python: '3.13'
min_python: '3.11'
max_python: '3.14'
min_python: '3.12'
namespace_package: ess
nightly_deps: scipp,sciline,scippnexus,plopp
orgname: scipp
Expand Down
2 changes: 1 addition & 1 deletion packages/essnmx/docs/developer/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Alternatively, if you want a different workflow, take a look at ``tox.ini`` or `
Run the tests using

```sh
tox -e py311
tox -e py312
```

(or just `tox` if you want to run all environments).
Expand Down
4 changes: 2 additions & 2 deletions packages/essnmx/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ classifiers = [
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Scientific/Engineering",
"Typing :: Typed",
]
requires-python = ">=3.11"
requires-python = ">=3.12"

# IMPORTANT:
# Run 'tox -e deps' after making changes here. This will update requirement files.
Expand Down
4 changes: 2 additions & 2 deletions packages/essreduce/.copier-answers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
_commit: c3214e6
_src_path: gh:scipp/copier_template
description: Common data reduction tools for the ESS facility
max_python: '3.13'
min_python: '3.11'
max_python: '3.14'
min_python: '3.12'
namespace_package: ess
nightly_deps: scippnexus,scipp,sciline,cyclebane,scippneutron,tof
orgname: scipp
Expand Down
2 changes: 1 addition & 1 deletion packages/essreduce/docs/developer/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Alternatively, if you want a different workflow, take a look at ``tox.ini`` or `
Run the tests using

```sh
tox -e py311
tox -e py312
```

(or just `tox` if you want to run all environments).
Expand Down
6 changes: 3 additions & 3 deletions packages/essreduce/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,23 @@ classifiers = [
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Scientific/Engineering",
"Typing :: Typed",
]
# The min python version should be updated in the root pixi.toml file
# pre-commit will automatically update the following pin
requires-python = ">=3.11"
requires-python = ">=3.12"

dynamic = ["version"]

dependencies = [
"dask>=2022.1.0",
"graphviz>=0.20",
"sciline>=25.11.0",
"scipp>=26.3.1",
"scipp>=26.7.0",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

What was the reason for the scipp version bump?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I don't actually remember, I think there was some local failure with py314 scipp build but I can't reproduce the failure anymore. I'll revert.

"scippneutron>=26.6.0",
"scippnexus>=25.06.0",
"scipy>=1.14",
Expand Down
4 changes: 2 additions & 2 deletions packages/essreflectometry/.copier-answers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
_commit: 024a41b
_src_path: gh:scipp/copier_template
description: Reflectometry data reduction for the European Spallation Source
max_python: '3.13'
min_python: '3.11'
max_python: '3.14'
min_python: '3.12'
namespace_package: ess
nightly_deps: plopp,sciline,scippneutron,scippnexus,scipp
orgname: scipp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Alternatively, if you want a different workflow, take a look at ``tox.ini`` or `
Run the tests using

```sh
tox -e py311
tox -e py312
```

(or just `tox` if you want to run all environments).
Expand Down
4 changes: 2 additions & 2 deletions packages/essreflectometry/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ classifiers = [
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Scientific/Engineering",
"Typing :: Typed",
]
requires-python = ">=3.11"
requires-python = ">=3.12"

# IMPORTANT:
# Run 'tox -e deps' after making changes here. This will update requirement files.
Expand Down
7 changes: 5 additions & 2 deletions packages/essreflectometry/src/ess/estia/types.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Copyright (c) 2025 Scipp contributors (https://github.com/scipp)
from typing import NewType, TypeAlias
from typing import NewType

import scipp as sc
from ess.reduce.unwrap.types import WavelengthMonitor as _WavelengthMonitor
Expand All @@ -12,4 +12,7 @@
AngularResolution = NewType("AngularResolution", sc.Variable)
SampleSizeResolution = NewType("SampleSizeResolution", sc.Variable)

WavelengthMonitor: TypeAlias = _WavelengthMonitor[RunType, CaveMonitor]
# Plain assignment (not a PEP 695 ``type`` alias): sciline needs the concrete
# generic alias at runtime, and it is subscripted again as
# ``WavelengthMonitor[RunType]`` in providers.
WavelengthMonitor = _WavelengthMonitor[RunType, CaveMonitor]
9 changes: 6 additions & 3 deletions packages/essreflectometry/src/ess/freia/types.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Copyright (c) 2025 Scipp contributors (https://github.com/scipp)
from typing import NewType, TypeAlias
from typing import NewType

import scipp as sc
from ess.reduce.unwrap.types import WavelengthMonitor
from ess.reduce.unwrap.types import WavelengthMonitor as _WavelengthMonitor

from ..reflectometry.types import RunType

Expand All @@ -12,4 +12,7 @@
AngularResolution = NewType("AngularResolution", sc.Variable)
SampleSizeResolution = NewType("SampleSizeResolution", sc.Variable)

WavelengthMonitor: TypeAlias = WavelengthMonitor[RunType, IncidentMonitor]
# Plain assignment (not a PEP 695 ``type`` alias): sciline needs the concrete
# generic alias at runtime, and it is subscripted again as
# ``WavelengthMonitor[RunType]`` in providers.
WavelengthMonitor = _WavelengthMonitor[RunType, IncidentMonitor]
4 changes: 2 additions & 2 deletions packages/esssans/.copier-answers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
_commit: 7e41523
_src_path: gh:scipp/copier_template
description: SANS data reduction for the European Spallation Source
max_python: '3.13'
min_python: '3.11'
max_python: '3.14'
min_python: '3.12'
namespace_package: ess
nightly_deps: plopp,sciline,scippneutron,scippnexus,scipp,essreduce
orgname: scipp
Expand Down
2 changes: 1 addition & 1 deletion packages/esssans/docs/developer/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Alternatively, if you want a different workflow, take a look at ``tox.ini`` or `
Run the tests using

```sh
tox -e py311
tox -e py312
```

(or just `tox` if you want to run all environments).
Expand Down
4 changes: 2 additions & 2 deletions packages/esssans/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ classifiers = [
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Scientific/Engineering",
"Typing :: Typed",
]
# The min python version should be updated in the root pixi.toml file
# pre-commit will automatically update the following pin
requires-python = ">=3.11"
requires-python = ">=3.12"

dynamic = ["version"]

Expand Down
4 changes: 2 additions & 2 deletions packages/essspectroscopy/.copier-answers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
_commit: 024a41b
_src_path: gh:scipp/copier_template
description: 'Spectroscopy data reduction for the European Spallation Source '
max_python: '3.13'
min_python: '3.11'
max_python: '3.14'
min_python: '3.12'
namespace_package: ess
nightly_deps: scipp,scippneutron,sciline,plopp,scippnexus,essreduce
orgname: scipp
Expand Down
2 changes: 1 addition & 1 deletion packages/essspectroscopy/docs/developer/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Alternatively, if you want a different workflow, take a look at ``tox.ini`` or `
Run the tests using

```sh
tox -e py311
tox -e py312
```

(or just `tox` if you want to run all environments).
Expand Down
Loading
Loading