From ec36c42087801b598c27b6fe7752a8b651a2c646 Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Thu, 4 May 2023 11:38:32 +0100 Subject: [PATCH 01/21] Add Qt dependency action; update test workflows. --- .github/actions/install-qt-support/README.md | 27 +++++++++++++ .github/actions/install-qt-support/action.yml | 30 +++++++++++++++ .github/workflows/ets-from-source.yml | 38 +++++-------------- .github/workflows/test-with-edm-3.8.yml | 23 +++-------- .github/workflows/test-with-edm.yml | 31 ++++----------- pyproject.toml | 2 +- 6 files changed, 80 insertions(+), 71 deletions(-) create mode 100644 .github/actions/install-qt-support/README.md create mode 100644 .github/actions/install-qt-support/action.yml diff --git a/.github/actions/install-qt-support/README.md b/.github/actions/install-qt-support/README.md new file mode 100644 index 000000000..47c86e009 --- /dev/null +++ b/.github/actions/install-qt-support/README.md @@ -0,0 +1,27 @@ +# Install Qt dependencies + +This action calls `apt-get` to install packages required for running Qt on Ubuntu. + +## Inputs + +There are no inputs. + +## Outputs + +There are no outputs. + +## Example usage + +```yml + +jobs: + test: + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + - name: Install Qt dependencies + uses: ./.github/actions/install-qt-support +``` diff --git a/.github/actions/install-qt-support/action.yml b/.github/actions/install-qt-support/action.yml new file mode 100644 index 000000000..66b98ab7e --- /dev/null +++ b/.github/actions/install-qt-support/action.yml @@ -0,0 +1,30 @@ +name: install-qt-support +description: 'Install supporting OS packages for Qt-using code' +runs: + using: composite + steps: + - name: Install Linux packages for Qt + if: runner.os == 'Linux' + run: | + sudo apt-get update + sudo apt-get install qtbase5-dev + sudo apt-get install qtchooser + sudo apt-get install qt5-qmake + sudo apt-get install qtbase5-dev-tools + sudo apt-get install libegl1 + sudo apt-get install libxkbcommon-x11-0 + sudo apt-get install libxcb-icccm4 + sudo apt-get install libxcb-image0 + sudo apt-get install libxcb-keysyms1 + sudo apt-get install libxcb-randr0 + sudo apt-get install libxcb-render-util0 + sudo apt-get install libxcb-xinerama0 + sudo apt-get install libxcb-shape0 + sudo apt-get install libxcb-cursor0 + sudo apt-get install pulseaudio + sudo apt-get install libpulse-mainloop-glib0 + # Needed to work around https://bugreports.qt.io/browse/PYSIDE-1547 + sudo apt-get install libopengl0 + # Needed for Qt6 video playback + sudo apt-get install libgstreamer-gl1.0-0 + shell: bash diff --git a/.github/workflows/ets-from-source.yml b/.github/workflows/ets-from-source.yml index 5cc91fe09..dee382e2a 100644 --- a/.github/workflows/ets-from-source.yml +++ b/.github/workflows/ets-from-source.yml @@ -20,33 +20,17 @@ jobs: toolkit: ['null', 'pyqt5', 'pyside2'] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 - - name: Install Qt dependencies for Linux - run: | - sudo apt-get update - sudo apt-get install qtbase5-dev - sudo apt-get install qtchooser - sudo apt-get install qt5-qmake - sudo apt-get install qtbase5-dev-tools - sudo apt-get install libegl1 - sudo apt-get install libxkbcommon-x11-0 - sudo apt-get install libglu1-mesa-dev - sudo apt-get install libxcb-icccm4 - sudo apt-get install libxcb-image0 - sudo apt-get install libxcb-keysyms1 - sudo apt-get install libxcb-randr0 - sudo apt-get install libxcb-render-util0 - sudo apt-get install libxcb-xinerama0 - sudo apt-get install libxcb-shape0 - shell: bash - if: runner.os == 'Linux' + - uses: actions/checkout@v3 + - name: Install Qt dependencies + uses: ./.github/actions/install-qt-support + if: matrix.toolkit != 'wx' - name: Cache EDM packages uses: actions/cache@v2 with: path: ~/.cache key: ${{ runner.os }}-${{ matrix.toolkit }}-${{ hashFiles('ci/edmtool.py') }} - name: Set up EDM - uses: enthought/setup-edm-action@v1 + uses: enthought/setup-edm-action@v2 with: edm-version: ${{ env.INSTALL_EDM_VERSION }} - name: Install click to the default EDM environment @@ -54,11 +38,9 @@ jobs: - name: Install test environment run: edm run -- python ci/edmtool.py install --toolkit=${{ matrix.toolkit }} --source - name: Run tests - uses: GabrielBB/xvfb-action@v1 - with: - # kiva agg requires at least 15-bit color depth. - # The --server-args assumes xvfb-run is called, hence Linux only. - run: --server-args="-screen 0 1024x768x24" edm run -- python ci/edmtool.py test --toolkit=${{ matrix.toolkit }} + # kiva agg requires at least 15-bit color depth. + # The --server-args assumes xvfb-run is called, hence Linux only. + run: xvfb-run -a --server-args="-screen 0 1024x768x24" edm run -- python ci/edmtool.py test --toolkit=${{ matrix.toolkit }} # Test against EDM packages from source on Windows and OSX test-ets-source: @@ -68,14 +50,14 @@ jobs: toolkit: ['null', 'pyqt5', 'pyside2'] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Cache EDM packages uses: actions/cache@v2 with: path: ~/.cache key: ${{ runner.os }}-${{ matrix.toolkit }}-${{ hashFiles('ci/edmtool.py') }} - name: Setup EDM - uses: enthought/setup-edm-action@v1 + uses: enthought/setup-edm-action@v2 with: edm-version: ${{ env.INSTALL_EDM_VERSION }} - name: Install click to the default EDM environment diff --git a/.github/workflows/test-with-edm-3.8.yml b/.github/workflows/test-with-edm-3.8.yml index 19c5cfd61..44c810695 100644 --- a/.github/workflows/test-with-edm-3.8.yml +++ b/.github/workflows/test-with-edm-3.8.yml @@ -18,22 +18,9 @@ jobs: toolkit: ['null', 'pyside6'] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Install Qt dependencies for Linux - run: | - sudo apt-get update - sudo apt-get install libegl1 - sudo apt-get install libxkbcommon-x11-0 - sudo apt-get install libglu1-mesa-dev - sudo apt-get install libxcb-icccm4 - sudo apt-get install libxcb-image0 - sudo apt-get install libxcb-keysyms1 - sudo apt-get install libxcb-randr0 - sudo apt-get install libxcb-render-util0 - sudo apt-get install libxcb-xinerama0 - sudo apt-get install libxcb-shape0 - # Needed to work around https://bugreports.qt.io/browse/PYSIDE-1547 - sudo apt-get install libopengl0 + - uses: actions/checkout@v3 + - name: Install Qt dependencies + uses: ./.github/actions/install-qt-support if: matrix.toolkit != 'null' - name: Cache EDM packages uses: actions/cache@v2 @@ -41,7 +28,7 @@ jobs: path: ~/.cache key: ${{ runner.os }}-3.8-${{ matrix.toolkit }}-${{ hashFiles('ci/edmtool.py') }} - name: Setup EDM - uses: enthought/setup-edm-action@v1 + uses: enthought/setup-edm-action@v2 with: edm-version: ${{ env.INSTALL_EDM_VERSION }} - name: Install click to the default EDM environment @@ -52,7 +39,7 @@ jobs: run: edm run -- python ci/edmtool.py flake8 --runtime=3.8 --toolkit=${{ matrix.toolkit }} if: matrix.toolkit == 'null' - name: Run tests - run: xvfb-run --server-args="-screen 0 1024x768x24" edm run -- python ci/edmtool.py test --runtime=3.8 --toolkit=${{ matrix.toolkit }} + run: xvfb-run -a --server-args="-screen 0 1024x768x24" edm run -- python ci/edmtool.py test --runtime=3.8 --toolkit=${{ matrix.toolkit }} # Test against EDM packages on Windows and OSX test-with-edm-38: diff --git a/.github/workflows/test-with-edm.yml b/.github/workflows/test-with-edm.yml index 6ff7e9d98..9fca28791 100644 --- a/.github/workflows/test-with-edm.yml +++ b/.github/workflows/test-with-edm.yml @@ -18,24 +18,9 @@ jobs: toolkit: ['null', 'pyqt5', 'pyside2'] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Install Qt dependencies for Linux - run: | - sudo apt-get update - sudo apt-get install qtbase5-dev - sudo apt-get install qtchooser - sudo apt-get install qt5-qmake - sudo apt-get install qtbase5-dev-tools - sudo apt-get install libegl1 - sudo apt-get install libxkbcommon-x11-0 - sudo apt-get install libglu1-mesa-dev - sudo apt-get install libxcb-icccm4 - sudo apt-get install libxcb-image0 - sudo apt-get install libxcb-keysyms1 - sudo apt-get install libxcb-randr0 - sudo apt-get install libxcb-render-util0 - sudo apt-get install libxcb-xinerama0 - sudo apt-get install libxcb-shape0 + - uses: actions/checkout@v3 + - name: Install Qt dependencies + uses: ./.github/actions/install-qt-support if: matrix.toolkit != 'null' - name: Cache EDM packages uses: actions/cache@v2 @@ -43,7 +28,7 @@ jobs: path: ~/.cache key: ${{ runner.os }}-${{ matrix.toolkit }}-${{ hashFiles('ci/edmtool.py') }} - name: Setup EDM - uses: enthought/setup-edm-action@v1 + uses: enthought/setup-edm-action@v2 with: edm-version: ${{ env.INSTALL_EDM_VERSION }} - name: Install click to the default EDM environment @@ -54,11 +39,9 @@ jobs: run: edm run -- python ci/edmtool.py flake8 --toolkit=${{ matrix.toolkit }} if: matrix.toolkit == 'null' - name: Run tests - uses: GabrielBB/xvfb-action@v1 - with: - # kiva agg requires at least 15-bit color depth. - # The --server-args assumes xvfb-run is called, hence Linux only. - run: --server-args="-screen 0 1024x768x24" edm run -- python ci/edmtool.py test --toolkit=${{ matrix.toolkit }} + # kiva agg requires at least 15-bit color depth. + # The --server-args assumes xvfb-run is called, hence Linux only. + run: xvfb-run -a --server-args="-screen 0 1024x768x24" edm run -- python ci/edmtool.py test --toolkit=${{ matrix.toolkit }} # Test against EDM packages on Windows and OSX test-with-edm: diff --git a/pyproject.toml b/pyproject.toml index 26b1ea674..b1256a319 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["cython", "oldest-supported-numpy", "setuptools<65.2", "wheel"] +requires = ["cython", "oldest-supported-numpy", "setuptools", "wheel"] build-backend = "setuptools.build_meta" [tool.cibuildwheel] From 55ecb1bed6529e8443f2b76f08a0db556a8acc5b Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Thu, 4 May 2023 12:36:12 +0100 Subject: [PATCH 02/21] Don't test with MacOS/EDM/Python 3.8 --- .github/workflows/ets-from-source.yml | 2 +- .github/workflows/test-with-edm-3.8.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ets-from-source.yml b/.github/workflows/ets-from-source.yml index dee382e2a..dd4dfe2b8 100644 --- a/.github/workflows/ets-from-source.yml +++ b/.github/workflows/ets-from-source.yml @@ -46,7 +46,7 @@ jobs: test-ets-source: strategy: matrix: - os: [macos-latest, windows-latest] + os: [windows-latest] toolkit: ['null', 'pyqt5', 'pyside2'] runs-on: ${{ matrix.os }} steps: diff --git a/.github/workflows/test-with-edm-3.8.yml b/.github/workflows/test-with-edm-3.8.yml index 44c810695..544a23e32 100644 --- a/.github/workflows/test-with-edm-3.8.yml +++ b/.github/workflows/test-with-edm-3.8.yml @@ -45,7 +45,7 @@ jobs: test-with-edm-38: strategy: matrix: - os: [macos-latest, windows-latest] + os: [windows-latest] toolkit: ['null', 'pyside6'] runs-on: ${{ matrix.os }} steps: From cdb18b4468146140fe450207694200bc5111cbaf Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Thu, 4 May 2023 12:46:15 +0100 Subject: [PATCH 03/21] Remove EDM tests for Python 3.6 --- .github/workflows/test-with-edm-3.8.yml | 67 ------------------------- .github/workflows/test-with-edm.yml | 30 ++++++----- 2 files changed, 14 insertions(+), 83 deletions(-) delete mode 100644 .github/workflows/test-with-edm-3.8.yml diff --git a/.github/workflows/test-with-edm-3.8.yml b/.github/workflows/test-with-edm-3.8.yml deleted file mode 100644 index 544a23e32..000000000 --- a/.github/workflows/test-with-edm-3.8.yml +++ /dev/null @@ -1,67 +0,0 @@ -# This workflow targets stable released dependencies from EDM. -# Note that some packages may not actually be installed from EDM but from -# PyPI, see ci/edmtool.py implementations. - -name: Test with EDM on Python 3.8 - -on: pull_request - -env: - INSTALL_EDM_VERSION: 3.5.0 - -jobs: - - # Test against EDM packages on Linux - test-edm-linux-38: - strategy: - matrix: - toolkit: ['null', 'pyside6'] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Install Qt dependencies - uses: ./.github/actions/install-qt-support - if: matrix.toolkit != 'null' - - name: Cache EDM packages - uses: actions/cache@v2 - with: - path: ~/.cache - key: ${{ runner.os }}-3.8-${{ matrix.toolkit }}-${{ hashFiles('ci/edmtool.py') }} - - name: Setup EDM - uses: enthought/setup-edm-action@v2 - with: - edm-version: ${{ env.INSTALL_EDM_VERSION }} - - name: Install click to the default EDM environment - run: edm install -y wheel click coverage - - name: Install test environment - run: edm run -- python ci/edmtool.py install --runtime=3.8 --toolkit=${{ matrix.toolkit }} - - name: Flake8 - run: edm run -- python ci/edmtool.py flake8 --runtime=3.8 --toolkit=${{ matrix.toolkit }} - if: matrix.toolkit == 'null' - - name: Run tests - run: xvfb-run -a --server-args="-screen 0 1024x768x24" edm run -- python ci/edmtool.py test --runtime=3.8 --toolkit=${{ matrix.toolkit }} - - # Test against EDM packages on Windows and OSX - test-with-edm-38: - strategy: - matrix: - os: [windows-latest] - toolkit: ['null', 'pyside6'] - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v2 - - name: Cache EDM packages - uses: actions/cache@v2 - with: - path: ~/.cache - key: ${{ runner.os }}-3.8-${{ matrix.toolkit }}-${{ hashFiles('ci/edmtool.py') }} - - name: Setup EDM - uses: enthought/setup-edm-action@v1 - with: - edm-version: ${{ env.INSTALL_EDM_VERSION }} - - name: Install click to the default EDM environment - run: edm install -y wheel click coverage - - name: Install test environment - run: edm run -- python ci/edmtool.py install --runtime=3.8 --toolkit=${{ matrix.toolkit }} - - name: Run tests - run: edm run -- python ci/edmtool.py test --runtime=3.8 --toolkit=${{ matrix.toolkit }} diff --git a/.github/workflows/test-with-edm.yml b/.github/workflows/test-with-edm.yml index 9fca28791..544a23e32 100644 --- a/.github/workflows/test-with-edm.yml +++ b/.github/workflows/test-with-edm.yml @@ -2,20 +2,20 @@ # Note that some packages may not actually be installed from EDM but from # PyPI, see ci/edmtool.py implementations. -name: Test with EDM +name: Test with EDM on Python 3.8 on: pull_request env: - INSTALL_EDM_VERSION: 3.2.3 + INSTALL_EDM_VERSION: 3.5.0 jobs: # Test against EDM packages on Linux - test-edm-linux: + test-edm-linux-38: strategy: matrix: - toolkit: ['null', 'pyqt5', 'pyside2'] + toolkit: ['null', 'pyside6'] runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -26,7 +26,7 @@ jobs: uses: actions/cache@v2 with: path: ~/.cache - key: ${{ runner.os }}-${{ matrix.toolkit }}-${{ hashFiles('ci/edmtool.py') }} + key: ${{ runner.os }}-3.8-${{ matrix.toolkit }}-${{ hashFiles('ci/edmtool.py') }} - name: Setup EDM uses: enthought/setup-edm-action@v2 with: @@ -34,21 +34,19 @@ jobs: - name: Install click to the default EDM environment run: edm install -y wheel click coverage - name: Install test environment - run: edm run -- python ci/edmtool.py install --toolkit=${{ matrix.toolkit }} + run: edm run -- python ci/edmtool.py install --runtime=3.8 --toolkit=${{ matrix.toolkit }} - name: Flake8 - run: edm run -- python ci/edmtool.py flake8 --toolkit=${{ matrix.toolkit }} + run: edm run -- python ci/edmtool.py flake8 --runtime=3.8 --toolkit=${{ matrix.toolkit }} if: matrix.toolkit == 'null' - name: Run tests - # kiva agg requires at least 15-bit color depth. - # The --server-args assumes xvfb-run is called, hence Linux only. - run: xvfb-run -a --server-args="-screen 0 1024x768x24" edm run -- python ci/edmtool.py test --toolkit=${{ matrix.toolkit }} + run: xvfb-run -a --server-args="-screen 0 1024x768x24" edm run -- python ci/edmtool.py test --runtime=3.8 --toolkit=${{ matrix.toolkit }} # Test against EDM packages on Windows and OSX - test-with-edm: + test-with-edm-38: strategy: matrix: - os: [macos-latest, windows-latest] - toolkit: ['null', 'pyqt5', 'pyside2'] + os: [windows-latest] + toolkit: ['null', 'pyside6'] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 @@ -56,7 +54,7 @@ jobs: uses: actions/cache@v2 with: path: ~/.cache - key: ${{ runner.os }}-${{ matrix.toolkit }}-${{ hashFiles('ci/edmtool.py') }} + key: ${{ runner.os }}-3.8-${{ matrix.toolkit }}-${{ hashFiles('ci/edmtool.py') }} - name: Setup EDM uses: enthought/setup-edm-action@v1 with: @@ -64,6 +62,6 @@ jobs: - name: Install click to the default EDM environment run: edm install -y wheel click coverage - name: Install test environment - run: edm run -- python ci/edmtool.py install --toolkit=${{ matrix.toolkit }} + run: edm run -- python ci/edmtool.py install --runtime=3.8 --toolkit=${{ matrix.toolkit }} - name: Run tests - run: edm run -- python ci/edmtool.py test --toolkit=${{ matrix.toolkit }} + run: edm run -- python ci/edmtool.py test --runtime=3.8 --toolkit=${{ matrix.toolkit }} From 912c32e099ebf327973beaa2d00100fd5227364c Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Thu, 4 May 2023 12:46:51 +0100 Subject: [PATCH 04/21] Do tests using pip-based veritual environments. --- .github/workflows/test-with-pip.yml | 72 +++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 .github/workflows/test-with-pip.yml diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml new file mode 100644 index 000000000..d34425244 --- /dev/null +++ b/.github/workflows/test-with-pip.yml @@ -0,0 +1,72 @@ + +# This workflow installs dependencies from main branch + +name: Test with pip + +on: + pull_request: + # Make it possible to manually trigger the workflow + workflow_dispatch: + +jobs: + test-ets: + strategy: + matrix: + os: ['ubuntu-latest', 'macos-latest', 'windows-latest'] + toolkit: ['null', 'pyside6', 'wx'] + python-version: ['3.8', '3.10', '3.11'] + exclude: + # No Wx wheels available for Python 3.11 + - toolkit: 'wx' + python-version: '3.11' + # No Wx wheels available for Python 3.11 + - toolkit: 'wx' + python-version: '3.11' + # No Wx wheels available for ubuntu or macos + - os: 'ubuntu-latest' + toolkit: 'wx' + - os: 'macos-latest' + toolkit: 'wx' + python-version: '3.11' + runs-on: ${{ matrix.os }} + steps: + - name: Check out + uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install Qt dependencies + uses: ./.github/actions/install-qt-support + if: matrix.toolkit != 'wx' && matrix.toolkit != 'null' + - name: Install dependencies for Linux + run: | + # needed for Celiagg + sudo apt-get install libfreetype-dev libharfbuzz-dev + # needed for Cairo + sudo apt-get install libcairo2-dev + if: matrix.os == 'ubuntu-latest' + - name: Install dependencies for Mac + run: | + brew install cairo + if: matrix.os == 'macos-latest' + - name: Install build dependencies + run: | + python -m pip install --upgrade pip wheel + - name: Install local packages + run: pip install . + - name: Sanity check package version + run: pip list + - name: Run chaco test suite (Linux) + env: + PYTHONFAULTHANDLER: 1 + # kiva agg requires at least 15-bit color depth. + run: xvfb-run -a --server-args="-screen 0 1024x768x24" python -m unittest discover -v chaco + if: matrix.os == 'ubuntu-latest' + working-directory: ${{ runner.temp }} + - name: Run enable test suite (not Linux) + env: + PYTHONFAULTHANDLER: 1 + run: python -m unittest discover -v chaci + if: matrix.os != 'ubuntu-latest' + working-directory: ${{ runner.temp }} From 9324530cf989a74da6a9a982ed30f111ebe4d1c6 Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Thu, 4 May 2023 12:48:04 +0100 Subject: [PATCH 05/21] Bump python version used for PyPI builds and releases. --- .github/workflows/release-to-pypi.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-to-pypi.yml b/.github/workflows/release-to-pypi.yml index a7ae32c4e..60a6db449 100644 --- a/.github/workflows/release-to-pypi.yml +++ b/.github/workflows/release-to-pypi.yml @@ -27,7 +27,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: '3.11' - name: Install Python packages needed for wheel build and upload run: python -m pip install twine @@ -54,7 +54,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: '3.11' - name: Install Python packages needed for sdist build and upload run: python -m pip install build twine From 8602ba96070bfa53b6962fd3288e5af168880762 Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Thu, 4 May 2023 12:55:37 +0100 Subject: [PATCH 06/21] Use Enable main at least temporarily --- .github/workflows/test-with-pip.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml index d34425244..54e69b506 100644 --- a/.github/workflows/test-with-pip.yml +++ b/.github/workflows/test-with-pip.yml @@ -53,6 +53,8 @@ jobs: - name: Install build dependencies run: | python -m pip install --upgrade pip wheel + - name: Install local enable main (temporary) + run: pip install --force git+https://github.com/enthought/enable.git - name: Install local packages run: pip install . - name: Sanity check package version From 31c8460dd75c36895686339482f8f02ae56966a4 Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Thu, 4 May 2023 13:12:00 +0100 Subject: [PATCH 07/21] Improve pip install capabilities. --- .github/workflows/test-with-pip.yml | 2 +- chaco/__init__.py | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml index 54e69b506..b3700b8a7 100644 --- a/.github/workflows/test-with-pip.yml +++ b/.github/workflows/test-with-pip.yml @@ -54,7 +54,7 @@ jobs: run: | python -m pip install --upgrade pip wheel - name: Install local enable main (temporary) - run: pip install --force git+https://github.com/enthought/enable.git + run: pip install --force "enable[celiagg,layout,svg] @ git+https://github.com/enthought/enable.git - name: Install local packages run: pip install . - name: Sanity check package version diff --git a/chaco/__init__.py b/chaco/__init__.py index ecbe18c4d..a9ec17a79 100644 --- a/chaco/__init__.py +++ b/chaco/__init__.py @@ -10,11 +10,21 @@ __requires__ = [ - "traits>=6.2.0", "traitsui", "pyface>=7.2.0", "numpy", "enable>=5.2.0" + "traits>=6.2.0", + "traitsui", + "pyface>=7.2.0", + "numpy", + "enable[layout,svg]>=5.2.0" ] __extras_require__ = { "docs": ["enthought-sphinx-theme", "sphinx", "sphinx-copybutton"], - 'examples': ['encore', 'scipy', 'pandas'] + 'examples': ['encore', 'scipy', 'pandas'], + 'pyside2': ['enable[pyside2]'], + 'pyside6': ['enable[pyside6]'], + 'pyqt5': ['enable[pyqt5]'], + 'pyqt6': ['enable[pyqt6]'], + 'wx': ['enable[wx]'], + 'null': [], } From 0ebcb031d461787b221d0345ea4463880db44258 Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Thu, 4 May 2023 13:15:14 +0100 Subject: [PATCH 08/21] Correct quoting --- .github/workflows/test-with-pip.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml index b3700b8a7..b936202a2 100644 --- a/.github/workflows/test-with-pip.yml +++ b/.github/workflows/test-with-pip.yml @@ -54,7 +54,7 @@ jobs: run: | python -m pip install --upgrade pip wheel - name: Install local enable main (temporary) - run: pip install --force "enable[celiagg,layout,svg] @ git+https://github.com/enthought/enable.git + run: pip install --force "enable[celiagg,layout,svg] @ git+https://github.com/enthought/enable.git" - name: Install local packages run: pip install . - name: Sanity check package version From 06d8b8134f0f92632025454156c41d238228f5ac Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Thu, 4 May 2023 13:21:06 +0100 Subject: [PATCH 09/21] Fix typo. --- .github/workflows/test-with-pip.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml index b936202a2..7f0de1c81 100644 --- a/.github/workflows/test-with-pip.yml +++ b/.github/workflows/test-with-pip.yml @@ -69,6 +69,6 @@ jobs: - name: Run enable test suite (not Linux) env: PYTHONFAULTHANDLER: 1 - run: python -m unittest discover -v chaci + run: python -m unittest discover -v chaco if: matrix.os != 'ubuntu-latest' working-directory: ${{ runner.temp }} From 7a51090c71e7a67a6947b0fb86dc6e53cc3c44b4 Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Thu, 4 May 2023 13:35:30 +0100 Subject: [PATCH 10/21] Add tests with some different kiva backends. --- .github/workflows/test-with-pip.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml index 7f0de1c81..271a22937 100644 --- a/.github/workflows/test-with-pip.yml +++ b/.github/workflows/test-with-pip.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: os: ['ubuntu-latest', 'macos-latest', 'windows-latest'] - toolkit: ['null', 'pyside6', 'wx'] + toolkit: ['null.image', 'null.celiagg', 'pyside6', 'wx'] python-version: ['3.8', '3.10', '3.11'] exclude: # No Wx wheels available for Python 3.11 @@ -38,7 +38,7 @@ jobs: python-version: ${{ matrix.python-version }} - name: Install Qt dependencies uses: ./.github/actions/install-qt-support - if: matrix.toolkit != 'wx' && matrix.toolkit != 'null' + if: matrix.toolkit == 'pyside6' - name: Install dependencies for Linux run: | # needed for Celiagg From 5a9032ff9afb975b03d5f9e5adc9cae91d492482 Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Thu, 4 May 2023 13:50:49 +0100 Subject: [PATCH 11/21] Add pandas to env; expand backends. --- .github/workflows/test-with-pip.yml | 7 +++++-- chaco/__init__.py | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml index 271a22937..ac972415c 100644 --- a/.github/workflows/test-with-pip.yml +++ b/.github/workflows/test-with-pip.yml @@ -13,7 +13,8 @@ jobs: strategy: matrix: os: ['ubuntu-latest', 'macos-latest', 'windows-latest'] - toolkit: ['null.image', 'null.celiagg', 'pyside6', 'wx'] + toolkit: ['null', 'pyside6', 'wx'] + kiva-backend: ['image', 'celiagg'] python-version: ['3.8', '3.10', '3.11'] exclude: # No Wx wheels available for Python 3.11 @@ -29,6 +30,8 @@ jobs: toolkit: 'wx' python-version: '3.11' runs-on: ${{ matrix.os }} + env: + ETS_TOOLKIT: ${{ matrix.toolkit }}.${{ matrix.kiva-backend }} steps: - name: Check out uses: actions/checkout@v3 @@ -56,7 +59,7 @@ jobs: - name: Install local enable main (temporary) run: pip install --force "enable[celiagg,layout,svg] @ git+https://github.com/enthought/enable.git" - name: Install local packages - run: pip install . + run: pip install ".[tests,${{ matrix.toolkit }}]" - name: Sanity check package version run: pip list - name: Run chaco test suite (Linux) diff --git a/chaco/__init__.py b/chaco/__init__.py index a9ec17a79..60136063c 100644 --- a/chaco/__init__.py +++ b/chaco/__init__.py @@ -21,6 +21,7 @@ __extras_require__ = { "docs": ["enthought-sphinx-theme", "sphinx", "sphinx-copybutton"], 'examples': ['encore', 'scipy', 'pandas'], + 'tests': ['pandas'], 'pyside2': ['enable[pyside2]'], 'pyside6': ['enable[pyside6]'], 'pyqt5': ['enable[pyqt5]'], From 8cf2cc2cf71ade195eeb1f10f047e966688a4b7d Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Thu, 4 May 2023 14:14:10 +0100 Subject: [PATCH 12/21] Split up pip tests by ETS toolkit. --- .github/workflows/test-with-pip.yml | 109 +++++++++++++++++++++++++++- 1 file changed, 106 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml index ac972415c..67a33109d 100644 --- a/.github/workflows/test-with-pip.yml +++ b/.github/workflows/test-with-pip.yml @@ -9,11 +9,11 @@ on: workflow_dispatch: jobs: - test-ets: + test-qt: strategy: matrix: os: ['ubuntu-latest', 'macos-latest', 'windows-latest'] - toolkit: ['null', 'pyside6', 'wx'] + toolkit: ['pyside6'] kiva-backend: ['image', 'celiagg'] python-version: ['3.8', '3.10', '3.11'] exclude: @@ -31,7 +31,8 @@ jobs: python-version: '3.11' runs-on: ${{ matrix.os }} env: - ETS_TOOLKIT: ${{ matrix.toolkit }}.${{ matrix.kiva-backend }} + ETS_TOOLKIT: qt.${{ matrix.kiva-backend }} + QT_API: ${{ matrix.toolkit }} steps: - name: Check out uses: actions/checkout@v3 @@ -75,3 +76,105 @@ jobs: run: python -m unittest discover -v chaco if: matrix.os != 'ubuntu-latest' working-directory: ${{ runner.temp }} + + test-wx: + strategy: + matrix: + os: ['macos-latest','windows-latest'] + toolkit: ['wx'] + kiva-backend: ['image', 'celiagg'] + python-version: ['3.8', '3.10'] + runs-on: ${{ matrix.os }} + env: + ETS_TOOLKIT: ${{ matrix.toolkit }}.${{ matrix.kiva-backend }} + steps: + - name: Check out + uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies for Linux + run: | + # needed for Celiagg + sudo apt-get install libfreetype-dev libharfbuzz-dev + # needed for Cairo + sudo apt-get install libcairo2-dev + if: matrix.os == 'ubuntu-latest' + - name: Install dependencies for Mac + run: | + brew install cairo + if: matrix.os == 'macos-latest' + - name: Install build dependencies + run: | + python -m pip install --upgrade pip wheel + - name: Install local enable main (temporary) + run: pip install --force "enable[celiagg,layout,svg] @ git+https://github.com/enthought/enable.git" + - name: Install local packages + run: pip install ".[tests,${{ matrix.toolkit }}]" + - name: Sanity check package version + run: pip list + - name: Run chaco test suite (Linux) + env: + PYTHONFAULTHANDLER: 1 + # kiva agg requires at least 15-bit color depth. + run: xvfb-run -a --server-args="-screen 0 1024x768x24" python -m unittest discover -v chaco + if: matrix.os == 'ubuntu-latest' + working-directory: ${{ runner.temp }} + - name: Run enable test suite (not Linux) + env: + PYTHONFAULTHANDLER: 1 + run: python -m unittest discover -v chaco + if: matrix.os != 'ubuntu-latest' + working-directory: ${{ runner.temp }} + + test-null: + strategy: + matrix: + os: ['ubuntu-latest', 'macos-latest', 'windows-latest'] + toolkit: ['null'] + kiva-backend: ['image', 'celiagg'] + python-version: ['3.8', '3.11'] + runs-on: ${{ matrix.os }} + env: + ETS_TOOLKIT: ${{ matrix.toolkit }}.${{ matrix.kiva-backend }} + steps: + - name: Check out + uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies for Linux + run: | + # needed for Celiagg + sudo apt-get install libfreetype-dev libharfbuzz-dev + # needed for Cairo + sudo apt-get install libcairo2-dev + if: matrix.os == 'ubuntu-latest' + - name: Install dependencies for Mac + run: | + brew install cairo + if: matrix.os == 'macos-latest' + - name: Install build dependencies + run: | + python -m pip install --upgrade pip wheel + - name: Install local enable main (temporary) + run: pip install --force "enable[celiagg,layout,svg] @ git+https://github.com/enthought/enable.git" + - name: Install local packages + run: pip install ".[tests,${{ matrix.toolkit }}]" + - name: Sanity check package version + run: pip list + - name: Run chaco test suite (Linux) + env: + PYTHONFAULTHANDLER: 1 + # kiva agg requires at least 15-bit color depth. + run: xvfb-run -a --server-args="-screen 0 1024x768x24" python -m unittest discover -v chaco + if: matrix.os == 'ubuntu-latest' + working-directory: ${{ runner.temp }} + - name: Run enable test suite (not Linux) + env: + PYTHONFAULTHANDLER: 1 + run: python -m unittest discover -v chaco + if: matrix.os != 'ubuntu-latest' + working-directory: ${{ runner.temp }} From 89b54c0c863cd445da5daddd83df9f1dc67bf16a Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Thu, 4 May 2023 15:00:31 +0100 Subject: [PATCH 13/21] Use "qt4" for now. --- .github/workflows/test-with-pip.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml index 67a33109d..ef8fce672 100644 --- a/.github/workflows/test-with-pip.yml +++ b/.github/workflows/test-with-pip.yml @@ -31,7 +31,7 @@ jobs: python-version: '3.11' runs-on: ${{ matrix.os }} env: - ETS_TOOLKIT: qt.${{ matrix.kiva-backend }} + ETS_TOOLKIT: qt4.${{ matrix.kiva-backend }} QT_API: ${{ matrix.toolkit }} steps: - name: Check out From c1159bd123cf26f4e4a11d8c7f8a002520899664 Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Thu, 4 May 2023 15:51:23 +0100 Subject: [PATCH 14/21] Don't do celiagg on gui backends for now Getting test failures with rendering. --- .github/workflows/test-with-pip.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml index ef8fce672..e60d0e9d6 100644 --- a/.github/workflows/test-with-pip.yml +++ b/.github/workflows/test-with-pip.yml @@ -14,7 +14,7 @@ jobs: matrix: os: ['ubuntu-latest', 'macos-latest', 'windows-latest'] toolkit: ['pyside6'] - kiva-backend: ['image', 'celiagg'] + kiva-backend: ['image'] python-version: ['3.8', '3.10', '3.11'] exclude: # No Wx wheels available for Python 3.11 @@ -82,7 +82,7 @@ jobs: matrix: os: ['macos-latest','windows-latest'] toolkit: ['wx'] - kiva-backend: ['image', 'celiagg'] + kiva-backend: ['image'] python-version: ['3.8', '3.10'] runs-on: ${{ matrix.os }} env: @@ -133,7 +133,7 @@ jobs: matrix: os: ['ubuntu-latest', 'macos-latest', 'windows-latest'] toolkit: ['null'] - kiva-backend: ['image', 'celiagg'] + kiva-backend: ['image', 'celiagg', 'svg', 'pdf'] python-version: ['3.8', '3.11'] runs-on: ${{ matrix.os }} env: From 224b9b4d809cd2c510c071e96fad65a2f70fe75e Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Thu, 4 May 2023 16:04:23 +0100 Subject: [PATCH 15/21] Exclude some failing matrix cases; install pdf requirements. --- .github/workflows/test-with-pip.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml index e60d0e9d6..605f28e5b 100644 --- a/.github/workflows/test-with-pip.yml +++ b/.github/workflows/test-with-pip.yml @@ -80,7 +80,7 @@ jobs: test-wx: strategy: matrix: - os: ['macos-latest','windows-latest'] + os: ['windows-latest'] toolkit: ['wx'] kiva-backend: ['image'] python-version: ['3.8', '3.10'] @@ -133,7 +133,7 @@ jobs: matrix: os: ['ubuntu-latest', 'macos-latest', 'windows-latest'] toolkit: ['null'] - kiva-backend: ['image', 'celiagg', 'svg', 'pdf'] + kiva-backend: ['image', 'celiagg', 'pdf'] python-version: ['3.8', '3.11'] runs-on: ${{ matrix.os }} env: @@ -160,7 +160,7 @@ jobs: run: | python -m pip install --upgrade pip wheel - name: Install local enable main (temporary) - run: pip install --force "enable[celiagg,layout,svg] @ git+https://github.com/enthought/enable.git" + run: pip install --force "enable[celiagg,layout,svg,pdf] @ git+https://github.com/enthought/enable.git" - name: Install local packages run: pip install ".[tests,${{ matrix.toolkit }}]" - name: Sanity check package version From 5059e3211facea6e82fb5b46b305670133b3fd6c Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Fri, 5 May 2023 14:57:41 +0100 Subject: [PATCH 16/21] Clear gc before drawing to ensure similar base state. --- chaco/tests/test_border.py | 1 + 1 file changed, 1 insertion(+) diff --git a/chaco/tests/test_border.py b/chaco/tests/test_border.py index 59a4a46e0..0d22f0fc3 100644 --- a/chaco/tests/test_border.py +++ b/chaco/tests/test_border.py @@ -35,6 +35,7 @@ def test_draw_border_simple(self): container = Plot(padding=1, border_visible=True) container.outer_bounds = list(size) gc = PlotGraphicsContext(size) + gc.clear() gc.render_component(container) desired = array( From 67e03e5cdcf9a0542980e47f6fa8d4f4c5b4a053 Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Fri, 5 May 2023 16:06:47 +0100 Subject: [PATCH 17/21] Refine backends being tested. --- .github/workflows/test-with-pip.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml index 605f28e5b..de834e309 100644 --- a/.github/workflows/test-with-pip.yml +++ b/.github/workflows/test-with-pip.yml @@ -133,8 +133,17 @@ jobs: matrix: os: ['ubuntu-latest', 'macos-latest', 'windows-latest'] toolkit: ['null'] - kiva-backend: ['image', 'celiagg', 'pdf'] + kiva-backend: ['image', 'celiagg', 'cairo'] python-version: ['3.8', '3.11'] + include: + - os: 'macos-latest' + toolkit: 'null' + kiva-backend: 'quartz' + python-version: '3.8' + - os: 'macos-latest' + toolkit: 'null' + kiva-backend: 'quartz' + python-version: '3.11' runs-on: ${{ matrix.os }} env: ETS_TOOLKIT: ${{ matrix.toolkit }}.${{ matrix.kiva-backend }} @@ -160,7 +169,7 @@ jobs: run: | python -m pip install --upgrade pip wheel - name: Install local enable main (temporary) - run: pip install --force "enable[celiagg,layout,svg,pdf] @ git+https://github.com/enthought/enable.git" + run: pip install --force "enable[celiagg,cairo,layout,svg] @ git+https://github.com/enthought/enable.git" - name: Install local packages run: pip install ".[tests,${{ matrix.toolkit }}]" - name: Sanity check package version From 565fd75d2f62056b7ac7f1e0464fa7571a85e2ff Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Fri, 5 May 2023 16:41:41 +0100 Subject: [PATCH 18/21] More adjustements to matrix; don't fail fast so we can see where we are. --- .github/workflows/test-with-pip.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml index de834e309..f70cd8116 100644 --- a/.github/workflows/test-with-pip.yml +++ b/.github/workflows/test-with-pip.yml @@ -11,6 +11,7 @@ on: jobs: test-qt: strategy: + fail-fast: false matrix: os: ['ubuntu-latest', 'macos-latest', 'windows-latest'] toolkit: ['pyside6'] @@ -79,6 +80,7 @@ jobs: test-wx: strategy: + fail-fast: false matrix: os: ['windows-latest'] toolkit: ['wx'] @@ -130,10 +132,11 @@ jobs: test-null: strategy: + fail-fast: false matrix: os: ['ubuntu-latest', 'macos-latest', 'windows-latest'] toolkit: ['null'] - kiva-backend: ['image', 'celiagg', 'cairo'] + kiva-backend: ['image', 'celiagg'] python-version: ['3.8', '3.11'] include: - os: 'macos-latest' From c22990e6cdefa515ea0b83e85290713ebe89d61a Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Tue, 9 May 2023 12:30:31 +0100 Subject: [PATCH 19/21] Remove quartz tests for now (needs ability to access data in a consistent way). --- .github/workflows/test-with-pip.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml index f70cd8116..ca6ed652d 100644 --- a/.github/workflows/test-with-pip.yml +++ b/.github/workflows/test-with-pip.yml @@ -138,15 +138,6 @@ jobs: toolkit: ['null'] kiva-backend: ['image', 'celiagg'] python-version: ['3.8', '3.11'] - include: - - os: 'macos-latest' - toolkit: 'null' - kiva-backend: 'quartz' - python-version: '3.8' - - os: 'macos-latest' - toolkit: 'null' - kiva-backend: 'quartz' - python-version: '3.11' runs-on: ${{ matrix.os }} env: ETS_TOOLKIT: ${{ matrix.toolkit }}.${{ matrix.kiva-backend }} From 2914761a82f208cabff0b45614bd11ab2609b403 Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Tue, 9 May 2023 14:01:15 +0100 Subject: [PATCH 20/21] Add tests for PyQt5 --- .github/workflows/test-with-pip.yml | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml index ca6ed652d..276749938 100644 --- a/.github/workflows/test-with-pip.yml +++ b/.github/workflows/test-with-pip.yml @@ -14,21 +14,12 @@ jobs: fail-fast: false matrix: os: ['ubuntu-latest', 'macos-latest', 'windows-latest'] - toolkit: ['pyside6'] + toolkit: ['pyqt5', 'pyside6'] kiva-backend: ['image'] python-version: ['3.8', '3.10', '3.11'] exclude: - # No Wx wheels available for Python 3.11 - - toolkit: 'wx' - python-version: '3.11' - # No Wx wheels available for Python 3.11 - - toolkit: 'wx' - python-version: '3.11' - # No Wx wheels available for ubuntu or macos - - os: 'ubuntu-latest' - toolkit: 'wx' - - os: 'macos-latest' - toolkit: 'wx' + # No PyQt5 wheels available for Python 3.11 + - toolkit: 'pyqt5' python-version: '3.11' runs-on: ${{ matrix.os }} env: From 48d5dc0ddb4afd8b6e8f0873c4d2a466070d8901 Mon Sep 17 00:00:00 2001 From: Corran Webster Date: Tue, 9 May 2023 14:28:10 +0100 Subject: [PATCH 21/21] Remove pyqt5 for now; more linux + pyside6 python versions --- .github/workflows/test-with-pip.yml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test-with-pip.yml b/.github/workflows/test-with-pip.yml index 276749938..0c4d92bb9 100644 --- a/.github/workflows/test-with-pip.yml +++ b/.github/workflows/test-with-pip.yml @@ -14,13 +14,19 @@ jobs: fail-fast: false matrix: os: ['ubuntu-latest', 'macos-latest', 'windows-latest'] - toolkit: ['pyqt5', 'pyside6'] + toolkit: ['pyside6'] kiva-backend: ['image'] - python-version: ['3.8', '3.10', '3.11'] - exclude: - # No PyQt5 wheels available for Python 3.11 - - toolkit: 'pyqt5' - python-version: '3.11' + python-version: ['3.8', '3.11'] + include: + # Do more Python versions on linux + - os: 'ubuntu-latest' + toolkit: 'pyside6' + kiva-backend: 'image' + python-version: '3.9' + - os: 'ubuntu-latest' + toolkit: 'pyside6' + kiva-backend: 'image' + python-version: '3.10' runs-on: ${{ matrix.os }} env: ETS_TOOLKIT: qt4.${{ matrix.kiva-backend }}