Skip to content

Move samples file parsing out of CLI code #449

Move samples file parsing out of CLI code

Move samples file parsing out of CLI code #449

Workflow file for this run

name: CI
on:
merge_group:
pull_request:
push:
branches:
- main
schedule:
# At 04:44 on Monday, see https://crontab.guru/
- cron: "44 4 * * 1"
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/action@v3.0.1
python_test:
name: Python tests
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash -el {0}
strategy:
matrix:
os: [macos-14, ubuntu-latest]
python-version: ["3.11", "3.12", "3.13"]
exclude:
# Just run macos tests on one Python version
- os: macos-14
python-version: "3.12"
- os: macos-14
python-version: "3.13"
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 plink
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 update
sudo apt install -y gcovr
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install "numpy>=2" 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 update
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-zarr-version:
name: Test Zarr versions
runs-on: ubuntu-latest
defaults:
run:
shell: bash -el {0}
strategy:
matrix:
zarr-format: [2, 3]
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 plink
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 icechunk
if: matrix.zarr-format == 3
run: |
python -m pip install icechunk hypothesis
- name: Run tests
run: |
pytest
env:
BIO2ZARR_ZARR_FORMAT: ${{ matrix.zarr-format }}