napari 0.5.5#
Thu, Dec 12, 2024
We’re happy to announce the release of napari 0.5.5! (You might have noticed it’s been a hot minute since our last release — the team has been busy on the conference circuit (watch our talk at PyConAU!), defending their PhDs, and more! We are now back to our regularly-scheduled programming. 😂
napari is a fast, interactive, multi-dimensional image viewer for Python. It’s designed for exploring, annotating, and analyzing multi-dimensional images. It’s built on Qt (for the GUI), VisPy (for performant GPU-based rendering), and the scientific Python stack (NumPy, SciPy, and friends).
For more information, examples, and documentation, please visit our website: https://napari.org/
Highlights#
This release continues the 0.5 tradition of churning out the bug fixes and enhancements, with 24 pull requests total in that category. If you are a user of oblique plane rendering, you’ll appreciate #7422, which fixes the plane calculation when data is anisotropic.
And, did you have a hole in your heart where high-quality 3D labels rendering should have been? Check out #7431, in which Ashley Anderson has (again) improved the quality of 3D labels by filling the (apparent, but fictional) holes in labels at the borders of a volume. Before/after gif:
Additionally, Grzegorz Bokota has again sped up launch time for Shapes layers by porting all the edge triangulation code to numba (#7268). As part of that work he also created a fantastic developer example explaining how the edge triangulation works, which you can find at examples/dev/triangle_edge.py. Give it a read and a play if you want to peek under the hood of the Shapes layer!
Did you miss a napari error or warning while reading these notes? We don’t blame you! Those missed notifications will be a thing of the past with #7220, which will keep notifications open if the napari window is not in focus. Whew!
Finally, for the zarrventurous among you, napari 0.5.5 is ready for zarr v3, coming soon to a PyPI near you! (#7215) If you are using or testing the zarr 3.0.0 betas, try them with napari! We hope you’ll be pleasantly surprised. 😊
As always, we thank all the contributors to this napari release and all the previous ones! We welcome Carol Willing and Tim Monko to the list of contributors. Read on for all the changes in this version!
Read on for all the changes in this version!
Improvements#
Do not start notification timer if window is not active. (#7220)
Speedup triangulation of edges (#7268)
[Enh] Double-click to zoom in on the clicked location (alt to zoom out) (#7286)
Highlight Shapes and Points layer data only when active (#7289)
Remove keybinding full stops (#7304)
Add example doc comparing
screenshot
andexport_figure
(#7319)[Enh] Add a
Merge to RGB
contextual menu item (#7322)Enable mouse pan and zoom when no active layer is available (#7408)
Add metadata event to Layer class (#7416)
Update normal calculation for labels isosurface rendering (#7431)
Bug Fixes#
Use
font_size
setting to controlnapari-console
font-size (#6753)Add from maximized to fullscreen mode interactions handling and allow using
Alt-Tab
while on fullscreen on Windows (#7308)Fix bounding box to not contain only shape interior but also edges (#7332)
Clean selected data in Shapes layer when setting data (#7336)
fix
iso_gradient_mode
in constructor call (#7340)Fix using transform mode when having layers with a different number of dimensions (#7342)
fix: change highlight only on zoom and mouse press (#7386)
Don’t show plane normal controls unless layer has 3 or more dimensions and change controls order (plane controls under depiction combobox) (#7395)
Enable mouse pan and zoom when no active layer is available (#7408)
bug fix: have layerlist consume return, not pass to viewer (#7417)
Prevent errors when interacting with selected non-visible layers (#7418)
[bugfix] implement proper world to data normal transformation (#7422)
Turn off ‘flash’ in
screenshot
/export_figure
examples (#7427)Update surface shading control combobox when value is set programatically (#7432)
Documentation#
update scale_bar example to include new attributes (#7309)
Add example doc comparing
screenshot
andexport_figure
(#7319)Add reminder about version added directive in PR template (#7359)
Update the docstrings and comments for status checker thread (#7381)
Update
to_screenshot
andexport_figure
example docstrings (#7426)Turn off ‘flash’ in
screenshot
/export_figure
examples (#7427)Add draft release notes for 0.5.5 (docs#536)
Add linkcheck step to be run once a week (docs#474)
Fix broken links detected by make linkcheck-files (docs#484)
Add 0.5.4 to the version switcher (docs#500)
Document the SPEC-0 rule for bundled Python (docs#501)
Update docs to remove flake8, isort mentions and add ruff (docs#502)
Highlight Jupyter option in gallery examples (docs#503)
Add community calendar link to landing page (docs#504)
Add information about
qt_viewer
fixture (docs#505)Add information that
qt_viewer
fixturehide
the viewer (docs#506)Update release guide anchor (docs#507)
Minor improvement to provider annotations (docs#510)
Add notes about versionadded/versionchanged directives to dev guide (docs#512)
Update Step 4 of development set up to clarify qt backends (docs#516)
Update benchmarks.md to use conda napari-env (docs#518)
Add contributing text and link about CI (docs#519)
Update finding_and_installing_plugins.md (docs#521)
[Labels] Add more prominent info about the next label keybind and fix n_dimensional (deprecated) (docs#522)
Update NAP-6 to remove mention of context menu (docs#525)
Move Andy Sweet from core-devs to emeritus core-devs (docs#530)
Other Pull Requests#
Add testing for drag and drop events/behavior on
QtLayerList
(#6699)Fix zarr 3.0 compatibility (#7215)
Add more tests for Qt processors (#7280)
Update
coverage
,dask
,fsspec
,hypothesis
,imageio
,ipython
,napari-console
,pillow
,psutil
,qtconsole
,qtpy
,rich
,tensorstore
,toolz
,tqdm
,virtualenv
,xarray
(#7287)Block zarr 3.0.0a5, 3.0.0a6 (#7305)
[pre-commit.ci] pre-commit autoupdate (#7307)
ci(dependabot): bump peter-evans/create-pull-request from 6 to 7 in the actions group (#7311)
Change
Layer.create
type annotation to accept any Mapping (#7317)[pre-commit.ci] pre-commit autoupdate (#7324)
Fix double reporting of leaked widgets (#7326)
Improve docstrings and code flow of
ShapeList.outline
add missed return in thread status (#7337)Add screenshot test for highlights visibility when layer selection/active layer changes (#7339)
[miant] update binder to use conda nightly and jupyter-remote-desktop-proxy (#7352)
Update
dask
,hypothesis
,pint
(#7358)Add setting Windows resolution step for prereleases testing workflow and some tests fixes (#7360)
[pre-commit.ci] pre-commit autoupdate (#7361)
Add maintainer and contributor documentation about workflow automation near the configuration (#7365)
Stop testing PySide6 on python 3.9 (#7368)
fix: remove “openblas_set_num_threads not found” warning by add missed break (#7369)
Isolate keybinding tests using pytest.mark (#7375)
Add python-dotenv to dev dependencies (#7377)
mark slow local tests (#7383)
Speed up bigtiff test using
np.empty
and smaller data (#7384)Update
coverage
,dask
,hypothesis
,tensorstore
(#7385)[pre-commit.ci] pre-commit autoupdate (#7388)
[Maint] drop unused
n_dimensional
property of Labels (#7389)[pre-commit.ci] pre-commit autoupdate (#7424)
[tests] add tests for Layer._world_to_displayed_data_normal (#7435)
[pre-commit.ci] pre-commit autoupdate (#7439)
Remove lucyleeow from qt/ codeowners (#7441)
[Maint] Fix labeler action by using proper syntax (docs#523)
Update labeler.yml to check subfolders (docs#526)
Fix linkchecker (docs#528)
14 reviewers added to this release (alphabetical)#
(+) denotes first-time contributors 🥳
Ashley Anderson - @aganders3
Carol Willing (docs) - @willingc +
Daniel Althviz Moré - @dalthviz
Davis Bennett - @d-v-b
Draga Doncila Pop - @DragaDoncila
Genevieve Buckley - @GenevieveBuckley
Grzegorz Bokota (docs) - @Czaki
Juan Nunez-Iglesias (docs) - @jni
Lorenzo Gaifas - @brisvag
Melissa Weber Mendonça (docs) - @melissawm
Peter Sobolewski (docs) - @psobolewskiPhD
Tim Monko - @TimMonko +
Wouter-Michiel Vierdag - @melonora