Skip to content

Commit

Permalink
raise errors instead now
Browse files Browse the repository at this point in the history
  • Loading branch information
nabobalis committed May 2, 2022
1 parent b803ade commit be62495
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 13 deletions.
29 changes: 19 additions & 10 deletions glue/core/tests/test_visual.py
@@ -1,20 +1,29 @@
from glue.core.visual import VisualAttributes
from matplotlib.cm import get_cmap

import pytest

def test_VA_preferred_cmap():
# Not a real CMAP array
va = VisualAttributes(preferred_cmap=1)
assert va.preferred_cmap == 1
# Not a real CMAP array - errors
with pytest.raises(ValueError,match="`preferred_cmap` must be a string or an instance of a matplotlib.colors.Colormap"):
VisualAttributes(preferred_cmap=1)

# Not a valid string for a CMAP - errors
with pytest.raises(ValueError,match="not_a_cmap is not a valid colormap name."):
VisualAttributes(preferred_cmap="not_a_cmap")

# Not a valid string for a CMAP
va = VisualAttributes(preferred_cmap="not_a_cmap")
assert va.preferred_cmap is None
viridis_cmap = get_cmap("viridis")

# get_cmap cmap name
va = VisualAttributes(preferred_cmap="viridis")
assert va.preferred_cmap == get_cmap("viridis")

assert va.preferred_cmap == viridis_cmap
# formal cmap name
va = VisualAttributes(preferred_cmap="Viridis")
assert va.preferred_cmap == get_cmap("viridis")
assert va.preferred_cmap == viridis_cmap

# Valid Colormap
va = VisualAttributes(preferred_cmap=viridis_cmap)
assert va.preferred_cmap == viridis_cmap

# None is allowed - it is the default
va = VisualAttributes(preferred_cmap=None)
assert va.preferred_cmap == None
8 changes: 5 additions & 3 deletions glue/core/visual.py
@@ -1,4 +1,4 @@
from matplotlib.colors import ColorConverter
from matplotlib.colors import ColorConverter, Colormap
from matplotlib.cm import get_cmap

from glue.config import settings
Expand Down Expand Up @@ -128,9 +128,11 @@ def preferred_cmap(self, value):
break
else:
# If the string name fails to be validated
self._preferred_cmap = None
else:
raise ValueError(f"{value} is not a valid colormap name.")
elif isinstance(value, Colormap) or value is None:
self._preferred_cmap = value
else:
raise ValueError("`preferred_cmap` must be a string or an instance of a matplotlib.colors.Colormap")

@callback_property
def alpha(self):
Expand Down

0 comments on commit be62495

Please sign in to comment.