Skip to content

Add support for Python 3.12 #421

Add support for Python 3.12

Add support for Python 3.12 #421

Workflow file for this run

name: umbral-pre
on:
pull_request:
paths:
- "umbral-pre/**"
- "umbral-pre-python/**"
- "umbral-pre-wasm/**"
- "Cargo.*"
push:
branches:
- master
tags:
- v*
defaults:
run:
working-directory: umbral-pre
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-Dwarnings"
jobs:
build-wasm:
runs-on: ubuntu-latest
strategy:
matrix:
rust:
- 1.65.0 # MSRV
- stable
target:
- wasm32-unknown-unknown
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
override: true
#- run: cp ../../Cargo.lock .. # Use same Cargo.lock resolution that's checked in
- run: cargo build --features bindings-wasm --release --target ${{ matrix.target }}
build-arm:
runs-on: ubuntu-latest
strategy:
matrix:
rust:
- 1.65.0 # MSRV
- stable
target:
- thumbv7em-none-eabi
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
override: true
#- run: cp ../../Cargo.lock .. # Use same Cargo.lock resolution that's checked in
- run: cargo build --release --target ${{ matrix.target }} --no-default-features
build-benchmarks:
runs-on: ubuntu-latest
strategy:
matrix:
rust:
- 1.65.0 # MSRV
- stable
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
- run: cargo build --all-features --benches
test:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- target: x86_64-unknown-linux-gnu
rust: 1.65.0 # MSRV
- target: x86_64-unknown-linux-gnu
rust: stable
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
override: true
- run: ${{ matrix.deps }}
- run: cargo check --all-features
- run: cargo test --release --all-features
python-test:
runs-on: ubuntu-latest
strategy:
matrix:
rust:
- stable
python: ["3.8", "3.12"]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
override: true
- name: Install umbral_pre package
run: pip install -e .
working-directory: umbral-pre-python
- name: Run Python example
run: python example/example.py
working-directory: umbral-pre-python
- name: Install pip dependencies
run: pip install mypy
- name: Run mypy.stubtest
run: python -m mypy.stubtest umbral_pre --allowlist stubtest-allowlist.txt
working-directory: umbral-pre-python
trigger-wheels:
runs-on: ubuntu-latest
needs: test
if: startsWith(github.ref, 'refs/tags/')
steps:
- uses: benc-uk/workflow-dispatch@v1
with:
workflow: Wheels
token: ${{ secrets.PERSONAL_TOKEN }}
codecov:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
target: x86_64-unknown-linux-gnu
override: true
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
# Only checking the coverage of the main library,
# bindings are covered by their language's tests.
# Also have to exclude `umbral-pre-python` explicitly,
# since it cannot be compiled for testing
# (https://github.com/PyO3/pyo3/issues/340)
- name: Generate code coverage
run: cargo llvm-cov --workspace --lcov --output-path lcov.info --exclude umbral-pre-wasm --exclude umbral-pre-python --all-features
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
files: lcov.info
fail_ci_if_error: true