Skip to content

Scheduled weekly dependency update for week 52 #667

Scheduled weekly dependency update for week 52

Scheduled weekly dependency update for week 52 #667

Workflow file for this run

name: Pull Request CI
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
workflow_dispatch:
pull_request:
paths:
- requirements-test-libraries.txt
env:
# Colored pytest output on CI despite not having a tty
FORCE_COLOR: 1
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
pyinstaller: ["https://github.com/pyinstaller/pyinstaller/archive/develop.zip"]
os: ["macos-13", "macos-14", "ubuntu-22.04", "windows-latest"]
fail-fast: false
env:
# Rebuild bootloader when installing PyInstaller from develop branch
PYINSTALLER_COMPILE_BOOTLOADER: 1
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Limit dependencies to only new/changed libraries.
if: "${{ github.event.pull_request }}"
shell: bash
run: |
git fetch origin ${{ github.base_ref }}
set +e
# NOTE: we need to be compatible with both GNU diff and Apple/FreeBSD diff
diff \
<(git show origin/${{ github.base_ref }}:requirements-test-libraries.txt) \
<(git show HEAD:requirements-test-libraries.txt) \
| grep -E "^>" | sed "s/^> //" \
> requirements-test-libraries.txt
set -e
echo '-r requirements-test.txt' >> requirements-test-libraries.txt
cat requirements-test-libraries.txt
- name: Set up .NET Core for pythonnet tests
uses: actions/setup-dotnet@v4
with:
dotnet-version: '6.x'
# Install MariaDB Connector/C from official MariaDB Community Server
# repository. The version shipped with ubuntu-20.04 is too old for
# the "mariadb" python package.
- name: Install MariaDB Connector/C
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get update
sudo apt-get install -y wget apt-transport-https
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
echo "ceaa5bd124c4d10a892c384e201bb6e0910d370ebce235306d2e4b860ed36560 mariadb_repo_setup" | sha256sum -c -
chmod +x mariadb_repo_setup
sudo ./mariadb_repo_setup
sudo apt-get install -y libmariadb3 libmariadb-dev
- name: Install apt dependencies
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get update
# Set up a virtual screen (for GUI libraries and pynput).
sudo apt-get install libxcb-xkb-dev xvfb
Xvfb :99 & echo "DISPLAY=:99" >> $GITHUB_ENV
# Install PyQt5 (qtmodern) dependencies.
sudo apt-get install -y libxcb-image0 libxcb-keysyms1 libxcb-render-util0 \
libxkbcommon-x11-0 libxcb-icccm4 libxcb1 openssl \
libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev \
libxcb-shape0-dev libxcb-xkb-dev libopengl0 libegl1 \
libpulse0 libpulse-mainloop-glib0
# Install cairo dependencies.
sudo apt-get install -y libcairo2
# Install libdiscid (dependency of discid python package).
sudo apt-get install -y libdiscid0
# These are dependencies of gmsh
sudo apt-get install -y libglu1 libgl1 libxrender1 libxcursor1 libxft2 \
libxinerama1 libgomp1
# Required by PyGObject (dependency of toga/toga-gtk)
sudo apt-get install -y gir1.2-gtk-3.0 libgirepository1.0-dev
- name: Install brew dependencies
if: startsWith(matrix.os, 'macos')
run: |
# `pkg-config` is deprecated and superseded by `pkgconf`, but it is still pre-installed on the GitHub Actions
# runner. This leads to `brew link` errors when `pkgconf` is installed as part of dependencies. So for now,
# manually remove `pkg-config` (and specifically, the problematic `[email protected]`).
brew uninstall pkg-config || :
brew uninstall [email protected] || :
# Install cairo dependencies.
brew install cairo
# Install pango dependencies (weasyprint hook).
brew install pango
# Install libdiscid (dependency of discid python package).
brew install libdiscid
# Install lsl library for pylsl
brew install labstreaminglayer/tap/lsl
# This one is required by eccodes (binary wheels with bundled eccodes
# library are provided only for macOS 13+).
brew install eccodes
- name: Install dependencies
shell: bash
run: |
# Upgrade to the latest pip.
python -m pip install -U pip "setuptools<71.0.0" wheel
# Install hooks-contrib
pip install -e .
# Install test libraries
pip install --prefer-binary -r requirements-test-libraries.txt
# Additional implied dependencies of test libraries
# pyqtgraph requires Qt bindings - use PyQt5
pip show -qq pyqtgraph && pip install --prefer-binary PyQt5
# NOTE: specify minimum allowed version for sudachidict-* packages, to prevent pip from installing invalid
# SudachiDict_full-0.0.0-py3-none-any.whl due to --prefer-binary switch used with pip install...
pip show -qq sudachipy && pip install --prefer-binary "sudachidict-small>=20230927" "sudachidict-core>=20230927" "sudachidict-full>=20230927"
# pythainlp requires python-crfsuite, but fails to declare it as a requirement.
pip show -qq pythainlp && pip install --prefer-binary python-crfsuite
# tests for various trame-* packages require base trame package as well
pip show -qq trame-client trame-code trame-components trame-datagrid trame-deckgl trame-formkit trame-grid-layout trame-iframe trame-keycloak trame-leaflet trame-markdown trame-matplotlib trame-mesh-streamer trame-plotly trame-pvui trame-quasar trame-rca trame-router trame-server trame-simput trame-tauri trame-tweakpane trame-vega trame-vtk trame-vtk3d trame-vtklocal trame-vuetify trame-xterm && pip install --prefer-binary trame
pip show -qq trame-vtk && pip install --prefer-binary vtk pyvista nest-asyncio trame-vuetify
pip show -qq trame-mesh-streamer && pip install --prefer-binary vtk
# test_xarray_chunk requires dask in addition to xarray
pip show -qq xarray && pip install --prefer-binary dask
# Install PyInstaller
pip install ${{ matrix.pyinstaller }}
- name: Run tests
run: pytest -v
# Conditionally enable slow tests, so that they are ran only if
# their corresponding packages are explicitly installed but not
# if they are installed as dependencies of some other package.
- name: Check if slow tests are required (scikit-learn)
id: check-scikit-learn
shell: bash
run: |
grep -E "scikit-learn" requirements-test-libraries.txt && echo "AVAILABLE=yes" >> $GITHUB_OUTPUT || echo "AVAILABLE=no" >> $GITHUB_OUTPUT
- name: Run slow tests (scikit-learn)
if: ${{ steps.check-scikit-learn.outputs.AVAILABLE == 'yes' }}
run: pytest -v -m slow -k sklearn
- name: Check if slow tests are required (scikit-image)
id: check-scikit-image
shell: bash
run: |
grep -E "scikit-image" requirements-test-libraries.txt && echo "AVAILABLE=yes" >> $GITHUB_OUTPUT || echo "AVAILABLE=no" >> $GITHUB_OUTPUT
- name: Run slow tests (scikit-image)
if: ${{ steps.check-scikit-image.outputs.AVAILABLE == 'yes' }}
run: pytest -v -m slow -k skimage