Skip to content

Release v0.10.0

Release v0.10.0 #2726

Workflow file for this run

name: Test
on: [ push, pull_request, workflow_dispatch ]
jobs:
py_build_deps:
outputs:
output: ${{ steps.extract_from_toml.outputs.output }}
runs-on: ubuntu-latest
defaults:
run:
working-directory: light-curve
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Set up Python 3.13
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Extract build deps from pyproject.toml
id: extract_from_toml
run: |
echo "output="$(python -c 'import tomllib; print(" ".join(tomllib.load(open("pyproject.toml", "rb"))["build-system"]["requires"]))') >> "$GITHUB_OUTPUT"
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python_minor: [ '9', '10', '11', '12', '13' ]
defaults:
run:
working-directory: light-curve
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Set up Python 3.${{ matrix.python_minor }}
uses: actions/setup-python@v5
with:
python-version: "3.${{ matrix.python_minor }}"
- uses: Swatinem/rust-cache@v2
with:
shared-key: "${{ runner.os }}_stable-rust_tox-py3${{ matrix.python_minor }}"
workspaces: "light-curve"
- name: Install tox
run: pip install tox
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libgsl-dev
- name: Run Python tests
run: tox -e py3${{ matrix.python_minor }}-base,py3${{ matrix.python_minor }}-test
cargo-fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: cargo fmt --manifest-path=light-curve/Cargo.toml -- --check
cargo-clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
with:
shared-key: "${{ runner.os }}_stable-rust_cargo-clippy"
workspaces: "light-curve"
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libgsl-dev
- run: cargo clippy --manifest-path=light-curve/Cargo.toml --all-targets -- -D warnings
coverage:
runs-on: ubuntu-latest
needs: [ py_build_deps ]
defaults:
run:
working-directory: light-curve
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
- uses: Swatinem/rust-cache@v2
with:
shared-key: "${{ runner.os }}_stable-rust_maturin-develop"
workspaces: "light-curve"
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install build deps
run: pip install "${{ needs.py_build_deps.outputs.output }}"
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libgsl-dev
- name: Generate code coverage
run: |
source <(cargo llvm-cov show-env --export-prefix)
python -m venv venv
source venv/bin/activate
maturin develop --extras=test
python -m pytest
cargo llvm-cov report --lcov --output-path lcov.info
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
files: lcov.info
fail_ci_if_error: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
benchmarks:
# latest (24.04) is not supported as of 2024-10-09
runs-on: ubuntu-22.04
needs: [ py_build_deps ]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
- uses: Swatinem/rust-cache@v2
with:
shared-key: "${{ runner.os }}_stable-rust_maturin-develop-release"
workspaces: "light-curve"
- name: Run benchmarks
uses: CodSpeedHQ/action@v3
with:
token: ${{ secrets.CODSPEED_TOKEN }}
run: |
cd light-curve
python3 -m venv venv
. venv/bin/activate
pip install "${{ needs.py_build_deps.outputs.output }}" pytest-codspeed
maturin develop --extras=test --release
python3 -mpytest -m "not (nobs or multi)" --codspeed tests/test_w_bench.py
msrv-build:
runs-on: ubuntu-latest
needs: [ py_build_deps ]
defaults:
run:
working-directory: light-curve
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.9
uses: actions/setup-python@v5
with:
python-version: '3.9'
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Set up Python 3.13
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Get minimum supported Rust version
run: echo "::set-output name=msrv::$(grep '^rust-version = ' Cargo.toml | grep -o '[0-9.]\+')"
id: get_msrv
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ steps.get_msrv.outputs.msrv }}
- uses: Swatinem/rust-cache@v2
with:
shared-key: "${{ runner.os }}_msrv-rust_maturin-build"
workspaces: "light-curve"
- name: Install build_deps
run: pip install "${{ needs.py_build_deps.outputs.output }}"
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libgsl-dev
- name: Build
run: |
rustup default ${{ steps.get_msrv.outputs.msrv }}
maturin build --find-interpreter
arm:
runs-on: [ self-hosted, linux, ARM64 ]
needs: [ py_build_deps ]
defaults:
run:
working-directory: light-curve
steps:
- uses: actions/checkout@v4
- name: Install build_deps
run: pip install "${{ needs.py_build_deps.outputs.output }}"
- name: Build
run: maturin build