diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8e13e01..1415ef4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,7 @@ jobs: - name: "Set up Python" uses: "actions/setup-python@v4" with: - python-version: "3.9" + python-version: "3.10" - name: "Install build tool" run: "pip install --user build" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2244163..6e65446 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,14 +9,16 @@ jobs: unit-test-and-typecheck: runs-on: "ubuntu-latest" strategy: + fail-fast: false matrix: python-version: + - "3.13" + - "3.12" - "3.11" - "3.10" - - "3.9" pyqt-dependency: - - "PyQt6" - - "PySide6" + - "PyQt" + - "PySide" steps: - uses: "actions/checkout@v3" @@ -30,10 +32,10 @@ jobs: run: | # Project dependencies from pyproject.toml # NOTE: Also builds viscm. How do we avoid this? - pip install . + pip install .[${{ matrix.pyqt-dependency }}] # Test dependencies - pip install pytest pytest-cov pytest-qt pytest-xvfb ${{ matrix.pyqt-dependency }} + pip install pytest pytest-cov pytest-qt pytest-xvfb # pytest-qt CI dependencies: https://pytest-qt.readthedocs.io/en/latest/troubleshooting.html#github-actions sudo apt update sudo apt install -y \ @@ -41,6 +43,8 @@ jobs: libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0 x11-utils \ libxcb-cursor0 + - run: pip list + - name: "Run tests" run: "make test" env: diff --git a/README.rst b/README.rst index 90e5d3e..6e098e4 100644 --- a/README.rst +++ b/README.rst @@ -14,7 +14,7 @@ Contact: Nathaniel J. Smith and Stéfan van der Walt Dependencies: - * Python 3.9+ + * Python 3.10+ * `colorspacious `_ 1.1+ * Matplotlib 3.5+ * NumPy 1.22+ diff --git a/pyproject.toml b/pyproject.toml index f5cb284..7408b26 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,12 +15,12 @@ classifiers = [ "Programming Language :: Python :: 3", ] -requires-python = "~=3.9" +requires-python = ">=3.10" dependencies = [ - "numpy ~=1.22", - "matplotlib ~=3.5", - "colorspacious ~=1.1", - "scipy ~=1.8", + "numpy >=1.22", + "matplotlib >=3.5", + "colorspacious >=1.1", + "scipy >=1.8", ] [project.optional-dependencies] @@ -51,7 +51,7 @@ package-data = {viscm = ["examples/*"]} [tool.mypy] -python_version = "3.9" +python_version = "3.10" # These libraries don't have type stubs. Mypy will see them as `Any` and not # throw an [import] error. diff --git a/viscm/bezierbuilder/__init__.py b/viscm/bezierbuilder/__init__.py index cce4e21..d245047 100644 --- a/viscm/bezierbuilder/__init__.py +++ b/viscm/bezierbuilder/__init__.py @@ -26,7 +26,7 @@ """ import numpy as np -from matplotlib.backends.qt_compat import QtCore +from matplotlib.backends.qt_compat import QtCore # type: ignore [attr-defined] from matplotlib.lines import Line2D from viscm.bezierbuilder.curve import curve_method diff --git a/viscm/gui.py b/viscm/gui.py index e527ae3..0fd5cc9 100644 --- a/viscm/gui.py +++ b/viscm/gui.py @@ -26,7 +26,11 @@ # matplotlib.rcParams['backend'] = "QtAgg" # Do this first before any other matplotlib imports, to force matplotlib to # use a Qt backend -from matplotlib.backends.qt_compat import QtCore, QtGui, QtWidgets +from matplotlib.backends.qt_compat import ( # type: ignore [attr-defined] + QtCore, + QtGui, + QtWidgets, +) from matplotlib.colors import ListedColormap from matplotlib.gridspec import GridSpec