soxspipe
The data-reduction pipeline for the SOXS instrument (a python package with command-line tools).
Documentation for soxspipe is hosted by Read the Docs (development version and main version). The code lives on github. Please report any issues you find here.
Installation
The best way to install or upgrade soxspipe is to use conda to install the package in its own isolated environment, as shown here:
conda create -n soxspipe python=3.12 soxspipe -c conda-forge
conda activate soxspipe
If you have previously installed soxspipe, a warning will be issued stating that a conda environment already exists; select 'y' when asked to remove the existing environment.
To check installation was successful run soxspipe -v. This should return the version number of the install.
Testing
Install the test dependencies and run the required offline suite with Python 3.12:
python -m pip install -e ".[tests]"
python -m pytest tests/unit tests/integration -m "not slow"
The real-data acceptance test is opt-in. The scheduled GitHub Actions workflow downloads the immutable archive named by tests/real_data/manifest.json, verifies it, creates a disposable workspace, and runs the representative NIR-offset reduction. To run the acceptance assertions locally after preparing that workspace, set SOXSPIPE_REAL_DATA_DIR to its absolute path:
SOXSPIPE_REAL_DATA_DIR=/absolute/path/to/workspace python -m pytest tests/real_data
Changed-line gates
Two gates run on every pull request into develop, and both judge only the lines the pull request changed. Neither one asks the whole package to be clean, so existing debt never blocks an unrelated change:
- Coverage.
diff-cover reports/coverage.xml --compare-branch=origin/develop --fail-under=80requires 80% coverage of changed lines. - Lint.
python tools/lint_ratchet.py --compare-branch origin/developfails when a ruff finding lands on a changed line. Ruff has no baseline feature, so the tool intersectsruff check --output-format jsonwith the diff hunks itself. Pre-existing findings in the files you touched are counted and printed as context, never gated; the package carries roughly 1,380 of them in total, andruff check soxspipereports that whole-package figure.
A finding is matched on the line ruff anchors it to. A finding that covers many lines, such as PLR0915 for an over-long function, is anchored at the def line: writing a new over-long function fails the gate, while adding a statement to one that is already over-long does not.
Run the lint gate locally against your staged changes before committing:
python tools/lint_ratchet.py --staged
To run it automatically on every commit, install the hook. It is a convenience, not the gate — git commit --no-verify skips it, and the CI step does not:
python -m pip install -e ".[dev]"
pre-commit install
How to cite soxspipe
If you use soxspipe in your work, please cite using the following BibTeX entry:
@software{Young_soxspipe,
author = {Young, David R. & Landoni, Marco},
doi = {10.5281/zenodo.8038264},
license = {GPL-3.0-only},
title = {{soxspipe. The SOXS data-reduction pipeline}},
url = {https://zenodo.org/doi/10.5281/zenodo.8038264}
}
Metadata
Release files for soxspipe 0.18.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| soxspipe-0.18.0.tar.gz | 10.8 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| soxspipe-0.18.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.6 MB
Release files / soxspipe-0.18.0.tar.gz
| Download URL | soxspipe-0.18.0.tar.gz |
|---|---|
| Size | 10.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ca68c9f714d02a6533d0744dca135aab0c266413398a45b3de4e311ba44d75da
|
|
BLAKE2b-256 checksum How to use checksums |
d6854206cd928314e36ed189685523e944394d320b859a3eb660dc13da69eba4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / soxspipe-0.18.0-py3-none-any.whl
| Download URL | soxspipe-0.18.0-py3-none-any.whl |
|---|---|
| Size | 10.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8a3862cc3a5d1aff551d863386b43c26df77b6183b33c5938283c19688e1ed31
|
|
BLAKE2b-256 checksum How to use checksums |
289483ebbf5593e23be32e4731c3bf7a28b25cfe0fe72e7934e96c69a4a2e08c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency log