napari: conda-forge napari with pyside2 backend on macOS arm64 is broken

🐛 Bug

Installing conda-forge napari with the pyside2 backend (which occurred when making an env with stardist-napari) results in an error when opening any sample image: AttributeError: 'CanvasBackendDesktop' object has no attribute 'defaultFramebufferObject' Not sure why stardist-napari conda-forge package ended up pulling pyside2 napari, because mamba install napari yields the pyqt backend. Traceback:

WARNING: Error drawing visual <Image at 0x169e63940>
19:55:26 WARNING Error drawing visual <Image at 0x169e63940>
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/app/backends/_qt.py:903, in CanvasBackendDesktop.paintGL(self=<vispy.app.backends._qt.CanvasBackendDesktop(0x600003ef6d80)>)
    901 # (0, 0, self.width(), self.height()))
    902 self._vispy_canvas.set_current()
--> 903 self._vispy_canvas.events.draw(region=None)
        self._vispy_canvas = <VispyCanvas (PySide2) at 0x15001a550>
        self._vispy_canvas.events.draw = <vispy.util.event.EventEmitter object at 0x150033d90>
        self = <vispy.app.backends._qt.CanvasBackendDesktop(0x600003ef6d80) at 0x150040600>
        self._vispy_canvas.events = <vispy.util.event.EmitterGroup object at 0x150033d30>
    905 # Clear the alpha channel with QOpenGLWidget (Qt >= 5.4), otherwise the
    906 # window is translucent behind non-opaque objects.
    907 # Reference:  MRtrix3/mrtrix3#266
    908 if QT5_NEW_API or PYSIDE6_API or PYQT6_API:

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/util/event.py:453, in EventEmitter.__call__(self=<vispy.util.event.EventEmitter object>, *args=(), **kwargs={'region': None})
    450 if self._emitting > 1:
    451     raise RuntimeError('EventEmitter loop detected!')
--> 453 self._invoke_callback(cb, event)
        event = <DrawEvent blocked=False handled=False native=None region=None source=None sources=[] type=draw>
        self = <vispy.util.event.EventEmitter object at 0x150033d90>
        cb = <bound method SceneCanvas.on_draw of <VispyCanvas (PySide2) at 0x15001a550>>
    454 if event.blocked:
    455     break

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/util/event.py:471, in EventEmitter._invoke_callback(self=<vispy.util.event.EventEmitter object>, cb=<bound method SceneCanvas.on_draw of <VispyCanvas (PySide2)>>, event=<DrawEvent blocked=False handled=False native=None region=None source=None sources=[] type=draw>)
    469     cb(event)
    470 except Exception:
--> 471     _handle_exception(self.ignore_callback_errors,
        self = <vispy.util.event.EventEmitter object at 0x150033d90>
        cb = <bound method SceneCanvas.on_draw of <VispyCanvas (PySide2) at 0x15001a550>>
        event = <DrawEvent blocked=False handled=False native=None region=None source=None sources=[] type=draw>
        (cb, event) = (<bound method SceneCanvas.on_draw of <VispyCanvas (PySide2) at 0x15001a550>>, <DrawEvent blocked=False handled=False native=None region=None source=None sources=[] type=draw>)
    472                       self.print_callback_errors,
    473                       self, cb_event=(cb, event))

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/util/event.py:469, in EventEmitter._invoke_callback(self=<vispy.util.event.EventEmitter object>, cb=<bound method SceneCanvas.on_draw of <VispyCanvas (PySide2)>>, event=<DrawEvent blocked=False handled=False native=None region=None source=None sources=[] type=draw>)
    467 def _invoke_callback(self, cb, event):
    468     try:
--> 469         cb(event)
        cb = <bound method SceneCanvas.on_draw of <VispyCanvas (PySide2) at 0x15001a550>>
        event = <DrawEvent blocked=False handled=False native=None region=None source=None sources=[] type=draw>
    470     except Exception:
    471         _handle_exception(self.ignore_callback_errors,
    472                           self.print_callback_errors,
    473                           self, cb_event=(cb, event))

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/scene/canvas.py:218, in SceneCanvas.on_draw(self=<VispyCanvas (PySide2)>, event=<DrawEvent blocked=False handled=False native=None region=None source=None sources=[] type=draw>)
    215 # Now that a draw event is going to be handled, open up the
    216 # scheduling of further updates
    217 self._update_pending = False
--> 218 self._draw_scene()
        self = <VispyCanvas (PySide2) at 0x15001a550>

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/scene/canvas.py:277, in SceneCanvas._draw_scene(self=<VispyCanvas (PySide2)>, bgcolor=<class 'numpy.ndarray'> (4,) float32)
    275     bgcolor = self._bgcolor
    276 self.context.clear(color=bgcolor, depth=True)
--> 277 self.draw_visual(self.scene)
        self = <VispyCanvas (PySide2) at 0x15001a550>

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/scene/canvas.py:315, in SceneCanvas.draw_visual(self=<VispyCanvas (PySide2)>, visual=<SubScene>, event=None)
    313         else:
    314             if hasattr(node, 'draw'):
--> 315                 node.draw()
        node = <Image at 0x169e63940>
    316                 prof.mark(str(node))
    317 else:

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/scene/visuals.py:103, in VisualNode.draw(self=<Image>)
    101 if self.picking and not self.interactive:
    102     return
--> 103 self._visual_superclass.draw(self)
        self = <Image at 0x169e63940>
        self._visual_superclass = <class 'vispy.visuals.image.ImageVisual'>

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/visuals/visual.py:451, in Visual.draw(self=<Image>)
    449 self._configure_gl_state()
    450 try:
--> 451     self._program.draw(self._vshare.draw_mode,
        self._vshare.draw_mode = 'triangles'
        self = <Image at 0x169e63940>
        self._vshare = <vispy.visuals.visual.VisualShare object at 0x169e80a00>
        self._program = <vispy.visuals.shaders.program.ModularProgram object at 0x169ea2610>
        self._vshare.index_buffer = None
    452                        self._vshare.index_buffer)
    453 except Exception:
    454     logger.warning("Error drawing visual %r" % self)

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/visuals/shaders/program.py:102, in ModularProgram.draw(self=<vispy.visuals.shaders.program.ModularProgram object>, *args=('triangles', None), **kwargs={})
    100 self.build_if_needed()
    101 self.update_variables()
--> 102 Program.draw(self, *args, **kwargs)
        self = <vispy.visuals.shaders.program.ModularProgram object at 0x169ea2610>
        args = ('triangles', None)
        kwargs = {}

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/gloo/program.py:526, in Program.draw(self=<vispy.visuals.shaders.program.ModularProgram object>, mode='triangles', indices=None, check_error=True)
    522     raise TypeError("Invalid index: %r (must be IndexBuffer)" %
    523                     indices)
    525 # Process GLIR commands
--> 526 canvas.context.flush_commands()
        canvas = <VispyCanvas (PySide2) at 0x15001a550>

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/gloo/context.py:168, in GLContext.flush_commands(self=<GLContext>, event=None)
    166 canvas = get_current_canvas()
    167 if canvas and hasattr(canvas, '_backend'):
--> 168     fbo = canvas._backend._vispy_get_fb_bind_location()
        canvas = <VispyCanvas (PySide2) at 0x15001a550>
        canvas._backend = <vispy.app.backends._qt.CanvasBackendDesktop(0x600003ef6d80) at 0x150040600>
    169 else:
    170     fbo = 0

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/app/backends/_qt.py:875, in CanvasBackendDesktop._vispy_get_fb_bind_location(self=<vispy.app.backends._qt.CanvasBackendDesktop(0x600003ef6d80)>)
    873 def _vispy_get_fb_bind_location(self):
    874     if QT5_NEW_API or PYSIDE6_API or PYQT6_API:
--> 875         return self.defaultFramebufferObject()
        self = <vispy.app.backends._qt.CanvasBackendDesktop(0x600003ef6d80) at 0x150040600>
    876     else:
    877         return QtBaseCanvasBackend._vispy_get_fb_bind_location(self)

AttributeError: 'CanvasBackendDesktop' object has no attribute 'defaultFramebufferObject'
WARNING: Error drawing visual <Image at 0x169e63940>
19:55:27 WARNING Error drawing visual <Image at 0x169e63940>
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/app/backends/_qt.py:903, in CanvasBackendDesktop.paintGL(self=<vispy.app.backends._qt.CanvasBackendDesktop(0x600003ef6d80)>)
    901 # (0, 0, self.width(), self.height()))
    902 self._vispy_canvas.set_current()
--> 903 self._vispy_canvas.events.draw(region=None)
        self._vispy_canvas = <VispyCanvas (PySide2) at 0x15001a550>
        self._vispy_canvas.events.draw = <vispy.util.event.EventEmitter object at 0x150033d90>
        self = <vispy.app.backends._qt.CanvasBackendDesktop(0x600003ef6d80) at 0x150040600>
        self._vispy_canvas.events = <vispy.util.event.EmitterGroup object at 0x150033d30>
    905 # Clear the alpha channel with QOpenGLWidget (Qt >= 5.4), otherwise the
    906 # window is translucent behind non-opaque objects.
    907 # Reference:  MRtrix3/mrtrix3#266
    908 if QT5_NEW_API or PYSIDE6_API or PYQT6_API:

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/util/event.py:453, in EventEmitter.__call__(self=<vispy.util.event.EventEmitter object>, *args=(), **kwargs={'region': None})
    450 if self._emitting > 1:
    451     raise RuntimeError('EventEmitter loop detected!')
--> 453 self._invoke_callback(cb, event)
        event = <DrawEvent blocked=False handled=False native=None region=None source=None sources=[] type=draw>
        self = <vispy.util.event.EventEmitter object at 0x150033d90>
        cb = <bound method SceneCanvas.on_draw of <VispyCanvas (PySide2) at 0x15001a550>>
    454 if event.blocked:
    455     break

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/util/event.py:471, in EventEmitter._invoke_callback(self=<vispy.util.event.EventEmitter object>, cb=<bound method SceneCanvas.on_draw of <VispyCanvas (PySide2)>>, event=<DrawEvent blocked=False handled=False native=None region=None source=None sources=[] type=draw>)
    469     cb(event)
    470 except Exception:
--> 471     _handle_exception(self.ignore_callback_errors,
        self = <vispy.util.event.EventEmitter object at 0x150033d90>
        cb = <bound method SceneCanvas.on_draw of <VispyCanvas (PySide2) at 0x15001a550>>
        event = <DrawEvent blocked=False handled=False native=None region=None source=None sources=[] type=draw>
        (cb, event) = (<bound method SceneCanvas.on_draw of <VispyCanvas (PySide2) at 0x15001a550>>, <DrawEvent blocked=False handled=False native=None region=None source=None sources=[] type=draw>)
    472                       self.print_callback_errors,
    473                       self, cb_event=(cb, event))

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/util/event.py:469, in EventEmitter._invoke_callback(self=<vispy.util.event.EventEmitter object>, cb=<bound method SceneCanvas.on_draw of <VispyCanvas (PySide2)>>, event=<DrawEvent blocked=False handled=False native=None region=None source=None sources=[] type=draw>)
    467 def _invoke_callback(self, cb, event):
    468     try:
--> 469         cb(event)
        cb = <bound method SceneCanvas.on_draw of <VispyCanvas (PySide2) at 0x15001a550>>
        event = <DrawEvent blocked=False handled=False native=None region=None source=None sources=[] type=draw>
    470     except Exception:
    471         _handle_exception(self.ignore_callback_errors,
    472                           self.print_callback_errors,
    473                           self, cb_event=(cb, event))

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/scene/canvas.py:218, in SceneCanvas.on_draw(self=<VispyCanvas (PySide2)>, event=<DrawEvent blocked=False handled=False native=None region=None source=None sources=[] type=draw>)
    215 # Now that a draw event is going to be handled, open up the
    216 # scheduling of further updates
    217 self._update_pending = False
--> 218 self._draw_scene()
        self = <VispyCanvas (PySide2) at 0x15001a550>

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/scene/canvas.py:277, in SceneCanvas._draw_scene(self=<VispyCanvas (PySide2)>, bgcolor=<class 'numpy.ndarray'> (4,) float32)
    275     bgcolor = self._bgcolor
    276 self.context.clear(color=bgcolor, depth=True)
--> 277 self.draw_visual(self.scene)
        self = <VispyCanvas (PySide2) at 0x15001a550>

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/scene/canvas.py:315, in SceneCanvas.draw_visual(self=<VispyCanvas (PySide2)>, visual=<SubScene>, event=None)
    313         else:
    314             if hasattr(node, 'draw'):
--> 315                 node.draw()
        node = <Image at 0x169e63940>
    316                 prof.mark(str(node))
    317 else:

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/scene/visuals.py:103, in VisualNode.draw(self=<Image>)
    101 if self.picking and not self.interactive:
    102     return
--> 103 self._visual_superclass.draw(self)
        self = <Image at 0x169e63940>
        self._visual_superclass = <class 'vispy.visuals.image.ImageVisual'>

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/visuals/visual.py:451, in Visual.draw(self=<Image>)
    449 self._configure_gl_state()
    450 try:
--> 451     self._program.draw(self._vshare.draw_mode,
        self._vshare.draw_mode = 'triangles'
        self = <Image at 0x169e63940>
        self._vshare = <vispy.visuals.visual.VisualShare object at 0x169e80a00>
        self._program = <vispy.visuals.shaders.program.ModularProgram object at 0x169ea2610>
        self._vshare.index_buffer = None
    452                        self._vshare.index_buffer)
    453 except Exception:
    454     logger.warning("Error drawing visual %r" % self)

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/visuals/shaders/program.py:102, in ModularProgram.draw(self=<vispy.visuals.shaders.program.ModularProgram object>, *args=('triangles', None), **kwargs={})
    100 self.build_if_needed()
    101 self.update_variables()
--> 102 Program.draw(self, *args, **kwargs)
        self = <vispy.visuals.shaders.program.ModularProgram object at 0x169ea2610>
        args = ('triangles', None)
        kwargs = {}

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/gloo/program.py:526, in Program.draw(self=<vispy.visuals.shaders.program.ModularProgram object>, mode='triangles', indices=None, check_error=True)
    522     raise TypeError("Invalid index: %r (must be IndexBuffer)" %
    523                     indices)
    525 # Process GLIR commands
--> 526 canvas.context.flush_commands()
        canvas = <VispyCanvas (PySide2) at 0x15001a550>

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/gloo/context.py:168, in GLContext.flush_commands(self=<GLContext>, event=None)
    166 canvas = get_current_canvas()
    167 if canvas and hasattr(canvas, '_backend'):
--> 168     fbo = canvas._backend._vispy_get_fb_bind_location()
        canvas = <VispyCanvas (PySide2) at 0x15001a550>
        canvas._backend = <vispy.app.backends._qt.CanvasBackendDesktop(0x600003ef6d80) at 0x150040600>
    169 else:
    170     fbo = 0

File ~/Dev/miniforge3/envs/test-env2/lib/python3.9/site-packages/vispy/app/backends/_qt.py:875, in CanvasBackendDesktop._vispy_get_fb_bind_location(self=<vispy.app.backends._qt.CanvasBackendDesktop(0x600003ef6d80)>)
    873 def _vispy_get_fb_bind_location(self):
    874     if QT5_NEW_API or PYSIDE6_API or PYQT6_API:
--> 875         return self.defaultFramebufferObject()
        self = <vispy.app.backends._qt.CanvasBackendDesktop(0x600003ef6d80) at 0x150040600>
    876     else:
    877         return QtBaseCanvasBackend._vispy_get_fb_bind_location(self)

AttributeError: 'CanvasBackendDesktop' object has no attribute 'defaultFramebufferObject'

To Reproduce

Steps to reproduce the behavior:

  1. mamba create --name test-env3 python=3.9 "napari=*=*pyside2*"
  2. Try to open a sample image or viewer.add_image(np.random.rand(10,10))
  3. Any click on canvas will chain trigger the error.

Expected behavior

Open images with no issues.

Environment

Fresh conda env.

napari: 0.4.16
Platform: macOS-12.6-arm64-arm-64bit
System: MacOS 12.6
Python: 3.9.13 | packaged by conda-forge | (main, May 27 2022, 17:00:33)  [Clang 13.0.1 ]
Qt: 5.15.6
PySide2: 5.15.6
NumPy: 1.23.3
SciPy: 1.9.1
Dask: 2022.10.0
VisPy: 0.10.0

OpenGL:
  - GL version:  2.1 Metal - 76.3
  - MAX_TEXTURE_SIZE: 16384

Screens:
  - screen 1: resolution 1680x1050, scale 2.0

Plugins:
  - console: 0.0.6
  - napari-svg: 0.1.6
  - scikit-image: 0.4.16

Full env:

╰─ conda list                                                     (test-env3) ─╯
# packages in environment at /Users/piotrsobolewski/Dev/miniforge3/envs/test-env3:
#
# Name                    Version                   Build  Channel
alabaster                 0.7.12                     py_0    conda-forge
aom                       3.5.0                h7ea286d_0    conda-forge
appdirs                   1.4.4              pyh9f0ad1d_0    conda-forge
appnope                   0.1.3              pyhd8ed1ab_0    conda-forge
asciitree                 0.3.3                      py_2    conda-forge
asttokens                 2.0.8              pyhd8ed1ab_0    conda-forge
attrs                     22.1.0             pyh71513ae_1    conda-forge
babel                     2.10.3             pyhd8ed1ab_0    conda-forge
backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
backports                 1.0                        py_2    conda-forge
backports.functools_lru_cache 1.6.4              pyhd8ed1ab_0    conda-forge
blosc                     1.21.1               hd414afc_3    conda-forge
bokeh                     2.4.3              pyhd8ed1ab_3    conda-forge
brotli                    1.0.9                h1c322ee_7    conda-forge
brotli-bin                1.0.9                h1c322ee_7    conda-forge
brotlipy                  0.7.0           py39hb18efdd_1004    conda-forge
brunsli                   0.1                  h9f76cd9_0    conda-forge
bzip2                     1.0.8                h3422bc3_4    conda-forge
c-ares                    1.18.1               h3422bc3_0    conda-forge
c-blosc2                  2.4.2                h303ed30_0    conda-forge
ca-certificates           2022.9.24            h4653dfc_0    conda-forge
cachey                    0.2.1              pyh9f0ad1d_0    conda-forge
certifi                   2022.9.24          pyhd8ed1ab_0    conda-forge
cffi                      1.15.1           py39h04d3946_0    conda-forge
cfitsio                   4.1.0                hd4f5c17_0    conda-forge
charls                    2.3.4                hbdafb3b_0    conda-forge
charset-normalizer        2.1.1              pyhd8ed1ab_0    conda-forge
click                     8.1.3            py39h2804cbe_0    conda-forge
cloudpickle               2.2.0              pyhd8ed1ab_0    conda-forge
colorama                  0.4.5              pyhd8ed1ab_0    conda-forge
commonmark                0.9.1                      py_0    conda-forge
cryptography              38.0.2           py39haa0b8cc_0    conda-forge
cytoolz                   0.12.0           py39h9eb174b_0    conda-forge
dask                      2022.10.0          pyhd8ed1ab_0    conda-forge
dask-core                 2022.10.0          pyhd8ed1ab_0    conda-forge
dataclasses               0.8                pyhc8e2a94_3    conda-forge
dav1d                     1.0.0                he4db4b2_1    conda-forge
debugpy                   1.6.3            py39h3c22d25_0    conda-forge
decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
distributed               2022.10.0          pyhd8ed1ab_0    conda-forge
docstring_parser          0.13               pyhd8ed1ab_0    conda-forge
docutils                  0.19             py39h2804cbe_0    conda-forge
entrypoints               0.4                pyhd8ed1ab_0    conda-forge
executing                 1.1.1              pyhd8ed1ab_0    conda-forge
expat                     2.4.9                hb7217d7_0    conda-forge
fasteners                 0.17.3             pyhd8ed1ab_0    conda-forge
font-ttf-dejavu-sans-mono 2.37                 hab24e00_0    conda-forge
font-ttf-inconsolata      3.000                h77eed37_0    conda-forge
font-ttf-source-code-pro  2.038                h77eed37_0    conda-forge
font-ttf-ubuntu           0.83                 hab24e00_0    conda-forge
fontconfig                2.14.0               h82840c6_1    conda-forge
fonts-conda-ecosystem     1                             0    conda-forge
fonts-conda-forge         1                             0    conda-forge
freetype                  2.12.1               hd633e50_0    conda-forge
freetype-py               2.3.0              pyhd8ed1ab_0    conda-forge
fsspec                    2022.8.2           pyhd8ed1ab_0    conda-forge
future                    0.18.2           py39h2804cbe_5    conda-forge
gettext                   0.21.1               h0186832_0    conda-forge
giflib                    5.2.1                h27ca646_2    conda-forge
glib                      2.74.0               hb5ab8b9_0    conda-forge
glib-tools                2.74.0               hb5ab8b9_0    conda-forge
gst-plugins-base          1.20.3               h8b7775e_2    conda-forge
gstreamer                 1.20.3               hcb7b3dd_2    conda-forge
heapdict                  1.0.1                      py_0    conda-forge
hsluv                     5.0.2              pyh44b312d_0    conda-forge
icu                       70.1                 h6b3803e_0    conda-forge
idna                      3.4                pyhd8ed1ab_0    conda-forge
imagecodecs               2022.9.26        py39hca81624_1    conda-forge
imageio                   2.22.0             pyhfa7a67d_0    conda-forge
imagesize                 1.4.1              pyhd8ed1ab_0    conda-forge
importlib-metadata        4.11.4           py39h2804cbe_0    conda-forge
importlib_resources       5.10.0             pyhd8ed1ab_0    conda-forge
ipykernel                 6.16.0             pyh736e0ef_0    conda-forge
ipython                   8.5.0              pyhd1c38e8_1    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
jedi                      0.18.1             pyhd8ed1ab_2    conda-forge
jinja2                    3.1.2              pyhd8ed1ab_1    conda-forge
jpeg                      9e                   he4db4b2_2    conda-forge
jsonschema                4.16.0             pyhd8ed1ab_0    conda-forge
jupyter_client            7.3.4              pyhd8ed1ab_0    conda-forge
jupyter_core              4.11.1           py39h2804cbe_0    conda-forge
jxrlib                    1.1                  h27ca646_2    conda-forge
kiwisolver                1.4.4            py39hab5e169_0    conda-forge
krb5                      1.19.3               hf9b2bbe_0    conda-forge
lcms2                     2.12                 had6a04f_0    conda-forge
lerc                      4.0.0                h9a09cb3_0    conda-forge
libaec                    1.0.6                hbdafb3b_0    conda-forge
libavif                   0.11.0               h3d80962_0    conda-forge
libblas                   3.9.0           16_osxarm64_openblas    conda-forge
libbrotlicommon           1.0.9                h1c322ee_7    conda-forge
libbrotlidec              1.0.9                h1c322ee_7    conda-forge
libbrotlienc              1.0.9                h1c322ee_7    conda-forge
libcblas                  3.9.0           16_osxarm64_openblas    conda-forge
libclang                  14.0.6          default_h81a5282_0    conda-forge
libclang13                14.0.6          default_he70ec0d_0    conda-forge
libcurl                   7.85.0               hd538317_0    conda-forge
libcxx                    14.0.6               h2692d47_0    conda-forge
libdeflate                1.14                 h1a8c8d9_0    conda-forge
libedit                   3.1.20191231         hc8eb9b7_2    conda-forge
libev                     4.33                 h642e427_1    conda-forge
libffi                    3.4.2                h3422bc3_5    conda-forge
libgfortran               5.0.0           11_3_0_hd922786_25    conda-forge
libgfortran5              11.3.0              hdaf2cc0_25    conda-forge
libglib                   2.74.0               h14ed1c1_0    conda-forge
libiconv                  1.17                 he4db4b2_0    conda-forge
liblapack                 3.9.0           16_osxarm64_openblas    conda-forge
libllvm14                 14.0.6               h37c5ba8_0    conda-forge
libnghttp2                1.47.0               h232270b_1    conda-forge
libogg                    1.3.4                h27ca646_1    conda-forge
libopenblas               0.3.21          openmp_hc731615_3    conda-forge
libopus                   1.3.1                h27ca646_1    conda-forge
libpng                    1.6.38               h76d750c_0    conda-forge
libpq                     14.5                 hb2ab832_0    conda-forge
libsodium                 1.0.18               h27ca646_1    conda-forge
libsqlite                 3.39.4               h76d750c_0    conda-forge
libssh2                   1.10.0               hb80f160_3    conda-forge
libtiff                   4.4.0                hfa0b094_4    conda-forge
libvorbis                 1.3.7                h9f76cd9_0    conda-forge
libwebp                   1.2.4                h328b37c_0    conda-forge
libwebp-base              1.2.4                h57fd34a_0    conda-forge
libxcb                    1.13              h9b22ae9_1004    conda-forge
libxml2                   2.10.3               h87b0503_0    conda-forge
libxslt                   1.1.35               ha8fb468_0    conda-forge
libzlib                   1.2.13               h03a7124_4    conda-forge
libzopfli                 1.0.3                h9f76cd9_0    conda-forge
llvm-openmp               14.0.4               hd125106_0    conda-forge
locket                    1.0.0              pyhd8ed1ab_0    conda-forge
lz4                       4.0.0            py39h049b86e_2    conda-forge
lz4-c                     1.9.3                hbdafb3b_1    conda-forge
magicgui                  0.5.1              pyhd8ed1ab_0    conda-forge
markupsafe                2.1.1            py39hb18efdd_1    conda-forge
matplotlib-inline         0.1.6              pyhd8ed1ab_0    conda-forge
msgpack-python            1.0.4            py39hab5e169_0    conda-forge
mysql-common              8.0.31               hab468bb_0    conda-forge
mysql-libs                8.0.31               hea58576_0    conda-forge
napari                    0.4.16          pyh92c539f_0_pyside2    conda-forge
napari-console            0.0.6              pyhd8ed1ab_0    conda-forge
napari-plugin-engine      0.2.0              pyhd8ed1ab_2    conda-forge
napari-svg                0.1.6              pyhd8ed1ab_0    conda-forge
ncurses                   6.3                  h07bb92c_1    conda-forge
nest-asyncio              1.5.6              pyhd8ed1ab_0    conda-forge
networkx                  2.8.7              pyhd8ed1ab_0    conda-forge
npe2                      0.6.1              pyhd8ed1ab_1    conda-forge
nspr                      4.32                 hbdafb3b_1    conda-forge
nss                       3.78                 h1483a63_0    conda-forge
numcodecs                 0.10.2           py39h3c22d25_0    conda-forge
numpy                     1.23.3           py39hcb4b507_0    conda-forge
numpydoc                  1.5.0              pyhd8ed1ab_0    conda-forge
openjpeg                  2.5.0                h5d4e404_1    conda-forge
openssl                   1.1.1q               ha287fd2_0    conda-forge
packaging                 21.3               pyhd8ed1ab_0    conda-forge
pandas                    1.5.0            py39hde7b980_0    conda-forge
parso                     0.8.3              pyhd8ed1ab_0    conda-forge
partd                     1.3.0              pyhd8ed1ab_0    conda-forge
pcre2                     10.37                hcf5f1cc_1    conda-forge
pep517                    0.12.0           py39h2804cbe_2    conda-forge
pexpect                   4.8.0              pyh9f0ad1d_2    conda-forge
pickleshare               0.7.5                   py_1003    conda-forge
pillow                    9.2.0            py39he45c975_2    conda-forge
pint                      0.19.2             pyhd8ed1ab_0    conda-forge
pip                       22.3               pyhd8ed1ab_0    conda-forge
pkgutil-resolve-name      1.3.10             pyhd8ed1ab_0    conda-forge
pooch                     1.6.0              pyhd8ed1ab_0    conda-forge
prompt-toolkit            3.0.31             pyha770c72_0    conda-forge
psutil                    5.9.2            py39h02fc5c5_0    conda-forge
psygnal                   0.5.0            py39haaf3ac1_0    conda-forge
pthread-stubs             0.4               h27ca646_1001    conda-forge
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
pure_eval                 0.2.2              pyhd8ed1ab_0    conda-forge
pycparser                 2.21               pyhd8ed1ab_0    conda-forge
pydantic                  1.10.2           py39h02fc5c5_0    conda-forge
pygments                  2.13.0             pyhd8ed1ab_0    conda-forge
pyopengl                  3.1.6              pyhd8ed1ab_1    conda-forge
pyopenssl                 22.1.0             pyhd8ed1ab_0    conda-forge
pyparsing                 3.0.9              pyhd8ed1ab_0    conda-forge
pyrsistent                0.18.1           py39hb18efdd_1    conda-forge
pyside2                   5.15.6           py39hf5e3978_2    conda-forge
pysocks                   1.7.1              pyha2e5f31_6    conda-forge
python                    3.9.13          hc596b02_0_cpython    conda-forge
python-build              0.8.0              pyhd8ed1ab_0    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python_abi                3.9                      2_cp39    conda-forge
pytomlpp                  1.0.11           py39h2c803a9_0    conda-forge
pytz                      2022.4             pyhd8ed1ab_0    conda-forge
pywavelets                1.3.0            py39h43ea957_1    conda-forge
pyyaml                    6.0              py39hb18efdd_4    conda-forge
pyzmq                     24.0.1           py39h0553236_0    conda-forge
qt-main                   5.15.6               h96bf0dc_0    conda-forge
qt-webengine              5.15.4               h43c6231_3    conda-forge
qtconsole-base            5.3.2              pyha770c72_0    conda-forge
qtpy                      2.2.1              pyhd8ed1ab_0    conda-forge
readline                  8.1.2                h46ed386_0    conda-forge
requests                  2.28.1             pyhd8ed1ab_1    conda-forge
rich                      12.6.0             pyhd8ed1ab_0    conda-forge
scikit-image              0.19.3           py39h533cade_1    conda-forge
scipy                     1.9.1            py39h737da60_0    conda-forge
setuptools                65.5.0             pyhd8ed1ab_0    conda-forge
shellingham               1.5.0              pyhd8ed1ab_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
snappy                    1.1.9                h39c3846_1    conda-forge
snowballstemmer           2.2.0              pyhd8ed1ab_0    conda-forge
sortedcontainers          2.4.0              pyhd8ed1ab_0    conda-forge
sphinx                    5.3.0              pyhd8ed1ab_0    conda-forge
sphinxcontrib-applehelp   1.0.2                      py_0    conda-forge
sphinxcontrib-devhelp     1.0.2                      py_0    conda-forge
sphinxcontrib-htmlhelp    2.0.0              pyhd8ed1ab_0    conda-forge
sphinxcontrib-jsmath      1.0.1                      py_0    conda-forge
sphinxcontrib-qthelp      1.0.3                      py_0    conda-forge
sphinxcontrib-serializinghtml 1.1.5              pyhd8ed1ab_2    conda-forge
sqlite                    3.39.4               h2229b38_0    conda-forge
stack_data                0.5.1              pyhd8ed1ab_0    conda-forge
superqt                   0.3.8              pyhd8ed1ab_0    conda-forge
tblib                     1.7.0              pyhd8ed1ab_0    conda-forge
tifffile                  2022.10.10         pyhd8ed1ab_0    conda-forge
tk                        8.6.12               he1e0b03_0    conda-forge
tomli                     2.0.1              pyhd8ed1ab_0    conda-forge
toolz                     0.12.0             pyhd8ed1ab_0    conda-forge
tornado                   6.1              py39hb18efdd_3    conda-forge
tqdm                      4.64.1             pyhd8ed1ab_0    conda-forge
traitlets                 5.4.0              pyhd8ed1ab_0    conda-forge
typer                     0.6.1              pyhd8ed1ab_0    conda-forge
typing-extensions         4.4.0                hd8ed1ab_0    conda-forge
typing_extensions         4.4.0              pyha770c72_0    conda-forge
tzdata                    2022e                h191b570_0    conda-forge
urllib3                   1.26.11            pyhd8ed1ab_0    conda-forge
vispy                     0.10.0           py39h6eccaaf_0    conda-forge
wcwidth                   0.2.5              pyh9f0ad1d_2    conda-forge
wheel                     0.37.1             pyhd8ed1ab_0    conda-forge
wrapt                     1.14.1           py39h9eb174b_0    conda-forge
xorg-libxau               1.0.9                h27ca646_0    conda-forge
xorg-libxdmcp             1.1.3                h27ca646_0    conda-forge
xz                        5.2.6                h57fd34a_0    conda-forge
yaml                      0.2.5                h3422bc3_2    conda-forge
zarr                      2.13.3             pyhd8ed1ab_0    conda-forge
zeromq                    4.3.4                hbdafb3b_1    conda-forge
zfp                       1.0.0                h7b19444_1    conda-forge
zict                      2.2.0              pyhd8ed1ab_0    conda-forge
zipp                      3.9.0              pyhd8ed1ab_0    conda-forge
zlib-ng                   2.0.6                he4db4b2_0    conda-forge
zstd                      1.5.2                h8128057_4    conda-forge

Additional context

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 28 (17 by maintainers)

Most upvoted comments

core bug looks like a bug in pyside6 as a class is documented: https://doc.qt.io/qtforpython/PySide6/QtOpenGLWidgets/QOpenGLWidget.html#PySide6.QtOpenGLWidgets.PySide6.QtOpenGLWidgets.QOpenGLWidget.defaultFramebufferObject

I will try to create simple code for test it and if it will reproduce on You machine then will be case to open issue on Qt bug tracker

SO the pyside2 conda-forge install arm64 macOS 12.6 does work, I can run the tetra example:

But your problem is connected with opengl support in this build. It may happen that PySide2 is build without proper opengl support and all non opengl examples will work.

Currently, I cannot reproduce on Linux when using pip.

pip install pyside6 (which has arm64 wheels)

Napari is broken on the last two releases of PySide6. More here #5217.