diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9d299175..d94a28da 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,13 +15,13 @@ jobs: check-manifest: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - run: pipx run check-manifest pyright: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - uses: astral-sh/setup-uv@v7 with: enable-cache: true @@ -46,8 +46,33 @@ jobs: - os: macos-latest gui: wxpython python-version: "3.10" + # FIXME: Prone to segfaults + - os: macos-latest + gui: pyside + canvas: vispy + # FIXME: Prone to segfaults + - os: macos-latest + gui: pyqt + canvas: vispy include: + # Check macos+vispy + - os: macos-15 + python-version: "3.13" + gui: pyside + canvas: vispy + - os: macos-15 + python-version: "3.13" + gui: pyqt + canvas: vispy + - os: macos-15 + python-version: "3.10" + gui: pyside + canvas: vispy + - os: macos-15 + python-version: "3.10" + gui: pyqt + canvas: vispy # spot-check a few more python versions - os: ubuntu-latest python-version: "3.12" @@ -71,7 +96,7 @@ jobs: canvas: pygfx steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - uses: astral-sh/setup-uv@v7 with: enable-cache: true @@ -105,7 +130,7 @@ jobs: gui: [pyqt, jupyter] canvas: [vispy, pygfx] steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - uses: astral-sh/setup-uv@v7 with: enable-cache: true @@ -130,7 +155,7 @@ jobs: python-version: ["3.10", "3.13"] steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - uses: astral-sh/setup-uv@v7 with: enable-cache: true @@ -157,11 +182,11 @@ jobs: # make sure we can build docs without error test-docs: - runs-on: macos-latest # nicer screenshots + runs-on: macos-15 # nicer screenshots env: UV_PYTHON: "3.13" steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 - uses: astral-sh/setup-uv@v7 - name: 📚 Build docs run: uv run --group docs mkdocs build --strict @@ -181,7 +206,7 @@ jobs: contents: write steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 with: fetch-depth: 0 @@ -198,7 +223,7 @@ jobs: - name: 🚢 Publish to PyPI uses: pypa/gh-action-pypi-publish@release/v1 - - uses: softprops/action-gh-release@v2 + - uses: softprops/action-gh-release@v3 with: generate_release_notes: true files: "./dist/*" diff --git a/.github/workflows/deploy_docs.yml b/.github/workflows/deploy_docs.yml index 09d0f109..d60f4e5f 100644 --- a/.github/workflows/deploy_docs.yml +++ b/.github/workflows/deploy_docs.yml @@ -11,10 +11,10 @@ permissions: jobs: deploy: - runs-on: macos-latest # nicer screenshots + runs-on: macos-15 # nicer screenshots if: github.repository == 'pyapp-kit/ndv' steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 with: fetch-depth: 0 - uses: astral-sh/setup-uv@v7 diff --git a/pyproject.toml b/pyproject.toml index a6c85b54..e5cd1180 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -78,6 +78,8 @@ array-libs = [ "aiohttp>=3.11.11", "dask[array]>=2024.8.0", "jax[cpu]>=0.4.30", + # TODO: numba<=0.65 capped numpy<2.5 for some reason. When numba>0.65 ships, remove this pin + "numpy<2.5", "pooch>=1.8.2", "pyopencl>=2025.1", "pyopencl[pocl]>=2025.1 ; sys_platform == 'linux'", @@ -219,6 +221,8 @@ filterwarnings = [ # unsolved python 3.10 warning on shutdown, either xarray or dask "ignore:unclosed transport:ResourceWarning", "ignore:Jupyter is migrating its paths", + # See https://github.com/pygfx/pygfx/pull/1306 and https://github.com/vispy/vispy/pull/2757 + "ignore:Setting the shape on a NumPy array has been deprecated in NumPy 2.5:DeprecationWarning:pygfx.*|vispy.*", ] markers = ["allow_leaks: mark test to allow widget leaks"] diff --git a/src/ndv/data.py b/src/ndv/data.py index d3d03ef6..751478a8 100644 --- a/src/ndv/data.py +++ b/src/ndv/data.py @@ -28,7 +28,7 @@ def nd_sine_wave( half_per = base_frequency * np.pi x = np.linspace(-half_per, half_per, nx) y = np.linspace(-half_per, half_per, ny) - y, x = np.meshgrid(y, x) + yy, xx = np.meshgrid(y, x) # Iterate through each parameter in the higher dimensions for phase_idx in range(phase_dim): @@ -41,7 +41,7 @@ def nd_sine_wave( # Calculate angle angle = np.pi / angle_dim * angle_idx # Rotate x and y coordinates - xr = np.cos(angle) * x - np.sin(angle) * y + xr = np.cos(angle) * xx - np.sin(angle) * yy # Compute the sine wave sine_wave = (amplitude * 0.5) * np.sin(frequency * xr + phase)