Skip to content

RowMask uses ConstantArray for all valid and all invalid selections and remove unsafe RowMask constructor #5132

RowMask uses ConstantArray for all valid and all invalid selections and remove unsafe RowMask constructor

RowMask uses ConstantArray for all valid and all invalid selections and remove unsafe RowMask constructor #5132

Workflow file for this run

name: CI
on:
push:
branches: ["develop"]
pull_request: {}
workflow_dispatch: {}
permissions:
actions: read
contents: read
checks: write # audit-check creates checks
issues: write # audit-check creates issues
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
python-lint:
name: "Python (lint)"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: spiraldb/actions/.github/actions/[email protected]
- name: Python Lint - Format
run: uv run ruff format --check .
- name: Python Lint - Ruff
run: uv run ruff check .
python-test:
name: "Python (test)"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/cleanup
- uses: rui314/setup-mold@v1
- uses: ./.github/actions/setup-rust
- uses: spiraldb/actions/.github/actions/[email protected]
- name: Pytest - PyVortex
run: |
uv run pytest --benchmark-disable test/
working-directory: pyvortex/
- name: Doctest - PyVortex
run: |
uv run make clean && uv run make doctest
working-directory: docs/
- name: Ensure docs build - PyVortex
run: |
uv run make html
working-directory: docs/
- name: Ensure wheel and sdist can be built on Linux - PyVortex
run: |
# force linux compatibility to ensure there is exactly one wheel ergo no ambiguity in installation
uv run maturin build --interpreter python3.10 --compatibility linux
working-directory: pyvortex/
- name: Ensure wheel can run tests successfully
run: |
set -ex
echo creating a fresh venv which does *not* have the normal dependencies to ensure the wheel dependencies are correct
rm -rf .venv
uv sync --only-dev
uv run pip install target/wheels/vortex_array-*.whl || { uv run pip debug --verbose ; exit 1 ; }
uv run pip install pytest
cd pyvortex/test
uv run pytest
rust-docs:
name: "Rust (docs)"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-rust
- name: Docs
run: cargo doc --no-deps
build-default:
name: "Build (default)"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/cleanup
- uses: rui314/setup-mold@v1
- uses: ./.github/actions/setup-rust
- name: Rust Build (Default features)
run: cargo build --all-targets
build-all:
name: "Build (all-features)"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/cleanup
- uses: rui314/setup-mold@v1
- uses: ./.github/actions/setup-rust
- name: Rust Build (All Features)
run: cargo build --all-features --all-targets
rust-test:
name: "Rust (tests)"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/cleanup
- uses: rui314/setup-mold@v1
- uses: ./.github/actions/setup-rust
- name: Rust Lint - Format
run: cargo fmt --all --check
- name: Rust Lint - Clippy All Features
run: cargo clippy --all-features --all-targets
- name: Rust Lint - Clippy Default Features
run: cargo clippy --all-targets
- name: Rust Lint - Clippy No Default Features
run: |
set -ex
# https://spiraldb.slack.com/archives/C07BV3GKAJ2/p1732736281946729
for package in $(cargo check -p 2>&1 | grep '^ ')
do
echo ---- $package ----
cargo clippy --package $package --no-default-features
done
- name: Rust Test
run: cargo test --workspace --all-features
license-check-and-audit-check:
name: License Check and Audit Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/cleanup
- uses: rui314/setup-mold@v1
- uses: ./.github/actions/setup-rust
- uses: actions/checkout@v4
- name: License Check
run: cargo install --locked cargo-deny && cargo deny check
- uses: rustsec/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
ignore: "RUSTSEC-2023-0384"
miri:
name: "miri"
runs-on: ubuntu-latest
env:
MIRIFLAGS: -Zmiri-strict-provenance -Zmiri-symbolic-alignment-check -Zmiri-backtrace=full -Zmiri-disable-isolation
steps:
- uses: rui314/setup-mold@v1
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-rust
- name: Run tests with Miri
run: cargo miri test
bench-test:
name: "bench test"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/cleanup
- uses: rui314/setup-mold@v1
- uses: ./.github/actions/setup-rust
# Required to run benchmarks
- name: Install DuckDB
uses: opt-nc/[email protected]
with:
version: v1.0.0
- name: Rust Bench as test
run: cargo bench --bench '*[!noci]' --profile benchtest -- --test
generated-files:
name: "Check generated proto/fbs files are up to date"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/cleanup
- uses: rui314/setup-mold@v1
- uses: ./.github/actions/setup-rust
- uses: ./.github/actions/setup-flatc
- name: Install Protoc
uses: arduino/setup-protoc@v3
- name: "regenerate all .fbs/.proto Rust code"
run: |
cargo xtask generate-fbs
cargo xtask generate-proto
- name: "Make sure no files changed after regenerating"
run: |
test -z "$(git status --porcelain)"