Skip to content

pygfx: support Point symbols #543

pygfx: support Point symbols

pygfx: support Point symbols #543

Workflow file for this run

name: CI
on:
push:
branches: [main]
tags: [v*]
pull_request:
workflow_dispatch:
schedule:
# run every week (for --pre release tests)
- cron: "0 0 * * 0"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
check-manifest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: pipx run check-manifest
lint:
# Lint on Windows to include wx type stubs. wxPython does not ship pre-built wheels for Linux,
# and building on CI from source fails due to missing GTK+ dev files.
runs-on: windows-latest
steps:
- uses: actions/checkout@v6
- uses: astral-sh/setup-uv@v7
with:
enable-cache: true
python-version: "3.13"
- run: uvx prek run --all-files
test:
name: test ${{ matrix.os }} py${{ matrix.python-version }} ${{ matrix.gfx }} ${{ matrix.canvas }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.10", "3.13"]
gfx: [pygfx, vispy]
canvas: [pyqt6, jupyter, wx]
exclude:
# glfw.GLFWError: (65545) b'NSGL: Failed to find a suitable pixel format'
# (Under the hood GLFW gives vispy the OpenGL context.)
- os: macos-latest
canvas: jupyter
gfx: vispy
# wxpython does not build wheels for ubuntu or macos-latest py3.10
- os: ubuntu-latest
canvas: wx
- os: macos-latest
canvas: wx
python-version: "3.10"
include:
- python-version: "3.11"
gfx: pygfx
canvas: pyqt6
os: ubuntu-latest
- python-version: "3.12"
gfx: pygfx
canvas: pyqt6
os: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: astral-sh/setup-uv@v7
with:
python-version: ${{ matrix.python-version }}
enable-cache: true
- uses: pyvista/setup-headless-display-action@v4
with:
qt: true
- name: Install llvmpipe and lavapipe for offscreen canvas
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update -y -qq
sudo apt install -y libegl1-mesa-dev libgl1-mesa-dri libxcb-xfixes0-dev mesa-vulkan-drivers
- name: Install dependencies
run: uv sync --no-dev --group test --extra ${{ matrix.gfx }} --extra ${{matrix.canvas}} ${{ matrix.python-version >= '3.12' && matrix.gfx == 'pygfx' && '--extra imgui' || '' }} ${{ matrix.canvas == 'pyqt6' && '--group testqt' || '' }} ${{ matrix.canvas == 'jupyter' && '--group testjupyter' || '' }}
- name: Test
shell: bash
run: uv run --no-sync coverage run -p -m pytest -v
- name: Test notebooks
if: matrix.canvas == 'jupyter'
shell: bash
run: uv run --no-sync coverage run -p -m pytest -v --nbval examples/*.ipynb
- name: Upload coverage
uses: actions/upload-artifact@v6
with:
name: covreport-${{ matrix.os }}-py${{ matrix.python-version }}-${{ matrix.gfx }}-${{ matrix.canvas }}
path: ./.coverage*
include-hidden-files: true
upload_coverage:
if: always()
needs: [test]
uses: pyapp-kit/workflows/.github/workflows/upload-coverage.yml@v2
secrets:
codecov_token: ${{ secrets.CODECOV_TOKEN }}
deploy:
name: Deploy
needs: test
if: success() && startsWith(github.ref, 'refs/tags/') && github.event_name != 'schedule'
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: astral-sh/setup-uv@v7
with:
enable-cache: true
- run: uv build
- uses: pypa/gh-action-pypi-publish@release/v1
- uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
files: "./dist/*"