Skip to content

Revert "Drop 3.9" #95 #176

Revert "Drop 3.9" #95

Revert "Drop 3.9" #95 #176

Workflow file for this run

name: CI
on:
pull_request:
push:
branches:
- main
jobs:
pre-commit:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- uses: pre-commit/[email protected]
python_test:
name: Python tests
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash -el {0}
strategy:
matrix:
# Use macos-13 because pip binary packages for ARM aren't
# available for many dependencies
os: [macos-13, macos-14, ubuntu-latest]
python-version: ["3.9", "3.10", "3.11", "3.12"]
exclude:
# Just run macos tests on one Python version
- os: macos-13
python-version: "3.10"
- os: macos-13
python-version: "3.11"
- os: macos-13
python-version: "3.12"
- os: macos-14
python-version: "3.9"
- os: macos-14
python-version: "3.10"
- os: macos-14
python-version: "3.12"
steps:
- uses: actions/checkout@v4
- name: Set up Miniconda with Python ${{ matrix.python-version }}
uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
python-version: ${{ matrix.python-version }}
channels: conda-forge,bioconda
- name: Install dependencies
run: |
conda install bcftools
python -m pip install --upgrade pip
python -m pip install '.[dev]'
# Build the extension module in-place so pytest can find it
python3 setup.py build_ext --inplace
- name: Run tests
run: |
pytest
c_python_test:
name: CPython interface tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install system dependencies
run: |
sudo apt install -y gcovr
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install numpy pytest pytest_cov
- name: Build module with coverage
run: |
# Build the extension module in-place so pytest can find it
CFLAGS="--coverage" python3 setup.py build_ext --inplace
- name: Run tests
run: |
pytest -vs tests/test_cpython_interface.py
- name: Show coverage
run: |
gcovr --filter vcztools
c_test:
name: C tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt install -y ninja-build libcunit1-dev valgrind meson gcovr
- name: Build
working-directory: ./lib
run: |
meson setup -Db_coverage=true build
- name: Tests
working-directory: ./lib
run: |
ninja -C build test
- name: Show coverage
working-directory: ./lib
run: |
ninja -C build coverage-text
cat build/meson-logs/coverage.txt
- name: Valgrind
working-directory: ./lib
run: |
valgrind --leak-check=full --error-exitcode=1 ./build/tests
packaging:
name: Packaging
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install build twine validate-pyproject[all]
- name: Check and install package
run: |
validate-pyproject pyproject.toml
python -m build
python -m twine check --strict dist/*
python -m pip install dist/*.whl
- name: Check vcztools CLI
run: |
vcztools --help
# Make sure we don't have ``vcztools`` in the CWD
cd tests
python -m vcztools --help
test-numpy-version:
name: Test numpy versions
runs-on: ubuntu-latest
defaults:
run:
shell: bash -el {0}
strategy:
matrix:
numpy: ["==1.26", ">=2"]
steps:
- uses: actions/checkout@v4
- name: Set up Miniconda
uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
python-version: '3.11'
channels: conda-forge,bioconda
- name: Install dependencies
run: |
conda install bcftools
python -m pip install --upgrade pip
python -m pip install '.[dev]'
# Build the extension module in-place so pytest can find it
python3 setup.py build_ext --inplace
- name: Install numpy${{ matrix.numpy }}
run: |
python -m pip install 'numpy${{ matrix.numpy }}'
- name: Run tests
run: |
pytest