You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Don't fail on equal-but-differently-named cmaps in qt figureoptions.
Currently, opening the Qt figureoptions UI for an image whose cmap is
not registered in the colormap registry, has a name not matching any
registry entry, but is actually equal (`==`, i.e. has the same LUT and
colorbar-extension attributes) to a registry entry, leads to an error.
A typical example would be
```
import cmap, pylab as p # third-party
p.imshow([[0, 1]], cmap=cmap.Colormap("bids:magma").to_mpl())
```
and opening the qt figure options; this leads to the error "index
'bids:magma' is invalid ...".
Note that if the cmap is different from any registered
cmap then we already add it to the UI combobox (try e.g.
`cmap=cmap.Colormap("imagej:fire")`); the only problem was if it was
equal to a registered cmap (this arises because when the code was
originally written, cmap instance equality was by identity, not by
comparing LUTs, so the `cmap not in cm._colormaps.values()` check
behaved differently).
Fix that by checking whether the colormap *name* is registered. The
behavior is still ill-defined in the opposite (theoretical) case of an
unregistered cmap different from any registered cmap but with a matching
name, but I'd argue that case is more pathological.
Test by running the above code and opening the qt figureoptions.
0 commit comments