Monorepo for ESS neutron scattering data reduction packages, managed with pixi.
| Package | Description |
|---|---|
| essreduce | Common data reduction tools (core) |
| essimaging | Neutron imaging (ODIN, TBL, YMIR) |
essreduce
└── essimaging
Install pixi:
curl -fsSL https://pixi.sh/install.sh | bashgit clone [email protected]:scipp/ess.git
cd ess
# Install all packages (editable, with test deps):
pixi install
# Or just one package:
pixi install -e essreduceThe pixi.lock file pins all dependencies reproducibly. No tox, no pip-compile, no manual virtualenv.
# Test a package:
pixi run test essreduce
pixi run test essimaging
# Test a single file:
pixi run -e essreduce pytest packages/essreduce/tests/normalization_test.pypixi run -e lint lint # all pre-commit hooks
pixi run -e lint check # ruff check
pixi run -e lint format # ruff formatpixi run docs essreduce
pixi run docs essimagingEdit the package's pyproject.toml, then re-lock:
pixi installCommit the updated pixi.lock.
Push a tag with the package prefix:
git tag essreduce/26.3.0
git push origin main --tagsThe release.yml workflow builds, publishes to PyPI, and deploys docs.
- On PRs: Only changed packages are tested (changing
essreducealso testsessimaging) - Nightly: All packages tested against latest deps + lower-bound deps
- Weekly: All packages tested on macOS and Windows
pixi.toml ← workspace root (features, tasks, environments)
pixi.lock ← single lockfile for all packages
.pre-commit-config.yaml ← shared linting hooks
packages/
essreduce/
pyproject.toml ← package deps, version, pytest config
src/ess/reduce/ ← source code (ess.reduce namespace)
tests/
docs/
essimaging/
pyproject.toml
src/ess/imaging/ ← source code (ess.imaging namespace)
...