Release v0.10.0 #2726
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |