%global pypi_name fury Name: python-%{pypi_name} Version: 0.12.0 Release: 5%{?dist} Summary: Free Unified Rendering in Python License: BSD-3-Clause URL: https://fury.gl Source0: %{pypi_source %{pypi_name}} # Relax the conservative vtk<9.4.0 cap so the package installs on Fedora's # vtk 9.6.x. Verified functionally against VTK 9.6.2 (see %%check): a scene # with a sphere actor renders offscreen to a non-blank image. Candidate for # an upstream PR. Patch0: fury-vtk-cap.patch BuildArch: noarch BuildRequires: python3-devel BuildRequires: python3-hatchling BuildRequires: python3-hatch-vcs BuildRequires: python3-pip BuildRequires: python3-wheel BuildRequires: python3-numpy BuildRequires: python3-scipy BuildRequires: python3-vtk BuildRequires: python3-pillow BuildRequires: python3-pygltflib BuildRequires: python3-lazy-loader BuildRequires: python3-aiohttp BuildRequires: python3-packaging # For the functional offscreen-render %%check. BuildRequires: mesa-compat-libOSMesa BuildRequires: mesa-dri-drivers %description FURY is a free and open-source software library for scientific visualization and 3D animations in Python. %package -n python3-%{pypi_name} Summary: %{summary} Requires: python3-numpy Requires: python3-scipy Requires: python3-vtk Requires: python3-pillow Requires: python3-pygltflib Requires: python3-lazy-loader Requires: python3-aiohttp Requires: python3-packaging %description -n python3-%{pypi_name} FURY is a free and open-source software library for scientific visualization and 3D animations in Python. %prep %autosetup -p1 -n %{pypi_name}-%{version} %build %pyproject_wheel %install %pyproject_install %pyproject_save_files fury %check %pyproject_check_import -e '*tests*' # Functional render smoke: proves the relaxed vtk cap is sound, not merely # importable -- build a scene with a sphere actor, snapshot it offscreen and # assert the image is not blank. Gated on vtk >= 9.4 because that is exactly # what the relaxation covers; below 9.4 the build sits inside upstream's own # supported range, so there is no relaxed-cap claim to prove. (F43 ships vtk # 9.2.6, whose offscreen GL aborts in the builder container.) # LIBGL_ALWAYS_SOFTWARE/GALLIUM_DRIVER force software rendering; no-ops where # the default already works. LIBGL_ALWAYS_SOFTWARE=1 GALLIUM_DRIVER=llvmpipe \ PYTHONPATH=%{buildroot}%{python3_sitelib} %{python3} -c "import vtk v = tuple(int(x) for x in vtk.vtkVersion.GetVTKVersion().split('.')[:2]) if v < (9, 4): print('fury render check skipped: vtk %d.%d is inside upstream cap' % v) else: import numpy as np from fury import window, actor sc = window.Scene() sc.add(actor.sphere(centers=np.zeros((1, 3)), colors=np.array([[1.0, 0.0, 0.0]]), radii=1.0)) arr = window.snapshot(sc, size=(200, 200), offscreen=True) assert (arr.sum(axis=2) > 0).sum() > 100, 'offscreen render produced a blank image' print('fury offscreen render OK under vtk', vtk.vtkVersion.GetVTKVersion())" %files -n python3-%{pypi_name} -f %{pyproject_files} %license LICENSE %doc README.md %changelog * Sat Sep 12 2026 Morgan Hough - 0.12.0-5 - Reconcile git with the repo. 0.12.0-3 and -4 existed only as SRPMs uploaded from fedora-skullcandy-display and were never committed, so main still carried a spec that could not build at all. This folds their content in; -5 supersedes the -4 currently published. - BuildRequires was python3-setuptools, but the upstream backend is hatchling/hatch-vcs, so %%build failed with BackendUnavailable. - lazy-loader, aiohttp and packaging are declared in upstream's pyproject.toml but were missing from the spec; %%check failed on ModuleNotFoundError. - Relax the upstream vtk<9.4.0 cap (Patch0). The generated RPM dep was (python3.Xdist(vtk) < 9.4~~), unsatisfiable against this COPR's vtk, so python3-fury built but could not be installed at all. Verified by rendering a sphere actor offscreen under vtk 9.6.2; %%check now enforces it, gated on vtk >= 9.4 because F43's 9.2.6 aborts on offscreen GL in the builder. - Exclude bundled *tests* from %%pyproject_check_import: they import pytest, which is not in the buildroot. * Sun Aug 23 2026 Morgan Hough - 0.12.0-2 - Rebuild against VTK 9.7.0. VTK here installs unversioned sonames (libvtk*.so.1), so 9.7 replaces 9.6 in place and every consumer must be rebuilt or it fails at runtime with undefined symbols. * Wed Feb 25 2026 Morgan Hough - 0.12.0-1 - Initial package for dipy ecosystem