Name: python-napari-openflexure Version: 0.2.0 Release: 2%{?dist} Summary: Plugin to control an OpenFlexure microscope from napari # New plugin written for this COPR: Morgan's own, and there is no upstream # project -- public or otherwise. The source tree lives on fedora-legion-nvidia. # # Source0 was a bare filename, which only ever worked for an uploaded SRPM. This # package is source_type "scm" (rpkg), so COPR clones this repo and rpkg has no # URL to fetch and no lookaside to fall back on: the next rebuild would have # died at the SRPM stage with "Bad file: napari-openflexure-0.2.0.tar.gz: No # such file or directory". Point it at this project's own COPR dist-git # lookaside, which holds the exact sdist the 0.2.0-1 build uploaded. # # Also mirrored in gitlab.com/morgan.hough/neurofedora-lookaside, but that repo # is currently PRIVATE -- /-/raw/ redirects anonymous fetches to the sign-in # page -- so it cannot serve as a Source until its visibility is flipped. # # Proper fix: push the source to a real gitlab.com/morgan.hough/napari-openflexure # project and make Source0 a tag archive URL. %global copr_lookaside https://copr-dist-git.fedorainfracloud.org/repo/pkgs/mhough/neurofedora/%{name} %global sdist napari-openflexure-%{version}.tar.gz License: BSD-3-Clause URL: https://gitlab.com/morgan.hough/neurofedora Source0: %{copr_lookaside}/%{sdist}/md5/52870f43443c6f58f2998915e25136cd/%{sdist} BuildArch: noarch BuildRequires: python3-devel BuildRequires: pyproject-rpm-macros # napari + magicgui import a Qt binding; needed for the %check import. BuildRequires: python3-pyqt6 %global _description %{expand: napari-openflexure is a napari plugin that adds an OpenFlexure microscope control dock widget: connect by host or auto-discover over mDNS, capture full-resolution images into a napari image layer, jog the stage in X/Y/Z, and raster a whole-slide mosaic scan. It is a thin wrapper around openflexure-microscope-client.} %description %{_description} %package -n python3-napari-openflexure Summary: %{summary} %description -n python3-napari-openflexure %{_description} %prep %autosetup -n napari-openflexure-%{version} %generate_buildrequires %pyproject_buildrequires %build %pyproject_wheel %install %pyproject_install %pyproject_save_files napari_openflexure %check export QT_QPA_PLATFORM=offscreen %pyproject_check_import %files -n python3-napari-openflexure -f %{pyproject_files} %license LICENSE %doc README.md %changelog * Sun Sep 21 2026 Morgan Hough - 0.2.0-2 - Source0: replace the bare tarball filename with a fetchable URL. The package builds from git via rpkg, where a bare filename has nothing behind it, so the next rebuild would have failed at the SRPM stage. Now fetched from this project's COPR dist-git lookaside (md5-addressed, byte-identical to the sdist 0.2.0-1 uploaded). Removed from ci/lookaside-allowlist.txt accordingly. * Sat Jul 18 2026 Morgan Hough - 0.2.0-1 - Add whole-slide mosaic scanning. Rasters an NxN snake grid over the slide, using the camera_stage_mapping image_to_stage_displacement matrix to convert a (overlapped) field-of-view pixel step into the stage move that produces it, so tiles land on a regular pixel grid. Two modes: full-res (one image layer per tile, translated into place -> a zoomable mosaic) and overview (fast preview-stream tiles painted into a single slide_overview canvas -> a cheap whole-slide map). Runs in a napari thread_worker yielding tiles to the GUI thread, optionally autofocuses first, and always returns the stage home. - Add a full-resolution capture path: capture_image only returns the low-res preview stream, so trigger a temporary gallery capture, download its JPEG and delete it so the microscope gallery is not left cluttered. Exposed as a "Full resolution" toggle. - Declare the requests and pillow dependencies the full-res download needs (previously undeclared; %%pyproject_check_import would fail without them). * Wed Jun 24 2026 Morgan Hough - 0.1.1-1 - Fix the dock widget failing to open from the Plugins menu: napari only injects the active viewer when the widget __init__ parameter is named napari_viewer or annotated with the Viewer type. Rename the bare `viewer` parameter to `napari_viewer` (and annotate it) so OpenFlexureWidget instantiates correctly. Caught by the napari-smoke.sh dock-widget instantiation check. * Mon Jun 22 2026 Morgan Hough - 0.1.0-1 - Initial package: napari-openflexure 0.1.0 — the napari<->OpenFlexure connector (new plugin; none exists upstream). Completes the napari + OpenFlexure chain.