Update python to current supported versions. Also add experimental support for next python release #3830
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test | |
on: | |
pull_request: | |
push: | |
branches: | |
- master | |
env: | |
PY_COLORS: 1 | |
jobs: | |
test: | |
name: Run tests | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [ubuntu-latest, windows-latest] | |
python-version: ["3.9", "3.10", "3.11"] | |
experimental: [false] | |
include: | |
- python-version: "3.12" | |
platform: ubuntu-latest | |
experimental: true | |
- python-version: "3.13" | |
platform: ubuntu-latest | |
experimental: true | |
runs-on: ${{ matrix.platform }} | |
continue-on-error: ${{ matrix.experimental }} | |
env: | |
IS_MAIN_PYTHON: ${{ matrix.python-version == '3.11' && matrix.platform == 'ubuntu-latest' }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Python tools | |
uses: BrandonLWhite/[email protected] | |
- name: Setup Python with poetry caching | |
# poetry cache requires poetry to already be installed, weirdly | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: poetry | |
- name: Install PyGobject dependencies on Ubuntu | |
if: matrix.platform == 'ubuntu-latest' | |
run: | | |
sudo apt update | |
sudo apt install ffmpeg gobject-introspection libgirepository1.0-dev | |
poetry install --extras=replaygain --extras=reflink | |
- name: Install Python dependencies | |
run: poetry install --only=main,test --extras=autobpm | |
- if: ${{ env.IS_MAIN_PYTHON != 'true' }} | |
name: Test without coverage | |
run: poe test | |
- if: ${{ env.IS_MAIN_PYTHON == 'true' }} | |
name: Test with coverage | |
uses: liskin/gh-problem-matcher-wrap@v3 | |
with: | |
linters: pytest | |
run: poe test-with-coverage | |
- if: ${{ env.IS_MAIN_PYTHON == 'true' }} | |
name: Store the coverage report | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-report | |
path: .reports/coverage.xml | |
upload-coverage: | |
name: Upload coverage report | |
needs: test | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get the coverage report | |
uses: actions/download-artifact@v4 | |
with: | |
name: coverage-report | |
- name: Upload code coverage | |
uses: codecov/codecov-action@v4 | |
with: | |
files: ./coverage.xml | |
use_oidc: true |