From e2e7504a6789f6d243e8f49417cb65b9874719b0 Mon Sep 17 00:00:00 2001 From: Chris Barnes Date: Tue, 17 Jun 2025 13:36:55 +0100 Subject: [PATCH 1/3] Script to make colormap names --- .github/workflows/ci.yml | 3 + .pre-commit-config.yaml | 9 + docs/faq.md | 4 + scripts/make_cmapnames.py | 87 ++ src/cmap/_colormap.py | 7 +- src/cmap/_colormapname.py | 2681 +++++++++++++++++++++++++++++++++++++ 6 files changed, 2788 insertions(+), 3 deletions(-) create mode 100755 scripts/make_cmapnames.py create mode 100644 src/cmap/_colormapname.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 28121c1ba..1bdb4f2a0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,6 +43,9 @@ jobs: enable-cache: true cache-dependency-glob: "**/pyproject.toml" + - name: Check ColormapName annotation is up to date + run: uv run --no-dev python scripts/make_cmapnames.py --check + - name: Run min test run: uv run --no-dev --group test_min pytest -v diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index dd53491de..84acf0efa 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,6 +6,15 @@ ci: exclude: ^LICENSE repos: + - repo: local + hooks: + - id: make_cmapnames + name: make_cmapnames + entry: python scripts/make_cmapnames.py --exit-code + language: python + files: src/cmap/data/[a-zA-Z0-9_]/record.json + pass_filenames: false + - repo: https://github.com/pre-commit/pre-commit-hooks rev: v5.0.0 hooks: diff --git a/docs/faq.md b/docs/faq.md index fedfb1529..d592d9bf8 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -59,6 +59,10 @@ Once you have picked a namespace: ] ``` +1. Run `scripts/make_cmapnames.py` to ensure that the `ColormapLike` type alias + includes your contribution. + `pre-commit` will update it for you, but will fail if changes were made. + !!!tip It may be helpful to look at existing folders and files in the [`cmap/data` directory](https://github.com/pyapp-kit/cmap/tree/main/src/cmap/data) diff --git a/scripts/make_cmapnames.py b/scripts/make_cmapnames.py new file mode 100755 index 000000000..90a0320ee --- /dev/null +++ b/scripts/make_cmapnames.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python3 +"""Generate a `Literal[...]` type annotation for named colormaps.""" + +import json +import sys +from argparse import ArgumentParser +from difflib import unified_diff +from pathlib import Path + +scripts_dir = Path(__file__).resolve().parent +module_dir = scripts_dir.parent.joinpath("src", "cmap") +data_dir = module_dir.joinpath("data") +out_file = module_dir.joinpath("_colormapname.py") + +SCRIPT_TEMPLATE = ''' +"""Type annotation for literal colormap names. + +Auto-generated by make_cmapnames.py : DO NOT EDIT. +""" +from typing import Literal, TypeAlias + +ColormapName: TypeAlias = Literal[ +{}] +'''.lstrip() + + +def generate_script(): + """Produce the expected script.""" + names = [] + + for rel_path in sorted(data_dir.glob("*/record.json")): + p = data_dir.joinpath(rel_path) + prefix_name = rel_path.parent.name + with p.open() as f: + d = json.load(f) + + for subname in d.get("colormaps", []): + for prefix in ["", f"{prefix_name}:"]: + for suffix in ["", "_r"]: + names.append(f"{prefix}{subname.lower()}{suffix}") + + names_fmt = "".join(" " * 4 + f'"{n}",\n' for n in names) + + return SCRIPT_TEMPLATE.format(names_fmt) + + +def main(args=None): + """Main function for this script.""" + parser = ArgumentParser() + parser.add_argument( + "--check", + action="store_true", + help=("do not write results, just print the diff and exit code 1 if non-empty"), + ) + parser.add_argument( + "--exit-code", + action="store_true", + help=("write the results, but return exit code 1 if there are changes to make"), + ) + + parsed = parser.parse_args(args) + + new = generate_script() + old = out_file.read_text() if out_file.is_file() else "" + + if new == old: + return 0 + + if parsed.check: + sys.stdout.writelines( + unified_diff( + old.splitlines(keepends=True), + new.splitlines(keepends=True), + fromfile="existing", + tofile="new", + ) + ) + return 1 + + out_file.write_text(new) + if parsed.exit_code: + return 1 + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/src/cmap/_colormap.py b/src/cmap/_colormap.py index 578a2edc8..9cfd8fc7e 100644 --- a/src/cmap/_colormap.py +++ b/src/cmap/_colormap.py @@ -15,6 +15,7 @@ from . import _external from ._catalog import Catalog from ._color import Color, ColorLike +from ._colormapname import ColormapName if TYPE_CHECKING: from collections.abc import Iterator @@ -58,7 +59,7 @@ class ColormapDict(TypedDict): # All of the things that we can pass to the constructor of Colormap ColormapLike: TypeAlias = Union[ - str, # colormap name, w/ optional "_r" suffix + ColormapName, Iterable[Union[ColorLike, ColorStopLike]], "NDArray", "MPLSegmentData", @@ -491,7 +492,7 @@ def iter_colors(self, N: Iterable[float] | int | None = None) -> Iterator[Color] N = self.num_colors nums = np.linspace(0, 1, N) if isinstance(N, int) else np.asarray(N) for c in self(nums, N=len(nums)): - yield Color(c) + yield Color(c) # type: ignore def reversed(self, name: str | None = None) -> Colormap: """Return a new Colormap, with reversed colors. @@ -1080,7 +1081,7 @@ def to_css( stops = tuple(np.linspace(0, 1, max_stops)) colors = tuple(Color(c) for c in self.to_lut(max_stops)) else: - stops, colors = self.stops, self.colors + stops, colors = self.stops, self.colors # type: ignore if not colors: return "" out = f"background: {colors[0].hex if as_hex else colors[0].rgba_string};\n" diff --git a/src/cmap/_colormapname.py b/src/cmap/_colormapname.py new file mode 100644 index 000000000..4c8d50c5d --- /dev/null +++ b/src/cmap/_colormapname.py @@ -0,0 +1,2681 @@ +"""Type annotation for literal colormap names. + +Auto-generated by make_cmapnames.py : DO NOT EDIT. +""" + +from typing import Literal, TypeAlias + +ColormapName: TypeAlias = Literal[ + "fake_parula", + "fake_parula_r", + "bids:fake_parula", + "bids:fake_parula_r", + "inferno", + "inferno_r", + "bids:inferno", + "bids:inferno_r", + "magma", + "magma_r", + "bids:magma", + "bids:magma_r", + "plasma", + "plasma_r", + "bids:plasma", + "bids:plasma_r", + "viridis", + "viridis_r", + "bids:viridis", + "bids:viridis_r", + "bmr_3c", + "bmr_3c_r", + "chrisluts:bmr_3c", + "chrisluts:bmr_3c_r", + "bop_blue", + "bop_blue_r", + "chrisluts:bop_blue", + "chrisluts:bop_blue_r", + "bop_orange", + "bop_orange_r", + "chrisluts:bop_orange", + "chrisluts:bop_orange_r", + "bop_purple", + "bop_purple_r", + "chrisluts:bop_purple", + "chrisluts:bop_purple_r", + "cgy_3c", + "cgy_3c_r", + "chrisluts:cgy_3c", + "chrisluts:cgy_3c_r", + "i_blue", + "i_blue_r", + "chrisluts:i_blue", + "chrisluts:i_blue_r", + "i_bordeaux", + "i_bordeaux_r", + "chrisluts:i_bordeaux", + "chrisluts:i_bordeaux_r", + "i_cyan", + "i_cyan_r", + "chrisluts:i_cyan", + "chrisluts:i_cyan_r", + "i_forest", + "i_forest_r", + "chrisluts:i_forest", + "chrisluts:i_forest_r", + "i_green", + "i_green_r", + "chrisluts:i_green", + "chrisluts:i_green_r", + "i_magenta", + "i_magenta_r", + "chrisluts:i_magenta", + "chrisluts:i_magenta_r", + "i_orange", + "i_orange_r", + "chrisluts:i_orange", + "chrisluts:i_orange_r", + "i_purple", + "i_purple_r", + "chrisluts:i_purple", + "chrisluts:i_purple_r", + "i_red", + "i_red_r", + "chrisluts:i_red", + "chrisluts:i_red_r", + "i_yellow", + "i_yellow_r", + "chrisluts:i_yellow", + "chrisluts:i_yellow_r", + "opf_fresh", + "opf_fresh_r", + "chrisluts:opf_fresh", + "chrisluts:opf_fresh_r", + "opf_orange", + "opf_orange_r", + "chrisluts:opf_orange", + "chrisluts:opf_orange_r", + "opf_purple", + "opf_purple_r", + "chrisluts:opf_purple", + "chrisluts:opf_purple_r", + "rmb_3c", + "rmb_3c_r", + "chrisluts:rmb_3c", + "chrisluts:rmb_3c_r", + "ygc_3c", + "ygc_3c_r", + "chrisluts:ygc_3c", + "chrisluts:ygc_3c_r", + "cividis", + "cividis_r", + "cividis:cividis", + "cividis:cividis_r", + "blue", + "blue_r", + "cmap:blue", + "cmap:blue_r", + "cyan", + "cyan_r", + "cmap:cyan", + "cmap:cyan_r", + "green", + "green_r", + "cmap:green", + "cmap:green_r", + "magenta", + "magenta_r", + "cmap:magenta", + "cmap:magenta_r", + "red", + "red_r", + "cmap:red", + "cmap:red_r", + "white", + "white_r", + "cmap:white", + "cmap:white_r", + "yellow", + "yellow_r", + "cmap:yellow", + "cmap:yellow_r", + "amber", + "amber_r", + "cmasher:amber", + "cmasher:amber_r", + "amethyst", + "amethyst_r", + "cmasher:amethyst", + "cmasher:amethyst_r", + "apple", + "apple_r", + "cmasher:apple", + "cmasher:apple_r", + "arctic", + "arctic_r", + "cmasher:arctic", + "cmasher:arctic_r", + "bubblegum", + "bubblegum_r", + "cmasher:bubblegum", + "cmasher:bubblegum_r", + "chroma", + "chroma_r", + "cmasher:chroma", + "cmasher:chroma_r", + "copper", + "copper_r", + "cmasher:copper", + "cmasher:copper_r", + "cosmic", + "cosmic_r", + "cmasher:cosmic", + "cmasher:cosmic_r", + "dusk", + "dusk_r", + "cmasher:dusk", + "cmasher:dusk_r", + "eclipse", + "eclipse_r", + "cmasher:eclipse", + "cmasher:eclipse_r", + "ember", + "ember_r", + "cmasher:ember", + "cmasher:ember_r", + "emerald", + "emerald_r", + "cmasher:emerald", + "cmasher:emerald_r", + "emergency", + "emergency_r", + "cmasher:emergency", + "cmasher:emergency_r", + "fall", + "fall_r", + "cmasher:fall", + "cmasher:fall_r", + "flamingo", + "flamingo_r", + "cmasher:flamingo", + "cmasher:flamingo_r", + "freeze", + "freeze_r", + "cmasher:freeze", + "cmasher:freeze_r", + "fusion", + "fusion_r", + "cmasher:fusion", + "cmasher:fusion_r", + "gem", + "gem_r", + "cmasher:gem", + "cmasher:gem_r", + "ghostlight", + "ghostlight_r", + "cmasher:ghostlight", + "cmasher:ghostlight_r", + "gothic", + "gothic_r", + "cmasher:gothic", + "cmasher:gothic_r", + "guppy", + "guppy_r", + "cmasher:guppy", + "cmasher:guppy_r", + "holly", + "holly_r", + "cmasher:holly", + "cmasher:holly_r", + "horizon", + "horizon_r", + "cmasher:horizon", + "cmasher:horizon_r", + "iceburn", + "iceburn_r", + "cmasher:iceburn", + "cmasher:iceburn_r", + "infinity", + "infinity_r", + "cmasher:infinity", + "cmasher:infinity_r", + "jungle", + "jungle_r", + "cmasher:jungle", + "cmasher:jungle_r", + "lavender", + "lavender_r", + "cmasher:lavender", + "cmasher:lavender_r", + "lilac", + "lilac_r", + "cmasher:lilac", + "cmasher:lilac_r", + "neon", + "neon_r", + "cmasher:neon", + "cmasher:neon_r", + "neutral", + "neutral_r", + "cmasher:neutral", + "cmasher:neutral_r", + "nuclear", + "nuclear_r", + "cmasher:nuclear", + "cmasher:nuclear_r", + "ocean", + "ocean_r", + "cmasher:ocean", + "cmasher:ocean_r", + "pepper", + "pepper_r", + "cmasher:pepper", + "cmasher:pepper_r", + "pride", + "pride_r", + "cmasher:pride", + "cmasher:pride_r", + "prinsenvlag", + "prinsenvlag_r", + "cmasher:prinsenvlag", + "cmasher:prinsenvlag_r", + "rainforest", + "rainforest_r", + "cmasher:rainforest", + "cmasher:rainforest_r", + "redshift", + "redshift_r", + "cmasher:redshift", + "cmasher:redshift_r", + "sapphire", + "sapphire_r", + "cmasher:sapphire", + "cmasher:sapphire_r", + "savanna", + "savanna_r", + "cmasher:savanna", + "cmasher:savanna_r", + "seasons", + "seasons_r", + "cmasher:seasons", + "cmasher:seasons_r", + "seaweed", + "seaweed_r", + "cmasher:seaweed", + "cmasher:seaweed_r", + "sepia", + "sepia_r", + "cmasher:sepia", + "cmasher:sepia_r", + "sunburst", + "sunburst_r", + "cmasher:sunburst", + "cmasher:sunburst_r", + "swamp", + "swamp_r", + "cmasher:swamp", + "cmasher:swamp_r", + "torch", + "torch_r", + "cmasher:torch", + "cmasher:torch_r", + "toxic", + "toxic_r", + "cmasher:toxic", + "cmasher:toxic_r", + "tree", + "tree_r", + "cmasher:tree", + "cmasher:tree_r", + "tropical", + "tropical_r", + "cmasher:tropical", + "cmasher:tropical_r", + "viola", + "viola_r", + "cmasher:viola", + "cmasher:viola_r", + "voltage", + "voltage_r", + "cmasher:voltage", + "cmasher:voltage_r", + "waterlily", + "waterlily_r", + "cmasher:waterlily", + "cmasher:waterlily_r", + "watermelon", + "watermelon_r", + "cmasher:watermelon", + "cmasher:watermelon_r", + "wildfire", + "wildfire_r", + "cmasher:wildfire", + "cmasher:wildfire_r", + "algae", + "algae_r", + "cmocean:algae", + "cmocean:algae_r", + "amp", + "amp_r", + "cmocean:amp", + "cmocean:amp_r", + "balance", + "balance_r", + "cmocean:balance", + "cmocean:balance_r", + "balance_blue", + "balance_blue_r", + "cmocean:balance_blue", + "cmocean:balance_blue_r", + "curl", + "curl_r", + "cmocean:curl", + "cmocean:curl_r", + "curl_pink", + "curl_pink_r", + "cmocean:curl_pink", + "cmocean:curl_pink_r", + "deep", + "deep_r", + "cmocean:deep", + "cmocean:deep_r", + "delta", + "delta_r", + "cmocean:delta", + "cmocean:delta_r", + "delta_blue", + "delta_blue_r", + "cmocean:delta_blue", + "cmocean:delta_blue_r", + "dense", + "dense_r", + "cmocean:dense", + "cmocean:dense_r", + "diff", + "diff_r", + "cmocean:diff", + "cmocean:diff_r", + "haline", + "haline_r", + "cmocean:haline", + "cmocean:haline_r", + "ice", + "ice_r", + "cmocean:ice", + "cmocean:ice_r", + "matter", + "matter_r", + "cmocean:matter", + "cmocean:matter_r", + "oxy", + "oxy_r", + "cmocean:oxy", + "cmocean:oxy_r", + "phase", + "phase_r", + "cmocean:phase", + "cmocean:phase_r", + "rain", + "rain_r", + "cmocean:rain", + "cmocean:rain_r", + "solar", + "solar_r", + "cmocean:solar", + "cmocean:solar_r", + "speed", + "speed_r", + "cmocean:speed", + "cmocean:speed_r", + "tarn", + "tarn_r", + "cmocean:tarn", + "cmocean:tarn_r", + "tempo", + "tempo_r", + "cmocean:tempo", + "cmocean:tempo_r", + "thermal", + "thermal_r", + "cmocean:thermal", + "cmocean:thermal_r", + "topo", + "topo_r", + "cmocean:topo", + "cmocean:topo_r", + "turbid", + "turbid_r", + "cmocean:turbid", + "cmocean:turbid_r", + "accent", + "accent_r", + "colorbrewer:accent", + "colorbrewer:accent_r", + "accent_3", + "accent_3_r", + "colorbrewer:accent_3", + "colorbrewer:accent_3_r", + "accent_4", + "accent_4_r", + "colorbrewer:accent_4", + "colorbrewer:accent_4_r", + "accent_5", + "accent_5_r", + "colorbrewer:accent_5", + "colorbrewer:accent_5_r", + "accent_6", + "accent_6_r", + "colorbrewer:accent_6", + "colorbrewer:accent_6_r", + "accent_7", + "accent_7_r", + "colorbrewer:accent_7", + "colorbrewer:accent_7_r", + "accent_8", + "accent_8_r", + "colorbrewer:accent_8", + "colorbrewer:accent_8_r", + "blues", + "blues_r", + "colorbrewer:blues", + "colorbrewer:blues_r", + "blues_3", + "blues_3_r", + "colorbrewer:blues_3", + "colorbrewer:blues_3_r", + "blues_4", + "blues_4_r", + "colorbrewer:blues_4", + "colorbrewer:blues_4_r", + "blues_5", + "blues_5_r", + "colorbrewer:blues_5", + "colorbrewer:blues_5_r", + "blues_6", + "blues_6_r", + "colorbrewer:blues_6", + "colorbrewer:blues_6_r", + "blues_7", + "blues_7_r", + "colorbrewer:blues_7", + "colorbrewer:blues_7_r", + "blues_8", + "blues_8_r", + "colorbrewer:blues_8", + "colorbrewer:blues_8_r", + "blues_9", + "blues_9_r", + "colorbrewer:blues_9", + "colorbrewer:blues_9_r", + "brbg", + "brbg_r", + "colorbrewer:brbg", + "colorbrewer:brbg_r", + "brbg_10", + "brbg_10_r", + "colorbrewer:brbg_10", + "colorbrewer:brbg_10_r", + "brbg_11", + "brbg_11_r", + "colorbrewer:brbg_11", + "colorbrewer:brbg_11_r", + "brbg_3", + "brbg_3_r", + "colorbrewer:brbg_3", + "colorbrewer:brbg_3_r", + "brbg_4", + "brbg_4_r", + "colorbrewer:brbg_4", + "colorbrewer:brbg_4_r", + "brbg_5", + "brbg_5_r", + "colorbrewer:brbg_5", + "colorbrewer:brbg_5_r", + "brbg_6", + "brbg_6_r", + "colorbrewer:brbg_6", + "colorbrewer:brbg_6_r", + "brbg_7", + "brbg_7_r", + "colorbrewer:brbg_7", + "colorbrewer:brbg_7_r", + "brbg_8", + "brbg_8_r", + "colorbrewer:brbg_8", + "colorbrewer:brbg_8_r", + "brbg_9", + "brbg_9_r", + "colorbrewer:brbg_9", + "colorbrewer:brbg_9_r", + "bugn", + "bugn_r", + "colorbrewer:bugn", + "colorbrewer:bugn_r", + "bugn_3", + "bugn_3_r", + "colorbrewer:bugn_3", + "colorbrewer:bugn_3_r", + "bugn_4", + "bugn_4_r", + "colorbrewer:bugn_4", + "colorbrewer:bugn_4_r", + "bugn_5", + "bugn_5_r", + "colorbrewer:bugn_5", + "colorbrewer:bugn_5_r", + "bugn_6", + "bugn_6_r", + "colorbrewer:bugn_6", + "colorbrewer:bugn_6_r", + "bugn_7", + "bugn_7_r", + "colorbrewer:bugn_7", + "colorbrewer:bugn_7_r", + "bugn_8", + "bugn_8_r", + "colorbrewer:bugn_8", + "colorbrewer:bugn_8_r", + "bugn_9", + "bugn_9_r", + "colorbrewer:bugn_9", + "colorbrewer:bugn_9_r", + "bupu", + "bupu_r", + "colorbrewer:bupu", + "colorbrewer:bupu_r", + "bupu_3", + "bupu_3_r", + "colorbrewer:bupu_3", + "colorbrewer:bupu_3_r", + "bupu_4", + "bupu_4_r", + "colorbrewer:bupu_4", + "colorbrewer:bupu_4_r", + "bupu_5", + "bupu_5_r", + "colorbrewer:bupu_5", + "colorbrewer:bupu_5_r", + "bupu_6", + "bupu_6_r", + "colorbrewer:bupu_6", + "colorbrewer:bupu_6_r", + "bupu_7", + "bupu_7_r", + "colorbrewer:bupu_7", + "colorbrewer:bupu_7_r", + "bupu_8", + "bupu_8_r", + "colorbrewer:bupu_8", + "colorbrewer:bupu_8_r", + "bupu_9", + "bupu_9_r", + "colorbrewer:bupu_9", + "colorbrewer:bupu_9_r", + "dark2", + "dark2_r", + "colorbrewer:dark2", + "colorbrewer:dark2_r", + "dark2_3", + "dark2_3_r", + "colorbrewer:dark2_3", + "colorbrewer:dark2_3_r", + "dark2_4", + "dark2_4_r", + "colorbrewer:dark2_4", + "colorbrewer:dark2_4_r", + "dark2_5", + "dark2_5_r", + "colorbrewer:dark2_5", + "colorbrewer:dark2_5_r", + "dark2_6", + "dark2_6_r", + "colorbrewer:dark2_6", + "colorbrewer:dark2_6_r", + "dark2_7", + "dark2_7_r", + "colorbrewer:dark2_7", + "colorbrewer:dark2_7_r", + "dark2_8", + "dark2_8_r", + "colorbrewer:dark2_8", + "colorbrewer:dark2_8_r", + "gnbu", + "gnbu_r", + "colorbrewer:gnbu", + "colorbrewer:gnbu_r", + "gnbu_3", + "gnbu_3_r", + "colorbrewer:gnbu_3", + "colorbrewer:gnbu_3_r", + "gnbu_4", + "gnbu_4_r", + "colorbrewer:gnbu_4", + "colorbrewer:gnbu_4_r", + "gnbu_5", + "gnbu_5_r", + "colorbrewer:gnbu_5", + "colorbrewer:gnbu_5_r", + "gnbu_6", + "gnbu_6_r", + "colorbrewer:gnbu_6", + "colorbrewer:gnbu_6_r", + "gnbu_7", + "gnbu_7_r", + "colorbrewer:gnbu_7", + "colorbrewer:gnbu_7_r", + "gnbu_8", + "gnbu_8_r", + "colorbrewer:gnbu_8", + "colorbrewer:gnbu_8_r", + "gnbu_9", + "gnbu_9_r", + "colorbrewer:gnbu_9", + "colorbrewer:gnbu_9_r", + "greens", + "greens_r", + "colorbrewer:greens", + "colorbrewer:greens_r", + "greens_3", + "greens_3_r", + "colorbrewer:greens_3", + "colorbrewer:greens_3_r", + "greens_4", + "greens_4_r", + "colorbrewer:greens_4", + "colorbrewer:greens_4_r", + "greens_5", + "greens_5_r", + "colorbrewer:greens_5", + "colorbrewer:greens_5_r", + "greens_6", + "greens_6_r", + "colorbrewer:greens_6", + "colorbrewer:greens_6_r", + "greens_7", + "greens_7_r", + "colorbrewer:greens_7", + "colorbrewer:greens_7_r", + "greens_8", + "greens_8_r", + "colorbrewer:greens_8", + "colorbrewer:greens_8_r", + "greens_9", + "greens_9_r", + "colorbrewer:greens_9", + "colorbrewer:greens_9_r", + "greys", + "greys_r", + "colorbrewer:greys", + "colorbrewer:greys_r", + "greys_3", + "greys_3_r", + "colorbrewer:greys_3", + "colorbrewer:greys_3_r", + "greys_4", + "greys_4_r", + "colorbrewer:greys_4", + "colorbrewer:greys_4_r", + "greys_5", + "greys_5_r", + "colorbrewer:greys_5", + "colorbrewer:greys_5_r", + "greys_6", + "greys_6_r", + "colorbrewer:greys_6", + "colorbrewer:greys_6_r", + "greys_7", + "greys_7_r", + "colorbrewer:greys_7", + "colorbrewer:greys_7_r", + "greys_8", + "greys_8_r", + "colorbrewer:greys_8", + "colorbrewer:greys_8_r", + "greys_9", + "greys_9_r", + "colorbrewer:greys_9", + "colorbrewer:greys_9_r", + "orrd", + "orrd_r", + "colorbrewer:orrd", + "colorbrewer:orrd_r", + "orrd_3", + "orrd_3_r", + "colorbrewer:orrd_3", + "colorbrewer:orrd_3_r", + "orrd_4", + "orrd_4_r", + "colorbrewer:orrd_4", + "colorbrewer:orrd_4_r", + "orrd_5", + "orrd_5_r", + "colorbrewer:orrd_5", + "colorbrewer:orrd_5_r", + "orrd_6", + "orrd_6_r", + "colorbrewer:orrd_6", + "colorbrewer:orrd_6_r", + "orrd_7", + "orrd_7_r", + "colorbrewer:orrd_7", + "colorbrewer:orrd_7_r", + "orrd_8", + "orrd_8_r", + "colorbrewer:orrd_8", + "colorbrewer:orrd_8_r", + "orrd_9", + "orrd_9_r", + "colorbrewer:orrd_9", + "colorbrewer:orrd_9_r", + "oranges", + "oranges_r", + "colorbrewer:oranges", + "colorbrewer:oranges_r", + "oranges_3", + "oranges_3_r", + "colorbrewer:oranges_3", + "colorbrewer:oranges_3_r", + "oranges_4", + "oranges_4_r", + "colorbrewer:oranges_4", + "colorbrewer:oranges_4_r", + "oranges_5", + "oranges_5_r", + "colorbrewer:oranges_5", + "colorbrewer:oranges_5_r", + "oranges_6", + "oranges_6_r", + "colorbrewer:oranges_6", + "colorbrewer:oranges_6_r", + "oranges_7", + "oranges_7_r", + "colorbrewer:oranges_7", + "colorbrewer:oranges_7_r", + "oranges_8", + "oranges_8_r", + "colorbrewer:oranges_8", + "colorbrewer:oranges_8_r", + "oranges_9", + "oranges_9_r", + "colorbrewer:oranges_9", + "colorbrewer:oranges_9_r", + "prgn", + "prgn_r", + "colorbrewer:prgn", + "colorbrewer:prgn_r", + "prgn_10", + "prgn_10_r", + "colorbrewer:prgn_10", + "colorbrewer:prgn_10_r", + "prgn_11", + "prgn_11_r", + "colorbrewer:prgn_11", + "colorbrewer:prgn_11_r", + "prgn_3", + "prgn_3_r", + "colorbrewer:prgn_3", + "colorbrewer:prgn_3_r", + "prgn_4", + "prgn_4_r", + "colorbrewer:prgn_4", + "colorbrewer:prgn_4_r", + "prgn_5", + "prgn_5_r", + "colorbrewer:prgn_5", + "colorbrewer:prgn_5_r", + "prgn_6", + "prgn_6_r", + "colorbrewer:prgn_6", + "colorbrewer:prgn_6_r", + "prgn_7", + "prgn_7_r", + "colorbrewer:prgn_7", + "colorbrewer:prgn_7_r", + "prgn_8", + "prgn_8_r", + "colorbrewer:prgn_8", + "colorbrewer:prgn_8_r", + "prgn_9", + "prgn_9_r", + "colorbrewer:prgn_9", + "colorbrewer:prgn_9_r", + "paired", + "paired_r", + "colorbrewer:paired", + "colorbrewer:paired_r", + "paired_10", + "paired_10_r", + "colorbrewer:paired_10", + "colorbrewer:paired_10_r", + "paired_11", + "paired_11_r", + "colorbrewer:paired_11", + "colorbrewer:paired_11_r", + "paired_12", + "paired_12_r", + "colorbrewer:paired_12", + "colorbrewer:paired_12_r", + "paired_3", + "paired_3_r", + "colorbrewer:paired_3", + "colorbrewer:paired_3_r", + "paired_4", + "paired_4_r", + "colorbrewer:paired_4", + "colorbrewer:paired_4_r", + "paired_5", + "paired_5_r", + "colorbrewer:paired_5", + "colorbrewer:paired_5_r", + "paired_6", + "paired_6_r", + "colorbrewer:paired_6", + "colorbrewer:paired_6_r", + "paired_7", + "paired_7_r", + "colorbrewer:paired_7", + "colorbrewer:paired_7_r", + "paired_8", + "paired_8_r", + "colorbrewer:paired_8", + "colorbrewer:paired_8_r", + "paired_9", + "paired_9_r", + "colorbrewer:paired_9", + "colorbrewer:paired_9_r", + "pastel1", + "pastel1_r", + "colorbrewer:pastel1", + "colorbrewer:pastel1_r", + "pastel1_3", + "pastel1_3_r", + "colorbrewer:pastel1_3", + "colorbrewer:pastel1_3_r", + "pastel1_4", + "pastel1_4_r", + "colorbrewer:pastel1_4", + "colorbrewer:pastel1_4_r", + "pastel1_5", + "pastel1_5_r", + "colorbrewer:pastel1_5", + "colorbrewer:pastel1_5_r", + "pastel1_6", + "pastel1_6_r", + "colorbrewer:pastel1_6", + "colorbrewer:pastel1_6_r", + "pastel1_7", + "pastel1_7_r", + "colorbrewer:pastel1_7", + "colorbrewer:pastel1_7_r", + "pastel1_8", + "pastel1_8_r", + "colorbrewer:pastel1_8", + "colorbrewer:pastel1_8_r", + "pastel1_9", + "pastel1_9_r", + "colorbrewer:pastel1_9", + "colorbrewer:pastel1_9_r", + "pastel2", + "pastel2_r", + "colorbrewer:pastel2", + "colorbrewer:pastel2_r", + "pastel2_3", + "pastel2_3_r", + "colorbrewer:pastel2_3", + "colorbrewer:pastel2_3_r", + "pastel2_4", + "pastel2_4_r", + "colorbrewer:pastel2_4", + "colorbrewer:pastel2_4_r", + "pastel2_5", + "pastel2_5_r", + "colorbrewer:pastel2_5", + "colorbrewer:pastel2_5_r", + "pastel2_6", + "pastel2_6_r", + "colorbrewer:pastel2_6", + "colorbrewer:pastel2_6_r", + "pastel2_7", + "pastel2_7_r", + "colorbrewer:pastel2_7", + "colorbrewer:pastel2_7_r", + "pastel2_8", + "pastel2_8_r", + "colorbrewer:pastel2_8", + "colorbrewer:pastel2_8_r", + "piyg", + "piyg_r", + "colorbrewer:piyg", + "colorbrewer:piyg_r", + "piyg_10", + "piyg_10_r", + "colorbrewer:piyg_10", + "colorbrewer:piyg_10_r", + "piyg_11", + "piyg_11_r", + "colorbrewer:piyg_11", + "colorbrewer:piyg_11_r", + "piyg_3", + "piyg_3_r", + "colorbrewer:piyg_3", + "colorbrewer:piyg_3_r", + "piyg_4", + "piyg_4_r", + "colorbrewer:piyg_4", + "colorbrewer:piyg_4_r", + "piyg_5", + "piyg_5_r", + "colorbrewer:piyg_5", + "colorbrewer:piyg_5_r", + "piyg_6", + "piyg_6_r", + "colorbrewer:piyg_6", + "colorbrewer:piyg_6_r", + "piyg_7", + "piyg_7_r", + "colorbrewer:piyg_7", + "colorbrewer:piyg_7_r", + "piyg_8", + "piyg_8_r", + "colorbrewer:piyg_8", + "colorbrewer:piyg_8_r", + "piyg_9", + "piyg_9_r", + "colorbrewer:piyg_9", + "colorbrewer:piyg_9_r", + "pubu", + "pubu_r", + "colorbrewer:pubu", + "colorbrewer:pubu_r", + "pubugn", + "pubugn_r", + "colorbrewer:pubugn", + "colorbrewer:pubugn_r", + "pubugn_3", + "pubugn_3_r", + "colorbrewer:pubugn_3", + "colorbrewer:pubugn_3_r", + "pubugn_4", + "pubugn_4_r", + "colorbrewer:pubugn_4", + "colorbrewer:pubugn_4_r", + "pubugn_5", + "pubugn_5_r", + "colorbrewer:pubugn_5", + "colorbrewer:pubugn_5_r", + "pubugn_6", + "pubugn_6_r", + "colorbrewer:pubugn_6", + "colorbrewer:pubugn_6_r", + "pubugn_7", + "pubugn_7_r", + "colorbrewer:pubugn_7", + "colorbrewer:pubugn_7_r", + "pubugn_8", + "pubugn_8_r", + "colorbrewer:pubugn_8", + "colorbrewer:pubugn_8_r", + "pubugn_9", + "pubugn_9_r", + "colorbrewer:pubugn_9", + "colorbrewer:pubugn_9_r", + "pubu_3", + "pubu_3_r", + "colorbrewer:pubu_3", + "colorbrewer:pubu_3_r", + "pubu_4", + "pubu_4_r", + "colorbrewer:pubu_4", + "colorbrewer:pubu_4_r", + "pubu_5", + "pubu_5_r", + "colorbrewer:pubu_5", + "colorbrewer:pubu_5_r", + "pubu_6", + "pubu_6_r", + "colorbrewer:pubu_6", + "colorbrewer:pubu_6_r", + "pubu_7", + "pubu_7_r", + "colorbrewer:pubu_7", + "colorbrewer:pubu_7_r", + "pubu_8", + "pubu_8_r", + "colorbrewer:pubu_8", + "colorbrewer:pubu_8_r", + "pubu_9", + "pubu_9_r", + "colorbrewer:pubu_9", + "colorbrewer:pubu_9_r", + "puor", + "puor_r", + "colorbrewer:puor", + "colorbrewer:puor_r", + "puor_10", + "puor_10_r", + "colorbrewer:puor_10", + "colorbrewer:puor_10_r", + "puor_11", + "puor_11_r", + "colorbrewer:puor_11", + "colorbrewer:puor_11_r", + "puor_3", + "puor_3_r", + "colorbrewer:puor_3", + "colorbrewer:puor_3_r", + "puor_4", + "puor_4_r", + "colorbrewer:puor_4", + "colorbrewer:puor_4_r", + "puor_5", + "puor_5_r", + "colorbrewer:puor_5", + "colorbrewer:puor_5_r", + "puor_6", + "puor_6_r", + "colorbrewer:puor_6", + "colorbrewer:puor_6_r", + "puor_7", + "puor_7_r", + "colorbrewer:puor_7", + "colorbrewer:puor_7_r", + "puor_8", + "puor_8_r", + "colorbrewer:puor_8", + "colorbrewer:puor_8_r", + "puor_9", + "puor_9_r", + "colorbrewer:puor_9", + "colorbrewer:puor_9_r", + "purd", + "purd_r", + "colorbrewer:purd", + "colorbrewer:purd_r", + "purd_3", + "purd_3_r", + "colorbrewer:purd_3", + "colorbrewer:purd_3_r", + "purd_4", + "purd_4_r", + "colorbrewer:purd_4", + "colorbrewer:purd_4_r", + "purd_5", + "purd_5_r", + "colorbrewer:purd_5", + "colorbrewer:purd_5_r", + "purd_6", + "purd_6_r", + "colorbrewer:purd_6", + "colorbrewer:purd_6_r", + "purd_7", + "purd_7_r", + "colorbrewer:purd_7", + "colorbrewer:purd_7_r", + "purd_8", + "purd_8_r", + "colorbrewer:purd_8", + "colorbrewer:purd_8_r", + "purd_9", + "purd_9_r", + "colorbrewer:purd_9", + "colorbrewer:purd_9_r", + "purples", + "purples_r", + "colorbrewer:purples", + "colorbrewer:purples_r", + "purples_3", + "purples_3_r", + "colorbrewer:purples_3", + "colorbrewer:purples_3_r", + "purples_4", + "purples_4_r", + "colorbrewer:purples_4", + "colorbrewer:purples_4_r", + "purples_5", + "purples_5_r", + "colorbrewer:purples_5", + "colorbrewer:purples_5_r", + "purples_6", + "purples_6_r", + "colorbrewer:purples_6", + "colorbrewer:purples_6_r", + "purples_7", + "purples_7_r", + "colorbrewer:purples_7", + "colorbrewer:purples_7_r", + "purples_8", + "purples_8_r", + "colorbrewer:purples_8", + "colorbrewer:purples_8_r", + "purples_9", + "purples_9_r", + "colorbrewer:purples_9", + "colorbrewer:purples_9_r", + "rdbu", + "rdbu_r", + "colorbrewer:rdbu", + "colorbrewer:rdbu_r", + "rdbu_10", + "rdbu_10_r", + "colorbrewer:rdbu_10", + "colorbrewer:rdbu_10_r", + "rdbu_11", + "rdbu_11_r", + "colorbrewer:rdbu_11", + "colorbrewer:rdbu_11_r", + "rdbu_3", + "rdbu_3_r", + "colorbrewer:rdbu_3", + "colorbrewer:rdbu_3_r", + "rdbu_4", + "rdbu_4_r", + "colorbrewer:rdbu_4", + "colorbrewer:rdbu_4_r", + "rdbu_5", + "rdbu_5_r", + "colorbrewer:rdbu_5", + "colorbrewer:rdbu_5_r", + "rdbu_6", + "rdbu_6_r", + "colorbrewer:rdbu_6", + "colorbrewer:rdbu_6_r", + "rdbu_7", + "rdbu_7_r", + "colorbrewer:rdbu_7", + "colorbrewer:rdbu_7_r", + "rdbu_8", + "rdbu_8_r", + "colorbrewer:rdbu_8", + "colorbrewer:rdbu_8_r", + "rdbu_9", + "rdbu_9_r", + "colorbrewer:rdbu_9", + "colorbrewer:rdbu_9_r", + "rdgy", + "rdgy_r", + "colorbrewer:rdgy", + "colorbrewer:rdgy_r", + "rdgy_10", + "rdgy_10_r", + "colorbrewer:rdgy_10", + "colorbrewer:rdgy_10_r", + "rdgy_11", + "rdgy_11_r", + "colorbrewer:rdgy_11", + "colorbrewer:rdgy_11_r", + "rdgy_3", + "rdgy_3_r", + "colorbrewer:rdgy_3", + "colorbrewer:rdgy_3_r", + "rdgy_4", + "rdgy_4_r", + "colorbrewer:rdgy_4", + "colorbrewer:rdgy_4_r", + "rdgy_5", + "rdgy_5_r", + "colorbrewer:rdgy_5", + "colorbrewer:rdgy_5_r", + "rdgy_6", + "rdgy_6_r", + "colorbrewer:rdgy_6", + "colorbrewer:rdgy_6_r", + "rdgy_7", + "rdgy_7_r", + "colorbrewer:rdgy_7", + "colorbrewer:rdgy_7_r", + "rdgy_8", + "rdgy_8_r", + "colorbrewer:rdgy_8", + "colorbrewer:rdgy_8_r", + "rdgy_9", + "rdgy_9_r", + "colorbrewer:rdgy_9", + "colorbrewer:rdgy_9_r", + "rdpu", + "rdpu_r", + "colorbrewer:rdpu", + "colorbrewer:rdpu_r", + "rdpu_3", + "rdpu_3_r", + "colorbrewer:rdpu_3", + "colorbrewer:rdpu_3_r", + "rdpu_4", + "rdpu_4_r", + "colorbrewer:rdpu_4", + "colorbrewer:rdpu_4_r", + "rdpu_5", + "rdpu_5_r", + "colorbrewer:rdpu_5", + "colorbrewer:rdpu_5_r", + "rdpu_6", + "rdpu_6_r", + "colorbrewer:rdpu_6", + "colorbrewer:rdpu_6_r", + "rdpu_7", + "rdpu_7_r", + "colorbrewer:rdpu_7", + "colorbrewer:rdpu_7_r", + "rdpu_8", + "rdpu_8_r", + "colorbrewer:rdpu_8", + "colorbrewer:rdpu_8_r", + "rdpu_9", + "rdpu_9_r", + "colorbrewer:rdpu_9", + "colorbrewer:rdpu_9_r", + "rdylbu", + "rdylbu_r", + "colorbrewer:rdylbu", + "colorbrewer:rdylbu_r", + "rdylbu_10", + "rdylbu_10_r", + "colorbrewer:rdylbu_10", + "colorbrewer:rdylbu_10_r", + "rdylbu_11", + "rdylbu_11_r", + "colorbrewer:rdylbu_11", + "colorbrewer:rdylbu_11_r", + "rdylbu_3", + "rdylbu_3_r", + "colorbrewer:rdylbu_3", + "colorbrewer:rdylbu_3_r", + "rdylbu_4", + "rdylbu_4_r", + "colorbrewer:rdylbu_4", + "colorbrewer:rdylbu_4_r", + "rdylbu_5", + "rdylbu_5_r", + "colorbrewer:rdylbu_5", + "colorbrewer:rdylbu_5_r", + "rdylbu_6", + "rdylbu_6_r", + "colorbrewer:rdylbu_6", + "colorbrewer:rdylbu_6_r", + "rdylbu_7", + "rdylbu_7_r", + "colorbrewer:rdylbu_7", + "colorbrewer:rdylbu_7_r", + "rdylbu_8", + "rdylbu_8_r", + "colorbrewer:rdylbu_8", + "colorbrewer:rdylbu_8_r", + "rdylbu_9", + "rdylbu_9_r", + "colorbrewer:rdylbu_9", + "colorbrewer:rdylbu_9_r", + "rdylgn", + "rdylgn_r", + "colorbrewer:rdylgn", + "colorbrewer:rdylgn_r", + "rdylgn_10", + "rdylgn_10_r", + "colorbrewer:rdylgn_10", + "colorbrewer:rdylgn_10_r", + "rdylgn_11", + "rdylgn_11_r", + "colorbrewer:rdylgn_11", + "colorbrewer:rdylgn_11_r", + "rdylgn_3", + "rdylgn_3_r", + "colorbrewer:rdylgn_3", + "colorbrewer:rdylgn_3_r", + "rdylgn_4", + "rdylgn_4_r", + "colorbrewer:rdylgn_4", + "colorbrewer:rdylgn_4_r", + "rdylgn_5", + "rdylgn_5_r", + "colorbrewer:rdylgn_5", + "colorbrewer:rdylgn_5_r", + "rdylgn_6", + "rdylgn_6_r", + "colorbrewer:rdylgn_6", + "colorbrewer:rdylgn_6_r", + "rdylgn_7", + "rdylgn_7_r", + "colorbrewer:rdylgn_7", + "colorbrewer:rdylgn_7_r", + "rdylgn_8", + "rdylgn_8_r", + "colorbrewer:rdylgn_8", + "colorbrewer:rdylgn_8_r", + "rdylgn_9", + "rdylgn_9_r", + "colorbrewer:rdylgn_9", + "colorbrewer:rdylgn_9_r", + "reds", + "reds_r", + "colorbrewer:reds", + "colorbrewer:reds_r", + "reds_3", + "reds_3_r", + "colorbrewer:reds_3", + "colorbrewer:reds_3_r", + "reds_4", + "reds_4_r", + "colorbrewer:reds_4", + "colorbrewer:reds_4_r", + "reds_5", + "reds_5_r", + "colorbrewer:reds_5", + "colorbrewer:reds_5_r", + "reds_6", + "reds_6_r", + "colorbrewer:reds_6", + "colorbrewer:reds_6_r", + "reds_7", + "reds_7_r", + "colorbrewer:reds_7", + "colorbrewer:reds_7_r", + "reds_8", + "reds_8_r", + "colorbrewer:reds_8", + "colorbrewer:reds_8_r", + "reds_9", + "reds_9_r", + "colorbrewer:reds_9", + "colorbrewer:reds_9_r", + "set1", + "set1_r", + "colorbrewer:set1", + "colorbrewer:set1_r", + "set1_3", + "set1_3_r", + "colorbrewer:set1_3", + "colorbrewer:set1_3_r", + "set1_4", + "set1_4_r", + "colorbrewer:set1_4", + "colorbrewer:set1_4_r", + "set1_5", + "set1_5_r", + "colorbrewer:set1_5", + "colorbrewer:set1_5_r", + "set1_6", + "set1_6_r", + "colorbrewer:set1_6", + "colorbrewer:set1_6_r", + "set1_7", + "set1_7_r", + "colorbrewer:set1_7", + "colorbrewer:set1_7_r", + "set1_8", + "set1_8_r", + "colorbrewer:set1_8", + "colorbrewer:set1_8_r", + "set1_9", + "set1_9_r", + "colorbrewer:set1_9", + "colorbrewer:set1_9_r", + "set2", + "set2_r", + "colorbrewer:set2", + "colorbrewer:set2_r", + "set2_3", + "set2_3_r", + "colorbrewer:set2_3", + "colorbrewer:set2_3_r", + "set2_4", + "set2_4_r", + "colorbrewer:set2_4", + "colorbrewer:set2_4_r", + "set2_5", + "set2_5_r", + "colorbrewer:set2_5", + "colorbrewer:set2_5_r", + "set2_6", + "set2_6_r", + "colorbrewer:set2_6", + "colorbrewer:set2_6_r", + "set2_7", + "set2_7_r", + "colorbrewer:set2_7", + "colorbrewer:set2_7_r", + "set2_8", + "set2_8_r", + "colorbrewer:set2_8", + "colorbrewer:set2_8_r", + "set3", + "set3_r", + "colorbrewer:set3", + "colorbrewer:set3_r", + "set3_10", + "set3_10_r", + "colorbrewer:set3_10", + "colorbrewer:set3_10_r", + "set3_11", + "set3_11_r", + "colorbrewer:set3_11", + "colorbrewer:set3_11_r", + "set3_12", + "set3_12_r", + "colorbrewer:set3_12", + "colorbrewer:set3_12_r", + "set3_3", + "set3_3_r", + "colorbrewer:set3_3", + "colorbrewer:set3_3_r", + "set3_4", + "set3_4_r", + "colorbrewer:set3_4", + "colorbrewer:set3_4_r", + "set3_5", + "set3_5_r", + "colorbrewer:set3_5", + "colorbrewer:set3_5_r", + "set3_6", + "set3_6_r", + "colorbrewer:set3_6", + "colorbrewer:set3_6_r", + "set3_7", + "set3_7_r", + "colorbrewer:set3_7", + "colorbrewer:set3_7_r", + "set3_8", + "set3_8_r", + "colorbrewer:set3_8", + "colorbrewer:set3_8_r", + "set3_9", + "set3_9_r", + "colorbrewer:set3_9", + "colorbrewer:set3_9_r", + "spectral", + "spectral_r", + "colorbrewer:spectral", + "colorbrewer:spectral_r", + "spectral_10", + "spectral_10_r", + "colorbrewer:spectral_10", + "colorbrewer:spectral_10_r", + "spectral_11", + "spectral_11_r", + "colorbrewer:spectral_11", + "colorbrewer:spectral_11_r", + "spectral_3", + "spectral_3_r", + "colorbrewer:spectral_3", + "colorbrewer:spectral_3_r", + "spectral_4", + "spectral_4_r", + "colorbrewer:spectral_4", + "colorbrewer:spectral_4_r", + "spectral_5", + "spectral_5_r", + "colorbrewer:spectral_5", + "colorbrewer:spectral_5_r", + "spectral_6", + "spectral_6_r", + "colorbrewer:spectral_6", + "colorbrewer:spectral_6_r", + "spectral_7", + "spectral_7_r", + "colorbrewer:spectral_7", + "colorbrewer:spectral_7_r", + "spectral_8", + "spectral_8_r", + "colorbrewer:spectral_8", + "colorbrewer:spectral_8_r", + "spectral_9", + "spectral_9_r", + "colorbrewer:spectral_9", + "colorbrewer:spectral_9_r", + "ylgn", + "ylgn_r", + "colorbrewer:ylgn", + "colorbrewer:ylgn_r", + "ylgnbu", + "ylgnbu_r", + "colorbrewer:ylgnbu", + "colorbrewer:ylgnbu_r", + "ylgnbu_3", + "ylgnbu_3_r", + "colorbrewer:ylgnbu_3", + "colorbrewer:ylgnbu_3_r", + "ylgnbu_4", + "ylgnbu_4_r", + "colorbrewer:ylgnbu_4", + "colorbrewer:ylgnbu_4_r", + "ylgnbu_5", + "ylgnbu_5_r", + "colorbrewer:ylgnbu_5", + "colorbrewer:ylgnbu_5_r", + "ylgnbu_6", + "ylgnbu_6_r", + "colorbrewer:ylgnbu_6", + "colorbrewer:ylgnbu_6_r", + "ylgnbu_7", + "ylgnbu_7_r", + "colorbrewer:ylgnbu_7", + "colorbrewer:ylgnbu_7_r", + "ylgnbu_8", + "ylgnbu_8_r", + "colorbrewer:ylgnbu_8", + "colorbrewer:ylgnbu_8_r", + "ylgnbu_9", + "ylgnbu_9_r", + "colorbrewer:ylgnbu_9", + "colorbrewer:ylgnbu_9_r", + "ylgn_3", + "ylgn_3_r", + "colorbrewer:ylgn_3", + "colorbrewer:ylgn_3_r", + "ylgn_4", + "ylgn_4_r", + "colorbrewer:ylgn_4", + "colorbrewer:ylgn_4_r", + "ylgn_5", + "ylgn_5_r", + "colorbrewer:ylgn_5", + "colorbrewer:ylgn_5_r", + "ylgn_6", + "ylgn_6_r", + "colorbrewer:ylgn_6", + "colorbrewer:ylgn_6_r", + "ylgn_7", + "ylgn_7_r", + "colorbrewer:ylgn_7", + "colorbrewer:ylgn_7_r", + "ylgn_8", + "ylgn_8_r", + "colorbrewer:ylgn_8", + "colorbrewer:ylgn_8_r", + "ylgn_9", + "ylgn_9_r", + "colorbrewer:ylgn_9", + "colorbrewer:ylgn_9_r", + "ylorbr", + "ylorbr_r", + "colorbrewer:ylorbr", + "colorbrewer:ylorbr_r", + "ylorbr_3", + "ylorbr_3_r", + "colorbrewer:ylorbr_3", + "colorbrewer:ylorbr_3_r", + "ylorbr_4", + "ylorbr_4_r", + "colorbrewer:ylorbr_4", + "colorbrewer:ylorbr_4_r", + "ylorbr_5", + "ylorbr_5_r", + "colorbrewer:ylorbr_5", + "colorbrewer:ylorbr_5_r", + "ylorbr_6", + "ylorbr_6_r", + "colorbrewer:ylorbr_6", + "colorbrewer:ylorbr_6_r", + "ylorbr_7", + "ylorbr_7_r", + "colorbrewer:ylorbr_7", + "colorbrewer:ylorbr_7_r", + "ylorbr_8", + "ylorbr_8_r", + "colorbrewer:ylorbr_8", + "colorbrewer:ylorbr_8_r", + "ylorbr_9", + "ylorbr_9_r", + "colorbrewer:ylorbr_9", + "colorbrewer:ylorbr_9_r", + "ylorrd", + "ylorrd_r", + "colorbrewer:ylorrd", + "colorbrewer:ylorrd_r", + "ylorrd_3", + "ylorrd_3_r", + "colorbrewer:ylorrd_3", + "colorbrewer:ylorrd_3_r", + "ylorrd_4", + "ylorrd_4_r", + "colorbrewer:ylorrd_4", + "colorbrewer:ylorrd_4_r", + "ylorrd_5", + "ylorrd_5_r", + "colorbrewer:ylorrd_5", + "colorbrewer:ylorrd_5_r", + "ylorrd_6", + "ylorrd_6_r", + "colorbrewer:ylorrd_6", + "colorbrewer:ylorrd_6_r", + "ylorrd_7", + "ylorrd_7_r", + "colorbrewer:ylorrd_7", + "colorbrewer:ylorrd_7_r", + "ylorrd_8", + "ylorrd_8_r", + "colorbrewer:ylorrd_8", + "colorbrewer:ylorrd_8_r", + "ylorrd_9", + "ylorrd_9_r", + "colorbrewer:ylorrd_9", + "colorbrewer:ylorrd_9_r", + "cet_c1", + "cet_c1_r", + "colorcet:cet_c1", + "colorcet:cet_c1_r", + "cet_c10", + "cet_c10_r", + "colorcet:cet_c10", + "colorcet:cet_c10_r", + "cet_c11", + "cet_c11_r", + "colorcet:cet_c11", + "colorcet:cet_c11_r", + "cet_c2", + "cet_c2_r", + "colorcet:cet_c2", + "colorcet:cet_c2_r", + "cet_c3", + "cet_c3_r", + "colorcet:cet_c3", + "colorcet:cet_c3_r", + "cet_c4", + "cet_c4_r", + "colorcet:cet_c4", + "colorcet:cet_c4_r", + "cet_c5", + "cet_c5_r", + "colorcet:cet_c5", + "colorcet:cet_c5_r", + "cet_c6", + "cet_c6_r", + "colorcet:cet_c6", + "colorcet:cet_c6_r", + "cet_c7", + "cet_c7_r", + "colorcet:cet_c7", + "colorcet:cet_c7_r", + "cet_c8", + "cet_c8_r", + "colorcet:cet_c8", + "colorcet:cet_c8_r", + "cet_c9", + "cet_c9_r", + "colorcet:cet_c9", + "colorcet:cet_c9_r", + "cet_cbc1", + "cet_cbc1_r", + "colorcet:cet_cbc1", + "colorcet:cet_cbc1_r", + "cet_cbc2", + "cet_cbc2_r", + "colorcet:cet_cbc2", + "colorcet:cet_cbc2_r", + "cet_cbd1", + "cet_cbd1_r", + "colorcet:cet_cbd1", + "colorcet:cet_cbd1_r", + "cet_cbd2", + "cet_cbd2_r", + "colorcet:cet_cbd2", + "colorcet:cet_cbd2_r", + "cet_cbl1", + "cet_cbl1_r", + "colorcet:cet_cbl1", + "colorcet:cet_cbl1_r", + "cet_cbl2", + "cet_cbl2_r", + "colorcet:cet_cbl2", + "colorcet:cet_cbl2_r", + "cet_cbl3", + "cet_cbl3_r", + "colorcet:cet_cbl3", + "colorcet:cet_cbl3_r", + "cet_cbl4", + "cet_cbl4_r", + "colorcet:cet_cbl4", + "colorcet:cet_cbl4_r", + "cet_cbtc1", + "cet_cbtc1_r", + "colorcet:cet_cbtc1", + "colorcet:cet_cbtc1_r", + "cet_cbtc2", + "cet_cbtc2_r", + "colorcet:cet_cbtc2", + "colorcet:cet_cbtc2_r", + "cet_cbtd1", + "cet_cbtd1_r", + "colorcet:cet_cbtd1", + "colorcet:cet_cbtd1_r", + "cet_cbtl1", + "cet_cbtl1_r", + "colorcet:cet_cbtl1", + "colorcet:cet_cbtl1_r", + "cet_cbtl2", + "cet_cbtl2_r", + "colorcet:cet_cbtl2", + "colorcet:cet_cbtl2_r", + "cet_cbtl3", + "cet_cbtl3_r", + "colorcet:cet_cbtl3", + "colorcet:cet_cbtl3_r", + "cet_cbtl4", + "cet_cbtl4_r", + "colorcet:cet_cbtl4", + "colorcet:cet_cbtl4_r", + "cet_d1", + "cet_d1_r", + "colorcet:cet_d1", + "colorcet:cet_d1_r", + "cet_d10", + "cet_d10_r", + "colorcet:cet_d10", + "colorcet:cet_d10_r", + "cet_d11", + "cet_d11_r", + "colorcet:cet_d11", + "colorcet:cet_d11_r", + "cet_d12", + "cet_d12_r", + "colorcet:cet_d12", + "colorcet:cet_d12_r", + "cet_d13", + "cet_d13_r", + "colorcet:cet_d13", + "colorcet:cet_d13_r", + "cet_d1a", + "cet_d1a_r", + "colorcet:cet_d1a", + "colorcet:cet_d1a_r", + "cet_d2", + "cet_d2_r", + "colorcet:cet_d2", + "colorcet:cet_d2_r", + "cet_d3", + "cet_d3_r", + "colorcet:cet_d3", + "colorcet:cet_d3_r", + "cet_d4", + "cet_d4_r", + "colorcet:cet_d4", + "colorcet:cet_d4_r", + "cet_d5", + "cet_d5_r", + "colorcet:cet_d5", + "colorcet:cet_d5_r", + "cet_d6", + "cet_d6_r", + "colorcet:cet_d6", + "colorcet:cet_d6_r", + "cet_d7", + "cet_d7_r", + "colorcet:cet_d7", + "colorcet:cet_d7_r", + "cet_d8", + "cet_d8_r", + "colorcet:cet_d8", + "colorcet:cet_d8_r", + "cet_d9", + "cet_d9_r", + "colorcet:cet_d9", + "colorcet:cet_d9_r", + "cet_i1", + "cet_i1_r", + "colorcet:cet_i1", + "colorcet:cet_i1_r", + "cet_i2", + "cet_i2_r", + "colorcet:cet_i2", + "colorcet:cet_i2_r", + "cet_i3", + "cet_i3_r", + "colorcet:cet_i3", + "colorcet:cet_i3_r", + "cet_l1", + "cet_l1_r", + "colorcet:cet_l1", + "colorcet:cet_l1_r", + "cet_l10", + "cet_l10_r", + "colorcet:cet_l10", + "colorcet:cet_l10_r", + "cet_l11", + "cet_l11_r", + "colorcet:cet_l11", + "colorcet:cet_l11_r", + "cet_l12", + "cet_l12_r", + "colorcet:cet_l12", + "colorcet:cet_l12_r", + "cet_l13", + "cet_l13_r", + "colorcet:cet_l13", + "colorcet:cet_l13_r", + "cet_l14", + "cet_l14_r", + "colorcet:cet_l14", + "colorcet:cet_l14_r", + "cet_l15", + "cet_l15_r", + "colorcet:cet_l15", + "colorcet:cet_l15_r", + "cet_l16", + "cet_l16_r", + "colorcet:cet_l16", + "colorcet:cet_l16_r", + "cet_l17", + "cet_l17_r", + "colorcet:cet_l17", + "colorcet:cet_l17_r", + "cet_l18", + "cet_l18_r", + "colorcet:cet_l18", + "colorcet:cet_l18_r", + "cet_l19", + "cet_l19_r", + "colorcet:cet_l19", + "colorcet:cet_l19_r", + "cet_l2", + "cet_l2_r", + "colorcet:cet_l2", + "colorcet:cet_l2_r", + "cet_l20", + "cet_l20_r", + "colorcet:cet_l20", + "colorcet:cet_l20_r", + "cet_l3", + "cet_l3_r", + "colorcet:cet_l3", + "colorcet:cet_l3_r", + "cet_l4", + "cet_l4_r", + "colorcet:cet_l4", + "colorcet:cet_l4_r", + "cet_l5", + "cet_l5_r", + "colorcet:cet_l5", + "colorcet:cet_l5_r", + "cet_l6", + "cet_l6_r", + "colorcet:cet_l6", + "colorcet:cet_l6_r", + "cet_l7", + "cet_l7_r", + "colorcet:cet_l7", + "colorcet:cet_l7_r", + "cet_l8", + "cet_l8_r", + "colorcet:cet_l8", + "colorcet:cet_l8_r", + "cet_l9", + "cet_l9_r", + "colorcet:cet_l9", + "colorcet:cet_l9_r", + "cet_r1", + "cet_r1_r", + "colorcet:cet_r1", + "colorcet:cet_r1_r", + "cet_r2", + "cet_r2_r", + "colorcet:cet_r2", + "colorcet:cet_r2_r", + "cet_r3", + "cet_r3_r", + "colorcet:cet_r3", + "colorcet:cet_r3_r", + "cet_r4", + "cet_r4_r", + "colorcet:cet_r4", + "colorcet:cet_r4_r", + "araucaria", + "araucaria_r", + "contrib:araucaria", + "contrib:araucaria_r", + "cerrado", + "cerrado_r", + "contrib:cerrado", + "contrib:cerrado_r", + "pantanal", + "pantanal_r", + "contrib:pantanal", + "contrib:pantanal_r", + "acton", + "acton_r", + "crameri:acton", + "crameri:acton_r", + "bam", + "bam_r", + "crameri:bam", + "crameri:bam_r", + "bamo", + "bamo_r", + "crameri:bamo", + "crameri:bamo_r", + "bamako", + "bamako_r", + "crameri:bamako", + "crameri:bamako_r", + "batlow", + "batlow_r", + "crameri:batlow", + "crameri:batlow_r", + "batlowk", + "batlowk_r", + "crameri:batlowk", + "crameri:batlowk_r", + "batloww", + "batloww_r", + "crameri:batloww", + "crameri:batloww_r", + "berlin", + "berlin_r", + "crameri:berlin", + "crameri:berlin_r", + "bilbao", + "bilbao_r", + "crameri:bilbao", + "crameri:bilbao_r", + "broc", + "broc_r", + "crameri:broc", + "crameri:broc_r", + "broco", + "broco_r", + "crameri:broco", + "crameri:broco_r", + "buda", + "buda_r", + "crameri:buda", + "crameri:buda_r", + "bukavu", + "bukavu_r", + "crameri:bukavu", + "crameri:bukavu_r", + "cork", + "cork_r", + "crameri:cork", + "crameri:cork_r", + "corko", + "corko_r", + "crameri:corko", + "crameri:corko_r", + "davos", + "davos_r", + "crameri:davos", + "crameri:davos_r", + "devon", + "devon_r", + "crameri:devon", + "crameri:devon_r", + "fes", + "fes_r", + "crameri:fes", + "crameri:fes_r", + "glasgow", + "glasgow_r", + "crameri:glasgow", + "crameri:glasgow_r", + "grayc", + "grayc_r", + "crameri:grayc", + "crameri:grayc_r", + "hawaii", + "hawaii_r", + "crameri:hawaii", + "crameri:hawaii_r", + "imola", + "imola_r", + "crameri:imola", + "crameri:imola_r", + "lajolla", + "lajolla_r", + "crameri:lajolla", + "crameri:lajolla_r", + "lapaz", + "lapaz_r", + "crameri:lapaz", + "crameri:lapaz_r", + "lipari", + "lipari_r", + "crameri:lipari", + "crameri:lipari_r", + "lisbon", + "lisbon_r", + "crameri:lisbon", + "crameri:lisbon_r", + "managua", + "managua_r", + "crameri:managua", + "crameri:managua_r", + "navia", + "navia_r", + "crameri:navia", + "crameri:navia_r", + "naviaw", + "naviaw_r", + "crameri:naviaw", + "crameri:naviaw_r", + "nuuk", + "nuuk_r", + "crameri:nuuk", + "crameri:nuuk_r", + "oleron", + "oleron_r", + "crameri:oleron", + "crameri:oleron_r", + "oslo", + "oslo_r", + "crameri:oslo", + "crameri:oslo_r", + "roma", + "roma_r", + "crameri:roma", + "crameri:roma_r", + "romao", + "romao_r", + "crameri:romao", + "crameri:romao_r", + "tofino", + "tofino_r", + "crameri:tofino", + "crameri:tofino_r", + "tokyo", + "tokyo_r", + "crameri:tokyo", + "crameri:tokyo_r", + "turku", + "turku_r", + "crameri:turku", + "crameri:turku_r", + "vanimo", + "vanimo_r", + "crameri:vanimo", + "crameri:vanimo_r", + "vik", + "vik_r", + "crameri:vik", + "crameri:vik_r", + "viko", + "viko_r", + "crameri:viko", + "crameri:viko_r", + "cubehelix", + "cubehelix_r", + "cubehelix:cubehelix", + "cubehelix:cubehelix_r", + "glasbey", + "glasbey_r", + "glasbey:glasbey", + "glasbey:glasbey_r", + "afmhot", + "afmhot_r", + "gnuplot:afmhot", + "gnuplot:afmhot_r", + "gnuplot", + "gnuplot_r", + "gnuplot:gnuplot", + "gnuplot:gnuplot_r", + "gnuplot2", + "gnuplot2_r", + "gnuplot:gnuplot2", + "gnuplot:gnuplot2_r", + "grv", + "grv_r", + "gnuplot:grv", + "gnuplot:grv_r", + "ocean", + "ocean_r", + "gnuplot:ocean", + "gnuplot:ocean_r", + "rainbow", + "rainbow_r", + "gnuplot:rainbow", + "gnuplot:rainbow_r", + "turbo", + "turbo_r", + "google:turbo", + "google:turbo_r", + "greenfireblue", + "greenfireblue_r", + "imagej:greenfireblue", + "imagej:greenfireblue_r", + "hilo", + "hilo_r", + "imagej:hilo", + "imagej:hilo_r", + "fire", + "fire_r", + "imagej:fire", + "imagej:fire_r", + "ice", + "ice_r", + "imagej:ice", + "imagej:ice_r", + "autumn", + "autumn_r", + "matlab:autumn", + "matlab:autumn_r", + "bone", + "bone_r", + "matlab:bone", + "matlab:bone_r", + "cool", + "cool_r", + "matlab:cool", + "matlab:cool_r", + "copper", + "copper_r", + "matlab:copper", + "matlab:copper_r", + "flag", + "flag_r", + "matlab:flag", + "matlab:flag_r", + "gray", + "gray_r", + "matlab:gray", + "matlab:gray_r", + "hot", + "hot_r", + "matlab:hot", + "matlab:hot_r", + "hsv", + "hsv_r", + "matlab:hsv", + "matlab:hsv_r", + "jet", + "jet_r", + "matlab:jet", + "matlab:jet_r", + "pink", + "pink_r", + "matlab:pink", + "matlab:pink_r", + "prism", + "prism_r", + "matlab:prism", + "matlab:prism_r", + "spring", + "spring_r", + "matlab:spring", + "matlab:spring_r", + "summer", + "summer_r", + "matlab:summer", + "matlab:summer_r", + "winter", + "winter_r", + "matlab:winter", + "matlab:winter_r", + "cmrmap", + "cmrmap_r", + "matplotlib:cmrmap", + "matplotlib:cmrmap_r", + "grays", + "grays_r", + "matplotlib:grays", + "matplotlib:grays_r", + "wistia", + "wistia_r", + "matplotlib:wistia", + "matplotlib:wistia_r", + "binary", + "binary_r", + "matplotlib:binary", + "matplotlib:binary_r", + "brg", + "brg_r", + "matplotlib:brg", + "matplotlib:brg_r", + "bwr", + "bwr_r", + "matplotlib:bwr", + "matplotlib:bwr_r", + "coolwarm", + "coolwarm_r", + "matplotlib:coolwarm", + "matplotlib:coolwarm_r", + "gist_earth", + "gist_earth_r", + "matplotlib:gist_earth", + "matplotlib:gist_earth_r", + "gist_gray", + "gist_gray_r", + "matplotlib:gist_gray", + "matplotlib:gist_gray_r", + "gist_grey", + "gist_grey_r", + "matplotlib:gist_grey", + "matplotlib:gist_grey_r", + "gist_heat", + "gist_heat_r", + "matplotlib:gist_heat", + "matplotlib:gist_heat_r", + "gist_ncar", + "gist_ncar_r", + "matplotlib:gist_ncar", + "matplotlib:gist_ncar_r", + "gist_rainbow", + "gist_rainbow_r", + "matplotlib:gist_rainbow", + "matplotlib:gist_rainbow_r", + "gist_stern", + "gist_stern_r", + "matplotlib:gist_stern", + "matplotlib:gist_stern_r", + "gist_yarg", + "gist_yarg_r", + "matplotlib:gist_yarg", + "matplotlib:gist_yarg_r", + "gist_yerg", + "gist_yerg_r", + "matplotlib:gist_yerg", + "matplotlib:gist_yerg_r", + "grey", + "grey_r", + "matplotlib:grey", + "matplotlib:grey_r", + "inferno", + "inferno_r", + "matplotlib:inferno", + "matplotlib:inferno_r", + "magma", + "magma_r", + "matplotlib:magma", + "matplotlib:magma_r", + "nipy_spectral", + "nipy_spectral_r", + "matplotlib:nipy_spectral", + "matplotlib:nipy_spectral_r", + "plasma", + "plasma_r", + "matplotlib:plasma", + "matplotlib:plasma_r", + "seismic", + "seismic_r", + "matplotlib:seismic", + "matplotlib:seismic_r", + "terrain", + "terrain_r", + "matplotlib:terrain", + "matplotlib:terrain_r", + "twilight", + "twilight_r", + "matplotlib:twilight", + "matplotlib:twilight_r", + "twilight_shifted", + "twilight_shifted_r", + "matplotlib:twilight_shifted", + "matplotlib:twilight_shifted_r", + "viridis", + "viridis_r", + "matplotlib:viridis", + "matplotlib:viridis_r", + "hilo", + "hilo_r", + "napari:hilo", + "napari:hilo_r", + "nan", + "nan_r", + "napari:nan", + "napari:nan_r", + "observable10", + "observable10_r", + "observable:observable10", + "observable:observable10_r", + "okabeito", + "okabeito_r", + "okabeito:okabeito", + "okabeito:okabeito_r", + "petroff10", + "petroff10_r", + "petroff:petroff10", + "petroff:petroff10_r", + "petroff6", + "petroff6_r", + "petroff:petroff6", + "petroff:petroff6_r", + "petroff8", + "petroff8_r", + "petroff:petroff8", + "petroff:petroff8_r", + "crest", + "crest_r", + "seaborn:crest", + "seaborn:crest_r", + "flare", + "flare_r", + "seaborn:flare", + "seaborn:flare_r", + "icefire", + "icefire_r", + "seaborn:icefire", + "seaborn:icefire_r", + "mako", + "mako_r", + "seaborn:mako", + "seaborn:mako_r", + "rocket", + "rocket_r", + "seaborn:rocket", + "seaborn:rocket_r", + "vlag", + "vlag_r", + "seaborn:vlag", + "seaborn:vlag_r", + "tab10", + "tab10_r", + "tableau:tab10", + "tableau:tab10_r", + "tab10_colorblind", + "tab10_colorblind_r", + "tableau:tab10_colorblind", + "tableau:tab10_colorblind_r", + "tab10_light", + "tab10_light_r", + "tableau:tab10_light", + "tableau:tab10_light_r", + "tab10_medium", + "tab10_medium_r", + "tableau:tab10_medium", + "tableau:tab10_medium_r", + "tab10_new", + "tab10_new_r", + "tableau:tab10_new", + "tableau:tab10_new_r", + "tab20", + "tab20_r", + "tableau:tab20", + "tableau:tab20_r", + "tab20b", + "tab20b_r", + "tableau:tab20b", + "tableau:tab20b_r", + "tab20c", + "tab20c_r", + "tableau:tab20c", + "tableau:tab20c_r", + "tab_traffic_light", + "tab_traffic_light_r", + "tableau:tab_traffic_light", + "tableau:tab_traffic_light_r", + "burd", + "burd_r", + "tol:burd", + "tol:burd_r", + "burd_discrete", + "burd_discrete_r", + "tol:burd_discrete", + "tol:burd_discrete_r", + "prgn", + "prgn_r", + "tol:prgn", + "tol:prgn_r", + "prgn_discrete", + "prgn_discrete_r", + "tol:prgn_discrete", + "tol:prgn_discrete_r", + "whorbr", + "whorbr_r", + "tol:whorbr", + "tol:whorbr_r", + "ylorbr", + "ylorbr_r", + "tol:ylorbr", + "tol:ylorbr_r", + "ylorbr_discrete", + "ylorbr_discrete_r", + "tol:ylorbr_discrete", + "tol:ylorbr_discrete_r", + "bright", + "bright_r", + "tol:bright", + "tol:bright_r", + "bright_alt", + "bright_alt_r", + "tol:bright_alt", + "tol:bright_alt_r", + "dark", + "dark_r", + "tol:dark", + "tol:dark_r", + "high_contrast", + "high_contrast_r", + "tol:high_contrast", + "tol:high_contrast_r", + "high_contrast_alt", + "high_contrast_alt_r", + "tol:high_contrast_alt", + "tol:high_contrast_alt_r", + "incandescent", + "incandescent_r", + "tol:incandescent", + "tol:incandescent_r", + "iridescent", + "iridescent_r", + "tol:iridescent", + "tol:iridescent_r", + "light", + "light_r", + "tol:light", + "tol:light_r", + "light_alt", + "light_alt_r", + "tol:light_alt", + "tol:light_alt_r", + "medium_contrast", + "medium_contrast_r", + "tol:medium_contrast", + "tol:medium_contrast_r", + "medium_contrast_alt", + "medium_contrast_alt_r", + "tol:medium_contrast_alt", + "tol:medium_contrast_alt_r", + "muted", + "muted_r", + "tol:muted", + "tol:muted_r", + "muted_alt", + "muted_alt_r", + "tol:muted_alt", + "tol:muted_alt_r", + "nightfall", + "nightfall_r", + "tol:nightfall", + "tol:nightfall_r", + "nightfall_discrete", + "nightfall_discrete_r", + "tol:nightfall_discrete", + "tol:nightfall_discrete_r", + "pale", + "pale_r", + "tol:pale", + "tol:pale_r", + "rainbow_pubr", + "rainbow_pubr_r", + "tol:rainbow_pubr", + "tol:rainbow_pubr_r", + "rainbow_purd", + "rainbow_purd_r", + "tol:rainbow_purd", + "tol:rainbow_purd_r", + "rainbow_whbr", + "rainbow_whbr_r", + "tol:rainbow_whbr", + "tol:rainbow_whbr_r", + "rainbow_whrd", + "rainbow_whrd_r", + "tol:rainbow_whrd", + "tol:rainbow_whrd_r", + "rainbow_discrete_1", + "rainbow_discrete_1_r", + "tol:rainbow_discrete_1", + "tol:rainbow_discrete_1_r", + "rainbow_discrete_10", + "rainbow_discrete_10_r", + "tol:rainbow_discrete_10", + "tol:rainbow_discrete_10_r", + "rainbow_discrete_11", + "rainbow_discrete_11_r", + "tol:rainbow_discrete_11", + "tol:rainbow_discrete_11_r", + "rainbow_discrete_12", + "rainbow_discrete_12_r", + "tol:rainbow_discrete_12", + "tol:rainbow_discrete_12_r", + "rainbow_discrete_13", + "rainbow_discrete_13_r", + "tol:rainbow_discrete_13", + "tol:rainbow_discrete_13_r", + "rainbow_discrete_14", + "rainbow_discrete_14_r", + "tol:rainbow_discrete_14", + "tol:rainbow_discrete_14_r", + "rainbow_discrete_15", + "rainbow_discrete_15_r", + "tol:rainbow_discrete_15", + "tol:rainbow_discrete_15_r", + "rainbow_discrete_16", + "rainbow_discrete_16_r", + "tol:rainbow_discrete_16", + "tol:rainbow_discrete_16_r", + "rainbow_discrete_17", + "rainbow_discrete_17_r", + "tol:rainbow_discrete_17", + "tol:rainbow_discrete_17_r", + "rainbow_discrete_18", + "rainbow_discrete_18_r", + "tol:rainbow_discrete_18", + "tol:rainbow_discrete_18_r", + "rainbow_discrete_19", + "rainbow_discrete_19_r", + "tol:rainbow_discrete_19", + "tol:rainbow_discrete_19_r", + "rainbow_discrete_2", + "rainbow_discrete_2_r", + "tol:rainbow_discrete_2", + "tol:rainbow_discrete_2_r", + "rainbow_discrete_20", + "rainbow_discrete_20_r", + "tol:rainbow_discrete_20", + "tol:rainbow_discrete_20_r", + "rainbow_discrete_21", + "rainbow_discrete_21_r", + "tol:rainbow_discrete_21", + "tol:rainbow_discrete_21_r", + "rainbow_discrete_22", + "rainbow_discrete_22_r", + "tol:rainbow_discrete_22", + "tol:rainbow_discrete_22_r", + "rainbow_discrete_23", + "rainbow_discrete_23_r", + "tol:rainbow_discrete_23", + "tol:rainbow_discrete_23_r", + "rainbow_discrete_3", + "rainbow_discrete_3_r", + "tol:rainbow_discrete_3", + "tol:rainbow_discrete_3_r", + "rainbow_discrete_4", + "rainbow_discrete_4_r", + "tol:rainbow_discrete_4", + "tol:rainbow_discrete_4_r", + "rainbow_discrete_5", + "rainbow_discrete_5_r", + "tol:rainbow_discrete_5", + "tol:rainbow_discrete_5_r", + "rainbow_discrete_6", + "rainbow_discrete_6_r", + "tol:rainbow_discrete_6", + "tol:rainbow_discrete_6_r", + "rainbow_discrete_7", + "rainbow_discrete_7_r", + "tol:rainbow_discrete_7", + "tol:rainbow_discrete_7_r", + "rainbow_discrete_8", + "rainbow_discrete_8_r", + "tol:rainbow_discrete_8", + "tol:rainbow_discrete_8_r", + "rainbow_discrete_9", + "rainbow_discrete_9_r", + "tol:rainbow_discrete_9", + "tol:rainbow_discrete_9_r", + "sunset", + "sunset_r", + "tol:sunset", + "tol:sunset_r", + "sunset_discrete", + "sunset_discrete_r", + "tol:sunset_discrete", + "tol:sunset_discrete_r", + "vibrant", + "vibrant_r", + "tol:vibrant", + "tol:vibrant_r", + "vibrant_alt", + "vibrant_alt_r", + "tol:vibrant_alt", + "tol:vibrant_alt_r", + "grbu", + "grbu_r", + "vispy:grbu", + "vispy:grbu_r", + "grbu_d", + "grbu_d_r", + "vispy:grbu_d", + "vispy:grbu_d_r", + "pugr", + "pugr_r", + "vispy:pugr", + "vispy:pugr_r", + "rdbu", + "rdbu_r", + "vispy:rdbu", + "vispy:rdbu_r", + "rdyebucy", + "rdyebucy_r", + "vispy:rdyebucy", + "vispy:rdyebucy_r", + "diverging", + "diverging_r", + "vispy:diverging", + "vispy:diverging_r", + "fire", + "fire_r", + "vispy:fire", + "vispy:fire_r", + "hsl", + "hsl_r", + "vispy:hsl", + "vispy:hsl_r", + "husl", + "husl_r", + "vispy:husl", + "vispy:husl_r", + "ice", + "ice_r", + "vispy:ice", + "vispy:ice_r", + "light_blues", + "light_blues_r", + "vispy:light_blues", + "vispy:light_blues_r", + "orange", + "orange_r", + "vispy:orange", + "vispy:orange_r", + "single_hue", + "single_hue_r", + "vispy:single_hue", + "vispy:single_hue_r", + "earth", + "earth_r", + "yorick:earth", + "yorick:earth_r", + "heat", + "heat_r", + "yorick:heat", + "yorick:heat_r", + "ncar", + "ncar_r", + "yorick:ncar", + "yorick:ncar_r", + "rainbow", + "rainbow_r", + "yorick:rainbow", + "yorick:rainbow_r", + "stern", + "stern_r", + "yorick:stern", + "yorick:stern_r", + "yarg", + "yarg_r", + "yorick:yarg", + "yorick:yarg_r", +] From c5fb6f2bbdb4bab1ef8fea7e3e44964539e46d3c Mon Sep 17 00:00:00 2001 From: Chris Barnes Date: Tue, 17 Jun 2025 13:42:45 +0100 Subject: [PATCH 2/3] Fix some types --- .pre-commit-config.yaml | 2 +- scripts/make_cmapnames.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 84acf0efa..aab4e5ed4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,7 +12,7 @@ repos: name: make_cmapnames entry: python scripts/make_cmapnames.py --exit-code language: python - files: src/cmap/data/[a-zA-Z0-9_]/record.json + files: src/cmap/data/[a-zA-Z0-9_]+/record.json pass_filenames: false - repo: https://github.com/pre-commit/pre-commit-hooks diff --git a/scripts/make_cmapnames.py b/scripts/make_cmapnames.py index 90a0320ee..4072febe8 100755 --- a/scripts/make_cmapnames.py +++ b/scripts/make_cmapnames.py @@ -17,6 +17,7 @@ Auto-generated by make_cmapnames.py : DO NOT EDIT. """ + from typing import Literal, TypeAlias ColormapName: TypeAlias = Literal[ From a04443f18c2ac0285e595dc3776c49131e0c4cec Mon Sep 17 00:00:00 2001 From: Chris Barnes Date: Thu, 19 Jun 2025 10:28:51 +0100 Subject: [PATCH 3/3] Set mypy to only run on pre-push Because it is very slow. --- .pre-commit-config.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index aab4e5ed4..108b25784 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -44,3 +44,5 @@ repos: files: "^src/" additional_dependencies: - numpy>=2.2 + stages: + - pre-push