Skip to content

Support Python 3.12 #204

Support Python 3.12

Support Python 3.12 #204

Workflow file for this run

name: Test
on:
# TODO: Since we install latest JACK, it would be nice to run build every day
push:
branches:
- main
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.12
- name: Cache
uses: actions/cache@v3
with:
path: |
~/.cache/pre-commit
~/.cache/pip
key: lint-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Install pre-commit
run: pip install -U pre-commit
- name: Lint
run: pre-commit run --color=always --all-files
typing:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.12
- name: Cache
uses: actions/cache@v3
with:
path: |
~/.cache/pip
~/.cache/pypoetry
key: typing-${{ hashFiles('pyproject.toml') }}
- name: Setup Node
uses: actions/setup-node@v3
- name: Install Poetry
run: |
pip install -U poetry
poetry config virtualenvs.create false
- name: Install package
run: poetry install
- name: Install Pyright
run: npm install -g --no-package-lock --no-save pyright
- name: Check types
run: pyright
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
env:
LD_LIBRARY_PATH: /usr/local/lib
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Cache
uses: actions/cache@v3
with:
path: |
~/.cache/pip
~/.cache/pypoetry
key: test-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }}
- name: Install JACK
run: |
git clone https://github.com/jackaudio/jack2 /tmp/jack2
cd /tmp/jack2
./waf configure --prefix=/usr/local
sudo ./waf install
- name: Install Poetry
run: pip install -U poetry
- name: Install package
run: poetry install
- name: Test
run: |
poetry run pytest --color=yes --cov
mv .coverage ".coverage.${{ matrix.python-version }}"
- name: Upload coverage data
uses: actions/upload-artifact@v3
with:
name: coverage-data
path: .coverage.*
if-no-files-found: ignore
coverage: # https://hynek.me/articles/ditch-codecov-python/
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.12
- name: Install Coverage
run: pip install -U coverage[toml]
- name: Download data
uses: actions/download-artifact@v3
with:
name: coverage-data
- name: Combine coverage & fail if it's <100%
run: |
python -m coverage combine
python -m coverage html --skip-covered --skip-empty
python -m coverage report --fail-under=100
- name: Upload HTML report
uses: actions/upload-artifact@v3
if: ${{ failure() }}
with:
name: html-report
path: htmlcov