napari 0.4.12

We’re happy to announce the release of napari 0.4.12! napari is a fast, interactive, multi-dimensional image viewer for Python. It’s designed for browsing, annotating, and analyzing large multi-dimensional images. It’s built on top of Qt (for the GUI), vispy (for performant GPU-based rendering), and the scientific Python stack (numpy, scipy).

For more information, examples, and documentation, please visit our website:


This is a bug fix release with many minor improvements and bug fixes. The user experience for users of dask arrays might be significantly improved by a new approach to setting the contrast limits based on the current slice (#3425).

A progress bar will now display when opening multiple files (#3355). Thanks to first-time contributor @tibuch the data type of labels layers can now be converted from a context menu on the layer list (#3402).

See the full list of merged pull requests below for further delails!

New Features

  • Add progress bar when opening list of files (#3355)

  • Add right-click context menu to convert label data type. (#3402)


  • Support for Future return type in magicgui widget (#2581)

  • Don’t register dask cache globally - but do use cache as context manager when slicing (#3285)

  • Hide or Destroy dock widgets (#3331)

  • _vispy module cleanup (#3333)

  • Add expressions API (will eventually support when expressions for internal & plugin usage) (#3350)

  • Experimental npe2 support (#3354)

  • Disable save options if no layers available (#3363)

  • Add cancel and cancel all actions to plugin dialog and improve UI (#3369)

  • Add an option to change the theme to match the system one (#3370)

  • Add toggle visibility to layer actions (#3372)

  • Remove 0.4.9 deprecations (#3377)

  • Move progress outside of qt and eliminate need for qt imports in headless mode (#3379)

  • Normalize_dtype() when setting contrast limits. (#3380)

  • Add translucent no depth blending mode (#3398)

  • Center data within points thumbnail (#3406)

  • Add back support for big-endian NumPy dtypes in get_dtype_limits (#3424)

  • Schedule contrast limits calculation for dask arrays after first set_view_slice (#3425)

  • Minor refactor of get_active_layer_dtype (#3434)

  • Add event filter to convert tooltips to richtext (#3442)

  • Remove duplicate test parameter (#3443)

  • Check if proper function name is found when connect to EventEmmiter (#3445)

  • Prevent shapes removal while creating (#3451)

  • Bug fix for individual shape selection with shift modifier (#3456)

  • Multiscale slicing extends beyond shape (#3460)

  • Added float16 support to dtype normalization (#3463)

  • Updates for magicgui 0.3.0 (#3465)

  • Finds layer_controls based on layer’s MRO (#3471)

  • Use ensure_main_thread instead of custom thread propagation mechanism in NapariQtNotification (#3473)

  • Drop pythonw patch in windows bundle (#3479)

  • Revert “drop pythonw patch (#3479)” (#3501)

Bug Fixes

  • Fix _old_size attribute error in main window (#3329)

  • Fix problem with local function signal binding (#3352)

  • Fix getattr in WorkerBase (#3368)

  • Fix off-by-one bug in extent of Image and Labels layers (#3381)

  • Try to fix bundle building. (#3403)

  • Fix to_labels default output shape (#3412)

  • Fix lazy load console (#3419)

  • Fix teardown of menus to prevent widget test leaks (#3433)

  • Fix off-by one error in Dims.range for non pixel-based layers (#3444)

  • Fix naming inconsistency for windows bundle (#3476)

  • Add ability to provide empty data to vectors layer (#2995)

API Changes



  • Fix docs order in _toc.yml for 0.4.11 (#3330)

  • Add example with data of mixed dimensionality (#3392)

Build Tools and Support

  • Split windows pyside/pyqt into own GitHub action check (#2989)

  • Attempt to cache tox virtualenv. (#2996)

  • Update references to master to point to main (#3351)

  • Fix docs build from main branch (#3365)

  • Turn on testing examples on CI again (#3367)

  • Add certifi to dependencies (#3386)

  • Update (#3396)

  • Fix CI failure from example (#3397)

  • Attempt to speedup tests around theme. (#3405)

  • Add global test timeout to avoid regression. (#3407)

  • Add missing rendering documentation (#3436)

  • Try to skip test on windows. (#3438)

  • Add wheel to bundle run dependecies (#3450)

  • Clarify existing behavior of TextManager with new tests and benchmarks (#3452)

  • Move 8s tiemout to github actions only (#3457)

  • Move icons to package src (#3462)

  • Fix image display for plugin installation page. (#3480)

  • Fix broken links in documentation (#3481)

  • Update formatting in (#3482)

  • Fix formatting of Layers docstrings (#3483)

  • Add links to napari repo in README (#3484)

  • Bump minimum NumPy requirement to 1.18 (as per NEP29) (#3485)

  • Remove make_napari_viewer in vispy tests. (#3486)

  • Update ubuntu image to 18.04 (#3348)

  • Bundle: canonicalize arch names (#3349)

  • Fix min_req text matrix by skiping test (#3496)

  • Bundle: make fork multiprocessing default in macos again (#3498)

22 authors added to this release (alphabetical)

20 reviewers added to this release (alphabetical)