jni / zarpaint

Paint segmentations directly to on-disk/remote zarr arrays
BSD 3-Clause "New" or "Revised" License
14 stars 8 forks source link

Issues using zarpaint #23

Closed kephale closed 2 years ago

kephale commented 2 years ago

The title caught my attention in the plugins list because I needed to paint a zarr (https://github.com/napari/napari/issues/2281#issuecomment-1058731462).

I couldn't find instructions for using it, and when I try Plugins>zarpaint>create labels my Python crashes with:


WARNING: Traceback (most recent call last):
  File "~/somedir/lib/python3.9/site-packages/napari/_qt/menus/plugins_menu.py", line 97, in _add_toggle_widget
    dock_widget, _w = self._win.add_plugin_dock_widget(*key)
  File "~/somedir/lib/python3.9/site-packages/napari/_qt/qt_main_window.py", line 685, in add_plugin_dock_widget
    wdg = _instantiate_dock_widget(Widget, self._qt_viewer.viewer)
  File "~/somedir/lib/python3.9/site-packages/napari/_qt/qt_main_window.py", line 1248, in _instantiate_dock_widget
    return wdg_cls(**kwargs)
  File "~/somedir/lib/python3.9/site-packages/magicgui/_magicgui.py", line 204, in __call__
    widget = self.func(param_options=prm_options, **{**factory_kwargs, **kwargs})
  File "~/somedir/lib/python3.9/site-packages/magicgui/widgets/_function_gui.py", line 174, in __init__
    widgets=list(sig.widgets(app).values()),
  File "~/somedir/lib/python3.9/site-packages/magicgui/signature.py", line 224, in widgets
    {n: p.to_widget(app) for n, p in self.parameters.items()}
  File "~/somedir/lib/python3.9/site-packages/magicgui/signature.py", line 224, in <dictcomp>
    {n: p.to_widget(app) for n, p in self.parameters.items()}
  File "~/somedir/lib/python3.9/site-packages/magicgui/signature.py", line 141, in to_widget
    widget = create_widget(
  File "~/somedir/lib/python3.9/site-packages/magicgui/widgets/_bases/create_widget.py", line 96, in create_widget
    widget = wdg_class(**kwargs)
  File "~/somedir/lib/python3.9/site-packages/magicgui/widgets/_concrete.py", line 164, in __init__
    super(cls, self).__init__(**kwargs)
  File "~/somedir/lib/python3.9/site-packages/magicgui/widgets/_bases/categorical_widget.py", line 27, in __init__
    super().__init__(**kwargs)
  File "~/somedir/lib/python3.9/site-packages/magicgui/widgets/_bases/value_widget.py", line 43, in __init__
    super().__init__(**kwargs)
  File "~/somedir/lib/python3.9/site-packages/magicgui/widgets/_bases/widget.py", line 104, in __init__
    self._post_init()
  File "~/somedir/lib/python3.9/site-packages/magicgui/widgets/_bases/categorical_widget.py", line 32, in _post_init
    self.parent_changed.connect(self.reset_choices)
  File "~/somedir/lib/python3.9/site-packages/magicgui/events.py", line 56, in connect
    norm = getattr(self, "_normalize_slot", psygnal._signal._normalize_slot)
AttributeError: module 'psygnal._signal' has no attribute '_normalize_slot'
jni commented 2 years ago

You need to update all your napari, magicgui, and psygnal installs.

kephale commented 2 years ago

Aha, thanks. Was there a way for me to figure out that a plugin required me to update these other packages? I know to check now, just curious.

jni commented 2 years ago

No, not really, the issue is that requirements metadata is immutable on PyPI, so there was a set of incompatible (napari, magicgui, psygnal) versions when using any plugin using magicgui, that were not (and will never be) declared as incompatible. So all I'll say is when I run into errors like this I check where the error is happening (you can see in the traceback that it's magicgui), and I make sure to update that package to the latest version.