From 91f6d1635150cb752273378851e7e1079ea92fd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Thu, 1 Jun 2023 16:53:53 +0200 Subject: [PATCH 001/216] added a Feature Histogram Widget Co-Authored-By: Marcelo Zoccoler <26173597+zoccoler@users.noreply.github.com> --- src/napari_matplotlib/napari.yaml | 7 + src/napari_matplotlib/scatter.py | 123 +++++++++++++++++- src/napari_matplotlib/tests/test_histogram.py | 21 ++- 3 files changed, 149 insertions(+), 2 deletions(-) diff --git a/src/napari_matplotlib/napari.yaml b/src/napari_matplotlib/napari.yaml index b736592b..71af0ca6 100644 --- a/src/napari_matplotlib/napari.yaml +++ b/src/napari_matplotlib/napari.yaml @@ -14,6 +14,10 @@ contributions: python_name: napari_matplotlib:FeaturesScatterWidget title: Make a scatter plot of layer features + - id: napari-matplotlib.features_histogram + python_name: napari_matplotlib:FeaturesHistogramWidget + title: Plot feature histograms + - id: napari-matplotlib.slice python_name: napari_matplotlib:SliceWidget title: Plot a 1D slice @@ -28,5 +32,8 @@ contributions: - command: napari-matplotlib.features_scatter display_name: FeaturesScatter + - command: napari-matplotlib.features_histogram + display_name: FeaturesHistogram + - command: napari-matplotlib.slice display_name: 1D slice diff --git a/src/napari_matplotlib/scatter.py b/src/napari_matplotlib/scatter.py index 3b0f918c..b3c1147b 100644 --- a/src/napari_matplotlib/scatter.py +++ b/src/napari_matplotlib/scatter.py @@ -9,7 +9,7 @@ from .base import NapariMPLWidget from .util import Interval -__all__ = ["ScatterWidget", "FeaturesScatterWidget"] +__all__ = ["ScatterWidget", "FeaturesScatterWidget", "FeaturesHistogramWidget"] class ScatterBaseWidget(NapariMPLWidget): @@ -222,3 +222,124 @@ def _on_update_layers(self) -> None: # reset the axis keys self._x_axis_key = None self._y_axis_key = None + + +class FeaturesHistogramWidget(NapariMPLWidget): + n_layers_input = Interval(1, 1) + # All layers that have a .features attributes + input_layer_types = ( + napari.layers.Labels, + napari.layers.Points, + napari.layers.Shapes, + napari.layers.Tracks, + napari.layers.Vectors, + ) + + def __init__(self, napari_viewer: napari.viewer.Viewer): + super().__init__(napari_viewer) + self.axes = self.canvas.figure.subplots() + + self._key_selection_widget = magicgui( + self._set_axis_keys, + x_axis_key={"choices": self._get_valid_axis_keys}, + call_button="plot", + ) + self.layout().addWidget(self._key_selection_widget.native) + + self.update_layers(None) + + def clear(self) -> None: + """ + Clear the axes. + """ + self.axes.clear() + + self.layout().addWidget(self._key_selection_widget.native) + + @property + def x_axis_key(self) -> Optional[str]: + """Key to access x axis data from the FeaturesTable""" + return self._x_axis_key + + @x_axis_key.setter + def x_axis_key(self, key: Optional[str]) -> None: + self._x_axis_key = key + self._draw() + + def _set_axis_keys(self, x_axis_key: str) -> None: + """Set both axis keys and then redraw the plot""" + self._x_axis_key = x_axis_key + self._draw() + + def _get_valid_axis_keys( + self, combo_widget: Optional[ComboBox] = None + ) -> List[str]: + """ + Get the valid axis keys from the layer FeatureTable. + + Returns + ------- + axis_keys : List[str] + The valid axis keys in the FeatureTable. If the table is empty + or there isn't a table, returns an empty list. + """ + if len(self.layers) == 0 or not (hasattr(self.layers[0], "features")): + return [] + else: + return self.layers[0].features.keys() + + def _get_data(self) -> Tuple[List[np.ndarray], str, str]: + """Get the plot data. + + Returns + ------- + data : List[np.ndarray] + List contains X and Y columns from the FeatureTable. Returns + an empty array if nothing to plot. + x_axis_name : str + The title to display on the x axis. Returns + an empty string if nothing to plot. + """ + if not hasattr(self.layers[0], "features"): + # if the selected layer doesn't have a featuretable, + # skip draw + return [], "" + + feature_table = self.layers[0].features + + if ( + (len(feature_table) == 0) + or (self.x_axis_key is None) + ): + return [], "" + + data = feature_table[self.x_axis_key] + x_axis_name = self.x_axis_key.replace("_", " ") + + return data, x_axis_name + + def _on_update_layers(self) -> None: + """ + This is called when the layer selection changes by + ``self.update_layers()``. + """ + if hasattr(self, "_key_selection_widget"): + self._key_selection_widget.reset_choices() + + # reset the axis keys + self._x_axis_key = None + + def draw(self) -> None: + """Clear the axes and histogram the currently selected layer/slice.""" + + data, x_axis_name = self._get_data() + + if len(data) == 0: + return + + _, _, _ = self.axes.hist(data, bins=50, edgecolor='white', + linewidth=0.3) + + # # set ax labels + self.axes.set_xlabel(x_axis_name) + self.axes.set_ylabel('Counts [#]') diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index f497a1a9..54b3ad29 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -1,4 +1,4 @@ -from napari_matplotlib import HistogramWidget +from napari_matplotlib import HistogramWidget, FeaturesHistogramWidget def test_example_q_widget(make_napari_viewer, image_data): @@ -6,3 +6,22 @@ def test_example_q_widget(make_napari_viewer, image_data): viewer = make_napari_viewer() viewer.add_image(image_data[0], **image_data[1]) HistogramWidget(viewer) + +def test_feature_histogram(make_napari_viewer): + + import numpy as np + + n_points = 1000 + random_points = np.random.random((n_points,3))*10 + feature1 = np.random.random(n_points) + feature2 = np.random.normal(size=n_points) + + viewer = make_napari_viewer() + viewer.add_points(random_points, properties={'feature1': feature1, 'feature2': feature2}, face_color='feature1', size=1) + + widget = FeaturesHistogramWidget(viewer) + viewer.window.add_dock_widget(widget) + widget._set_axis_keys('feature1') + widget._key_selection_widget() + widget._set_axis_keys('feature2') + widget._key_selection_widget() From 230a303bda3edb39bdb2f19e0649b28df96a1e59 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:35:30 +0200 Subject: [PATCH 002/216] Update src/napari_matplotlib/scatter.py Co-authored-by: David Stansby --- src/napari_matplotlib/scatter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/scatter.py b/src/napari_matplotlib/scatter.py index b3c1147b..84fd4e74 100644 --- a/src/napari_matplotlib/scatter.py +++ b/src/napari_matplotlib/scatter.py @@ -340,6 +340,6 @@ def draw(self) -> None: _, _, _ = self.axes.hist(data, bins=50, edgecolor='white', linewidth=0.3) - # # set ax labels + # set ax labels self.axes.set_xlabel(x_axis_name) self.axes.set_ylabel('Counts [#]') From e5cb943c7d457f4574a6ee13f569c86cea80d304 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:35:39 +0200 Subject: [PATCH 003/216] Update src/napari_matplotlib/scatter.py Co-authored-by: David Stansby --- src/napari_matplotlib/scatter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/scatter.py b/src/napari_matplotlib/scatter.py index 84fd4e74..80931c7d 100644 --- a/src/napari_matplotlib/scatter.py +++ b/src/napari_matplotlib/scatter.py @@ -337,7 +337,7 @@ def draw(self) -> None: if len(data) == 0: return - _, _, _ = self.axes.hist(data, bins=50, edgecolor='white', + self.axes.hist(data, bins=50, edgecolor='white', linewidth=0.3) # set ax labels From 524fdbd5064c6c635bf4815cd5ff986ca4b328c0 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:35:53 +0200 Subject: [PATCH 004/216] Update src/napari_matplotlib/scatter.py Co-authored-by: David Stansby --- src/napari_matplotlib/scatter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/scatter.py b/src/napari_matplotlib/scatter.py index 80931c7d..210a8053 100644 --- a/src/napari_matplotlib/scatter.py +++ b/src/napari_matplotlib/scatter.py @@ -288,7 +288,7 @@ def _get_valid_axis_keys( else: return self.layers[0].features.keys() - def _get_data(self) -> Tuple[List[np.ndarray], str, str]: + def _get_data(self) -> Tuple[np.ndarray, str]: """Get the plot data. Returns From f69761871a301a98d8fac475df6cf5a0bdf56c33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:44:40 +0200 Subject: [PATCH 005/216] moved new widget to `histogram.py` --- src/napari_matplotlib/histogram.py | 126 ++++++++++++++++++++++++++++- src/napari_matplotlib/scatter.py | 121 --------------------------- 2 files changed, 124 insertions(+), 123 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 1e273e70..6a07bdf5 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -1,13 +1,14 @@ -from typing import Optional +from typing import Optional, List, Tuple import napari import numpy as np from qtpy.QtWidgets import QWidget +from magicgui import magicgui, ComboBox from .base import NapariMPLWidget from .util import Interval -__all__ = ["HistogramWidget"] +__all__ = ["HistogramWidget", "FeaturesHistogramWidget"] _COLORS = {"r": "tab:red", "g": "tab:green", "b": "tab:blue"} @@ -63,3 +64,124 @@ def draw(self) -> None: self.axes.hist(data.ravel(), bins=bins, label=layer.name) self.axes.legend() + + +class FeaturesHistogramWidget(NapariMPLWidget): + n_layers_input = Interval(1, 1) + # All layers that have a .features attributes + input_layer_types = ( + napari.layers.Labels, + napari.layers.Points, + napari.layers.Shapes, + napari.layers.Tracks, + napari.layers.Vectors, + ) + + def __init__(self, napari_viewer: napari.viewer.Viewer): + super().__init__(napari_viewer) + self.axes = self.canvas.figure.subplots() + + self._key_selection_widget = magicgui( + self._set_axis_keys, + x_axis_key={"choices": self._get_valid_axis_keys}, + call_button="plot", + ) + self.layout().addWidget(self._key_selection_widget.native) + + self.update_layers(None) + + def clear(self) -> None: + """ + Clear the axes. + """ + self.axes.clear() + + self.layout().addWidget(self._key_selection_widget.native) + + @property + def x_axis_key(self) -> Optional[str]: + """Key to access x axis data from the FeaturesTable""" + return self._x_axis_key + + @x_axis_key.setter + def x_axis_key(self, key: Optional[str]) -> None: + self._x_axis_key = key + self._draw() + + def _set_axis_keys(self, x_axis_key: str) -> None: + """Set both axis keys and then redraw the plot""" + self._x_axis_key = x_axis_key + self._draw() + + def _get_valid_axis_keys( + self, combo_widget: Optional[ComboBox] = None + ) -> List[str]: + """ + Get the valid axis keys from the layer FeatureTable. + + Returns + ------- + axis_keys : List[str] + The valid axis keys in the FeatureTable. If the table is empty + or there isn't a table, returns an empty list. + """ + if len(self.layers) == 0 or not (hasattr(self.layers[0], "features")): + return [] + else: + return self.layers[0].features.keys() + + def _get_data(self) -> Tuple[np.ndarray, str]: + """Get the plot data. + + Returns + ------- + data : List[np.ndarray] + List contains X and Y columns from the FeatureTable. Returns + an empty array if nothing to plot. + x_axis_name : str + The title to display on the x axis. Returns + an empty string if nothing to plot. + """ + if not hasattr(self.layers[0], "features"): + # if the selected layer doesn't have a featuretable, + # skip draw + return [], "" + + feature_table = self.layers[0].features + + if ( + (len(feature_table) == 0) + or (self.x_axis_key is None) + ): + return [], "" + + data = feature_table[self.x_axis_key] + x_axis_name = self.x_axis_key.replace("_", " ") + + return data, x_axis_name + + def _on_update_layers(self) -> None: + """ + This is called when the layer selection changes by + ``self.update_layers()``. + """ + if hasattr(self, "_key_selection_widget"): + self._key_selection_widget.reset_choices() + + # reset the axis keys + self._x_axis_key = None + + def draw(self) -> None: + """Clear the axes and histogram the currently selected layer/slice.""" + + data, x_axis_name = self._get_data() + + if len(data) == 0: + return + + self.axes.hist(data, bins=50, edgecolor='white', + linewidth=0.3) + + # set ax labels + self.axes.set_xlabel(x_axis_name) + self.axes.set_ylabel('Counts [#]') \ No newline at end of file diff --git a/src/napari_matplotlib/scatter.py b/src/napari_matplotlib/scatter.py index eb6e9d27..c3c40c16 100644 --- a/src/napari_matplotlib/scatter.py +++ b/src/napari_matplotlib/scatter.py @@ -248,124 +248,3 @@ def on_update_layers(self) -> None: self._selectors[dim].removeItem(0) # Add keys for newly selected layer self._selectors[dim].addItems(self._get_valid_axis_keys()) - - -class FeaturesHistogramWidget(NapariMPLWidget): - n_layers_input = Interval(1, 1) - # All layers that have a .features attributes - input_layer_types = ( - napari.layers.Labels, - napari.layers.Points, - napari.layers.Shapes, - napari.layers.Tracks, - napari.layers.Vectors, - ) - - def __init__(self, napari_viewer: napari.viewer.Viewer): - super().__init__(napari_viewer) - self.axes = self.canvas.figure.subplots() - - self._key_selection_widget = magicgui( - self._set_axis_keys, - x_axis_key={"choices": self._get_valid_axis_keys}, - call_button="plot", - ) - self.layout().addWidget(self._key_selection_widget.native) - - self.update_layers(None) - - def clear(self) -> None: - """ - Clear the axes. - """ - self.axes.clear() - - self.layout().addWidget(self._key_selection_widget.native) - - @property - def x_axis_key(self) -> Optional[str]: - """Key to access x axis data from the FeaturesTable""" - return self._x_axis_key - - @x_axis_key.setter - def x_axis_key(self, key: Optional[str]) -> None: - self._x_axis_key = key - self._draw() - - def _set_axis_keys(self, x_axis_key: str) -> None: - """Set both axis keys and then redraw the plot""" - self._x_axis_key = x_axis_key - self._draw() - - def _get_valid_axis_keys( - self, combo_widget: Optional[ComboBox] = None - ) -> List[str]: - """ - Get the valid axis keys from the layer FeatureTable. - - Returns - ------- - axis_keys : List[str] - The valid axis keys in the FeatureTable. If the table is empty - or there isn't a table, returns an empty list. - """ - if len(self.layers) == 0 or not (hasattr(self.layers[0], "features")): - return [] - else: - return self.layers[0].features.keys() - - def _get_data(self) -> Tuple[np.ndarray, str]: - """Get the plot data. - - Returns - ------- - data : List[np.ndarray] - List contains X and Y columns from the FeatureTable. Returns - an empty array if nothing to plot. - x_axis_name : str - The title to display on the x axis. Returns - an empty string if nothing to plot. - """ - if not hasattr(self.layers[0], "features"): - # if the selected layer doesn't have a featuretable, - # skip draw - return [], "" - - feature_table = self.layers[0].features - - if ( - (len(feature_table) == 0) - or (self.x_axis_key is None) - ): - return [], "" - - data = feature_table[self.x_axis_key] - x_axis_name = self.x_axis_key.replace("_", " ") - - return data, x_axis_name - - def _on_update_layers(self) -> None: - """ - This is called when the layer selection changes by - ``self.update_layers()``. - """ - if hasattr(self, "_key_selection_widget"): - self._key_selection_widget.reset_choices() - - # reset the axis keys - self._x_axis_key = None - - def draw(self) -> None: - """Clear the axes and histogram the currently selected layer/slice.""" - - data, x_axis_name = self._get_data() - - if len(data) == 0: - return - - self.axes.hist(data, bins=50, edgecolor='white', - linewidth=0.3) - - # set ax labels - self.axes.set_xlabel(x_axis_name) - self.axes.set_ylabel('Counts [#]') From 98d84f604a2fdb8457b78591291ebff61ca486e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 26 Jun 2023 13:12:19 +0200 Subject: [PATCH 006/216] put import at correct location --- src/napari_matplotlib/scatter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/scatter.py b/src/napari_matplotlib/scatter.py index c3c40c16..622a71fb 100644 --- a/src/napari_matplotlib/scatter.py +++ b/src/napari_matplotlib/scatter.py @@ -8,7 +8,7 @@ from .util import Interval __all__ = ["ScatterBaseWidget", "ScatterWidget", - "FeaturesScatterWidget", "FeaturesHistogramWidget"] + "FeaturesScatterWidget"] class ScatterBaseWidget(NapariMPLWidget): From c3d1d018502a90bba9f594fb10fe327a7812e509 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 26 Jun 2023 13:12:58 +0200 Subject: [PATCH 007/216] introduced `FEATURES_LAYER_TYPES` variable to be used across widgets --- src/napari_matplotlib/features.py | 9 +++++++++ src/napari_matplotlib/histogram.py | 9 ++------- src/napari_matplotlib/scatter.py | 9 ++------- 3 files changed, 13 insertions(+), 14 deletions(-) create mode 100644 src/napari_matplotlib/features.py diff --git a/src/napari_matplotlib/features.py b/src/napari_matplotlib/features.py new file mode 100644 index 00000000..16a2efe1 --- /dev/null +++ b/src/napari_matplotlib/features.py @@ -0,0 +1,9 @@ +from napari.layers import Labels, Points, Shapes, Tracks, Vectors + +FEATURES_LAYER_TYPES = ( + Labels, + Points, + Shapes, + Tracks, + Vectors, +) \ No newline at end of file diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 6a07bdf5..1f346c5e 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -7,6 +7,7 @@ from .base import NapariMPLWidget from .util import Interval +from .features import FEATURES_LAYER_TYPES __all__ = ["HistogramWidget", "FeaturesHistogramWidget"] @@ -69,13 +70,7 @@ def draw(self) -> None: class FeaturesHistogramWidget(NapariMPLWidget): n_layers_input = Interval(1, 1) # All layers that have a .features attributes - input_layer_types = ( - napari.layers.Labels, - napari.layers.Points, - napari.layers.Shapes, - napari.layers.Tracks, - napari.layers.Vectors, - ) + input_layer_types = FEATURES_LAYER_TYPES def __init__(self, napari_viewer: napari.viewer.Viewer): super().__init__(napari_viewer) diff --git a/src/napari_matplotlib/scatter.py b/src/napari_matplotlib/scatter.py index 622a71fb..144c604b 100644 --- a/src/napari_matplotlib/scatter.py +++ b/src/napari_matplotlib/scatter.py @@ -6,6 +6,7 @@ from .base import NapariMPLWidget from .util import Interval +from .features import FEATURES_LAYER_TYPES __all__ = ["ScatterBaseWidget", "ScatterWidget", "FeaturesScatterWidget"] @@ -107,13 +108,7 @@ class FeaturesScatterWidget(ScatterBaseWidget): n_layers_input = Interval(1, 1) # All layers that have a .features attributes - input_layer_types = ( - napari.layers.Labels, - napari.layers.Points, - napari.layers.Shapes, - napari.layers.Tracks, - napari.layers.Vectors, - ) + input_layer_types = FEATURES_LAYER_TYPES def __init__( self, From e965cd32b2f927a1d5a6a559c327a4a4df907693 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 26 Jun 2023 13:18:30 +0200 Subject: [PATCH 008/216] used `SingleAxesWidget` in FeatureHistogram --- src/napari_matplotlib/histogram.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index c04c2b17..048bf6cf 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -60,14 +60,13 @@ def draw(self) -> None: self.axes.legend() -class FeaturesHistogramWidget(NapariMPLWidget): +class FeaturesHistogramWidget(SingleAxesWidget): n_layers_input = Interval(1, 1) # All layers that have a .features attributes input_layer_types = FEATURES_LAYER_TYPES def __init__(self, napari_viewer: napari.viewer.Viewer): super().__init__(napari_viewer) - self.axes = self.canvas.figure.subplots() self._key_selection_widget = magicgui( self._set_axis_keys, @@ -78,14 +77,6 @@ def __init__(self, napari_viewer: napari.viewer.Viewer): self.update_layers(None) - def clear(self) -> None: - """ - Clear the axes. - """ - self.axes.clear() - - self.layout().addWidget(self._key_selection_widget.native) - @property def x_axis_key(self) -> Optional[str]: """Key to access x axis data from the FeaturesTable""" From 6731648a9775f479d082ea6b4bfa0db59509182b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 26 Jun 2023 13:19:19 +0200 Subject: [PATCH 009/216] Added optional `parent` argument added parent to init --- src/napari_matplotlib/histogram.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 048bf6cf..ac1d1bfd 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -65,11 +65,13 @@ class FeaturesHistogramWidget(SingleAxesWidget): # All layers that have a .features attributes input_layer_types = FEATURES_LAYER_TYPES - def __init__(self, napari_viewer: napari.viewer.Viewer): - super().__init__(napari_viewer) + def __init__( + self, + napari_viewer: napari.viewer.Viewer, + parent: Optional[QWidget] = None,): + super().__init__(napari_viewer, parent=parent) self._key_selection_widget = magicgui( - self._set_axis_keys, x_axis_key={"choices": self._get_valid_axis_keys}, call_button="plot", ) From dcab365f898cb945207395af2f0e84afd9170dff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 26 Jun 2023 13:21:43 +0200 Subject: [PATCH 010/216] removed unused ComboBox --- src/napari_matplotlib/histogram.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index ac1d1bfd..213a08b3 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -3,7 +3,7 @@ import napari import numpy as np from qtpy.QtWidgets import QWidget -from magicgui import magicgui, ComboBox +from magicgui import magicgui from .base import SingleAxesWidget from .util import Interval @@ -94,9 +94,7 @@ def _set_axis_keys(self, x_axis_key: str) -> None: self._x_axis_key = x_axis_key self._draw() - def _get_valid_axis_keys( - self, combo_widget: Optional[ComboBox] = None - ) -> List[str]: + def _get_valid_axis_keys(self) -> List[str]: """ Get the valid axis keys from the layer FeatureTable. From d1207f0c49d5e6bfe60f16cdd34d5e76822fba9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 26 Jun 2023 14:17:50 +0200 Subject: [PATCH 011/216] updated tests --- src/napari_matplotlib/tests/test_histogram.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index 847235f1..1b17045f 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -44,14 +44,27 @@ def test_feature_histogram(make_napari_viewer): feature2 = np.random.normal(size=n_points) viewer = make_napari_viewer() - viewer.add_points(random_points, properties={'feature1': feature1, 'feature2': feature2}, face_color='feature1', size=1) + viewer.add_points(random_points, + properties={'feature1': feature1, 'feature2': feature2}, + name='points1') + viewer.add_points(random_points, + properties={'feature1': feature1, 'feature2': feature2}, + name='points2') widget = FeaturesHistogramWidget(viewer) viewer.window.add_dock_widget(widget) + + # Check whether changing the selected key changes the plot widget._set_axis_keys('feature1') - widget._key_selection_widget() + fig1 = deepcopy(widget.figure) + widget._set_axis_keys('feature2') - widget._key_selection_widget() + assert_figures_not_equal(widget.figure, fig1) + + #check whether selecting a different layer produces the same plot + viewer.layers.selection.clear() + viewer.layers.selection.add(viewer.layers[1]) + assert_figures_equal(widget.figure, fig1) def test_change_layer(make_napari_viewer, brain_data, astronaut_data): From 476e2f26a5ffd067e318ab36c5666b4b8f38b5ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 26 Jun 2023 14:18:02 +0200 Subject: [PATCH 012/216] Used PyQt instead of magicgui --- src/napari_matplotlib/histogram.py | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 213a08b3..1af9a9e1 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -2,8 +2,7 @@ import napari import numpy as np -from qtpy.QtWidgets import QWidget -from magicgui import magicgui +from qtpy.QtWidgets import QComboBox, QLabel, QVBoxLayout, QWidget from .base import SingleAxesWidget from .util import Interval @@ -71,13 +70,14 @@ def __init__( parent: Optional[QWidget] = None,): super().__init__(napari_viewer, parent=parent) - self._key_selection_widget = magicgui( - x_axis_key={"choices": self._get_valid_axis_keys}, - call_button="plot", - ) - self.layout().addWidget(self._key_selection_widget.native) + self.layout().addLayout(QVBoxLayout()) + self._key_selection_widget = QComboBox() + self.layout().addWidget(QLabel("Key:")) + self.layout().addWidget(self._key_selection_widget) - self.update_layers(None) + self._key_selection_widget.currentTextChanged.connect(self._set_axis_keys) + + self._update_layers(None) @property def x_axis_key(self) -> Optional[str]: @@ -139,17 +139,17 @@ def _get_data(self) -> Tuple[np.ndarray, str]: return data, x_axis_name - def _on_update_layers(self) -> None: + def on_update_layers(self) -> None: """ - This is called when the layer selection changes by - ``self.update_layers()``. + Called when the layer selection changes by ``self.update_layers()``. """ - if hasattr(self, "_key_selection_widget"): - self._key_selection_widget.reset_choices() - # reset the axis keys self._x_axis_key = None + # Clear combobox + self._key_selection_widget.clear() + self._key_selection_widget.addItems(self._get_valid_axis_keys()) + def draw(self) -> None: """Clear the axes and histogram the currently selected layer/slice.""" @@ -159,7 +159,7 @@ def draw(self) -> None: return self.axes.hist(data, bins=50, edgecolor='white', - linewidth=0.3) + linewidth=0.3) # set ax labels self.axes.set_xlabel(x_axis_name) From 47ccb37c55d4294a2deb6f7398e3327966cc1de8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 26 Jun 2023 14:18:44 +0200 Subject: [PATCH 013/216] codestyle --- src/napari_matplotlib/tests/test_histogram.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index 1b17045f..7c71ff2c 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -39,7 +39,7 @@ def test_feature_histogram(make_napari_viewer): import numpy as np n_points = 1000 - random_points = np.random.random((n_points,3))*10 + random_points = np.random.random((n_points, 3)) * 10 feature1 = np.random.random(n_points) feature2 = np.random.normal(size=n_points) @@ -61,7 +61,7 @@ def test_feature_histogram(make_napari_viewer): widget._set_axis_keys('feature2') assert_figures_not_equal(widget.figure, fig1) - #check whether selecting a different layer produces the same plot + # check whether selecting a different layer produces the same plot viewer.layers.selection.clear() viewer.layers.selection.add(viewer.layers[1]) assert_figures_equal(widget.figure, fig1) From a40faf2d5e8f7bf72737cf0efd8b1f28232b9261 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 26 Jun 2023 14:39:27 +0200 Subject: [PATCH 014/216] codestyle --- src/napari_matplotlib/histogram.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 1af9a9e1..f4bcc346 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -1,4 +1,5 @@ -from typing import Optional, List, Tuple +from typing import Optional, List, Tuple, Any +import numpy.typing as npt import napari import numpy as np @@ -60,6 +61,9 @@ def draw(self) -> None: class FeaturesHistogramWidget(SingleAxesWidget): + """ + Display a histogram of selected feature attached to selected layer. + """ n_layers_input = Interval(1, 1) # All layers that have a .features attributes input_layer_types = FEATURES_LAYER_TYPES @@ -109,7 +113,7 @@ def _get_valid_axis_keys(self) -> List[str]: else: return self.layers[0].features.keys() - def _get_data(self) -> Tuple[np.ndarray, str]: + def _get_data(self) -> Tuple[npt.NDArray[Any], str]: """Get the plot data. Returns @@ -163,4 +167,4 @@ def draw(self) -> None: # set ax labels self.axes.set_xlabel(x_axis_name) - self.axes.set_ylabel('Counts [#]') \ No newline at end of file + self.axes.set_ylabel('Counts [#]') From ed658cdbfce9aafa2ea0517cbaaee704a47b71da Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 18:47:13 +0000 Subject: [PATCH 015/216] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/napari_matplotlib/features.py | 2 +- src/napari_matplotlib/histogram.py | 29 +++++++++---------- src/napari_matplotlib/scatter.py | 5 ++-- src/napari_matplotlib/tests/test_histogram.py | 23 ++++++++------- 4 files changed, 30 insertions(+), 29 deletions(-) diff --git a/src/napari_matplotlib/features.py b/src/napari_matplotlib/features.py index 16a2efe1..34abf104 100644 --- a/src/napari_matplotlib/features.py +++ b/src/napari_matplotlib/features.py @@ -6,4 +6,4 @@ Shapes, Tracks, Vectors, -) \ No newline at end of file +) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index f4bcc346..01c2c6a4 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -1,13 +1,13 @@ -from typing import Optional, List, Tuple, Any -import numpy.typing as npt +from typing import Any, List, Optional, Tuple import napari import numpy as np +import numpy.typing as npt from qtpy.QtWidgets import QComboBox, QLabel, QVBoxLayout, QWidget from .base import SingleAxesWidget -from .util import Interval from .features import FEATURES_LAYER_TYPES +from .util import Interval __all__ = ["HistogramWidget", "FeaturesHistogramWidget"] @@ -64,14 +64,16 @@ class FeaturesHistogramWidget(SingleAxesWidget): """ Display a histogram of selected feature attached to selected layer. """ + n_layers_input = Interval(1, 1) # All layers that have a .features attributes input_layer_types = FEATURES_LAYER_TYPES def __init__( - self, - napari_viewer: napari.viewer.Viewer, - parent: Optional[QWidget] = None,): + self, + napari_viewer: napari.viewer.Viewer, + parent: Optional[QWidget] = None, + ): super().__init__(napari_viewer, parent=parent) self.layout().addLayout(QVBoxLayout()) @@ -79,7 +81,9 @@ def __init__( self.layout().addWidget(QLabel("Key:")) self.layout().addWidget(self._key_selection_widget) - self._key_selection_widget.currentTextChanged.connect(self._set_axis_keys) + self._key_selection_widget.currentTextChanged.connect( + self._set_axis_keys + ) self._update_layers(None) @@ -132,10 +136,7 @@ def _get_data(self) -> Tuple[npt.NDArray[Any], str]: feature_table = self.layers[0].features - if ( - (len(feature_table) == 0) - or (self.x_axis_key is None) - ): + if (len(feature_table) == 0) or (self.x_axis_key is None): return [], "" data = feature_table[self.x_axis_key] @@ -156,15 +157,13 @@ def on_update_layers(self) -> None: def draw(self) -> None: """Clear the axes and histogram the currently selected layer/slice.""" - data, x_axis_name = self._get_data() if len(data) == 0: return - self.axes.hist(data, bins=50, edgecolor='white', - linewidth=0.3) + self.axes.hist(data, bins=50, edgecolor="white", linewidth=0.3) # set ax labels self.axes.set_xlabel(x_axis_name) - self.axes.set_ylabel('Counts [#]') + self.axes.set_ylabel("Counts [#]") diff --git a/src/napari_matplotlib/scatter.py b/src/napari_matplotlib/scatter.py index 08464bc4..8a9f55ae 100644 --- a/src/napari_matplotlib/scatter.py +++ b/src/napari_matplotlib/scatter.py @@ -5,11 +5,10 @@ from qtpy.QtWidgets import QComboBox, QLabel, QVBoxLayout, QWidget from .base import SingleAxesWidget -from .util import Interval from .features import FEATURES_LAYER_TYPES +from .util import Interval -__all__ = ["ScatterBaseWidget", "ScatterWidget", - "FeaturesScatterWidget"] +__all__ = ["ScatterBaseWidget", "ScatterWidget", "FeaturesScatterWidget"] class ScatterBaseWidget(SingleAxesWidget): diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index 7c71ff2c..793c1a35 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -2,7 +2,7 @@ import pytest -from napari_matplotlib import HistogramWidget, FeaturesHistogramWidget +from napari_matplotlib import FeaturesHistogramWidget, HistogramWidget from napari_matplotlib.tests.helpers import ( assert_figures_equal, assert_figures_not_equal, @@ -35,7 +35,6 @@ def test_histogram_3D(make_napari_viewer, brain_data): def test_feature_histogram(make_napari_viewer): - import numpy as np n_points = 1000 @@ -44,21 +43,25 @@ def test_feature_histogram(make_napari_viewer): feature2 = np.random.normal(size=n_points) viewer = make_napari_viewer() - viewer.add_points(random_points, - properties={'feature1': feature1, 'feature2': feature2}, - name='points1') - viewer.add_points(random_points, - properties={'feature1': feature1, 'feature2': feature2}, - name='points2') + viewer.add_points( + random_points, + properties={"feature1": feature1, "feature2": feature2}, + name="points1", + ) + viewer.add_points( + random_points, + properties={"feature1": feature1, "feature2": feature2}, + name="points2", + ) widget = FeaturesHistogramWidget(viewer) viewer.window.add_dock_widget(widget) # Check whether changing the selected key changes the plot - widget._set_axis_keys('feature1') + widget._set_axis_keys("feature1") fig1 = deepcopy(widget.figure) - widget._set_axis_keys('feature2') + widget._set_axis_keys("feature2") assert_figures_not_equal(widget.figure, fig1) # check whether selecting a different layer produces the same plot From 9d6988e4bf3ca5982475381994275b92d567fce4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 30 Jun 2023 13:18:45 +0200 Subject: [PATCH 016/216] added check for `_key_selection_widget` removed `reset_choices()` statement Revert "removed `reset_choices()` statement" This reverts commit ed8fc0acd3a53f446ba71313be5209b0b589caff. removed `reset_choices()` from feature histogram From a2b83caea0f07446d4252d821f8f2f3cc3a27895 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 30 Jun 2023 16:19:15 +0200 Subject: [PATCH 017/216] removed `reset_choices` from old widget --- src/napari_matplotlib/scatter.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/napari_matplotlib/scatter.py b/src/napari_matplotlib/scatter.py index 8a9f55ae..a4148bd2 100644 --- a/src/napari_matplotlib/scatter.py +++ b/src/napari_matplotlib/scatter.py @@ -217,13 +217,6 @@ def on_update_layers(self) -> None: """ Called when the layer selection changes by ``self.update_layers()``. """ - if hasattr(self, "_key_selection_widget"): - self._key_selection_widget.reset_choices() - - # reset the axis keys - self._x_axis_key = None - self._y_axis_key = None - # Clear combobox for dim in ["x", "y"]: while self._selectors[dim].count() > 0: From 2c95034c4d70e73a49399ba522b83406dd073a34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Fri, 30 Jun 2023 16:43:19 +0200 Subject: [PATCH 018/216] added figure test --- .../tests/baseline/test_feature_histogram.png | Bin 0 -> 9681 bytes src/napari_matplotlib/tests/test_histogram.py | 27 ++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 src/napari_matplotlib/tests/baseline/test_feature_histogram.png diff --git a/src/napari_matplotlib/tests/baseline/test_feature_histogram.png b/src/napari_matplotlib/tests/baseline/test_feature_histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..1892af4467a4aee2346385437d4fc0c45216eccd GIT binary patch literal 9681 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

G!zI=`*>W|$!N)+K$@ar zE%%zsaYfy3kEM-_<{W8L>&4+Dc0}=m0_=!*f^cH&#!iK*Ko~+KwXou(G(O@7oJ8`{ zm$nbc0<{}y+oHNR+V`)SqMeduPMCAEYT%5=72&RLmc8wR$Q$Gu(AW6jByvzjyy5*X z@9<&dxf^A56WTG?UXsL3%;)7VImxKiKy#A_2A}KO>uU+54KVv?r=-4D8Ql>`(61xe zCX6&-N37%@)e33I7S6k3^>j+q+GoU(BuXEH7eS(ryQp>#`EF-xBa%T!baJS19vK;z zHV$N0@v6s91I3RQ$t|ECDNU!33S$mIM$-6o*C5FXo&cJfSY*?($OmNYwei&6;$s_6 zD}plUIu;9MvO^s@TT|Gvsua(bf>9G)6tD{Oz(D%sZ@@tSRYw|6n(%l~>mg>LnwlB8(?GP!YfwvZH-m?r( zh9A~qVp|q0!i%Jc^SELWv}sC;6~Q#6v>*784{0Dqtb&H?n3oN2q>XTIVu-3l%lN{O z+vCqbKj;`VtH%sC)C%i}&EEpHRvZMJg?CZQjy0o^is%vkDCO3r^Ng$5P|fXA-60bN zLm^c%;imCS2ly;Dsqd(wt)ZJhNyK-pPtb|0^`F5M+~E7b2oSld3`_Dg@-@;~7)>7KXns`VW7UM| ze0J95q4nZXP1jGfFET>6M6EJ`y_?TeG&gib{pzkok}-xew_AbVz|}!u;#? zn$$c#u>5vsoP<*AU6Kk=AD~()hU*Z)M-DpLal^au5!|d6axAcXG1-kb=I2D|Kf}|c zSn#HgqV&D+CcvDJ5I-iwzSkeN!`T%PjQovdjt92T)U>rb9Kk0WC3-ui9*_u+1hwk3Z9U^cwZKZc?oE?vabU;BU@4YQbCyTfH=9c%A3@2x-zD6qe zZb#XowW1%dISPQB+M~zz5qd#%Dy;9F;>S4gI?8d*jO7cwuQ!9kg3nkB!K?1^Ok0LO zqsBY)SYX(Y^)O0K79U}hIQ#@rD{d>2DT!a-E91p(uDq7s3wTz64eY=yEb^l!c^^Co zs0aeO;BI@#WIpQD^pCv&8QRl2C#^y`fLwN#ahQJf%N4V Date: Tue, 4 Jul 2023 11:47:44 +0200 Subject: [PATCH 019/216] added baseline image for histogram creation --- baseline/test_feature_histogram2.png | Bin 0 -> 12860 bytes src/napari_matplotlib/tests/test_histogram.py | 4 +++- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 baseline/test_feature_histogram2.png diff --git a/baseline/test_feature_histogram2.png b/baseline/test_feature_histogram2.png new file mode 100644 index 0000000000000000000000000000000000000000..b7bb19e039d73adfd05f0d3860a5a1c4d0711f72 GIT binary patch literal 12860 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 Date: Mon, 24 Jul 2023 19:51:45 +0000 Subject: [PATCH 020/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black: 23.3.0 → 23.7.0](https://github.com/psf/black/compare/23.3.0...23.7.0) - https://github.com/charliermarsh/ruff-pre-commit → https://github.com/astral-sh/ruff-pre-commit - [github.com/astral-sh/ruff-pre-commit: v0.0.276 → v0.0.280](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.276...v0.0.280) --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 71aa4ae5..caf38d16 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,7 +12,7 @@ repos: - id: setup-cfg-fmt - repo: https://github.com/psf/black - rev: 23.3.0 + rev: 23.7.0 hooks: - id: black @@ -27,9 +27,9 @@ repos: - id: mypy additional_dependencies: [numpy, matplotlib] - - repo: https://github.com/charliermarsh/ruff-pre-commit + - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.0.276' + rev: 'v0.0.280' hooks: - id: ruff From 38fbccd9c6da1d91484a87eba27dadf8fff0b82e Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 21 Jul 2023 09:37:29 +0100 Subject: [PATCH 021/216] Don't read full cube into mem for histogramming --- src/napari_matplotlib/histogram.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 39ad41a3..50c2bcc4 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -33,7 +33,6 @@ def draw(self) -> None: Clear the axes and histogram the currently selected layer/slice. """ layer = self.layers[0] - bins = np.linspace(np.min(layer.data), np.max(layer.data), 100) if layer.data.ndim - layer.rgb == 3: # 3D data, can be single channel or RGB @@ -42,6 +41,10 @@ def draw(self) -> None: else: data = layer.data + # Important to calculate bins after slicing 3D data, to avoid reading + # whole cube into memory. + bins = np.linspace(np.min(layer.data), np.max(layer.data), 100) + if layer.rgb: # Histogram RGB channels independently for i, c in enumerate("rgb"): From 1aa3efd13a57d0dc5ddd2b09af058bc27a125f9c Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 26 Jul 2023 09:16:41 +0100 Subject: [PATCH 022/216] Actually don't read all bins into memory... --- src/napari_matplotlib/histogram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 50c2bcc4..3b0c4234 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -43,7 +43,7 @@ def draw(self) -> None: # Important to calculate bins after slicing 3D data, to avoid reading # whole cube into memory. - bins = np.linspace(np.min(layer.data), np.max(layer.data), 100) + bins = np.linspace(np.min(data), np.max(data), 100) if layer.rgb: # Histogram RGB channels independently From 804934c7b5706d7d2fbd7845c3aab94584961561 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 26 Jul 2023 09:25:54 +0100 Subject: [PATCH 023/216] Read data into memory --- src/napari_matplotlib/histogram.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 3b0c4234..a6cec3cf 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -33,6 +33,7 @@ def draw(self) -> None: Clear the axes and histogram the currently selected layer/slice. """ layer = self.layers[0] + print(layer.data.shape) if layer.data.ndim - layer.rgb == 3: # 3D data, can be single channel or RGB @@ -40,10 +41,13 @@ def draw(self) -> None: self.axes.set_title(f"z={self.current_z}") else: data = layer.data + # Read data into memory if it's a dask array + data = np.asarray(data) # Important to calculate bins after slicing 3D data, to avoid reading # whole cube into memory. bins = np.linspace(np.min(data), np.max(data), 100) + print(bins) if layer.rgb: # Histogram RGB channels independently From e84958d2b9d9a0c86f18a5b1e9281bd791dc65ce Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 26 Jul 2023 15:21:29 +0100 Subject: [PATCH 024/216] Remove print statements --- src/napari_matplotlib/histogram.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index a6cec3cf..ab098f38 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -33,7 +33,6 @@ def draw(self) -> None: Clear the axes and histogram the currently selected layer/slice. """ layer = self.layers[0] - print(layer.data.shape) if layer.data.ndim - layer.rgb == 3: # 3D data, can be single channel or RGB @@ -47,7 +46,6 @@ def draw(self) -> None: # Important to calculate bins after slicing 3D data, to avoid reading # whole cube into memory. bins = np.linspace(np.min(data), np.max(data), 100) - print(bins) if layer.rgb: # Histogram RGB channels independently From 0523d2844a7e02a9702a3e31f21bd767e8ad61f9 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 26 Jul 2023 15:23:04 +0100 Subject: [PATCH 025/216] Add changelog --- docs/changelog.rst | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index a31a0d3a..e3b62dae 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,5 +1,16 @@ Changelog ========= +1.0.2 +----- +Bug fixes +~~~~~~~~~ +- A full dataset is no longer read into memory when using ``HistogramWidget``. + Only the current slice is loaded. + +Changes +~~~~~~~ +- Histogram bin limits are now caclualted from the slice being histogrammed, and + not the whole dataset. This is as a result of the above bug fix. 1.0.1 ----- From aa9eaf4e194b60a8a16cf1fbde07d005429e87bf Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 21 Jul 2023 09:34:38 +0100 Subject: [PATCH 026/216] Un-pin napari for testing --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index dfd52347..b03f446c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -28,7 +28,7 @@ project_urls = packages = find: install_requires = matplotlib - napari<0.4.18 + napari numpy tinycss2 python_requires = >=3.8 From 84f4486f8f742e753c7e7c9938826b26b9fa3475 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 26 Jul 2023 15:57:34 +0100 Subject: [PATCH 027/216] Fix all the tests! --- setup.cfg | 2 +- .../tests/baseline/test_custom_theme.png | Bin 15662 -> 15625 bytes .../tests/baseline/test_slice_2D.png | Bin 21290 -> 21061 bytes .../scatter/baseline/test_scatter_2D.png | Bin 18537 -> 18548 bytes src/napari_matplotlib/tests/test_theme.py | 6 ++++-- 5 files changed, 5 insertions(+), 3 deletions(-) diff --git a/setup.cfg b/setup.cfg index b03f446c..f7ddd381 100644 --- a/setup.cfg +++ b/setup.cfg @@ -55,7 +55,7 @@ docs = sphinx-automodapi sphinx-gallery testing = - napari[pyqt6-experimental] + napari[pyqt6-experimental]>=0.4.18 pooch pyqt6 pytest diff --git a/src/napari_matplotlib/tests/baseline/test_custom_theme.png b/src/napari_matplotlib/tests/baseline/test_custom_theme.png index 65c43a49c60da77f7c6a5401f10aca4a95771f01..c385852288bb57b741b8d6373cdc4ae1a43f8f3f 100644 GIT binary patch literal 15625 zcmeHuc~p~U+IK8tZCzkGj#4(!icndVeTUW}A_7%p39Al}u!Dph0#rw7i-58P2oN_! z)(8P&*rKBBA+m-&B9O2n1QHUmeD`D9cRJH)-}jvN`_B3P7|sdXd7k^Z?`yw)*YEk^ zTU*Nmd!_fnV6X#L=f1fFgNYr5!9H^S$%l2qHY{YM2kq=4yCo zU`TkN-`|c#`h=nULV~r__0%<0kNSp(hoTHMG=l!?0`-tEq{d12xkRwYr=jQIC>TuQ zD)ia)#H_>*1~ZPd`sS<4(FH4$F$Fn3&1UbZr;fL-UQhB>{{E9af2B>NJ-b4ZMbVY( zR1co)tGJ-mZ8+E0Q`2(-oR)rAmzjfBLC#0dr2ogF}!}X%k)(Dngpx!ntA&> z(pALN8ZE`in6`zk;y!R{DU#rzC+#e}z!%uf-Zxhx^uW(r`Hwz zg2Dd!*grz=&G68$TDQSWRqxipc7(?YfB#ZlOs|}&ru-UlW-<5xSb(|rT%KGaheVn$ zJ#B#KFeOF5@++;Fzawf`36Ro5z5MAar|Hv8b1ZMlqvddcWY~1kLliF!XPco~Sx(6z z>+3c*R$wjDoBeg7z%E{g?S6DS7|Xw+tfH(HwsgbVtFWvL_4270Yowg&)5eFFR~vy{ z7Qrr^rS{}!s11+no0K)`O3|y=?kIF_kJ>v~y24;j$38jgbD7|4%ZpqY4dfSAJ4yDQ zY&ZdfIamJaj;6~cC+uQb8l}xh;1y`)9@M9{3-;W9?sSvSAgRo-E}}a>RYTD3%q&|( zph8-7%0$#Vxny z4aHd@w%}udP1Fiol0LnoojrE^2iPUY@y#Q-dpr{iSpkwd2Hy)`l^?Wbt<`;nn}Uy# zj#*Bg(s4hm7O0!(W2@}hS}S9nR*;L44{8xzaj2n!g`xF@X!izn8(byQ`-W+=wbw`I zq~uQf;`#F$dUIu;MrF0^c~l<^uR^n{mItGJbyxdJM&k@4<9FiEVJ!9ypoOj!hU8=G z80=&8lk%RIT=rjl5V(uM?9b;A>6Mym@ohGLx>Gae*LvR|?9KNDTkok_aqCTiExl*C zbFa+2$N2ef1QEQv(FAC%0CovMHheqIWgnNB<^90%p6cH%H5_2RYRrGR+_GL@-l+5Q zRgluBJsv_IrzjOjp`RWNxMxZ*oa-v6&0rn5L1z|fWR;&7%U?%3MeV8G!fj%>1hC*C7#8YxiO} zoIKa3Wiq>9NfMMpe}=*Co%)SGv>n^jofC-Xlj#^4b@)&!4EB64=_ANf&cb#9M>zhQ z#f^8DPezlK+?(mTPh6oJ-lYBB4f=n#of6$6i7mol6^2#6S?Nz7wj_R^wM+KfJ+Lc7 z*LMHIPk;OL=)H$UAKP_&1bf^1dlz2&q)_wP8(CNq!)@2U-@NSC$OAJngS%j3nohqG z*iSq8wQx$VRNq>EqykH-@A)0c{dR{x3IC_HT0Sj|yvN$emR2>F$-2Hp%Nq%!Rm3hwq_9pVzrx{ob zeo+S3SCSNwU0JWnGdBhUG`y!bUdO!8#2~0P^{!V15AnuWts@PpcGUcWBSY?}!F!(> zgm5k{3|CucHjFj+7$7HxND1#odddrNSDSUIq*hDDj383g+Xe>nm2jCnbf+_~4tG(uA<6xr^qlWhuneATG5vy>EAW#+)x`nJLLsz>S89 z0=X$(sJ1hhxjrwv@=`u=`0O5g_{F@tuJUfuOP3uA58jf?ZTCQ{YcZ(GC8FT-` z6swHQl`+Do8@i^XRf`n$9lRJrj5((p*|vrlukxCdI#8#pv;a2M=Bc zXq1+tchC-USV~0MqH}&?Nu*E2nn$_p2l>^wh;_7TwIT7RAG%)N;eV><6G}}`^Jqjl zL}U=Bixu@d!av&HJrG!zWG-<#CVy{3K$`GbJs!pySUllkg2B2(o-SFDww&mgiF5y; z)#fL@fq{W;lQ!|rhs-7-iczUZ0|IL&^B5+1w(Hhg) z#R(f?78VhltF6n*QSW%_A+{lyRzlE)M$G1}YKGC{rfuSF!?`7HitAJ0n{y3Y&IReK zhB{7eVOQ%%;>|N0rOn4QLD82~|2K(e{d+J9Fj?_-FoYO77|7iJ~1kfjt(0Bv5p% zGnzL0tz%deJ*_LxlLDL8+ve5|0|Og!{M`IV?EHO2e0!=4=7zZ8mrkDO2-BTW>f^G- z72?p)(A-!6o|1xteR*BzknymxP*Tqz$Xd<7V66nEzrq{MQHY@!|-20(ABN`GAZ!c^exg{ zj_V~SCt6@tRh2q%BFtKMBDB?EN)}vFUps%eLaSH*_`|cQUA;zY1s5Nl^#P}_%eYVo zdBru0wsd)1w+6YXA{E-2XUaz%9e0o0!{K=Zs;SX&%QRJ!W98M=r<-H9x(+$H-92b$ zT>W2{p35i*efcSO8EJ+k^XD{TxO13H1#EDGU*yQufq=ean+kbmi3thsZ^(Po(Hu(scraE87q4lx(Iyiz`yfTVD@CKlxn2=e zsP*?PoXiou1$idyk>gs3o{s0=iLqYp16lm#O{6I7C0pL#GMwh>u-`X#gku0AO zUCbiyOs>_e)Q?xyJO;IPeW}H++1dfy?%dN}VJ~(|&Q=nq&Sz+AYtO!x^z6CTE{AD9 z5~u3P?Q-fG`x0o0S2zD>UUmBs?7~0^)0NJ1>^0q4R_ILFS;4fmwS~{WImRrE@(?$e zy%Wa%6zqDJn(&L4kbc_bqTGVX0(R5(yA(fP-;ShRVqrk^KEPsCkf3Wbms!8x@+msg zMi;(9beS|0luqdT1-4Q60SNWn!UGNLp6_kyshnh7Zp-9wh@)s;h03^{tlka9UdsrY ztd8$Dz2oT14H3)zkE%ef=#`3!sKV*%vizAyXFLV9`u;9Ank=^u4khv%hYNSXpI-Tj z(7xQlTP!zV7NEiydB~iWL(QKcO~Yf3#B%dw4MREnz%~4Arf9u-!jLNr-07ZSjlCq< z`2S(SG;AVVMWOoay~29#pu^U`AGieXJ0^-4r)dT={$7IzLRqm$sY<#nYoMvoym{$J zB7a?>lh0)l25gPyvYkAvlEvl1)?Z69i{e&0!3W;!k*Oe=s(+#p?Y$KKWE&Ydh8Nk6 z&M-1j3tGgviD{+mHZr#(8%}JnJi;6FS-3cqGhqfLl zEiLVQm~NUM!(#Z1JiThbnLu?9&o-`rj?m_1yOGyY#Nu5h(^eyuf_Kl_d2EvBmAvY@ zcW>wTv3uh#?qN&&B(mE62r~G&wgR?mfMR$*Ox0Cx77Er9ag&kbYDQ~KsD`MuB5FKC zEAQ0Rtx3n)(9w6QZY>H+Q67!j?B%6IYxgtg$dN0dnPX|$0X|q$F;>s=$>M4x!lv`^ zQqY9LWrfZ(bh3g~8@0%#{zHl8cM%3h7DjAXVy8qIF)B|uwa+5{fP_~@?#fyD`{AnrbELmP)ktSUmbvCf!j9fA7N?pW4TeF@!G2`1%lqx~@A8ae!W3=tv+8IbMgrcJ3PsJMNgv}8>sLP&y96Gz z2T$~?niMS`9%|tjnId{{+2~-w`QfV7oW}I+YYk*(g$2DTgho^K=lM=WwduywV$qFN zIH$ucEiW4sipRn#NM8W3r8DEWl43-*jZz!OMsd@9VFw1gQa9S5IQsZ;=bMZ&UXP0h z-FsO~tmED56x4EcJL7$;1od>g>_A{k9B0)gxSe-OcYau_JtX3JasqwgM2HX0)y_Id zP&1LZc}Ru-(Mz?spqw)C?3l$m$*{r3-dn2Wo<-|~$BZX0j-U7XCk#jXCk$uK1!ckO zSuMcG%jMo=HCEIDuyOdygZUz#80L|b0VM6QgeUL$nR)ky@J@NrcKc9l2Y>Rgnrj9G zuEqFFFOhb>mq)&hmBBv^URez0jy#s98~{MwS1S+tx3>DrsXiHCNhKkI^c1w`!N7;thZ_vSR>B*J?N>6A>J%nfd( zDdc|LEL2H01BAbVGas*Bj1`!*+I3aw6=j(On;IM^n(Avw_V%WW!cgo5q8EESka=m+ zRz{q1_r}@TisZzi(G;c+D?+zRLrHjSfI*wh7f}5-Sl!i%AcRXEN(Eo?mp3_Nk;%?# zV@R4QZ~nHlj6|y|$oLO@A9(>ocg&SM^*J{q-@nMs(s=by`h50J#q*Jbe zrbn&ziJjxDPTD&;VSKu$60X~WoLyFqHGN(B;K3Im&0CIAW5J$KjW_n=q1|^5PhOAM zo=(QUH_`_=-t;yIGf;Wc69oQRd9lZIHvl%SIQU(IK_!8f|KOAT(%N5wD}s+CY)>n6 z78szy7E4P&awt0KnhDa>_?ri=Pa%((ZcQ$^fB%@#O0B&|{QB#`p`jC2!=8zP+cJ9U zDTmd%bZBn&!w66l3|E2_dt0lw!*Ho0vt2&X_|Tz43zLmenOre({i9G31eXSo(O4ST z>K3qTW{M~OZ?Rj8buUY<2Gw*b#(=Eg7=wbI-TwgA|K`mdb$3T$;a~A&VJu;7H>d}r z@!(XzK-8lqBWQb>i;IhzpeR^wVs()xWni$Qepg`zOBIALstIQnS{!5*l0s(%oUqYu zCOo~fOt33T6msKdWawW8JOs~KqCGe>zq3Y8tZH0si05{D_BuGZXDb-6N4y3`Mskms z#Lj}s&mj^NLp8d4fsPW?_8zqgo4D3K_q0{K8_k)-l-id(2GSAxc>jlJwK~~|Ay|TP zD%JNQ%r7wTf`x@eL*z>S8F7P0JpkW@1v#YjCI!~^o#k#|$OUF1E_H4dbf&(opmqU| zP3OOpBzLSft`*tnjw+Pk5@L(uH#);Oz$t4_gNN(U<537|QQ>K?Hg8aA^iUIptYuKd zNu9c4-omAXAo$zsKEWWr`R)S?W;{YMdkr=^j-$qdh(7G)QPT7+nVKO-*EuCKu2nrf zVQ2pl<7WkEP@M&tr-*elMy!nK;CO>2VXX)BWF%0EzcaTkZDgrZwlL z=xYg}4rdO#hEPm66PaUUWBWfpb+n`?*57~!m1lQ=mWr)03?S7mHR41@<64VRill}u zIYIEj#^xWU_X00>T{Q((qk9iDeV~wogJq#28LAg7<!F~S_ zm^x`TBa8#2S}UfOuy+^~7pxod{G*WX)`P6tFZo%^dYcSs{z1ydyA+L_N-Ln4Am6@2 zck;B5h;$Qn$89Ms&Cs{co8G_N2Y(iNHN(4kYq%TKCV5cR2X0XhAV6j^`~bGGg-`B~c`DtMNC}M8;Ghk20O;06(nnAxcS%Uh5Qc*7G zT1Z2{C$=%@w^G1U8)l0!9xl@}Q9vCa`pA7v40ghPgj;~ z)WkKY^zr~6585^vN&>j22?y?xHw^d9@a}(PMOt`_b#!s^^d$Q?fZN9&0h2=Y8njD+ zaQBuD>0@#&fpbP}3`7Y?nKusTo@-B&6J@smY3e?)K$@FY&^!}O1Unq+vuiV5)yBYn z&u5=VQm_I;CsGdZCzsNi-C(sO&R@*I_n)!&-?YpZ;2)g>POwq97Ow;~AqF|XTU|;I zqYv_o4y!uf0fvH{YKl?e7o|@|(M_!S>jG%;Od~p6M-DQHv!LghAfdEkH|Hln?@)@z zhv?ElX!-HS9}o3Hr+x?&{OX`xk4Qil%?;YyQQl9t5>^|QavC+Drp*5$j07x-m5q-- zVaA`9=$@1S2e}2BlUR(pdq3WjtVx8#8v(=%8koR@opE|jqa+l70{YaPEoHBLBit-8 z^8pP>H)tXWK-wiWH8pVH9YMq{nV-V(?mOVm%FP|%H~7(}k}F_eYJCr2VJmgCoJR1x zdvYL{K`kZlSRks%dlt!Wz%`CH4|(k3@|k8ha2mIWA&1h6iXJ8iX%cQvK!&2Zp(x5B zK*GL8P)8p9_B*I+0=5NRCMIEg2i(PRpTEI?mipZMu??2pf(O3~5A`O2ob~gFq*gx( z96PZC1n~9E>^~3P7C*NtOFb$@DIqfSAj~@x7&`r8i3L(8@UetkM7p z#oRBWs|wm4TT!N{?-Wx@*oA8DH z6LLn87cwdcy@sV#RkmO?zZN^3Y0N?~rfc9BxC{XKfu#dH$C^wQ33r^FKcHFipg4bY|Ni|6G*rZx192EZDSZMY-aOqP zmyAb=BH?JFNI(E+OU^?**uBs-PTxH+lK2o%AJy0EDiwxbsv-+{+Pb=r&mVfyBCJ69xYb6r$E^gBw`kyMMW<37nfF6Qh?FmK**cB zB@^5sg)F$Z>H+M-u?nCd!2s@oBASi(L#57pU)=};xQdUE&xLaB#sE%OD{BHN^Bd3$ zt9rH=gLJ_<&x8t?!6A|cz>K03f$u^ot1V5gv7ZaIRG?C!DhKR^IlC`TF(sdqLv9kU zGy~VQ@qhp@>P1Vr>{f9jRe;Te>C)p_3Y~+c_9*DFyv+p&dFrC80ZS{ZJe5=d&JLv^ z&0!F9kT|q1*r+98T|vq){K@!JpgB(6OITR10aJV5Q6OVc)uE5?fWX?gn+QCyc8~lb z7I?a2kKPk8wSfm8B16UA-+@|ZPCCP$E5EgJGVlKNtmlIw|7qU&s~DT>$T2x8L5)^4 zi``%tYsH=S@Z=+g7Y5a!P9pXuZZxFX$zo&bSXvb{hC$SJM|=}K?PdjpLVQ);_>tyZs?@@_7w=vim(A!l z71k99`|Ox?79rjoEIBJqD2&b=16`8$nyYQ+yE$uApGOH}U#obJ!@&gH@wIJ7Ld5@U zIuw6(>Bh#*N(p~Wc5#qIH^NEoE>1{xt${%J|Eu7IW7KYMi-wA!lg)i-gy zaFj7;(A2vMUWYJlk_I*?$@mTwN?6paH`$^s`Zf5#iKuW>8Q+x3MI!7@rkZF4oUeBd znNhs|g;nITk%EAD_LpN5E`$+(g znY%|xX6{M%#GU947>KD{++5*BqA3qZl*NF<6w0kN7yQq>3@7KGMrcmnj%z32VY9Cu zRn;uK+HUFmdy5Jh;II|Ct~7=5L2W6QOAa`A_Y(GYuFGN*#Wpl6});urmHy5BXjJJMq1eT ztJD8YPp`c5VVHUugniwrRYlX=-9;@XULMM;FDN@ zPR*K_ox@uTRooLbzlfVOHnbz_lAeA*k$s1D&6egfQIn{s5_^aCL%pKuwe-0=^n~L} z;fp!ertEB4&Cuvx^m0SNMmtWsG{85oV;2!uge@X#JR}+!n@!BjLNn*MGy?;BdhSIw zv}*Gcm&pVCa%mYE)S|$w6M1VDw^L$P_cDJ#zDc_^Hl!#no#$6(*d(xA0Wd$)gk2sV zvvXYQ8Ir8f8I&pC1JOe~<>Q0XKG*)jDs1rWXQS^H?HERhLi$Ab+eAzR!~)T9SvhoP zNogvR$>5uawD^w>_1fjLE-6ybCjn6S5D{dDf-hm zJP2%Spp@~?99!Y-KcD>LW05|T8X?k2R*cp!QBX4}eyuNH01*8=N2fDYDof$odRG0! z09F$CMr~?%zol5GQf_^zOzjsQgx1l2!PW1c1PqrH5xtVceJ--yIxmh>>da^uOKb|M zM4$kwju6(ohBzCX)w-?^04J1Ejg7tH+0t4K7IjoysQt&BWsC-0G_c&z=V%cB#$(Nu z4t8X9squOep*9$9NLFbIuPXEK`vX1(>-lC$7}YwRsh3=U^9vcuVk}B85*}6Q4osDG z#ummt0z<3*N?VZfp(K!B;Q)vmKpwNWfT$ICL-S&DgjLN|qDOIqLo?&Yp2cPbh&njv zpj-GkT`%uVRPmY^ENKX_l<$qrS3F}~wx|^lgU+lTk~aSt2RBby@+>k_u?ibm>-E>= z0P5p_sH>Hg`I%?0pOI`~5O4p54CAdamd*7S<@-FSJ-Z1%@j0Oy#u8zB?u^%&%ri4~ zO@^o4hZnQdh9{q0CYI6M?wS&em~)nU5Yv2hwVgd6NtTcQoskHiBDKHU9F6eLtagm} z1pVsqIFp!ML|=Bot1o#2jt%q|PHYb!nc+Rp!}`3B#WKo1CEKA}&FpE^c9HI((vHv8 z8g4Fqug31Gun3vevp=GoN`dnc2`1bZvifh$tdTZ9E30xbaTRchp;}dO4dg= zRA2z;-RI4JX=2H|M=!XG4mMH4@zc}iNCt`2Vmo>fL}?POr)z*iLvVYci2f#ib(N** z*IQdb_gQfh_JmxbJL5z`szw(2Cnp&?bVp+8AXbD-K+VU*crEZDHwGIMW`(Ts^W50$ z1K2@_$R|CMmVA9ni76wqI3A75JA?5N^e)YQ_fVtrUJ*9ur?r%UKg&2p9pn#WNs4kV zmc*MRUi%oNJ;y57^w-?^DtpxH6OxD&${q#3nGcLHos|Cs`Ae4IaoTv!bLu0B{s^i?tJA0*V@tesmnGzqg&bFEjk z>Mt%w9nGSGp;P#3b#w&rD;eZ3YYKLzxEFSMkrUs*;4@9S0g=3(#Vk`-s`F&!n_CnY z51eVEt@~uqo3_zkXszYF0R#lH`G`{a;ASE|V*OuSyPtuWU5w#yLig z1dmq`BGVN<^pi&+Na^39aOu0G>K@WxD1y>3t`5;~UB=W4P8yh=x?RgDadN z8s3AifO*lJiiBIiH7!woTDF716@oje?|b`!^6mzkMZjR&c&HT81^K4VJ|-e%OSczp zB!{s(Fj{g)2ae(wBQ7OyC*(KYcH1EViFk9lHZpQ5)EDBPyH*gbGF^635{F&^?~4+} z+X(3anXIt~q=g#ClKllLp^T-j&bU>pAxEytUpnB|7}rMu;t;R0dIDoal{FYb@} zTFzC|^lUE*`{kiKIu(R>MtMwh3whnT2=HbJk{WM^6h1<|_N z^#s1^+!3c5D~>656O7w(nQJOL`4w>W=y$g!Oy}+|H!rXuPCX!(eH9bU*bd}$Q|CxD zkz*Nwyd8BRaj8z#xn3VP876XT;`njd>g`Ha;yj8J$)CS=K7uV({t|>;)YJ_5Jgv@9 z4=ZC9aGu>Vm!;~_qAj@+;oov<`8k*hatt=oLUhW57MRsx6{A(!HDe~AWodJJYCUt) zZo*mGwI<$gCP^jTcVdor(8&u~0U$G)?yzbunAMDoY-601bQss&rSXELLds%`K07(J zFtG_avq|(n@5O1}^!8F8DPHeFCb&vt4H6?~TqMOqjJZ?t*=+zaluoAWm#rVi$WJ&s zc{&a2zzO^qhNn!xQjU%kR+BT=wkW^S7u_R5muMprtILLlXga~@6{PeYcXYU4kExe~ zJ`e0Y?O9Ct%n?0w>9u(sT(BllgeQ-UaQek$=q?RUwIjE-jiga8)Kk4g!f3zc*7zeT z?fEM|s2mMQ8do&S?fS9n_5|;3zjI01VgZndF?$h}cRF#{e>rXFenXiT$agHUrC{8~ zx2C7xnh~th51jXsU*hxyRHfK8Ad%T{Ilhh3D-DNF@(sg;5;+*t@pQ)VdJyO z8w1UD0lIqR$cw93ws)FbLrCo9D7Dl?M7Llds8XG@bu)1_IVa)6QBpx9ivERFs(bAp ztkUv_YQv#;)o2rfB(+;yW`D3Q(TgtX&>}p}@-PDsLPOP%fvAr_k6XNz#pte6tULoi zdW2f+aX@}B`a$rzjNm(((F3xiP&WjTuz@+vZKcaor?AU+UV*JT(Z9vn3%4`lua0~- zT1HDkuzn`J>WxdtsnEJ~(H}GNMr}A}tbcMSK%&<%r#vuN7_Z~fBgtB9z-_f4exvd& zD;?bzwcF`DFVfX4M70nHXvU>gi@EtXQ3EAQ4G@gxh~cAvQ`)#B%P6H%RQ7pNIgv)E zp&hd7_GolwA56d~EPUH{4AhX8>Vj>j%n>Air|NT2;{}|^MHs#LTBQIF-%J-g&7i{5 zo0eqHTAO|F@v|_vm}+UcO@u=`Vx~}dx*kw_=5u^^PmM|rWvh%BWs4?^h8*PRLi(Yh zW+b$O;dqUn!ko;tookV!q22M3-Ga;!&kDnmmC(y+pVvBhxa%tsTS5~TWu$8=TGW3) zw~>*n8N{&OXXUIF_p}gpI3X&F-Fn^>*}Ox)_VX^<)SLs7dL4#JD_w^J;}^`@44oV# zC;w9U+-T=PeZuazl9q+31viK0cMT1Ui1JvQ;Xu4v0ah&7%mhLOg7%2)l#MPcR+F70 zpt>@BYsc4=FefCjzL)obsIKqX_>$`CKA^FUO3SJ)P#ex>t)#p8+4z}N%%X-HMRLSV zmb1ZdV91~D=$O;1mP!zP6Ns6$+dvs|5aP~@T*{*z zZoUf`S%`>EGY+`fo3iD&@^U$G+=<2Lze!?tq|{vHcoZA#q=Xs#Ev0z_Lo1?Y>3P&s zw=p(oud@*4)^<|Z(bN!X`?%R56BMxCev>t-cs#Y1=)cjH!Ce^NlHa*{0!Nq&1izNBiVQcX@jOF_>O)Epi`fK z!14#23n~aKI-}FB%h^UEHd8Tuy)ltzpQpJtCu`vQjo)h0Q(N2&oe2=3So z%q&MEt@}H%$Zi>HCiB)09PK=_$oT}TE`sDTo;~v@E-@EaN6k*#xc9^0<_%C7kgoMN z$4sX#aMwLb9=W!wTPTAYh3<-Yht!dskIVR>8lPf$@MQu7~2LD!SE_p zAy1#V#$6OM>we}W%ukaW?%E|5*_qBU)Im2?(Pm9RuSt6QgG|`mHoX|Q;eI#Haf5&o z>TK@)9bH$lY(NcTgvH2Yl}J%5!dupFTUwKekc@myT<)Gqo zsa|u=gyuh+gHgpxeX;)yBJ{>Tp3_LT0WdP7C(oXZ8v?^qSwKqk5gEW%Qa@DN(CdZ( z4Smp=sZ?@iPomwPr)69X6j?_i%3g>#GkDRm z*fRad!YBdR0!X)dpMDOgFH$D4;lW_My%=sO1U z_ilvsoNo6Xt?`l4LR^4mdlNCtLW8$SVy5qrxUjC1aIgy&H18gGY}0L*$Q!tQ#KaJy z?~sJgU_n2^J~A&KASa3d3r5Z=Bh${*z$A9FV-Dj9O&v{IZym7SU`wSzv!*k*_WNy2 z0ahSHLn)>`v`p^>N5!P5Hvn40BOn22v<(P?cV}0|8xzZ^-pxbTlVBEeeS3I3&w{ zKmc+};Lef21P=vxLUUl^7Y^EBuoq<&6({|vevVjeR8R literal 15662 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%0D1~d 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 lg75!Nj(Yrmne79Pz^a^ABAA^4IJXi{Lsk1?j diff --git a/src/napari_matplotlib/tests/scatter/baseline/test_scatter_2D.png b/src/napari_matplotlib/tests/scatter/baseline/test_scatter_2D.png index 3b55066636e11453c90846182b3df5aa049d161b..f96b5354f90467d86b7a531bccbcefaba47f7ecb 100644 GIT binary patch literal 18548 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 literal 18537 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 None: https://napari.org/stable/gallery/new_theme.html """ blue_theme = napari.utils.theme.get_theme("dark", False) - blue_theme.name = "blue" + blue_theme.label = "blue" blue_theme.background = "#4169e1" # my favourite shade of blue - napari.utils.theme.register_theme("blue", blue_theme) + napari.utils.theme.register_theme( + "blue", blue_theme, source="napari-mpl-tests" + ) def test_theme_background_check(make_napari_viewer): From 22192b6aadb07cecec02667ce9bd1519fc361408 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 26 Jul 2023 16:03:30 +0100 Subject: [PATCH 028/216] Pin napari version to build docs --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index f7ddd381..229b5777 100644 --- a/setup.cfg +++ b/setup.cfg @@ -47,7 +47,7 @@ napari.manifest = [options.extras_require] docs = - napari[all] + napari[all]==0.4.17 numpydoc pydata-sphinx-theme qtgallery From 915944988c27812c44b26ab3b0696b2c2200610b Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 26 Jul 2023 16:10:20 +0100 Subject: [PATCH 029/216] Add changelog entry --- docs/changelog.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index e3b62dae..103cd80e 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -6,6 +6,7 @@ Bug fixes ~~~~~~~~~ - A full dataset is no longer read into memory when using ``HistogramWidget``. Only the current slice is loaded. +- Fixed compatibility with napari 0.4.18. Changes ~~~~~~~ From 7b11356779d5450453e3a37174a7d4b538d93861 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 20:37:13 +0000 Subject: [PATCH 030/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.0.280 → v0.0.281](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.280...v0.0.281) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index caf38d16..1fb3a9df 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -29,7 +29,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.0.280' + rev: 'v0.0.281' hooks: - id: ruff From 523212962063ad4f7173c892126f6cb7c8d1062d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 14 Aug 2023 20:22:12 +0000 Subject: [PATCH 031/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-mypy: v1.4.1 → v1.5.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.4.1...v1.5.0) - [github.com/astral-sh/ruff-pre-commit: v0.0.281 → v0.0.284](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.281...v0.0.284) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1fb3a9df..33aee57b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,14 +22,14 @@ repos: - id: napari-plugin-checks - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.4.1 + rev: v1.5.0 hooks: - id: mypy additional_dependencies: [numpy, matplotlib] - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.0.281' + rev: 'v0.0.284' hooks: - id: ruff From f1360063fdad4314156881eb32142d874f8920bc Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 21 Aug 2023 20:26:54 +0000 Subject: [PATCH 032/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-mypy: v1.5.0 → v1.5.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.5.0...v1.5.1) - [github.com/astral-sh/ruff-pre-commit: v0.0.284 → v0.0.285](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.284...v0.0.285) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 33aee57b..4e322a0d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,14 +22,14 @@ repos: - id: napari-plugin-checks - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.5.0 + rev: v1.5.1 hooks: - id: mypy additional_dependencies: [numpy, matplotlib] - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.0.284' + rev: 'v0.0.285' hooks: - id: ruff From 2119f45d6d1133b6d818334cdd1920d3ea55a77f Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 14:34:57 +0100 Subject: [PATCH 033/216] Fix testing extra name --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 229b5777..e1fc9e73 100644 --- a/setup.cfg +++ b/setup.cfg @@ -55,7 +55,7 @@ docs = sphinx-automodapi sphinx-gallery testing = - napari[pyqt6-experimental]>=0.4.18 + napari[pyqt6_experimental]>=0.4.18 pooch pyqt6 pytest From 70248a71822c364ba526e45acd53337776b1a3d1 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 14:41:57 +0100 Subject: [PATCH 034/216] Remove setup-cfg-format from pre-commit --- .pre-commit-config.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4e322a0d..b78e43e1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,11 +6,6 @@ repos: - id: end-of-file-fixer - id: trailing-whitespace - - repo: https://github.com/asottile/setup-cfg-fmt - rev: v2.4.0 - hooks: - - id: setup-cfg-fmt - - repo: https://github.com/psf/black rev: 23.7.0 hooks: From 726b66aca1ba56a690264501e75272258211dbad Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 14:27:14 +0100 Subject: [PATCH 035/216] Explcitly check dimensions in slice tests --- src/napari_matplotlib/tests/conftest.py | 4 +++- src/napari_matplotlib/tests/test_slice.py | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/napari_matplotlib/tests/conftest.py b/src/napari_matplotlib/tests/conftest.py index 6b2a813f..4d07c706 100644 --- a/src/napari_matplotlib/tests/conftest.py +++ b/src/napari_matplotlib/tests/conftest.py @@ -1,7 +1,9 @@ import os from pathlib import Path +from typing import Any, Dict, Tuple import numpy as np +import numpy.typing as npt import pytest from skimage import data @@ -18,7 +20,7 @@ def image_data(request): @pytest.fixture -def astronaut_data(): +def astronaut_data() -> Tuple[npt.NDArray[Any], Dict[Any, Any]]: return data.astronaut(), {"rgb": True} diff --git a/src/napari_matplotlib/tests/test_slice.py b/src/napari_matplotlib/tests/test_slice.py index 412e71c3..fa25c3d4 100644 --- a/src/napari_matplotlib/tests/test_slice.py +++ b/src/napari_matplotlib/tests/test_slice.py @@ -9,7 +9,11 @@ def test_slice_3D(make_napari_viewer, brain_data): viewer = make_napari_viewer() viewer.theme = "light" + + data = brain_data[0] + assert data.ndim == 3 viewer.add_image(brain_data[0], **brain_data[1]) + axis = viewer.dims.last_used slice_no = brain_data[0].shape[0] - 1 viewer.dims.set_current_step(axis, slice_no) @@ -23,7 +27,11 @@ def test_slice_3D(make_napari_viewer, brain_data): def test_slice_2D(make_napari_viewer, astronaut_data): viewer = make_napari_viewer() viewer.theme = "light" + + data = astronaut_data[0] + assert data.ndim == 2 viewer.add_image(astronaut_data[0], **astronaut_data[1]) + fig = SliceWidget(viewer).figure # Need to return a copy, as original figure is too eagerley garbage # collected by the widget From 8ac1cd2c68118123017135622f54bc443ea032b8 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 14:47:42 +0100 Subject: [PATCH 036/216] Fix data dimensions --- src/napari_matplotlib/tests/test_slice.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/napari_matplotlib/tests/test_slice.py b/src/napari_matplotlib/tests/test_slice.py index fa25c3d4..0111e185 100644 --- a/src/napari_matplotlib/tests/test_slice.py +++ b/src/napari_matplotlib/tests/test_slice.py @@ -11,11 +11,11 @@ def test_slice_3D(make_napari_viewer, brain_data): viewer.theme = "light" data = brain_data[0] - assert data.ndim == 3 - viewer.add_image(brain_data[0], **brain_data[1]) + assert data.ndim == 3, data.shape + viewer.add_image(data, **brain_data[1]) axis = viewer.dims.last_used - slice_no = brain_data[0].shape[0] - 1 + slice_no = data.shape[0] - 1 viewer.dims.set_current_step(axis, slice_no) fig = SliceWidget(viewer).figure # Need to return a copy, as original figure is too eagerley garbage @@ -28,9 +28,10 @@ def test_slice_2D(make_napari_viewer, astronaut_data): viewer = make_napari_viewer() viewer.theme = "light" - data = astronaut_data[0] - assert data.ndim == 2 - viewer.add_image(astronaut_data[0], **astronaut_data[1]) + # Take first RGB channel + data = astronaut_data[0][:, :, 0] + assert data.ndim == 2, data.shape + viewer.add_image(data, **astronaut_data[1]) fig = SliceWidget(viewer).figure # Need to return a copy, as original figure is too eagerley garbage From 2b026ec08cc2bf9bfa5acfb4305d816316bef1bd Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 14:50:26 +0100 Subject: [PATCH 037/216] Update 3D slice test image --- .../tests/baseline/test_slice_3D.png | Bin 14698 -> 14356 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/napari_matplotlib/tests/baseline/test_slice_3D.png b/src/napari_matplotlib/tests/baseline/test_slice_3D.png index 43c8c3b6c0b276f89860ef1b630fafdd219070b9..c30211dab12d3c276a1427990fc86c01b2dff46a 100644 GIT binary patch literal 14356 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 From bc496fcb528239466379b0ffea2f067760c89247 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 14:50:52 +0100 Subject: [PATCH 038/216] Fix adding 2D slice data --- src/napari_matplotlib/tests/test_slice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/tests/test_slice.py b/src/napari_matplotlib/tests/test_slice.py index 0111e185..32eb9ad4 100644 --- a/src/napari_matplotlib/tests/test_slice.py +++ b/src/napari_matplotlib/tests/test_slice.py @@ -31,7 +31,7 @@ def test_slice_2D(make_napari_viewer, astronaut_data): # Take first RGB channel data = astronaut_data[0][:, :, 0] assert data.ndim == 2, data.shape - viewer.add_image(data, **astronaut_data[1]) + viewer.add_image(data) fig = SliceWidget(viewer).figure # Need to return a copy, as original figure is too eagerley garbage From ed278ec3471dff3845a465c9329a9cfb669f8d79 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 14:59:59 +0100 Subject: [PATCH 039/216] Fix slicing 2D images --- src/napari_matplotlib/slice.py | 37 +++++++++++++----- .../tests/baseline/test_slice_2D.png | Bin 21061 -> 33587 bytes 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/napari_matplotlib/slice.py b/src/napari_matplotlib/slice.py index e3aa80b2..f0d01f3f 100644 --- a/src/napari_matplotlib/slice.py +++ b/src/napari_matplotlib/slice.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, Optional, Tuple +from typing import Any, Dict, List, Optional, Tuple import matplotlib.ticker as mticker import napari @@ -12,7 +12,6 @@ __all__ = ["SliceWidget"] _dims_sel = ["x", "y"] -_dims = ["x", "y", "z"] class SliceWidget(SingleAxesWidget): @@ -37,7 +36,7 @@ def __init__( self.dim_selector = QComboBox() button_layout.addWidget(QLabel("Slice axis:")) button_layout.addWidget(self.dim_selector) - self.dim_selector.addItems(_dims) + self.dim_selector.addItems(["x", "y", "z"]) self.slice_selectors = {} for d in _dims_sel: @@ -61,7 +60,7 @@ def _layer(self) -> napari.layers.Layer: return self.layers[0] @property - def current_dim(self) -> str: + def current_dim_name(self) -> str: """ Currently selected slice dimension. """ @@ -74,12 +73,27 @@ def current_dim_index(self) -> int: """ # Note the reversed list because in napari the z-axis is the first # numpy axis - return _dims[::-1].index(self.current_dim) + return self._dim_names[::-1].index(self.current_dim_name) + + @property + def _dim_names(self) -> List[str]: + """ + List of dimension names. This is a property as it varies depending on the + dimensionality of the currently selected data. + """ + if self._layer.data.ndim == 2: + return ["x", "y"] + elif self._layer.data.ndim == 3: + return ["x", "y", "z"] + else: + raise RuntimeError("Don't know how to handle ndim != 2 or 3") @property def _selector_values(self) -> Dict[str, int]: """ Values of the slice selectors. + + Mapping from dimension name to value. """ return {d: self.slice_selectors[d].value() for d in _dims_sel} @@ -87,19 +101,22 @@ def _get_xy(self) -> Tuple[npt.NDArray[Any], npt.NDArray[Any]]: """ Get data for plotting. """ - x = np.arange(self._layer.data.shape[self.current_dim_index]) + dim_index = self.current_dim_index + if self._layer.data.ndim == 2: + dim_index -= 1 + x = np.arange(self._layer.data.shape[dim_index]) vals = self._selector_values vals.update({"z": self.current_z}) slices = [] - for d in _dims: - if d == self.current_dim: + for dim_name in self._dim_names: + if dim_name == self.current_dim_name: # Select all data along this axis slices.append(slice(None)) else: # Select specific index - val = vals[d] + val = vals[dim_name] slices.append(slice(val, val + 1)) # Reverse since z is the first axis in napari @@ -115,7 +132,7 @@ def draw(self) -> None: x, y = self._get_xy() self.axes.plot(x, y) - self.axes.set_xlabel(self.current_dim) + self.axes.set_xlabel(self.current_dim_name) self.axes.set_title(self._layer.name) # Make sure all ticks lie on integer values self.axes.xaxis.set_major_locator( diff --git a/src/napari_matplotlib/tests/baseline/test_slice_2D.png b/src/napari_matplotlib/tests/baseline/test_slice_2D.png index 639f25b84b2bfc224f3344d75995265fa56aa79e..ee3ce3b69a960ddfb07c347ef92c8c5f351d2472 100644 GIT binary patch literal 33587 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 Date: Wed, 23 Aug 2023 15:00:59 +0100 Subject: [PATCH 040/216] Add changelog --- docs/changelog.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 103cd80e..f7425bfe 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,5 +1,11 @@ Changelog ========= +1.0.3 +----- +Bug fixes +~~~~~~~~~ +- Fixed creating 1D slices of 2D images. + 1.0.2 ----- Bug fixes From 08ee5d097caa97e09805fe5faae1eb8b29e9042b Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 15:05:22 +0100 Subject: [PATCH 041/216] Remove conftest typing --- src/napari_matplotlib/tests/conftest.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/napari_matplotlib/tests/conftest.py b/src/napari_matplotlib/tests/conftest.py index 4d07c706..6b2a813f 100644 --- a/src/napari_matplotlib/tests/conftest.py +++ b/src/napari_matplotlib/tests/conftest.py @@ -1,9 +1,7 @@ import os from pathlib import Path -from typing import Any, Dict, Tuple import numpy as np -import numpy.typing as npt import pytest from skimage import data @@ -20,7 +18,7 @@ def image_data(request): @pytest.fixture -def astronaut_data() -> Tuple[npt.NDArray[Any], Dict[Any, Any]]: +def astronaut_data(): return data.astronaut(), {"rgb": True} From a9d41dbfd73311577e9aa6bed3c00c24f30981d6 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 16:31:10 +0100 Subject: [PATCH 042/216] Fix slicing selection --- src/napari_matplotlib/slice.py | 85 ++++++++++++----------- src/napari_matplotlib/tests/test_slice.py | 24 +++++++ 2 files changed, 70 insertions(+), 39 deletions(-) diff --git a/src/napari_matplotlib/slice.py b/src/napari_matplotlib/slice.py index f0d01f3f..43635a83 100644 --- a/src/napari_matplotlib/slice.py +++ b/src/napari_matplotlib/slice.py @@ -1,18 +1,23 @@ -from typing import Any, Dict, List, Optional, Tuple +from typing import Any, List, Optional, Tuple import matplotlib.ticker as mticker import napari import numpy as np import numpy.typing as npt -from qtpy.QtWidgets import QComboBox, QHBoxLayout, QLabel, QSpinBox, QWidget +from qtpy.QtCore import Qt +from qtpy.QtWidgets import ( + QComboBox, + QLabel, + QSlider, + QVBoxLayout, + QWidget, +) from .base import SingleAxesWidget from .util import Interval __all__ = ["SliceWidget"] -_dims_sel = ["x", "y"] - class SliceWidget(SingleAxesWidget): """ @@ -30,28 +35,44 @@ def __init__( # Setup figure/axes super().__init__(napari_viewer, parent=parent) - button_layout = QHBoxLayout() - self.layout().addLayout(button_layout) - self.dim_selector = QComboBox() + self.dim_selector.addItems(["x", "y"]) + + self.slice_selector = QSlider(orientation=Qt.Orientation.Horizontal) + + # Create widget layout + button_layout = QVBoxLayout() button_layout.addWidget(QLabel("Slice axis:")) button_layout.addWidget(self.dim_selector) - self.dim_selector.addItems(["x", "y", "z"]) - - self.slice_selectors = {} - for d in _dims_sel: - self.slice_selectors[d] = QSpinBox() - button_layout.addWidget(QLabel(f"{d}:")) - button_layout.addWidget(self.slice_selectors[d]) + button_layout.addWidget(self.slice_selector) + self.layout().addLayout(button_layout) # Setup callbacks - # Re-draw when any of the combon/spin boxes are updated + # Re-draw when any of the combo/slider is updated self.dim_selector.currentTextChanged.connect(self._draw) - for d in _dims_sel: - self.slice_selectors[d].textChanged.connect(self._draw) + self.slice_selector.valueChanged.connect(self._draw) self._update_layers(None) + def on_update_layers(self) -> None: + """ + Called when layer selection is updated. + """ + if self.current_dim_name == "x": + max = self._layer.data.shape[-2] + elif self.current_dim_name == "y": + max = self._layer.data.shape[-1] + else: + raise RuntimeError("dim name must be x or y") + self.slice_selector.setRange(0, max) + + @property + def _slice_width(self) -> int: + """ + Width of the slice being plotted. + """ + return self._layer.data.shape[self.current_dim_index] - 1 + @property def _layer(self) -> napari.layers.Layer: """ @@ -73,7 +94,7 @@ def current_dim_index(self) -> int: """ # Note the reversed list because in napari the z-axis is the first # numpy axis - return self._dim_names[::-1].index(self.current_dim_name) + return self._dim_names.index(self.current_dim_name) @property def _dim_names(self) -> List[str]: @@ -82,45 +103,31 @@ def _dim_names(self) -> List[str]: dimensionality of the currently selected data. """ if self._layer.data.ndim == 2: - return ["x", "y"] + return ["y", "x"] elif self._layer.data.ndim == 3: - return ["x", "y", "z"] + return ["z", "y", "x"] else: raise RuntimeError("Don't know how to handle ndim != 2 or 3") - @property - def _selector_values(self) -> Dict[str, int]: - """ - Values of the slice selectors. - - Mapping from dimension name to value. - """ - return {d: self.slice_selectors[d].value() for d in _dims_sel} - def _get_xy(self) -> Tuple[npt.NDArray[Any], npt.NDArray[Any]]: """ Get data for plotting. """ - dim_index = self.current_dim_index - if self._layer.data.ndim == 2: - dim_index -= 1 - x = np.arange(self._layer.data.shape[dim_index]) - - vals = self._selector_values - vals.update({"z": self.current_z}) + val = self.slice_selector.value() slices = [] for dim_name in self._dim_names: if dim_name == self.current_dim_name: # Select all data along this axis slices.append(slice(None)) + elif dim_name == "z": + # Only select the currently viewed z-index + slices.append(slice(self.current_z, self.current_z + 1)) else: # Select specific index - val = vals[dim_name] slices.append(slice(val, val + 1)) - # Reverse since z is the first axis in napari - slices = slices[::-1] + x = np.arange(self._slice_width) y = self._layer.data[tuple(slices)].ravel() return x, y diff --git a/src/napari_matplotlib/tests/test_slice.py b/src/napari_matplotlib/tests/test_slice.py index 32eb9ad4..ab38f716 100644 --- a/src/napari_matplotlib/tests/test_slice.py +++ b/src/napari_matplotlib/tests/test_slice.py @@ -37,3 +37,27 @@ def test_slice_2D(make_napari_viewer, astronaut_data): # Need to return a copy, as original figure is too eagerley garbage # collected by the widget return deepcopy(fig) + + +def test_slice_axes(make_napari_viewer, astronaut_data): + viewer = make_napari_viewer() + viewer.theme = "light" + + # Take first RGB channel + data = astronaut_data[0][:256, :, 0] + # Shape: + # x: 0 > 512 + # y: 0 > 256 + assert data.ndim == 2, data.shape + # Make sure data isn't square for later tests + assert data.shape[0] != data.shape[1] + viewer.add_image(data) + + widget = SliceWidget(viewer) + assert widget._dim_names == ["y", "x"] + assert widget.current_dim_name == "x" + assert widget.slice_selector.value() == 0 + assert widget.slice_selector.minimum() == 0 + assert widget.slice_selector.maximum() == data.shape[0] + # x/y are flipped in napari + assert widget._slice_width == data.shape[1] From b73bf6fb8415ba8a1c8fe2eef8501d2e1459ccbb Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 16:33:27 +0100 Subject: [PATCH 043/216] Add changelog --- docs/changelog.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index f7425bfe..2304fecf 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -2,9 +2,17 @@ Changelog ========= 1.0.3 ----- +Changes +~~~~~~~ +- The slice widget is now limited to slicing along the x/y dimensions. Support + for slicing along z has been removed for now to make the code simpler. +- The slice widget now uses a slider to select the slice value. + Bug fixes ~~~~~~~~~ - Fixed creating 1D slices of 2D images. +- Removed the limitation that only the first 99 indices could be sliced using + the slice widget. 1.0.2 ----- From 9eb43eefaa4e114b9b1772c8df59e66963afce11 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 23 Aug 2023 16:44:14 +0100 Subject: [PATCH 044/216] Fix tests --- src/napari_matplotlib/slice.py | 6 ++++-- src/napari_matplotlib/tests/test_slice.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/napari_matplotlib/slice.py b/src/napari_matplotlib/slice.py index 43635a83..393f2e45 100644 --- a/src/napari_matplotlib/slice.py +++ b/src/napari_matplotlib/slice.py @@ -58,20 +58,22 @@ def on_update_layers(self) -> None: """ Called when layer selection is updated. """ + if not len(self.layers): + return if self.current_dim_name == "x": max = self._layer.data.shape[-2] elif self.current_dim_name == "y": max = self._layer.data.shape[-1] else: raise RuntimeError("dim name must be x or y") - self.slice_selector.setRange(0, max) + self.slice_selector.setRange(0, max - 1) @property def _slice_width(self) -> int: """ Width of the slice being plotted. """ - return self._layer.data.shape[self.current_dim_index] - 1 + return self._layer.data.shape[self.current_dim_index] @property def _layer(self) -> napari.layers.Layer: diff --git a/src/napari_matplotlib/tests/test_slice.py b/src/napari_matplotlib/tests/test_slice.py index ab38f716..368a7ded 100644 --- a/src/napari_matplotlib/tests/test_slice.py +++ b/src/napari_matplotlib/tests/test_slice.py @@ -58,6 +58,6 @@ def test_slice_axes(make_napari_viewer, astronaut_data): assert widget.current_dim_name == "x" assert widget.slice_selector.value() == 0 assert widget.slice_selector.minimum() == 0 - assert widget.slice_selector.maximum() == data.shape[0] + assert widget.slice_selector.maximum() == data.shape[0] - 1 # x/y are flipped in napari assert widget._slice_width == data.shape[1] From 5e9604b9789b121517bdd3f8444511e9796e1cac Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 25 Aug 2023 16:58:28 +0100 Subject: [PATCH 045/216] Fix test figure location --- .../tests/baseline/test_feature_histogram2.png | Bin 0 -> 12860 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/napari_matplotlib/tests/baseline/test_feature_histogram2.png diff --git a/src/napari_matplotlib/tests/baseline/test_feature_histogram2.png b/src/napari_matplotlib/tests/baseline/test_feature_histogram2.png new file mode 100644 index 0000000000000000000000000000000000000000..b7bb19e039d73adfd05f0d3860a5a1c4d0711f72 GIT binary patch literal 12860 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 Date: Fri, 25 Aug 2023 17:00:10 +0100 Subject: [PATCH 046/216] Run pre-commit and fix typing --- src/napari_matplotlib/histogram.py | 8 ++++---- src/napari_matplotlib/tests/test_histogram.py | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index c5eb9f41..66aa7acc 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -122,7 +122,7 @@ def _get_valid_axis_keys(self) -> List[str]: else: return self.layers[0].features.keys() - def _get_data(self) -> Tuple[npt.NDArray[Any], str]: + def _get_data(self) -> Tuple[Optional[npt.NDArray[Any]], str]: """Get the plot data. Returns @@ -137,12 +137,12 @@ def _get_data(self) -> Tuple[npt.NDArray[Any], str]: if not hasattr(self.layers[0], "features"): # if the selected layer doesn't have a featuretable, # skip draw - return [], "" + return None, "" feature_table = self.layers[0].features if (len(feature_table) == 0) or (self.x_axis_key is None): - return [], "" + return None, "" data = feature_table[self.x_axis_key] x_axis_name = self.x_axis_key.replace("_", " ") @@ -164,7 +164,7 @@ def draw(self) -> None: """Clear the axes and histogram the currently selected layer/slice.""" data, x_axis_name = self._get_data() - if len(data) == 0: + if data is None: return self.axes.hist(data, bins=50, edgecolor="white", linewidth=0.3) diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index a478a2c2..006c042f 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -1,5 +1,6 @@ from copy import deepcopy +import numpy as np import pytest from napari_matplotlib import FeaturesHistogramWidget, HistogramWidget @@ -35,8 +36,6 @@ def test_histogram_3D(make_napari_viewer, brain_data): def test_feature_histogram(make_napari_viewer): - import numpy as np - n_points = 1000 random_points = np.random.random((n_points, 3)) * 10 feature1 = np.random.random(n_points) @@ -72,7 +71,8 @@ def test_feature_histogram(make_napari_viewer): @pytest.mark.mpl_image_compare def test_feature_histogram2(make_napari_viewer): - import numpy as np + import numpy as np + np.random.seed(0) n_points = 1000 random_points = np.random.random((n_points, 3)) * 10 From e1ccfb18d4c48abd14037490e1acd4bf3a27baa1 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 25 Aug 2023 16:55:09 +0100 Subject: [PATCH 047/216] Update docs --- docs/changelog.rst | 6 +++++- docs/user_guide.rst | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 2304fecf..6f77e0c3 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,7 +1,11 @@ Changelog ========= -1.0.3 +1.1.0 ----- +Additions +~~~~~~~~~ +- Added a widget to draw a histogram of features. + Changes ~~~~~~~ - The slice widget is now limited to slicing along the x/y dimensions. Support diff --git a/docs/user_guide.rst b/docs/user_guide.rst index 0872e540..fbd48db1 100644 --- a/docs/user_guide.rst +++ b/docs/user_guide.rst @@ -30,6 +30,7 @@ These widgets plot the data stored in the ``.features`` attribute of individual Currently available are: - 2D scatter plots of two features against each other. +- Histograms of individual features. To use these: From dd74f278bd64d2aaa8778b00fecb0784bb06a5f1 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 25 Aug 2023 17:15:53 +0100 Subject: [PATCH 048/216] Add testing on Python 3.11 --- .github/workflows/test_and_deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_and_deploy.yml b/.github/workflows/test_and_deploy.yml index df170bdf..6e170d14 100644 --- a/.github/workflows/test_and_deploy.yml +++ b/.github/workflows/test_and_deploy.yml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: platform: [ubuntu-latest, macos-latest, windows-latest] - python-version: ['3.8', '3.9', '3.10'] + python-version: ['3.8', '3.9', '3.10', '3.11'] steps: - uses: actions/checkout@v3 From 70b77dec3d1a330af0f551355370debd288c3cf5 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 25 Aug 2023 17:16:35 +0100 Subject: [PATCH 049/216] Add tox environment --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 298887e1..683992f5 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py{38,39,310} +envlist = py{38,39,310,311} isolated_build = true [gh-actions] From cf7466971bc38d3998c1a3b9584fb49a06fd9747 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 25 Aug 2023 17:17:29 +0100 Subject: [PATCH 050/216] Update development status --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index e1fc9e73..b05201cb 100644 --- a/setup.cfg +++ b/setup.cfg @@ -9,7 +9,7 @@ author_email = d.stansby@ucl.ac.uk license = BSD-3-Clause license_files = LICENSE classifiers = - Development Status :: 3 - Alpha + Development Status :: 5 - Production/Stable Framework :: napari Intended Audience :: Developers License :: OSI Approved :: BSD License From 719e60856d1d2377d3b1447a906aa0378bfe0ed2 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 25 Aug 2023 17:19:01 +0100 Subject: [PATCH 051/216] Add link to docs in README --- README.md | 27 +-------------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/README.md b/README.md index 855c4991..e4551d23 100644 --- a/README.md +++ b/README.md @@ -15,32 +15,7 @@ A plugin to create Matplotlib plots from napari layers ## Introduction `napari-matplotlib` is a bridge between `napari` and `matplotlib`, making it easy to create publication quality `Matplotlib` plots based on the data loaded in `napari` layers. -## Available widgets - -### `Slice` -Plots 1D slices of data along a specified axis. -![](https://raw.githubusercontent.com/matplotlib/napari-matplotlib/main/examples/slice.png) - -### `Histogram` -Plots histograms of individual image layers, or RGB histograms of an RGB image -![](https://raw.githubusercontent.com/matplotlib/napari-matplotlib/main/examples/hist.png) - -### `Scatter` -Scatters the values of two similarly sized images layers against each other. -![](https://raw.githubusercontent.com/matplotlib/napari-matplotlib/main/examples/scatter.png) - -## Installation - -You can install `napari-matplotlib` via [pip]: - - pip install napari-matplotlib - - - -To install latest development version : - - pip install git+https://github.com/matplotlib/napari-matplotlib.git - +Documentaiton can be found at https://napari-matplotlib.github.io/ ## Contributing From 81781d84524ea234593c32e21da3f900f586f6ae Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 28 Aug 2023 20:13:27 +0000 Subject: [PATCH 052/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.0.285 → v0.0.286](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.285...v0.0.286) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b78e43e1..6d7edc89 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.0.285' + rev: 'v0.0.286' hooks: - id: ruff From ebe47b94b93a612f211a359792c6d0a83c7248ca Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 20:32:36 +0000 Subject: [PATCH 053/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.0.286 → v0.0.287](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.286...v0.0.287) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6d7edc89..b30938ce 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.0.286' + rev: 'v0.0.287' hooks: - id: ruff From 0e8b3b232377269bc0e7a8a4f6de6989515f22bb Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 11 Sep 2023 20:52:27 +0000 Subject: [PATCH 054/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black: 23.7.0 → 23.9.1](https://github.com/psf/black/compare/23.7.0...23.9.1) - [github.com/astral-sh/ruff-pre-commit: v0.0.287 → v0.0.288](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.287...v0.0.288) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b30938ce..2e7732ce 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/psf/black - rev: 23.7.0 + rev: 23.9.1 hooks: - id: black @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.0.287' + rev: 'v0.0.288' hooks: - id: ruff From 064252ba03ad924a4d012e0b85f0bee972fb5b82 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 12:49:03 +0200 Subject: [PATCH 055/216] added basic coloring to histogram --- src/napari_matplotlib/histogram.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 66aa7acc..269fdc52 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -162,12 +162,37 @@ def on_update_layers(self) -> None: def draw(self) -> None: """Clear the axes and histogram the currently selected layer/slice.""" + + # get the colormap from the layer depending on its type + if isinstance(self.layers[0], napari.layers.Points): + colormap = self.layers[0].face_colormap + self.viewer.layers[0].face_color = self.x_axis_key + elif isinstance(self.layers[0], napari.layers.Vectors): + colormap = self.layers[0].edge_colormap + self.viewer.layers[0].edge_color = self.x_axis_key + elif isinstance(self.layers[0], napari.layers.Labels): + colormap = self.layers[0].colormap + self.viewer.layers[0].color = self.x_axis_key + else: + colormap = None + self.viewer.layers[self.layers[0].name].refresh_colors(True) + + # Draw the histogram data, x_axis_name = self._get_data() if data is None: return - self.axes.hist(data, bins=50, edgecolor="white", linewidth=0.3) + _, bins, patches = self.axes.hist(data, bins=50, edgecolor="white", linewidth=0.3) + + # recolor the histogram plot + if colormap is not None: + self.bins_norm = (bins - bins.min())/(bins.max() - bins.min()) + colors = colormap.map(self.bins_norm) + + # Set histogram style: + for idx, patch in enumerate(patches): + patch.set_facecolor(colors[idx]) # set ax labels self.axes.set_xlabel(x_axis_name) From 42ce86dccd8edf61991c19af1b6a079b3a4ec022 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 12:49:08 +0200 Subject: [PATCH 056/216] Create test.ipynb --- src/napari_matplotlib/tests/test.ipynb | 185 +++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 src/napari_matplotlib/tests/test.ipynb diff --git a/src/napari_matplotlib/tests/test.ipynb b/src/napari_matplotlib/tests/test.ipynb new file mode 100644 index 00000000..e65c5740 --- /dev/null +++ b/src/napari_matplotlib/tests/test.ipynb @@ -0,0 +1,185 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import napari\n", + "from napari_matplotlib import FeaturesHistogramWidget\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "n_points = 1000\n", + "random_points = np.random.random((n_points, 3)) * 10\n", + "random_points2 = np.random.random((n_points, 3)) * 10\n", + "random_vectors = random_points2 - random_points\n", + "\n", + "vectors = np.stack([random_points, random_vectors], axis=1)\n", + "feature1 = np.random.random(n_points)\n", + "feature2 = np.random.normal(size=n_points)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "viewer = napari.Viewer()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "viewer.add_points(\n", + " random_points,\n", + " properties={\"feature1\": feature1, \"feature2\": feature2},\n", + " name=\"points1\",\n", + " face_color=\"feature1\",\n", + " size=1,\n", + ")\n", + "\n", + "viewer.add_vectors(\n", + " vectors,\n", + " properties={\"feature1\": feature1, \"feature2\": feature2},\n", + " name=\"vectors1\",\n", + " edge_width=1,\n", + " edge_color=\"feature1\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "widget = FeaturesHistogramWidget(viewer)\n", + "viewer.window.add_dock_widget(widget)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'feature1'" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "widget.x_axis_key" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "widget.viewer.layers[widget.layers[0].name].refresh_colors(True)\n", + "widget.viewer.layers[0].properties\n", + "widget.viewer.layers[widget.layers[0].name].refresh_colors(True)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "widget.viewer.layers[1]._update_properties" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "widget.viewer.layers[0].edge_color = \"feature2\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "stress", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From ee4f9a8f3f917ebe07ac685c602489d9b1ffe3d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:24:29 +0200 Subject: [PATCH 057/216] changed color properties of correct layer --- src/napari_matplotlib/histogram.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 269fdc52..6a5915b9 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -166,13 +166,13 @@ def draw(self) -> None: # get the colormap from the layer depending on its type if isinstance(self.layers[0], napari.layers.Points): colormap = self.layers[0].face_colormap - self.viewer.layers[0].face_color = self.x_axis_key + self.layers[0].face_color = self.x_axis_key elif isinstance(self.layers[0], napari.layers.Vectors): colormap = self.layers[0].edge_colormap - self.viewer.layers[0].edge_color = self.x_axis_key + self.layers[0].edge_color = self.x_axis_key elif isinstance(self.layers[0], napari.layers.Labels): colormap = self.layers[0].colormap - self.viewer.layers[0].color = self.x_axis_key + self.layers[0].color = self.x_axis_key else: colormap = None self.viewer.layers[self.layers[0].name].refresh_colors(True) From 206f71f54002ad33a3718aa68a29429101538ba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:24:52 +0200 Subject: [PATCH 058/216] used correct refresh functions to make it work for different layer types --- src/napari_matplotlib/histogram.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 6a5915b9..82cf11c5 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -175,8 +175,11 @@ def draw(self) -> None: self.layers[0].color = self.x_axis_key else: colormap = None + + # apply new colors to the layer self.viewer.layers[self.layers[0].name].refresh_colors(True) - + self.viewer.layers[self.layers[0].name].refresh() + # Draw the histogram data, x_axis_name = self._get_data() From e3540c34808486ef67078c7c53b8710397afa917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:25:17 +0200 Subject: [PATCH 059/216] made specific tests for every layer type --- src/napari_matplotlib/tests/test_histogram.py | 50 ++++++++++++++----- 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index 006c042f..534d7952 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -36,8 +36,11 @@ def test_histogram_3D(make_napari_viewer, brain_data): def test_feature_histogram(make_napari_viewer): + n_points = 1000 random_points = np.random.random((n_points, 3)) * 10 + random_directions = np.random.random((n_points, 3)) * 10 + random_vectors = np.stack([random_points, random_directions], axis=1) feature1 = np.random.random(n_points) feature2 = np.random.normal(size=n_points) @@ -47,10 +50,10 @@ def test_feature_histogram(make_napari_viewer): properties={"feature1": feature1, "feature2": feature2}, name="points1", ) - viewer.add_points( - random_points, + viewer.add_vectors( + random_vectors, properties={"feature1": feature1, "feature2": feature2}, - name="points2", + name="vectors1", ) widget = FeaturesHistogramWidget(viewer) @@ -70,26 +73,44 @@ def test_feature_histogram(make_napari_viewer): @pytest.mark.mpl_image_compare -def test_feature_histogram2(make_napari_viewer): - import numpy as np +def test_feature_histogram_vectors(make_napari_viewer): + + n_points = 1000 + np.random.seed(42) + random_points = np.random.random((n_points, 3)) * 10 + random_directions = np.random.random((n_points, 3)) * 10 + random_vectors = np.stack([random_points, random_directions], axis=1) + feature1 = np.random.random(n_points) + + viewer = make_napari_viewer() + viewer.add_vectors( + random_vectors, + properties={"feature1": feature1}, + name="vectors1", + ) + + widget = FeaturesHistogramWidget(viewer) + viewer.window.add_dock_widget(widget) + widget._set_axis_keys("feature1") + + fig = FeaturesHistogramWidget(viewer).figure + return deepcopy(fig) + + +@pytest.mark.mpl_image_compare +def test_feature_histogram_points(make_napari_viewer): np.random.seed(0) n_points = 1000 random_points = np.random.random((n_points, 3)) * 10 feature1 = np.random.random(n_points) - feature2 = np.random.normal(size=n_points) viewer = make_napari_viewer() viewer.add_points( random_points, - properties={"feature1": feature1, "feature2": feature2}, + properties={"feature1": feature1}, name="points1", ) - viewer.add_points( - random_points, - properties={"feature1": feature1, "feature2": feature2}, - name="points2", - ) widget = FeaturesHistogramWidget(viewer) viewer.window.add_dock_widget(widget) @@ -120,3 +141,8 @@ def test_change_layer(make_napari_viewer, brain_data, astronaut_data): viewer.layers.selection.clear() viewer.layers.selection.add(viewer.layers[1]) assert_figures_not_equal(widget.figure, fig1) + + +if __name__ == '__main__': + import napari + test_feature_histogram_points(napari.Viewer) \ No newline at end of file From d65da102603ac33a5dee8504f876b94849960b0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:25:26 +0200 Subject: [PATCH 060/216] updated baselines --- .../tests/baseline/test_feature_histogram2.png | Bin 12860 -> 0 bytes .../baseline/test_feature_histogram_points.png | Bin 0 -> 11479 bytes .../baseline/test_feature_histogram_vectors.png | Bin 0 -> 10886 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/napari_matplotlib/tests/baseline/test_feature_histogram2.png create mode 100644 src/napari_matplotlib/tests/baseline/test_feature_histogram_points.png create mode 100644 src/napari_matplotlib/tests/baseline/test_feature_histogram_vectors.png diff --git a/src/napari_matplotlib/tests/baseline/test_feature_histogram2.png b/src/napari_matplotlib/tests/baseline/test_feature_histogram2.png deleted file mode 100644 index b7bb19e039d73adfd05f0d3860a5a1c4d0711f72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12860 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 Date: Wed, 4 Oct 2023 16:28:49 +0200 Subject: [PATCH 061/216] removed labels from supported layers --- src/napari_matplotlib/histogram.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 82cf11c5..cf677bea 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -170,9 +170,6 @@ def draw(self) -> None: elif isinstance(self.layers[0], napari.layers.Vectors): colormap = self.layers[0].edge_colormap self.layers[0].edge_color = self.x_axis_key - elif isinstance(self.layers[0], napari.layers.Labels): - colormap = self.layers[0].colormap - self.layers[0].color = self.x_axis_key else: colormap = None From 073613cb0027d2321bf5ced9724b45a0ba06f4b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:45:09 +0200 Subject: [PATCH 062/216] Delete test.ipynb --- src/napari_matplotlib/tests/test.ipynb | 185 ------------------------- 1 file changed, 185 deletions(-) delete mode 100644 src/napari_matplotlib/tests/test.ipynb diff --git a/src/napari_matplotlib/tests/test.ipynb b/src/napari_matplotlib/tests/test.ipynb deleted file mode 100644 index e65c5740..00000000 --- a/src/napari_matplotlib/tests/test.ipynb +++ /dev/null @@ -1,185 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import napari\n", - "from napari_matplotlib import FeaturesHistogramWidget\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "n_points = 1000\n", - "random_points = np.random.random((n_points, 3)) * 10\n", - "random_points2 = np.random.random((n_points, 3)) * 10\n", - "random_vectors = random_points2 - random_points\n", - "\n", - "vectors = np.stack([random_points, random_vectors], axis=1)\n", - "feature1 = np.random.random(n_points)\n", - "feature2 = np.random.normal(size=n_points)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "viewer = napari.Viewer()" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "viewer.add_points(\n", - " random_points,\n", - " properties={\"feature1\": feature1, \"feature2\": feature2},\n", - " name=\"points1\",\n", - " face_color=\"feature1\",\n", - " size=1,\n", - ")\n", - "\n", - "viewer.add_vectors(\n", - " vectors,\n", - " properties={\"feature1\": feature1, \"feature2\": feature2},\n", - " name=\"vectors1\",\n", - " edge_width=1,\n", - " edge_color=\"feature1\",\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "widget = FeaturesHistogramWidget(viewer)\n", - "viewer.window.add_dock_widget(widget)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'feature1'" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "widget.x_axis_key" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "widget.viewer.layers[widget.layers[0].name].refresh_colors(True)\n", - "widget.viewer.layers[0].properties\n", - "widget.viewer.layers[widget.layers[0].name].refresh_colors(True)" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "widget.viewer.layers[1]._update_properties" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [], - "source": [ - "widget.viewer.layers[0].edge_color = \"feature2\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "stress", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.18" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} From 7179889a29027942060d30a85dd016a459bf0e13 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 4 Oct 2023 14:47:32 +0000 Subject: [PATCH 063/216] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/napari_matplotlib/histogram.py | 9 +++++---- src/napari_matplotlib/tests/test_histogram.py | 8 +++----- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index cf677bea..0a49dc41 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -162,7 +162,6 @@ def on_update_layers(self) -> None: def draw(self) -> None: """Clear the axes and histogram the currently selected layer/slice.""" - # get the colormap from the layer depending on its type if isinstance(self.layers[0], napari.layers.Points): colormap = self.layers[0].face_colormap @@ -183,16 +182,18 @@ def draw(self) -> None: if data is None: return - _, bins, patches = self.axes.hist(data, bins=50, edgecolor="white", linewidth=0.3) + _, bins, patches = self.axes.hist( + data, bins=50, edgecolor="white", linewidth=0.3 + ) # recolor the histogram plot if colormap is not None: - self.bins_norm = (bins - bins.min())/(bins.max() - bins.min()) + self.bins_norm = (bins - bins.min()) / (bins.max() - bins.min()) colors = colormap.map(self.bins_norm) # Set histogram style: for idx, patch in enumerate(patches): - patch.set_facecolor(colors[idx]) + patch.set_facecolor(colors[idx]) # set ax labels self.axes.set_xlabel(x_axis_name) diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index 534d7952..e71fea2a 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -36,7 +36,6 @@ def test_histogram_3D(make_napari_viewer, brain_data): def test_feature_histogram(make_napari_viewer): - n_points = 1000 random_points = np.random.random((n_points, 3)) * 10 random_directions = np.random.random((n_points, 3)) * 10 @@ -74,7 +73,6 @@ def test_feature_histogram(make_napari_viewer): @pytest.mark.mpl_image_compare def test_feature_histogram_vectors(make_napari_viewer): - n_points = 1000 np.random.seed(42) random_points = np.random.random((n_points, 3)) * 10 @@ -99,7 +97,6 @@ def test_feature_histogram_vectors(make_napari_viewer): @pytest.mark.mpl_image_compare def test_feature_histogram_points(make_napari_viewer): - np.random.seed(0) n_points = 1000 random_points = np.random.random((n_points, 3)) * 10 @@ -143,6 +140,7 @@ def test_change_layer(make_napari_viewer, brain_data, astronaut_data): assert_figures_not_equal(widget.figure, fig1) -if __name__ == '__main__': +if __name__ == "__main__": import napari - test_feature_histogram_points(napari.Viewer) \ No newline at end of file + + test_feature_histogram_points(napari.Viewer) From e7789a071c2e0c8bf935c1023fcc2f8480415acb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:51:46 +0200 Subject: [PATCH 064/216] removed main from test --- src/napari_matplotlib/tests/test_histogram.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index e71fea2a..1ceca519 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -138,9 +138,3 @@ def test_change_layer(make_napari_viewer, brain_data, astronaut_data): viewer.layers.selection.clear() viewer.layers.selection.add(viewer.layers[1]) assert_figures_not_equal(widget.figure, fig1) - - -if __name__ == "__main__": - import napari - - test_feature_histogram_points(napari.Viewer) From 7177fb732b7718e94c103584dde2a48c84a76314 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sun, 8 Oct 2023 08:34:29 +0100 Subject: [PATCH 065/216] Pin Matplotlib to < 3.8 --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index b05201cb..70ad93a2 100644 --- a/setup.cfg +++ b/setup.cfg @@ -27,7 +27,7 @@ project_urls = [options] packages = find: install_requires = - matplotlib + matplotlib<3.8 napari numpy tinycss2 From 07c545b6c117718488a737ca0bcc5361e9f42258 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sun, 8 Oct 2023 08:37:17 +0100 Subject: [PATCH 066/216] Add pin to pre-commit-config --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2e7732ce..63bb3a79 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -20,7 +20,7 @@ repos: rev: v1.5.1 hooks: - id: mypy - additional_dependencies: [numpy, matplotlib] + additional_dependencies: [numpy, matplotlib<3.8] - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. From 5b87710d46db3bec3643afb898c22072cbd095f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Sun, 8 Oct 2023 21:04:59 +0200 Subject: [PATCH 067/216] re-saved generated figures --- baseline/test_feature_histogram_points.png | Bin 0 -> 11524 bytes baseline/test_feature_histogram_vectors.png | Bin 0 -> 11153 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 baseline/test_feature_histogram_points.png create mode 100644 baseline/test_feature_histogram_vectors.png diff --git a/baseline/test_feature_histogram_points.png b/baseline/test_feature_histogram_points.png new file mode 100644 index 0000000000000000000000000000000000000000..0f71e7624c10a7b4f995186d1b59b08d9a052c3c GIT binary patch literal 11524 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 literal 0 HcmV?d00001 diff --git a/baseline/test_feature_histogram_vectors.png b/baseline/test_feature_histogram_vectors.png new file mode 100644 index 0000000000000000000000000000000000000000..8048ac91e4d3dd57056d61f19df6d96529b5f551 GIT binary patch literal 11153 zcmdsdcT`i^{_jZwfk6=!ln&z%K%~h~rH_ReY0?CwD$=`Dfj}aI3?gAf1*IcRdhaa* z_DJu95>SdnAku4iJ9qBA@ArFay|wQB{pP*3-uuI)=A5(7KKolfW$&2l255FRJ~jw~ z*fCcx8$%Er2SG3jD-!&o*gO6O{B^MH^_M3b(STwu||VIe(Ro)}PF|c;CUC*9(JJGV9;4 z^O#zXnD+R-kgI>Bs&e!s^UGI{jvW0X>Q_bm&0jrG_`=(mzOU;CpHtuFeNFXi^h;c( zx7c<2r9Ua$y)js4m}{t6P*YG<#feEkMP)bivR_R=6|^43C7>{P-k}9#;q3Ns#we2j z>zBCYD+wr9TnsL*t#$T+0nbI)?-#epJquzeOak&%Bo1xw!b~jHh+vtv)y5>`$ef5u zyVLz8JBtfy`oegkxK|&H&Cc|$js9u=(b`YP!A(RSNEDL*cYvOvFl>)t*Aq|@=aG!3 z|H=zT-Te`T1t+xKg%^|HP3{A+g&m&fFu5DEp+AqTTt!fNhC<#%9k$-FAi(Pa@PCuGD3aS^PGf2Nl`7<Qu=sHaj)l5mvqEgOad1V zA`^u%w*Paf<)CW`DCW1&zkcDnB{6}|lc{GcdN-H2%(wAVK@dItm>gKWxS`z`Dz~g< zML_6idxMGC>S&cgGRL^hUM(u1KZKkoD>Yi-u0PuTgNXCpnf3VHP*ox?B&s<6u!P*; z-I1tMcc$Q1!KR_|fcaIOx~y~G1^&8#bns2!PzAR|a6@eFj984s=KS&rd~_t58tv6~ z4?}h!>z)?W4F4%fIOt;-WqG$+)U_O}P2Z1wnEr$8$q=5FyiN+1~p!#2vt%>N_UEsGOG@;?%arJJhZX z$0PZVRG%vg??=odf`(hA*->#Lh+t`&I_22}TFiI7(<^c-&$9K0ZL{QAzXX+=qolhs zh|+I-^}fBGC(5&s2iFo5UU^J3q@&Yqdl!@xaD$3ao@F>Y4M`cq2s}ID9&~DI9^U-} z4kNGx4-8;$+A;)v;^&PY3QW++x;qv8a?H6$7ur~b}7t6E|M(tm0fm1?bSL(KSB819+Zy!X9!?_^` z{01=so>8D11Qr%nFpPy#KI(zql>z?=vi%;m%}Pr34soK!Tau?FWA~34 zQAuTQSt}LivCA?Co036~Ti6PX5vuh`GhkMk0-0OQTm1FZNa-r}}s1Wze)UwwDM(s%HW z+J;-yB!%*O$NpPg;_r*&4AW))4@HM6c$>_2!o^nDiPw1Q0I6M&xlt+UZCmNIRGV-` zo+It`eU9{>h3lI%JuwMxx4zI`c#P5UQB9jtvUY0USn~{<-L7J{_@UgFitcsadpc71 zCmx^*3<8%dySgTH`6qNP1^*?p{#!SEek;yPyPF4Ay_pp*QQoA}VoJKc|01W5Z)p7J z`Lg!aYt#XY@GV!OJakN;#JqWBDzO;r;xO8NDPH~eBW;^qe+!>`TeWR?Z-lgE(_MFP zX0Ti)B@}8hErDcUOR6S0%Y$^thrb04oPZ$e!d zayW<{xP1_bp*okg1bkRzCto|=sp@hvL;dgzSjP=lPzJ(#UqKlNP1sg0)OR>l&|@A& zlLlbTfy+`u^Aet9-C-fE&>I%ieCDWERXOOCG)!5>(G#pIR2_W{BI#-#tStzL}Lby%w z1&-kJovTTrzUx{W3nt(Jrnr#PKE`2FMqyeH+HL z+fbM4+WNvSzgMAUN8fQJxJyZSpsh6j;~cCDZEK*sRVE0O$S&5@@IS+dN(f)MT1@u4 z(5K!K2GmYCe-aw5RkvSk+l0jc)^fi$D+lBL;g_qP4)&)v9JgmyU#7uA`NvA5z z)tK4s{C2A<_*=!1)3tT7vQ}zg+b13gM{EFuE>t$Y@=vJQYe*&GB%6?4*8YA>9wXh3 z*M7O#;Ht(^EFIA@_|27bu_q3tG0fQ{EH;I;8*QxUm>;-vu(U*S^|rhD#8LU84Fmj! zA#cbw?X}TXc`Yx`W2c>Zp-@=<>3j|JNpus=#-?NW;0b_PJ)2UvK~-}B4}FqJAmerK zqL63=d<@Uo*y+dQ!|LO#@i$nx(y|HJ9!W(spLpLdwW3-kt3R{w6-DS%ARV5n|G9Hj zP#YO`s=i+m2Uuufku8kY@@9)1`bdkz!eW1o1=m81=v&h130Tkv0Xn9hi6&DMpKuJqVjlR*X+9!H$yVhO)AE zRqu?c$k4lHq9m2QWG%M}xjz+}pc8WN?a+v!`?8%OS=d~uk^NbPQ)jl6H`%&&x#yDD zP*%#WRf8{x&Zu#v)6n`40gE~b3fKRd*6j>Cf=j&B39X$wTauHvLiKk2wkuk2;%4&x zvWWu^#7ul-`J`bcTg$fI>rEnPMHiM|jTImE#DsnA%aE~d+U*6uVRvpRTDGAS+pCRC zcIwQgY`5Qcp|1_qh?N8^Ud=iWE%H)tcw{Y2vWvPOdm*3eM73+$H5wBdHw`(E7a#OE zNEl#^{}%SEqG73wr95^3556yp_TMA3YsKh4axKF{v=YCQP=xeSV=V^dt4QyLw^qcj z1;L|XMTLEFKoGf=Izvp)6JPfZU2`(1QZKu!b?F+Z{50;~sYLUe`A9bq`?>|J5)Y{;)6v_W_sC9iqw)hfy z%#Nj#r+dEjE~$NxTANgY-HCM`&JuCeb~_jmj%d7dh3*3AfA1a5!x`l+mgUkr4cxMO z9}>(ApH8CX_HYu``}dX2n?K2Fu6KyKXN+4{F7#CNZ@+)+UF84b7hN5J*TPD6jkNC* zMY=3UZ8Yx|;-1eiz{=zNB3E08D4C z=V9NW1@uWh__kozBnb$Q;Qlu^=Pz)Dw2aV zMi!Jz@0-JPffCBQ1L;-mrz?;+r06@D3MBSNV4)+&{oppqv)+bPVNSlZ>t|Cte^7@$ zeX|7BnDa+&okmCmiUlKrwJBIoJTwn^{2F3;6Iw=~fxSgqYq! z+_{$YAq7(Ya1{pBvYDZGG|rGoN8EQ^JX27G3P17lh8xhlm_aiy!%0!VkNi@TK zP-`#mjp))Dz@*}o{Q6W*kCz8e1D!`25(;`b05U>E_-2P%mcb|S3<~}+$ ztf$d@Ofbr^@BP>PZ;vIpy~s7ScP3I1bLQBI@4rRv^bZ-zehMs;vQqQ>R8-hX@6nJ1 z*wl(pQIE;?eD(=QB2|hR5DfGb5sX>oZED~$*@7A*36Dv(!UKWmP5rFOxD{{Q4c8Q?&)=S}!cBo*%RG*hedR9- z5&%99|J`Y)^<$u@Z*@bTBarMVgSo{50ZZ=+rpdI8=dGR(qOpxi?_4;A1-F85hB82kUGd#d!K)RHUOtJ| zT2u=5PM#&XdeAmV2O?jD7#h_#(zEu%K}9A zKgq)@M?2$^;<55L7V~FQ6`JmEU#t3yV8(<6L&rwQt-wZkTHOtS_?@GOwxmWYvu(>? zud+GenkdYq$E37WBo>oxLo6-5wMA!CcizAm$_s5>+0SS=%Z8&UxJ&z%w{4Oo_y_y9 zv#m04I_HQUC`?(nB<>B?G9E1ERr~8+k>a_Q>4E%SFoR5=3LU#C#Je z!$$S>Uzmwgh|jnJ0Fwngi|1yo2amq@8`xanuNkN8)o&Q^f-nCr+LkW>0acqY{5ZbbU5kkID*ED5x|xw#xZ8E1Tv8u+TuFg zZx-rr{_(OgM!NIwAg-hMb8*4U(tsmim`W2zt);Phsrzaru(AOxWM|c_gJPGCHV}Fz z9#IWCj5JwysAcY~_l2>m@}GeeCS*v5sYpk3A9f^Qtm&)Dp8y_Voe`u*y-yk%m-dbf zYt$5YEa|@88h8GQU0rkq7-V}6ZxWZr+ro7}B#)Yi4;1h(kvhIAC3?yVdt9trF3>Ly zzHKww7>PD4x}@Akmk1ChPFfKZUoCfA?P8f!5am8&@yQYmVuB0?d9r*I3#rBTXCQW2ufkRF*km^$HA2I zykM}LkLy3WZzC&eNv@gO;#in!Ot#%XDdNPXV_nM10d~94iX1JE0hd4MKi~8`tCiVH-06pUktM>5SOmFXYx{=q#2|6)1L#7G`1!UbkOLc+d|NQ#M`~moeBV z#|V{y}exS0xpZ%G6Iek@F|{;112gGHv( zhfCT?M$1kPX*uD4677yR0r=F+tf0EzqT{oapY!ZuqEE$SCPtU61!-0pkq=$@1H9$e(RdqblkD!P*0 zk?KT9GmiGk!RObJiQp4mS>^w2llWiq#{L~6I!^`$WUG0;W$W3_RREzuz$Da(|Elkr zc<7fro6;v00aP>@q-L>D3s~oySgSS!?>Xg%*;am8{ZYE7IKEP3eoW(C|NwL^H3K&4^|ftcXj40 z^D>;^X$q7x=F*@xE3W_HidD#?sXos!Kj7H{h^(gu486!lD^dZ$a%JUZg_XCRhFpiK zkNOQpdnn-`jgV3Jp&(i(}fDdXp!2)oW60wgBi-Nm~nuJRU1Ftu>v zLZLpXcnNFv{S9pA)7QN+_U6O14drpuelbw_4<0r$5dl?&<^uT@B|BHM@q)k&)velh zqdaj<)Y3b1+?LIQ$*UO6@Q=?F3=0vt5p7?U!W_RJs8Xycv0Tfiw)O1=XrYuZC_>;+ zffmRi`vIyZt`4CunimAmkYUu2=_SN8W77mR`1t?OM#=w;&6xl9-vRb8w38G_vPhXl zxsZD&(P*ViK@hMr?nEZy%RM}26Z?v*DFXvQULL`PCa8>!|80-#K_&h)#KF)f<(&1L z7QeslZA5N?xGLlv&56}shIcU=ASaJ}f`=zL-5ap-O`a9$mx^z)bxyk%QWgM)3#o;1 zLQhm0MPst5z?=e&`!rPCG!>tN^MVo*fDT#OH?8V-VaD;xnQsF&39g zoB?WBp&Fp$-$JPkL~LDx%C5mlGzYW-ONUR6j?{u|eUJz{0RcpX2_VLY6lG$vTi#4N z@H2LN`mQSgYnn?ReiJ9H@zxtg_~!XQfrN&OG(DJFe`}I`xcjvm_VTk`gj3v@RQ+5b z>1~&ao2sC`peR*LP!-?Ok^D8&Uy%4Z@?F1Naly;6A6P`cxw^iL)DWeb{eaNb z7XW?cc;w=}4D@ICO~(L;Gmntl(hx~#nROR8;MEN^VG#@k7PP)lM>^XgTTS*z|5H;7 zwY+jVp|9qN*dr&7&=IS=WA=U9M%6)Y9o@y_`QLyW8{NoiBAd$+c50%$;Qwy*l1^{0W$W^bF~VQ47zmCORR!}y4>0rS;g-w%_)_*eEZ%p3{3v<@foqt+c^I`JW z#4gur`5n~OtCEXlz^DDO+;g zj$AT)uuO+;At#{_+OLZ4!z-`!W0@K4(*Lb%z6WDxlf@>YL;s%ia4y|Xja|sA=#M{^ z6oTtZknyVCMXVzuisygagy1=r;oRk@nCwF<0WahbY#8OczVkq77_eQr-{F9oSZ41T zt&AH)Mw8uqeEu9J`!U%q^Be5f_Q_^ypVXm9Ia58vb0jSPu|9)#Dk8*y#$ErcKoUnB z9@RrE!wd{&Ud>0H0cAJF0WQLUAY}K^&)z%hz#Wxhw&Lb5a_+;QGh?air%c!Ksq@vA zAU|DToWdxKhxv-QFknCaKf`_~@Wyvs6U#7FVb003LAjQiZF&bl(rTF&w<&k7nk){w zzu&D)1C-1>dA1F(k%}2=?On3jVE^z`f!A7En$tb-obpipmEN+IR$tddyA-FLJOvUM zX>xAM4!iDPWdodwRbZEZopWsRtT}i^q3yu~!2JF}0N<=s$e(*YUk`jS>wWA^Fr$W= z#cpWi5^(8qeGJ=maojLn{2SLq!%_4B2`>ykWNSWNf1)0kEc1i8)7l#WYOr@kBL-#6 z1m+<`8!%UNmYUeDv}(7GfBr2kq6SF8d;?FG{4#Pu(vB7G9c~NQffLC}{PlE?qM6Md zX__~&2nRO0(~L3*9Ru+zty_>VlAt&9s-?6OSt?9kuae5qe*wJ z8c_6s?_=?D?g+5}sJAk5y|B?XU9DkEqk*M7W#-T&9_B^mOM2ZqIYX=1d%iTXym2K~ zcfeh1!%uBP0m*Z0V12YViyZH{;cD-G5`B1+e2n>E(jXrZ1Rn<8n`r0i9{7@Ax#l9B z-G-87i11Za4-jk*3KwN=EU-wk&^?{!y7GM?NDL;e-JKur0V9mRQ}5q2(kf{zDM+Dv zBCeJ>>P32ooUY?$!M__=3M?{cXS1*H?FEHHkxsT(BR}?_&s$fv2wOAQn$iLrVGfikTz>1(^T3s12@?nwj`BlxGa2Yt?VAAZ z5jQJDbS5MHA(PNY8EhVt@6=QFEXodsGnSaNlV^qDn#fe3*eb`W^SyQ(OXjZEzp^(< zp0)X$3BPXTbOdUNT$TQhbxrg$v$kf?#{Hr{XFXmqlcJ{@AB317l+dg4q(r%im7*1%0JM|)egpQ zIN;LHlu6brn>C>~tZdeP4TUnO*C>skq*$e3GMPRSTR}j49LmtHoWE(Xy(k$USl^1%4Z0q zpL=s*X&KmlW0~X#yU@8>29GvU`Lz8^bxZJNt5?w#B1^y2;SnG1s5M1d=F=M^kwxdO z0iwv35%71r?COjQ@ZghR@(C&-Xy4s7Xa#6`AYpJm>a^38ft%~j(6=)&*~0mjnlCO| zJV%aSx)pCU9P=W&XDPxM)PYg+yFTZ$<0fBkQH~x~6qdAliBnpLtQ2vL(*ZyD`0A&y zTWi%mFEBhMaOmp4v=h(us{#pV+e4@1 zS+zc?6)DXGOv3#y*%VaN%pJCPJJn+r%pT+^W>AdBc|aZW?ll#&4J$uvU%MC&Bf!IN zlm+PW-2_DVq8!TzP>+IfUOD*+Br9AOittf`vw=C7Z<~$Q=05p6=L`uP)!Ftl)jBm?&c`U;tfh9F&Tk(ExHz|a zJdzIobZy23r@~qgGv=9&T<{=cuTzZ zX5-u0A+y^@qoCdRH?!W%rLZ}eGlCzl466f9`#y>ww7g{~i_rk8kNqCl0C7#6*9QBz zDS$x!5GJ4^7n7|P>sSOJN|Y9XI|L}1=Dad(1)6pR(F%8Xb!H(3pbt_9IK~Y{0CujC z`Hq2&`0U&_JIAt)qc|`#E)ErQ0HF+J2#3L1;r^J#XRzzWzs(tsAht+Ccu%INOEth( z2-l<;P>$RC`|fI(E#6WtFDBF0BvL;Q4`t^+=Gr`d&3F(@FlqrevsXYA(a2kZ18wBN z7JW~aX_@IRrGuzTl4_z}B;_g!*)$vd)8Nnhbt2rMowu71LEM|-I);F z#U8bs;8r_tTi7_Lz~M$6U`FJlJH6OKml{K>w>1TWi?`>qB^SQRzH!tCCP&bz0bS!Z zaQu#0JSJPcbCrY#tKp3d=Rk2?v;z_^fJ^4+Jv6XtVMX}1Y#-Q%MX%VKh}5S}J14k~ z_2&`U>@|D<;$>v|M6E=fS|0#*76)zxm@;Rgv{iUjU>0DEZqNcV(9_q~nSNYs%nCS( z-df*7JmwNWWaeDQK5U literal 0 HcmV?d00001 From 1a1d509651802d1e95526234a0ba46d3bbdfc298 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 9 Oct 2023 17:41:42 +0000 Subject: [PATCH 068/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/pre-commit-hooks: v4.4.0 → v4.5.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.4.0...v4.5.0) - [github.com/astral-sh/ruff-pre-commit: v0.0.288 → v0.0.292](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.288...v0.0.292) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 63bb3a79..0ca47628 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.5.0 hooks: - id: check-docstring-first - id: end-of-file-fixer @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.0.288' + rev: 'v0.0.292' hooks: - id: ruff From 96ffad3cf752f6cbe42e874e12dfe38d9523c1ed Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 16 Oct 2023 17:31:55 +0000 Subject: [PATCH 069/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-mypy: v1.5.1 → v1.6.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.5.1...v1.6.0) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0ca47628..c1adb2e3 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,7 +17,7 @@ repos: - id: napari-plugin-checks - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.5.1 + rev: v1.6.0 hooks: - id: mypy additional_dependencies: [numpy, matplotlib<3.8] From 09f4e91869d1459af58037c1b4c67a1ee1096da7 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sun, 22 Oct 2023 12:50:13 +0100 Subject: [PATCH 070/216] Remove Python 3.8 support --- .github/workflows/test_and_deploy.yml | 2 +- .pre-commit-config.yaml | 2 +- pyproject.toml | 4 ++-- setup.cfg | 2 +- tox.ini | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test_and_deploy.yml b/.github/workflows/test_and_deploy.yml index 6e170d14..8665e1d2 100644 --- a/.github/workflows/test_and_deploy.yml +++ b/.github/workflows/test_and_deploy.yml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: platform: [ubuntu-latest, macos-latest, windows-latest] - python-version: ['3.8', '3.9', '3.10', '3.11'] + python-version: ['3.9', '3.10', '3.11'] steps: - uses: actions/checkout@v3 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c1adb2e3..7bfb2d24 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -20,7 +20,7 @@ repos: rev: v1.6.0 hooks: - id: mypy - additional_dependencies: [numpy, matplotlib<3.8] + additional_dependencies: [numpy, matplotlib] - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. diff --git a/pyproject.toml b/pyproject.toml index 7c7dbbdd..705b4655 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,7 +23,7 @@ profile = "black" line_length = 79 [tool.ruff] -target-version = "py38" +target-version = "py39" select = ["I", "UP", "F", "E", "W", "D"] ignore = [ "D100", # Missing docstring in public module @@ -45,7 +45,7 @@ fix = true convention = "numpy" [tool.mypy] -python_version = "3.8" +python_version = "3.9" # Block below are checks that form part of mypy 'strict' mode warn_unused_configs = true warn_redundant_casts = true diff --git a/setup.cfg b/setup.cfg index 70ad93a2..b962611d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -31,7 +31,7 @@ install_requires = napari numpy tinycss2 -python_requires = >=3.8 +python_requires = >=3.9 include_package_data = True package_dir = =src diff --git a/tox.ini b/tox.ini index 683992f5..0125d792 100644 --- a/tox.ini +++ b/tox.ini @@ -1,12 +1,12 @@ [tox] -envlist = py{38,39,310,311} +envlist = py{39,310,311} isolated_build = true [gh-actions] python = - 3.8: py38 3.9: py39 3.10: py310 + 3.11: py311 [testenv] extras = testing From d768a924145e482664a49bee0000740c0e07cc8f Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sun, 22 Oct 2023 13:00:40 +0100 Subject: [PATCH 071/216] Typing upgrades --- src/napari_matplotlib/base.py | 6 +++--- src/napari_matplotlib/histogram.py | 6 +++--- src/napari_matplotlib/scatter.py | 12 ++++++------ src/napari_matplotlib/slice.py | 6 +++--- .../tests/scatter/test_scatter_features.py | 4 ++-- src/napari_matplotlib/tests/test_layer_changes.py | 6 +++--- src/napari_matplotlib/util.py | 8 ++++---- 7 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/napari_matplotlib/base.py b/src/napari_matplotlib/base.py index 792b5aff..21b4a044 100644 --- a/src/napari_matplotlib/base.py +++ b/src/napari_matplotlib/base.py @@ -1,6 +1,6 @@ import os from pathlib import Path -from typing import List, Optional, Tuple +from typing import Optional import matplotlib import matplotlib.style as mplstyle @@ -184,7 +184,7 @@ class NapariMPLWidget(BaseNapariMPLWidget): #: Number of layers taken as input n_layers_input = Interval(None, None) #: Type of layer taken as input - input_layer_types: Tuple[napari.layers.Layer, ...] = (napari.layers.Layer,) + input_layer_types: tuple[napari.layers.Layer, ...] = (napari.layers.Layer,) def __init__( self, @@ -193,7 +193,7 @@ def __init__( ): super().__init__(napari_viewer=napari_viewer, parent=parent) self._setup_callbacks() - self.layers: List[napari.layers.Layer] = [] + self.layers: list[napari.layers.Layer] = [] helper_text = self.n_layers_input._helper_text if helper_text is not None: diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 66aa7acc..c853988a 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -1,4 +1,4 @@ -from typing import Any, List, Optional, Tuple +from typing import Any, Optional import napari import numpy as np @@ -107,7 +107,7 @@ def _set_axis_keys(self, x_axis_key: str) -> None: self._x_axis_key = x_axis_key self._draw() - def _get_valid_axis_keys(self) -> List[str]: + def _get_valid_axis_keys(self) -> list[str]: """ Get the valid axis keys from the layer FeatureTable. @@ -122,7 +122,7 @@ def _get_valid_axis_keys(self) -> List[str]: else: return self.layers[0].features.keys() - def _get_data(self) -> Tuple[Optional[npt.NDArray[Any]], str]: + def _get_data(self) -> tuple[Optional[npt.NDArray[Any]], str]: """Get the plot data. Returns diff --git a/src/napari_matplotlib/scatter.py b/src/napari_matplotlib/scatter.py index a4148bd2..67d6896c 100644 --- a/src/napari_matplotlib/scatter.py +++ b/src/napari_matplotlib/scatter.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, List, Optional, Tuple, Union +from typing import Any, Optional, Union import napari import numpy.typing as npt @@ -40,7 +40,7 @@ def draw(self) -> None: self.axes.set_xlabel(x_axis_name) self.axes.set_ylabel(y_axis_name) - def _get_data(self) -> Tuple[npt.NDArray[Any], npt.NDArray[Any], str, str]: + def _get_data(self) -> tuple[npt.NDArray[Any], npt.NDArray[Any], str, str]: """ Get the plot data. @@ -67,7 +67,7 @@ class ScatterWidget(ScatterBaseWidget): n_layers_input = Interval(2, 2) input_layer_types = (napari.layers.Image,) - def _get_data(self) -> Tuple[npt.NDArray[Any], npt.NDArray[Any], str, str]: + def _get_data(self) -> tuple[npt.NDArray[Any], npt.NDArray[Any], str, str]: """ Get the plot data. @@ -106,7 +106,7 @@ def __init__( self.layout().addLayout(QVBoxLayout()) - self._selectors: Dict[str, QComboBox] = {} + self._selectors: dict[str, QComboBox] = {} for dim in ["x", "y"]: self._selectors[dim] = QComboBox() # Re-draw when combo boxes are updated @@ -147,7 +147,7 @@ def y_axis_key(self, key: str) -> None: self._selectors["y"].setCurrentText(key) self._draw() - def _get_valid_axis_keys(self) -> List[str]: + def _get_valid_axis_keys(self) -> list[str]: """ Get the valid axis keys from the layer FeatureTable. @@ -186,7 +186,7 @@ def draw(self) -> None: if self._ready_to_scatter(): super().draw() - def _get_data(self) -> Tuple[npt.NDArray[Any], npt.NDArray[Any], str, str]: + def _get_data(self) -> tuple[npt.NDArray[Any], npt.NDArray[Any], str, str]: """ Get the plot data from the ``features`` attribute of the first selected layer. diff --git a/src/napari_matplotlib/slice.py b/src/napari_matplotlib/slice.py index 393f2e45..9459fa97 100644 --- a/src/napari_matplotlib/slice.py +++ b/src/napari_matplotlib/slice.py @@ -1,4 +1,4 @@ -from typing import Any, List, Optional, Tuple +from typing import Any, Optional import matplotlib.ticker as mticker import napari @@ -99,7 +99,7 @@ def current_dim_index(self) -> int: return self._dim_names.index(self.current_dim_name) @property - def _dim_names(self) -> List[str]: + def _dim_names(self) -> list[str]: """ List of dimension names. This is a property as it varies depending on the dimensionality of the currently selected data. @@ -111,7 +111,7 @@ def _dim_names(self) -> List[str]: else: raise RuntimeError("Don't know how to handle ndim != 2 or 3") - def _get_xy(self) -> Tuple[npt.NDArray[Any], npt.NDArray[Any]]: + def _get_xy(self) -> tuple[npt.NDArray[Any], npt.NDArray[Any]]: """ Get data for plotting. """ diff --git a/src/napari_matplotlib/tests/scatter/test_scatter_features.py b/src/napari_matplotlib/tests/scatter/test_scatter_features.py index b5a396fd..3ede1e28 100644 --- a/src/napari_matplotlib/tests/scatter/test_scatter_features.py +++ b/src/napari_matplotlib/tests/scatter/test_scatter_features.py @@ -1,5 +1,5 @@ from copy import deepcopy -from typing import Any, Dict, Tuple +from typing import Any import numpy as np import numpy.typing as npt @@ -34,7 +34,7 @@ def test_features_scatter_widget_2D( def make_labels_layer_with_features() -> ( - Tuple[npt.NDArray[np.uint16], Dict[str, Any]] + tuple[npt.NDArray[np.uint16], dict[str, Any]] ): label_image: npt.NDArray[np.uint16] = np.zeros((100, 100), dtype=np.uint16) for label_value, start_index in enumerate([10, 30, 50], start=1): diff --git a/src/napari_matplotlib/tests/test_layer_changes.py b/src/napari_matplotlib/tests/test_layer_changes.py index bdd6c600..15958c07 100644 --- a/src/napari_matplotlib/tests/test_layer_changes.py +++ b/src/napari_matplotlib/tests/test_layer_changes.py @@ -1,5 +1,5 @@ from copy import deepcopy -from typing import Any, Dict, Tuple, Type +from typing import Any import numpy as np import numpy.typing as npt @@ -61,8 +61,8 @@ def test_change_features_layer( def assert_features_plot_changes( viewer: Viewer, - widget_cls: Type[NapariMPLWidget], - data: Tuple[npt.NDArray[np.generic], Dict[str, Any]], + widget_cls: type[NapariMPLWidget], + data: tuple[npt.NDArray[np.generic], dict[str, Any]], ) -> None: """ When the selected layer is changed, make sure the plot generated diff --git a/src/napari_matplotlib/util.py b/src/napari_matplotlib/util.py index 2aa15ddd..7d72c9e2 100644 --- a/src/napari_matplotlib/util.py +++ b/src/napari_matplotlib/util.py @@ -1,4 +1,4 @@ -from typing import List, Optional, Tuple, Union +from typing import Optional, Union from warnings import warn import napari.qt @@ -76,7 +76,7 @@ def _helper_text(self) -> Optional[str]: return helper_text -def _has_id(nodes: List[tinycss2.ast.Node], id_name: str) -> bool: +def _has_id(nodes: list[tinycss2.ast.Node], id_name: str) -> bool: """ Is `id_name` in IdentTokens in the list of CSS `nodes`? """ @@ -86,7 +86,7 @@ def _has_id(nodes: List[tinycss2.ast.Node], id_name: str) -> bool: def _get_dimension( - nodes: List[tinycss2.ast.Node], id_name: str + nodes: list[tinycss2.ast.Node], id_name: str ) -> Union[int, None]: """ Get the value of the DimensionToken for the IdentToken `id_name`. @@ -108,7 +108,7 @@ def _get_dimension( def from_napari_css_get_size_of( - qt_element_name: str, fallback: Tuple[int, int] + qt_element_name: str, fallback: tuple[int, int] ) -> QSize: """ Get the size of `qt_element_name` from napari's current stylesheet. From 272ae95317d94fbaac6b28cdd439cefc362b81b1 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sun, 22 Oct 2023 12:37:57 +0100 Subject: [PATCH 072/216] Remove Matplotlib pin --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index b962611d..6489abde 100644 --- a/setup.cfg +++ b/setup.cfg @@ -27,7 +27,7 @@ project_urls = [options] packages = find: install_requires = - matplotlib<3.8 + matplotlib napari numpy tinycss2 From d8700f65c8d8f56de091588cbeb9cd99ceb92754 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sun, 22 Oct 2023 12:59:24 +0100 Subject: [PATCH 073/216] Fix adding subplot --- src/napari_matplotlib/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/base.py b/src/napari_matplotlib/base.py index 21b4a044..d8f0849f 100644 --- a/src/napari_matplotlib/base.py +++ b/src/napari_matplotlib/base.py @@ -97,7 +97,7 @@ def add_single_axes(self) -> None: # Sets axes.* style. # Does not set any text styling set by axes.* keys with mplstyle.context(self.mpl_style_sheet_path): - self.axes = self.figure.subplots() + self.axes = self.figure.add_subplot() def _on_napari_theme_changed(self) -> None: """ From a1c217a3a0a3d4c7af6439c11079a2f04254bd5c Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sun, 22 Oct 2023 13:50:12 +0100 Subject: [PATCH 074/216] Fixup tests --- .../tests/baseline/test_custom_theme.png | Bin 15625 -> 15253 bytes .../baseline/test_feature_histogram2.png | Bin 12860 -> 15329 bytes .../tests/baseline/test_histogram_2D.png | Bin 28728 -> 28371 bytes .../tests/baseline/test_histogram_3D.png | Bin 20558 -> 20123 bytes .../tests/baseline/test_slice_2D.png | Bin 33587 -> 33181 bytes .../tests/baseline/test_slice_3D.png | Bin 14356 -> 14108 bytes .../test_features_scatter_widget_2D.png | Bin 24951 -> 24841 bytes .../scatter/baseline/test_scatter_2D.png | Bin 18548 -> 18236 bytes .../scatter/baseline/test_scatter_3D.png | Bin 17321 -> 16831 bytes src/napari_matplotlib/tests/test_theme.py | 2 +- 10 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/tests/baseline/test_custom_theme.png b/src/napari_matplotlib/tests/baseline/test_custom_theme.png index c385852288bb57b741b8d6373cdc4ae1a43f8f3f..a668c103a7521c6791118def2595d02f312e328e 100644 GIT binary patch literal 15253 zcmeHu2T)XLo9;o!!3efWkZc1c5JWOa&}l$KK}2#=f@HAC8AeBKvVw{V*a#{rNpgl! zp+QNaB$1#rNuuOT-}h^s{b&AvXYbuxb+`6b?bJ-^!0B_o^M&_)Qiq(;RNJ5X3$$ihum*5XscNGJ79hZylUKd=gvC|jaFFCrnJK9AO*UORVd#co%oosq3{RC(>@ZAz zojT#zIq&$fE+6mPEoGwL%uj4qXWw-z>-e$l&k|MaL#9a0U+|G^Ebn-lUC+sQpKI0; zX7aF2*RiuBvd$(QPY5;gYfd`naI@F@s!%J#5RO1f)ZKmm*K4Ko%(WSN7z*A7{u13d z=rcE6*kB$Ij7 zczmqt;-oXnHP*xZ`em<4dztxueZ2p`fsi*b`>HELcJkwsl9KRCvmA^O) zs~C1eL|@s}wl&QV-GoYssLf?zWu<&gA@ejU(frd4vXXdG;f^z#_+)d>zq~xuRpOOv z_u+}^^6$T{=f_)od3AO63=4)e^D+orKdGUS>^9ht*CAbyZj^U$EE-$t3DO{^nX+Y;7W2t@46)Z6`yU#V zT!$%VIHs+rl~!Ez7?nQX)9#a^RUo*LPqw+pZP1{|)jECd{rmSM($M?I8tLWwW~SRM z%V`tZ+S<#*C#oAtRH{Wx3xXa>$foM2zqnH)I}&b^L#dH;7!5NlvsXzI3CPs*gUhO# z%~y{y$$Ot5z@1wvf@lj=UK;yIYkF!HZncWdyl%$jnNBqm+?FSK^HlP}1gE{Hi1Chs zL-GQ#f*%OCV#`=3j5PZ0dZ=a?TK3(SoKqRoPJLWxt>QkKjhFKny^) zcNASrxarW!UUV_SNi?p4stUu@J$rTszglE?m`L${SiGHOzO$hv6Xo)E4jHq0b^F)^ z#4=*oGkEUk1HbVQ4bd`*i*s(<3N^Bm|5UokZ9;O6R{)!G%=te?)PI=~Hy+G2 zuR6ZC<+g-@4ZJ^^h9bUT*xt`@f7;!S$6YSv=QWkiN-edzOdQ9s&s*F!{DfgAA}}}+ zk5n-R3_HtD|5(rNCTeE<%l&?wmW{B7Ia1C`?*1hA)!w)^(cX^@ zw$09g&GcU|{PP1WcgkgrMGQziU5~w3EnN4{PyRmO_TL%?UmWAcg2$>^zMsi||7O%( z!sYAsSutSWs{Z~~nvw0cOqjCM-@Sp>r5E_F;{<{ z;y+Kxzq~nBeMo{q<6n_1O-nY5|BRb5}RW*v4SMu_iE)#*<&ae7FC z_^HEI@e*f%s1sVz`#cO9((yWYXf&{|MC$QSc2!z_me2Z&KenUu$g&Z;PU_WvZ>f( zq^7nu%!VA`nMxgOB=a)zc%R?J#-^5{nPBniw@q0WUSBh!9uyL?eE&$j>9I!a{(}cY zqobqmirZ+~yTOLmdG~o;%_o-%?lw~|(=?N!BXiw;6Hbw)g_kaH`3^nQ*3)Cvd2%X5 zyg`N^Dhw;shBQgfy1Qax)^BgIEBLyfN|2MBnx3ZC@JEG1t?BpI#4y`~9G!b-T!NNA zO%_zF9_q+*V9U8!|9m=(c9G58pP1|PN$Nqs+(+9FPfimE?i1Y#lt^w)Err>0Te;;V z@Oac;3TbQ0mQ#Ii#E89>B$CW*vre*kMd0LX-nGL6jb!o%Sq3cene8QgWupRT?y-)% z2JHKlsG zQHfVbFRkWdJchly1rr;ct`f$oqN}SrTF?_H*%2r0!n3+OAGKi%t5pZ9u)+2+zxfQ@ zK|KCvCN6dyx!d!0DjLNByIh7xxw$ZIIj?b()J$kpS@tc@IV=mLMDRx}-Ng1`n1tYL zG2^4+VmT@2&buw`tcQ#UW@cusZn3ekHi`w0U%h&DiZ+mC%sKzD$o0qdz8kE@JBy%8 z-)b2dE9hA}?#9N#qEeZn_Qm-bwA&9AKBKLa0M87Qx=k2%TD{DS;p>MKEmZnbvpl*Q zZq+Z;7n}~zv$L~v|N8zhrTw;$eyi;F0oj=9Wg6l7tus{!Ype=>wCN21TkfmS{8u%6 zK0Yxhd+rpG@4JmJLCzyo%#zY)H6FOSq;l-ovC^rxLSpvKPfsmVA~-FfLrZon%}+q> zr}A2M6?;fZMN};GhTU5;sW*&`G%co-)G~!^8wsuG6y<>mtiQ}#8x~rdWEm?c*}*Zk zcP7EJ;{cQV=!?6uZWq(cD-=H{0{m!yap9MU!Rz7dVt6U1j$N=rYI6~4nfdx5`OzbR zV$ZSrIp1gf5;H!WwD46chy#ZUTC6q4_kO@$EPm}(T55_qLd_^1e$FmoduHqIBLXm5 zwu!QNvz1=93ev-0u2WuIczuKl9nzw&<|eU8g{|toq(hQ^rWtX*%d0xuy0*7Lej;r$ z=ljyJ_^3w<%$ioR<)wdkk-yRpU`TZD>HE7f%a`nPox9{zBRE*vOx#Yx--{`Q06hw4 z-fLJ6)ZLq$tmds&Tpr!2Z{}mo6}a#vFHluvpwn^keFbH~O@tIXIPry57{fSn^_<@J z%3rxtnJ#@Qvb)Szm9TyrU&KA=Udoo*`j}m=A1Z#_QUB7;{*O!a_wM&Umvj6}^ZIW) zGrO8wyleJc_x}xOwgE258O^`UwoEkiZY^bJGp7@N0uXYx_Jq>{8kT=DYau zy$N33AzF%y0={#jyG=_x>jUzj$6nF1!F=XE+BlSwrCrRp{6@2g%VP!A^A)t!{reYY zETQI!1uV_nm9RV8>Ct9dlmW=w_Ve&oKI8i`M2nT>3YuSh;L=w~C6hDTEvq9V3c7uT z)i9w5GVGS)20#qM8sFdzM< zd`?%lWjOWu^H6A0eDK5UuCVoR0%FsgUoL%N4q~TPM@6m9_b5@KczF@@B#{I);9L}R zb8KM~36FCrmrc0}&}y5x9)ne9ArWzlSQA(Ea879vx8r)z0!`%s%Z0P8#+IY)S+a-V z>9z~moB43K6mp=iKW(`uD%Lzuwi{-OL|ULom*Zd-%m>cFAq;j}JpSfkVj>@t%;#YE zcfG4FGmM>NowrE=ZvoYf2=7Mua-ElFdA!7>6plC!H`%1dTXpMzjs+B0S)m>9Fs|(4 zbyLtkt8VQ1#iA;dC99gpuhQ71jD=ImkwhYSj&)Qy6?C!I#)?Kg(@7b~H2@-Wq4r>~ z$)%SYvY^TuK-YC2dbdZ;edtVb(89Mb2vGMwg5#e!Su@OaV4$DJ^N6xV{m@;lv!Y>e6gpe|p1Vp%zjj!$vYI6gB0(KJxzdlF_m!U_JsSs)EvfbqgEi;dLGkU|R?X z!9c_EN_rXzQY?|pLW-i~Cos7P35)xf|&E}y=eVlLgK@r~%&DrV6FZw9w5 zbZro?C|?*8REQv`_=Yvy|Z z&A`8bs;5t%l2B*A&cto8wz4RjFrC9Hy6OuDBDtSm?^i3cIwk$&>UK zFAi%et88QFgso>jdU&oUh-M2X6y0r-w$?+d z1w~eK=IrZjB1DMJ@aBNl+u+zJ2SebAdH*Hr2ce zzy-B(r&e9AQ}?ZIP!Ei#aLl+;_0pecyTEKp6guE zcA}!9jsDIW0Aug1)dR{L&vEOwK&bm9l)5%EKPQAWh_5#7BM>T?1HWBCdx}7C?8rS3 zI33qh3E-#v8#B5sA`pfV0n_!;$y#JZ$&PN{k#w2yLTVBqZDKXISM!h%kOh)f)T^$u zbR}iFJw0N1)THR{PM~DbP&s(~MsYBwo~4r%&a4lb@+$M=UE%?7D2UVuX-Yx)Y`W;m z>t%RbfToT1qjw6#QOml<#LXc;maB7gvT`RPFmlyxv;H?ga6xiQM3#_#Mw*)m!HP0q z(NLUbmWO{^YZgXYIpjOHHV8tMr$pG=;!^BX_USBN-A^1&WKLyRkKVo*t;n64GJ8~` zcuZ3(JVsh2ovW8XB^llYsB-ZY8Oq)oD>?~qu{Xf~kxqxEO!JEU`}dOop9unryKUD~ zNVF6-DSV-7Oj}!}Mg^@{rWqGxP@YTzYZ3cEPL&;bpQX{}?e%d_%R;5(UOo);u3~`ity{MUZ5gI+Qgj|+*mc}K=H)f2I}fwvt$CTKsR+*jW?+)y0`D)dhDG+^Q^#3+PV`! z>5`v6Kj>!V4D=(N|Kjx2lm(DI+5IJU2+Z0F4{zo}GXk5vd2uTfv~f{K0bv8pE5=hp0DN4jH(V zPO5I@IVuC^5z!9Rv;ZSPjULG;p_KYe_f7=SN~qQhfE(T(3|@gX4+r2SYv%psDx%{| z+;YuBO2bc+dw*r*sZswG-S#Hj7ClnD@u+x5fs6T|odFcBFyLj*^Sv-~ieM^s*3^`{ zs>(QMZxti2|Cx~@J{Y?(JYXyPVLqOql}Wi}sA9cq%M%DB1(mRZpe>;YRS~Im7aJdN z+dS~OSh}_}0t5A(9bN#oyd7Lu~_W|WMFLRphWydH-` zMOi?7hf_yxh~Ie8K2*K`xPHS85=lo>Rxna&Z2<`f!iL!bXl8609}pM5Tvvl-ax>%y zsByxIMLAj^q_niu_G7j+LIKr+2(;?z`6;8SU0pQzfHP=qn(Su!9bK^~U)#ES2W^nH zLY5gyypm*G;EWi*_t(ddS_T znTV^A3-;Hmy>p1_*RyO^7cVQmSL*>6Xw0DiI~^xFU|Cf6j#zq23keB@^{kG2O@6+@ zOd0){lboG>1R?C5dr#G<1R(Sht&2T_hFZ-Vbd<;Y^RIB;_a&vJ2^V`!@W4f+omxl5 z<^Z&qv>~v(4%TdL?30?Ip&_tyK}1mZJ@B@Gquy661>?F2NG=>ugeH_onQyz zJV*+2?fj_LBd$##)N{RlmBrB^kC+6HsT4 z)z{aVqX5+k@7sXjotj?3c?A$>#4f!0t=%EB3@<90sYinaN zvtX)Z`fusT`*G-!^6WvA9HND;E-hjI3CPaMa!_ziJb)j>Z5)=l0fIJUKi0!#{I_YZy z>S%8?D8ka$15QCKlD0NMi`=wxZ{_EgSCXARAb9Ue?WiR(=CKwni2B0N}Es4B(@->)_r!w6%FRQ%0EEpRDpW zabwtdzo*liYfzK*@$nIZb*gD>jDl`H=CzGK`3EJpcOy1etls>^2L15!Rg4O-2lv6PHvYwX&! zi-5)ti~M^&6hkzl2zOh~4!02BtM60s@bK`T@aqYS(Udy?fYJiscL;17;kG;-dDMZ(m;;(g1$q@kucAlL!G2yFA+ZGfu)%Yr|3_tr>bfSayR6UXe)I1j+G9 z1+4ERsAzpp{@4$A31NKIy5j0e=zR=4e}ig2?W4<{E;%fq@lJg%%63i=`u)|LCFBvxDZ8K zh`K9gsS5qP{(eBQR~g(60RSY}cLKCWbt9e?w!MU-VZvoeAiRZx5Bz%T#2dpARycU@ zAo!<8y8Wl?*_8tQQC|!MFfmZ9hiXXe@aCGjd*W1J^v|+(gF4cvFdrW0TzsH4-Ixub zTJzOm{i3HhI7b3V4*?v_k2qTT95aW+{^!p-*#Lz&q6UMy7COSItB4IjdvPvE!h)C1 z=0&jmuCG6M$bdIsMmu62>8Ifwk_Qp|kQqtKK~gOs9IH3cgs7C z9ZMAt9xWcpxEUL(pL|F?+920f`zRcjybgZ+(%jgH6lgu?<3QPh#W74rW$>GB%Wmb2 z!rstZwJ_iJFN@9yxMRV^K9}WgB&2D+ge%&4{>J~J95BFs_x$`wh)+Hv7(Vx{ z^W^1*8$c5&u#-4JpNjzPA4wKlIi-ZxRtA;YWCMYV(}_NjNOT`=K7ha}q6d;0up~%$ zHZ67!0mmIV@L+d5qVs|c+eCte%}QlZ$w3$wEyrHXc=m}3S|FGEyJJX5;IL#9F<}P{ z#`f0j+eo+S4Hs`9f#+UTbCchpULMZm-6Pf~!+8|so@gd;!0{*c-Bd$p*Hsa5k3WQP zebD1s0h0LviLOxHDEt3PeDGXLSO)=t+iBPV(MV2$ zyjLWgy$lL)>oAf5Xi*Jx_2H4(`V&yv9XkufQnMiBKmt%*w+s+V3Mf5qWhjeKFTkwG z2u^8LD5Os+0AWoR9fFL-#U<&eu8zXShTCCuqvTl|cEoGEQ)c1wl^l-cfjAdcvSPrI ziRJkT^5O(cpX|?D*|($Mhhfe|6#@ZDGW3UC<9DD499fO4c6REt8GKts_sE(Zu)mm0 zxrR{rslaO^(72!pCWFc*9ysl!L)Hb85;p2HvH7>Rg+{p8aQCu`?&gR2DrM1Z@B%yJ{QOrS=J{3ghvuY@IAAK*`ZR$y~^afj4 z*`8+UqfIn~{KO+w<16wT9Dp9=bpUvb@g9139Rd>>2;`DT?a<|WU%X}tyC-f#fn4Y$5@99v4o{@2iWN{O>dda+jGF1OT zM2Ofeez6kJ9oO<`j@Hq+c1z;BV~jsc-6_Zz4VP?Ov;LEVb%7ZW&o-k}DeK9EV;a4! zoO{(K%oO;O7{*bQfJ5Z}AH!uMAJDizqEd9H{(r{)XIAhx{p`>2n*Zv{w-mMPLoHgDOI3{nDdu|HM~s$)8l>_0^}iGYOi9x~1khg5)!S-@;dGriU( z9%HbwI z59aou+0$7nQe%)fjKd)@9HMm9E}+@6i&+o|1XS{%*Ki|R)(H=mP56HL{We%p!go(D zjbv6sMbWjPAufsZD`bl8+=a)lO)JsFL6w2}ZruSI9}Bmpc2*2z-Ceb_6Oum7^PZ(1itAUK8Jc;iD$Z) zK2RTk0WT<>aW0u1t|pZ!en+LEK6SgbTF*Xb(KeeiBJ{a5<;*LYW7vyi!dSd~ zzU8^@Byt<+u@=+=p@@sX-gI!}2m%O`33e{D;YddTZqvu6^5Jk7p&Ed4L6~W?B_H*1MXoezeKKDk#q`d$nMWa3g)F{>0qKf+yQSd?^p4g;TkQdN zp_^pt)g|d%zBqvN1>}%4EFzF{PU5K$pLsJ_v)nL@OGs=X!lA81ONhcp$XAr4^g|d3 zBsm;X-Asa3XNfO2uvLN{%7KVFqN+c7YpH;G^peQsAj8s`OtH22ExrAVe(mcam~o}` z`DsIcn|INLv)A4x4gK%$4)w^Is)!3Gm&YwlUsg*mAgb{Q&^`Vd! zfovoh{W}pWb_x&;(Qf<^i8hDX&d>00QD3k&2Zmg#VB*i&`6O%ja&R z;2Z7+PcsZMZ7Rr6MSeQ7;zD9;A?Shh{-fYKLjpG04)RAYphOKPO;0Y-iWS#*h}tz3 zxbz^I4hbzNumnXlL$YMUU~%1!W&@4 zF{v5F2kk!PJ58m#1PDD#OG^`*d$mRM6du1@-qZ02l;1vR!zc0hqKWclV5#zVkOlY^ zKIsZ)UI1czey;tu_4h)dIc1dZcu&|UcfWYUQg5pF%4Bs6l!T*2y`e(UP|gG^mRd5S z0V(gp-9$saM{M2w={2ydXvh>ivaY?O4$_mu3?h67goRHbDZlTIv9mfd;U7V#dIPqq zeSOT>e3nVw$6Fiu?py-PSe-ZWRrFClr^y{#f&FdrWq^ zPCN!ky%mTV_ws?(H!mqIAkBWUqpkc-yhp3yy?j__t8brQzCorN`pPs_T8`oCopea4Ni^gru%rO ztYL|#(~~i%^;&qm4=@LDC-c5#1Cas8lRw?y{(S?R$qfijwi#4H2o5DXcHrIslQGu1 zoyFg-hkbqb@RuVf^DqY4NKGb%nRj)|NO}k%^@#>8YD5r`xVHl*xyG`W&F%eR1kH9I zKCe7bHmf4S6)@AJULDCTK9Me7{#U4~0e-@Z)Bu8kjlT!L zwNSSP*?p)xA!o^9RuncCSabI2*9Yq3)WAJ+4tXxl z#=!791e-AQBZ8yH7-~=md+q)N4g+|HsgfeS<_>U@-XC6pr$?gK2-)|59oNeCsS(-v zNCQPo5Xn1W(wlU8QzLK}5++-^z|zU`Uz{q0nC8eRt#tO=MG+xT$_rN!@f_Fcfw>pPL?6rqt(!+3byEWBz^P0TC!M1MhuF~(1Ve%V{qurk>v23 z2StAxWqU4P&bdzhTnty=1p6j z=U0z5qT<)`D3C6Z&&YFVqo6lLOrh?9LJ5U@Z&oD(w( z7{P{Q0ZbSMn+Y(b3WQ*3B=~z3DAzMZBNu8b=Cc@-b z<#)ecKNPS!VjcxHV6{+Y>DknY$FXM5vz!sW0~|dGLQN}sK|e=rRs85(s2BA2uL@(U zh7ryF6#VsrIkH! zyrK4i?q-l>k!sTgPJ($Ru{A(sz^eMJuI_DwAl>y9kz5G{htxwWhlCl&cpwccK3i@PW7;$PLjD;SmIhOcQWp?BWWy zSLaOvVG5EJiXY}wzMn4w_VE}}N!*^yK(_AAR?wJH?^&BkQEKtBYmVV`F5FWDMQOTtXe?)V%^i(jymWv?27*00I9DF=$jB# zTtPqFhotQHDOzL!d^D1J=v_v~lo`KLL7S)T1$y&zvUv)cxYf|Rhk1(Rf3y=4v=FP_ z$`EzP^+$utBG9wg;1vzrq|M8)IT^(+)CtXtzR*{XP|X0)q8q4#f{YSO`yhy>*$rxt z(KK|-14T>2sWJ3VfO;1LuzoLy_G!~LgBAc7ez~^w<8VjE)T_eTs#p);A%f^2zK7cM zC^3-_wPM%y3)cm~WVTJuf)=S^%7Eq%USH$qZ5+3Dv9j(R`&6LSAUBf6p)V@6jPI#- z6|>Q~87p8sS_)cv4KD5-7)^h{aQ_(q$`LML>HrI1FgN+vIEs40#mO>W*Lf6<=QskQO*K~Q=%<4TE0s>mIYQD(oE^O0$|uJ zOS_H78H&KT2D?)fDf-nxt8GClpj9VBbs&QKg0dYqrp?8bEm8cNBOZcXC^tn#HXVGg zV^2oK+7b%VQQ;d_Z^C^B?%DLdWaJG;b}GU~$Vnm)kW(KCMm}=6dMStaY41aHxIw^MExA11`vIKqhs3pEad^hiKK;@xeSz>M9w`3 zlON`m1lLIzIlo+&_)-?^8~aiv7#U;~p{>=RB;zB!1t7a$sGvziqB0D2FttVBynfgw z3P~7>@Qn**9xl{+zD9_kc1=T9By2zAeI+gc4t-3LW*IJ6U}ZK~q$?v_Vz?56lgP z)6kbA7Yc%w3n1E>O1@1do7?#1lNoJ?>7O*rwo;D};`)&us8gLz_dy~uBo`m}PrZTo zv&s|5RDUfx$P#=AzQv_{#qGms=@##x*W08anFqZltG*Fq%M%s6@TXa)S5E-) zcdNi8j6L3h5eR*Pp7o&Q9{9U2Nd2qkN8`0&>QQ%X{d@;_5T>r8Nys>U{__6$%l2qHY{YM2kq=4yCo zU`TkN-`|c#`h=nULV~r__0%<0kNSp(hoTHMG=l!?0`-tEq{d12xkRwYr=jQIC>TuQ zD)ia)#H_>*1~ZPd`sS<4(FH4$F$Fn3&1UbZr;fL-UQhB>{{E9af2B>NJ-b4ZMbVY( zR1co)tGJ-mZ8+E0Q`2(-oR)rAmzjfBLC#0dr2ogF}!}X%k)(Dngpx!ntA&> z(pALN8ZE`in6`zk;y!R{DU#rzC+#e}z!%uf-Zxhx^uW(r`Hwz zg2Dd!*grz=&G68$TDQSWRqxipc7(?YfB#ZlOs|}&ru-UlW-<5xSb(|rT%KGaheVn$ zJ#B#KFeOF5@++;Fzawf`36Ro5z5MAar|Hv8b1ZMlqvddcWY~1kLliF!XPco~Sx(6z z>+3c*R$wjDoBeg7z%E{g?S6DS7|Xw+tfH(HwsgbVtFWvL_4270Yowg&)5eFFR~vy{ z7Qrr^rS{}!s11+no0K)`O3|y=?kIF_kJ>v~y24;j$38jgbD7|4%ZpqY4dfSAJ4yDQ zY&ZdfIamJaj;6~cC+uQb8l}xh;1y`)9@M9{3-;W9?sSvSAgRo-E}}a>RYTD3%q&|( zph8-7%0$#Vxny z4aHd@w%}udP1Fiol0LnoojrE^2iPUY@y#Q-dpr{iSpkwd2Hy)`l^?Wbt<`;nn}Uy# zj#*Bg(s4hm7O0!(W2@}hS}S9nR*;L44{8xzaj2n!g`xF@X!izn8(byQ`-W+=wbw`I zq~uQf;`#F$dUIu;MrF0^c~l<^uR^n{mItGJbyxdJM&k@4<9FiEVJ!9ypoOj!hU8=G z80=&8lk%RIT=rjl5V(uM?9b;A>6Mym@ohGLx>Gae*LvR|?9KNDTkok_aqCTiExl*C zbFa+2$N2ef1QEQv(FAC%0CovMHheqIWgnNB<^90%p6cH%H5_2RYRrGR+_GL@-l+5Q zRgluBJsv_IrzjOjp`RWNxMxZ*oa-v6&0rn5L1z|fWR;&7%U?%3MeV8G!fj%>1hC*C7#8YxiO} zoIKa3Wiq>9NfMMpe}=*Co%)SGv>n^jofC-Xlj#^4b@)&!4EB64=_ANf&cb#9M>zhQ z#f^8DPezlK+?(mTPh6oJ-lYBB4f=n#of6$6i7mol6^2#6S?Nz7wj_R^wM+KfJ+Lc7 z*LMHIPk;OL=)H$UAKP_&1bf^1dlz2&q)_wP8(CNq!)@2U-@NSC$OAJngS%j3nohqG z*iSq8wQx$VRNq>EqykH-@A)0c{dR{x3IC_HT0Sj|yvN$emR2>F$-2Hp%Nq%!Rm3hwq_9pVzrx{ob zeo+S3SCSNwU0JWnGdBhUG`y!bUdO!8#2~0P^{!V15AnuWts@PpcGUcWBSY?}!F!(> zgm5k{3|CucHjFj+7$7HxND1#odddrNSDSUIq*hDDj383g+Xe>nm2jCnbf+_~4tG(uA<6xr^qlWhuneATG5vy>EAW#+)x`nJLLsz>S89 z0=X$(sJ1hhxjrwv@=`u=`0O5g_{F@tuJUfuOP3uA58jf?ZTCQ{YcZ(GC8FT-` z6swHQl`+Do8@i^XRf`n$9lRJrj5((p*|vrlukxCdI#8#pv;a2M=Bc zXq1+tchC-USV~0MqH}&?Nu*E2nn$_p2l>^wh;_7TwIT7RAG%)N;eV><6G}}`^Jqjl zL}U=Bixu@d!av&HJrG!zWG-<#CVy{3K$`GbJs!pySUllkg2B2(o-SFDww&mgiF5y; z)#fL@fq{W;lQ!|rhs-7-iczUZ0|IL&^B5+1w(Hhg) z#R(f?78VhltF6n*QSW%_A+{lyRzlE)M$G1}YKGC{rfuSF!?`7HitAJ0n{y3Y&IReK zhB{7eVOQ%%;>|N0rOn4QLD82~|2K(e{d+J9Fj?_-FoYO77|7iJ~1kfjt(0Bv5p% zGnzL0tz%deJ*_LxlLDL8+ve5|0|Og!{M`IV?EHO2e0!=4=7zZ8mrkDO2-BTW>f^G- z72?p)(A-!6o|1xteR*BzknymxP*Tqz$Xd<7V66nEzrq{MQHY@!|-20(ABN`GAZ!c^exg{ zj_V~SCt6@tRh2q%BFtKMBDB?EN)}vFUps%eLaSH*_`|cQUA;zY1s5Nl^#P}_%eYVo zdBru0wsd)1w+6YXA{E-2XUaz%9e0o0!{K=Zs;SX&%QRJ!W98M=r<-H9x(+$H-92b$ zT>W2{p35i*efcSO8EJ+k^XD{TxO13H1#EDGU*yQufq=ean+kbmi3thsZ^(Po(Hu(scraE87q4lx(Iyiz`yfTVD@CKlxn2=e zsP*?PoXiou1$idyk>gs3o{s0=iLqYp16lm#O{6I7C0pL#GMwh>u-`X#gku0AO zUCbiyOs>_e)Q?xyJO;IPeW}H++1dfy?%dN}VJ~(|&Q=nq&Sz+AYtO!x^z6CTE{AD9 z5~u3P?Q-fG`x0o0S2zD>UUmBs?7~0^)0NJ1>^0q4R_ILFS;4fmwS~{WImRrE@(?$e zy%Wa%6zqDJn(&L4kbc_bqTGVX0(R5(yA(fP-;ShRVqrk^KEPsCkf3Wbms!8x@+msg zMi;(9beS|0luqdT1-4Q60SNWn!UGNLp6_kyshnh7Zp-9wh@)s;h03^{tlka9UdsrY ztd8$Dz2oT14H3)zkE%ef=#`3!sKV*%vizAyXFLV9`u;9Ank=^u4khv%hYNSXpI-Tj z(7xQlTP!zV7NEiydB~iWL(QKcO~Yf3#B%dw4MREnz%~4Arf9u-!jLNr-07ZSjlCq< z`2S(SG;AVVMWOoay~29#pu^U`AGieXJ0^-4r)dT={$7IzLRqm$sY<#nYoMvoym{$J zB7a?>lh0)l25gPyvYkAvlEvl1)?Z69i{e&0!3W;!k*Oe=s(+#p?Y$KKWE&Ydh8Nk6 z&M-1j3tGgviD{+mHZr#(8%}JnJi;6FS-3cqGhqfLl zEiLVQm~NUM!(#Z1JiThbnLu?9&o-`rj?m_1yOGyY#Nu5h(^eyuf_Kl_d2EvBmAvY@ zcW>wTv3uh#?qN&&B(mE62r~G&wgR?mfMR$*Ox0Cx77Er9ag&kbYDQ~KsD`MuB5FKC zEAQ0Rtx3n)(9w6QZY>H+Q67!j?B%6IYxgtg$dN0dnPX|$0X|q$F;>s=$>M4x!lv`^ zQqY9LWrfZ(bh3g~8@0%#{zHl8cM%3h7DjAXVy8qIF)B|uwa+5{fP_~@?#fyD`{AnrbELmP)ktSUmbvCf!j9fA7N?pW4TeF@!G2`1%lqx~@A8ae!W3=tv+8IbMgrcJ3PsJMNgv}8>sLP&y96Gz z2T$~?niMS`9%|tjnId{{+2~-w`QfV7oW}I+YYk*(g$2DTgho^K=lM=WwduywV$qFN zIH$ucEiW4sipRn#NM8W3r8DEWl43-*jZz!OMsd@9VFw1gQa9S5IQsZ;=bMZ&UXP0h z-FsO~tmED56x4EcJL7$;1od>g>_A{k9B0)gxSe-OcYau_JtX3JasqwgM2HX0)y_Id zP&1LZc}Ru-(Mz?spqw)C?3l$m$*{r3-dn2Wo<-|~$BZX0j-U7XCk#jXCk$uK1!ckO zSuMcG%jMo=HCEIDuyOdygZUz#80L|b0VM6QgeUL$nR)ky@J@NrcKc9l2Y>Rgnrj9G zuEqFFFOhb>mq)&hmBBv^URez0jy#s98~{MwS1S+tx3>DrsXiHCNhKkI^c1w`!N7;thZ_vSR>B*J?N>6A>J%nfd( zDdc|LEL2H01BAbVGas*Bj1`!*+I3aw6=j(On;IM^n(Avw_V%WW!cgo5q8EESka=m+ zRz{q1_r}@TisZzi(G;c+D?+zRLrHjSfI*wh7f}5-Sl!i%AcRXEN(Eo?mp3_Nk;%?# zV@R4QZ~nHlj6|y|$oLO@A9(>ocg&SM^*J{q-@nMs(s=by`h50J#q*Jbe zrbn&ziJjxDPTD&;VSKu$60X~WoLyFqHGN(B;K3Im&0CIAW5J$KjW_n=q1|^5PhOAM zo=(QUH_`_=-t;yIGf;Wc69oQRd9lZIHvl%SIQU(IK_!8f|KOAT(%N5wD}s+CY)>n6 z78szy7E4P&awt0KnhDa>_?ri=Pa%((ZcQ$^fB%@#O0B&|{QB#`p`jC2!=8zP+cJ9U zDTmd%bZBn&!w66l3|E2_dt0lw!*Ho0vt2&X_|Tz43zLmenOre({i9G31eXSo(O4ST z>K3qTW{M~OZ?Rj8buUY<2Gw*b#(=Eg7=wbI-TwgA|K`mdb$3T$;a~A&VJu;7H>d}r z@!(XzK-8lqBWQb>i;IhzpeR^wVs()xWni$Qepg`zOBIALstIQnS{!5*l0s(%oUqYu zCOo~fOt33T6msKdWawW8JOs~KqCGe>zq3Y8tZH0si05{D_BuGZXDb-6N4y3`Mskms z#Lj}s&mj^NLp8d4fsPW?_8zqgo4D3K_q0{K8_k)-l-id(2GSAxc>jlJwK~~|Ay|TP zD%JNQ%r7wTf`x@eL*z>S8F7P0JpkW@1v#YjCI!~^o#k#|$OUF1E_H4dbf&(opmqU| zP3OOpBzLSft`*tnjw+Pk5@L(uH#);Oz$t4_gNN(U<537|QQ>K?Hg8aA^iUIptYuKd zNu9c4-omAXAo$zsKEWWr`R)S?W;{YMdkr=^j-$qdh(7G)QPT7+nVKO-*EuCKu2nrf zVQ2pl<7WkEP@M&tr-*elMy!nK;CO>2VXX)BWF%0EzcaTkZDgrZwlL z=xYg}4rdO#hEPm66PaUUWBWfpb+n`?*57~!m1lQ=mWr)03?S7mHR41@<64VRill}u zIYIEj#^xWU_X00>T{Q((qk9iDeV~wogJq#28LAg7<!F~S_ zm^x`TBa8#2S}UfOuy+^~7pxod{G*WX)`P6tFZo%^dYcSs{z1ydyA+L_N-Ln4Am6@2 zck;B5h;$Qn$89Ms&Cs{co8G_N2Y(iNHN(4kYq%TKCV5cR2X0XhAV6j^`~bGGg-`B~c`DtMNC}M8;Ghk20O;06(nnAxcS%Uh5Qc*7G zT1Z2{C$=%@w^G1U8)l0!9xl@}Q9vCa`pA7v40ghPgj;~ z)WkKY^zr~6585^vN&>j22?y?xHw^d9@a}(PMOt`_b#!s^^d$Q?fZN9&0h2=Y8njD+ zaQBuD>0@#&fpbP}3`7Y?nKusTo@-B&6J@smY3e?)K$@FY&^!}O1Unq+vuiV5)yBYn z&u5=VQm_I;CsGdZCzsNi-C(sO&R@*I_n)!&-?YpZ;2)g>POwq97Ow;~AqF|XTU|;I zqYv_o4y!uf0fvH{YKl?e7o|@|(M_!S>jG%;Od~p6M-DQHv!LghAfdEkH|Hln?@)@z zhv?ElX!-HS9}o3Hr+x?&{OX`xk4Qil%?;YyQQl9t5>^|QavC+Drp*5$j07x-m5q-- zVaA`9=$@1S2e}2BlUR(pdq3WjtVx8#8v(=%8koR@opE|jqa+l70{YaPEoHBLBit-8 z^8pP>H)tXWK-wiWH8pVH9YMq{nV-V(?mOVm%FP|%H~7(}k}F_eYJCr2VJmgCoJR1x zdvYL{K`kZlSRks%dlt!Wz%`CH4|(k3@|k8ha2mIWA&1h6iXJ8iX%cQvK!&2Zp(x5B zK*GL8P)8p9_B*I+0=5NRCMIEg2i(PRpTEI?mipZMu??2pf(O3~5A`O2ob~gFq*gx( z96PZC1n~9E>^~3P7C*NtOFb$@DIqfSAj~@x7&`r8i3L(8@UetkM7p z#oRBWs|wm4TT!N{?-Wx@*oA8DH z6LLn87cwdcy@sV#RkmO?zZN^3Y0N?~rfc9BxC{XKfu#dH$C^wQ33r^FKcHFipg4bY|Ni|6G*rZx192EZDSZMY-aOqP zmyAb=BH?JFNI(E+OU^?**uBs-PTxH+lK2o%AJy0EDiwxbsv-+{+Pb=r&mVfyBCJ69xYb6r$E^gBw`kyMMW<37nfF6Qh?FmK**cB zB@^5sg)F$Z>H+M-u?nCd!2s@oBASi(L#57pU)=};xQdUE&xLaB#sE%OD{BHN^Bd3$ zt9rH=gLJ_<&x8t?!6A|cz>K03f$u^ot1V5gv7ZaIRG?C!DhKR^IlC`TF(sdqLv9kU zGy~VQ@qhp@>P1Vr>{f9jRe;Te>C)p_3Y~+c_9*DFyv+p&dFrC80ZS{ZJe5=d&JLv^ z&0!F9kT|q1*r+98T|vq){K@!JpgB(6OITR10aJV5Q6OVc)uE5?fWX?gn+QCyc8~lb z7I?a2kKPk8wSfm8B16UA-+@|ZPCCP$E5EgJGVlKNtmlIw|7qU&s~DT>$T2x8L5)^4 zi``%tYsH=S@Z=+g7Y5a!P9pXuZZxFX$zo&bSXvb{hC$SJM|=}K?PdjpLVQ);_>tyZs?@@_7w=vim(A!l z71k99`|Ox?79rjoEIBJqD2&b=16`8$nyYQ+yE$uApGOH}U#obJ!@&gH@wIJ7Ld5@U zIuw6(>Bh#*N(p~Wc5#qIH^NEoE>1{xt${%J|Eu7IW7KYMi-wA!lg)i-gy zaFj7;(A2vMUWYJlk_I*?$@mTwN?6paH`$^s`Zf5#iKuW>8Q+x3MI!7@rkZF4oUeBd znNhs|g;nITk%EAD_LpN5E`$+(g znY%|xX6{M%#GU947>KD{++5*BqA3qZl*NF<6w0kN7yQq>3@7KGMrcmnj%z32VY9Cu zRn;uK+HUFmdy5Jh;II|Ct~7=5L2W6QOAa`A_Y(GYuFGN*#Wpl6});urmHy5BXjJJMq1eT ztJD8YPp`c5VVHUugniwrRYlX=-9;@XULMM;FDN@ zPR*K_ox@uTRooLbzlfVOHnbz_lAeA*k$s1D&6egfQIn{s5_^aCL%pKuwe-0=^n~L} z;fp!ertEB4&Cuvx^m0SNMmtWsG{85oV;2!uge@X#JR}+!n@!BjLNn*MGy?;BdhSIw zv}*Gcm&pVCa%mYE)S|$w6M1VDw^L$P_cDJ#zDc_^Hl!#no#$6(*d(xA0Wd$)gk2sV zvvXYQ8Ir8f8I&pC1JOe~<>Q0XKG*)jDs1rWXQS^H?HERhLi$Ab+eAzR!~)T9SvhoP zNogvR$>5uawD^w>_1fjLE-6ybCjn6S5D{dDf-hm zJP2%Spp@~?99!Y-KcD>LW05|T8X?k2R*cp!QBX4}eyuNH01*8=N2fDYDof$odRG0! z09F$CMr~?%zol5GQf_^zOzjsQgx1l2!PW1c1PqrH5xtVceJ--yIxmh>>da^uOKb|M zM4$kwju6(ohBzCX)w-?^04J1Ejg7tH+0t4K7IjoysQt&BWsC-0G_c&z=V%cB#$(Nu z4t8X9squOep*9$9NLFbIuPXEK`vX1(>-lC$7}YwRsh3=U^9vcuVk}B85*}6Q4osDG z#ummt0z<3*N?VZfp(K!B;Q)vmKpwNWfT$ICL-S&DgjLN|qDOIqLo?&Yp2cPbh&njv zpj-GkT`%uVRPmY^ENKX_l<$qrS3F}~wx|^lgU+lTk~aSt2RBby@+>k_u?ibm>-E>= z0P5p_sH>Hg`I%?0pOI`~5O4p54CAdamd*7S<@-FSJ-Z1%@j0Oy#u8zB?u^%&%ri4~ zO@^o4hZnQdh9{q0CYI6M?wS&em~)nU5Yv2hwVgd6NtTcQoskHiBDKHU9F6eLtagm} z1pVsqIFp!ML|=Bot1o#2jt%q|PHYb!nc+Rp!}`3B#WKo1CEKA}&FpE^c9HI((vHv8 z8g4Fqug31Gun3vevp=GoN`dnc2`1bZvifh$tdTZ9E30xbaTRchp;}dO4dg= zRA2z;-RI4JX=2H|M=!XG4mMH4@zc}iNCt`2Vmo>fL}?POr)z*iLvVYci2f#ib(N** z*IQdb_gQfh_JmxbJL5z`szw(2Cnp&?bVp+8AXbD-K+VU*crEZDHwGIMW`(Ts^W50$ z1K2@_$R|CMmVA9ni76wqI3A75JA?5N^e)YQ_fVtrUJ*9ur?r%UKg&2p9pn#WNs4kV zmc*MRUi%oNJ;y57^w-?^DtpxH6OxD&${q#3nGcLHos|Cs`Ae4IaoTv!bLu0B{s^i?tJA0*V@tesmnGzqg&bFEjk z>Mt%w9nGSGp;P#3b#w&rD;eZ3YYKLzxEFSMkrUs*;4@9S0g=3(#Vk`-s`F&!n_CnY z51eVEt@~uqo3_zkXszYF0R#lH`G`{a;ASE|V*OuSyPtuWU5w#yLig z1dmq`BGVN<^pi&+Na^39aOu0G>K@WxD1y>3t`5;~UB=W4P8yh=x?RgDadN z8s3AifO*lJiiBIiH7!woTDF716@oje?|b`!^6mzkMZjR&c&HT81^K4VJ|-e%OSczp zB!{s(Fj{g)2ae(wBQ7OyC*(KYcH1EViFk9lHZpQ5)EDBPyH*gbGF^635{F&^?~4+} z+X(3anXIt~q=g#ClKllLp^T-j&bU>pAxEytUpnB|7}rMu;t;R0dIDoal{FYb@} zTFzC|^lUE*`{kiKIu(R>MtMwh3whnT2=HbJk{WM^6h1<|_N z^#s1^+!3c5D~>656O7w(nQJOL`4w>W=y$g!Oy}+|H!rXuPCX!(eH9bU*bd}$Q|CxD zkz*Nwyd8BRaj8z#xn3VP876XT;`njd>g`Ha;yj8J$)CS=K7uV({t|>;)YJ_5Jgv@9 z4=ZC9aGu>Vm!;~_qAj@+;oov<`8k*hatt=oLUhW57MRsx6{A(!HDe~AWodJJYCUt) zZo*mGwI<$gCP^jTcVdor(8&u~0U$G)?yzbunAMDoY-601bQss&rSXELLds%`K07(J zFtG_avq|(n@5O1}^!8F8DPHeFCb&vt4H6?~TqMOqjJZ?t*=+zaluoAWm#rVi$WJ&s zc{&a2zzO^qhNn!xQjU%kR+BT=wkW^S7u_R5muMprtILLlXga~@6{PeYcXYU4kExe~ zJ`e0Y?O9Ct%n?0w>9u(sT(BllgeQ-UaQek$=q?RUwIjE-jiga8)Kk4g!f3zc*7zeT z?fEM|s2mMQ8do&S?fS9n_5|;3zjI01VgZndF?$h}cRF#{e>rXFenXiT$agHUrC{8~ zx2C7xnh~th51jXsU*hxyRHfK8Ad%T{Ilhh3D-DNF@(sg;5;+*t@pQ)VdJyO z8w1UD0lIqR$cw93ws)FbLrCo9D7Dl?M7Llds8XG@bu)1_IVa)6QBpx9ivERFs(bAp ztkUv_YQv#;)o2rfB(+;yW`D3Q(TgtX&>}p}@-PDsLPOP%fvAr_k6XNz#pte6tULoi zdW2f+aX@}B`a$rzjNm(((F3xiP&WjTuz@+vZKcaor?AU+UV*JT(Z9vn3%4`lua0~- zT1HDkuzn`J>WxdtsnEJ~(H}GNMr}A}tbcMSK%&<%r#vuN7_Z~fBgtB9z-_f4exvd& zD;?bzwcF`DFVfX4M70nHXvU>gi@EtXQ3EAQ4G@gxh~cAvQ`)#B%P6H%RQ7pNIgv)E zp&hd7_GolwA56d~EPUH{4AhX8>Vj>j%n>Air|NT2;{}|^MHs#LTBQIF-%J-g&7i{5 zo0eqHTAO|F@v|_vm}+UcO@u=`Vx~}dx*kw_=5u^^PmM|rWvh%BWs4?^h8*PRLi(Yh zW+b$O;dqUn!ko;tookV!q22M3-Ga;!&kDnmmC(y+pVvBhxa%tsTS5~TWu$8=TGW3) zw~>*n8N{&OXXUIF_p}gpI3X&F-Fn^>*}Ox)_VX^<)SLs7dL4#JD_w^J;}^`@44oV# zC;w9U+-T=PeZuazl9q+31viK0cMT1Ui1JvQ;Xu4v0ah&7%mhLOg7%2)l#MPcR+F70 zpt>@BYsc4=FefCjzL)obsIKqX_>$`CKA^FUO3SJ)P#ex>t)#p8+4z}N%%X-HMRLSV zmb1ZdV91~D=$O;1mP!zP6Ns6$+dvs|5aP~@T*{*z zZoUf`S%`>EGY+`fo3iD&@^U$G+=<2Lze!?tq|{vHcoZA#q=Xs#Ev0z_Lo1?Y>3P&s zw=p(oud@*4)^<|Z(bN!X`?%R56BMxCev>t-cs#Y1=)cjH!Ce^NlHa*{0!Nq&1izNBiVQcX@jOF_>O)Epi`fK z!14#23n~aKI-}FB%h^UEHd8Tuy)ltzpQpJtCu`vQjo)h0Q(N2&oe2=3So z%q&MEt@}H%$Zi>HCiB)09PK=_$oT}TE`sDTo;~v@E-@EaN6k*#xc9^0<_%C7kgoMN z$4sX#aMwLb9=W!wTPTAYh3<-Yht!dskIVR>8lPf$@MQu7~2LD!SE_p zAy1#V#$6OM>we}W%ukaW?%E|5*_qBU)Im2?(Pm9RuSt6QgG|`mHoX|Q;eI#Haf5&o z>TK@)9bH$lY(NcTgvH2Yl}J%5!dupFTUwKekc@myT<)Gqo zsa|u=gyuh+gHgpxeX;)yBJ{>Tp3_LT0WdP7C(oXZ8v?^qSwKqk5gEW%Qa@DN(CdZ( z4Smp=sZ?@iPomwPr)69X6j?_i%3g>#GkDRm z*fRad!YBdR0!X)dpMDOgFH$D4;lW_My%=sO1U z_ilvsoNo6Xt?`l4LR^4mdlNCtLW8$SVy5qrxUjC1aIgy&H18gGY}0L*$Q!tQ#KaJy z?~sJgU_n2^J~A&KASa3d3r5Z=Bh${*z$A9FV-Dj9O&v{IZym7SU`wSzv!*k*_WNy2 z0ahSHLn)>`v`p^>N5!P5Hvn40BOn22v<(P?cV}0|8xzZ^-pxbTlVBEeeS3I3&w{ zKmc+};Lef21P=vxLUUl^7Y^EBuoq<&6({|vevVjeR8R diff --git a/src/napari_matplotlib/tests/baseline/test_feature_histogram2.png b/src/napari_matplotlib/tests/baseline/test_feature_histogram2.png index b7bb19e039d73adfd05f0d3860a5a1c4d0711f72..c53a890c73c2eaefc3367ba93c45239551611439 100644 GIT binary patch literal 15329 zcmeHuXIPWzwssKP*q9j$B2rWYl_nq{ojr~vRHYYb(xfXO9b%b*5fBihw;2(TjzH)k zB2pqkq<7*-6G(^<2qb~zTd%vEIr}?%pZ%Td{P>#J<)wt=eV_Mv*1FeP_kHK_b-kP-2lQX=y`^qJ4R~oey>irX18)m8qHV8;he1 zmRhB2<;s%pZu}mh_|hANvaL!xcJCu;b5?Pr{+?U6+WNSJS-J37jTf;?k(43Veesmd z<|p1t&x!hG4@*l++KeQfyj&GQYIc-NK`h;n2<( zm+o1AHZwDGf9U}f>Sz%fyYq!fk>l@gehy?a<|5Qg%Z4f)JCjzTwxLjMx-Hxt)gEIj z%0?&NsAwSL-k>?7H@WGVDQ>|S9UmJqed=uF$@b$uIy-mnT$!MTDGpf&d$6bV z*&_a=Q2(^FW7W|+V12)Z?~02M3cDDq!4Aj@Ss{$yY1!}M;zHnU`ttMfkT1;*6d%S+ z@|?X8%d8a7W)@rH>fgF@q3*xB9e@g~tHDt`kjL^Ng|6os6p+2sOG``Nr^uX|%k-Zt zFS5t=)1=)A;n`|&mkuajlq~5wXbf9NrUeBvSNi4j=XBeTXDU@XKMB%E@MQPCOBDBk zi#boVJqesxw65v&7#$n)dCj%Ufi~L}JU)b62RoOQytGtmM-))yXv}=vv9~?fiSD7V z!AN=aCWY^6bfU~#GrmjFZ~OGslkyeS)QfQ?C2EUhTdsQQ^O8A}>o4{STUn{Rd9zo# zv3$&<+H)e!IXhGVu0J-_bU(cbL>{?qg^FXGBfr_XGvvqE7Ag#95{tVxMQVp+(HIO7d( zQ`}ruu#}v0_j`WQM%&H1t%sGSqUGX6d}iMhA`gpu!%@zTx|QkTtci9J0!f|HcvW62 z-y4Mk;iR_h5J3;Zcf<`8nc_d4_MLm5nox$>T0CtGztE`)WgmLeOp{c1c83-9eg1xU z*U`TnP{i_vCyu)7+vIfn=tes^!GGJ?mVl6&$vN)b5axk@Oz>^+%JpMhaOE>kP>?*& zuAsP3D6LcX0T6P(`=9XO|IN4S8s_XpZ3{`+4ZgOG>{w+dfZ#4~h}{PH2HDegTY(Ltw-`Ovx) z=c47hJ9zOMt;Lo#Qs|Y9sn|IrsL3Oh2+-tLR?3-L-7^kjblS|aSyX*(ZS5RuIPLR4 z0Kn&G1-a^}t@WSq;I$60o7`wqoLwj?6Wk}9Y!em;IGU8rUd=bJx_u+wVWh%QY37+> zMc5XznF6(f;AK$4RWRUcUVFzb3&UnKSEqY5DT$jDAKfQ}_Ff@~IWK=|t@}Nk|Je1@ za5szn_=8NiV(-8}BHZgl&18@pn~}{?Dl#e2idS8Jdl0hSc_mK~=VFEjIG=$mlWw>P z*|qPOpr-mpGtX?4&E~E67ZxS6#g*OfTRZ7{)uWHyJI=u51mBbVV;ceSLik zOUq92qp)jOfMU+F2K%Z>>CIHJ>=0SS@jI6m)`Eh9gA+uotgO%#o%eeN2Ni0+hQHyZ zmZAH{!!~|bVoWE{k}-^AMz?=cLU(s}Mi_G*upi(D9iNqzWw!+gl;CiO9~QUbw!s&d zY+2{+*sa0YbRVz1duL&wyTD8u3r7qUX8kZROm%D8K9I;*l(lEBo}jo578BCs-P+2a z!x+AL6SK8e$7U`@RNeC&OUlolkevbRfiw5L70YV?yRsNCf*>HHF%V^`>DTuyi{8xvOTJ`#_V z`?9dLB3i$p{!IO1X(v*YiDC50R2lm#@zXg%Tem$Mm)kOYd(nX$7AYIH>t^6gqSB{d zPI*rT&dLAl0J*cq5<+RIZZ0e2BezgTgvRFYRaI5fRegG$&KfLpQ~Wm6{j+&?Tn=js z1LnA(HEWLs-}&D0yX^u8Z$c|`zUNpNpEVo_=fwZ@0CwR=L&F?#6zW*BDJt*TpRsA( z@+&qq7THN0k)~6>L9tG8{d6`r=hR5~Z#~B6tv7?Wy=J!`l0aI!|1Kymx4G@=>I+?u z$m23cGVc*-y}?plW#ub_Uh};UTg=BVci-O{xvie?eYQ54fBUy|egOeO`2HuQ+fX5* zuP|~u_WqO7b3x+%=Cqgw;b&g!lw9p(C+6xr0z{LLluppkT&lKg@bfsA_^!PD_XwfM zU*ACs)#Ezs7*JOGDRT4kRgHHe&e@r#VpV1J)z*wk>t@rA`@EN7EXQIphVbmQM`P91 z)w7*8?3Flnr87~g!2u#C8tS7-333k!>#V@Op$6?5?<0)wC0>Gh$=5qlUk)y*E;}dIsc{cn|GRb%#+FP*Ar2w*SF=}_Y9Wa^q;sF z`025j_k3>hfocTZcx^)N#wg9E?Ay0*x`DLi$^Ko4eF9)#+IxM%Kfl1m00%3wTPoBN`ubZssEn7g4>X&fWRqgjjs!olK@lhXkJc@ zSbooD!-k^WIl0+&jUgLMDAFCD@W>pio|$)U54-U)d}rL!(h`EjBei$!p;arDfNrpi z=`m3+PgG~Q&vvD+M~(?L+S(!AWom1LfbyWX81}CvI$9C#A;ys+dqp$0h^1^Z{4z<1 z5Io8HO@`WF$MpivYoO4$ZhbPCrq5Z`S7L8WMR@d0Ok_4SHNDSJ^0~%xOtwmTex@RX zu~P94V!rK9&_?dk*k~RPS}ak5qpb|2&7M#c)QR`$RuV&^E=HaC86H^_jw2v`I!0xw zgHl7vn(0iQdoM?H|8X8R^Nc)%`R1I4e*C!Km`5F@dMsQG)2%e;(4C=V{_57{rAAu! z&0q?)U}#Z^T;Af1j1JGEq_nWgX9quUqfo&Gc3jg-4b-q!kJ-QUiU)1>L0`8gABMPp zKhXUPS$~17_xbf(vj&Cv&qvL(bF~xJ7R8>Y5u7jJvmMCzoSx(Ut&u%KJSb6duI+T0 zzhv{R71w^M^M!V+3Wr;+T=%cY{?okvU+F;UKYYcx`=O6wjqc;h1MXJ%dGz+ktTc(6 zL=D%${f7{TsV^*4c zllSywuaj7m7diG0p?}?%l*lV`;qeZwk$0tc(9Kyb zoXXays~qJ}spd)kP8OjIW93OAe8E_vQc-_7&W8o=Rra?D@ylg9=*Fy0j$AhS{Bqk$ z*viL8GwU7~{^_!HAtm&~RuXOo{Qk3fy{}82es}E4B|kKs zVjn|@#cWPBve(M=<5eL;m7s5wgIWG&7-I$i^u4jERU%+|avg`w>g(<8eVGiiO!Rdm zQ32RPXz8Tm-wXdesGmY3Y2`dt?ZKGW$E3k}PotA0Et3rOluj=Wl@aUjEgmz_fDXg^ z(za`+{_81zgT3SN79LcmdkFToj9Rlshn(hna|1vB7O`{8vxzZVZ1(Eb`4ABTK`c9? zHHvpGoZk~6SZw$3eXki5%xbHuoXyLNb~H!dI26d7&##0=MuY&Z)>G%KKvA!tzVvX9 z2KSMQ@h}!8NBsyyOOu^pIe=?#@3`voOsD`3ZgbT#ygn26hGt-f=*UgBPWwYQT%D2BjM891dvdLa7!-rk7oU8T- zWR6JMPp%7cU%PP#FcRjGDcP=t8EDXbU|$j9qi(UZp#u8e6GS|7psc$wkOpZOZWl_0 z_WAg|{u^Zh(T{i~-g^n*WHT)f2;A_1G>|&LinOMG4|m)_@;Lff-fhsKEA2N-F=>Mu zJFQ0D`jE1YYu7e8e7V9S*mPly8KuEHPoZ?ae*HRy=O)lmt^{)Riu62`G3ze77ua zzHij9B!=zXfL>|l2|JI>OnMqytL~GHfnVAlsboT-0cI*}HRtP{deLGtTT~22Sw+QX zCed{Ems2qvfpeLPc`!lV_l9XNG<0izeqJ};$R@*YfMkP_xf4ygP@K)#oI}UM6e@|( zdgXKeJL7)d%R8GDyhQk#G#f2KdN4HVsZgpy=#|;`7(f`N+=78NRW6UGbn7#u&x=7L?GlU3xZt1QAXr%wlfRT36uhvQxZ9Rff|b|R z)t#qOF*0!?aF4S=e%s?mDxH!HppQO}r7Y`xmR^t0?2XUM%Y&>mnj<`S4|2XFLD%Z`%tP`cx9^^sBc?1YSXrK+d7|kL^Q!pyd$cI z>}Zq;=eX5X-gnr_YGQt2!ShE+*j#nbYbX~F55B(cLMZ}t^yKC^RPW&E=u2hf-S-Uv zzWz!n|AP)hj(p`O=>ZZcJ1Eq)W9v@}QXU4JE@#$b?$t>ALA_ z`}hR0m|~6BkN_)hM;RPyjhi>#+FH9XkhXKo73&Jbu4wfSsJx%@)btj9CJ<_WUZE`G zt*{nooV9*$2J^KhyrXw?C1OqZ@>4T5mu9@gza3BHVJN0*D`Du0uU%~iOJ@0<;9h7{ z8uewFchiqz&RYcU6YlEjLgH9cChh@K^IW39UZQ^?z?O;CwY~QRl$GQ6^IsWsCd5xS z@47k}ODG|~Dt91su*etEEFScX*~31&pd(+D;WZLn{9$ z@{&nE3YXOy9ku978nh!CizmKMQ?h@v2UwAB*{X*6s&a4~)iRfv*Kz@HLH$w!L(;}uvriigLg zr7idnY>LhisY>J?`8Z|lD<53@Ql7oMywWAeq{a$0(TE2R9{BpNzwqK&--bp~FUIW# zT&~F_mg_}PgV@&A7Leu~+8v>@42o6L>MQ5Ypwe(iSK8;g~@cWiPppRjWx#b`=;EjSQTNv*?=m0E4J$bvvrUgGCo1XvVWknVvO1 zhXF5ay&yErLO{fb&WHU@N}8=$0K}nlOWlQW;+a#dvu3sbJxZ(8xzs_=LP(o0@2r2n z@>7F#fc2rv@wIZ0Pv=iU3{^UH4?70mI0UDm?WOMpJ(j|WpOI6{x&e$FWCR3>p`l@Y zeM5VLDBM;^KJW790gHPzeN}KfYfl}n7kIp<0IMGonp z0kCJ~)De3W#Oj1&aBjSj_yFK%UfoF7o(JCYl;zC5qGD5iq$$#&E6%Z;drrhOa}xnn zu*dQzhd=k9TPDRRao)CN(SGBiZA%U_xZAfF6H5&a{ z;4&N&q;mHHK+MkO!L#iTj}<8}@wetGI*SVpJ!mZgJK!~JkAf#W6s7`v^j&d$zKb<^<@HchHNbKSbR1_0KJ5gs*ulu@H|iFUEjZ-w-? zLtpi-rd?jROA>(rT~kwkpcxEGmUi=Vb6*BpvTul#Jvi7y`eqB*i!P+AL%QevUICYu znpjH{o@1kpni*+dDF1?g~x)>*0MW+#omBHv}7$7_VQ%6#{^8b91}6xn+Lg|E~K#qc$2&sQ`uY zT}xBlI(^BEDpPrnnWdtjm|N*HCcZOq`AdO*sA~tY$h55cQ)?9MRcxq);)JiENtw0U zZ|y+7w6&L?H46op@N_-qJ=JVgU|fV078@JRPls#7Fl(lmL|1HD!%}_GiFP3`LyAbZ zQ4ufdOfq#3xx4(g8)ZX%Hx_&ac+Mdn%HP?~iirYWNcqk#~|5V*|zsv1!OE-rr zODt<5ET?x$H6YN< zSeZE(gveK$a6Y~L{m+2tsH(0a-xcV9SYk4nz2p6=dD{@`4C&qjfznS9ffmtH5VN@~ zLVy-_a+AG|C-z(w%7hMi8iX@oF@TP(+oF$E0!xwsjJ~}xi~`rQfM3C4PeWpjRO7?} z{9Rm+h2dk_>>vOs!$WB8#o^NX_XdnjXF%iV`bex9_ty5Tn@JKOK&U1t`OL!ndbp0( zt>Qz$4&_;w&6T$t=$uKm$%>My|9qIY6Vf1|9jZ@>iChUzZLFal0biq{M57|C(K+-D z5pM3aeT@NEp?jnhJdr`EGC${()pj8~po{=~Hs!cq-EJJDjhtH_{7G+Ovsc$SzZ*0_ z&5-Qsa`Bj;9fD5he)1UQa9YuTD-!xy0{&N}BTpu3IliF=0i=@~=nF?=9zwvK7kvL4 z;LCriquC1eSDEsfM@-0t50l8!_F=M(-RSGvP*Z=8qA3rrsDyt%^-F;ZCXjTzlS3Jj z63jlf{oDJY|Bh2QFaN}8-|4pR42Re&O-iGju>lL&En|C)rn6@MX$N-dK2(N(BwqcW zD-jx+eC3a9Uo_t1KJWO4UOMvdL4yOR;6I_bY_%5uSdUQFssF-u^?g7Ax}|DM)rlZn z#(15NVSy2%j9GcIfcxmExV`agenVfeB^M=A6Ni zf#5VU&K?gYziJp?TIrM~BJPL2Z1#nyBa&M25|-5x`5E3?gJm|^_Z9~e%@rU%wf1K| z9DqV{>44Jo;hF}9*!;u>IdMAGIg5}! zxteE31l3%ENA-&)cOgXi75m;@ak}XWr$=P07H4LO+1Xv`iuv$|TmcDlBV`r3v?6gr z%)Ev45GZX9h-T)U4zJ>HYG}W}q@0F^;0{>S>*>J{MYfbDnTBP4daXePa7jm~BMqu5 z6@3VeTuNDt*TIa)0mMS2Ub5nRn&MGlyILNR7?qt>(`TYq7EJNV;5z6G-_IYe=Fiz$ zpL>}TGiuNI!*HMZ>mDwYt&QAf>{^t~`n5d#!X^7j+KcRmi6Yd1c9j)isl;N{=)<;S zf7Had#Q`F&JpbKU^PfTC`z$pTp{>tXeWso$&b~;{d&eSi*uH*#v+u;q-hX%X_)|cy zvZpg}sZ$@mpuGPP)* z>&O_|5VE<^uHoq$2)l0$q8QhyWzbcnf$ky4Rks{aDgM&{1nw#M+-)7%?D=e`nRkg# zq~Iuz=AM<=v6zeK`p~vsNrq#Ke)DXPFqlNFk%kInDnwfyDYv_nqm3k-t(H!+EBJ{J z6*mJIIYdyReSE|-TUb>34!QI!hfU(7=ftYl_nd|g1lwtCk2|P$@q}2$oi`te&KY;F zAaXdOj0rJ1t|CsRng;`L+h8{>kcR*T(k+)HKhmwhhw&+TA35472Zv6s%=f z8;)mlh{Lq`%9Dbzp&MvjS+B`P#M=eUy0-VQU4(qSD)NB3k5Mbgfl;BaIc5cY`uQtI z^#89civL@Be!8B0Bdn&T##qF&7ZKAScrBEcYNrsdltMi+*lo|#L79W%TiV22*le}g zyv$yrvZa9gLo6)pH5(4LCl?7~7l?MmCqZHk)~vv2aL&{^&~dQDGMS3uuoyWS%$%Dc z%dNp=)@nj*qS0wq;apZjQ_tygp7Ve6i1ADh!UE%Ubi9@U_qyE)u;5czihI$LBzZ>jyR=}qT3{FD9+<@Rb&ybg|zyEda zK-?!3XyhLesajrMUh&gwWf)cNHJrv|B?~*iO}_Y`|gxil4UBJ zPYq)0@SC3N5%x=Dm9)E6_|2H(K2)Y&qRfS)rWmDH?W=*+ROBP=-tRACRs#eXu^J)m zf+bov4z;GxuRlbD5Pj9<9|gg_c!C0b|2pFDnH#k9>YC5bRxc)5Y1E3j5!Iw8CR&Jb z$N%CZ6f1V33;c&Z!s^Z)a~>WPa}34QX9exWx7L*ZmM<1Lt*j}$9?ZuSfqEJIgFTHaB87}3#s|EJo^~IzOX#_I8e^gUSYKKuhcgp zkycD~e@47>h~II#U4wo1kvQxyz3tgWZf_VSa468d5xzP2<*x8efe|9=Me{x z8a*|h3-}&v9dn_G#*10zWi;Sf4Im34b%`;A*&0%#FM=wE7R!7FE(9^8KcdxOST%tk zAM9F5s%bn;R9nA^9+2aU_S*-;uM}c}L)eKBHZA+B#S&5dz|f{|I`oCrRqn-4xfoP{ zY!0aO)a@n&2Zbb=RYeR<5t2;zh}6xLqOvCC?2Wf#-qTO7&Vn#@<~MKAC}cyuaPnTk zFt&}2rQ;dtc!HP)gHTmdGbhbik*3uVLrY&Qr0&ZCd*02U`L8=aYL4=Nddh%?98%wCpCM7v8& zea;>G`eT%~G_DG+4Hl7u#!?9%%-TNS)+a6DbUr~v%la&v`nF9rTo1f?x0)aBxa{x0 zZfj{{V{;d@$Rk$;1E+r)cs~s`1}pc`s)93-&o>DAVFn^+n?MU&GA3a*+c6UHhZH9R zrfkRHu?*j*%H^AZGsTmoTPG)s5Gk-;fKSEY!NI{Kq%41RNDSM@QeIJCwF{<$hs>{> z0<%9cdut?n287O(5A~_4u%t;q-~(^4+LSl4p_GxSx1_cHAjd;D=5w}Y)Ksbt5TG0FI zs)+et;g})C+7EUb&K91NtcaV}ZOO8PU%{?Db)TreH@@h&!bdqenh7=L92&WGjCQEb zetUtd_$`VT4a8z))0=mH=3#C1!>J%M12Ts(z|N5kRuD%pWTb))i%boVB~sB&684`< zyh7cSm6cb(hNQ}2Q#o01LL$jle&%5Ci;I$O3OL#6B(ws~P(_?Y^2?W81&`5ZF#qwmkw)m#3HnPFB*;wQEohOUHtY36PwcTeS8@a{HTXd2Ax?Q{ zHKz=O3|q|Fdl0+IahMwr|J+ag?bC{*GOGX&>c~h6GNRB7{1En)$AsAwT+ybq$@L~h z5G|Ad1H`KQL?d1`@`M5$5)ot#SxLx#FQ&fyScFjJ(&vqMQNh@fk@9e44x;TW46~og z>B%w8;GnuSOf!_a?|bjwekH3~LrcrCkF7ORWmA)7P%NiWd<#E&V!U>4$te zxUD1XmIU<@keKF;0e6vBx3XJV9ONP!W^b}Lpv!c(3iUnY^XxZ8>7nhn+dn?ri?kaJ z8Tx}06KWfqOU%=J#x`_G*h1;`79sX|#GXK#!?5QV;73y`m6v5a@jJe@zCIU94YrwF zEA`)R9^1xtF3xs_jk?s`Xi_v#Y=J$OeA62p#u_6z^*q0P@Va~g!AzZqKnOA?bR+oL zJTFHDA0{IHBZ0rZ>wEe;WI2}HvKaOz?4XMotGgNmb8-a50iH3#GU*2Fk(`X+#Z;Sg;^{JcUNa3&hM0k(6DI zq~}T?lFtZ@3G8-<&n^Mq>+u48Rm1B~{PwNU>9gWC3@t?QJ>j#So}Nyl*WlIo72L0R zc~RdU>QZ;CvcCfQMbG!pRfktmbrukBsuat(XyEwWx8K3U(o#ML)}*G!S@|*o z082a0S~MFuJ|w>oq8z!aCw_|#-*2#guI2bWz&n%Tg-Hh@a+8p~iDpAJ3;6Psyju*x zsSI%BVp2bhrXGjY`}N@67GI%vxo;dCU1GQn`*w|ze5XmY_wJi~wVeVB^ zx4~S;KsJv2R0L^Kn*cNBYNukv*IPe)Yab|Wfps+oGjb`8KH6Lj&NjsH2ZpxCa!l4^ z*ri7Yl+PgjK@DKdi4)ae<3_mG0~(um`g-}CfcpuAuie1+AQXqIy=UGb)IvdV^RH7EA@nzVX9tZO5X)8<1m}RHf;RNI%+n40gJOfAYG> zS*fOtPoEZTILx?q{AMTq*_Q0>atK4K$Nb+dB}1@Qdy%Xqtm><7dwNO%UHkkKEt?Z^ zm;9>z2-c#c7P#WhFun^PZnu9xkmMx#?rP6f-fY(RTx3ycec^^QX9f@T(<@|(-x0s> z7?}#N83hb>@dg!8n-?7k*yjPlEiz^X+;etd#5C)vcB zpdJ`;@)u$PHDvY*_WBm+A+6wFg70#e9OBTuI3_0ZI^P3ap#4|@otBdZpTuotk9G$4 zbbceu%7-GBpB+|z5q3GM&S&lj08=ZFc6u%f4Mh^77jmW3?j=o(sq|UIdP!Aaj3BQSh)>hAt`>sp%E%Q^t|c&$NZ; zK|c!fdfitZsQ>i+|H2IG0`vvyf(Ztf1!390$c>KY>&pi>sC?}?6y12+?$=?(XCmE6 zlZl`m(W?hVfM=fy_6`9p7%DS}E3UW8K{f+32I9yWT09#M`dV&oZk?Sx7daMq>#boB z7$Tovvvku2Qd4yH=;fzblauhBtF~Qn@b9@qBR6dS;#&B?wsH;VtLgTaZ-}5l)qW(- zSNC+#y1+=*r)?G9zB;rxQtiR|F=^LpPov08>PHmW6cp6lvNFsyOR$qf&-WRCelyXR z9)!U}ieO#kVe?%)*)60Jkj-J-oTrvK+uF7>pXOOedU%vPa#m)tSd|{ZL*@3=3}%(1 zn{!&4YwF;n`ZS}Px1|}b7f#N{;Uu}&9<0*Wa?eD9xPA&m0`L$BU>gHWa!iVHOR%SP zbsN|!W8J7*dyZ%_GPt;g^|2RfURV_5<<}@8TCuTPfsr_D%=~z@+5oaBNpx;}Qxn^r zy6~>5Dz`4MotF->_v-pueqEi?fa_`Q%TFgKn-IA^AkS`29eSERFoGS`NlUw;c(@4U zG<5H1Z~RFWc38DsM!)Mo6}DOw4Qe1_PXc*3Np$Z5m*`=x?Y0`&Q`--Lrh9kxmUHxFOJCp1 z6+1diQ~>XU{gKO0OP7`|47jE$lx*>=Rg+)lvh}_r^et-V{zI1m;?mO7 zLH`5q#7^EqMR|Eg+h31ncp4WNg>Q$a6mS+P99Z~xI<(!=N1GP+x-zHfB-GJ{;u^el zY-$@SAxcgdwQrP93Z8mbz6x%-$3ynnM+*Q@oNbC=Jwa$Qanl^kb^-L)bG@mdSzKQBzOM0!))|CIv#w2tE+UU zU{ljHS1bs6z3|Pqh0a+tMOC|JY^cV5k8y51L@$I9MAk@CXuG2?6l^GRaS%{;tl>-~ zN9on>W0Q#`nPcqhRL!UCAhkp-+0ap;(uY{NmxrWF%|UJ_YQ8%40^~m(0>A7w9eLP{ zOEAbmWmcO|Q+uSiS!8rhdeS+^@lM0wpuqa4&x?x~f^V_Q{1RXN&KCv+4i>?|^}#_q zha$+eT(jG$0#l!TM$JDO4NBwpIAhynumMpOh49tWR!L2aUmC zm^O{P_S!y`sBPD``Tqd3x0e0>fA#BWYz<;>z3cO%Hw6LfQ0U8gKbHPr`|y7NtftD9 literal 12860 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 uUiH6NYdSA-M literal 28728 zcmeFZ2UJtr+Aa)sR76EYL5k8rz(SFZB4FqpX~9CT(jim}AR>rV0SO=_K!7N{M?^$= zCsIPBLqd@fN@)KK?7h!E-`(e&@1A@9`~P>0>llszN!FZeuDRa#d7k%qSBQq1BK2{G z;}jGW)R233wJ0bKvQkhSxPR;j_)CKOvnSw1%vJurtG1(stH(oUa|+dmu21Y7UG1zN zvAUZ(yI4Cq+!PQMxPFz@%GLFWi@2bm{U09?aCEj596Ww37#xJ^$vp!X3JRKsB2;Q7ilMbZo_kms(UvokOA@bw9bE z(LApiZIfJTlWaqu%@}&1OIq*D$IzE2j$cU$;D4qO!4#so$}V^B-i;Qs__a3?wT&(8 z@z=_uUMx(pd@r|blN!0vxZNrh+BoN4c^J%x;>gQm9!JSPyq7t~N`5^lM?nc*9$YwZ zjQnfe-QLns+|FtOG)czPq{6k6@dR!qT0KEXa~E6Di`a?LH_4bv_OC^@OgLNDKGQEA zO`{Wc%egm$t+3vz9_w9e;`4>>_UfC?OvFuD;fAYUg@yH|+!Q$zJCB*gkjB6*ZA zNGK({sHnbU)lNmO9uhY;H&EQ|OUvmQ!@hYe8M-;oaGK4XCS88c#uZ%2Bz{cNN zCy3dW2-K`UQm@|LT%D=qiHeDh&1{T9aEl7+E1wtatCb608FFbC%~Bb6<#ipT<(dhXn2%sL@!vj%m6{i*URt`; znk0(T_86}6s`&ZrR%?Qk;-^oaBGbc}#PRC>q_mnJWt#d>H{A~V17MhAXz{6ltu?e! zvHP5%s@D^nJYrLGv#y~b!>{!LVcT;TFJ^b9DS9_uJs+wNUZpAFKHIT4*1!Sb;NTc2 znmIwuB0WSa%|1gq!)8|e%?eERb}1D&Y>IUjk?Nkjd?3_w6`D7aBUo<}(LcFp6xqhAoBHRFa45){pDe>!Zq)1a>YiLP4{DHVoq` zrY2DYuEO@5BWmVn?Q;?ix80`Q?$93BYO(C)>t^8RSA&4FbC8gUR^6-igTEj0^tFI< z=g;E>Pe6Os7s?f>sHi9zJ+~H3y?uSRiEJwfnQhI5>dpLb!+w>pwRwJsvv|_0aFNZb zVY_@@7qKKbEb^TFs%a_7^V;45TQM9s5}`lUu5WDo-l5W7r6X)-yg{bZd!Yu|nkedZ z;AQc`GvCcJ{E4sgln7#WdeWw+2_B@#CmMs+mb zB3dkzb^QF`>L!&~ftlHYY7wK}b>k(2+GaD`^pjffhHr+OiscdQ6G=7^%eAcrf-!d)@n78$q&P`Tn*pGJSo$P_FdGjT=R7 zg!3`c(VnUdxMCN?R2jS5+<@-ew{Hh3E#DlWVV=#_*VD@c+rhTu=k4322HHjaxwKqr z)A6|7+p&6iTYa~eSK~1B_*IGdlOCcS_x^s0m-*8w+udB@(s{cZ#4$gFqEIxBqN~_e ze|v|<{}+$H+l~*o4e_2lZBsl-zW?*Y!E~DnGR9 zUUMw}@@)Tzb9s@^#!-BKVVq@gPG6o8;Z==q@uT|VSeJIGS7NkR^?X*|UJBPTH>W;c z(VB4ON=}f8fnjlE@wYa-)x|4pY~>~V7ciw0qXQ*&#<AR8y~s7(51L z`h4IJ*ixtcri7x><$_OTjsPDs?~K9^zq~lI7Ytap zo*ic`v}|7_RcIsBNZ18<{u+V*d?=?{LV8FPXRpE9XsBQxpUYHW(SGQ28_vHyxOQC6 z#;P&sB-7b>fs`{&zD5H1_RZgj_T^TL`VXe=&FAV2Z&Q~aJY-}7l z4G#V}xur$L#J%5qWd2ConWzr(EG`65kmKv;YkQxd2)Y~qextZ{l5%fa5APp70e)?T z_P=H0734nVA$s7I(mf4VgxbiwLX_;@#0vG?$6uZrx~An2%r;~~_1&zPcl-Go)#WSX zBc;Ui335jaj%Xk*wl@tG+m=<1)x{*`vAt2#_qt6`jSQz~GwC*}=On{0W^26D)ZRJTtMMCA+`O_=hKKmE3 z?}LP!7U}2$vMPlYtR*+^<=dS};(?Wnst5KiNGlX9{m@TQT9rFwc<~3E*c;_vUCY0o z^KW0}nn(X+vk` z^ADMY71;Doo4+`nG(|Zs3;lFXcTyXE+E&lGO8BG{xHz&OkH0_c94)aDOzE$I5izO5 zGO_dr_QQOzV_<~Svaax>5l7>;^p76*IrvgoTnm|LqIe8k8Y_j0l9?QM2^{QG{1fQW z2*n_i^d5IAsJZFXd0V{EuI}xSQ1Z47;H;l>x1DT>PY`v47Zetn7xud@w~7+tE#aN@ z^rlxKO^uCIj$8!tF?vd_=z}1^6~-b1wJ0=LsM*Y~Ssy(S z6BENDE-pS~lH2XYBnv(qF!=~u;YR+nYo|QD_1L$tS8v|Lv2X9Jp)nDcrF)HHg>EZg;*4gS(am^WV zrtq}RGzDvoK3S~yf?)AXsNfbHb$u_~B_P3Z93#_rH&e67rp!Uxgj>Vn(FpX-@o7Mw-ZUL>|u42rrcQYFSP+6HDT$ePV(bF zW4CjE#%}O}V%t9M8#lDl6yK~y8(ck4MsDu2KT^jU-iR9R4?#~)&js;YaN^_TH7gwq zo7Z~Y!ypR~+RB#`g5cM0s;Z%B0pWXjl;cSr!<~zd z8&;aV7l__N0Koy&<~8(Kxu_AIyr7H0Jx;|JY~6HYOe3d{l=8~W`AQB*yX5j~%UiKJ z#oXN}|82q(H$E%Mss9S?{0O&_)F4_#{j)ADb|T*4`k1irRa5myV@te^qqc`KGaKI3bxV#wt|qyym7nQG#LTJL`IH!4BXWQ zfa;Q@r^Z4}rHXc@#jM5`v5N^sSu(k>(fjGy@O5ul`~iH+6)dUFJdrzmIiq0$^K$zlhzAL84kFDV2N&Rxx7qN^( z4yt|&MaxS|ItB*W^rk+y$+)k5@p>sX=lbJsczX0!27o=q9_`H3%#uG`s&aExHrEy~ zDYeff%`aZOI8fmhs-&b;#Tm9RP~Pog99iK$$FL-_U7oW*SMg}tidge8Nq-}}F0e}v z7a~QzwGzZj=CjPx;<7&*oCfhS`T<0vp^vG(Jn3;mc(zHUJ5(-DNm*Ig4X*>~Y8Ax| z{VWMS#gv&U7wi=yrlcHG=9=4hT2BV(AbK#r7uRiUhtO4c1W!arMvlXD1BW z%l3kdY;zw7?-3xMxPg`Ua9$9a`}E+^956X?_t|&S8{@Q0;;#4D6kd0{yZ#iRE=1>d z@ScxPmEU?D!KY~#gg@m-%%{b%h3;+I`R;TGt*}jx)x_k4P2*^N#ZnVrFUnL#y&75# z3i|=}BII~nv1M`}nao>eK`q7H*NRDU~)2*moNC07+MDEj1G-;!N>?uAT7kFnmGUNz}uMBFtUm zggH6cryNKp4j&|6?CbwDzy3AMY7tx5gF7z3SeAh44-~brIFj-mnd3WL~%Z8NK}m>xJn(qYgh!hb*7sI(LFEEu&wkNIR;jG z7ytfI%Vgh7)19R_(rjV-O0dkK@ zdyZ0}3i$HN?vSCJ8eB3vLpd%e+tQ6K089^zZXRcnc|xGy?#~B%_%L;6&3_kzv|FBRg#ldA3*so&XSwwu-T?c9iVT;mEWpjcVpIF<@IV`F&z^PV`@mv&@f@hp>&F1 z-W;3clBlq^04WB_;iWdcMFbs<(c>Qa2b5k4^N9^J%sU8C?Jcp8cjKa-!>>dty;?GK z{T$io?W@X0nM6%`#7mDlqXg#0HS8S)_^A)1dKeHfXNLLL16#(V32oQH1@ za<=QzJaYD>7EA&Xzx&=fIA!lUm)y>e9(*a^j+i&v@(U9)H1E48$>-7sZN z4C1cu+6gYs&O$De$|RdjcW^6Y`|s`~2zk9ad-g2D5GR;(z^`RS*>Dz#%&so2unX7k zfVC3$B^617&H85Brh++1+9XX8H=b=Pl1KzQX&L5gXJ?x%GS!}l2t0x72uo8S^F;zC zuiG&hro}hUo?M)A%;T93m8(XMU57!C?fj|A=(E=j=+2L2=;ioG0*sbbw z9EG#n?oLI8zdxz~pb1s<`bImkFOmbmPk_DZf=x{ckfo)iBD2OvSm)+EnCE~Hq$^A` zybBzCdP2-4I!5>&&_^QEF{ZnTfR&x!nn2+@QlGQ)6k4iF2@!9T^U>5$Z4nt)0VQtj zQUpMQ#kM##aMwsT0I;T`rFHgKF`>^lb7{#L>(k5+zY*1#p6F0xP+nd>@ab_dVynB@ zws$wdR&qoxlC(O9?CEJUtcJPmO9mZ60P}%?$zh}}_|y!5!9|NQyPY7KkLXUV%yctI z+hqmOFy@@W&|qBJw+#TbhPtgT400iRa{x6%Ey3fZq#81E5DbS8AI5j41*@CFR$Eqj zPGs&cQ84cE{a%aqgbefM;kWGackfOIV@wdi%zi&yhAaw!;~vbeG*LO@L|#NG^14@GLC{1kiL{V%wH=VZRUQQ6UEaruPKmlr0L& zhxZjaaT{vZ$Brz>rv?U1?d_O^-sG%;4_Xrw6Yw$Gc{C2W1IS2BLPE~Q@|5-5fG|Ad zry4@rqOc#ajlY5Do*`Pgy3V<^TDVjXlDU0{YmfLL!j}`>J*AGO*NbJc)p zYhJ>w=GPsx8&F~a4cF1p8RseNw;L!h4+ZfG6OoO-tRG?-q^e7kTrfB%JvT77@hUWQ zS#l)HG4ZM0P?15hU%3HN&}vK<9ua>zTRRU$))NgA-pD|+by-kLyhwo87h0H=nx~ly zmJiX%<^&7VVG2fdtsx=DPn@7jKE1$0h;@29?7bj0F+QH9947!@N~&~+L;?wq9RmIV z@`eFf&SwByY+H(eUb8>qtc&C8S;X@RRbeuq6ASYLymL}o1X~bB0%9$uJ040i!X)f4?=~OJZe-%KusO}k^>}1xZ0b3NP0T6PKB(J6;CoiOAWpVTS zZrZEI1DUSCBbJwk2U5McvKUQs>0L&aMQ>c5B_5L59N^Ltoi0VQ$^IMqX4NK>5g4C|6F1Znn33@sTUW;-_mc>wyC15(*YGc}`FeSVJpBBsGUa1xCf;+! zP`7`WJge}!dU`gCqw+Az8Lj>~_l(R;e7@6|kn8ldbAT6fEWLV|-_SB{CeaI8% zxy8i?x+k~1mW!T@FjhGAaGP6L*lbt0k><438_jN5e~(Co!@@fEGI?gLBSksLq$XH2 zTE9Q9bU4#=YikN-+jv%;!fTs|ZX9`HRcpGFbBam)UgQn$)gC!*mY$^v7Ee5g@79fx z^%WDbM#Nu5){*Iqj+ZhZv@9LXE|c7Rwh@4_GUn~4Bf09SfV&C`IVPL#yaEEN(Y_V# zc_dSpFfQ(UTDThDn1lfXq&{jjI?re=9#qfVmibFPn^ZWX94a;}CMG9s8p4^v2KJ|$ z+D9?^s^`0ZY!H2NjjW+`5t>X|~b=Kp@kN2c0(j;Suv+>!WO6XNHjCM>0 zCC09dGa@-2I!D$uIbUZlaWJY%IUGV&pl%*IA$*NzAbIhmc4q8PiBJknEtA ze@b=+e`LjB;$Bj;9I$!)+p&s|M0_fJ(+g4!fPuEHcy%2E&1?{dA(7oP(d_byiM~)v zkwhuC7K_5E_5r-G-hTWFHw=DY;`uOvj1SJRDNOfY^pCC6%rRB<*KsH{Iv*+@siQZ! zTb54o2?(?;3w^OD zv<55@WK5`BW=^m%2izKYec+@SC^;E!ZXC%oS`5+OI6P+`3B!;K!Ht!Yv9UfDV@O=& zMHReyb)48Xn_BdG{<4I+24yCG0G(~W@NIz4( zHmt3t7GB{xGs=T2w~b@>!gF$P1Xi`m=HtBs&sMtjeXp&nZrUv$^|e;b6WmLj?}3`I zVK+U;&9B?GQ+-+L4S+0%4|Dl6fek?H1Y!X=Up+X(t!v83jz3ZWP4dRu4_6r+rSU`L z=H7-EP#!$O&C9E#jPo1Ro^-D)o=wUC8i>|{w6EmEAA5U&HUdyRy$lYHiuFk4=;(Ls zn^cw3&~h!D-)0`CDm)jEbVyfO69;D?tpSmmiHQS#azjt>s$aO)UB|vP}sXq#U58$vAC{8Q=bus0CZ@&2J$ojhh;eWki@IMpJ z|8t{qHkpphV=IAKfuFMc|eUL7+PR&}nyUqn$%ErO4voy?-cV()*-=D8p41#+u@u+*5nWgVp zEuugv`(Nb=4hWzhqGXV_-fY^NDt8n@_AtP#@Xrlvwhn@Xr@e2suwvM1qnznRywP8e zNCz@_hTF`C_l{^{wyCCOYGh<&0G9!Pkuh;`gh?ZZ#prkyPAn+9Gyz^2&Lkl@k(_UW z+`$-+QL#jlxkW~%dmp|R$=LH-W*Ls^z&ey32O6JGq6l;Xp`P6L>!F;m&kv2TGQTpo z_k24qKR+?2&>tslkf#SInODqO%j}GpfUZ<8H#fJ&8)hk=He8`)CK~MAf|N-`gx&%hv0vLec2EE7xvZW_@{*Q2m8X)$<}O(D7MS2y$6PhJdjB|o4AJj z(fZYw<$`#Hg>{#w+PepeZ6#@IlhnvFP_OJYS3`6Y+NY-n2nnr|uzkzPOqR>BSgZpk z?TzGzAANbmmG1T)u}_<;EW7uCo;^@yU5IFT^y&MA^F~jeK;iwXQ2*GNUX+9HURemR zHqxQ=vaF!+vXqlw?E&QMbE2F4=-$1*l750^SRg<8VV^mLN+rnN^2qL}XnW5)f z)r8Fb@ZnDNO>b`gH1F?iwATVaA%aX1#eqi#>NCUPHq(^>rH+k_&ieRKW07hRUht<( zr7t1jF&D{hZf155Y@5h)z&9Y}y}DjhX^U}CuYNFaay+L-pZk-tW!NRjA>>vv-*8-C z55Z_JalQVF#0Aa{wiJT10zidap4VF#_VvMo3B`~MU~53C1c{+fSD&~XO?}~-tfr=> zA!&6Gexr0S&wSyku9j9LY)x!%=krqol26?cCKp!93S)Anb>8abu74-2{~Ey%zJ}0}`rGF_$z{KhKzgM}vP+4qguCgY{TQx2 z2tfFOj4k9oJ7-ults0{r%~z){9R8Ok(ezm8Sc~Tp}Ww;Bo3Zo2?4TCDy2v zn&o09Gx?Sq(f7r@kL@(+d-pD)$Y3F9&r0yqcu(g1Un)cYf0I=H|35035LJ3CbOkrd z^u+QTxz7I3tS`1s1I3k@VebYckdXfagviTf0H$J@ zAnIRJ;jS9TPUZ<+Uyq&xwyniAESF-o9J$2w^k6^Ct@Z%flr->O#u0vAz(-CroFN1F zP4Y}j)zH3p9*`xdFW%_U{;j^<@h>tPq>F&sRRtLF#Lkkw8(Gnh?k_|zCy-KN1$SkE z?8y!xNBc;QP`76OQv8T@H#>xE)FZRCxTzLRy*^fX1qG44YA}F|Xct-1%FGy@G&^wb z=~|mqa8C_7N}2zWs*e9TRY{ruW64o5t>kyPlHCht%*n^* zzj$#7tl9!BBqTC@>!!W%K6On9haHY^M7MS>w@V>_4sHAO<(Wu!L^ltF?CBj_ zy;nmZa`R!Szu6BpEh#?tCp~m z@Qvwrv-H+JKS~@`7R(0P9ke0pZ+WB29g~j*&dOgtSpKmqfDL&Af5)PY=s?{ zTPp%-eQd4%;8Ba2Woky(t#v2${>j!vw_iU!nwl8Kc^E-_2MDofWv*1p95Bb`VS}9X zbavu=H$wAwwB~!@hIil9JX16jW9*XmN{!CC{?(hRa2giBYIf^?8u{U*f2r2}!MDI- zV}(y}sU~FYI$#-o$rD6<<~O|E-AjNLojo^L%Ev2ixD85lQJm_UAoEm1wSgihN-xj@ z#JBGbrFfb6T{TE~O|Eav>|FsnI;Q$jiKY#D2d}xsi zMs04mSQ(*~)CH^}GNevwQO{oQ$r%K3B)HiZiUV#ze#5G-NMKynB1dHj<+vtrwL!r1 z2xCN$@l=&G7ndTrYK|&#)CVPY(%J$FsI1(VFQ?Y-Vd-P20LpZL64}emqmypKB_$`cB_~Tw{VQPqlV`33QzPrkNHUAD>Mm^v#s2OL2he3;@G0{J+W) zN3nZ>@Yjh8vH+~cR&T<=%j)cK9;g=6Q!<9Ue%%A$76$gAs!EdIpx}P#kTa4QE}|Og zIu@2DWIcKi=GAry7+19b{b8RWVs<$Jj5_SUffRS0W`#7(_G{Cq`f4=C`KNTIIUe6H zXpPW6IrXyNF1FPI=^+P@BoO1NJbi$~paX^GCpwnbYg^oickON!6xynNTRC8kQYLrBCB#}Udeu|U4dLT08Va9 zg0OALhYvYw4@(DQA|hC$8ppRuUxAUv&(BY{`ldh0`!8!n3~gcoDrLKVC{*yti#dS9 zwI<7`+hXz;RStQGCjm2=Gzul)BAx{GS5U-2F?J%D%HK4^wAq8s|INw|L)!+`OBo=b zIXO9jYTZ&aaB|uA7svz0tL=9kVg&N*%{riosRIo**?n%+2k;dy_>-Pe)jgk2ak67a z1zoadjA_R(XST;RoB%ma&-!jHD&>(pWAqJxEgxpNs$rkl$j&GnJd<8^ey&SJZNwi}@jwiq~7>@uYWG*u)B9F2{Q3?g=Ae$EX{a1Ku-;28MU zz!SxQPJnuy5(Ls&=Hy}fd>_k=N7ECXABP}9DI_LJr}1M>gX%>LsU zG32;wN>PzcC_R5yn~6lRH%5SLl|t_jcc;OA`Kc}Xk8(sU5^8RqL3Rsx#0ta!;nc<^ zXP!Y+4Vdz8rtgK15xV`Zl-->L6xrWd;nv&%{61TK|H^c*+LQFpXhYFHz&h{cfL4Q|1*by!kZdMWOQ5{f$DZwot5H&&%k4$#dpD6OJt)jn zY{VK#nge5nDAuRY*~O(8SmzY%_Za+oQaAew$X;~k&Se4rqjUo>4)pB!Zc3Ui;7Zl? zkh<2^*2Bab-mq}d-^vt0F2`BPL||z%{VQmJ(bRlvETFGz^1Dgke<+7gPo0wmfr_0+ zd|=-d+Uq2q1TUz-2mWT@s1rMU`gf3j3F)V#`Cp40)Rg+QIdAZ(Y5-17y~Dy$KtO8m zK9<;;$!}Ehea_vRIzETlImR?c5Y&kwZNfbb`L96oNO|6eWB0i>|Tw zS7{-op%c1#Kp-5Bmx_+hN&OG9SjV%BO4V)-{i@*)aaQF-;c6m!=iz zh;6O~tw>G@9a4@wa;l|kicw^GeQ^w402-ADKWi6&@8r9-$b-)mz*A#AGwA5u1e^!4 z)rC5s_>adT)b|-2>y`~DvZMTWv=Oh=z4W4h%JSTK*_i`UiWN~H7qtI*xx)UxTdw%h zPDblbPYt^h_{p|P+~eK#DRj@L$BGcGe+RK|7U3@Z+u`;7@+ES`m?BH?w?4%GcyQV8 zx%i`hp)(;+?PA&)Ic&D} z1=yj__YOrcj9!gY5vVTf&!rbdt%+NNh4FM{9}BlcK~9GF!V^(mw@Kwb|ULrRw+x*4wN&Ua!Xju zZ852YHJSAHi!V*P#?YS=GCY0EW1UhXkYZHvu4`%+ZTfJd{TD19@UO7DVDbxA@#fQF zjA#AsYe?v%CI{|e- zh>KjE3SbqQ*x;3Q+3Vpsc3@dIz-5n#9Xktt3?kRG0xWns+D6a1To1^6P4*%tBn`Nq zk9!wNDP&GQK*#K%0R!Vl0!KP}$jc&ISl>1(yG(m#o*WV=Zu$SWc2=9$#bFR@teVCl zes4fOs3|D+ulj8N!^YM{SW@#u*R#VYn|eh)SG>;Ku1dG=bs&H(#ORaWr`7Cp7<9zk zLFd7D*PB{eR(O>mki{)ufX87^n#@2o!Fp+&r>V8MH?ls|?N`TT0NIzJsDIuHJ9=c# z`p>#`=e#VrGnU*j=jrn=8dqc3tugr~B(q*#scTM=^JQbFAYDYvn-1*Qd>5Z!d*_hX z@^i90)6>4+aI+rGwcl=YZRMD(GHq8z4`@42tbmZlEux&wf7>L%$vroAu(5ya&FA+xKvXPvF&nt(|yWGcb_@a^?5y zd8n|{=w0Hio9u)?bxS~LnV9lkzdkuPh;G*|0mA^31uXFR9`%YW^56CQ+t7dC10*%^ zw+^87LlJ-6h(2-O& zJf@t`-!aGs^37W4>l{&=YR6n|7}@E7;gQ#-Nn@^(Ly zCDo+4_)7PfVto`W8O`HtZiyiY2Xq{pxfEf;!^2bI{+Ysebp`=+sEGPUZ`otYjiud8 z1mdR3bcAtfxh?)ukQ>R_j4I$fgt%%?+2-W=vF;4;v^PhwGkL9O7K{6p%)ecY^kdd_ z8}j&hyO2Hx@Wb95&|J4BW>H{B7ZY(h2ujJXpLXap=(fqP2D+{*X~nwV4(N$Kl~@E^ z3MXLn=);t4BEROwhF1--tx9B31^ZxN#q!Vg1+UV4kw!y;vhShFN5}YHQ&8B@&VJ04 zB_5>eQIqfFfoOI09F1}Bq)^|;_9di$5QC5LtAaK)rQM&toLys8Ykw{GDV$(c48If$ z2suzl!JR?}TDYsdSFM243@&bNZa#qaM<1bJUb{;hWqL}AER`^`>O2l@O2DA>(SF-x*UCR`pG9rU z9kDRC2Gv``61#XymeZiIYob|3qa9w|Q{(FmIiAz{?cD6E%hU!B0pEXbdf((Ee?Qo5 zT*>QUz#|D;n@IyY?}SfOng`A#6S$nLziiWZ;=@?{ljoD4By$3hPcu!y+npc%-)gDw zA0iA9?YocF=3eNEAW=~K+^WStvT6i!z{&Lynqub(rRrj{5Mbdr$C8{v$gflbo$Z3r zpn)g*ANR)|N*3A0?QVvhFIq^UclyiF7P( zPp=A;!q+WIR$A@Uy#mvs(s`N$TjP2-&87}gq+H)HTK{UW6!vN?z36ljn~a*c$x_%= zckQ&KgR;$?R#6>^$WyU*tAE)98n(kPE0g*a;mOS3`;wj0KNOsoK0!m#!Tw@2bH{2? zGiW$VSGyat-T5C|tIN)J$Ng|)IT5Pc6%09l{!Q5>9GU0K2VJ(-& zgKSkZ<6g)T=-Cl#FkKRl#pTB|U0J3hR@Xz>cNv#N*i~NGKCT^TW1JqE{Sv->hLZgd zZ}Y%3VN6XIF1=YMUfGe|R3OqMu(D&Wxopb@I#|ZJksYC>rXL*U485DsZTx*br8~%H zXX$}vaHr)vjlY2Ppk5jbYUoifo^H%aRFjq%=OxcWM=O#&yZiM;rBEq}4#K;erZfxh zGrJjm=@S-9FFVTB-7OP2e{!{Ie-`7HCeFto$3F|HZjfI3Oul@VIipWXyYk^g^{YHh zJ&yZd)S~k`Xy+qC5o^sug1x={y~wZ^Wry5mdz|Aw*uSd$crYx4!a4laB|5N%ijMcX z+)OIHn~=%8TdBKO-E18fVPR;+7Lac8O1PMAl&>re2Ukl+=D6$F>5&h@G*fP@ZxI!eBqpdyCh z&cV3V1A*r$MieQix^8>NyZbCSt>5-G_(A%Tz7&hNjEVkyKq&kH?v1YcjdU>y|FnC^ zwTPknNZq*7${~V9nRIhy@FM{QmoCtX20I#b!1C#(iBrj`##%o+4y0JK2J~pZ7uLE_ zE;ROBvQ-1Vb~_4*FROj0GrV-jTa_wRc8qFu`~Eij<0bPbH;fYH~em zN3#1M1*6%GQhLSMgEUz^iw{$>1>Fv``2qbX zN=!XTSzDy5f9sfqSG%llp8cJxGHeM)f>=b}^NT|x<#q?n3t-TZ?Okuoq@7fxwh6*- z%l;>y6H~zQVM=z8u-Yhl6kXtG+F4a!ZaGeD|f3M@NyRqqz6&k<~ZIuR)Vr3C5-;6Bb~I($#Ky$BjjMt zT{X;okJz2%5xjLXwHoia-7EV2ZhbvOJg17@R7-8-A?mT0ePl*%a9dBdkqP5^NzcO+ zinc2O6qh?9*G7N9){U@|-l609VuBeqij(7Ke0#dxA65@aU`}hazI>=E*=psL(52lF zbkg>f%Dsqjjjrd~F|l3s+HlutMr&2#VukL}c;DtYDN=ei@7%X2^EIsmOQJHOuG`*vn&!%%M|ggK^OPI=zy zF%BQfqNb+25KN&Z_Z#et!Th+;^v7c+YQ+vm7;@c7NXKFOpmFXkzs?mGCH{DFjaNe` zBbCXmQJ`gYpgl9EtH4^ zZSFaeSdzCXJ>NSnp48~mwz1&Z1==_gYT>qs&>_Qf2VSy(hc*ZgXdq=pOM4}9xQcvL z&g8X)SBHHR+RFSmiMU6N9nUX6wh}!?7#cm#!j0!c3zn)Ls%;A&Flo#?E3&=-;AoY;M~Q zV#YrAD`(H6P}|gkzjXupTuNF7~`^5USu6M7RUa>=>1QT-!UDaIGelS)e|0Xdbgn*A> zf7!cDEeWkM3?S9Xc_*BU&V zsI^R`r2uhAnsss6Bsw9UU4&_35Ha$nb|0QT78rCY#_s#Cy7U8Hs%LQ%5>iv|4=wAY zdTT}6(Mw$o?iRJW&rgSkuP9Wv6BaDcB^6KoQ1^EHzXjRAAt~VrH!ut5G-uAA|7faoAKLsb-4t#@4lt^rfns z-VWnFk1^pQmch4~#OaK2j7vJHj|t&0{}#rF2I;KtaC|s@qR_%D+O}8eP3AmK|@H|PSbKuP~D|HRyXf^Rflgnb%bGmkP~Q<@xWx)G9i5m zleas}r=nYza+P>ugxV{Ibz}GAajTrB@JovZKNLrw$1gKc9#Yj)9v%|BU)x5=_VrWP zCLf&lRgUzI8t~3^2{8QRq3JyiI~EpnQYKd{yXtYH=qvu6G`~dBJJ^b}ci!6UeFPVc zG$Q?710KgBy>kmKib&BYH?X=sJ@CEpsZ=IHVJx}YC`)8NwB#`pFO)VDhJ z>?qan;VzUvQf+nVb(?=cz;KF-ab(d&+;N(h-3+?N|M+zknud*mw2YeMd>T0}u2amb z-I`ojOr8DerGO6XSyhmK3{&itaJnOYXF9$o40H$mS#WEY_8NbF@w9A0nW4U<<{Z*6 zQ0bOlgAF8cQ`oFu$^Y4QdXMS$OTF{*cSYx^wNhdn(+Bi(sp`W#pK;vo<3_gII6rM; zvfFmibP=^f-Zag-a&^jQeqfb4+W{%Iz@&u!S{8s6hM^J>P=udPoyop);G zp}}lrRZS4;oAFucj;N(&C$V3dTSc|tkv1AEEh!UVO`PUNKb%Y4dB4-)AB%xg^fKH$ zCKTBFDPcK%DM;m-{qZ(8|ECYYT+ELhD@rg)#c(|pimXDrZh#DJX5%WTIZ}Ew$cb2_xDTM%NE|Iur^Cw zALqJKp@AJRI%&F{#*r7Uo9L4CgDJ~Tj_chKJ{`1*TrpZ!*q^TtP?BF4mALDzhClm% z@5=d#2n!lIeMsWA=sQwzAV=eFtL1O8H~Hb2{8_u1&KV`-y=dV>o4!RWzH&Bx7o3XL zvlRHNbrF2k2NmT+s9pxcF%Ht%xv>W%%xZXZ--rc8e;w8|x;VBJW|E+_U$qC?nz z)*r30b0g1hKxF3V8=i8v0>svn#fPoKJ40gajMh}kFdOejT7!Et9yX3?9uM>kRBX6j>iim)_z`k*)Z-7mi|d*!#X@+AV;s*gw0=0g5A3Fg^E01%`lO1^Q|AZ ze>~^?v*&ExW+t#T$@2|{?Y`1?T@o?0RyQmk-FYVNzU13=x+ziJf66`9hc@9``}+K6 zfAdn7C7#lLtsb%MNLXoi1O!FBVeo|XnNmy*&eY`r!#O~@I6PD}lNa*DEl7BmZQ(=8 z<9)&C%h#+7xA=oJ4f+&f5K+3;Vw<;>CuSyvEz`w(vp#Y0KqY8=*$QW7y@%bVKVFF% zjX7WAaJdDX!}pi!eqY35g*!Uf{6)_w_>$%vDOPFpA@aE6xF8 zY*uCVT+YOf;_eJ#POn|>#B^H(axBD{NE_ANu6QWo^f63<2lYii+Ei%V#OaF9j|~bvJ#H7d`#>}#KWfV%hX>x&iiZ5eE~aEZov!REN9`cV982dY;`HH z-=S3vd8CRJH_cH-U7FEdZ7OMAnY+HQ;`HkWGk*uL9ng3kjtCkuz9dzoA1Nf`AA3dF z2REolGpD;S&e!foGog#rSG`wbB1iH@LFsb1TttjsT{Z98jomUC*!Dm@jxER;6Bb5X zzSfE@Z^_Orzo0NNa|fd61OIv?;pVfBvUGc+Fud1l-6>3Mo#BOVJFHvBSf{dh>9JGD$??gY}bj z{jgD^IJjXf8&5-}HfP+8sIJ6bC0Ty2i4QI&l==A_B8kmki5l6q6B%v09`U%|q;p@Z zqU*SrDmIfhoTKAyE;UB0%rp@ucin1-jL*SaV$8a#`%)R+_19_FxUVr+kBiMCqsmP* z7GfT(PEWu03mNWXyc|#ayyLMNN5|4>**ol)lB4zBgyoB^e8~SaO01sAo6{!ACQJJH z4)G*A6(7IEy*K%Z^&_!1jd@YNB!)!kVN26WvnD4j{9 z<;`-s+CdHB4pt&1+Sz?QG_H|fr32#0(c|gU3;dy5;K3p||7G1>D1u%zQFq*R(>CX} zmc+_07|A(Bwrk$Su{71&)m07sBBk?1po{#s%#wiP9cNF=eo473`v0_c@9|Kk{U5-~ zp`wG`BAY|BL?p^Fgh~j@l=GRbRZe4C84PATsil-dj*FZRQ-cx1Xc#7135hTU!zjnh zV308}nBO(kZ+D;P_v}8;AHP5RGcUv3_uSWYU-xx=Kkw`OR-lx~Ncg$6= z6#Juiv+xvpMT_4g|GAB16sPdJsu!U*ZKxptiA>QcL#Kha{&x^|tmHyn{^Vj?6h zZPT58s$ZSFr1A&oON!@x4|9$ZvJ*4w6VG9*qV z(dhAqNt`jdW1md&M-jCuvz^hs`_n~sW_{0hG3gC_sMQO0hmKov?)@dx1L8@S2)TT- z_ECL0d!?@4S{7>@dz38Ibh+;4C{mKfSK(uyn}KdwvW4q~p6}Woki5Z_DWB&C$bv_w z(an+m3~Al(+kRxSU;8$25odEJw9-A(inSGmHJK^b?VV-~L}nXy5Bt6p3sqK|d77-I ztMBocn18m-`{7jkn6mQPTyOSNtVrkD925Ryd_l6AMTZt@F<3W4CM~$1AvMt4$J%;q zO&4WwCNxALw$YoJHm;s!>A5+jRs+%=CHkaMIf8~3OSmq^&EPr1>6sDPAlSmgXm|7| zNe+xw%)K25GEwbi#I)km4v+Pij~JJF=!#W|w4`D?>JZ}lou8jBJyKi^rF>L($+AQ- z-r|fb4V(3;4D~2x%5<1HcTUH%b*brvL-Z(IXYh#YEjmTvYjFA7cYQ&iB?d*pS|2$e zVvpK7zX}-(yz3RK^vhKzTlbk&@%@|gj_*(7ZFLD~Ihh7iJJW0F+6Z}qyf#ivE{SmDT!aCRjgt%MMg zo>ajdqenn<@cQ;w;vLZv+mAAzhoU&j=G>twTS%o+&wcd3u^@JK?lOkpm`P6?#$L|2 zfIXyu>D;)7y9j3Rz@)9m$jIWRzEgp)&4-w1hi=bDxQ{xlEYhxg6z|;8J^i$19`uXd zP~V8mlA0T2(vLW^q^rdqqoDioTV}&YkP$WgjF)mV*%*7wvPbx3-J$C+h0bBis)>Mb zy^m384?_rOVz{+gHnDB;n1SSZOy0nq?*;l-gWDyh8kRhsviupYPd6*(N7B`wg!L8~ za>e~zf2lZfGyM%b*EV0)HcUZtPTz;^;t?{|jNxjS+sfDti$vZ|B(dF7N1f%o?1V&* zg+PajW+j)?Lf?UB0SR#FS;hhJ?=7q8T%~_6(P%5TR7y#Sf@B_kc(vWbJfe~A3QqQh zBC0YZAtkq(sIh&a&@MZ#X*GGEoWc#sEMH-6vd>(SHAt3&|1j&pY_hN~`w_a?!tqz? zLwmeCc|=fH^w7`Z$BwX~CLi2o`F7hl7e07)ojwY2czoVi5le}bkn#DYwSHPn+vHX* zcK_>d_X#A)YEG-wp4~p<=FlfxBm6^fki{iqyx%~j6_p4p&e~3q?`+Fmws6!p&%Ba+(t2S#<5Kq>$|4kBFi~jeUYi)HNDZcNaD0wl(sFbv&m}o& zJiYi{=B1M@ROW_7Jjr_-D9kHvI>)YJ5~c&>Y1 zi{r8>s`7|q|ESEm>T(vh9T$i6O>im6limdf!`!qpr!VKA@UkDYJ4IyDucBKS{z@%q z53&^pgdLUwdURN~?)ahEXXk4yAZ%e3`vcv`y!AUa-3!QmWxsf9nYAidRN)Wwp~gf< zXPXX_xT;43Mll?jgo6{;`I|pj=k&wcckanK?-UHNNS-f@om#|^(#SRi3+Aw}H1a{G z4d_cr>)QBtJ{>X+1>WFcFZoi}p(h7lSLZ27tFN?3zExJwS=Bu_6IhZeNi;GK@bOwg z-#&U-!xPuJ{K<4Wj?F|E$J2}G_gXI_*D_i=^x+{!_n4|a zitayOf37GItLjtfuyj37TPjGbtO`bt55^w&Ic1_^eez*>xXAU{!TKUv<67fC-s|_M z)4-uV%=_>yHsIF(@0KOb}yz6Mm z(TFsy;6e;Z@{<>g&fkc|hD1M+!Q6Xhv&cCK{{JcYhE#r2p=oYF{`37l8ZOr3~;4_KFK|cEJR=0VVP4;>t-Qj&a-sRTIyV=zB zm`pEzOXD}+mdD%?k~@DBdQL%G*c-JEVu(rVwpM;fq|pN0eQ%U1zU~Snh)R_*{%)M0`9%hs@sA4RwF;YwYE* zChe6h?GT^Uh9LX9mA+5&`ghur@RH$5&$8FOUYr9PVA}YHF6-aCXKF`^i1h+SOaA5W7kNryKQKW$d*B zKJsUqGfURwT-zSma(ocGWRpajswmC0$QX5%Lo9RT$&aCYz8?<6--t(xOpkOy$6_wg zdUUQi@%7Y9ep&F^ob^v3<|W%fzpE#_RHy(mhbbf148o0*v5fGL_BjZS?FT0Lh7liX z_IF(u4}T0jeJwvv8ZFWfi^{1NkPu4ZO<~82w(rP)Trjkgw;(PEl=8SlhY$TvzAp)7 zlrFIo9LJ7V?g^z_64^^w+e40rUyZUEOIp(}p!?r^F?n^{iF>3eMCf6?d7VoETMJ2G zJY8gjGVEhsi*3{kV=kpI{lsnvV!dWU$O=8<%C(zsp6Kp>9uTC|lcf1*EDN~}@wc}9 z_>E8zR*#L*6WE81oJ%WW+q{S_>;n(wQ!E>8T-Kbg=$jpg*tC9v$3f)x4R>nFDMId@ zqU~<3xqqKm8J4wjyNwtVWS>WRIxZCkv9Hy^3WHv$yW01h+|tUQEW4PuTN*#Xlf;=}O&Q9&*sR{nE=i{O0 zge{}5RH!x*sa%CRRJWuzc{ji3rSr#`=mkaP#8+;Yr$gnOSW(YmuG7L9hG$aID-tBC zc2<$IRhc05nJ=zay`JJ;m74|M=KQB}qRiGSZ(lvs@uLw5dZ>+OAU?`u*Jf+O26pjX zywBq`PpoH*tR*n0K|e!X@#!d}KNWIenJfSOpr8VMcoJV4-6t6CGjE*r)GvB$qRO56 zL5J&8@+leTt$4L$Ch%Tr*-Q5;EJMWxHq#D0h}#KD>0FTK%3WmEr(ZuUQ}#T3My1`Z z5>@C+1$uiR=|$*0PK@8c_MZS|Vqs-vA5hN5Qi0F9nlcDd`_FkrYTx+n9pXn35VVcv00;6P*-N;decR=Af;=uXQsw# z&3oS9M^}a0qYF)}S1~dg`=APv1DZ;pB44> znv88%s+<5?qJOP-3Ztyys)F)#1T+EsjJicaZ|_TnY)ffjVYELr`VWpgd|Yn$7|rFT zJyuz((%uzU6J%o~mZSRdi9T>$$OCg&3JWSGRp6d_a4Q2&mq_u%dg=l!GaikwB7lQ9l0 zE{pUs7edf4);W45Jj-O676B*QZ?=qT@qSH9lf%0#x8<*S?a=1E@IsTJE884IaC3S3 z&c5Q44|t!lO?X|PL=-cO)wtYoBXsY%L4c)|{*XJ#9t1^#oc}kFh8wl? zNA`j{h?d9lOg8{NV4i71`^y~F0AU>lUl(lA^!R590a^`?^zOq#67FqPIR*4}JX|@Rh>TK%hNrs|mzw4NiMkgFmK; zSQh! z-sal1(t%1>^q3(l6(C75dk*>a*M-o^n6+v0{~U$`=j1)e$bjUur_%A`mb0^?Jgtq& zUC%%*ea!QvZLHCUwcPiE(}HQDIF2_`rKF8QegL(o5~r@*0nG^xit>0?(_s!d*gy|i z|2eU+o$1L&TmkImg8#bbJPPom2HwER2uYN_naychV#icn-!+ioiJEOH<&qc3WkyeG zX*IDjA&K=%rlBCXi=G?x?i``4kcJz9dFVSASa=wu1@uAp1=<$aIAA`=vybb?-pM2} zZDB7TTpzt%y`vu38gwNN*yiB#8#mwRTN-!+YH@*qI{kceBoC~HgG(mZ=muAS-K7&B zl97?2L(}0`V>RL-+=bAEBe!>whYnNlvx6WLLAZjc`ub=SP);gS29+Im@=TKpwcKIBjM!$qNV0v08q^e-jL zXLze@>byhqy#sNuK2vc0rI${#Dqcp^t$~P`9%8w8pNw8{UAoHKm)s3Aa4G#Ff0ag> z>5>9>yD=vEXRLbg^WS4T;utL!106Fp} z?QHMg1B~u!r!Mbjek^_UpOhAIr4kn0goCDpLD*(ioJ4f|dJt)0Ozlvf(g6a^7n8xJ z5GyYj*gj(sBbD}F*-XR%UNEMxsLOEb+D-e+&RNZROP~C|E$=;Z)1atptCEny7!3%+ zdY@o=0x^?-o!&;-;6Mvze+8j&%|?80MeB$u`fU@=~x0x~U)5ZU35#i-+2uLNg&bN*{Z zFm$xq1Y8i+j|jQms$9xQ3oB6j45d1q4f`6>uQ;5Ar$%jD1>UI7$I`A`b#RV=anJf7 zmv{^h_cz#F(ExF#)ZaMxl3l?_{`Za4NVmV@&!|bCPZyxsc_GbZdi8G_iE%xVwJ-{Z zdU^A-*#Nvo;?{=y$H<16x3XDHbpI*tX7=Z#km3oDS_KMp5_NtR8#?{%N#@7t<||dl zR8_4(^5*l$vIQQyS*bz!`1loGp*@glmZc_;)D3dTm(R8Lbw@9#goH0PF!vz1xjNhB z<>ZXPRzWMyPkyAl$;qAYp(RM^s^ErHfXE8+L&^Z2jbP6$VQjzbwR5vE`yq(nx3;zU zL*o6F%)t!#L9nvE5awCoRCT^&YR^wFZyaWyrHnG8}M2oKI(m@06`?UG;lJC;4_%*d$mH@T7HIzTrC ziK#>&5~qH&N}wS_GhJ%^N`%-(@1E$OHjwpEEyyfQ-$K)PiTNR+&5q-hcA#F`PnZ9} z%J0Fdj=}%eU==*U)6|CyheE(`D{ph|Ffc_fh7 zdsG%Dlrm+wpBljHJZ<<%aq)$vC87H9xK0)>kIQS_9`HISwUkgvEC(?cWd#M(+dK9S z+z~n;YJ1h_yF1;`I$9wJ5Uv@lCPr;p0@*B8-utg2wgU_;K$?XEu;qm7Y68!dwz1I+ z92u3+jtnb`Qd@MO)I!1T03MO=5%VJiThIex%FFG7f~sToN@4+59ee#yw;yjT2e9UK z=0L^v#LBTn!VHrL%g$SO8w1A$?roqNecg#kVmDReM0mW@sZ*!GUQV%r4fERWoW^&@ zv=%_?5SHZ)Yg-t^On%-#m$!Jvd*NR*_%zx%n)tEEEc5zJmN7 zRSIPW2Zb_Sd(JF;C(!PkCBBH-$ZFfDS)8!3KWb$}Q9Np6dCJ1(l*us;J0mM=6AN=e zz8!p9H*=h{v9Yuku6oPm*HsCUY(24_Q+v3y+fjrbS6dnouZ8a}@UM zR6i5cS?8jwVU#s7F|ho?e6eF!MBMM+e$c46w?0V1R5akIsph_`Iwp#CWh&7fN|B`p zZXaq@w_c-`yMb3SUtsjc?T2eS?|Z66T&>bRI@o^Z^09r5^VeOm92>XPer0E|RGqJC z&{2wQxa*jW4Kvfe-ViSfS6DK0_Uu@*nrDv90me38USAEY7p6Rywfwe4o8n$=IzBoS zxb^6{=`&{77D*078NI)~Pg%M0()`tBsn*73wJ9n`j~*4yyi0NCA)jXYFeqq^o^^q+ zn02#<)WoPYv$gouDyN|)e_^v~A;mx;1-HRh?539d(B%O`B3S7tN+T=6oDsPoaD=@VRx% zwy#x%Hhh`gH3}!dEhN;JAW?LG_hl}HN?mKuN^Kb#cbz2DhaMh3o7HC=!YQY3E}Bb; za{cKSii{uE#*I$p74dqp{`!sz`1SI6{23ey)mbj-nvb+qn(94Qi`?dt-LpsD$F94+ zQ<(Pjsk+lZmminQ#Ml7dpobHGJzqc6eAhzAdC>CW#fxoUy`=5Vz3T6*VWu~X#qZ0^ z@mTfsC+`}IY`wE*&+0rmcJY~cU5t5MnkeH$QAk`yhJ->%k@SSKgZ>=KbC&pN(rshkFoEr_a75= zW!!Dp#K)&(k@4-4)M(FcKVRS0;dWYOj7DtVw_Nsi_KCsEfx=X~kD)6l2VDkP^>M|> zYvR+pO2}(U_Vb%mKQ+;}=3}yY&ugnmrfoN`jan;i7o`@dq~XX$ktz5U3nJ!JNw`9w zxP3gEW9zS(%!h$&)AaswZLN-@M$^+e9f8 z;p$2?SWJUj@u*l) zq%QnKL15eSvonT2onL5!B~=h2c^IEIXym{~ahLQPr+bq%!sq|K#o?KO^S6tR16^?+ zJ{(LsS-k7kMrBP`*R0Bn2M^Xsj`fvZyLL@gUjB+>e@Ao@wQ|@wi{3hyk|KoV!LwzH zpTJ&P_IR4>Kzf6NWQ=27?oeNQrE)=_aA}?&ub+?417T`KYsF!U@)ZWoI|nHgX^m)3 zj*lNdnl@x*>hk$x1;klo4dtw=!6G$JYuoVV%^Q>2l+$^Ig%uqi6U%7^(sBBk)nUr2 zsy-zpCB8vHkL)_DO}>43Gfa=AJ#`&(^s-Qnz7c{dKrz*SIQ{LFMVvN`Zx`XdZW0lx z~;Befyf5WY?+V$tGF-b=`~E zY-eQVuijpkVDvsnM@J`c`t<2S=CwN_o9)t>J+Bs0OCuDkv)$a1n53Q^6b}+{_x1HX ziFGtwPIG-&7%cAO*iaJ#y`{?1ZPF7AX=bf;QM5^Egj7qAnC(8FrEAu72;*pjza^wDE8uO26>}sN zHfrs3Ue>_^3)iro9!u1^=$D?mckSW|9^*jFQK-axG^E!#ec$^b!QU$@be zbLY-CT4@a5y@F$O7khC>HJDEqY%?VQ!vi zfVi z^(wB*tB7Lt>G?Fj+qX@78{Y*=I3!e_xx3v=$S7~=SeJda+L0soNKJF<&a7M|?K1rI znMFgFN;_^w1V0!< z=}wWr9S-{xyJztU{x~3VTw^t_?K(3nXi<+34%AvF(`U~-)W9A(EgS`AxZPlat}#Kb z^^%QBt)3$FACfBdV;?`>%It11*nfL-v2~GTq`~Ny6+Ynu^-jt|Lqq!x9I$z|R?0br z)ZUBpR)`IBY~tZ5L3NG`k#wSCgWL``ZF7isWMb7U>#*bH5_)Rdz0x$v-JMeL^iNkS zsf%Ys_tdQ-%Hl>odJEC+;ghYN{Lk|9H9KL-0nq*!lcJac6)+f1a zr7theBm07P%a#IaS9*6=Y-8i`Oq>p?Ibd2BFS$Y;YxUDLwOgT=X;qvYcrQvvqEpRoeAP{G z8R_R15lN1)pOK`#XU~OW$Bvmgity~A;8%J$NBTR}bajJRSXfLQwGQsTclP(Ih=Q+AEE=)`>$l)Dbi*Z``rkHLndILQ82)^joqz;klaf8z zgKzlBvT$J(i1>ta%H24L3VzMQ!?&hWbD*m(300crI(s2o8Q{o0w}}Bat?SFTEM2-Z zJSu9F=NeJf2A6^0BA2Z>lZzfWX=8FtTx;vevEj<>iYJD-WofolES~BXyXfd>dL=EC zRm6NVUXqfsBXjV}bsip`v{T*6W|p$-(^d(a`fjuD>Wk8gw_c1pbkMrL<6{^$1Hgrn zVU9;J{M_*lv#(#h>{^&z}FJ`m1GK!=tnUx0J-)ga8%dkVD$@#1nQ9|`5ZTG3s z`{m14tcZ0T8`d8g`LKIoTW4~E=KI@Qgilp%6*jNcHgFw!7~<3=>N4CGsgrIOH+@F? zTRD5{nLIljN}Q8j?p|&8J`vt$<+XmVkAku?txXU2uZLSwax5cMD=(+W^_f6Y&*||o z+OnOW^?b?A*DHji}QXn)hvwGJNGtPIl zE(3KD_wGG6>=g_Ifp7e7L;K?lvh{%sl*WSX>u+)?hDzz-I@^&p=?Eb1($&7&BIEw^=Q3kMMQ)nF zD!EmpSZ+`ZJlR(AaD{8J>w_C>ai2@!~@F9(Lmn<-Kpom3$N5?6e zKD$fb&E}#|THN7e9uW~ObmVU;F~r|nCw zv%8CevXqsT$N&AqWxSfLxSahd@}pHx41L0z3+_5G7tWb;@YV)J2~+8b(L@gcF{{Qa z1Z!z@$_{f+vY$_{(0Kc58pbuZ=sf-K%&aCTY>g3?c4Lwv`YD$JFke`FYBQ_X6Ca<& zKy%91ZrrdlH9FdQX|*|dIp4tkD8Kj~stm3Ur2%z`5D+H4{5`L8V@u1(&p(UQTAt@> z>vo$+udMPnaBZ_4)dw$tx}05WQl> z3TmD&cV0mOv%2~0Y&LJMOu+2IHf4xU_wCz(BG5VP+Rn@GHzu`pwo%<1rcTI~Q$m%>kau#>hrp7F}?ac~$^AvwY6e4AI{C3C*(HnObVlYgG=&>!k}n?OnNnyhHK#EHW~&*A2q~iq1L6@iaGX0 zy?phG9L2^^XVow{ulO#1)A>_{`s$S{-Zg7uUcRgzIa}VjKx5CI*Xsuaa?X?!+LY*; zWtInooEy7*<;tjBb~jz1`;^M6FK@0Vo%wc*=9uZo?5i^LYD2qaM0Hmu?FV4EcAeqU zo%-VZY--P^7t6W~^mdXq7PT8|uy1T2K#HauwPoG9bxW5lQ7cVXF5M zMW1<@PVH=hpWTHg--uE%c@Pxs-Q*-FM<%b@??3Dj&cJtFH=!R#*iTFHmLARIaL0EB zZ(g}F2aVdaueDe>lQ-(&uHCzrEn1|46aICoYhS&3RprEq2y6u^Y3kV9n>K8Sh_Daa zHTk*HOK^E&rH@Q+c_rJ5H~hUb|BEQ`|M7>;v%D>`$24&qY0ZIDREHQGGVqWVSmpiP z49E&-!VZ$S%Ad*;!Qp9H!!aPPoal*sdTE=4h09x%j82^3`SsVGASLQ&&ZKl@Pq?lX zwQBU4LiG-3v#x>omtS47u@8+3m3ZIGnKN~=oKw3p7)o2TAIp5r@w9H9HG4J{%bl&} z^2Lh|%pfV3G_nWf*c|qN=2n8=30pPFr|R-~t`v9~;2#_u2MEHmdGi55<3e>1NP9V0U*U#DU*wpbRMb>kKmK=@I4~+XTl(iBmrnB7<;*gKYYk7Ej^J@!?wdx#;p2j zamwkhLiSy{3O)jR$@Ye15eNLSiGxGNN9gFwpSFN>i`#dpA2{H_1vvWp~8CffCTIf`^>HREo=O+!<`en`H!kcOt zxFp?RlcWo4s;WLfchpMh#3^d%>OPvgWWx?&6lichUUBimU<+3C_x}8qpI)2~?)g<= zY-B*|)Tu|<i$3NZ`4bt?>Q zLl1eFW@~2f~{~$P5HbA{De?`{`|R6#VfD>(ObFL%9C#WtO`xp+Xkx~lF5=7RWvn?sm$yJ zaVVoHTPU7t84+}`jZvj=i^sK9J-H?w6}sc}uGG|2)9RBiXImNl`0>GwNx* zl!}|GRIoA(J%m?G3=4~CMMp;lN{fB!HsKoC4+V*bmv=wv$BObvX4LtKG3RZVmsAXv zbu8dKAV38)#iurHs-3l|YSzv9DtLn=<07^?%UAPp2~;mHSj(jl>fC!(YJAXeJ%~2C zu2MFZIFG34A>c{i=}BmR>rVPImO>gJ83M5b9nghp(C?gt2{z+b!wftZCi;fXr+{W z%n!BVKk1FPxBzX)PD1}G%?}Xt3k{`xOf;tE-dJ0mV08W5xpP4wrIE^&j}9gFz2)?Z zLbKILwR*Vs#u{$)kwu()Q5mL0Ih~j4B>?dGz(W?*$rjyZIbQ4*r~&y<^@6KGH$Ax$ zkGz;3c{@1R42afZgHljy*}nbz!GT;3ptBa>mt&GzQdyKjgc{5mPJ9syU;WP4DSWlU z21&`x1PcP8KiTI=EnE>KVKSD=>oQ*+bSFM**py)H=q(0Wy60yv)I<|iYj4QT1|dp1 z^>JI|GpnY3;I7n{7v?GzfbowGej}1B0PuH7wEA<#v_{DAfcE7;+4m~-ofKoWXcckE z^*jnhvRl9|^$5m*gIQ&m+(M({$9G5@A3q+o^ZYF6JB&cB?fTzUOg8K~ZpP~+$|ql( zo9Pn{v8fH5xVSdedcDGLf@bGBPELXpp-98p;YBeoxGUoSzNt5GqXLA5N6)4NU@yij zZ@|>~>{7Z!Zh#s~>IQDaejkXs>lIiQEaKmP47WUvlkb{4^v8tSK>{krfCQFn}1qGFs!eC+0u}A}~az7AeU*DxfO(9ze zJ`%BJVEyoLa6At+tpaBwc6A~u;M_=qq>&R__f_~oK_uv%sNJ!`oG`MBoSR-nsFtzwH zWDMSD={v}Vx{aq|f0RGmzXES2Z{1R;0p5`{+PmMDUiL0v^_n%0uv;BYvBSG7w;t|m zBMKv%L*pXb?s`35t@yIHH#wWEQiYDao@1Tt3-8+*TfXZ563GT8H32g^7-QBH=qXQ82P^&3S|oU!A= zu>MWDYEyl<3_Z-VhE5O(gqSes4qPTE`#KqCp1?GVzH?`#LP?r!J5f7KP@)0Mbp4$E zw;T&7mtG$0FE{8N4*xD1w;(S+zc0|>JJlNG!kMd|KK*3Ffjghd;0vM)(xAuT4!n!z zpXyO|FE4WuD+IQx&a+b=WxsoA>ci`73_V;&zsZ59pDCNi!h%iB33HMg_XxslpV&H| zn>X*zn$HSvxG=09-N;y1%t`%g&*xY4inzO#i~$(>0a|`jEo5P6rTbt4fbm+eQ2vab zb86Q;Jj&FRB_9qBo*||YtWDIG5Tg2-RXyH$_N;MDOJie{1Ebk0RhLbYlaq5jX-PKC zezZ_=5q^GU2#x4F@itS4Qw|;_0I~4tFMH~2N);V@Ud#?2e$SuXAz<$uydV@;(-oCB*`C^?B+keiZ zfK^Ii5EHqNKzRIFacbq_#SfsGZsO-Jik98G*A)4JZ8>LxwrSYqX&h=uD2>dcH#Idj zZjz9w6{V|u3|Te=x}1FS?EDrnmzUGGY3 z=PB=beRT;Sga+DLunyW8{O5I$E*$$l{?^3^;esPaFSkb{D9niId-V3+*}20E@#K+F zc=+I!@$z6SFo@;iI;dx;=Ze%Gqnz8oRR9-LB%Q^!R8hpCfP3@iGSKY|y5Na?Z-KpY z=gw6!1FeZM$j$;MZYlE+2$Xiqg1HVN${#5Okv>i*Y2U~|x4mho>u_{JLW1v|J7<1S zd?_z?Lc)pAFNCvdYHAV{VcRU|*msg_dm@_p`1q9F-#uHQ1k&CE;`HMaS;cIk1hYxx zL`g{#>Nmhpd8U(noc5Dlt3}MqN*?Z)jOPv5ZWdVYHsJzoQ&}zIfC{t}oE}N1c&-)i zfAHOzb*`T~cKfh-G4bC%@6A~WJf{w&xC9z)G$36J$U2FDM5%-c+0xa~TpJAUmXxSw z_U7>t#$;t>RTi%&E;-VXh}?m%)&!B9h=w>mK9J43X_Gwkh!XgHWf=~P>s^P~?03yZ z;>PdMhVBbpg6?IulO0X>o#{4r^H*Q_-sI-Cqj;%DDg|>XAk{%f zXa?0t$h!GJQ%egK=3Dg>!^^1F5ANOLh-^V=gDAC`Brxdpnd!h}(J+4Uz%Nky3NuKq z1l#%cRw?K4p_YiKsJCIa{rrr8)eEqSgQ^F=eN}|H^D*6?rgj*9+0En2H*0??OGr#q zM4>7`DGAmwF^O&~jr214nD9^(N0HPoq4nb3t>*O3nghC*Z8!t0ylgn%g-1qer4UE+ zQ}=Jo$R*?)+4o+Y^L@y^uq&iVp4i*UT zGzlyFK%mn$oBCKbKNb$iqGh-mr0li9sr2Ov{w?Ft&}rwCFN%Wjutl%yJ8POZ%X|0b z1tuTv?L>)In~JY+DFFWaG_JY1iT3#M2SX)!dHLUeV_~SltHaGOsaSVd-h*Zu12+x? zDQ^|8czJZk)979l7l@l(Ywlk`^Mqt&kLgZ}IuT-!5*iiG)2UuK5z$PteKHpc0o#iUS{M0wZcY)e<=;CU>hDPK+%Hi~nqV{rmSb5e|yM z60}OMqnA9quBxWyBISm?gWoHAe02B4%a_|BcZ;Ff6@%fQdjKl6De=_$mS zCq(Gf;_rl}40S)FnOO6QCkje9y(AtWk3en8^CNmJK6|gn%Fp@l3kx+HvRsh)ihyp# zgM&>pE~>b(R-9xdV2o&_PJNixQOZ>h4|OG_8#+%<-iH?-1KPh#WbV&pt;JzQBYS2q zSo48ok$|ELg2lCb`eF^n_7RgP#JN{t{e}&Y1z-}P{s&7qsJ6AWUAubqCKrOcyNTmY zv|^B--#+Uzw>EqVV(dO#P4b{H4I3Ph`HS1JeR%zD^^qC}+(hZSW&O=u7 z*(9pwvilIdh**~&6O6vg+Xd;HSKME*bSWCvUQ$gV0YS2h8Xa}^5?!@w6(OET{7BFx z9s4YE9wy2O|Io=KmA%*`gBCOd##RL{~!d8qjROg%!^{Vs)7>ytLn3b#Yr-dtZl z1g1AqeY$N^MgH>s1swd@qY1f1e`niJosw%hVYe`LS)V_Dp0{qwIXJjwV46e6lU#M0 zz9jBLVKgFKQRvK6^P@-a3+j&-WR}oiOlP8#|}cw=0Nfj$b6nvLs!w z2KHh9qkgLS^nW3ArQmyz1thFTjZv9Zhbo*{i z_`3)waJe8oBX*|e9{5t(Gqb~$+*q70}n$cdh<5ufF5($AQ)kr#DX68=t&> z;~~5fGkJIH&_ z)OiSZ`|$0O{(}wUNxB~zP+`&UT_~g3&r?fl>bzgApXrTB4Fy#M-72;57vhlW>gtX8 zm_xw*@~@OoK%qGDBf+k#N&$)R4Nr`u2EYGTN^yBV3&%h3hs!M4my);TDcSOfo5f_{ zV}UosScw(v@hkJ|Z!quUfdsVel=}+cm9>>yrP79BSaID)% zgTyg5+*g52bzFB5P5_}%^agckpiI^p_;6`p&9rl}oBvY}fVTV3RG<&&;_s=z%%6VR@gv}` z^U2ws`&4;MxpcQ<=U7#yQ?g+9-#H#*f9H6##NP-pN?9`e=If-YGfpFd&$gU9tox;f z!~fOv(0U4ysV!%qH2Gx z^8Y`1I|b`!dm{~oo?`l zuH|bN=0KL_11LuZJ=cr961KW9gxZapyW9pUayfs|1gjbMP}XwNIy zB)7o(4Vu1V==aNIK+a=vJnx{BA>~4nK7!8-a~A}QTJJ>$jZw7$%Bfzuod%|M)ZQc2 zg@BY?ly^Av9(ggRY7LDaha~F$)6AJB&=wrOdWt-S+fJhFL@YxC`Fg?qw^H0s;*>yW z3~MDNrHhl(JS9`e-11$edmp`gKgs{NW-$uIg%QUmafTwPkw+De4ut{9DfmD<%Y0@J z10jWoKrt^JjJ`HaJUTE{^mixK&JM>NB&syI8StF}@8!itm}xBt^4a99=jP%H|MTy> zG8$R_$Xd^ZSx!>8N+A+$K^rves?`aq2j#GGy#dm4cE)Vy!ds2`ar=}F{)f+Pc@%|M zsvVLTNZFGN5!42GMMVu*26AzKtmn!}Grh^Zz6A#kx2QZ?ZR5;YvrK_v(=aF!EQ%mn z1(uzpDXw-oSOzhfz2+5*Sk!lT?2l1ZHux9k`-?%}vMq9|l4NG9B?`&f?(8D23;2BP z+ka8;L(fgdMXE8b7q?JqPzJW~L0oE#+(nF!jZh)vh@Jj&K@bjNy&44iNlP5^o(3E( zGK!Ogs6r+J#`KSgktA)QfJ3UXR9B4-U++^=#cf;; zgGpXw0t(|5#`>@>E8-4Eq7F#*R~hQ0Sl(xI9XyH%jRVseLleZ8C&Ngj9KgNPjMI4t zbn5scs|Xb0<$fSU;t+lwUsj8~-j1wv_9qD>Rbl6Ys_1@CZs;dDPg&)IyZ$R8{bzlG zumKq}-++L&L^cd<0V2M4BKBL^+Mj+|DC$EuLBLr`ZgLRFWy7yTp-Yj+PvqA7?bBJu z-4*oYz_R5xG|kPsmMxLNMv4Tn_R^7+yNnmQ=W)0XF5SqT6=DBiFH$GUoi(`#B;Jd# z$I_wL&YAX;R8w>FxS(^8lTfRnLQ#3X5`fe5?nN?|(^}Z(e_6U2FVmICy0n74+26#q zSKQaSNgFw0dD#Xpx@R?q!%y>@UPgvX#siJZ-#C6yN{Rm}f53;{yDBQ81 z18&d_>=l&x2ecm$q9cB3SWsmTw4r`;|<>x=O%e7wp>lR^Q4dgog8R*!G9k7?)QZXIZxwaCY0hSZTq|zaoDq+Sx%8Co z%ujBI^{AM8V`JkPmn;5_Wl)(;I{D{`@-(ogiNr*;o+e^g?)GUu`!ZtuMINiS+`KU_ z+F3r9?xa#o?YFJ|IMh5NWyk2@85H%~IDfRIp;1Z~nKcb;X`hizJECgG1ygf>=cs0E zSekCP>_@7UUB?|1unldeWY%uqtRgF0@3t_8l^&DMx99<%te%S(kE7lS20MF9bu16_ z`dG5&ctiU|{oNXsgU7~|%E}tT(uN0CP$HW9PbdttOAZxX?|py0-BNTQ zJAs*Z$~wCHO}0K`yyKK7n{eK$)Ck2`M&W>_vhnVlooSe9Lrh5v;{>0}P~4fAGH&l{ zd%3T`AGtPNo-M-lMIE_JgdeyKYqp0P+A<}@8rox8yH#Xq1IHXSl3WEQD*BDP8G{2l z#ndP|t3iIl)xcq=MrAiQ-gL!}*_DB{mDQRw&k^uH!!9er+=To*wcCk$6IqTB%I=t%cT4St$2f7Q0v)bub1hrk_2&tY!$jAz|V zZy1G3V$4ESGSRFrF=NkbSEgOHjk`Pfg=qnaj#0#aq<86`=4f#%$;=8Zvp*1AQG#zz zsHk-W34>!>3}wt2L!2s4+EsVwi=9@fqvQG>SVuB`E7f93Wh2WUt8mVoRV~S#N1O2$ zbc|_%c`CMnY1|kIgOy00;6Riq;S5rYD0z%_stlPvfBkw7v8zd3y84+}tbM(M91<(V zhb=NSO4GrjDWBH3y8N_9%<07t8UI?p|8^@ziAa7&2qEe^*O8`_cN}<``}=p@Gv?rb zC=)N1RgtfcQXfp0|I2bibxe-m^nW5>F!l{VPiVvRVUn0#M-&O9Y}l|D-IIo7K}K^z z#Q0Y@HyX!|Js{&+WR!H>x?Q-I<#-lEtFXT<(|`=)f{Fv;HVXHXun(Slz%qY6@x6o` zdXK|#bt;I>>#l&0Y68fFJc<;1i|elo+vx__OcCPU8EQzvlHb5Z?z=2K`oi#rL40)T zIS&kQ{4{G;V6<9fAXJSzcg@q@k$(dVSMg#`^u1WDFKgDk90KSW6Zy zIvStZufqTVyn_b{ywgP)7%|DHs2JBDvh@U@ zZv=u+Colxxtn4;?D*#%n3A6^-kY_&v2Mc-$Gx^ChUMf&j0Y(!KCt_%vf%m=(lCV#>7FD_h=Cu7S&!N( z((X_aF#in`IXrwv5{g*>m6lmii!6_Dim}#hl$l$%ZW($AG!sXCtGfrgbUo%1?x5$0 zCE@W2jxK}m3JbTxI21uR$;K2=3VTK>0zxmc?SkdiOLB<$tP5((*AGX;m{+ z9BcSfN?2QK!WIFS0JJOrW}IX{3kP<)5Xb_tWtBR~6}@>}YN&BZq^4g(9GrY(znR{M ztW9Jv@Vlowssu_i9IUN@;qF2JXK5K~57ZZ!*7$B?sL-@&)7UH`1ak6&L`&tjVZ=H1 zzGS*pFu%JHwIZKu!v@E4LyU+b=u00R&6OT6mfzOkIue(gF)`jfvE4^v@fq8`J#R3B zq6qNF5Txpe{EYq}1ov?$z?P{@Liuy&%-K3Im@Azz{VnEu4`Adz*Ud;c=MFG)DcmOp zM#IIE^2W{MZiEc__fBhsycLm>Qbk>Wm0a)4P~?0^z-P`%Lu7O_&s~wGwJo!rFF*C5 z1j(*Dd2PKELm%itlDA?IzZ9^XP~3eO;zyUiO5}TkF}fBpY%2$`?rfU# zSJ8y$u&}6t^=4Mw+cvq-GLYEOgskoZ7L)Bd_7u@wV-H&sY3`(3na_{hn5Akynkmn|@&p1#i{QMf*Gu!GMq_oW!LLq(*{<`$cC&rWi{ z`<0X`K%#7WKJ7%p@xc1^>j}x^swihCldHo;6QjzK;3p&!RwTMY=X`H>dy`J(^|q^S zZD39C-kV09F)d;W34z#}A+W^b4kcc)WeTE%<7qn|+(vWVb~HGW2miDpjY5J@#L>*w zFXe5XgN(x!hCx9dueirDNWD(}2hS!XMddqc*y*8WWRP4JLQ$&P+IJA9T>8r|99M;z z#`x}E%rqVMII1`H!NQfX8qy{eHEvm9>IYU|Hv|64H2nk0K?Xpp!nl3}j^ZpI#fEY_ zNfRfEjzo?x7s)-+D*LX@<-m?EJo>OV&lLH*XZCZKZ4$T9Dt07#=~ZzA%aK|45y+v2 z^wDgwS$b@+ujjAXaS%@mDF=s?sNY!ev}+~irARCY!Mi8%t|y2n10F}@9xN+UJg%WS z(bx-KB^h-i19trU-RG#5UD=&^qhtrBJSMX=gl@mPwegUav|7I_+00?}j}8e=KJBNY zlIr;8CvU_s$kY+^m4PUW`izgOXgFmLF z5uW7UAy%t^hY{&hEiqDzJzqzi&%;Ph5_A0W5(Q~o**y6$w%2jJv3xA(O>G_7HNAQ9 zu_v*F+-N2j8@x1fi5#ZiprNa+eG<5W3aD}Dypvs%SVLvcc&^*%Wzg$ygDlBNpui0% z5NWV6MJSNgBSk@=9jGPhM#v5)iz{farKD++iTjrhkD}d%@X(=5Q(U<1-@bj@z{T}C zXvgW7D_^Az-@-k3gAY1fs7pfC|b-zp_tk%~^>)bp+eK0MmxSoh!EJ9Onu^ zFiAWqX7XPt^`*7xR3+|E=y=_?-(J2*)iG;~Ep$Ru;;&9m;}Jo&Ea1aeN*rWBKVlTv41ikeLvC9jEfIuSgR zjl{zNI^h9C1P&lkF!$%5Nvl5rhEKM$zV#urbgX_xO~ZHvc2Qm#(w-3JD>5*7s?Qib zt*Dn1WX)tFP*?pHZ}U1rxhcY4fA;C-aFFl*O~P>8t?^WGiDv%j3-TfbS*1PkyN;au Ef4sKxY5)KL literal 20558 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 diff --git a/src/napari_matplotlib/tests/baseline/test_slice_2D.png b/src/napari_matplotlib/tests/baseline/test_slice_2D.png index ee3ce3b69a960ddfb07c347ef92c8c5f351d2472..d39920be6e7a22aa819f43e987f147c6e5fcd353 100644 GIT binary patch literal 33181 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"~RoOpdgzi9L*Eb`CH-( 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 literal 33587 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 Y#LgJ)%FQ_ocVI^k>1n5afBwe*0{GFbzW@LL literal 14356 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 literal 24951 zcmeFZWmr{P|28@o-6zs-p~J>_k20$!|Qd)syW9TbB?-y_kI7y8)Zdle4MK|5Cq}N%1Ej}5Gn%%p=e=Y zfNx@)UfF;bK?f-<2UTkm2j?et#*o4j2OCRk2TQZ33{J*&_GZ@bJ6!x+w>TI~9UN@z zg}Aw`{yKom+U^DS1P+!zCh-^N zlm@QhqKOX(bjR5E25`K7Ra2FU@gV5oyd)->nqL27W#TyE{b_BqI>!0g;0_i8+cz=M zl|)1|HY-)4WKxgC-UuXOI5Dj*|zz87ZTea?HnW~j*N z36EZPawpOy0OxDP-b4+Uf@?NWTX(=K*48+69a`{5Pd(T7CNeDcmgld~dYbNy-ONl# zF{_x)88!4)P|cja@{R?0?f0^%GM1K>neJ@CqF(ZW6K?yf>EEqd^{uXg9}#>!*!t6g z%u)hu-xup_AoQ$HOV-isNxqOoFVZGa{{DTG`k-epcawW69@t z?q-!|XuPR&yUCKVd#kw^_Ibh1?8`f<)eliwuHK$nQ|^1FyZdCP2P<<8J%gK5HL)A_ zRz8zDcF67}_%ur=<}JC?n+UMZ`P-9t{eDRh;7;D{XIovLxR*hD2{;}V%hXf)FYCVD@JREVKjHJRm! z3)^lH#1{Siq7)a|M-?ZMH+EQ`QLS@0eMfid>9d->X<}M2xkr!6yuE!f@F>51Q&3Y^ zPuDInF&{0^cU#|Ky=&UX&@kOu0hiJ9s3oa(Ce(@Tzr`0Dv`hTAs?V)#@9znzb!nPn9-RYkW>v_leVUTsdSXUKUeK3YSXbb6ej*!sah54+-nrOa z&2Uc_Jb5*}+WZ}1QW6q}FH|qCUTA|y4dwD!L9Q$56lL~HJzu;V4yT3cz<=3+s-=X? z&!0b&hp@A;g)-HhkLbFc=2yh5uT4~NUv_`2>w_5YM-6(d4|xx#of9|fw(1G!kuA+2 zki|LyV~v*~^Rv0*)qJGP50jpa^P%sNJ(|0Gars{BlPESxC=EuK5;RV-lf%YdmcLAm zuSoyp`3+ElmSWPT{|XES-WpM&V1XB?g-8tfLg@#gfR{!dG$Q0jziSBO%YP0?3F!Zv z`v2u)x|IwUd!eSGv6@a{IF!*HTWY*(5*``3mf*fQd`zJ?JG!&5u;8|u&AQ)ox|Lg9 zt<&Nk(pS1N$ZPqnh@pZ8v}h5Z>H*?oc(~ch05jWkxq^g$hV$|_KR=A~%>r$m61Ort z?kdTKx&@7mu@dRQ%&8oDucK=+oXGWvA^I-j+lCWa?M{Y4@2?to-TnvxZH?20j_2`0 zWcAXtyW^DO=vwF_uKszY`^l!U3V{^dI4Xh29wWno&+zHfr{al?cp;~$>M}W5+5YGk z3B#3~f`Z!fUxEhx={=Ih$H$>E5^!|m2YD*7>J-y84O;sy9w}-5^JPZA5M@V4-j*Wp zGlHR553;S9Dn2xucK^Qi_$KF+u|pX60qW#2Cd(_x%FcdV0iTMo3JD6dnk0lEB6)a) zZjJMnhMb&Srhho9iE$M~LP3#PU0rQ5VPRoTeF$c1GzoR}@Si__E;x{9r-;kRf4qHr zfYX%S}pBR;kaBkEU5&gav67dP!So6q*(1*Vh}Q z`qAe$t?29C>$QVDH+8G#^V;#fdi83IyyQ%&YuNYsd0x}LB#jW^g)~yfv9xx%<>{$_ z3={}~_1&okRJVQZYk12oozN@vTjzy?(S_@l{4Jk|_*moxGRII4aysO!*iSM#w`lvr z`W`)cq^?)1fJs1OIvL@rk>Rv8oqss3J6dVAHC?AuV+XXTAPE&Yhp8ID1<}l?KZ^9fy7nJmNNA>WL5f<+WAk7*uz4DZxE~gp^eG zeve6s*|Z`3h^mrE_NaloIxjD;kkgUPl>3&aoWdiE9ZJwy3P7jp_$nhRu+%cK`&dJR zBQjT6P;iA41D7SAkwgkPQ)W>=!KlAw{d&;<7AC+S4sz0{t;NQjgo--7Lf4D%o(~A& zQDmJy0XGgI`YBOhNx7g?+%@iaZv3LcTlmR<&~-8}agR3lVDkdiI3F~Fova`Ec z^CLgH9FmF|JtWpg$AwUuG%IFII@Qfr@y0Bx*lv6)sI5Iy=EoO9yXP@*GIthTO5k$` zOvb?W*{4s;lL>Mjuw``F4CY zbsZ2g!oX`n0eAup1@TxX<^><Lc(IgRscuHk#i8Jod+@#povFr&(6-)dN&9 zX`Ws@jn6b-$v_Z2NubILpu2qg6uiA$Pl&|3?z|qpTw$7_-7X`tu0PfuH!;Wuy&^Ul zENfaY7@C+2fIv67xeXOxd|+d%4dcFZ8~g$5DHwWS{2GBu5~;Yl9)pL*70aoaoqgwd z$wE$&Q4JWd5>t1?)R46#WnGl(hy=qhl*F1WFD`EH^#lwO zO9SgER<@51nnLt#?Xj^uR8SW(NrWCiql!pQys?p;-5yB)+Jw_r9a5qJi8i|C$ z@O7e|%7+Z!kU!t5A6}vj)=SUG$j-~tLPz%v{mEI~OK=}bs!fns5wRH5 zC{BM$v+eVo|;XaN+Xo!D#B5 z9zXJ=5@eakY7>EK$M;Nr+qrx7;rvw?BM%r;9Dc(~5-rZpmg0Bk@QIC$TkWcF!ovoC z22IT+xAGGhemA@OD$oM$6=%o%j*Ivd)}5@JyrJ?G>$?J;QAqseXb&ZIX5~Du?UBD> zSZ;aT^kz+4+9%?r8k4xPZBXL}6h~2cXonPxLZTbARi9FE$j8NH5Xi5)h&VtX0Y>F{ zy|%oJOy9?wVd3%JK`aE}gQ5^1rP`%{3ji5B;3O=Y4#9l=%rEgyJ(Sa--W|Nt2S2va6X&hU2`t z0fr7b`h;=G0voTRpJlloSb8)K47{>pF&dv9)w~u<#YE%5P6*KTpV){1!@-|X6EwK2 zibw5XgW`+&;*u%6HWVU*jat-RL^?%&cV+Rh9z{d$q*FT!$+-)x?YLnMPU{7a`YZwXL9(!!NfCRWsxX9CwXWkdFcx zs9r7(>fzzz8hb$)nS`q1hnvZ80*-gr$RUCyry5@OgZbhyf^e${CU85eYrFfiuLr9% zk{%t^peBk<5e|Y|!BhGSqv_$-7T_&Aem)mUvgK7kwTuI9v=7bJYy$l_dNKhKHy#SJT3j;D_IoM2;nUxpgzP8h$D6@9$r|YxcPj}+kHnmN zDkU%phE}TA3PyuetyT2&;ua^p8w^~JjbG~!LSnP>aZ$N(aW8WUdo^X-J%&e@*jZmN zg!#gJm{k?UXKGzbGNxT#!>b%)SQKKIWOK5!`-e64vw!?}E_~iql23PUK6qk(%lntE zYhiuHw{Kdq120iA@460m+}aG?q7gF$n_?ak1uo63hR8S60Z3a5NazF0du zyQ>wgt*tljor-(z4{O?0>E+YaczdV29juR0iZI<|VRFc$;3TRcjDpsvP`u+JM@Ry!-f z*1Be9X1Q$!_T6RUJA(wmzs_!R>K?>_Nmj(bez9k`(97|m@;ENTww6o2U_C1Y-Qh8Y zvM=H2r|$AoKlR~}p;9+X08Wt+YJ7Nf_MP7Qs`&f(Zu3DX=f_IkBWKcd{aKGwUyZ<_ zmveutW&)+#I{zA|5!A1m57ERbjkrk0pLP6!W5+58{geKwbXZAcrJXh%&1do^VsGpK7-L8H53nelC&L(q&KFe)6;8WtPT|_*9S9| z0^5-ELw?2dP+EH!b&LOxcptCT>`b;_`=jcbnwfBb;a$%D3H|nX(Ll5gN6i-XnP;J8 z6bAF|C=5fC7+1Cb0r9p}?@edmF|4etj2F$_*_df)XqVjUj^*Rsw3gM@j$U0`8}94t zvz!6lX9&FcE|RFKDD)T*1@cq|44?nJgEvo-KD=o5v5yfpIt-uNU{j5l6K21o3I++= zjT@$u8oIi_!`tRjMFfziJp37nk=rL3sbdeJi)1pupB0uuK;V4s4v9 z3bs~wGbltNf0p0Mk9YTG_AyW2TbwPg#y|9{PPT<%L~MAdQqobk5i$dwhv$*xf+yy~IpJ*F+@tTW zN$mC2x(Zz!-Lj(NH}2qF9W87y@Z?o`6v6da-zwh^k19vdesMLgOCF482IY09d;DY4 zv+gL3rpO}yn$=$FxX}UFL-H7%{U`dW*SAt(2C<^YZ6Hegbqnvx1(>jCDfe9VGhEQl0w}lq{Q-cNjL_oof z^k_u0JoQ40T$;&x1wlClTwwrgfe*KDXFUs!sG5S4k@+rSd*5g{_<#j~lQ$1Gtw8hV zH&vk^a$C$z`+V;WA1mwmtkdj!WyMN@w)SZbNeuRs@6>&^9Fohdk9mH?2 zXFSfw$Ks?zf%IDdcwSCZ){sxtp(YYi^FXckW7G0V!68SC_!K|AIy{c(OTr<~3t-cN zh*+|sFtiBCW`z9wnFVM7*pUy&EEIE@g-K3SY9uqui(^8hKl2|L{R0Ysf{;gm3h_{l z03?Z_m)mz00GlX03-A?cfx0O^vN%6ptm>W(r`)Un)*>+;+kA10C?5idrR6GGe4Ed= zuads$+n>vD@&T4bV1FWdvUJ4qS%{`ePGNr<&(%8k4=_qdE187n4K6@JetnM=mly?0 z`u_2L;>5j1@0nq8g77D~)23+-SiY&H36W z?gNNhhGl5R=iAWGBI(mda7E#a*ef=VC^l!WBL4$fQi}CnT8?9 zpaL);Y06oeqt^Ksl8d>QlG{WVFB?JB!SdM+W27mFdAtSn%`C$iYLf(&L8H$NQ8Rph zI7i73n|B%>9-%bB{dNMyKR`^s;pAWa1`9RMpO~h8+xj0`G>Q&}#&d1tP7wy2V~&tc z290ix9*YZEClG>3S171k-51U{=|pZ&rn~ALk}d2em;NDq4bdNkK)OZ#cPNklCmfJR~UCj z(C1zG==hob?MpQramgZ;Ejl8CyfY(QQ+)PhRLsY(NHoNhD2zBt_StscqnL<8FIPUX zU_cC7&BAAcs;GBB2bT|#djMF{r*$Mz#4xlBX>2(V5=nKqF<&CvMKkW|;A>g|SZX*Z zkXF!`Kf@i5u4*iX04$SO4lGDaGupF`WM=yoK(g7{(>M{+18v7@Mel6Th$KJSBqEPU zigK+ZVbju~27Li)OzRRt8(VK_yBw7e6n1-!=y?ety~OBca4O$pDe=Dhz6YMZG?L*& z%ykL<(|fV6QC3Hk)xqHazWjH}6o4BB@v14c2pHr;4+fcJR89^X;N?13I8>y3E6Tkd z`hh><;^JAcm{5^`pAk&Vr@gaN^Ffmn;05Fq;;(@a7od4S?9s1gfZ!2=A!Poddj11+ z{}tMDAfprF=YL1--f4gE@X(a?e%Za zA$q>Qz%+R>4yk~JQ!0?$e7HlMje92ZnuNdkYLKeqKs)QH<5`Wx$PJ)Tcmk#2?VC6K zvrVrZ=ZCU|=6pzBPuf9PbO46|L{E0*irmiwkB{MGAZS)oRCJS^`gpWhEpRz!cqwiz z^^AgeOk%2*AaF>`cXl3J_}MswM6mg~H5#O>1{p73W8~Ph;&jLGs)h((_yphEtmF&P zuXXv5pj)l>!q|ju?F?7Vdlpgu>%x6wysR^61XXMs;8*sWfJ&&BldI)t1Y{3pg|wf9 zy}sRojf=aRhp@=+kS7CI_XByB5sjCV5g&jdvHaE};I@_{bTiEc(qu!^c6&MpkiZsQ zNjN(*(Y1W|S;NUHyKsd=Hb7Seom>r*SuCiCCx3B4(wjDTGkTF=wzAg;S3d3Di)Or~ z+(db{-uO;l5ZiNVysUW4vZKA-Y?2(XkL&BW0O1<8FW3PhG1s;526Jn{jC|aUkhav0 z4mrjcJje>?i=;Uc(e8b{>a<{gq!-x|?N|^<7Kq8fb2RpnD!Lf+`PxW6G8S;#Tkd~; zx=qZ;B#Vp+1!y?wPFFG$&4;ocyKM|>mRXM3v$3;>O~FTpHI@3ABMq+Zm7_M!QPxZe ze&8Ezm1{*M(z>iCmDuFw0Qs-Vqw?^Gh;o<7de75R=Pd&y#e1?h*z2(2INA<0wAQy3 zyxtcx&ja7|w^A6=bY-B5k-nSStd)sbBQbl4^JNY+<#V9Asj8;Jr=G?FDs~^9o1bmA zQwhd`Ea3T~FZMD;*VcFDnPsD+qpMGHa`(=Pmq0*{*Ya(n;7w^2*M}=vMjU^%jjgS1 zPHwJMd0qKP4JRL0!SMWLC;&PDA3P*Dcx3EFVt#8Ng&AN8S0^g0iFEKG1*vh#Rb>!u z67P7vEfqtb-!4Hdxn&G}nmElWEp=_zoB7c#;(1c)qE~282RP5%1Y!3MlM>#s$hbHT zS%9;wc@Z9a?QWc27rrKK!HGNuq%3iRbG@*}amt#Y2uZo5S35^z4;bO0nDrbe(15E2L|-M_F09!9Y#*Qh#@ocuDW4jA&CFpO<_Qi zd0dAGkBinNooa_S1$CR%Vx?`|{~P$17v5QQ^tA4Hk@{q!g>cP3l>Uc}K&kn#T$LWz zd9NYe?e#klVyNoV1e|}qmN?;P3~iQBm7pm!?R4{$o6~M@I7gjb-N2yWnuOnSvg@wH z+0L`^`&?XHieNUVOmO>ov+n#rH>aRrq%V2J&2;*Hyj@2&Mj0Ix^Yg_zpM@WT-cAX2 z5@QMwoR_`^RVXAb9#XG^5CA-wp;LMf%053|>Y1pDrj-`JIWRCqaO!&5bidDITnxl} z-c96lMKl({i?-@j*-G~wpPDaAv(UiHF;PQP)A=M26*_B)xrU{AW{I+#MUMIv@e*~x zMqqC_HKgnmqgS{>?GZUQflCVn`4^dBHIs?PLP9yMY+8)c@A^h{%a8Uk9zT8zvm%0$ zs#-?z1ZhBBhrr$UJ?6xCKX~UtwTvaYoDvJj2E(m~H<&&kOtbyy(@5`jBN zq7#85F7l`bNZCzjXJN2iLRwqBet6qSSjg9-PGQqASC2#NQ4mOwu9J- zfZ~2F;SB4ZNSwh3s}PlPl0BM+{BEqHP-NpI$Z2aLy|?~DVEp1 z{98UFsYpduWJkOzVYT7lJr@?_BUWj&mUiOIC%V|z!Bi2*re0jRa>31t3BMYnGu z4-jmsg#*?%J#)7X(?}m+i~EMwVk#=T(+Cg@UdXg4uoCbCrrqv8hYsGk*=w>wYRKp# z0bx^4Ru(e2v*gnaJas?Z%-1w@SGaj|a+cw~mLnFSUt(~{sw3)`6nUY%jzZ|? zegvnR(_G03803z#jj(g83y*l4<~QRt&V?6CO_+CgiaU9o*0p3+92`nd4vb;qK7@wW z2$euoN_f(paa@XzvY2OB42ITYDY5W+Z6N-Eu4G>R zD@#P$%o$CC7=%dt5RYi8f1%A3q5)h5d3@F@GE!1TrPrCm=QVQ9w+x7ZNXt11Vvl9TbJzVGRTp(B!$A>BdmXw}e zAthDoYS}PW!|c6h!H-XFwNVc9G0eK;1RW?Rik^KE!R%_BSvAwMHe$cg^qBr0N+Uw7E@L(C%rIwRZ?|1 zF7B-3!~@kuUG2(v2eL@@4K7K6AIsNHX3q~Dhr`3d9WRboM=KJ)fBzm+x7k(FgY)nd z!8MOfdgkbYtuWIYAnEDF5bC2EA}~s$rCtO35#oI&G5^c3)aFTG;hVQ_2avOLr3MW4 zIj3Zsf;8^sR|-XYuFA#6oN;^xBqAiX;#kfw~yuE{~T3$Ah(DWHVM$N@}IQjgC;}HNprS1|jHd8Sa--i(S1> zCzZWozJ!mzKVD^@>2-1Z0-sVqS$bcP%@iLERGzZ6( zK$PP5%tS)^2|m-_jZodiiN#A(T%hB>x6!#mgs`n1LbU@^ME?0wjoj+gJ+W>W)Tov0 zazem8lY#)$i;C)tuRwDIu?2`g{Hx6(TDMT&^}z|hq7rsl*}6-)`tn(gr%i#LDsoXlg&?c|EaF(EPK zqlEf2wZ-?(dJ8}B07wE6!D21|If8{^W?7El#R3mtSJ?9~*!EClg_E5<0%#L)G@uaXYu6qCaX`a~FA&9# z1l*KPAneD4b%Q!s$LAaPfn*Q(%GkPsloUPmUq}8J_*bvglA{1&ayoPU*iHz<;@|U6 z!otFO1`mmfCN?I2_)#LC%*RY$u3+Xzogs`~b{7N%0dN2CE2%sxed_%SCml6~@-@|L4?+@aiPFl0Be2|&orV};_I`PeG zA_nJ}c*^qfkrZk`9bf_-f~FbS@=xuS2Qx!X_Es2WFP%~@HZh@L(FhPCkAER`fHur3 z)}D4n-FjFGdS4VJyBX?sq~Wv7NqEJy+nR#axk)bDf#%o2zP{()YHA?_c(xogx2oqwlj;7Q2`#3SCP zP(DPksq?kwObQNVfO*|^(j)i3riK6!aQWcgrt-ziuVm5lV=tt`WpQTusiZFK5tvii zfNyGI1L=!PlFCcNPhuS3fF1wr42rqyT6}V_k?VPSARBu1YOS$rTM%_-5OqTz@CPKb zCU~$_a-wti?F>O(-?zg{J%#B>!2OwO*9bG<dN4TUl8*^nn&qy%=NhdYq@R!(%?X zj(4w4nEp?Nw*{OB85wwSN-nGF=;R2yADGTIzEqooz3RFL7y2VaS1+=&8=z7G{zUn1 z0DhVmL++=LDhfOXxM}#^J@{zZsD9?19)UYq_~?1amIU;5nJ)TT z3!&&x-Qi?v+H{@cM%idPusL4BnqZ;T8~HA$8%ca5MYsRdh9Jb(J~-qGUm>A&p4`zX znl)Q6u#+u0XOs>a7)ePf8^|N*`Zj z<>wElNa2>5FR+D2ZVkRqmf+q0k}b6IBkbOui1VaZ4QOo1s;bE4p6ENThjb)yDkiF1 zlC`2~!PF*R17iYuk-GYD{^lKvM+^i=qSXwL}L(K&1xoNziTlfFMM!B zDzsTSf94hf8U=_thUiu40cevR^g7W~b6?fXb1K*(E95l)v=sqf%hVZbD ziAAaY_SbwVrtK+@iNAAFRIkFv056pURz`T7khzAfq0TFrs z$K1luw)uY0X4aCr)JRH)FIGWNP%vl$z=4nPp2_uqPpQ%?aGIHKUFZZ_PZB$e0*;9) zF|6`fr1Um&0SF&sXRAF0Y};8s2g2iYqXNt%rf1GN<3^lX+of*I%x3*5z5t-Pt+Z0? zH}r}YriO^!DQX5S9u55Xx(^Z00Xi&U)hS?Kk88%AJ|E z3j|epHKHhq0k4lO=<*WKFaeen+F?tAua2VzsmN*Au}5%8CKMhkqM)f%^)N)_BGvcL}`kWSpcc*9CJdaI2lb!VOxE!{JK!+*x3 z4av5_(_^hKukmt#1M#`FH9O;^FKrhDmp4wE1DRy&-1b!p4H(~9=(C%fn-AsdT9#~l z`ZR4-#><;ecRH4txLW79wzu94AUFMWT>cq@ye{BSMoHF&sDvD{3|tqCr6y9szcD@z z-2*|y+dwO?7VpYCy+Z6a@GWJ5(7U>79&1&YzYhnjyTnv&sOtRSp2Lji;i@;ChjQo@GO~0{!|uV{!o{)^7O?2K{d!IKdbES_+lHr_ zPIc~>)6DbPOG0I`Bb;4bMJ1)i>(G7U+o#m_dcbFaHxljb?QcUutapw=M6?TAdm9*H zyGNd%9%0WT8IJhl8$8(XdP2b1M4Yb!TTtuj@Rn)!Dz8F0U@k0%wx96|cxpvX*Jwk6 zz~fbSCYRuKvLn4QU7|afsW6D7wcfDC52bTok@+V<@l9u$DzLrvSzFgvJ;kMVB zqoOF&GtzJJaw=$RYYPc8N&q@!{U-(P$CBH3_JLI`Cn-rRj3A;vAIuSN$*e6t2Ydj0 zTxjiZfw_53cm$tT=v}X~Bl4DZ;gT0?rGtutz7+at#Ei{L_P|{NeaM&!@7t<66k#0i zzxKaDw8;L9xN_k8fpLFrv|%^_Se78@Wj`Fk);yd#G}QUAoU5LzkyBf%C*g1Kj2@JIFc3rua@Bq&K6tTL)%N;ODK$LGGl%z+MA5hLT0p9=&k-)|VEG58R1-M}aU^4i_(Sr8?g7w{; zl!4JkMn)FCdbMFE00@Ja4B+KJGRPgj@#KAo2hCm#a(KJ-u;U+AW2{Gj00G7&q+9Mk ztaFzpnd=bcD^Q&lP#q!o-&u0e-##>dTSjyTy*~-^fA@fC02;pU8n}l0!TMu)d0u`M zG0gvN2$Q0Lv@n1WaJ2AMb_paF#riH zfTkM-{CFEecUSIT+Irker$ek-1BVrm5jRrY2*rpn5n@jWu%HIzI!uiv z-0#zZ^wSB1ISnwew#Vq5O27_Rn>CHfj;lt-0r4>A7{Rcxa}J|WAKVi7i!PZZ34!iCa)_17S708&t*{Yk_{11%`L9*cD0hD>FFd$nZwH2(9Yyeb&g%G-qwx$N$ z8VIBe@(P_12APO~>jp4zP+~(^&dAdkkf;5AD|Y!-^G`b>(&P1SR(K%kLePWnPO3yG z0whTJh@la%7at=dxid>-KtvMyjfx8V!N$f;hSL$L0Cyq;VHN%1`2A1ETr&JBksY`^ zgn&Rt1p4?7o9Do1mw$A`1Ul*h_^`rpiDyY)B1t%a5c)vch5F-b%*^S$V+kKWW?UK% zIzSUZ5bR@UXv$|v;Qy;^KL8zxnZ@l8RpTLYcw#a97F~e-=|B9TG9k<6T9@=7-W`dF zOP3pw(LeYU841-J`iOx)iecy#CbTB=r+vyQ$fBWe^`EWG*Sdf$fMGtH2-1q2f`=^6 zUZXYGXa7%k8SyV+u{Iz+Vcj-w0vcG%+aUdp1!sdbk;c z78suEm23|vS+xE+C0~#EC(H>rzBMvzl#Mh@(8D5~VQvSYS7TkDQN3o(Ok~|F4XkE* z1>y@ow$*M-N`CJa0)9?6zRg|MWN zZ7v0Gf)*KIP_x3vw)q{OYGM;*b?s~`sTot76CP%VExOf32vBR!QYqY zvEKbQg+Z87c1;l5VB_2C$H^#0CZK-^pzyDWJr5`y7#B-3LfQ)h1pMVJUi@=cfpvne zQgj#Tf4UBTh>#(DlV0{xrU{rGBR+q#VJN0G(3z;n%6h(uEG-EW4Z(c;#qS@G91IH@ zX@WIV0J|^8Qs1|2Jwcjj*3^2|wBHihWE@1Cl)5&nTtLBt0YgJ99DVUa1{Kr>$e^Md z)5z;0V#Gv-#fSr_m_>0dZGQB@pXS7#g9SiN$=dT9nZ#|_Gays_57xHbN+h(c*{aXw zG_>vqy|m%TS0eL8Tmj(XG(f;`H)|gf@8;*5tf50xETsbDD_{cb>?o-Tw6H%pp}xZHc2QOT-`!cxbD4F$2* zF*!gAL0V*J{>kxXl>4j&CdtAczLvf&(CoY7CdOwyo##B7*Uwp@IG83I#w5EGADNz8 zSgnGa;HIJ^x@(!+HZA(1;7c&=#Pf-wCvE1Nai{w|IqKEhDS@xXofs~|NZqH`g%WzKZx8)J(E459>bOQeVd-v}=d5dm z$r9GE+jGxtEuY_UY$4L3FX;iyf)V0oSJ*@|^4bVr<7Mm!W~7Pcx&*@o1?6K0<2qaA z-zo(frk4VHMMr<#KSC&qEL>5DcT*Lcz-kN>^?-IJ#}P6%CRw`{sE&yUs#-%1@A z&SJ*49N`u*ivNck~_2TemJesYOnn*O7~E(H1*a?vQ@502Z<{ zH^N4_Jf132grJWuvk0T>Qt^-9zS9ay8KivOW&2<|@4pCs6#pprMbKAR1HRdrt;)H0 z@qGV@B>N84wa}$X2ABWL-mt2M>@-X=4BS?v z04BOyfQppo|Mayz+TH}B7BBCx+#~8qmpl;iy`ypl_blffD{2T(ck&SyB7NJx*Q4@@ z1XD8F#M(v>{=5S5@^+U>TW!8=Oaebd73ca3JD{NHq(!{Pc^P+{zyB`?qVC$B{u zE^=)ry6$ZaDT$tgp3iDA|Ao8Mc0M_LP&HK50aya4PqZQSIdC5~Eq*c&m_-=wgBJat zook0171O-p272|iWA*cG?|`X@gTy7gfZvq1cLD;)8Vm7Gb*-ff+ zf6Q`XuI?Jt74$^BsR^I@diz}Xk;em_6cTzO^9*)?LP^;3Fmcnvh-Gg)!1ZATsZJo_ z$qyTy5PW5p^%?Whk1_ZpO4-I1)KeVP^9=Yuq6p@zUk6h2NnU5$fz1I+T2vfauGlU4 zuauKTFz6Mqx<`E+Mt%WMf<2gbS&a8vzf-cHK?uQ1w-3(HH9S%js8LS~xU8=kl4Yf( zEvhGhJcd)4kKe?G#^c9GJAGCx3iRX+9Z{oC77Dr#eQs|j3gq1n{J})Ir%rfEX;08* zYB~Nv>VUA=_rNu!$g&Q0B!wLEH0WYnwV_#2q}505rFr5oyRYvnb%{i40}XTYT~}>@ zBG1pfP!JRnMNnAD?`3TG1A*{|p1%$6JflymJZUXU#3*1PEH1$jydI0;kB@m0RIl$5N>+q8LR zL8dAuPbZsuDBb*c?f3d;{w-5ygv#%E#RTWB_7jCOPDxFG69|%WLR~AT;GSo;pAxa>%2WQuDfv7Aun`H${LOg(%Dv3+dHt;Y ziEuI=3~4(QSm9m^z`YP-IWK#y@&O_exKC7408jy`*qJ2MH21DP+3_#kh~-@N-*lr% zEmR1vwS{&Kd+3};q6neLQ{B@rtQmy?d`2U+4_*KR8xM@-90pRiKtv^vc&iAIs|pVq zE)O=FP&CDS8VnNf0i79*T|SmD{3&AlOACzQF1W{bo|WGFAeDwNLa_%)DmfHaIC+Vr zhrJ~FJ_jaSfRYgmHva{?K4*4k_~=2136c)dGkV?w^a}#Gj?PX($3f^30|J2cOXN9c zYrn-FANO&n*1_&Fm0*6y2Eq~suz{z}hDOoWW#z}wkwl=hiVzi8P3#%9G_kRS0pc3O zZL1=$9{|=$7i)M&$6F-D%IZJRj-@n5xroZyM~Hb{Fb{?dP>sy}{ZxN+%xzE0AHmt; zdOVC@)JQm~img14QV{Sv7Q-ECfwBAWGH3xHEzcR}uc{0#Mbh&`qz`4srV-}}J{CE+ zp6ZkW#}I`fl`P@BuXrn=Nl*ptg>@NBS_0a(RIxc;<{U?*R=!LJ8=iFs>}=4V$6=@w|al`?f!78kr?1g;sgdyE8#817w#QiSyKO z>7l-lV}7$LA8<`139)R@*hiW%A(vCI%WCoO5Vz66c#A3;J9`RQeDn_@^D6mA3qddW*C6COGD7umb zT~h$RiTU~U0WiUf?);!O$$$U)>u27ZKZ$P>XKMuzZMP(|&ivyun3AMKNU;%fRkCQm z9wV1RJClN7XS41<<3A3awL2p_?{#{10!BR>g|{9)@{+f~buqzpU;LBGl>Hu6!uF5j z77>t_X(3-N6B!xVtp_|Pw1UTBID%N1d78w>UG+Dv_ksR5n;Bu=lIZOfV{T!A%q@{8 zddIV&aDkVJBUr>Tk{e(NE?5jKV)NLJj9p1N#VQkT>-%T-o`9TC;i2vaShN?CXZaNx zba~=oz?|v-QZ4yb6<`bO;ZJZrng;2qHHlXuClBEC#yn2&C}ENO@qMycemN*m5ARqq z?Y0$^{a=~w31O$p^!iWI`|WM?xyi{7p0x!J?@ho*5inFdQ^D)#7UGgzJ)FR}oYMB@ z{TrG8dn=ztNG?#k_f`f=8&bqI^*zg;THbPF-Xc>-bjpnosgMWRL>OK;QB>n;Ht1P{8jq5SJ&|VQB!#t=cirs$7_Fq$a;SBLkS^vUM#h z$b*9{eqIIK!5eU35(t-=K$PL=Sk_%WI^tFVc84f)i(?ud9x1c2R0tad#~l^@yiX(m z9Fb1$^x+Yk=H*lT*m+8cixPQE*}wtyHYi9vyXKgP)7fmIO>W>Hl0ax0CIA817o;wGw$8%T7vJd!^>+_Jt+?75qv5Ok_bLQ9*E zWbkJ^&K*lUfm)&R>*9PO4&n6&Ual$K1Nopl+>5?VY=1+@9fAzN5SRlJs?pKWgC@WT zDtii2J#IaH{tP`Y{+@GArHgLKvkJ?xl)?&2vq=pVy}VwLQ~BumFH{3w;JzDktKIz5 zefrMb17w==D)RF047?VMnORxaes&gOwYDK?Q;wF8Fv-x(nyrS?ul<_28u@Bq3lor} zk>bDDJ-E{rVzyhkDeShq!lqQi`76B$p)X`Fh)S!h z6nHIi*$EUf)?j9)rhQwRG3mUyn(T+6kM<^X;lse^de?J2|76aee*Atp*dv1QK944V z#E*MgDb~s-tVe;1xb*qX)9x5SRl1P2Bqd~NT48{x7%#KfM>@z7+_#1uNA(LIaaBo% zi0=5LSn+Wh)Mj-*t8rY*Kvxn?eUYG_byKyVUy5R38M!q@*{DG#KDEf;$^IIU#!{8W zrwQkQZ&ooY7Qtwv*i5*@boTq@zO6yC62qpy0)-eLFLFPAyb|xas2wyB8WzS2pA_&s zYQoIP&$rtD1`^O#A{)+(OEzA_xn?kByG)exH5{;Rpk1M~2AWYa93{B%uU%x2o5_53 z#TI>8NzbPb-5jr0N4hKf`xRnEo*rR=2V8LvFPFJy3NEXnvXzD?B?dPv)+tXR25b-O zp6lJ^6C2Z3AUjUzETJ=!TQh`C*a76iIaYZhhm#J)0Gk$Q6JU?pT`L1VH^8x|Tu#Mn zBOcy*V9w0Q$dIsd@fy3GZ}{ttNl#2VXaT2XE#%3xqyxxZeG=EoR|e1AHhxkVssU*e zBtVu?>X=*9+KURQ$Q@4cT9n$%m2~vfD>qy?!ea}qOikZ24XbIMo?l?qpPaa_Gt69=V5C+*#Hz85s~4(Sv6WXI=rXd_zi`+0iQ-I~-X=ch z_CBW1_gbROzoD1??b|oLnP))TuAV=bxa+X2Ec|o%nb&>{jew09*oNpP9~X$9Gh&5+ z9|dxF(>9ni9;3s2u$mqf)pPhP3eLRORdTxwNax7Sb&O4d!FR9 zGmmr;z)&&y;1lImv0l!j9Qzv+n%=Ia2{RJq!1Mq%Dq=Rob+srJeux^iJt2P*H(i6#~zByCK4oJZC8Yi<= z1^$(+)EI)%t2{=Che77`ib!Dr(a57u7|?ApSlb|ymzm(9QdoD81LR$Y_3gRp!|Br) zpOA=;KvPcC=aL;5#3jEwkr?hMg47)#uouui0=$AX&qNjZ2zcJD_!&`U|G%CfhLX$V z^0NM?Ok@2Tr(7Hw+6$6haY2ia|$VFtY_-pAR-QW{yStq|cYpky7Z}-PBYng6KR07|J38H^kT3{o zIC0rFni6o#Q51N2dnZbVkGNi~q+R!7_*Emtkg75)!YGT_In)PNynT zF9rAjazTP|Dlje$6N;YoEq(&ouWqw1tAOJ+#Ez?8t76Kl#xI02nK_WcVx%kj>5%Tk zVo!Xkrh%6>NV5)xH_Q`^rKIu#%ZBGpD}@!ErnYuAARbqMuqU_^AFzW_~Yr#W@nZ@X~6)h zI92t0Fx6G>0~aLLU9Gk#G}B8hl%gv&1<5!G?*^52&%pO!Sk<{#04s6t&e@p@SFs!~Z4a|OF-utJjO2%dtlIn`F9TwtfE>0eCx9@Z47k|Di-~ZRis1ffd2{@&fv34xSYR4{1teA1@EPPgD zXYDuQxDaOvc8|-fudg2~M?Qx8yIq6%bkc+}?EiJivU-O8_4kTpX`rz7?oRJVCNk>@ z^5w;c?;I^gLDtDlR@O{gUEt3sF5w;m6=5E2Vl&C7z2|XcgHJD#Vyg>Q1>gY3K3Ni- z!8fmA)Yj~22QHsjt9!fe?l8$tysbd5&DZD;xBtHT{pW%?SoO)mSkOzdBfwWb&8OMr zWIwI(ld=M;0c?;k5Wpf`TM!p^e#$;v@}if;BCz%I=NmV(E51LadN@V)=RQs4?1v_% z`rtxHh+523X{`$qWz=f(D~IQ?81irYUPbf9_#HoQ6N3zlO*PFKAS^rvlO@W)7n#z( za_{fzFPI!*S!V%0+I*)H%qYmDF{Gcl`vBaVxah@ED%;@}p~q{^q>`mHUZ8z4gEEln zgvQXYeX;$LV%>K0uhoi*$>z9H2(;hv-k=h%$I&NbVpF(h)3MNtW|sv$hhziqjk2V2 z!2!@h@2KuQ{B?2IP_{kxqRjKu>Acdj2AMH7+-2cqDPOM&Az_BM(frKdTXw92%XUW&>%|x=YSthk>yd%gq|~x zbnnAKzzOh(I=%ZYw$g!!f3U&^F=F8!X9n^{It^VO0KXFmNicrj%FoZFA!||3g8Pql zNM8+zu&;KMS%7VqPJVWB?*kv$%J^DASj$`=(lc^#*3eE)nhN%85QtI;(b7K_t^yvr zviVF}w~J$Ao$_@-uy=XSagF+|`rUrca$kF=qMA6_-uS^W`+-pB zX;*3My8R3mg@n8ZuQAZ`f;0v}5BtCPk`l=r58?nJEBjLs<$N&lBCn(^B$CP4#AJ0f zw_sqmGl3D|prYxe1ahA;Kp86_O&x%|X!9)VK5FYL%e~$wC5xgz10DulB`XEZ^s*i_ zljp@T2B&_ppfq)RVSeOBJ$~NL3V61PT~HQ6VCiMbkwfR8WKnh=Q?%fHx{4 zT||%s0p${bMCAwsNNgQtQ8~jQ0!g_^0t5&lk`S`*m+4G9d$jw<@)yGlFu(l1$NN6- z^L$(^_9K8}gPDhue|^pGOj4#PhS!)9afzXUK@NfC1L=!8Yt?C}eH~EJ3Kqka2Jt^y z?~&VPcxoqxSx{3#w&S`O)xQH6;>;FJ2$o$U0*g!WE^V&mr3h&h2CHNrhT!PP$16G| zZR8QHm@%-Jlsht#wPp8KN%(`CcmnC&c$?N#3k6t*T-pjMMkk71wVq%r+yVk*&+o=? zrQ6yPN5P?INd9xg`SnLt`Mf@*InqgJe{|jQWLuVrRW(B6AYg94c z+}aLea^tbai15%izc@f<@T$66Wg6*+O2WakcFU>vzTq16xiZm&-R~uX&@+D|8K_U# zzJ*7QjOyfi6`d61^$BVOv4<6-dxBW2!=_TpJgw$}HB$ovcvnN>n!x@yd+}qxT(RuE zZE}S__9?tWBK$M%tWt8)yo779q^63h#p?dN05*0(!69Hvz!`h0RQlr50`yHN_OkJ3 zij$vKK7YQm%c6G$s43#cMJ_72Pr{b(3jeX&@LQnIwNj;pCx@k8R`Ey)8}BZeg#3W#rl8LS-%UJKtX2p@c6R1MJ*GKp2|>}FfeOL4B?JnALWpfm}SQkpah+qFf=xVhl23H{!P}-`-a|Fr2H`WKndsZ zu7C-@pw5ri%z}3pE6*G}dkZGApn0QRTDb`ak3A=~kHARl~cT0e(z#QY|BV&-v0@v24@D zGVmuA&U$UQSp4%JbMj>GpVL&6vY!^+N%MZ1(LP&HAY1&`pfV{})AW@+snDb3Fl0x* z-062ik8bW#jkU?C?d2$j9#*GcI2@0kdYrV4>I??@IJk4!UFWS_1Qm~=N$3cv3ZEkV zHr)-|<6pn{axSc)KTB^~?}Q8FP|DdjkPBGIatf!YJMmaP*wq5-Qp*!R)4rJO9pMH? z?&%o?+El|W-zYj|iTCfn?+NuPH@E9RJ6|HI{5@JVB!3{?W5`^2ouBRpFKioZLZ)|B z#G+wx;^>F$%jQeMUbE_4A+xn`n0BTArM7iL!p7K=pbj&+vvcdBK~l!%HqXra_wNHX z5Oe5Sz5ym91v!yH-4rW$ykl#sMYlPdEiKPv-cFC~S-f0l zr+YL*M`E}Zb!$8|9 zhAIqII8VS_t{KPLOFocUEzz@LVjQcB9g?0F9hG7|JEV^+!r&`b_7633rU!&u@OZC; zN$`=2KpdgdMnJwG4wBAXGOEH6eP7>hsZw;c`Duy+*as8RF7(tGNM+SFY6A4^RYxn; zr6AoLUBz^-Ps5i4@D0!v&EP5zA_wqT_e)cG4#O0nP&^(MRf#C57C!hcRwz}( z^x}N%S>JW0Hx30G)KNB=ro{ zB^#80gX80iJyi7+nBR2KO%(G`b(4^l9yQ~Jt<-RLnpEeJG*KUlsPRjd%sxad=ThUX z#PrNNO^BlKa=CdRSlT(8zP7K{rKI8lnje$SKdG(XMsx1syc)V?XpmRRJle$x=jWy~ z!B}DfXxHst)UNPbcW$+I0Ox3g?bLSHWm^OAj%Ff4gncUCcwK=X75#nVsPUz%gSLs? z8S`E|fhp)kg9CBO>_D<)?q&Agv2spH>BSKs!oyg_ zHRkN(j~gOH{Y3h*OO}dC8Nzyjw}%~8Thg`#7@m+oda`Dl$745rdl58+lEVx#nOuCK z<_plY2ni6w9;jvH?(nS^cgJXQAU;Akj8w-rhF_Dri|S9!>c=bPg6v>6t|pjm-T@}3 zBj7A|4AR2nKU`*v$?$?q2;VIvL)?$BaaQ5AtuK?B)<56Z!#5u2F|uZl|Z9%y0W zx-&sQIC0_xg1}`oyVHu~jErJqL&?nRu?@gTI98&L!R`XzIs7vDbO_v2&bzx8qV63o z^f5^lU}15DXV1FmBe5{=aB>Rrv0jMzZXx*OE}jn(a=rB8?PJ#%H9xwx^jKsqP@lq^ z-R$#V!owQq7op)3MB3a*B;iMT7A9#N@5!50(`QsM*iy%Yfx2>Di!X$jX0||Har^t` z)>hLFA`ExR%HH4EwHmWE9vrNvl3DCu;AM;YzI6^5H(j8$ED<+{8}lf0UF+vBxxOyM zot0L#YPD`5ga!94k7~t_FHZ?kfij5HGWpPB!Yal)l|t#b zDUTwxTj#M@Cjo^3kGLnAcX0V7->Ov#MP}6k904B@7Q(I?(TUjpB2q0+GFaK>NEvB@ zI=vv)=#8jJwcuh4!jCk-L}OK)j>*wQi!`o)Q!7$)!|iaJKddR#x3Zj_u8%gW`+S_> za3i^Ixq-dd#^)l+CvrG;FVj+;bED3e&jd=5wGJ||5u)s5SOx7TsU7DabAqDDA*(7I z{k~}zYGx^@@`2WZCtQlL)&3Oo!i7?ons+RUT9o5SyJu86_LUslKtg3%4vX7V5A{j= z^TCY-om~G@Kt_)68C@Tz>^GLHDMHZ$iXfo%+zy`?wi~C0^P*>ZrC@8R=vmnVlm!R5 zR7hIuec@qip;vwirLLhY)L&AKjc&G*76cBrpK^g7Au3vNx|aS!E|YWiInt_hVXc6a zo@^F5m4fck7(M!+!k^dQ8o*I0c>D(@qYdr7)e<;Wh_e!wq3Y+QrXZB@gpjnHdk{E6 zH4pd4CJ#Y)fcSm)5>#*;8HOpn(0Ijtx>UyrUJ zs(WrsuiUX?2S+MUtk&MOd(jOQ-2quP)@hmCwh_pxMlKbIV5P z89`vM%BMJzFtyzLFU?4uv^(0bMR#4;@}}it#9A4L!rp@k^kW(izb<(P!cIpH?ONYN6Zem z*teng_7~L|bC^OXj=v=$SJk|p_g?KxOdRp)psLuz#$q?W2zYbG`5*B;Hm4%COKNG- zvrB?GLCJfVAViM$y3KvN;|X6hgA(jzn09yeP@Io=rHE>ixIILgCi%Y&hOf|!+i{i@ zxC{kWT_F~S;h^q%Gmq&Y{|8(55OoNCR&f7v9QkwNuUO>A6%xE}7kI?Iodq_d^irFfo0!3p!i>^2O^g15tO%B0;8JE0N3kXuIl0j2 z=;+|!;28ro9QvZ{oBg4~vojRsd z(Q)C*6-D0g^loQQ&oYla<;Ra7*EQ7zdtu92Dc+xh%dD?fGAchv7rXx9L#pPg_R4u| z1SJJUVxEgc3`djxIWc}OHbY0?yEU+e*6+Wy~$L2${T*W#9fi|u(H|4&1&Z6X%{YD z^b<~!4z<%O7Vubzk)P{P`8qw<$uv(+Lgye+yly>E(N>Uw419q*gGtYEWWMnv-Y0fm zUbUxBpT4=G@6E}@)lpz$&=@JGPDn6tl%FbYs-@z{V&r4BAT-~Mm@p9{9ogH-@QtBD?NdM=! ze(b&2qoo&YTVw}2C+6%ei}^6f)9SE48C_9ekL8^)d&?&_pU3Rz-rsaBLZY?;Pw+ha zfZ_k=nEo;$5#H#h1%hLB-TP^6{4ycS{BTQ5PB-3ve8*qz;f}3rGK}AhY`zw)CDb#T z3%6A8W#RwtEb{yOnB0(@EHL4oH_WjX$ln(fs|)T(%FPQxEt)RA8c5{+Ixk z`=mD)VGO$|Mi+_L1k3hY4m?*SfY@Ff#x+I>%3l>EBqXv{qdnGM_vV;h#C4=j zXB5jf3oZK}BO(Q64 zUDMzw+lbp+%P&uX>}C{#6rT<5=)Gf|Rr1jy>5y7qURxgx6rHM}^HNn-4i;M(w(Uz1K{ytE*e8Kq3I8sP8IP zwzp+=n1JBrl=1vvsk~ki6l33jfR0r3{k-McaLwMN?ej-a$mCR#fqEG%Lv%j%K9yf z!tG*)@1}Q}_s>b=5)9c23o}OY5NRxx2 zSMIsn9xq8Y;LxSBHR40ZZBR`-;56icfuQCuh5U%B$ltI>ofUF^_mW*Fm7{z|xv;Ph zLcDEveJIm7%0*&zy30w!t%k;F0^+UnTkVV0g-SAeoG8&-a5*kCEbdy0t|QNblmmQ z7Q?d3u+(SY{cTD4QJpK9G{g*T8>&pzbhIOaavPTuVAyp}f0oX$b`-@Xib(#{2_`6V zW`~Ks_0w;%ZkBtoNgrP^*>6YTrJxSW!+hnRX59*MJD1juZsUmN(y1+bHe?6?^nDBL zlmXv=M5pk`*IOzXG3R0OqkeiLBj2r9mB^-Co+81>KFdW39{4=sf0})i}#x;;X8$%{B%NnYi`AF-j2_xPfFBy=28SzMUmj|U-{+>-p1*Cx$l13{kJ^M zJ1G&OD*FEZ(|(k}k<+ZGP(R#@4DHCE+`%fdvbsrVN`?t+qppDcPn#$NK{z)02vOUS+S?jK4E=-&EL>yFA*A(WC_KfkCl~| zq$VYwF$xN5oj7r#Xsy?*F$HQqO6;*3E4Ja);*-kJ`LbZqmuoh z*7MXdS_`a4R1Hy&L5V=KIJhQj=BB>kvx@!RsO6lEBrudngT<*L`mt}{O!jtMTjgu zA_%Jp-BvE9!%-kQJbb#v8+p(MJ1mP*{PgNTQ>6TOSNgVQOG`^s8q%v`18u3r2uNt( z!YY}5@ZLo50X;eSS@^m(JC)1RqM|!cs0rOl6_E##NB7YNMG23FK7StTWZcwV%w;Sc zTrIqoOk4>iU8xnH44SQLnUn}ZiTTRX5pZO_(73>L&A&_Ctc!Wp`i=hu@sSfJeEs}X zZr*&9Z}tl+`deyCiFEa~ux2*bgeS|j>I{08QYe(OPRjfvS}Lm44^9JPjhe{2H?HO5 z(ep7#CS_-%%RN1|yR+gYS8ExflZRy=SeE97Tb6AaWl|vDRKZt3az1lslsth>s;j|i zC=^*oMy5$m8evyebgHV-lq8+$RL&%(Eis_W?;y;w3WX1wb*&HK+UNv&=)4xIj_vMk z&$~{~I_0=;9vg5T4R|By^o$P%45{=YtlkR-g;XeeYc=jf+Wp3(j#Rva>< z03|C7b_I}BZw)~0vGMVww{PjUUv*$Q00rinwq2$Xu>YKGb+G5(!b>#L)hzn*(E0Wy zRcWq5MqL>?kR?^2D>zrZySqz%>Qp?9pksH<57Nme=7JPFAjp0Wr~Ul-^Fa(pSS@K`kL2~69C_NOCVD_=Q% zpwun@4Y#TCR2L~Raftn#^MDM@5YSBj@koLofU{@{KPOL@f8lhq`0dB5lx4mSSt~2{ zKzIqJ2}2k?ou=ncD{Tit%bs!8L&})_wW-Y>0`rrJ9V7QQqs2`-a_n8ABqRs!)7epr zMY&Hg1%^3ZH!(?mLPj?i+GPnVkJL0+0@E)s*Vh)ky${Xy7q;oMUcM}0)|sZHruI_& z;uf$-v&&5@ljNCq?C^8lnwgr*k*pH)k#Ub~;W^2T_9XR)%2$0TWhH>w$!_a&n(yvD zxGeYPE$l$);P1`RnKLuyKHEO@|CUbIjVb8l z7%YDz;z(9Wl1CCNG#;(3t=ty9+^Z8UkdGGE91uQKR<`}o(NiI>U#CRV9b){vx zO81IsE4@!mwo&8z{mrka) zWRhzHzdu*oS7>K!(f#hjtN?W1-@e_y#K52@Wr{pN+uDsT2(lffBGOA4(w`yI$hEYs z*j0y_38l=_NPJY}LpHriEUsp@7`~!oz4WQ}-uhuYly)T4Pr56EHUdr$$M85*@c|z6 z&tY#$N}9D*2V80bVi&VIg~oKI71j_T-O;ccWd2wuvNi}29v=QXgrw(!=xIbfwV|=@ zh&P~X`S6gCXJsx{m*X^CEmk$Y#-afmy8RPFbo+E>X=1a;wrcQ7e+UyNu{aN={fo+r z%S@LObN_%kp;IE~p?;jEbi(CX4#ee%n=*6yo<4CRwwp97RX6?#QZJG6Bi-@HGE3w1 znKQ{5I-~t;geX&I4~I=fyzqy3a2Fn|lfmTqDMEAyFMx^Czpul>@qtMCBS zg1)7b*gee}lgZ$OE$5aC9qH-{`2&vOmc_G<1MbU>M(qca<^xp}%G~otqqZj`)GPBH zxRu(kRa*-W$xcH}>9d;8=(8-AQ)+23YCov=-Yn=-u3};pn~{NiAz@)jfXgO_aOzN0 zD5iGTDU+{1B-rxW*PNKuMAE*hb;7apltjeD?R5Ly;$9o##%y|dvRuYx@i{r%R_%x) zQc)AagyiMuq1}yqUaLI`U3F4n?wgL^iE*mRWE1k43Q)pcG>P zE&~1u=e2B~^2+Sw3+H7L71fK?*O$I6+di8=lrb?8-jIwiB3LqOYO%SAHc4KsvZ>B= z901+PyuM-_wAw~L-VWbi>bBl#0k^58Yra+@gWFJa-+8hA9xF;*Q^=nbkA|ck6=q|6oSd91pD!Ae>axN+vA&HK zD3{TIvvrM)9W(rP=we5U)zbLDO82k~ogAA=iA-{&o33zDwaLFb{gMs&^wlms4&br= z9X-M&WmOiatRC}JG%l}g6R>C?1rlHtPKCS2)Z!(&ri&v5dG1zVPyPuRGl(GkVACjY z9*bxaHeOr@(22GE?nrq5%kXv0QrA!l)>laOlTucC9t-Oz%xCz1Z@H3;ire|!A5mU7 zfH&F0rF-`5Sy!j;vZaD{iS(xZ27z@~i0`mcToPWu7C8niyT-ymP|Rh@1BBnA+@9c! zo1Hy!9n)J$lWG|`Pt%@=EhxBl>*h`8VhQ9rk&lL`+UDl2WF@jxy&+F3>+wh`_bwfy z4g}j(5EjnhA*8>k?M>#9jRP5qkp;mVrDGHpJtaMpOd60x*wq&o~~WkI$4z2mA|=8bmp1+k}me zfj_L(08%V+`gG*6kEC@ zpir+f|ALAkhT_=qyC`88%2x-8I_?wdJ#eCpQ9LqG9^k*r-y0Fc?U&9)EDngi1-9J$ z>WzcE;(m!B2ojSHpSIUS;BXwkL4U|vVo+5kNrFw`NeH@&O!nxWe7;Te7tW}lzP_NNXvfe zvh2$3>(H$D;Uw$~_Osce&7Rr{lc5-C;HtjaKEo`HbJa~0sK??1RLrcx2XCUuQwJC_S_|SRAsOz~6j6OzwzaSjuLHGg2jk$ZnyVq$VMmH zHpxK~cz-SJ&ZTF@#?hTkkwd0KWu;UCE0%$j2g!CF0yNtwA>^7a)Nj~ZCjCSE8ITp- zO0FO;ErSN(PQK^Evmj9*kU68^=)sgo<7DL~3i1sbROB-Hvt;Fn-FZT{88pp5q9LnGrVS*8RnMa?!kU zCrGF!_O@RDhkcTeq%|m39GxUj!(-X6p&)eiga3~TVu^nngGm+mR1E~?T90q=fireH}k{L48;n6xrhLwKpND&XsCrUes()|Z32k8s{ zH>mA1cd~Qt*Ny|vZd>$BFcu%B7y(@Bt!kqrJAAgRK}JGUT_mJ3i(b`qjWTVWB74|M z>8cPTTvJF_F#HfEE3DV%f^`#{E1K@#6y=YDoii4wBw zQFP;ugg1ksta7uA30w5$NF~Wf2Gb*W-XKYy>gv5mH^eJTH0hB`hlY8vJ4^M~16&ub z8yXwqbhg(p?e9i57xh-Fe93zY^dAnoFSF@5d4dkA%@0!E3;#o5%^po(=SMK83Oo4f z{2^B)ZDkuZw*>GFPF!&suJBsTziP13*=IGG5T?7P`3H?e8$=`M#Qf{kERBtzx73ye zO8A7AO=_Oe=rSQ6g0-@t7HguQU_O7oV$vPUBW6rQB&>-*P1MjgUhK_Vx6EqCqgez6 zi@UYu<)6J|zY_=6g+C#1IoW5Ai>ux7ftb&FdufBE+l-u?%E2qplw&rR#_H+>5+vz7 z8W1K8YuC^7I+IVtNgyma@IbfIag;+TYQlblq7)+J@Mh56;0e_F`74y<JKpJwBm7qR{$4T6HN6xlCq>`in8`AogbT4&);;+5vNX7D zKb3Ax;c|oDnq?G90L`ERjl~f<za zQt$7IT)J@uHYB8WXz<<;kVvcMYgwU9G&Hidy*2K)3>VKWA(I@lBA~S;5UF+F-%)^1 z@gTU*LD~b}Q-6Os_>zpYwn5hK@^b;ilzYe<%)jzJJvVoQzX0+o)kBuyUy2o{Hw*+6sR7_u1<~Ccq>((uAfIel|I&4Db9}W%bgxCr3f|F1l5@?9 zTkpPkS=uN++eE7rtx6>C4!tpv?j2tAMxDf?JKcoLTi(Q=5#_F9TW02MPMqvGz?ssq9wO(sRF zLDM^9_HXVVp?q;4(%`qyXa0_}$gKPDIT1cRxst`QWKqIlx>Jr#Ge;3N9#BE6JIl>x zLuDRY!w<=3rVmU)YC8oZL%zud@w^%|{evFsIsr6- zYWe-Pe)LSh;^5)oRYh6lYR)brQ;-qSw~cL(mTFNDoy`~BoA=tsee)`b15A?QFwHA1 zw|jekt82eFO>Yl+1(qvU-l>WLwNaWjWRp@u>n0nVgXv)2)&PmsoL4I=7pTiM7v!<( zO|zt*Im*x37t~Z!vZy7)Ou8;N=HJiN4BZLzGO1c32Z%ApxxWM)fXUisTV6lYB#Uy` z=nakw--h#t2z^tl4O`Sy9bH>kp>IgOEC18Q#_b%I;+8*fO`g3Szf}3p1rkH z&%uuS1Q3LTPGskOlv^QG*z;0|M(gntl4t%jLItWGsoKXAd4K&kFjU!{vD+q3Gn?+} ziW(@sBxP!9DquZ~-L+?wLTcqTr76tw&`|V@8TyI-#O8Q(nEjmP1SOC@2y8%%PaX|M z*`{kVJwUXM{em=Z72?1ytN2<_fFup07hY{IR4GOz_T9~9uTEfoj1e5<;^LxN;+(~6-W>y+BXEt?d#?W%&vQ3R z!V$phMFe!|@keKW;*Z8x%;?l)n0MFh*?bzyYtA1^T$Z_k8$t#T zov>p4OSatmwI@N^?yaIXPPqNt)%Nu+H`C*XwF)m8`AbAufryxC>C;yYp3mm>C#53=5TgU;goJw2|*-;1}pK9T_dy{zy$E)=IW{ee)D>HK-Iwxn{5L^`|= z#SDrBg7Y25BfVN1`G(S%(M@c8#I-|1dR}KaZ(8)_w(Xbhy~&?G0G0T#%XfC%!SE*) z3<1dw3Vy_l`L;W>GOHl3yJh~_U8U%imvIIfNgoJsMXOUiRwza(LN5_UFE6io^g(ZL zTwrm-sx2?QGgB++#6@skxUNs71I0GEGRaDQ_DPvW)(v2iN^}`v%AKRKukB0LJ+G!_ zj}HGjc@L#c4nv6*pYMdYMk^|whsO>Go4W4&O}@JrD7>=p>gpfN4v>R4 z#Kl2Mz<8ZIemsWZvh0^rr!G6^{@xk*AgJ-b?P;TVNatHY4gH69(*a{pD4;`B(Gl=7 zaTkbc=0XfNUzuy?WW=SW&2!kLnx7cipcPTQ#!lTxDGVy|@cqE9Low$6SlmSoYeC03 zw)7~Co08*=ZO<6W`qMvnA8pt`%-p6jw(h5%D~L_|O_Hg(D58JtlY=@x{H$0dqs+!e zx|1y;=&-i`&!?>-6r6)1tyS8-Ni297u0PeoQK*u-Tk$S}lun96c^|6GGKyv}*rn>f z{q|q6Na$Z7NxBQDJ|xWIMPzfK(64?f?-Xr*YSDs)r7FZIhWQaV6uQzX?*07=aU)R$ zt4h^4U1XvtD)CUDj_xmv#s9WlMtCE$C!-x@Klb$zs}#FJ*CC-tKc79ZgptHr_cXuD ztLkmqLRZJ$r(PfX2XTNJFPTb}@_1`%SdsttGjQZQGIg@xA%P!^k57-Q_(j=>@O|m1 z)lByP-*b`p@o*3*vu2-uJK_868KUPoRFd#blx@$cxVpMNo#wObPi~47#DRV67zs(o ztE&bfk&!y)kRJ~DN8d)*AW1=37J*GouDoO&)vtE8$L z0!F#`!BRIffbUcNh1oq;z_G@BwQe!_;VuOtC-nn513qW6EeQvnF7?!;so^A^ol5}@c@k7UU3W=j(#DiV4&9b|pPd~V8JP}hYi|vh z^%6dQyaCdElYTll>h9gUhZN22Zb+l2X=rATtJ0?+h_T5d6zMoCLYJSSmU_)HQ(|Jo z9ukt}1?reclMxZIy71H5)u zyWR-7yayQn76`6Jk*KgRW3Ryk7_i6QM@{2tc2D4a0FotY<9`MQIUS4`p_p0t@&orn zmayB}M3dmWDpGI;-RAilz(^-8;8Ze~04m<>GG(WLmeV4_7{r*v*2$eXJ8s7=-+7}- zEd%c@_zvHIpCYAGcZ(ePtQ5&WT4*&|-W%2ff@wV26=v@h^#50@W9dSj1Vv$_(kE=w z1?d%CS0;W1tr`M9th>AgQP$Hn(a<`zffZq9^zh-sy&yPOYW%l@J#zA2hC4$~q=m%J z|GR3Z@!0G}GhhNR4?1it=p!CG2>(kNL`RP*t1G4sQ^ z)0HoLBtl%0U%!402?==%v^d0;oUrSPBI51S0ayIVQ>S?JKmKB9WCUV&H8>42NNI(V zLqbk-4Iv%xaN7^ibO#|S%V8@#wS!g)>9A?4;rv4;An9qa`=Md;@qneWbfs0M%2fhZ zl?SjGo5nk_A6RU)->x~uxH(GRtoC2Fyp3aEBEm9wj2>7%t*<)y6RhEG{RN0I50idQ zz^jaeTw_-Ggv7GzPP!T>a4h`%fSi!xKP>-v`oPAmXmdgg{`@a9F?q%T0UlbxmO)+1 zaQ3kLcvSX=TM?D>@qeDovBzq_>HG(qS)xSxQ=2-{sJr_@kA+_?C_irbPG~s5*81pQ z3|Rlkl#|F!z)i{Apl?uT3QgNLaSm>ttNV!+?N2i{!f1WldW(B5p_63C)FvtD)lzd= z@A|E>pPB>V#$gHHu~%({%xC%K$9-v+C3wiG|9)~1Q!Z-w*y+de4g!2&XWHzC^951t zVc5qjbNnh2XLfleNQpW4}V_zjr{I+(1;pIzK;&5lA~0){TKwJ?Obk99DojJB7RiTzZ^FB z@(5wcHcqOOOdZ(itE!fTe*1adM=9O`FDM;&L3M(4S7l!a{C^l)#V!+^x2R>VJbLH< zLR*D5;7|_Z{K;WE$51D{1u1QH#2Xhs zyrLc53@*nD26j(JJNvCoy&@{l{O_@S!M8mOt`&NzF1};T|N0NHq68mA1`;$vTtCQs8 zp1&#*{5cBM!}&w2`;NxPj?H-Goq3|~TuiHn24CMy8tW$EM*Y2!K69A%iYnsx+lTWG z9X?Em!*tlW(f#3`jGjg4-#^d9{AJJKedFvl=MA6})g2ibIYvyZ3h7WSL;KF4VeBD| zV#jn=3Yn*(L+;A~mA$|ir6Rxqcz9?=c#Im(K#C4i87t7dZ)`mM+BixH@+l-*Fzm^fcb0)Z1reb|)m7&n7#!HasI1M-eyB-82mAW}wv{ESLI$j|$ z;*19|g4X5R31DeVnm>1O9k*P|*mZr@&{uCb9r>mr;XLMeRubQ3v*03z+1s|HWN9v*L1wkZMJUDzjM z)db@hSzfC_^V^)kFJ8y2Fhgg-^T{O@M@z_QzsT2A_dmyDAdT%va`(mH@sI@h<^)=Fx!3#eDnx z96s~~DUE>YvyRvc{2p65pl1377#kXz!Z4@=?32OGIXepVPX$6sWM@H~3qIpA%p&mG zmR-R9-FE7?@yRHj6WG>(*dqrRXieg=HJKz}_uU_uF+;j+4OZ8M4}_sFU&2vCUY9kJ z;Z&7gvng)?7zmX;Db%Gp)|sNh;4?rZ1sfU(xg583%k47|X4H6Z{r_-=m7kGT_93OA zkKCRj9&RdKA4CjrP?HfB5`a>6GsKDvPz{)_jL1s6oj<*0uXNa%UqPs{aB*dK^T6$C zMH^JTSq46s_T*R?5`~tNK5fByK0fsiA3gxUQvyAW8{pWzQaF-V5Tbu(3rrNM`Ib6T z?h+4ZgE(ar6u{!Ek+t|cvsp~9dVX(jkLsFrjO+Rw0+f+6DedhkDjf+jl;F5ig1w{$ zd^kOSX;Wvqma$_`^4)$NacD=v8jV!M#IQh>BJR#RtS|3P(~Gn%h{9vLE1xWWOF$L85gEbP0N3NbC$@QlVcwd-%}p*WkZ}2#@J5=)mMQ z<2Tt)wM)U*yceD8%8WjF@?`saLm99$U1w2Cd#5Mfl);s8wP19Ps^}doD7Kk9q*sQc z^xMJ)tfsQPeGX7#Qqb=7hCe7wv__z`2@rWx;6a@$9H&JlBlB+PogeJzBG5eBLW&fS zu+;YVc5`7rL<+lgdXn%LHx*PvTW>b;mB&4CMA{$dT134Dm3PJf=J!0fz&y5Aly2Yt zt<*>DE7!4Kf;fqYh_bC{bZ0(lz`@v_OCJbtN=T$a55dpRzh+@*+;z6=Ouvm23GnYV zdmO$nTOh9o>7S|UlyXn}kPF?Pj$I>cAl*B>~}_1E$cxW(!49Zbcry^jQ+@fFkpGgP%bfTgZsqvu z_g90E@C7h64;V(bUm<#APd0M+_w(n^a12+yICySh3l@7ayIDj9Je{fu(&YbUy8~v= zLXYoXXuTm=={m`|Yl<>2S#7RSxx=US=37Nq^0b$Gd4X;z2U!ew*(=1QyK8;Ezx`%C zap%Su90HzSaIybj*DTCXdF3=nm~>Dp`sNG;31N?+dqRhVkF#Wyln5F07uZOE zNO$7+@w+)zLxUPw_inj_Jw7%JS^^)OuDS~upawD7p8#VoF^xcbH>^iiE}T~45^$Kh z54PBNFjH4gw8RIbrKQ;>Q>ll8<%}v=dS??pe|Fk)V}vjsYPSR|XaGnSXTeQ;6%<9^ z(m@EF04RhlCf)C1N9O0PxXn5nG{BJgbpFU#;{cDt*H1?c;7GRw2v7l29XM)GMI<1r z`Xl#%l)|{?s;v^LuB{!>W;WSc?znUo?Q(~BG&tixYFs$!DhA-?|3)tev-_{3yMKH3 z_1}O`T}NU7b!hOCu1na64Ptp#Rvtw79OOWl3m$bnjTvt30q&pt&LK*PQH>HR%^ahRII{{0y^&7Jzv2@mXW#!zdw z^t;HW21|>lbhH#ECnpgbiSW)B6E^4l{hs}M(ZNem6b;dtf?I1HjdE6M@|Mp)n29gl zUQ6}xA)OM9DF@aj6}AJWwM`*xqxdD8POA5z@U7K(j(yBt>e+K?$nU_V#tf$~pv4b? zJQa5<#dRT*%%pRMpY+$;!BJ5wAs;_}T&>XCPxWwHpMqna>gm0?Kwz0{zfqvz=!C71 z*%Vp)8I1qbylGuIDJp2y`zFH`4-B{F+n6s)9DVv!dUxU?!o&-o);aeK74!ZA78lJ;edVI z?qZ6{9nGTqPsLHM7pudM9Xaw&l=f9nj3gZmj*Mat*MLWV;ld5D`zpgJiWHA+(ivAc z%r*hNe@IW2ml6jk|0ya-?J?K!4|k-cz)bXvdt(SD!M5BPEAGR-?Nl}3iWA?s<~Z|e zZGH$Uh+AK!4?Uu2&GzPZ@eP?XuTkL>5L-L-MI%qBPgA@3 zxmMTUfMZG6(;3kpAr0h0TnSw|UGKVkB}k}EK|rsouUCOO?or~otLWpvW7Zi$A1M-< z0P%f0xNLvVE#YlR(*DlELqLu+oyNcsF)}8%^WdW*E+UIH(=pkG0Ow1jRBvIku_Q|b z-OrlnF^+nvv{HWMVmu3R6{? zTq^f(SPDeEOqAT?m4E>%k_ih*tY(&~p>gOou(eJBOja~)GJ_MmMPCK*VmQwuuQ#9V z3~dH!Fc`+0( zfVZu_WA!vqc3_9eg=0n=lQa}$t!C;NzoK; z^PS7TG71*k&l91Ti4g9=ursBN4yj!rJ)h?(DtnIjO?&e!!f)KTajuhuW{EP_azKKQ zr%>tx&%<2fX4-U}?CKHKlyFPT1u56rTy^rkU)9h%sbJ(6E!x?Qmk@nx6DXWoE)w)s z#AyZnpfM5BAJX;(oZ)}pFrNhECt@+F7Tqh@TBVCADbYrb${@#3zy|TEvKLZJTl+V! ziQ1>9I?6oUc30XIdP@wmF&(L6@7S4{r9sGd_4;sV?EZN28!w(*i#|1=keTc}K(GK- z1IxMHcQG*8SC2ehdo#g2?@+Eu&yCE|wIW&%`?SiUN1tw{>y_(j^nR>8r!ZN?>nv+UyV3 z?s^v+<+gXYbbC&=^y+9d;>_V5ZW4q?u$8WS^&>UgUY$-_S-FU01H^vKrj^@jmRXiq zzH8xMS%jE%Myq#qmdBgh0Ma05gr*=p!@utm(>f}TP-*b5K^&ax{jYx)NZpdZnQ`N;_x}UfA@iL8 literal 18548 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 diff --git a/src/napari_matplotlib/tests/scatter/baseline/test_scatter_3D.png b/src/napari_matplotlib/tests/scatter/baseline/test_scatter_3D.png index 27e7d6735c8be2f2b0ece1e7415667bd9045f045..3e648eec5deaaf7fb43b699ffaf184ef376d4979 100644 GIT binary patch literal 16831 zcmeHuXH-<#wr(M2MOqO93TO)=(N-i!MTG*%ISU8~NX{7(7@A;_Bumaw5GkV20)k|y zLNbymqEr!z^yWsp&pCbjoO9nD@5dYC9>>5+JFLCd4B!0bx1KA=Nm3o8JBUJ|sL)b3 zl~5?kb12jiC2Qbd^T68SftlesCu2K%Gixhu zE`F|GIL_U7aImo#ynNa6j{~@@?MyH8_o;5Kbm5f}F%lL)CK0$zQ& z6S>C7Ssh=zXcV8d+JgsKDe`eS2WT!zVP3p=ah#q$`=V^*{Tg4YP+pI7uU=)S=f?KBq{_uG zq0P+9LVsb0-`{-uN&G=bOiXrO-Y{PLLJ7rbZS04=*^W+#gmVGsamEdj=_~_XcAR3 z)mSfIZn3;TPLYk$sgqZEtHx)W}Ol&eie4IOL4nGJPbmlak)gQ7Y-^ zWPN#S%FfHHcJ$~`hTL?;5qz#LJz5?g-(M;cFyC(A&f>q+eYvM7YK4)-P2Z ziYH(2iS{EiGfjRJXbzrPx$pQw-OCamVx#xIuzIZs)i2KFG^IIdPax!)ruE9V^&%^-}iab2zXn&~`6! zzR#82KOra9{v?jPoRUCMz{}mkQLXXH*4M!L((8EEd0sqZ0@yn!Q+iBJ7;n97Zqba`M`5&+RV^}p89lCv}rs3iX|N7$HPma`d z-v`$kYT>8+Q!GIq;MYIRQ_iEOY+qGmLfI|g?kcqZZV)O*Q+w_YEHI6T^19`~0haxWVJ}f?b!>b#=6kET*)m4CC`*`f;~s ze-4v7k7ht4xY3c$8!050f4$%EF|1ov$v*etF}@jpKB58MY&} ztYTt=i8=4zYXo1ERdR88A1#+^Xk=7m`0=2T2x48{3S+zKV@2GFx!#*H>nrp43)35 zoeb5?knr${cV-?PDY7{uP9$QA_u%ew!Mb$aQtG&VMh3V%ziDjcM!49>uP4aYqX)&yE>IKPw_q7v{bv8CUir4*^E?&&Y%DThK%9@k^^{Zi1tcZ4ge*TMR z&+@Wa;95iS8GZiynWysW7=oERNnPp~FDg{s9M@K>1a-+Ya(7$Lw!afYmpk>(*;2)`Tu4mrWRcYcQ>l7Q zQW}OLN$`RX@@yWeM=6qe=5_+T&DQU+~)-Kzjgln`GZtcUGHs2LgM1)71aT_qJuB8 z3JdGVr7DB}YULX~&EIh^u{1l1d+kYRt#Y@boYFZ#k)_YvbfO;b2V5uUb-mWc8a{op z&6JgqQO?yXS5Z)SbDG=aKHN$D}nP(tZUo1H}*=%L5A1P6o zrpChcaozbwMILK*AM5I5Fuc|SSx`y+k$PxpX;}pYwPYi&wfRz=c`)l*R{dyK@_cXN zhZ_8S{9Fw!36IpG(Qn@=l1OtK{JNc3|LF7QO}i2sVko9?*-_f7{Jgk40||)ejXYuD z;iX!cjLd*XVrF3}t$pr{l5nw;Zg{g@>8$&QH{~%+@MGiW8{6N@^i*rPS9;6)T)a z#|S!Nhy;Aj%=7^m=4!C{QSn$WvRPxbYT;@4FC;W{3^I`*I!8;$ z4Z(+7OnFzmUH+80PU)9AWiz;r9;KoeR1tAscJM!W;sjRDIRR4ZU*#rTjxKv@$5e+= zORNY(?qIolF|zcxBqa$j^-e-i-Z5{wvG&oxM3)3GLiX%mET5U&87xh%sd#Pw8lKx~ z)Q11sQiN&CB#)w^Vx)-sJNY6OuNc+~7bF%J7c=xLD@0d^D3PdaQC__M_@1dLyRdLy zw$t|3rXGQ*#C&#gstJ?a81ib(H%VWP-)_p98Xm98s@L0ngX_ZElrRp?PWtTLXh-#2 ziln}R(V%sFjGeu=f|^>GIX-=aybv7|nhZIL#{zc;EJ0v|kzpr6CUJZ9%ZqI$L6)IC zdD3F6AyjWg>*oI?WqvYt0T8C}T-bY!zOAf+yy7pEnxj|wh}37_LijQfYcEp!D}82J znXqi6L*-UUeQj;citossJ9ktxH6xUilyrhW0McX+~p&OJF6bzr%UH6I^MR3CIU`eW1?qk1|V4Ix@6Mt zvDDO4WD(w5E{53l^~ZZlV&$WFWn+Y#)pT^CF~Py15fSMuaUM#rcG6N(HeLU+PVMum z_>j z_0e&kJ-4TGzk+nbOSiAjy-Te2-`5P|dOx&F_BFpEaqt{i zC3fi1UKSBO1qB5I8YDC+c&;56=fb8XS4hbSO)WYSaBNqv79@-#xcp7zH&&m+^t>wU z>Rw5%OXF-1FEJ{5R;=9I%F2wMH}z+`0HRKaMQx_sR3Y|V15h;?q`Q0;@(xI4DC zw&u93h!}fh1PZdzZ85D95)wQQR&7ehkyGD9F0uL?KP!@PVQtO4r!d`OrjBwS5f(pv zH2j$3{D6e_#t5Tj6cZfkGyNeI^(~iWD|sgCL2?-p!!$M7mMAU9kV(1kNZM_GI%(ZJ z@og_VUqOe-yM%i?W?(6*yT@WZTt8!}D@L~^{IY&ZoEI7WR?kIICY-B-Ib0_}z+UgI zMF3nLm2n_$SAD#MU*~&UBm5GiP(u6iEGtu`Gi%0~1;|7-43BXru zoA@?KfBwbR*h&4gjyS=RfPGNzrKQ!!p5B=kUXLEiWAvWsCpfjzPMp+BlZ_HpMWdf% z9cHHmV_z+n)6qNoA`^ouTbw#vpIzLa;!`CqLL8zbS8i{qLv4uvcv7DO&Bo5&0ab;A z>z!X?mUbqRYSm#c)6YNOurBA(AM{$!Mj{GSTloC12|xFHwuk_dFR~2YIaDN?*XKAb z?Npm2gCeAN+QHPox zv$_C!r8DTq z(uXD$LqkK+7$i1$u8oDet@Jxv##};%kkOJVa_;TcQW-L9CzbV}@ND(5AeYitPG>YD z=WAa?;?*1S!qj0YEv?ACy3XZLn4j|tZ#3YcvdmzlKKu7>7-r1M&p(+|M@=t0YOB99 zcK%oL6iipIDxKkbu;7*ju@P}Or`ZH{2Sel;GZ?|r>d#npLUBf%pXwkr@eN90ytdX% zEx#1pTImzf12U4%wMI&t zBcDU&h@S*N(thm6FMlkiyZByR_iR8!tjOFswIE9)&NB}2?scP4;l0IUoE|H>Jm!5G zfOJ$^V#|qjVq0x*@Py&`abj;oU@RL4M<=lH#KneCxAoaIw-J9=^MSIG0S}9c7<P6*u+GQ*oQp73b*N5aiHtHgw_}Hc`eB*l^fq) zR!8wD8@A{jR?|;hh*l zDY_@fg1n+`Yx|0h$2{pF<-QEl+yQfZPE5Z&!U8KatsWOgIta1lZc_z~TyNb)kx^t^ zfkp0L>4VE4A6F^j=ALk&B?B3{`bu&Mv88nuD($j8CHARIz?#c1O;mnV%|i~14uh-+ zyfg_fWTkFpl@rMq*t#<4omySJ3#|l`N8ECsXJ=uN9H|?${3FWk37UxWmP6R6&7QM7 z_glp&bEf8<$}Ea=dKNzI{hK|rYiRRYt9=bRZ~mnq`RozDy2XVBlZK|v_-dB#kzf&` z@yU~fM~CR5i7wZ#UwwSEznA?CCQ&Z-;wns9`!6T^7B1%#^jI0Yvzb<%(8V zY=p}}_$ri-@*=n))dfi@OnXNMFoZ9HaoM`X6^16r72jw{5=<3ns-&93uhf?`}hwA#qw`8PqGL#)27h zD){*3MFFP|yrQa}?>~pU{+W&b#|l56*@r(y&L6vG^3;#-ZK4RA;KSCCDiqJCY(q@5 z^Qv!qRd%6Z)HN>f_3K9FO*(O_3Rj1ZpOK&?UIfuVz+*Mf`CNj^ZHa&fpMb=u#q~&gSLMCOUSb- z_^%Zn5V>?oD&8Re?^4NBM`|E0N7G_O2aZ9h*o%7Z$#f5l?FkD@ai1&E#vdtDla1t6 z^rxd>aI^$$uy9}}T!=z^DIRpnB*Yb4efeq|4a72>zVK9@V)WrYhC+8_7Ev2M@)Swd zm0nIQh>Q9#E|}3EO$n6BZYZ7@ygeep_~%NkF}rr{BCd{f$o1AkmijijkImx|a##j+ zF2(3li)e7-Z7R($(z?ChNN0?kGm;p62AAl>l?HWP8YYk%HYF`}!Be{eTyb3ggrsSBruP2f{i1%^PuqxPE=b zCr<8 zHcfGd1nowj?bYefmv4zqXU~~TLzsAsuv&4ymmhg~*21uv;o!l82xG#2@nS9K6DY#v zp%vN#1@LrNCJWjP@(qvEj0UHEg$@)#m?S98kZvE+V|#Ldh6#P^)-B+?)qt)q1g1sX zogp{xjri31^8JMco}Qw0n?2jIh&`C*{+U%ovbh@>?owI|tA6~apU$D#I5|U^o<4m# zg(c+R&n%6{bnRxlAtm*Uj?XF!NX?SkZ{NNZLMy=ktUx>Mai*!-GuA4=91xp@=HJ&U zDJ#?d^wXQs(R+9eh%UDS8M6J)@UdOEQ1dPpu@fdsty0Mo+ZZsKyx)zy`}SjSl8zG5Y^P(|63Z{+7jnjRCZ@LYEa4GYTv{@*G$Q#CWp z(9p2ZvX>X%4J5|#)2F9SurZ|ruZr>7>8hwd_;|}zot$)M|d->mMa=Et7HKf+i6K1G^r zt4ZzAEp=jLV{0G@gHe%MfIwFPm>3cglGNF$g2r@Ag%AnJHu5Sv&GM|}dyaK01wS54 z?u_SBlKL+N&N?l3F1A zfzd!CBIh4^3U2d*m4g=FyBy`31r8BcuMP$g8xKfwZO$Sl*=@OQ9XM!w57&uFeu_PbxTL|1tfFf9EPF-;xju!(4iM*~-l$LTmmIzf_hoxEak=tB zBwl^H!givQROl`a!7q}}I!D5fI;Mj<;}TH+3`Pj72I?a7*|YsTX6-jIDwSTIq`7|W zrSYbYR~IC8itHzvRlU3_di^PBXlPW`)KZ}1h1amP%{OU@%?57p*3FyUxbLkR(OHU; z;o2x--`kcn)4*7B+u^59EmI-j|4<}HA?}P2hk$BwkzPJKyNq?^<~!}#LbHy}5_?mq zYgq*ZG@;OT`}T>2mXR^{$&=mcx**2zJ$yRhQ!ooVAD=orb$hgceMoFns5uxr5;!DswTdOfK#te+R!w({;+*zwryzG zVkcktEJ^pKk=>lVqPfibZ#M@8y`3HgbnQqG6Uan5o+uk(zzfsokkZLX!09TvRwDg8US&-kJ8(NR zW?A$chB)lk*p({(Xs%>Muju{4jXit!BE3USt}=y{0io*jehFEI%eA06@&%{XLD-5gABbM8oczlHsG{{+Z=LE#;IJODOL#3;T`5R z(G05qDy-0JQ!vmLjUD!VrS%rKc?vo1Y>Nd7O~=!4!3X(NRq~Ba90InH+wWi@sudaD zo1cG(2Y&CV|E03vKR^CcRmcC%>AMq3eGU?JDDVh8c%2c_s`vJ~zT;%;^$#CDm_tTp z@LDy1WbW2UFX$izU06VP`A|P*Gl;lNF13j9eUF;^R0Vw=^kY?X%aTbURc;06)^<7Sq656c$Y^9z1j~q{2FI zFSULmG`Q7=1`&s|vFf?qg)dziaZn`i+W9_-Rt;ox-+OPauLOZOz^yqJ)bF)E3;8ZRJv}EMk~WWJj|yJjyWAoRzzUt9L)w7%wkJTD-XAGO^{UTV0lS+3 z1KTO7h2ONcD&+EjBq5k-N2wqTZ8iXo&Y&UajhEQhl{UPEZ%bEZL5NoX$$xZ?4xbAY zC8vSrW3FO-E*J+L641p#-zNZ)FDpBHV>Unqj84%HV1gc+l9^G4@Cs2k&iwJCM@ZxZ zaE(A?>vB@qqeqYAwDdJJCf)j;+;b$xm4WTumlY=vviOOhC(`oeq08?`J7xqV`%vN z{Bw1-IzT&+eT?GPyYZQFS;1cYBeq#N3GQxh?@e7bzE^R6Dx4-jhun*lN_oA@gAA38 z^;zl6GKU-`3B0ELMM{)XP_BS%(j#YkYki*i(`Q|>)%Gdq^|1Mk61)<+;-sa1G?_=>34 zh6`e9kM~m9odJykcJGn1h}edTQB+6BX{Ob_MI`l#QEeJHP7W3vK-YCF6j-1Tr@21J zwsccs+iQU!Zz0xS2<#sCA-|c18(_yHEedUhZ)|QXwP3-Air_s0@ZGl7Ci zMx@o~HXdPm&Gzd}q?^L%y^-HjXlC>~l7LnVoBOd<-G7fA6ti1=VDV7=mH#^<@ZtX? zYEWSQ|27GCpfitTGblIklF&zz-2A^wj4OisestW=iZx0nDTC}ki`0rQS!umd9kt!@%P=KEiNdv4yD_G)V>Zad9= zWsW@awxtv6Xrb+nP)b_~4SRziqaoFHYF5NA29J7*t#cucC_H>vxurA}FXAo;2HyKEr|ge!11Xw|0H zCgSi3w_Z97dajs3dw#mF4m1@dl{xm6X0JTPi37!NU3; zq0azH0b9Ed(21xg8R%Q9NM6fGJ(uAe~MnglYp%%M8T>UgBAM%9a zp%WafJ`|KX?gBqlA;E0U7pehL5xzBER)?OQD%9_ukZs&R0syLo_^AyJ@=tj3jxe!R zLaX53^NP)7Z2(mWX9PP7@G!(I0C#Skl`8}8$aw%TxnTM<&}cNdcW^5ulE(tuMKA24 zK*J)}={{c$ZH*h7Q}W*Jh{QkFS-UuK;>zEI1HK+@8OTn95^ZHQN1v-efRZdMc?H(??6PU>~=xyO|`E+MyYE{)+q44WJ{vs^ zHwp9>gCl@7&{nW?78uLGewIww_TWayF8-DDTgjIKHT^=m2q|)n1<9%$n;j)y5!uMcg}$@7>b?Wmo}M$>=c) z5V+!iXhNzfjc{G32xJ$Hn)~+V3LKqpRHp?pTQ$fUoM@c3b-A&-e01rD$NRK_mBWE* z+N_+|E`#e#SI!12*Mivf4)oD;8Ah_Jfy^>t8lGfg{?^t?r8Zmy2jjMMobBnt+$)Fa z$Pt9cZ>X=&1HE7t=zz3A_+~EzPRGm6&)<#R_|}-M`PM{}T6Fad_|rX5=eiIVN%l|a zMHH`q?AjPzQ0srjv?)diKWjTwMWL>%s&jI8&{7qQg9D9&-6y(6P_y7b(qO3T*rgiE z&mH|7WYO$GLcIkXjXltmK~vUS7WbP7#K;kV=d<^RT~XB|lu{-pDXKt05(0$gZ2ZCK zwP9_GfE~1ginXVQW?~NX!i%eSiy@D&U%FI}s0=NBoUWSLtW-jue07i%O_F zOh_|dI-u{nwErAfO%YU5Sv7vtrL}r)Q_M0LL`;b9j_}9<^`j&B z4)vXA{oHK?4e z(FGOcY4&0)RKXpX(dDQ;LT=TfP-W+V24u*sIkF1saU;O@oup`<;W%8DrV;4zHT1pK zk|lR~T~PGimxVje@&M_m1_>jpEm5+x)?-u0KvG^M8m0&G7OC-arAwzum*WQpnDFoX zdpfZ6CH~ISooGx*SeV*@w~y$T=Ld5^4TRL6BO0*9Ylp61g2Ex)X|@NU+a>$+K@I-I zlcTX6sZqc=(1xKmZ=I1=axlmd-OvE^wgWMAfmM0Qm z{axG0FmLc(*f_GtK>k)z9T1!5l6c!6=?@=2do~M*h5H0tc8-y%qwY`Q&6JSVp*UPR zCB_>T8fxq&ori{skST_^3Hc!oaexe@zXpye8ADvh!t%^4L963FxB*i8GvS_8Vj-S` zmemM2aB0|k(CUcSO`V8!mpf)rtzQn(GV)yM{58jEmE1b{6$XawidFK?p!gBaeCWet z9@q(iKpMB1{JKJDZ6JO@yDMWFyPqg{F!3MuxCKlPce}e{SA@XWCLCcIx{W}#f*lDE za_CZ3pGt|c!u%GwpgvL;sBUPOP*6~SbYlQw-2q&K(V*EvwpFwbZY}f4MqIrG4Vh&v zd+f@>>Pm6~?&BBY&5u)nbp)N~X52(=hQygcS`U_rYz2c>n3^$uk10%-Txtg?Ds^N> zdYS0PzpO|8=CzLHnwfn5B0M-aacgru6V&?Bva+hMcMzE!ph}b=20D)T^O-Mx{RrJV zJmltknkOu(sYM`Dns?{L&y_7T2jimWM1;3I)6*Pnc|{Cz!Lg@$EOKEBTBeGc8ghGz zQQ@CXoER7EcPuk98Xg{ooq$nig_vCnR!R+Od~*hwo&Yfc-TyFS*G_b0?ja$!1VegJ z4-I&TE{Md1558P2t~AB%W@5c^MN#|RgEmmfXwrC@3|4p|dSOJ34B!O>{>iDSnV{51 zq!G}~CV?}>EsF>*R?Pu*J&w; zf$$Ti*r`|C=`-NZ{s98i`v}K^&(XDVWXVB>_Z7rPW>r2EJ*CdMpwP^MjRJvIb(%Cm zUfYq?!!>@$=)lmReTj$BAxQ^s1RE!i!?oT$NS9>v1a)59!NZ4%F4Qv8(%^05zuSD? zAozVE2yDBc6*isoQdwv7kgo@MDwP4Rz{SQ^pjBjU3?fRkuSg7WJUsvby$iZFR^ch@ z05BnJW@*0FF#;tqOZf?J09$=IAFU-J;6qln7^-@RWSXLTpD@9={EHiP;Iczk)RdGA zf!O;1SHVG3grgB0I2hz-8jx|mxd7N{Mwo@7`)xlHAZQdq0S`^yEKp`aEz&|FhwFQN z!QA82#dh*IU5sN#4C+->6yZu(SeOZ-l|rDIMHbu6d>cX@&9UIBgxsM9bwhSlmAFMy zBu}UaPxM36I8R)ppksz(uVt|&CX0|;Ie>iR0S6>NF#>XL95h#~H;1Xc^N^%Rh%k-K zM}lf5$WC#vgUKARZBi7!Z36Qrs7T%+0UF=`Y|v$ds#p-ozWw0fVN4dVZVb*y>5`Kf zz%wicIrAP8;>qiS+g5+1!nCwY5UfXo<+0PSSJdf3HIS8`q4cmT6>@~eC^T^97v1#5 z)VtegXd&1!s8xDxW+Ae3u*m${Kt}7QPo8Li-mVx(m8p!(7lcPByI4S!g%|I{&)${ybp5BKiRB_ z{Mam%TlTF0tJALu4XlDqQ|2QTdL1yy%W;&bRoWjw_hBefo3eF8SvRTs(`|?zLERay zd=I*f#IiCSNP(urNN^g~UxEhfD12C9pJ$aTVPRMz^6J?6kJ}~1WRh$vz?!iWzaaPF zj`dJtViJ6r-3P|D3>|&-&{lVR&nKoU%L1F1kHP4wvZn-|nZyzws z({_%gJ9@n3hzM+ow-{-zOF5WjFc&u1_H3E%^_dPp?LzTeZ(24S4?P|}8K!OBfhgZP z_Z%YrMzd{~xdwz9@iR9!=o~I1ZK~=UHBgWr8c-zEOZhW!s}=XzWdgl+Z7kjo^Z_iQ zn=`3#k@2~eTUv>?`?Ib?+MTjq^no z7H!o}$==)Zmys<|OjGOgmH24JeEU7I$ z+h05ZF#(p6CnR{&egFPL)GOp3dC|3-_ImEJz@E!PQp{N#k@%Q?4M5PWD_Acx8d}PW zQzR5>9_-GCjWbOxsIL2@nHko*-4n}k@%Boe&~@+C8ph+NPNh+YakRalWh8g<4Kam} z7jY1x#}A>lzAurn$-PS(@43&eub5_l^?{)lH%Hgl+>8TGhTRJT`mAc$@mb{x z@Krl_u2eo>y>>d2UZ@ZdC* zuGs2nouNPt*ub7;n*q1cw)70m%oM%XJThl^AG8jAc#ie{Hri1!_kvw;dg~K4payRo zcgyEaNyh9}fXO*l{n*p5c~C*Z^S0-|EFpii2tRM{W4*w#aOzlf Q8*(c8mfX#p8+RZ5ANrWmO8@`> literal 17321 zcmeHvXH-*J+jg)kf)$mH3W6Xo3P=s0NC`*}MEWQqLTJ(n)iw->qDWDCF98yf9@;2^ z3epLo7(hCK&;um2Zy$8#nWxS3z3W};`|+*khwG4>oqhJ%``&lCu4@~jr=!ktfa3rR z24g{JTr+^dcJjesJ8taT1HOs%eBc5uvhJ!k+zp-YxO?4nwSj5hba!!Zc6YG5#ph|` z>SpKcBq1g(cJTt=U3YgEH#u=}$3Gf~IlJ15_Z`?53_98GqG93&gB`jF{bR~j%CdvO zR8AnST|s)sQ^{W5kw%RAdEb2qzL4X`4yIg?Qr>|pYu|Mq5ovkh=bNI*29ZIM%+Ukb z+?mj-pyMc#5fk&7JiaRed^ZjwF^FAPO?G}hD9V5P9RK2)$|>$kzrlQT8~l_=qs7g# zwuuTq*?NsP%iCJU^-(>U!C+tqvyr_l&>#D_b{&SU^@o+A%PAEY6S(|*eYD*vIn}M) z9JAQ;TGJ#xH9r2VeS1;PFNZjBCDh(1PcbkCfrpu0m?DdW)C7yXqPvd2Jo!2v81 zaZFIBmEbX@Ss?{l{U*a{Rf|q&ijzjKzNzq-&A!dTqi`c)#9hu~&9M}Frztk}vcKAS zuYI8Ht2(yB%%WP_MtXYB_Z&Pm$j;2dVl+^_QFL!ujXF?MbG%|FX!Yf6&fqhgV7V?f|znS(rXtWev7?@!~~Yz3#Ifs%M8N^imn2uv@3II&uaF zpWhljeY)mpdA!c=ckthe_3qxyK5)RiuHFJSP=EER%9AE;r2upFa4vm~yT3YIUN{Z9 zXkaa^&=AYgIzq(exQ;G9IlAjGv#OffXQvji%QG%A{0M!0{kpMdJhG`L69aYjvT_Ms zCY5M&7CZN4j&Q1$zp{v%QPao>o_N9^b}XMxrbP` zI<&|r2VK|I*Hgxm0u7v;aHK0sO>vif#&p@Zj;8M1%Q_KiQ4#g>#WyK0Z#s!^QejmDON-qu!w z$m#v7@2i8vPren`skVjlg7FqR^cd_935ivtvT)0J>v>EOi9;<)s5^Hud157Viu$0% z3j>Qc-KNgl5!Y5674i0ltgNhkdwR$@rImQo((1}0v)>zCkd#EGMZA;}mMt$bgVs-z zn<@REJ(#3(;^Fd5KH-_R-ecm%#g8uW_3;??iY6bt^|wJ~6pNR&U1R@18hLk8erueG zxBH|Fo9~Y5H{yd@c2wpakg>t6_whlOu+u@%<)>d%CPtfIv&LGv{!*S7;j{~UCu3{Q zw7nk=GC?1MF8=*ysXe`PVD$RlCULo1a~*^7@Gl1igL?h#6l;o#t>WDPg6R8i?%<1fd0Y^KX!g?>CfL35+>tttG`?TjaTdc@8XEu|}R^jRV^)p5-qe0cKgq$d-ZU3+`ot zDc2d!?D&=JL{jJV&jua|J=K*j=XpUFU%gD&T!^VzHLtl@yGJ`gPSvij2 zzArKVoHj?&Jx7db>;sHKHM_yr25jg2}F}viyX9^$jA{$k3i*;OJMh%DMG2Q#T3sL=2lr zvP?>yn{z=JT&JFbuT3k_YOzN4r0ObuyT!342BlH_kC4?_Xe&+*=*!1gQ;uuLDb}{f zf+r{^3wfcG-@mUl$~P@8#5FcG5h+BaZ1r%S#AH4M+?QrR#NIR|xaZh9nAl?BlHaDV)+wYGkXXe}Nt@f`tz|2gnRAt7`4-Wnef`G6nyh$QD zIy#d$oCKIx*&D8wRN^PB_$;yeMd}gcYNdM!j~j- zGrd9I1pdeI(DT60_?}1F!|Ym<@ACw#9;xY4Q&USYq`sV@vZ@!z29r}hWeeepJ$*gr zJp>auJ#OW*N%@-;W1gNlV=Rn&yh2QI@C}<@e$}CP2y`WMUSIz;mMv;h>co*Fc}BUl z#Ggv&J|s~h>?k{XPQO3nhC#)>;rasy4z!o#n?*%Njpqqu z-QA09q<}vUQZ|@zx+a9!+Fa?2NKcUW(u^=LIDy_^49tir-u|T5LikpzK9Tt1Y-GHG z=Em9~J!8-4u`h}Fp48qPm0;FH4^guc9gPIw$y?_5!2F z`1_W5+(h-P(5eV=^DxSKmX%;eZz{D6C*_-E**RY)mN@nuKXD@S!w3GST(Sl?v%V(P zPP$W?UP~0;MufV$x^|``j*;OGuX;;olMPMu7t^hMd>S+cGC7?ro7LZdInm4fP@Ih` zcOzhLI=C6JFw5gPMlS^+Z*M!rNF#wG%EHs^+wsok(7%k3Khnv69dZ79^PfY;-zOOV zouU8X3`J>G+;=O!)5IZa5|Ik(0}*)eZ|4Z)eqnFI@P7PG}r$k8^HDHVhpf9pTb{nW-)1*X>g5NNU#Dc4~(sD@6F5 zuP0!W0yj-82<~m&1;g$h?LR;mDIl1Z7kb&WrpB9ePg!~Ha+B+;9WAoBbu}w0#wT@c3i@Ixw}DciODg@ z7$`JcW2HtZ*hh{vZ``O24xbCtO;WTtX@S(nS1GD~`}Qp&{Z;Qp%yLg4CD}K zfCy5<;79RBe!Cq_`Em|3jnp1e(z|lyendosf;A}QB961Mn>hI2My7LlR*-r%tfq9r zdUW%OQ_lexby!1_c2GlK{{`^>>!zGXkDiHZGIsEz_9oGm&799)yof-Vx7AC`xXTG3 z-km zrB)S7x8H-_4bhm!(br1lCCR^meh$bMbcKE&{XDz!I?L|B+l4(#4Y~M)4mS?TyUD@4 z0Utm-e$l_O+FcV^Q~#7RYwp*5@RfDu1M;JJb)RX=hSjmC2rkdyGg~e#&p&+<>Y?`3 zkrKRTKCeBwq2Cc>luHsib1P%W)Z2=?q2%Kyr*K*7B6#($WEi?<5gF#2}n2-Yy`8UOi3l9k8Ogg!Cf3>9PU`dM~s z?$aj?+DylIe3IAd+|8%F(#E^RVk~{EV_T#bL3UycD)ACWGR5O^dUCSzn(4mC3Z~4Tg_WxvLFrR!O2k*R>CZVd@QzEyhEGpLjiNROTry&F$akxF+&U0GW@@b;q>2QxE0gwwPmZ$G~1Sr zW>QE_n(la$NI_=v$jFAoiGbzT&_9wnwYRuxhX%+=Y3+^pySqS(#q`#IB2oRMAz zU(>6L7B2;rrpiwz_fd_Xa!5(eZ>|w*wqRPEyP>>elkR`^Jy@0;TfAj2!Q;vDY@awH z6lY;3YFZ?;TmTiQu({Fr2$j)>C?b}aVNawOlp=74p{I^|AsE zxe->!{z{Vw_mNLWK=NY-oNsX+0_uY8A$WziZ{J2LP%Le1Y;r8C7`;`#F~Epk@*CwE zYcDD#;KB6TO?Tgmz6=3p$$pEoYL5&pQI?j8{hKTDSd&7Klv9VL2FkT;{nwgGqa~p# zK6z+v>gXzSNYOb1e01bpK^K(YfGE-3W4T93oUq+2{>k{v)X@6(yjhrQ~X7h2+4czz01i? zJr0*ycrRWBL9Dn)AL@KGX+Zi+lrAF@&cdkF$wI^z zicxx3;yV&rK}nDw=TzN;wS<0*bO9r){AxbR1;$}te|UvE>#Y(73oi>XU__*WG`UeoM-({n~8hqH`|h`^Z4=tlV*sNNj6Mo<1}AYz1xGu$p*&zJfv+DLe_EKkQipRtDz9z-T3 zIcr0pEll`eO>aqLw z2z*5-+tmin_*Bc7eXyG_nHfg}!2@A%^Ja>Hp`nM*RG0BGR8=MKn43DFvB988`7U!& zzm^*wIdUX4BxL@J?Bb%7)4I2mBL~{#CDgC*FNJ%audn;T=^u_!y7J=)D--$-iWd~j zK}}JRE(j(J46&Tq>f9T^r76Bu0U^G9soV$j2%~EQ6dx=RGKh!kz9Uk`9ZCnRRp{h+8QMV``fI~+;e*8EhokPn0 zE|{lSc`sbXQ)s4zw$|l#E`U@f^w(com)Iq23VS;7&b)ZK2!1*nA01$WcnDg-gjs8F zL3tJx#w1IxD*LXy^Ks$$+E5&~sIRAIh%_jMVad1VMS{x6PDVLLF}-w^y@%K;#J3^1 z_y#oQbVIS`rQM1M0$-9Jsmh>kb%-B ztiy9WrW!>ZkAvpQbg)V<(i7pnIcSoTX%%BHm0XBYojC)=Y-(RI>V|h&6dam~Y(6mc zPNim-SCM$gya}N(8D?A+q z1T6ADe7IJ38GXkC4?2Z4$krT63I64m#Il7K+14MQ*^M@^nKFnd#^6I)%+|&V5^o7_ ziiLk{u-x9vZUK9rD`8EGvAFWg3ONsgW|FvRIRR{Nmy81G?G832Dw`UgNRru zw39~?)K(Z)vqNJ*(SO8!Ohi~1RN5=3TkS;qp0^pqDri92KZ7}}@?9~$We_1&F?}g_ z4f+-Y5jN%er@YP{yig}Qf~>r*#-xA!YF@QA6DS$*^#%*KYw%^~{tE~>*O6bxzPxTK z{Tce5j0iBg+cq}meLAZe8X63$FtlRd6)|r4Xh8(lI6rnQP|gaZ#2uh)xZrpK{6LvL zhJwAmH0m)5vSw;vO&Sz0^t1Ob+YU`vweE$m6er8(U3JO*NviJcHM7Ybmd$4_R`rzs*MZp zG-+Z5!95sTq!rUheVkJ#%E~`yrQa6?V5=y8Hn#F&uUX5Djn9HbcEf69?+)$g%Me4B zyuLVf7!%F|FLoYKgo25L?U(2L+VMYGez(F}^)NkPg@0$q@-wGWdEgj(`dgdcwVEo| zljTNPP8J^2UL%jGuHv`q+r#)^02pUqbpWPj?L@`CSFjq@ky0$uod` zOmDBF%rUSN2Rx^&1Q6`(?2Mr&;yM*GQ*0tynGl!@V~YTZ*r(Q%xA*oy(d4(?3nD>Z zJxJtnWKnjuhKY$uXjmB1#bwS%Y7g|dq4}wUpUUOjC!RZTN$O3J@P(-g;QJugh6vah zgi~oBwjF$gHJoq!j*Q2L!nQ|#>R$upKW=L6&;aSB)Kas&QI?K{NCULALRssCV+@2( zd3kSXV3O;zkx%(UEA+c$hAX0G_jCE#%G}#>+wt!v6#qcdeA3GAN@I+uA)uoQd`kO7 z(J|@u7LwviDOpW3LqUdRTCA>xM{P0IR zw#Ok>a`M|zX9$u~ zuKOktw7xVP{?-V~U)r~^W*tZU64iVea)o?@^n-l7EgK_Y;ZTo*elFW9{s+IaN|UOL zSR#83K;Uv@bcr^|QW6(W2i_i1dxR!!=Jgcb5rM3IrcF=@-( zVdEDTPDu~S@eIelOaLnb|7ySb>kCkdESiqHmM@LPNkqMsQI(Zd?@YHdWZ}JR?$}o> zVX%$k?h3GAGKr4G?&U4B+Ixscubqg>1%?OqW^qIW&KN+(P)dJVCD@dl%Wu~*1IHpi zXEKp2!AuKIjG6733K|ZIP$%ck)@=2o{{lA8{m-!Zdk`sRtJiQtLqn3Zr*;jWKeuHq zj^*eMR1=0mFE@Po()sJR+T+IzKT<3O5F3mYRL$l_RXwg|6GN7{o2pX$B%Dk>`MS~@#00o3}Fgl3`|I) zCdeEERp1_5+v3v_3xL1Qx7>ILO!V9S0}-8tC~>2Fj?4_L7)*V1MkWX=8awwKoC|vl zjM{l1pttN^+Vbpxv&nb(8rU8dnUe|tctpGENsDywhwL8`>GY41cI~y}>$OipL&1I;B=v$e_=!N6HQdCA=lDNUU`5kO0PGH9Vnld75XZDYP3wZOUSf9-*5QGSB6Nll8ONJQAq%Hr3XaCiR1Ln9}#pYr$wwoip z4|WVp@t+_0U@G$c^+xiTK8(6f0sssNaschP%d{}7E<&*wn#_0*;Qeq9%hFtJ_-gUx zOP44`Ztvc`BT%r-nAs|?QFl2u4i1WmvzJV0zE?MQXc(i)^7ie>>E-F6DIEoA3iJfV zTfo|@Uduz8GtcI#^emt1p`vI#n%_5#6P7_i%agIBQW>HIB(2M=}tQb*+C`8J6Y zoSeA;V}z@(LR z7X~m#H{CG=nTPwtTnaPeioodLyPb9Q0PZhxpkJ~$%AFr8B_7SMdhJ@ac3+7m0-A> z6S&3H(9ql--&07$S;*r#Pn7(Xbl~&Ccc$$Pn7fsp6IJW&PfQEP)TyBUim}=}S@)rH zSGZAtsaV*xpm z`R2_}z(L!Me0l+pxJ@pdEJNq!_#6Q(gUFXJ)6QwfPR!h_1;z8;vr@Wp(J@(JOOAwZ zW21h%ASl2_)BFh~Rz542qy93A_~y+b_8ST|>1UKxc=Bz}5-l`poVY7M9R}7&*~I85 z(+7O`&-pj#O+IW;njNGBa*KH2GCciP$X*R!)~QovlndX(Np5O&p{am_PqyUDdnXrK#8ltiGr^4hBXU-y=Z z8|I?$UFnEJc0lsO;koitN7Z)rW9!Frb+)4-29TAcSAEp3XP^pl9SyxT9O2&QSZYrv z^}9h&o>N!c3Bs_-lik~lRGA+5XyHY6BtQ`##`GJ&LZCnNj_%`wu7Air{%^9fzf9Tw zdlLv${(ql@OjkQ;mz2bfaiyh!txXgt`8!9(6U8srxYix0qIK0ozIc(s0g5->Sw({N zr^80L=?(Q3kTwCLsc2{lAC;7ZFDvsF2$H1EE+diAPb zb0BaAAcH*(ob%o3vU`;F^1^g#$3thK9vJwXw00lNI^=xe!A0`t?rH(yw`e8&lfw&DCQ+k}%cssvU2==WkKF z3sfK~O11`IHa54Xky}g~Rf-%Q8y+O!qeP^nh!Q0ZCRnlR)mxy>Ymxv3r#6%akA||j zmYe^fbvVce3YysEdL-F%jS5PurSfxdQSFG%RMmKrH!|OpFcP5^nHW7&Tw+o<22$NM z{8>dYOFEsN7=GPEe>-F52W)iZ#&X|*{VYUnX|i9hlxMI?gx{V>5O4v9lK7D|SmlL& zH3_ls7i>``2oqCj;fkHZ;Y#;gfw zE1yQ)ea7;!+iMTWDp)uqTLITKMCt{c&&KL7M?P?u@Qp7@k*{A*z81M~A+lo<3Dk2~ zqg<$#P)%6Pep&lX4`>WfqQSK(Wo4^MozEg`XM~m|xCIqm+1QMxO1FxVGsSa_@%lgv zSXVs9`qO{NSf=R%Bph<5#_ikbfC?F2VQj1|Yen$*cpDUyPft6raCkqg4=dM|?stC) z>Kx685+`!%>gvG5`vBnuB{5|nFvvE~&LI!N6jM{r;8lj>E;}1U2^&EaO$#9c_jj~V zP0cA__{op{Obb1rMCYyrt&fI^EPYYh)OYY(C~Uz39Ry+HnS5vZy<-T2;rge<|RqRh!CtPPYPN4C`DIVBh^F#nz(q z(XQh4HyMdO40fC8FM2c%qSWk5T_o~GcEt>#?@xJ&m!0&zls)|}RUFbzd4P7Ya+sOI z$4pU6``d9A705I-78-?UrZQXEF{Sokn~Km*xTGp#>?aBg?8Lo$nmkc?;G$-q=zc+5 zmwmF&y|$^5z7GP48Y0V15T(3yP*P!zIPA@v<3?#$cRde%1O=|3w^;ri8s(KoPJ@O) z3nBjvX8%qT`MV(TzccjzYKDYkJa>-Ux4nOi8GD`O-`r$1X9dL4n5X&X1y`M`XyP`v zZ)dAD#Zo#d!e>rhx)vqkyVd6A>I$JJ`Kt`{==ivZn3(0~H1%Ac#j(18XKdef3wkp< zJ|VmY;MXsD+^Vbx9B?Ji?{U*2fIiA0?-cLpFo5&wrUgFJZ@BKmH>VA5R>J2$5COO1f9()wL6xaT==BH60uU)f35eKtG*#e@{EUV1xD zxdxE;{*9JE$%*0?X@q+Xz{&ovO3t$DUu<_%`k*WT>+uqhVw$T%kzu!iXMNBc2jyj!hk(lTKMbc1iO(oeorMA92@?5N{YIIA%&xOBB9sY%s5C}FRA^F{Gdq!?=u`_-| ze}$qnTbZ`T>#h7hkE-KAD>)D(U-$7Nx+#{JSn#}64-wI5q%c@!F7`Na-;Rjmpm>+q zR~|3cQfc%%wP=}$pwHj67EOhaZ;d$iPg;wXt!mE<4&^gv&k`$i zlaA)lrnUl%0GSOBkNY>FlGIC^>dMK^{xsFPn%NYG1f(4ZT6x)j4w9?!TM)Vs6!G)Q zeB&%|{lsd=IA*Nb3~LH6kn?nRdkqBSI`)-d{ezbi3jn*93*OlDr@;Fp6s~EOF%F|pL0zunp%|>L2G?@2qMxo2@HEE_e=VckPC71H*0@M^Z<|QT&Ru4 zj7{1`7D%WN(MVFIuA;vF%@hF3IsH)Kz8~|fAZL(2l)t)YO{iX5HnX{NM_5V83LMcO zytP&*`;1!J zsNb?GV%Kw5uRZ*S^DGN9i_DbS-6^Gdu%l}`>Iwu0nb&qyM|M^71%cK1Cm-5CCe0bU z18r?Yx*E$_&GKWBQb3aviq^0ChvOK{wpQ_e;g|*Z6rC?9@*+^%^p@DAjrih(sK$Er zd8XU}@4R?a>;80rL+rNI@iO!A4L3SR|D`cdcgtZ$eg!8~ZWqq)hX~+EZYQr7<~lKF zutp-DhZMl!4rqXw;r%CBp2oGo&bi zw7ftol-1oE7Iv_TK@sVF6Hq0L!sR{VmKXL}Iz`Mg=|EcmE!Lfu#0(%}fs$3g-Fi$p zmQKc^37k10%!M|Mcl@g-+%|wb1giLnSQM%;T2#uR+ht=?H*mqUF>&8PC<`-l-q7kR zaqM6URx!dN^=p4&@n{^Zp2b4 zUL`I?zZ=dq8_}t0X~ZJCyns!*VA9kN?FhiO(W}26k&E`a4jrjkrpik$Hc7Jq_S{6? zn&Dox(qBO#)zknqy$F$mo{L9z)dTN}Z73s`Hi31}$4>k`Vcsf)LDJDbS6{N)?A@C!gz<8Es0yon@ z#c(1{OINGI-&!pf>{CdI`1Wm~r0uc;wWk6lUOAUaG7TI+-OxWKfF4Y~68hxHA_qWU z62}J`N2^`ZIvsn9K9h5Xqh?kH0tY0blagku@3ktg0MuWzKq8(wt7EdHj|w<0YX4iG z!V1HWB4lQzwY+Y^cw*eN&h?40<}Y8C!Zzk=56$RsZe zPBmoz#wO|QZ>F|*d^_QH+~4|kX8V#$H$C2vzCM~CCU30K+<4)bPKlDAH~qY_o}maR z|E((9Y4iT=w;le-8|dyu@y_s_Y{xg3;S^?=n}Z^mKm`F23rsurc-LQ5Q6ZK(D>;5G z(_dSe6|b8a!~--Oq%OeQE!Z@678nWw)Ur>atHjZah~E+vwIG0}-KrzWf!DxQY+_no zHQnhbCRt?V1w6({Uxx`pva!Afm0uTdW-<|#9k|%W`tUz#w8DOu(LaMI;(3=K* z?&vL6LifD2;cy%1zU2n+Uq}H!n`l!3TF=D!#41dVJ@F?zsdZq5&A9WC)Pk#<$NK90 zt>IA*tHa6-K|h3*Q>xMFWvku@0}KXZSG1e?wyo_HK;-S)QdJAeS65{+vNC*lva&Kj zXIQAvSs|2pLqYT=cWGb#!@aE8YBWj&n05+KazY%(W~mom@s)&nZuOQW&{L`%^*y5p zhyY4PjHLkp>wu8_<*miOQfCwpy2K_eaQvb5tf>*(tj51dJ*U|(p{tZOL&obH+^`?){TctWl%H$HX9h z4=s(>Xi>8w+ZCtfYe79A?>%wh6@+kqb}AK-kT87x`n9X9g$j_! zgud(LZE5{^YkR-YQpH1zfwUONMH;Cfl1DNDvJJ|iUESQOzVj^Vb$YqRqEPZ-R_Y{r zxzuOz1fE2&bC7`Qk+WxO(PWUg32ao0LpC$)E=L>Oxq@yvs|;VS(es@#8{pIC;ur ze#QSWo7BxJpxjLYxF8a!V7{B4GJqq%wzJ<{rzc(nGBl912`g4-fRLnBARh^iJsn-5 zN)LGZOOb(&q{z0#Nr0apQ!nQ=lh+U>f(8YTcRj!cfeJ+zbZL;Q%Uv^ii_uv?)e+U_ z|L*kCrDU7NXibglolADkfH{5$bfmZwft%%*BqV69>4*$6PxHI4;Y!BMZCov-ihdxv z0{$q1pM^_C14!ox)aAaYSOU^oO%UCh%n6Bwn__9z5M2(=2YK6DxPBIZV!I@|YfaA5 z+x(vBP!aIgrln2^o3qa0zRia<-lm@u`#OcM%8U|0fiyYSoqzmSK)U!gtxU8TMo8g# zeN!D`6@1=84%cL=3(IDt^=v1rf5Gh#fGlNF$R%Lh#;!xh8{*@+Ao-)$Ah*t!@FahsLv^}Qf*hqaMJ0MG@4mD- zJ}U{+u#mJ9w#xG3JQFxk0WX{o=@SQNjRV#Ct@?(7@l0U1%N2g`~{{8x+ z4eN@mu%@7Sk_LJSm6I6gH7j?JD&<=h|eas9U?1EO$(wD|Yqjs2~1O>o> z>0tM{!7GhhUtoG|P`Yo^wFO^(1!@4buu63RMQ12(PMpXT@O`Bgb}9!Ts_^BBG{$nD^E#sk5@!M+@gaoew_%`sm%}V&Z~FDv z^hQUIky>Vyehw1!(`Zi;N9ThBdepws+4#+aFqrfAu4oj}3dX$D2@a|X#M-66LrfPv zD64)m(gS{JUYi@v8w*+lNM^7eo-%YDIMym2EB7`~)PdbrlXwU=_Y_#75b3JQ)hAE$ z%_@u!!B>NT&cJk7@H#ksnGO|0s>~-TPsF2Fjie_et(vAhE5x&{VEf#`$u8yB#a=Bu zM0zdTv#kwhd??Ub$Y(CICzU$%TzdTI(L~)zD+7=}*!ls?ESh!zHh0K&du;`izR)o1 z^B;M&BIMl57Q$L`k0TMF%m;-)V!@X$*Yj`8dwiDO50er6{*E93V&?Ae?W|Vub?hzE z2ger)W3e-#PoKhv7v(&sv%!DY&<0Xv_a-T_2QVZ5h0o^1e3WiqAiYj+1qQQ%&L|5N zCVDT-9$?+yRV3ZtS_&WsPN!4Z;OwE?)FQ4d^(jy6(i<-D{}2G8y)DKnAjNm490kPW y7h9!ZgV!CLbUL8g^QT9Dc?9`i60xtg_RhU28G0=+&IfvcAyjp);jaGt;Qs*M^yzH? diff --git a/src/napari_matplotlib/tests/test_theme.py b/src/napari_matplotlib/tests/test_theme.py index 2a340c89..1042d3f3 100644 --- a/src/napari_matplotlib/tests/test_theme.py +++ b/src/napari_matplotlib/tests/test_theme.py @@ -187,6 +187,6 @@ def test_custom_stylesheet(make_napari_viewer, image_data): assert widget.figure.patch.get_facecolor() == to_rgba("#fdf6e3") for gridline in ax.get_xgridlines() + ax.get_ygridlines(): assert gridline.get_visible() is True - assert gridline.get_color() == "#fdf6e3" + assert gridline.get_color() == "#b0b0b0" finally: os.remove(style_sheet_path) From f253247e89ba1cf64fc1a92fe2f8d9c37c7d9cd1 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sun, 22 Oct 2023 13:54:56 +0100 Subject: [PATCH 075/216] Make mypy happy --- src/napari_matplotlib/base.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/napari_matplotlib/base.py b/src/napari_matplotlib/base.py index d8f0849f..0ff5e389 100644 --- a/src/napari_matplotlib/base.py +++ b/src/napari_matplotlib/base.py @@ -5,8 +5,8 @@ import matplotlib import matplotlib.style as mplstyle import napari -from matplotlib.backends.backend_qtagg import ( - FigureCanvas, +from matplotlib.backends.backend_qtagg import ( # type: ignore[attr-defined] + FigureCanvasQTAgg, NavigationToolbar2QT, ) from matplotlib.figure import Figure @@ -49,12 +49,10 @@ def __init__( # Sets figure.* style with mplstyle.context(self.mpl_style_sheet_path): - self.canvas = FigureCanvas() + self.canvas = FigureCanvasQTAgg() # type: ignore[no-untyped-call] self.canvas.figure.set_layout_engine("constrained") - self.toolbar = NapariNavigationToolbar( - self.canvas, parent=self - ) # type: ignore[no-untyped-call] + self.toolbar = NapariNavigationToolbar(self.canvas, parent=self) self._replace_toolbar_icons() # callback to update when napari theme changed # TODO: this isn't working completely (see issue #140) @@ -260,7 +258,7 @@ def _draw(self) -> None: isinstance(layer, self.input_layer_types) for layer in self.layers ): self.draw() - self.canvas.draw() + self.canvas.draw() # type: ignore[no-untyped-call] def clear(self) -> None: """ @@ -309,8 +307,8 @@ def clear(self) -> None: class NapariNavigationToolbar(NavigationToolbar2QT): """Custom Toolbar style for Napari.""" - def __init__(self, *args, **kwargs): # type: ignore[no-untyped-def] - super().__init__(*args, **kwargs) + def __init__(self, *args, **kwargs) -> None: # type: ignore[no-untyped-def] + super().__init__(*args, **kwargs) # type: ignore[no-untyped-call] self.setIconSize( from_napari_css_get_size_of( "QtViewerPushButton", fallback=(28, 28) @@ -319,7 +317,7 @@ def __init__(self, *args, **kwargs): # type: ignore[no-untyped-def] def _update_buttons_checked(self) -> None: """Update toggle tool icons when selected/unselected.""" - super()._update_buttons_checked() + super()._update_buttons_checked() # type: ignore[no-untyped-call] icon_dir = self.parentWidget()._get_path_to_icon() # changes pan/zoom icons depending on state (checked or not) From f71a9ad9ced776edf9216eb42697adb8c1c8dfc7 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Mon, 23 Oct 2023 11:06:43 +0100 Subject: [PATCH 076/216] Clean tox file --- tox.ini | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tox.ini b/tox.ini index 0125d792..4ec0c702 100644 --- a/tox.ini +++ b/tox.ini @@ -10,10 +10,5 @@ python = [testenv] extras = testing -allowlist_externals = - cp - ls commands = - cp -R {toxinidir}/src/napari_matplotlib/tests/baseline {envdir}/baseline - ls {toxinidir}/src/napari_matplotlib/tests/baseline python -m pytest --mpl --mpl-generate-summary=html --mpl-results-path={toxinidir}/reports -v --color=yes --cov=napari_matplotlib --cov-report=xml From 851281198d3e53c14e1424ba0d8d3fdaa44ef2db Mon Sep 17 00:00:00 2001 From: David Stansby Date: Mon, 23 Oct 2023 11:16:30 +0100 Subject: [PATCH 077/216] pin pydantic in doc build --- setup.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.cfg b/setup.cfg index 6489abde..f308412c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -49,6 +49,7 @@ napari.manifest = docs = napari[all]==0.4.17 numpydoc + pydantic<2 pydata-sphinx-theme qtgallery sphinx From da5e304b2b493908b373b6e8e7a0b981b72c8e73 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Mon, 23 Oct 2023 11:24:33 +0100 Subject: [PATCH 078/216] Remove old test figure --- baseline/test_feature_histogram2.png | Bin 12860 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 baseline/test_feature_histogram2.png diff --git a/baseline/test_feature_histogram2.png b/baseline/test_feature_histogram2.png deleted file mode 100644 index b7bb19e039d73adfd05f0d3860a5a1c4d0711f72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12860 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 Date: Mon, 23 Oct 2023 17:39:23 +0000 Subject: [PATCH 079/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black: 23.9.1 → 23.10.0](https://github.com/psf/black/compare/23.9.1...23.10.0) - [github.com/pre-commit/mirrors-mypy: v1.6.0 → v1.6.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.6.0...v1.6.1) - [github.com/astral-sh/ruff-pre-commit: v0.0.292 → v0.1.1](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.292...v0.1.1) --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7bfb2d24..685d9bc6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/psf/black - rev: 23.9.1 + rev: 23.10.0 hooks: - id: black @@ -17,14 +17,14 @@ repos: - id: napari-plugin-checks - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.6.0 + rev: v1.6.1 hooks: - id: mypy additional_dependencies: [numpy, matplotlib] - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.0.292' + rev: 'v0.1.1' hooks: - id: ruff From ec6c7d5b7568fdaf86f516f16a9c76c29f10485c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 30 Oct 2023 17:34:27 +0000 Subject: [PATCH 080/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black: 23.10.0 → 23.10.1](https://github.com/psf/black/compare/23.10.0...23.10.1) - [github.com/astral-sh/ruff-pre-commit: v0.1.1 → v0.1.3](https://github.com/astral-sh/ruff-pre-commit/compare/v0.1.1...v0.1.3) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 685d9bc6..8483e70c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/psf/black - rev: 23.10.0 + rev: 23.10.1 hooks: - id: black @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.1.1' + rev: 'v0.1.3' hooks: - id: ruff From 6d37c7826d137d9907f3c3f8487342786a0a256b Mon Sep 17 00:00:00 2001 From: David Stansby Date: Thu, 2 Nov 2023 15:15:51 +0000 Subject: [PATCH 081/216] Update test figures --- baseline/test_feature_histogram2.png | Bin 12860 -> 0 bytes baseline/test_feature_histogram_points.png | Bin 11524 -> 0 bytes baseline/test_feature_histogram_vectors.png | Bin 11153 -> 0 bytes .../test_feature_histogram_points.png | Bin 11479 -> 16815 bytes .../test_feature_histogram_vectors.png | Bin 10886 -> 16178 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 baseline/test_feature_histogram2.png delete mode 100644 baseline/test_feature_histogram_points.png delete mode 100644 baseline/test_feature_histogram_vectors.png diff --git a/baseline/test_feature_histogram2.png b/baseline/test_feature_histogram2.png deleted file mode 100644 index b7bb19e039d73adfd05f0d3860a5a1c4d0711f72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12860 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 diff --git a/baseline/test_feature_histogram_vectors.png b/baseline/test_feature_histogram_vectors.png deleted file mode 100644 index 8048ac91e4d3dd57056d61f19df6d96529b5f551..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11153 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 diff --git a/src/napari_matplotlib/tests/baseline/test_feature_histogram_points.png b/src/napari_matplotlib/tests/baseline/test_feature_histogram_points.png index 49e618be0f47332188ab6762015866aa06b4f109..b98a0170991a1da25b9ebf04ec259372e2aaf68d 100644 GIT binary patch literal 16815 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 Rz!&IIEp^1r;v4s#{(tuwn&$uj literal 11479 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 z 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 Date: Thu, 2 Nov 2023 15:47:03 +0000 Subject: [PATCH 082/216] Fix type checking --- src/napari_matplotlib/histogram.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 09f7c3dd..f78a8503 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -1,8 +1,9 @@ -from typing import Any, Optional +from typing import Any, Optional, cast import napari import numpy as np import numpy.typing as npt +from matplotlib.container import BarContainer from qtpy.QtWidgets import QComboBox, QLabel, QVBoxLayout, QWidget from .base import SingleAxesWidget @@ -185,6 +186,7 @@ def draw(self) -> None: _, bins, patches = self.axes.hist( data, bins=50, edgecolor="white", linewidth=0.3 ) + patches = cast(BarContainer, patches) # recolor the histogram plot if colormap is not None: From ac64cdee5d37e306feb38f0d76ec19ae573c48e3 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Thu, 2 Nov 2023 16:00:55 +0000 Subject: [PATCH 083/216] Add changelog for version 1.2.0 --- docs/changelog.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 6f77e0c3..45952311 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,5 +1,13 @@ Changelog ========= +1.2.0 +----- +Changes +~~~~~~~ +- Dropped support for Python 3.8, and added support for Python 3.11. +- Histogram plots of points and vector layers are now coloured with their napari colourmap. +- Added support for Matplotlib 3.8 + 1.1.0 ----- Additions From d17753c8aa7f30f7b97b7d7b7e6851b9e83d226d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 6 Nov 2023 17:32:14 +0000 Subject: [PATCH 084/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.1.3 → v0.1.4](https://github.com/astral-sh/ruff-pre-commit/compare/v0.1.3...v0.1.4) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8483e70c..3e5b719e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.1.3' + rev: 'v0.1.4' hooks: - id: ruff From 8dd32cb5a6682e494098c4b4276cf58cb3ff7918 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 17:40:53 +0000 Subject: [PATCH 085/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black: 23.10.1 → 23.11.0](https://github.com/psf/black/compare/23.10.1...23.11.0) - [github.com/pre-commit/mirrors-mypy: v1.6.1 → v1.7.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.6.1...v1.7.0) - [github.com/astral-sh/ruff-pre-commit: v0.1.4 → v0.1.5](https://github.com/astral-sh/ruff-pre-commit/compare/v0.1.4...v0.1.5) --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3e5b719e..7b568619 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/psf/black - rev: 23.10.1 + rev: 23.11.0 hooks: - id: black @@ -17,14 +17,14 @@ repos: - id: napari-plugin-checks - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.6.1 + rev: v1.7.0 hooks: - id: mypy additional_dependencies: [numpy, matplotlib] - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.1.4' + rev: 'v0.1.5' hooks: - id: ruff From 1ae17a55d3ef52efc38a71a3bcfc83bcbe5c07e7 Mon Sep 17 00:00:00 2001 From: "Patrick J. Roddy" Date: Fri, 17 Nov 2023 16:18:04 +0000 Subject: [PATCH 086/216] Enable `strict` and subtract options If you weren't aware this achieves the same effect, and a bit easier to keep up-to-date https://mypy.readthedocs.io/en/stable/existing_code.html#introduce-stricter-options --- pyproject.toml | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 705b4655..dea0fd6a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,19 +47,8 @@ convention = "numpy" [tool.mypy] python_version = "3.9" # Block below are checks that form part of mypy 'strict' mode -warn_unused_configs = true -warn_redundant_casts = true -warn_unused_ignores = true -strict_equality = true -strict_concatenate = true -check_untyped_defs = true +strict = true disallow_subclassing_any = false # TODO: fix -disallow_untyped_decorators = true -disallow_any_generics = true -disallow_untyped_calls = true -disallow_incomplete_defs = true -disallow_untyped_defs = true -no_implicit_reexport = true warn_return_any = false # TODO: fix ignore_missing_imports = true From e6063afb16948e92caa0f4d5a9c75c5ac5d97c11 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 17:31:11 +0000 Subject: [PATCH 087/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.1.5 → v0.1.6](https://github.com/astral-sh/ruff-pre-commit/compare/v0.1.5...v0.1.6) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7b568619..01f884c7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.1.5' + rev: 'v0.1.6' hooks: - id: ruff From 568cbcb715088de641b2b988094ac2ca1bfa53fe Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 27 Nov 2023 17:30:26 +0000 Subject: [PATCH 088/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-mypy: v1.7.0 → v1.7.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.7.0...v1.7.1) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 01f884c7..874c89fc 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,7 +17,7 @@ repos: - id: napari-plugin-checks - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.7.0 + rev: v1.7.1 hooks: - id: mypy additional_dependencies: [numpy, matplotlib] From af9e17bcd71357bd58e9b4e261ef8412a1e4e426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20Nauroth-Kre=C3=9F?= Date: Thu, 30 Nov 2023 10:21:22 +0100 Subject: [PATCH 089/216] set mpl style parameters from napari theme --- src/napari_matplotlib/base.py | 49 +++++++++++++++++++---------------- src/napari_matplotlib/util.py | 29 ++++++++++++++++++++- 2 files changed, 54 insertions(+), 24 deletions(-) diff --git a/src/napari_matplotlib/base.py b/src/napari_matplotlib/base.py index 0ff5e389..262d96a1 100644 --- a/src/napari_matplotlib/base.py +++ b/src/napari_matplotlib/base.py @@ -5,6 +5,7 @@ import matplotlib import matplotlib.style as mplstyle import napari +from napari.utils.theme import get_theme from matplotlib.backends.backend_qtagg import ( # type: ignore[attr-defined] FigureCanvasQTAgg, NavigationToolbar2QT, @@ -13,7 +14,7 @@ from qtpy.QtGui import QIcon from qtpy.QtWidgets import QLabel, QVBoxLayout, QWidget -from .util import Interval, from_napari_css_get_size_of +from .util import Interval, from_napari_css_get_size_of, style_sheet_from_theme __all__ = ["BaseNapariMPLWidget", "NapariMPLWidget", "SingleAxesWidget"] @@ -45,10 +46,11 @@ def __init__( ): super().__init__(parent=parent) self.viewer = napari_viewer - self._mpl_style_sheet_path: Optional[Path] = None + #self._mpl_style_sheet_path: Optional[Path] = None + self.napari_theme_style_sheet = style_sheet_from_theme(get_theme(napari_viewer.theme, as_dict=False)) # Sets figure.* style - with mplstyle.context(self.mpl_style_sheet_path): + with mplstyle.context(self.napari_theme_style_sheet): self.canvas = FigureCanvasQTAgg() # type: ignore[no-untyped-call] self.canvas.figure.set_layout_engine("constrained") @@ -68,23 +70,23 @@ def figure(self) -> Figure: """Matplotlib figure.""" return self.canvas.figure - @property - def mpl_style_sheet_path(self) -> Path: - """ - Path to the set Matplotlib style sheet. - """ - if self._mpl_style_sheet_path is not None: - return self._mpl_style_sheet_path - elif (_CUSTOM_STYLE_PATH).exists(): - return _CUSTOM_STYLE_PATH - elif self._napari_theme_has_light_bg(): - return Path(__file__).parent / "styles" / "light.mplstyle" - else: - return Path(__file__).parent / "styles" / "dark.mplstyle" - - @mpl_style_sheet_path.setter - def mpl_style_sheet_path(self, path: Path) -> None: - self._mpl_style_sheet_path = Path(path) + #@property + #def mpl_style_sheet_path(self) -> Path: + # """ + # Path to the set Matplotlib style sheet. + # """ + # if self._mpl_style_sheet_path is not None: + # return self._mpl_style_sheet_path + # elif (_CUSTOM_STYLE_PATH).exists(): + # return _CUSTOM_STYLE_PATH + # elif self._napari_theme_has_light_bg(): + # return Path(__file__).parent / "styles" / "light.mplstyle" + # else: + # return Path(__file__).parent / "styles" / "dark.mplstyle" + + #@mpl_style_sheet_path.setter + #def mpl_style_sheet_path(self, path: Path) -> None: + # self._mpl_style_sheet_path = Path(path) def add_single_axes(self) -> None: """ @@ -94,13 +96,14 @@ def add_single_axes(self) -> None: """ # Sets axes.* style. # Does not set any text styling set by axes.* keys - with mplstyle.context(self.mpl_style_sheet_path): + with mplstyle.context(self.napari_theme_style_sheet): self.axes = self.figure.add_subplot() def _on_napari_theme_changed(self) -> None: """ Called when the napari theme is changed. """ + self.napari_theme_style_sheet = style_sheet_from_theme(get_theme(self.napari_viewer.theme, as_dict=False)) self._replace_toolbar_icons() def _napari_theme_has_light_bg(self) -> bool: @@ -252,7 +255,7 @@ def _draw(self) -> None: """ # Clearing axes sets new defaults, so need to make sure style is applied when # this happens - with mplstyle.context(self.mpl_style_sheet_path): + with mplstyle.context(self.napari_theme_style_sheet): self.clear() if self.n_selected_layers in self.n_layers_input and all( isinstance(layer, self.input_layer_types) for layer in self.layers @@ -300,7 +303,7 @@ def clear(self) -> None: """ Clear the axes. """ - with mplstyle.context(self.mpl_style_sheet_path): + with mplstyle.context(self.napari_theme_style_sheet): self.axes.clear() diff --git a/src/napari_matplotlib/util.py b/src/napari_matplotlib/util.py index 7d72c9e2..9ebace01 100644 --- a/src/napari_matplotlib/util.py +++ b/src/napari_matplotlib/util.py @@ -1,8 +1,9 @@ -from typing import Optional, Union +from typing import Dict, Optional, Union from warnings import warn import napari.qt import tinycss2 +from napari.utils.theme import Theme from qtpy.QtCore import QSize @@ -138,3 +139,29 @@ def from_napari_css_get_size_of( RuntimeWarning, ) return QSize(*fallback) + + +def style_sheet_from_theme(theme: Theme) -> Dict[str, str]: + return { + 'axes.edgecolor':theme.secondary.as_hex(), + # alternatively "axes.facecolor" could be background color or not be set at all, + # but this causes problems when saving figure as image + 'axes.facecolor':theme.canvas.as_hex(), + 'axes.labelcolor':theme.text.as_hex(), + 'boxplot.boxprops.color':theme.text.as_hex(), + 'boxplot.capprops.color':theme.text.as_hex(), + 'boxplot.flierprops.markeredgecolor':theme.text.as_hex(), + 'boxplot.whiskerprops.color':theme.text.as_hex(), + 'figure.edgecolor':theme.secondary.as_hex(), + # alternatively "figure.facecolor" could not be set, but this causes problems + # when saving figure as image + 'figure.facecolor':theme.background.as_hex(), + 'grid.color':theme.foreground.as_hex(), + 'legend.edgecolor':theme.secondary.as_hex(), + 'legend.facecolor':theme.background.as_hex(), + 'text.color':theme.text.as_hex(), + 'xtick.color':theme.secondary.as_hex(), + 'xtick.labelcolor':theme.text.as_hex(), + 'ytick.color':theme.secondary.as_hex(), + 'ytick.labelcolor':theme.text.as_hex(), + } \ No newline at end of file From 533597da6708a3c6739bdd0149fbf3f19197ec21 Mon Sep 17 00:00:00 2001 From: Chris-N-K Date: Thu, 30 Nov 2023 12:08:25 +0100 Subject: [PATCH 090/216] add dynamic viewer theme matching --- src/napari_matplotlib/base.py | 57 ++++++++++++++--------------------- src/napari_matplotlib/util.py | 36 +++++++++++++++++----- 2 files changed, 51 insertions(+), 42 deletions(-) diff --git a/src/napari_matplotlib/base.py b/src/napari_matplotlib/base.py index 262d96a1..2833249f 100644 --- a/src/napari_matplotlib/base.py +++ b/src/napari_matplotlib/base.py @@ -5,6 +5,7 @@ import matplotlib import matplotlib.style as mplstyle import napari +from napari.utils.events import Event from napari.utils.theme import get_theme from matplotlib.backends.backend_qtagg import ( # type: ignore[attr-defined] FigureCanvasQTAgg, @@ -56,9 +57,6 @@ def __init__( self.canvas.figure.set_layout_engine("constrained") self.toolbar = NapariNavigationToolbar(self.canvas, parent=self) self._replace_toolbar_icons() - # callback to update when napari theme changed - # TODO: this isn't working completely (see issue #140) - # most of our styling respects the theme change but not all self.viewer.events.theme.connect(self._on_napari_theme_changed) self.setLayout(QVBoxLayout()) @@ -70,24 +68,6 @@ def figure(self) -> Figure: """Matplotlib figure.""" return self.canvas.figure - #@property - #def mpl_style_sheet_path(self) -> Path: - # """ - # Path to the set Matplotlib style sheet. - # """ - # if self._mpl_style_sheet_path is not None: - # return self._mpl_style_sheet_path - # elif (_CUSTOM_STYLE_PATH).exists(): - # return _CUSTOM_STYLE_PATH - # elif self._napari_theme_has_light_bg(): - # return Path(__file__).parent / "styles" / "light.mplstyle" - # else: - # return Path(__file__).parent / "styles" / "dark.mplstyle" - - #@mpl_style_sheet_path.setter - #def mpl_style_sheet_path(self, path: Path) -> None: - # self._mpl_style_sheet_path = Path(path) - def add_single_axes(self) -> None: """ Add a single Axes to the figure. @@ -99,11 +79,16 @@ def add_single_axes(self) -> None: with mplstyle.context(self.napari_theme_style_sheet): self.axes = self.figure.add_subplot() - def _on_napari_theme_changed(self) -> None: + def _on_napari_theme_changed(self, event: Event) -> None: """ Called when the napari theme is changed. + + Parameters + ---------- + event : napari.utils.events.Event + Event that triggered the callback. """ - self.napari_theme_style_sheet = style_sheet_from_theme(get_theme(self.napari_viewer.theme, as_dict=False)) + self.napari_theme_style_sheet = style_sheet_from_theme(get_theme(event.value, as_dict=False)) self._replace_toolbar_icons() def _napari_theme_has_light_bg(self) -> bool: @@ -214,15 +199,18 @@ def current_z(self) -> int: """ return self.viewer.dims.current_step[0] - def _on_napari_theme_changed(self) -> None: + def _on_napari_theme_changed(self, event: Event) -> None: """Update MPL toolbar and axis styling when `napari.Viewer.theme` is changed. - Note: - At the moment we only handle the default 'light' and 'dark' napari themes. + Parameters + ---------- + event : napari.utils.events.Event + Event that triggered the callback. """ - super()._on_napari_theme_changed() - self.clear() - self.draw() + super()._on_napari_theme_changed(event) + # use self._draw instead of self.draw to cope with redraw while there are no + # layers, this makes the self.clear() obsolete + self._draw() def _setup_callbacks(self) -> None: """ @@ -256,12 +244,13 @@ def _draw(self) -> None: # Clearing axes sets new defaults, so need to make sure style is applied when # this happens with mplstyle.context(self.napari_theme_style_sheet): + # everything should be done in the style context self.clear() - if self.n_selected_layers in self.n_layers_input and all( - isinstance(layer, self.input_layer_types) for layer in self.layers - ): - self.draw() - self.canvas.draw() # type: ignore[no-untyped-call] + if self.n_selected_layers in self.n_layers_input and all( + isinstance(layer, self.input_layer_types) for layer in self.layers + ): + self.draw() + self.canvas.draw() # type: ignore[no-untyped-call] def clear(self) -> None: """ diff --git a/src/napari_matplotlib/util.py b/src/napari_matplotlib/util.py index 9ebace01..b334dd10 100644 --- a/src/napari_matplotlib/util.py +++ b/src/napari_matplotlib/util.py @@ -142,23 +142,43 @@ def from_napari_css_get_size_of( def style_sheet_from_theme(theme: Theme) -> Dict[str, str]: + """Translate napari theme to a matplotlib style dictionary. + + Parameters + ---------- + theme : napari.utils.theme.Theme + Napari theme object representing the theme of the current viewer. + + Returns + ------- + Dict[str, str] + Matplotlib compatible style dictionary. + """ return { 'axes.edgecolor':theme.secondary.as_hex(), - # alternatively "axes.facecolor" could be background color or not be set at all, - # but this causes problems when saving figure as image - 'axes.facecolor':theme.canvas.as_hex(), + #BUG: could be the same as napari canvas, but facecolors do not get + # updated upon redraw for what ever reason + #'axes.facecolor':theme.canvas.as_hex(), + 'axes.facecolor':'none', 'axes.labelcolor':theme.text.as_hex(), 'boxplot.boxprops.color':theme.text.as_hex(), 'boxplot.capprops.color':theme.text.as_hex(), 'boxplot.flierprops.markeredgecolor':theme.text.as_hex(), 'boxplot.whiskerprops.color':theme.text.as_hex(), 'figure.edgecolor':theme.secondary.as_hex(), - # alternatively "figure.facecolor" could not be set, but this causes problems - # when saving figure as image - 'figure.facecolor':theme.background.as_hex(), + #BUG: should be the same as napari background, but facecolors do not get + # updated upon redraw for what ever reason + #'figure.facecolor':theme.background.as_hex(), + 'figure.facecolor':'none', 'grid.color':theme.foreground.as_hex(), - 'legend.edgecolor':theme.secondary.as_hex(), - 'legend.facecolor':theme.background.as_hex(), + #COMMENT: the hard coded colors are to match the previous behaviour + # alternativly we could use the theme to style the legend as well + #'legend.edgecolor':theme.secondary.as_hex(), + 'legend.edgecolor':'black', + #'legend.facecolor':theme.background.as_hex(), + 'legend.facecolor':'white', + #'legend.labelcolor':theme.text.as_hex() + 'legend.labelcolor':'black', 'text.color':theme.text.as_hex(), 'xtick.color':theme.secondary.as_hex(), 'xtick.labelcolor':theme.text.as_hex(), From c25df01d48809a8d34eb2210ea10debe62a028c4 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sun, 7 Jan 2024 20:57:42 +0000 Subject: [PATCH 091/216] Add workflow dispatch option for doc build --- .github/workflows/docs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 13ce3b85..5b721d92 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -10,6 +10,7 @@ on: - main tags: - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10 + workflow_dispatch: jobs: build-docs: From c1aae45735f5334fdfceff6b99709703f3f88c2f Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sun, 7 Jan 2024 21:08:30 +0000 Subject: [PATCH 092/216] Fix package name??? --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index f308412c..e51dac3b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [metadata] -name = napari_matplotlib +name = napari-matplotlib description = A plugin to use Matplotlib with napari long_description = file: README.md long_description_content_type = text/markdown From f73f225ff3220c841c9bca851050aa1136ae57c5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 7 Jan 2024 21:37:12 +0000 Subject: [PATCH 093/216] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/napari_matplotlib/base.py | 19 ++++++++----- src/napari_matplotlib/util.py | 50 +++++++++++++++++------------------ 2 files changed, 37 insertions(+), 32 deletions(-) diff --git a/src/napari_matplotlib/base.py b/src/napari_matplotlib/base.py index 2833249f..c865c8ad 100644 --- a/src/napari_matplotlib/base.py +++ b/src/napari_matplotlib/base.py @@ -5,13 +5,13 @@ import matplotlib import matplotlib.style as mplstyle import napari -from napari.utils.events import Event -from napari.utils.theme import get_theme from matplotlib.backends.backend_qtagg import ( # type: ignore[attr-defined] FigureCanvasQTAgg, NavigationToolbar2QT, ) from matplotlib.figure import Figure +from napari.utils.events import Event +from napari.utils.theme import get_theme from qtpy.QtGui import QIcon from qtpy.QtWidgets import QLabel, QVBoxLayout, QWidget @@ -47,8 +47,10 @@ def __init__( ): super().__init__(parent=parent) self.viewer = napari_viewer - #self._mpl_style_sheet_path: Optional[Path] = None - self.napari_theme_style_sheet = style_sheet_from_theme(get_theme(napari_viewer.theme, as_dict=False)) + # self._mpl_style_sheet_path: Optional[Path] = None + self.napari_theme_style_sheet = style_sheet_from_theme( + get_theme(napari_viewer.theme, as_dict=False) + ) # Sets figure.* style with mplstyle.context(self.napari_theme_style_sheet): @@ -88,7 +90,9 @@ def _on_napari_theme_changed(self, event: Event) -> None: event : napari.utils.events.Event Event that triggered the callback. """ - self.napari_theme_style_sheet = style_sheet_from_theme(get_theme(event.value, as_dict=False)) + self.napari_theme_style_sheet = style_sheet_from_theme( + get_theme(event.value, as_dict=False) + ) self._replace_toolbar_icons() def _napari_theme_has_light_bg(self) -> bool: @@ -208,7 +212,7 @@ def _on_napari_theme_changed(self, event: Event) -> None: Event that triggered the callback. """ super()._on_napari_theme_changed(event) - # use self._draw instead of self.draw to cope with redraw while there are no + # use self._draw instead of self.draw to cope with redraw while there are no # layers, this makes the self.clear() obsolete self._draw() @@ -247,7 +251,8 @@ def _draw(self) -> None: # everything should be done in the style context self.clear() if self.n_selected_layers in self.n_layers_input and all( - isinstance(layer, self.input_layer_types) for layer in self.layers + isinstance(layer, self.input_layer_types) + for layer in self.layers ): self.draw() self.canvas.draw() # type: ignore[no-untyped-call] diff --git a/src/napari_matplotlib/util.py b/src/napari_matplotlib/util.py index b334dd10..ed994256 100644 --- a/src/napari_matplotlib/util.py +++ b/src/napari_matplotlib/util.py @@ -1,4 +1,4 @@ -from typing import Dict, Optional, Union +from typing import Optional, Union from warnings import warn import napari.qt @@ -141,47 +141,47 @@ def from_napari_css_get_size_of( return QSize(*fallback) -def style_sheet_from_theme(theme: Theme) -> Dict[str, str]: +def style_sheet_from_theme(theme: Theme) -> dict[str, str]: """Translate napari theme to a matplotlib style dictionary. Parameters ---------- theme : napari.utils.theme.Theme Napari theme object representing the theme of the current viewer. - + Returns ------- Dict[str, str] Matplotlib compatible style dictionary. """ return { - 'axes.edgecolor':theme.secondary.as_hex(), - #BUG: could be the same as napari canvas, but facecolors do not get + "axes.edgecolor": theme.secondary.as_hex(), + # BUG: could be the same as napari canvas, but facecolors do not get # updated upon redraw for what ever reason #'axes.facecolor':theme.canvas.as_hex(), - 'axes.facecolor':'none', - 'axes.labelcolor':theme.text.as_hex(), - 'boxplot.boxprops.color':theme.text.as_hex(), - 'boxplot.capprops.color':theme.text.as_hex(), - 'boxplot.flierprops.markeredgecolor':theme.text.as_hex(), - 'boxplot.whiskerprops.color':theme.text.as_hex(), - 'figure.edgecolor':theme.secondary.as_hex(), - #BUG: should be the same as napari background, but facecolors do not get + "axes.facecolor": "none", + "axes.labelcolor": theme.text.as_hex(), + "boxplot.boxprops.color": theme.text.as_hex(), + "boxplot.capprops.color": theme.text.as_hex(), + "boxplot.flierprops.markeredgecolor": theme.text.as_hex(), + "boxplot.whiskerprops.color": theme.text.as_hex(), + "figure.edgecolor": theme.secondary.as_hex(), + # BUG: should be the same as napari background, but facecolors do not get # updated upon redraw for what ever reason #'figure.facecolor':theme.background.as_hex(), - 'figure.facecolor':'none', - 'grid.color':theme.foreground.as_hex(), - #COMMENT: the hard coded colors are to match the previous behaviour + "figure.facecolor": "none", + "grid.color": theme.foreground.as_hex(), + # COMMENT: the hard coded colors are to match the previous behaviour # alternativly we could use the theme to style the legend as well #'legend.edgecolor':theme.secondary.as_hex(), - 'legend.edgecolor':'black', + "legend.edgecolor": "black", #'legend.facecolor':theme.background.as_hex(), - 'legend.facecolor':'white', + "legend.facecolor": "white", #'legend.labelcolor':theme.text.as_hex() - 'legend.labelcolor':'black', - 'text.color':theme.text.as_hex(), - 'xtick.color':theme.secondary.as_hex(), - 'xtick.labelcolor':theme.text.as_hex(), - 'ytick.color':theme.secondary.as_hex(), - 'ytick.labelcolor':theme.text.as_hex(), - } \ No newline at end of file + "legend.labelcolor": "black", + "text.color": theme.text.as_hex(), + "xtick.color": theme.secondary.as_hex(), + "xtick.labelcolor": theme.text.as_hex(), + "ytick.color": theme.secondary.as_hex(), + "ytick.labelcolor": theme.text.as_hex(), + } From a4130210d8bc23041898568caf20bbaa5dc5ba14 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 25 Dec 2023 17:38:11 +0000 Subject: [PATCH 094/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black: 23.11.0 → 23.12.1](https://github.com/psf/black/compare/23.11.0...23.12.1) - [github.com/pre-commit/mirrors-mypy: v1.7.1 → v1.8.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.7.1...v1.8.0) - [github.com/astral-sh/ruff-pre-commit: v0.1.6 → v0.1.9](https://github.com/astral-sh/ruff-pre-commit/compare/v0.1.6...v0.1.9) --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 874c89fc..808fdc68 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/psf/black - rev: 23.11.0 + rev: 23.12.1 hooks: - id: black @@ -17,14 +17,14 @@ repos: - id: napari-plugin-checks - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.7.1 + rev: v1.8.0 hooks: - id: mypy additional_dependencies: [numpy, matplotlib] - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.1.6' + rev: 'v0.1.9' hooks: - id: ruff From 8e0c1487a7a06789ee578b877f71203175265535 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 17:37:42 +0000 Subject: [PATCH 095/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.1.9 → v0.1.11](https://github.com/astral-sh/ruff-pre-commit/compare/v0.1.9...v0.1.11) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 808fdc68..8df635ab 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.1.9' + rev: 'v0.1.11' hooks: - id: ruff From 75588ded4ac0dbf5b061984393f9dc1c7388b9b4 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Thu, 11 Jan 2024 11:58:44 +0000 Subject: [PATCH 096/216] Try and bump doc build napari pin --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index f308412c..fa8b2394 100644 --- a/setup.cfg +++ b/setup.cfg @@ -47,7 +47,7 @@ napari.manifest = [options.extras_require] docs = - napari[all]==0.4.17 + napari[all]==0.4.18 numpydoc pydantic<2 pydata-sphinx-theme From c08e1583a96d0ae5642dd3a60321bc21a9a39f1f Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 26 Jul 2023 15:18:34 +0100 Subject: [PATCH 097/216] Add contrast limits to histogram plot --- src/napari_matplotlib/histogram.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index f78a8503..023d6a30 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -30,6 +30,24 @@ def __init__( ): super().__init__(napari_viewer, parent=parent) self._update_layers(None) + self.viewer.events.theme.connect(self._on_napari_theme_changed) + + def on_update_layers(self) -> None: + """ + Called when the selected layers are updated. + """ + super().on_update_layers() + for layer in self.viewer.layers: + layer.events.contrast_limits.connect(self._update_contrast_lims) + + def _update_contrast_lims(self) -> None: + [ + line.set_xdata(lim) + for lim, line in zip( + self.layers[0].contrast_limits, self._contrast_lines + ) + ] + self.figure.canvas.draw() def draw(self) -> None: """ @@ -63,6 +81,10 @@ def draw(self) -> None: else: self.axes.hist(data.ravel(), bins=bins, label=layer.name) + self._contrast_lines = [ + self.axes.axvline(lim, color="white") + for lim in layer.contrast_limits + ] self.axes.legend() From 49c64a2542dcc105ff30faf9eac1bfd9f9f96022 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Thu, 11 Jan 2024 12:01:05 +0000 Subject: [PATCH 098/216] Make mypy happy --- src/napari_matplotlib/histogram.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 023d6a30..27f328ae 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -41,12 +41,11 @@ def on_update_layers(self) -> None: layer.events.contrast_limits.connect(self._update_contrast_lims) def _update_contrast_lims(self) -> None: - [ + for lim, line in zip( + self.layers[0].contrast_limits, self._contrast_lines + ): line.set_xdata(lim) - for lim, line in zip( - self.layers[0].contrast_limits, self._contrast_lines - ) - ] + self.figure.canvas.draw() def draw(self) -> None: From e9853fb86208758ee29518543f3acc4fb0499f34 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Thu, 11 Jan 2024 14:11:08 +0000 Subject: [PATCH 099/216] Fix figure tests --- .../tests/baseline/test_custom_theme.png | Bin 15253 -> 11914 bytes .../test_feature_histogram_points.png | Bin 16815 -> 14262 bytes .../test_feature_histogram_vectors.png | Bin 16178 -> 13818 bytes .../tests/baseline/test_histogram_2D.png | Bin 28371 -> 28430 bytes .../tests/baseline/test_histogram_3D.png | Bin 20123 -> 20215 bytes .../tests/baseline/test_slice_2D.png | Bin 33181 -> 33418 bytes .../tests/baseline/test_slice_3D.png | Bin 14108 -> 14112 bytes .../test_features_scatter_widget_2D.png | Bin 24841 -> 24160 bytes .../scatter/baseline/test_scatter_2D.png | Bin 18236 -> 18394 bytes .../scatter/baseline/test_scatter_3D.png | Bin 16831 -> 17142 bytes 10 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/napari_matplotlib/tests/baseline/test_custom_theme.png b/src/napari_matplotlib/tests/baseline/test_custom_theme.png index a668c103a7521c6791118def2595d02f312e328e..ffa4635bc5b244096f5e41c676d90fe5601784d3 100644 GIT binary patch literal 11914 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 EAFL3?Q2+n{ literal 15253 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 Rz!&IIEp^1r;v4s#{(tuwn&$uj diff --git a/src/napari_matplotlib/tests/baseline/test_feature_histogram_vectors.png b/src/napari_matplotlib/tests/baseline/test_feature_histogram_vectors.png index 3b90586ef7def63f182d50e92feae1f659d9d97a..4675192b1d444e04d83bdfa9c872508195775126 100644 GIT binary patch literal 13818 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 z z{fmn1U@AfSC0q$hhWyhV2`3Coox;H}Oe5)}BZK|<;-3h_QAwx2Tsx+&i>#wRpBTr- zKC^k_YNM17!-L&JDjwtL$nJY(tFxfIgnd3LEpStAckRif`6TQ7DIa3P3Gmkin-5eUaX(5kc~EZiiXZ4S5uw60k|vZbJmEuFnBV7@N=P*{fk-mjgxcDBLh89d(4T(~&W*;B!Cqjyo04plg zBRgt|-qSCMt0@#2z>3mK0uq&xshuA+_2eO}4pb$-yLEQ0rY0RjCz4UPXac`wvZPnL zb=wbIy%C-@t4YL6VSn2=D+^dU8PKAMg^~UO=${X0*X~3%CR>-ubr~2KY$bYkSQQn* z{RpI@8HX}8^iGkL*l97Ymiqz8NxsYF#DuXOUL=LCo1jK7mPXq{5%j#6ECfkgYyha#RVj|nqV*`rKL?7 zDlwpAuX{T}-9}fqbWzYF5W*hPWDUe?lL}wbx0%7+*w|PveB~%(=n3Hnt(cOdV#xLHsCs^ZPHW6n+`79J!!nw%A`-DI?6)b!+B} zhX$H#f!xi?x|zgMIu_vT=I$gT7!y8$Z00UZ?3wmkgrDkj3xtS{i9%?<{JK|%>wp-T)L>+s)u zkIJrn*@T5TQDTtSMS^gWgO0FyXQC8!1grag3y70yJin8k0Mmr@82RQY_ivhrxPFaGP{j1ok#wv&E}D^OtqU0!sEp~H`Qhizn+6sr(0mcMgVjH`MEL4b9C0fuvY(jqc2^*B%zXw;R%J#Mvd`lS*Jw`6% zAUA)~MYnvhFp(VX?8ZO;pdSYsp^|cZXk>&9@na$VHzBp`6r>#tcgxa^gf^TE-`~9g zm&$k%b!^lTv6LgXcy3BfJ*UDyRj8l!J$4V0zioC>?BptWl0IcqVWq=4KvW6{LbM+` z1-YYBy?x4a7}JtlTLoE_=ODY+-HYz?-zIZSckNb63j75T5#l1?zXiApZ3CGvb;B+~ z98UvkA%~WX@Q9g-G0N^(&)!9w52>B$5B@wzxBLt_uudbd+LNRupuw$zH1{UKP^ahu z@yiQtk@8*A5b}*Qm@tw}R1~1vD<#w*Q zKp&GQaJw`x0niLN-{p%R+M?TpDg_3hhZ)VS;sUn@c<7$V?5_1xPk^uwr@e}2Zhl_1 z=I3K!ZpvmPB_0_Pv$Ti92e-MeZ0ycJW*|XL0(VpeV2OpZ#-qgUZQ;_y=D9Xttt7V= zCv2LG+6OL*if>rnO9&5; zwqp|A`|h;V2h+#ka5#j1&P&9Oi~(-LC5fo^1PNgTdB1jdKSScK1^V1yLpp!|Kmefs zxskB+*!=ZAn9_%PpPx*A=GeP`5iTfXz->pV<+6!rFvi~hGGPhtKk>hbG{*VDD#T8M zo;90^aMFM7Km6}B3ozE9P#w2(bm8hEltQ6cY`#bmxH(@X9ts+Hv2Wk|gKE%ab6P@r zAZ$yHbkBkvJn+e<3VQ9J*_NKkGxp6ahFb-iX>W9MHS=`2g0T@K5;WXw4S0iOpCR9e zM*lNzmEzJ8MYy429`TG@Q{V-h9P!$q=c>RuITPBh!;v*$3X*;Kx1ZzW1hx|s^Q~ZX z5xO&t9^uf|VSQmIhI1GgZ1zGe%JUBFv7HK%ZG|T5*|_umxG9%%a3C;)E8|dumd^PX z%AA~W9g2pAhQ-A@a|B)RM3@zx1b35NiQ|G2xJQahOV^X<-sqe|T1vI%&b4c{J=4q0 zGp^kO-Q6?m%W-X2@bR5!LQi)$J9slxr(C#IjzhEdI&Vy{YG#FCTbs3*3-Xu}MYP<{ zu>stPV{vz>GP;6pR7qxLY5e5swMvFu zeSzx=3WoOf+=WX7>!CIvm*HS`!eXI=jLapBxrf>N@H~|w!~Wmy(w5}?28-<|?OIr^ z?;y-!Y<}5S*xAm}_E)nkRey0r7*b~v0pD9w;JbvVN zR5dOx)U5EEZ+TCyBjqvLn;f01RsPKojkEujMsmm^jCH&fo>}5&U~!Q_dC2bnElAG0 zT&Wm`Q)oNNbl*AfrgC9%UPf_ov4WwY(-8ABER33!$yup73+Ck_#kWqSNDW^y8Cb-P z{Sg=5{VLTpwVEHlREbTitiz;-)Jd z3{g(t{*dMET|DMU@zRS{;W2j4)6|Y*IFk&*<#3ns4?PRw;7kKk4MYKTgm+#QDx)hU z6g3OJ1VIR57O)>HE}VBNglofK-a%|QSgcLUOuGKL1_`JNe)fX)a=(tcg3BZKm-ZE}z76)bq2%U1Hxea#d=oSkQ+GKGKOTir@hI`LTV-+$D z!Vyc`Ov>`ZlIl0y!UcEu_0DOk;a)t4Zn!2{UNNW}u2#QBbT?yT^R!z6B=k?=n3k%Y z#PGh+-N8YeY-qYse$}|kyUw!=+xb*278l`w&^BSq3h+ z%pBhtQPKAdVh1^nkIiy4Mt4x9yMj#H$^1Fc%J(MU3Cj}{JoLN#A(=lAzehNdx&EE^ g|9^H*lT4wSmbTB^`BC48+L#ZdWz)(Fq0e3=Q7b)pe43440m+@E-NZ}xfx3XIU+{9<<#5gU zReC3cagMH)hTKq#F2{i38HLjqskjGf?sK;#E4`d!zaTFk(|Rw#cklRxx8Lr?w7PMf zz;((dyLY~o_+cHhRZHT(rIz2z0|o@SD)%Tuit>-|O}8Ki!282L4j!lczxlKr?jz#hDE&@ElGsm)MRp z0bToanPk__Q`Gf8Pex;dHYXEdKSHe9Bz^Ax`0;~L#6He?L`o}F%G=p3g>spL2#o{m zLPF}OZ6c~vpWh_9rKN>1_U6WDo4JLBG+vt67dupA6_KZwnwK-d?lki57Om_}(}+ZV z%&SYc9}r8+O4r_xNGL<0-ESq_;}g^KMc%xTbXzM(^PP%TwLb^0AopE_H<;h3=FXvG zG}=0z72zFkm&I9GS&Ns)Q3!Noz}EU~`bGbYEt~fKc{ENCTC-4dqQ-%o3R@1bGHfu< zMJ$BV@%81Zx+0c5BtQK2O)@2D7#D)u1uTDk{Xy>2$m8 zjpgE{OHiz85?e%WnW)RyocI0=4TZwegSB;ZW(RH3F&|%uaf^sxZ0fHlM%m6Kb;An^ zx)d0UbC{fyaxU&{w49`t#`){&Cd9?Cy=hFVc25sx;(3O{eLc=1N1Bdex2{;_m zL|;Ftr>7?_K6Uah7diCB$fZ74i%T6}J)K4};JS8ABhlFFjiz6Io33+jzktzNVq;wq zxbBQz<8B2a4P%&*l=Me57MnnK{(Kc4s#%1tDY-^ACprI`k1o-TQ)~(f3gljR;#za< zqOONWdFN49zqx5=Q&aEJ!#lgA#$G9xMr2`co?TbQtr+&&(c*VkV_OKSdCAwqMi<~* zP&3X&PlxEOUQRH-!Id9uAij2!$_jVy;`@#AH%4ciWUEvc>vk%=<~By?v?gG>pWO3U%n`zB0s06c)M0s4d~FHJBN7k#6P-5 z7opR$Y2{~OZog~vsCWeF{8;B2&TtG};so;#3Zo^Y@1a`>*T4lK3wNVgPz|0_wqo&E zNKAS<3Xiv!CXJNA7OHKeqtvU3^r~;J>(G8nnXc#_Z;6J+WMy^Gj)K+ETWl<)V`zvM zwe!b~)fbP)^woO1ggkpT^ZoH5Mrl|%!bCwKq_nI|#D0ytakvQawfeg-Y|cl))Z;Z) z(iSH(w*I=9b-7;7`w;Tk>aeS;vy^CuOUtL~`KpuZ>HV^MF0ll1HHQy1TfHBt-z9L% zD0(GPw^-Z2;0@A=xn1l+!_wEGUS;n0h^x~l7)Rs$wb05Z2tY@L-E(_<8=9h zG;B^%#V5rTkVKvPz{6adv52m&?|gZIgl~95vR|JwNEWs$b>Ld#E3T4n4yAU`{1uo` z1{!%rXlHWAt4rjW>}bmhLpo;Wq6i_i?&fIzN5jnT`uDbi8oS`noQKM1rBkK-bPEd$ zVX*GY#%`^-&O|VZe4BJXldq=!w;~v1Q5~sL4nIFK3A;~y<3yhT>w#@)`y`u6qM-X$ zjbbz_nTSevTqCqwmsz)`Aq~oG#Pq$tyt)K)-3+I9+7Dw7j~uHxBn)L&8w`lP3q`IfBK&@ilX$Uk{E_3!jVaqU^ChLLmpi+xx4BPlGo| z=%rxF+tpJCDB&{LO#cWKc%L`@Lc_3^^p6gdhe$<^w*ZdcJ5 z%W9~l2y_`Q^L#Paz}FH^T)G?#j?73!@bky@T5ClssDA}}BBOTv!|T}W@o4`0R%VwD z+}XdX$LYMWdaDcKSGz{#4kbOK0mqe}tFEpF>GnHtV6YeGrAxP>Wp{ltYP;F@hmnzb;kxDXZ`SUA^T{l@T1IV`y%vhsi zV`47n_YNMEKFR#+8CJYwm5w7Xz;x*8kJj+Xgxpo+D^iS>^UhXf+duUv6`}hn)wb6Y z=nS|LEN&1 z7F6vq=XwznYr#i|El}*Q6Gg#MdViP4Nv|*7j=!r&Mdq zveNw4qrnbdEtq~JzSczbRoJ(OJ+keOLcfL0LYcj}8>mGrqZ4IA&SOk>R~Vo@d)u9R zRZU^+Z|-sKtfL#L@1wS{1(2A;#C*M7vYr8dn)~J7`BiCRqC>~q>SUj0YS`91niyfa zEgM~|?Hj!Ah%Gjb$#E#I{yaYL&aC-7 zd9?gK=O&dnpz&bu|r5?|7oL|gm zi`rAfYTGKE2eV$iI<1;^b5O@xG)2VqC-qR7O|)97B*y;N^ch=P=CJ$Le@4RLF&KN1 z8WmMd7f2x--UA*n;>9_a`}X$mmgU=FG~hGk9Wu$AkCuu`%g`{nw6yGjm4ShQvYMI~ z6+{3XQ2{HhTp;@p{&jL+0ut?kpMdVHrTNvd zq7A9op(Q4)q>mpze=)rOT^BoSkvUZQ#NE>`?H0;vB>iw9B}AJA-yt z;Hr=y!yN0{``E;bl-cXyi*2Ijq>nn|q_uHP)LS4Uy{si{^?)MJ>Z@s)Qe zNGRv$Jzs&f|NQcTVYOTCQ5xm~Bj;)bGcz;TbgFk>g@Yb(ru+7X50NGlq7VI#zM`ZK zV1AtIJ;OU0QrfMdnjy_UT)+KzR0U3rELZ}kzW3*;XExlz-42c(K^c~s3N>tGkx7dv zu-$AoS0;;7yMk6zaNImRt%ULym7g6T5^fXE#{&IQr#b@OJN*&cyl~&jDqiiacqYin zKYjeD9CNbno=*wAKHWJc0$GxiQ}@V`%`{?1z3BRb(SFPo-YJckPV?&@--t7E>5k*kBF3igYG1l^Nz&(g z@ZD(Ec}WuujZAQ=NJi;4orHvhJmXp~czJoBQ_n_2y`OOlN1^xPn7~+`P$8~bzWFH8 zi*MMyNU3KTW_k?lq{?i+JKo5YI<=7XCJ-OPD%j+IUH}gM! zWLLOzXJ#eyc7o+_< z(dpTO*ij6l(6`S88ipm?3aLE&+UA;BW5ZP%TxxH-vZJeI1sx)Pg&gO(fs&zmKlE78 zUO=i$fMI54CVm)=n(9bJ_<|V4&CT6q?0CP7)V?f()iuRJrWgCc_vRaWvq9w%qBiL8J^D|(8H1VUpY9nuBL{}kRSeM15>e3O-Yck)zVTenyQNvrmm`@(4${%bvjsn= zEK5>q72K ztK;VfN^Ya-*OP0!=HV&MH9T_C4u44fny+u929h+=utGUK5NHMsWcyTcS9w(9ZVeoP zs4)L@5^&n1H4!qup2{Wvc)hbTf<73=9g6UhAY@vscrifxYobu%s590o(Ks)JioqV} z1p>Q)0x$NTk(Yqv2)l~@bCAK{_VXwG=UL6F?ao{r911}3Arfmm3CW{*-M`nx*=&AF zM#RhSc^Kq^3SlX6e^{OH5F0xDD_5-l$W6ttF@G5G5UjbsChYqM|3iBBC&!?SU-Z0Ij)?Q0jqWra<3CbEw{YG!Xw^K3NHue^8RLiYKy zXD>s^1k=6CDeZYWLF6*9UOA!47q80EcKFFLiPjNdELJy-m6-EDMp!iVL$dnMT*58`4Q({Ag#}<#`r8is0CH=-;nq|N8IM4f zTefP3g!T)&0Of&&1(}h-hF-TYx8Q&tIdVjV*s&wV$@w{3=-RasUO~Zx<{z(GE$uyi zDTYz7Ltpyrv_!67xedNMRJxfCFNW({S>+NozHKeIBV?_=>2q*#IZU?E4b^x?I9#q8 zbxv%xT(NDe{N{|V-4Ww2+O6S?E$sd^J5qR-C!Winco-!;3OMg2W#lvL+!8f<6Il8E z4A6tpQE%3tUgQQTlavhZ2k(uPb~kaL!Z~~edfadjA1|XG`r4o82{@>U{qpjZ0E}!$ zk>jL=8U`F#$_9&oxJJjoP}^p1ZeH#_tp?7DzNA%gyV$&wIt9)m1NMXTP=z7Y`3o0j zVNKlwq6DqD041iA9aZu1o}5*becu$D>Un?A;MiyzvsWk6Zu_Jjq>!awTeCA<&nh>U zmzP&l+anH9q;6C)Nbi3|m{W8otq9Gc4Nk1ecU%Cx2 zFyffsVymMlAK36-wZ>K^PriH=YUI!FE#yNnPw_HcGk+$3`*y{8yO^<+TD}%x%n(sk zB~HzFb3jMN%`$YCxZEP?iH}1#wnVW=x=p;he*LaUAtkSeI6cL3v8l`Ml(#9Xh)l$& zoM&L-BG@5z7k5ZRu(NE}-%8*|s>>)z@x`4PX9|O4NN0*7QdksjZx>z6EPC(C-ItFl z7%pB!6>8<%5%E}U1D(RP-Pxha`785d^+r?|gPNS0-_LrF<_Z{zIxM^$OulXfcN9(0 zMFpw?fs4FL#ESi8G?44CHCtqmP5qc*tuD}dDOU%=7iw#v))f1eivG-*Gc~Y{NAnxo z?)7NbYyfugNl68Mi>Zaf&W*+&J}l7cS&wP+i1UxsH$E z0gbZ-lo0Hkk_4e3jZ8B$#z2ftvb0Tc3tTVqmn=4XdZNe$ilBje@f(eFsdyq1CD`2e zU=Jb|@tM#=g4FkEDS6X-M7?u^=a5r)M6}CmQG#(O1!EwFXZHa<*zCW8Y=5U>{ckul zsY}kA?G>-uaQM5ca`hCr zmMo@{4ECsYuG0)$=0lgx7^f@w<-lV~Aw-HLHd6%zlCx)7u6%v}*x4#mv61G!3-~xV z>VFO@|ITyzPvyer@W`t`kO7P~-DBzdt<*|GOraK6Zcffj9au9%pZ9z}E& zYTS?q1b|V-zskDv4Ps`-77fE-Fm2x+AkqEB@fdr61EmXZWsEIaqE>zO`fc}>*6)DU z<*TJp6mUwo8yL`!PfR2GhAF~i?*P)G9tUg6Pt z7HLFEVCMkoGeIz_)SFzr{D8wt%DusL@YG2%kO!#@|ta`6X%D zN&y7d%2&kzbOCmh?boRwcn#bTh}INaNf3IH>V|J!2hcb0N%uIhK?DT$&q4f4Yy(~$ zR8t|OdEApmQPsc+K-C1=Mvu0&IpxM&X7U#R)7tgg@^7?- z&>;6sIyw6=k@&a-`1B_RplT@}qhVeuKm%w3cvao75ZkY}ShpJG=I)L`=n3ggeqpr}FCHO6R=DWzX*Lz42`vY~`wb%0#e@srb&vys>vMr#4!5%BWg zoY&9=kDN5-r*2&~Sh3Rg<@E(Jw&fzBuTZNPCgnBP_4-O!{OfCNI-=$ukB5YY+RvxB z)U*M8w764%nSO8nkfkSWf8H4^N@ zY~U}b#N^>T6Du7Di>lqN9opgwO9ved>&YUyd3pFPtm&e?kc^B8U}L>_463jct~tBY zTLJPr3bUt|*?l$~`uLaf09-)_$OYhn^*5H8xFC%YSy`7o7e)+r$V4nqGEfcx?l3A! zN?kFzU&}pO%>_(%v*eqbgty@cVZV+C(RA>C1wa-13K(Q4lnp$>QyyF|b)^yn;5ISN zDgF_|C1RpTY_rjmwXjq9&MdOmcHa_P%qadS130Upz~`EU zllo%S?Z-b;v!WIU%kp(?ie32-#l^b7ysWSALKf*FfM4!8y*A4z<@L6O;O_2T;j_F- zUWpJo&&UY>(H!Qm{E?>t722n2ZED_3q876w>KJ7H4xHo^i|#xL4^ z0tFMJQWzbq<@H&cXc_!Ed1>i*w5VROex{yjfP&b)}U`pOO%-_f$mD(Hxv?(CMC zFmF{X0#%n45-t0Km-fVo?u}(EW{VR@lZIuST4Ff=2-aj-(-@Ct>R1Y+gP9FdY*$JG;V8u|beP0{)55OL6gv2lq7lImKDi#3T*WIgIn}0V+z}NVeD8 zc$JfRJB(MNIv*4`jO6@2cVybL1rJFbA98tCjh82%kdP3T!nOiO^i`{z>p&?7Ey$|f z5wWT991)+g;^NMuR}Rb`deD-aoX_|t+-%YQ@oE7+t^SJv(V%X>tMlF4QElt&#Ht6v zq7nR@oOjVU*D&Daapjj8rU$MR_BU+iHIVUq0tThpnVBN(Mo3)+MMXYt?k~vpqyc@X z=B-<|RO{XMB44~%_Ss8H(gz&n>yJlYEU$~y{L04_vk!g|!%g6$J8x#+dV18Z>Dh_m zl{ci(Xzf>jN!?EwZF9KBCl(NHEhx*Hl=6AU)qmM;D10PWsI+ zi82RxczC*-S1)P;a8IaT$}%7S$>`VxNXYf;nx8&>DlP>)ld?O2807Rtd;S$-z`Z%o zK1|&JsT=Ku>^}$usG77#!jVY~PWpS5Mh4YLZB5Iks3RbLNyf|-J#FidoY9?n z=Qp2ZV=5xy2Kq1O%{%6@lC8JU=&z zR*#8GNZ^D5El*2ZJC24~{CoF8L%^0Xaoes;=8S6zdG{mK*~-Py5choXEV$;3eh+zF z%McgnY_;j@3mYeXqYtZ^5o>J1~UynFHO))b)Q z5fRbBHSUr*D}E(fKqfD3Y)fDd*k1OcyrTCn|NQxJV`={?FaO=28`szs? zeNJdx@%M+MFuog$wd%$-9^EybE_UOg)XK`rJxw9e4kJ~r&P1SnmRrtV7cef>|C-oX z(Dm*rbt9g)J?#e80)zPcJHo}BxzC6PB zFP}TqcN;t zXpJY3Y-s<;I5sVvLCrLVnP?SLj`=Szq3@nFU%r2MItrX`aQA$xy1%u$yT@LUaJZc9 zZGT`5-i@&o;C{sp{7j!d06RLat|iQXdKe>gfK>~WSvM2|6CadU9IN}wR?3*S)rM?N zr99YKeq$qS+r_4uboEw@C3=_xYG%e6P3DYkMMeR5K1`AVAXo$B zk?@xoG-ad)i=;%;3~B<-i;oW-uN>~UQ~@G~oMO!1 zX?8b)K^Wh0{BQ-xUeD9~c72I>%-4Az5VL_>=<)sifoSZ)Fxu44&aN1>l|#fxE!Jg^ zj66VltuG97L5pjU-PQq@f0`3_Uc>^$ZlJv31D2w{vZw+OQ6>y`BKc*7)LrV*2D28& zJ&)_^=)|*{ZcqVzSg~=J7|SSZ`wq(x&HN@aC}6t;DE5=Q!zC7BQOpuWFJEdDmx92~ zEiA0!)?;|W zXe6q>#IBxo>}-y#rMM?yZXq6@cL`OFg$zPLH!RB_tv|8_(xMa;$d&ni&`&dfwm9kpFm!YJ!p#Q8wXr1R$L zF(5ouV_G}fVm_H`C@Y5>Z3eF$C?3~r*NSXvk|!?WaN_|$9`nYm=KmJdj zx62NFp*TKUu>XLLER%<>*N!f%Gu;acAR#6PxF~>o%!0x))_H&v zIEw!k@Zxy{hQy`j#s{)j^4-8h3h=bN29+^@T)6Xn?flxygtDoe*%Ed*o-pdH_a-sd z+Y}TZfM{s!J9$-a@cEf56cM1prD2xWT{6{>)Ncs*lwH^N55+65uiRKeMa%XBE9HUJ zUv)D0FIVw+9Vp!221ODcl@mn{B88wJRNr^gHzvo(B{d6_6X5?fhZqWvj>h&C_Ljql z4)7wlHf+zs39M7E#W5s>=U1A2U#nf{Nf1a8@$PV>l#T-f6QS3b*Vm^Vutz4O^ic|P zfbk&~Y-wHG-x|whY#OxjLpK1tpgjPPcrIU-*Q32y%#t2d3`(Q5f&F~;+&NIGal>8 zeicDD8A=hm?B3?y3`K#}`0tn~H*)sl+2hF@`*nsvd!$ZfC8hi6GIm214*A%Bt8pO~ z{-tM9sq?$uLFSMW0E_hucF*=Kdv3@oMt`^5HBey=_u32p90qXzZJ0Nc!&RE)vFi& zdkY15kg8IfqSI76k9#%G1)eRkgfd{{O3OXP$`#ZKW)8N2I!~1Mdlk~Wc zA3wsYs`P2XvhzSw1+cGxuvU$Yh>T~ad+UJsQ*amNqvXv{P5q?S@uXHuH-rUx*w~61 z<1qVMUu!?fW?g0wqpk5{NnCd;E~_$X(9!E}D1qq4gCmG*zms_jU5Ce)uUs)!zw(c6 zJjHGyYsUO-E?-3Qq=Zz(zxCf!cG@vTkh2U7`JkGaMf}nG@c|(8#3v+7k!${`1FyGV zq4~T@KOpEQJGvAI>nM`Q{%I*SjQ=E3vq%2-)AYxBi|1Yi)h&m1B)s)Rass>kBBj_c z#)E*=I)CO&=D+m5YyWLne)zlKZwWY3Z{8pPJ%?hk7XzzwD6bewIZXKT=lB0F^Yzm{ zlt#V_GirYzf$y!|$v!H&NsqPw;u$IoeR!7kg4(ELpm{Ki(#LSvWZrWX+3TzYT5TfA z2j?W%z=x17{r}H75}A(|g9{`bSp9=`BmRiK9d$ zqx^AMx$kG>@XrbSA^9@drkt|y-KTe}+8W#Vy6doeh$hWrpkg4H6ZEV6webXv82L-v zi5cR^W4W-45Rv0-CWpi5cti{t;|4^!j1Pd`jqAh(0pO&EHrQx2sjJ9b`!P#(|0$(v zPLMm2T2^55;(q%2~=618~An{oSM_9xWx0wrF{S==>?meY#%o*kd_OjYfVA%)v2+f6nnx*b4EAcpcKkf+el56izb|DdmFz{I zm=tlK+-iTE3mZcQ56lIRcJ)v*X{b^MguI>$UiX|sV;J^D|1JIVE@7J+0y$zo6~ z2`K$SAf#6}?1IuxB4}cW^IXcHIPCU)-0fA~d7wylZe230Ia3Ezu;-CPXXggZbJu6H zFOa@_SQOSWx96CtO=kA zB$3@1bUu!X?5NdmG+h@kE$N}yD{|v+_d8=U6@7pA#bhW#B$Me!Pt*fBowLj!GjpLG zl#Jt7J7s&z?PMPvIRdS5ZaOSrQl}57h*wC+-}IMaKmk^=`0`QEQt=>PEmac)8dCs7 z!J(Ayn^pqnS6#bRaqANmwxbiCCbyOLo3GYR31k9!iO`*`Lq3_YV_yPUNy!hql7hSk zDh9|M-l4YrMF#jFXQh5%-hfur+`yf!+ImiY{(B(rZfomsi?_0};*pRT6wp@EBnKae z$pMA#pm=A4f@rq-nf3Q8l~V$xexmWC6==lGd~U^PC%=0k>+;bM&A&8w+1Q>a)u(hQ z$sdP^wbQVH4g*FBx13O8kp~*awRpk^s)F-|76})W4i-r!nAlc(0icw9{^(OD!zp^# zbZ%^(JOrHgmuT2@8<5H#5E+Llm#-T$_H&T?7JL_j{F`07F@Ccd;5k{loc z*$UIaeH2w*;q#;>U(G5IlzMDji7x0ZT=k6RQX;$Bw!3ydJ~nUimu9fXEhTIb3gD?8n4#-(tx$%% z&Uvx2LyhVk9NHTN zX1sA|jpMSQE-qcX73qkzA#ikVkH>;x344Z|fxHiC0n;xaa*CJ#S}QX3T@Nbvr?uE{ zUI^$;nR;>*5%IzHAB*vdM9yxZ54{)PIS{68H4V+y7 zt;^HyAIy6}QJ*!R`>?E~<=s$FsOtcP=;8o5z=}m3ee@0;J*5q{8v7>3+F`}})2qCq ztCYyjUnCeBRWx{DVmYMo)u3ZP5DO`_oFgcA;`%V9zJja0ZZS}={=$s~Ou&sr3}~+x zw(9}*^`zbd*N{+ZrYX4CqwjK7FBx;`zMA&EX_DvQ|ctV;yVBx$tIv^VP zy)*ohY9TGSAoK4FT7D!oU>Ez^Zr3km?c| zH=a<`AkdQE54y{3r@p;mb@~_W4|rX`s(0dz0`FN9WUyEXg(5gG2w!5(=rSC_+j~LY zfO5gSdvAscYHo*~>W=uTC#>J;DC*EZH<&Eq=M_;gsIQS}Z0RLlu|&x2!KxTf>Qu7E zOu;jXk84wDOc-SBvtK-rF>YG{otf7Wb1zB@ zC{#Y9!qEB_w)=WI40sM(4+^WYo_01Jf|Q>SaMcLPns~;!8&Ko8emdG>s@7sHuU@V` zd9X8f{h+ju`t!N1i?Qoi-)KMiH4?oKErf;Yz{iLIa~_VmM1EXy_A-X2HfQ`X;XLH~ zlkT_(@*!7^A-^?;H%~f*-uSZZB^4QzvFA_c)mz=7v7!|xbgOwP=&|s|HAT@?x6#n` z$N9PEtrX4WvF*UIjzlJ(z}c~yK1ON9`?cxhyv4g#x^PMfI)ZhA3SE ztazIFuN{tklZy&F3%$OurQ{<$32fCkeyW%!IW{hY?D7HU;vU-FdezSPtAzs#9u8cM z_jsj+O=*MZ*qsJV@>4h47RPHlc~Z}g((9FY!>hj+i+gETx~t5ps5YJ^aosy?Z}EXV zhR!5eGk85vI?l%M%EHExarIkRsgAZUbJ??ynWvlBv+|G(I$`2eG%A8z6O|CJtQNb# zY>uJ3eYBQEWdZhDP_=FVIVZ=kxTxotI3a8|HmMd_jrU(#rqjotJ8Q7Yx!Ea=8qw;k zW#N0im=pf$U`U`t2}A2vXr1bbbB~Ag-!+hk#Id=iD5^6Da*k;0d0_PN=iq{}dsUM8 zUyAYJ#ce!pdlnibhb#X_i^_4m&A)9>fyhzaSefeN0Kb3$YCWB*%n!xXC_O#fNn5=_ z83!W+7ZhJ&`&zT9lXgwgPN?g)-!x)dt24y9&gsi=-_-wY1X-M; zh-(Lydn0;O$@7F*S-+o?k`C)*W zrf*AcoV)VF1BPLZ=`G1z7kWzT8}C2=6rki>^(kxda}ajkyz1K5TJ*;UFV}PY?vU;t z3zhfFbc`2`&U_HF*mW?&i7i-IGl%2ONjKZ>+D*e8f6~)iQOV;+Ex@VA7bQ5J9YnU^ zIxXg7UrHplcUKfHFnl~?!yHbYDtDBe=XGb6=HyXgd5qrVt%xWoudKOU4Ji*e{OWFa z^eG)5{0;K_5=UC>)UJr)@@u|B{bH2qh?LG(J(1avmZWr3#7>~$bK#A<^#MyHZ%6ZI zTRqiuEzyK7%r1xvoa>I8Z%eNot zzkVXcqV*_$HMZ^Pe9KMU>Vu5USbGW8?g6SC7*}g}K4<%+fbIDN2K)ykEsQ0<;}0U$ zZ7Z|Px1uR9ewbn2*tE+-g+=n6p({G^aYx>H?@BCu>1~ko^JW%L;gUFaa|+>~>4~yGS6sc+s~UwotLI^_|$y3uUtpt*z?ZEkS=EHfFH@CZn-{p-*-GrWyG1Yn#q+D6=H`}5CKgZc*;?l0oNEhO z@SUV*ahFQKiDEImjK6)Au0qR4Xep7j7@zp*mELw?{kY$Bxb&qk+^dLPXcZaN z^$?{UpYKP#Wd=Wj@R*m1DuqrCpL+ZP`wqGPu1#;a9pVOQCh7!R_X1c?LqZ3RQ8f_PNK@DK|oTL`B8A+;mAo?29F zC+ppUaZaAI8`fk4)&?L08b*6QQs=%d8x*#dtw?9?+W4g)b3KR2-O1FcIqT-o*We|h& z4ld1Ke|Pn%|6*)Vk`lFVam5D`kGV2}3 z-n;U|O|D1-b9Y-*#Ly>FPjWb4I0w{SFeTeTYm}=#(1%;Gu~XVK|I!H3(fC_HVfq<& zlz)K9_D)fGj*`mr^AlZJ-mB7Kaz`cXqr{$|A_7{s7I$E>iz~Zmj_drIJ+1t3 zZZ(@1Yc^KtG43>s39b_m1j1tY#E!S4O8bpvOw`9Z?u>c>i+bDyW7T_mC5SS;*s}v(dwqK?J&6 zBF!1!BB_3;`oh_K8x4+>>i}5tA6+;nUN*H(Y<(*1>-! z593@{S???3&J?dC7~Y~4$OdO8sPQhEkSm&00`q@KTOH|yLw=RB%U3$Ni&wKF7iqU8JntxUlg+zbUggZD{CQ~OS8oU1J8C@m=+3}CT_q@YljT|C)#x9Q4`fGk+1ps z`vOp*W5YNy@r25~6^A1^2|g~STcJuU7BB12DQ8r7cJ#bs<)CiNNQ3yog~dT~sP>V4 zh0M9Rkv9tZfh)ql@wly()4bjPiHPYp-7JnCekEEwMyIa52iFzgIE}FI%xT|AE_KWm z+a2Q}>dIEd8hkKA`aPa-m}Dy4rE@U+DSvZ_SwN-WlZA+c>EgW0&Qw7yQ{^X<47Cqa z){Wi)TcLfGm^2cN-Hi1ei=aIW8k!*>pT0?A2@dJFx;9FUB0sna> z&Ed}V25+SRz7d_7m*MaR-Pc5a11-@LH&ZH9fArfhO6TzMmPdS}$)^vj*CxXXhp&}2 z7Z!90s&1%BrR52p!0A&9G%h$uJTg^3H9XwgR3j$BEFp2zNv`%5#Lh~_iNo2xVk%+*A^VtcOq}szECz#prTPuz=f}$S;}Jd4`pu8{_xj9iPc(#icG52 zY)jrxie-reDwP;gMCb3{lZiGv10wJ2>m$mA;qkdg*0*M6z~t6n*iRUd^$L@ig~!=E zDThPj1CifgQ_zT~%5O+G zgj#%I=I3juk5i2VQbuaymhqFLLpKj9@!8Ew$=;p)a*o}|%^Zz#9~#;V6xeJjU$+~c zTf7PX`23FEW=V{NA^Fpd_B64cGgHJq(#M>J{SjBO*_v%CmT8+fVc((=ar%z}2gmo= zbqSr)xk9B4Uc)v`I1V?avqt>6&q!`m(Uq}klZ=gGW+~Pmai?9>+X4iREfBz{V1_e< zywHzrnzpjX*^oIEi`(UjPEI-qa>r|QCQD2?%(|xOJZ6TB+)--e*h{*bl1=CAIuo*! z=1poAXiul@9-AU=B!9cW#DZLqzL_puKJh6ZO{z=`9K9Zy?!M6#WL3dR zcL5#MN#ueL`S0FU@$}tFzR{EBY|s2WqGv4I^y_(#-5ZPIuzQzWHIz?0K%ahi_?52Z z$JBJWC@Z4K+LvL4XBys(_495I(!tM69ObCllfvB8N$Q!&Ke^k#w@&a!KA1qD8anJ$ zPBq%${f`G#g!xK8e*0~fQ2$$t3cPYH4YgW%APd#y25!c4HDR{YubN&=PpNUsKFU06 zv{BaOLk`gFk&OheRAJv;p4q8_zK@N?>l@xHB=1}EyS(Xp&X3jN)6#9+`9+nI&u6L4 z&X%sZq;j|g*x4SxXY27*z$7?txnloL<5`nY)ut?oEj?dlre0>udZl;tKE?9Csyy7f zgOgIKv3^_wKDl~LVn_ZC#O}aj!*vj9T?{Y3yAzhu$HPA`J%Lv<`#_%Fe(lU~Mzwy+ zSnU2r@#Flk#d48;AVd*UbFYd4xpig!D=ZE zUmT=c&$h%cx{Z}n;8Z$XMp{VP)WqjOG^;_@F?GS$YBgx9;#XsRe9o69WW#9iA2Ml` z)P!y;KV`-T&SZpQHof6H##a~J@?#oAjHhM{W~*6rSR1L-3}{ti67HSUc>ZZeT{r(> z+0Pg}_nrPYmYSQonAr*?JJbs%8o%UG<4MS9)5+nmbn=D6(u_;>XkvaX=L zvZ)lW>1|JTi_nE5ZnIx%7FleBUTw-Y=$YVGzjtD8%wI>Z40UPNLd}f>U?y-CRML#@ z`p<>0Ywb|d8qi}8AbX5T4Wnz0yvhSbf8wzFG3BKXU&t#<%MNozvG!$rs6I2z8<;#R)I6qcr+$j5`N*SbZM+mc&} zh!2)rX;Wx7K2V&=Av*l^BQc?;t4&3Ek8~Y{kZO(gXrp-HJW9fcWU^?M~zCFiX zcG#N8P0!Gl2JX8HOQUJ!6EwI;j3(cE4Em$>d{=#EqYSc1vc=!{Rr$nys7q{QWK!@* z44;q=5NI;xdFG71UJi=a`$@!YKMiu}b(gxwTPam9f?;nRCD%#^NN9801+5M{;aORv zwS+F&mYY3(@VW#kka5uC@Znbw+qRHbXsVXmzQ@?1l;orht^3%{b|9qDa78d+RPG1g zyS|oTFt9l=us*b@0$A$&xQVY`Zm5=Prm{~P0VW|t zFya2<>MQ=t59IG=Bnc(e3%qY^UT79#iq&v6a;T!K2=SVf39A)XC!@zn!E;EIX1hW? zIzC|KYfjJYRpOG~t)7H==N5jmON>K=%jlrSL-V$#^+Q|=Q!W2bWoI4_<=X%8)alfz zBd5+m5$f0p6)J>M5wh=N>#1ZPm8}dWZH`oSQ5gGf#+Jd15h_u}ZelFSGR&Bn7&DAn z{H{5j=XuWSJlpH{@4RO2`?|O9ea-j!eBK{vYv(WQJUh|OXWe`vX|!Nl^y1DBvD*Uo z3ca!FaS!XC+MV|clHg`9~OxNt*bgS0A}FhL#JDA6hv z2E#$?YEC!f`iRtPg)UC-ym5f>}5|Ct!3`O%e2mCUHsLckek_g z$(`n^+E-V%j-Jd)3~8t8A1M&`;T1}g_tMyuI{BR9b&g&U4mWZ{U(XZa%4$rb@#gQ& zULs&WWJ?4O??hjX!BxOkE61b7*D-Jtu%z%s<;X1q7S{ESqG?j4b!eL}&AM+)u_nPy zrerpQ!8rfy_tqEp1Um9mpT|#UB+81?-2;5^7f0cI*+Dc-%fvL|>L;_b^LO^RE{7A` z;jsbia!&+zGHxJT+CD7-GY6i;Yn+kCI@v1;re{Uf8aQEg>w1@ze**v3BZ7hs_Y50WdX}uPh)6`%pcL7@Klp(rN)zDoPmIlcmDzH4$Wf=0w z-&1}uMIXkTO*hgH4~sWqwa%-cGGS@Rn6BljX1QAvM{Qi^Eec(16VHLBEhy_2Q?2(! z%MZO82j`I;|AEENw_%72Y3&gzOoD7AKqho#g|}yEX@sZnq&V(+auqe_8X|{LR;x&> zLj8f0irwStr*E|)U5ZpT*`(B$!Tc+=zneNg*LUaQlW@#^FMi zuZ8)8yBj&`E=Kw%CmHDIs3-=QjJBYgj8rmtzjgK+MO9R5d*N+^NjmIZ$1jkK&W-G? zAgVSB|$3Xm&!@^ z4vDCk$-crnL0EkY9S=wuY|22L_~L%@p620`2_Cs=yWs`5i3glq_)S{~Cw1PLd+soE zZJ;={%quZn4Rd056~zV@(M)*~6HaBng$*bqZXLC!PgSGC&s{FF@-*5?}u ztdGM*X7Q2b{k&@rRkT9CL`;+{;~bp>eE3&fXDN#+Z3kn{fNq>W--aQ2<3-(zbd0Ut)V2=y3*L1N%8j=(?bE70TTZym;ZtCu2OVdZ zSBvCqkN56m!l3t0+N|(Gx`=Wx_(`(A&w3WB?@J)=A!vIUZ0F!LwxV~vY(1U+T&*gV zZKwnJdNXFVhSU3`X&|q0DBbmQ9yGV~V?vUBE|-+!L__D)4tWg48XKQzrfw+oz-B1E zkEzZ{0cj>tw9KFR+~Y-WvSgAS{a%?%S~fmJH*bhYOtYe5rBqikI5r5R&2sX}t9&1{ z#~2%qT=6r(7On<&_5$W`e7oJI$>0gsU&7z7x@-$3H1*yp5246nxP=8o%P@~(920%4WHB?H=sAns#?9ad=?fe zOk-=}FhyG}?VMtky+_SFC7R^C6-|2i5iy;%g~C07U*8f2iyqH(dU4)q zzP~LwGHV_cb0PUx{Hb4*IOyUg`3*%}B^} zuZCU85Mx_jw}_PO;8IuYwv~K0ou~F6w(Du8hPabxwm$6^FV8w~Dp_`jiS7{a5 zmStton4;@nnn-qtbgkT}%b~j_^1ynjE;`ghPOO9gChn%u|<~BID=^g#Lu+cL| zD@{a%T^Z`Tb1a50xJC%W=-?gY#3%xOJqplvCsK9?e{ExwM{znOc{WGOQ$@>6#6Vi8GD; zXy?b@D8=*HH;fBn>jW(cbWlX6_d4slwipO*^SA`gg8mwkOSCr9RCU7vmA zS4NE_jkfs8t7&@|9!s#KJURfU%Qei_rdhbe6w9xj@QG6t;zQL(Q(xOoy`iOJi4?00 zA8KE~`NTML(^Ppa*Ld~Tj+qR3E$5rcaZoRd>{2py>*Q2?geS_sR0>W;51n`G+Kk#S zpw%V0cMBD)Gc+lx)$3zV&?5l(`E-vCe+{@TYej}Gf<5+D%@)fN^U()qeP~}e zgS`8AGCke_K8cZkUZv%?T|!nJDk*uLD}2P_jtE>^{?h)vFDSc@tKGEx88EFrPbWRa z+0p6ehd0z099F-svigN}>_Vjo-A^oO<$@J_9IGGTBR)ZaGLk~LT zcF({TylTC8Ip|L>(E-lx4ZEZU^s9Xr#ar$2TKd$i4}R=@uI-;byNYeH7MtyB z<3^&aEU-N?3?`-^O#XHI$~)8~=_x8{%R^H7yhz-_cqOZU`KL37ly6)`@mkgcx~i`Y zf&I?Y*9V3aC1ND3=)EvBI!Y3iS1fdYQ$#l{LtbW`-_tVYwQZSpYnBw`@5PJ6P2n(K?DS6%BMcU=Y$5YD_P;VW` zoR@ata(9*AAND*qaN}?OYeKVSB{@TYP_7k9){>W36j&Z3)~DGJ?6tB-KOWe(K+D^! zOU~XX#!vai;kIsh;zW=BH5s%nUl&?>q<_K>SH`qD-ulQ^+-FiL3Q2v5`h=(LZhK?$ zNaZy1Ko1{Z06o{_H`Q87_7@!bv-|yukYPiQ z8T#HAMeaKifr$UVa^=15!hSo`h1V^u$MLBv!AIX1q{6KBDuW=ANTN08N}_uirtUA!{RB6;SxgTw8KosJ#! zwXyWF?!2caj5G)-h*(x{P+9!Y*q)AQN6;L@@0fLH!2mu?weUj#HaB8_)-Sxqiy)1KkNF+`_PfuO)o$a(wYM9hFUj6CLOS%WOy%g$3 zDHLEq@#j-+C>d&?n7Y5+z4=K8Ep^}<2^|2v8x-viKenqR#T-{|{m666l;h3N&g%MC zd@beoOzz7(=$(cLZ)jVqR6?sBzErLxZYV-MGrc&NjQ2D|KM?5f18PQoJVB4yVQ-y? za`JSgI^wQ&?&*PDMn2+-gZT!j)0>R+I`)2gloaLGtz26TZ1p9V9U>~HPrDTuKOJ}i^DYl2;f+JZnM$gvcJt)n zF-#DOMJJXB>>VV-O&Ng`L!Uf9Kkv8vg~Xf__Y^n?J7Pr$OFF?o2t;*6H8(?mN|-q^ z_No?AB_IZ550>~ZeY$BJY$f3qEK zt&cYtKGkoH3?r6gWgX-J{^~&6{T-oWehxqpn3|lN59nJRS1FH2xLgnG|6M)Xtk9O3 z`2bmgt_9XX!lt*k*J4aluwX+v!SgDAfLdo4Z1fo)WuDU1u}Uf`1Dkw0A}uj7*C5I- zeVC>2zpTQ;?oC%7dPFfrCyx3i4-5{ziXxuit;8w*0uV&UuD+9CR=IzbfI;QE{$Of2 zib+dP+a!QCQQlS~O`tT<-mh+T@Z9@fES2bK_Vxf;sYXv+o=pcnLlqQC7a0*3tsaW{{_y zbPRd3DI+umi8d%&4-g3fF=wy|_$)}n9jIG4OmvG$%Z2!yuxH)-7f;{(@}Ob~0HlLG z^tmb|*PyDa* zC(^^0VOhk6nRpG{4c&u#(6!($)6+Eepm67YPQY}7Tf*x1TSD(ycefcygx>t&4pF4I zsT;y!z}h|vje?LB0j=@Q$~C71*4+SS!%wm59wG!;3cG80TR&}MN*zSI% z;c?tM{~m}^Q8#_sY!f#Fc)$Ps(E#>?0}`xB8%l?>AHzu316sK6ljZz&}m zO@Tykp+UBWqdftcygnYL71|r5W`LnS2M+d3P4AGU1)CP!^`{2B*`K4l{Qn{k!@#Fa+Iyek2%SK}SselT^~>_ew<)DSK(I0LSP zY4W}M_n9p~Qg~lPU#=^om%jbyGa!khz5SB(oPwQ2W(V}7;3z=h@dvtEBnoxlm=Pd- z3XJ{0qC6+a4oc&VvwzgQV@L|ahhwI7pEDz)sbLrj_C;hCBMAMl;p%+UT2qw%UuczE zWl0UxjlX!_1tWYz{5HaW;ed^47f$>J2B`Vnhkz3m`R&s-v>QXInIEqgU>=AGh=V}y z+lS27b8v8wXEZTfroTqxd$QTHUYGRXK545XdFWG=I3x#7)b|WTO{y@PB-s&jXSP{t;cFX0h7Xh3e_}stL z*mnF5Bk#va8Ae|MK3PC40I4vJfE2Vx`qXE~lKgz5(a}+GYUI?_EkQ1et~JTcOrUa~ zz9;{1#|ILxpoz@7?Fj(3A}dHr`Q6@s z3Jk0&@7usC!bFyYOH$NU3mXdYv2nOT9V@0I6E)c zq-SSWfn)&6V^yT}jT_Z}N}cJ(iRzyGN8-%!+7CX(f4DWnT-9NJkTr=-2mb?%b7N%u z@OL=^P*3DY1jw)gK!eb^v<^2fP+|*!Z8$-L`%sYJSD>dnz)M@#7d#3W@?RL~ zm@uQ(FOOBV0zOqoObQuqbV>#-1a!F&%nr!Fxiu>*3^`Nur0xYk;d~KIa38Dns+-4W zRw>&RcVDj)us>4))tv4LZ>gwSU%xHzJqY}x-2kV%W<_WSl<{4oO+ePye-?h`Y5c)& zVH}W>9St}7CxE^Ci8^lmis^ti2&{l_a;BPZeL4zgJMF__;L&sjpxcI^DI_Q;#&5mj z0aP9a?d(iwwFI@W!S1O}Yl#(NzK&?A&s!Y?@0H<1b9EcHfUL@rs*TpQDFVP%6##BQ zDVSI#LpB+bvz2;272E2F)PFP4yJ=4L;qXC_)FKc35}E&?N=7 zRuIdP_fI^Ilel|G644(pOqqa<;y2NZ29ZD@7@%-*kUr43JmboP#b6%c1J46|6G-A1 z!-S)N3&9@HR^Gfh52kP)0RD{eKhO&Sx6t1}>d*!q>28n^w7Kqy+$04P`C9W_aDvl& zp?b`=9h)UgdZm*k{;;U1Xc-tYnSg4AwlE#t8C9Q^UeQQv_jVl;OlG%I?qzNRLUVxO d`TsBo*qdWEWy#$d3T(kfOfOiTM;cwe_kR(d`;`Cy literal 28371 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 uUiH6NYdSA-M diff --git a/src/napari_matplotlib/tests/baseline/test_histogram_3D.png b/src/napari_matplotlib/tests/baseline/test_histogram_3D.png index 724314e122c559d2b14efc8e208c1abd1092302e..b5670bca7b55900edf960372259216b591052d84 100644 GIT binary patch literal 20215 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 nM|}`B@L%_9`z;GS-=O7HE@oV~diVbU7%cIR literal 20123 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 Ef4sKxY5)KL diff --git a/src/napari_matplotlib/tests/baseline/test_slice_2D.png b/src/napari_matplotlib/tests/baseline/test_slice_2D.png index d39920be6e7a22aa819f43e987f147c6e5fcd353..c1e67637f47ed3023345738317b70b65c4ada2ff 100644 GIT binary patch literal 33418 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 literal 33181 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"~RoOpdgzi9L*Eb`CH-( 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 diff --git a/src/napari_matplotlib/tests/baseline/test_slice_3D.png b/src/napari_matplotlib/tests/baseline/test_slice_3D.png index cf563de57381af79660e08d20d69b475d7576172..046293f31091beb772a6bf17ff3cbf9a24e8625b 100644 GIT binary patch literal 14112 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 V(Z`DS18qYW3{3R%f4cVTe*ospenkKP literal 14108 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 Y#LgJ)%FQ_ocVI^k>1n5afBwe*0{GFbzW@LL diff --git a/src/napari_matplotlib/tests/scatter/baseline/test_features_scatter_widget_2D.png b/src/napari_matplotlib/tests/scatter/baseline/test_features_scatter_widget_2D.png index 75965607ecf3857805eddaf7b5ab50136063ffc1..9237dbdcdeb8bb300cd8ebb044819e3c0223bec6 100644 GIT binary patch literal 24160 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 z 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 literal 24841 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 diff --git a/src/napari_matplotlib/tests/scatter/baseline/test_scatter_2D.png b/src/napari_matplotlib/tests/scatter/baseline/test_scatter_2D.png index 102191066069f97781e10c54be841777207a0f26..a11bda5f281b731712a2d1c6076f72569e0ff5e0 100644 GIT binary patch literal 18394 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 diff --git a/src/napari_matplotlib/tests/scatter/baseline/test_scatter_3D.png b/src/napari_matplotlib/tests/scatter/baseline/test_scatter_3D.png index 3e648eec5deaaf7fb43b699ffaf184ef376d4979..cd42a8a21b31464f21c0e7622c509b667b977d13 100644 GIT binary patch literal 17142 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 fc>5+JFLCd4B!0bx1KA=Nm3o8JBUJ|sL)b3 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 Q8*(c8mfX#p8+RZ5ANrWmO8@`> From 5fd84189d8f6589ecafe4dc31d7a3d40e1153f6c Mon Sep 17 00:00:00 2001 From: David Stansby Date: Thu, 11 Jan 2024 14:17:44 +0000 Subject: [PATCH 100/216] Clean out old styling code --- MANIFEST.in | 1 - docs/user_guide.rst | 11 +-- pyproject.toml | 2 +- src/napari_matplotlib/base.py | 6 -- src/napari_matplotlib/styles/README.md | 3 - src/napari_matplotlib/styles/dark.mplstyle | 12 ---- src/napari_matplotlib/styles/light.mplstyle | 12 ---- .../tests/data/test_theme.mplstyle | 15 ---- src/napari_matplotlib/tests/test_theme.py | 71 +------------------ 9 files changed, 5 insertions(+), 128 deletions(-) delete mode 100644 src/napari_matplotlib/styles/README.md delete mode 100644 src/napari_matplotlib/styles/dark.mplstyle delete mode 100644 src/napari_matplotlib/styles/light.mplstyle delete mode 100644 src/napari_matplotlib/tests/data/test_theme.mplstyle diff --git a/MANIFEST.in b/MANIFEST.in index d625d95e..7ce16f9b 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,6 +1,5 @@ include LICENSE include README.md -recursive-include * *.mplstyle recursive-exclude * __pycache__ recursive-exclude * *.py[co] diff --git a/docs/user_guide.rst b/docs/user_guide.rst index fbd48db1..253e3149 100644 --- a/docs/user_guide.rst +++ b/docs/user_guide.rst @@ -40,11 +40,6 @@ To use these: Customising plots ----------------- -`Matplotlib style sheets `__ can be used to customise -the plots generated by ``napari-matplotlib``. -To use a custom style sheet: - -1. Save it as ``napari-matplotlib.mplstyle`` -2. Put it in the Matplotlib configuration directory. - The location of this directory varies on different computers, - and can be found by calling :func:`matplotlib.get_configdir()`. +``napari-matplotlib`` uses colours from the current napari theme to customise the +Matplotlib plots. See `the example on creating a new napari theme +`_ for a helpful guide. diff --git a/pyproject.toml b/pyproject.toml index dea0fd6a..22ff307f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ write_to = "src/napari_matplotlib/_version.py" [tool.pytest.ini_options] qt_api = "pyqt6" -addopts = "--mpl" +addopts = "--mpl --mpl-baseline-relative" filterwarnings = [ "error", # Coming from vispy diff --git a/src/napari_matplotlib/base.py b/src/napari_matplotlib/base.py index c865c8ad..fb9e485c 100644 --- a/src/napari_matplotlib/base.py +++ b/src/napari_matplotlib/base.py @@ -2,7 +2,6 @@ from pathlib import Path from typing import Optional -import matplotlib import matplotlib.style as mplstyle import napari from matplotlib.backends.backend_qtagg import ( # type: ignore[attr-defined] @@ -19,10 +18,6 @@ __all__ = ["BaseNapariMPLWidget", "NapariMPLWidget", "SingleAxesWidget"] -_CUSTOM_STYLE_PATH = ( - Path(matplotlib.get_configdir()) / "napari-matplotlib.mplstyle" -) - class BaseNapariMPLWidget(QWidget): """ @@ -47,7 +42,6 @@ def __init__( ): super().__init__(parent=parent) self.viewer = napari_viewer - # self._mpl_style_sheet_path: Optional[Path] = None self.napari_theme_style_sheet = style_sheet_from_theme( get_theme(napari_viewer.theme, as_dict=False) ) diff --git a/src/napari_matplotlib/styles/README.md b/src/napari_matplotlib/styles/README.md deleted file mode 100644 index 79d3c417..00000000 --- a/src/napari_matplotlib/styles/README.md +++ /dev/null @@ -1,3 +0,0 @@ -This folder contains default built-in Matplotlib style sheets. -See https://matplotlib.org/stable/tutorials/introductory/customizing.html#defining-your-own-style -for more info on Matplotlib style sheets. diff --git a/src/napari_matplotlib/styles/dark.mplstyle b/src/napari_matplotlib/styles/dark.mplstyle deleted file mode 100644 index 1658f9b4..00000000 --- a/src/napari_matplotlib/styles/dark.mplstyle +++ /dev/null @@ -1,12 +0,0 @@ -# Dark-theme napari colour scheme for matplotlib plots - -# text (very light grey - almost white): #f0f1f2 -# foreground (mid grey): #414851 -# background (dark blue-gray): #262930 - -figure.facecolor : none -axes.labelcolor : f0f1f2 -axes.facecolor : none -axes.edgecolor : 414851 -xtick.color : f0f1f2 -ytick.color : f0f1f2 diff --git a/src/napari_matplotlib/styles/light.mplstyle b/src/napari_matplotlib/styles/light.mplstyle deleted file mode 100644 index 3b8d7d1d..00000000 --- a/src/napari_matplotlib/styles/light.mplstyle +++ /dev/null @@ -1,12 +0,0 @@ -# Light-theme napari colour scheme for matplotlib plots - -# text (very dark grey - almost black): #3b3a39 -# foreground (mid grey): #d6d0ce -# background (brownish beige): #efebe9 - -figure.facecolor : none -axes.labelcolor : 3b3a39 -axes.facecolor : none -axes.edgecolor : d6d0ce -xtick.color : 3b3a39 -ytick.color : 3b3a39 diff --git a/src/napari_matplotlib/tests/data/test_theme.mplstyle b/src/napari_matplotlib/tests/data/test_theme.mplstyle deleted file mode 100644 index 2f94b31f..00000000 --- a/src/napari_matplotlib/tests/data/test_theme.mplstyle +++ /dev/null @@ -1,15 +0,0 @@ -# Dark-theme napari colour scheme for matplotlib plots - -#f4b8b2 # light red -#b2e4f4 # light blue -#0aa3fc # dark blue -#008939 # dark green - -figure.facecolor : f4b8b2 # light red -axes.facecolor : b2e4f4 # light blue -axes.edgecolor : 0aa3fc # dark blue - -xtick.color : 008939 # dark green -xtick.labelcolor : 008939 # dark green -ytick.color : 008939 # dark green -ytick.labelcolor : 008939 # dark green diff --git a/src/napari_matplotlib/tests/test_theme.py b/src/napari_matplotlib/tests/test_theme.py index 1042d3f3..ac576d9c 100644 --- a/src/napari_matplotlib/tests/test_theme.py +++ b/src/napari_matplotlib/tests/test_theme.py @@ -1,15 +1,9 @@ -import os -import shutil -from copy import deepcopy -from pathlib import Path -import matplotlib import napari import numpy as np import pytest -from matplotlib.colors import to_rgba -from napari_matplotlib import HistogramWidget, ScatterWidget +from napari_matplotlib import ScatterWidget from napari_matplotlib.base import NapariMPLWidget @@ -127,66 +121,3 @@ def test_no_theme_side_effects(make_napari_viewer): unrelated_figure.tight_layout() return unrelated_figure - - -@pytest.mark.mpl_image_compare -def test_custom_theme(make_napari_viewer, theme_path, brain_data): - viewer = make_napari_viewer() - viewer.theme = "dark" - - widget = ScatterWidget(viewer) - widget.mpl_style_sheet_path = theme_path - - viewer.add_image(brain_data[0], **brain_data[1], name="brain") - viewer.add_image( - brain_data[0] * -1, **brain_data[1], name="brain_reversed" - ) - - viewer.layers.selection.clear() - viewer.layers.selection.add(viewer.layers[0]) - viewer.layers.selection.add(viewer.layers[1]) - - return deepcopy(widget.figure) - - -def find_mpl_stylesheet(name: str) -> Path: - """Find the built-in matplotlib stylesheet.""" - return Path(matplotlib.__path__[0]) / f"mpl-data/stylelib/{name}.mplstyle" - - -def test_custom_stylesheet(make_napari_viewer, image_data): - """ - Test that a stylesheet in the current directory is given precidence. - - Do this by copying over a stylesheet from matplotlib's built in styles, - naming it correctly, and checking the colours are as expected. - """ - # Copy Solarize_Light2 as if it was a user-overriden stylesheet. - style_sheet_path = ( - Path(matplotlib.get_configdir()) / "napari-matplotlib.mplstyle" - ) - if style_sheet_path.exists(): - pytest.skip("Won't ovewrite existing custom style sheet.") - shutil.copy( - find_mpl_stylesheet("Solarize_Light2"), - style_sheet_path, - ) - - try: - viewer = make_napari_viewer() - viewer.add_image(image_data[0], **image_data[1]) - widget = HistogramWidget(viewer) - assert widget.mpl_style_sheet_path == style_sheet_path - ax = widget.figure.gca() - - # The axes should have a light brownish grey background: - assert ax.get_facecolor() == to_rgba("#eee8d5") - assert ax.patch.get_facecolor() == to_rgba("#eee8d5") - - # The figure background and axis gridlines are light yellow: - assert widget.figure.patch.get_facecolor() == to_rgba("#fdf6e3") - for gridline in ax.get_xgridlines() + ax.get_ygridlines(): - assert gridline.get_visible() is True - assert gridline.get_color() == "#b0b0b0" - finally: - os.remove(style_sheet_path) From 09abee3aba7ee72dbe4ebf6dcaa26793ed11d2d5 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Thu, 11 Jan 2024 14:46:50 +0000 Subject: [PATCH 101/216] Add a features histogram example --- examples/features_hist.py | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 examples/features_hist.py diff --git a/examples/features_hist.py b/examples/features_hist.py new file mode 100644 index 00000000..899ddef3 --- /dev/null +++ b/examples/features_hist.py @@ -0,0 +1,42 @@ +""" +Hisogram of features +==================== +""" + +import napari +import numpy as np +import numpy.typing as npt +from skimage.measure import regionprops_table + +# make a test label image +label_image: npt.NDArray[np.uint16] = np.zeros((100, 100), dtype=np.uint16) + +label_image[10:20, 10:20] = 1 +label_image[50:70, 50:70] = 2 + +feature_table_1 = regionprops_table( + label_image, properties=("label", "area", "perimeter") +) +feature_table_1["index"] = feature_table_1["label"] + +# make the points data +n_points = 100 +points_data = 100 * np.random.random((100, 2)) +points_features = { + "feature_0": np.random.random((n_points,)), + "feature_1": np.random.random((n_points,)), + "feature_2": np.random.random((n_points,)), +} + +# create the viewer +viewer = napari.Viewer() +viewer.add_labels(label_image, features=feature_table_1) +viewer.add_points(points_data, features=points_features) + +# make the widget +viewer.window.add_plugin_dock_widget( + plugin_name="napari-matplotlib", widget_name="FeaturesHistogram" +) + +if __name__ == "__main__": + napari.run() From a9630f780aa7abd6a57d00cbeec375dfec39193b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 13 Jan 2024 12:02:13 +0000 Subject: [PATCH 102/216] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/napari_matplotlib/tests/test_theme.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/napari_matplotlib/tests/test_theme.py b/src/napari_matplotlib/tests/test_theme.py index ac576d9c..2310f32f 100644 --- a/src/napari_matplotlib/tests/test_theme.py +++ b/src/napari_matplotlib/tests/test_theme.py @@ -1,4 +1,3 @@ - import napari import numpy as np import pytest From f06d31d250fcb1657e219171d5ce19d2c5db173f Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sat, 13 Jan 2024 12:21:01 +0000 Subject: [PATCH 103/216] Try napari 0.4.19rc3 --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index fa8b2394..312ffaa1 100644 --- a/setup.cfg +++ b/setup.cfg @@ -47,7 +47,7 @@ napari.manifest = [options.extras_require] docs = - napari[all]==0.4.18 + napari[all]==0.4.19rc3 numpydoc pydantic<2 pydata-sphinx-theme From 99a3fc0a1ab3d4f97937d862b0517890c54d31c1 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Thu, 11 Jan 2024 13:01:59 +0000 Subject: [PATCH 104/216] Set np.linspace dtype based on image dtype for the HistogramWidget --- src/napari_matplotlib/histogram.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 27f328ae..7cf24167 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -4,7 +4,12 @@ import numpy as np import numpy.typing as npt from matplotlib.container import BarContainer -from qtpy.QtWidgets import QComboBox, QLabel, QVBoxLayout, QWidget +from qtpy.QtWidgets import ( + QComboBox, + QLabel, + QVBoxLayout, + QWidget, +) from .base import SingleAxesWidget from .features import FEATURES_LAYER_TYPES @@ -65,7 +70,7 @@ def draw(self) -> None: # Important to calculate bins after slicing 3D data, to avoid reading # whole cube into memory. - bins = np.linspace(np.min(data), np.max(data), 100) + bins = np.linspace(np.min(data), np.max(data), 100, dtype=data.dtype) if layer.rgb: # Histogram RGB channels independently From 2fea1b0587545d28e350abb24ebb903ee8f58ea6 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Thu, 11 Jan 2024 13:04:00 +0000 Subject: [PATCH 105/216] update changelog --- docs/changelog.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 45952311..cb591f94 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -8,6 +8,10 @@ Changes - Histogram plots of points and vector layers are now coloured with their napari colourmap. - Added support for Matplotlib 3.8 +Bug fixes +~~~~~~~~~ +- Use integer bin limits for integer images in ``HistogramWidget`` + 1.1.0 ----- Additions From c59f1e2c42fd0e3d9b73c26d749c6ecc4d4fa3dc Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Thu, 11 Jan 2024 14:49:44 +0000 Subject: [PATCH 106/216] ensure histograms of integer data have equal bin width --- src/napari_matplotlib/histogram.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 7cf24167..5c2b3997 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -70,7 +70,12 @@ def draw(self) -> None: # Important to calculate bins after slicing 3D data, to avoid reading # whole cube into memory. - bins = np.linspace(np.min(data), np.max(data), 100, dtype=data.dtype) + if data.dtype.kind == "i": + # Make sure integer data types have integer sized bins + step = (np.max(data) - np.min(data)) // 100 + bins = np.arange(np.min(data), np.max(data) + step, step) + else: + bins = np.linspace(np.min(data), np.max(data), 100) if layer.rgb: # Histogram RGB channels independently From 75bfe52c8005bb023b47038debbabba5c7403aa5 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Thu, 11 Jan 2024 14:50:55 +0000 Subject: [PATCH 107/216] make linters happy --- src/napari_matplotlib/histogram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 5c2b3997..8cbf543b 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -72,7 +72,7 @@ def draw(self) -> None: # whole cube into memory. if data.dtype.kind == "i": # Make sure integer data types have integer sized bins - step = (np.max(data) - np.min(data)) // 100 + step = (np.max(data) - np.min(data)) // 100 bins = np.arange(np.min(data), np.max(data) + step, step) else: bins = np.linspace(np.min(data), np.max(data), 100) From 7b48bc31da0fbd0aa1afff8994ee5c624f2429ed Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Thu, 11 Jan 2024 15:19:22 +0000 Subject: [PATCH 108/216] convert bins array to list to make mypy happy --- src/napari_matplotlib/histogram.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 8cbf543b..1b494bef 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -82,13 +82,13 @@ def draw(self) -> None: for i, c in enumerate("rgb"): self.axes.hist( data[..., i].ravel(), - bins=bins, + bins=bins.tolist(), label=c, histtype="step", color=_COLORS[c], ) else: - self.axes.hist(data.ravel(), bins=bins, label=layer.name) + self.axes.hist(data.ravel(), bins=bins.tolist(), label=layer.name) self._contrast_lines = [ self.axes.axvline(lim, color="white") From 71f671662a70a746343762f9449ea66af9436ea8 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sat, 13 Jan 2024 12:43:44 +0000 Subject: [PATCH 109/216] Fix integer step size --- src/napari_matplotlib/histogram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 1b494bef..f4191d78 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -72,7 +72,7 @@ def draw(self) -> None: # whole cube into memory. if data.dtype.kind == "i": # Make sure integer data types have integer sized bins - step = (np.max(data) - np.min(data)) // 100 + step = 1 + (np.max(data) - np.min(data)) // 100 bins = np.arange(np.min(data), np.max(data) + step, step) else: bins = np.linspace(np.min(data), np.max(data), 100) From 166d77643f5851c87b3200dce1ef5f7d3912abff Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 15 Jan 2024 09:01:23 +0000 Subject: [PATCH 110/216] Use integer bins for unisnged int data --- src/napari_matplotlib/histogram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index f4191d78..32ea0d9d 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -70,7 +70,7 @@ def draw(self) -> None: # Important to calculate bins after slicing 3D data, to avoid reading # whole cube into memory. - if data.dtype.kind == "i": + if data.dtype.kind in {"i", "u"}: # Make sure integer data types have integer sized bins step = 1 + (np.max(data) - np.min(data)) // 100 bins = np.arange(np.min(data), np.max(data) + step, step) From 14121492690b46bffb0aa7d05082d3ea86e8f120 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 15 Jan 2024 09:02:08 +0000 Subject: [PATCH 111/216] ensure histogram bin step size is always a positive integer --- src/napari_matplotlib/histogram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 32ea0d9d..1d1f29bb 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -72,7 +72,7 @@ def draw(self) -> None: # whole cube into memory. if data.dtype.kind in {"i", "u"}: # Make sure integer data types have integer sized bins - step = 1 + (np.max(data) - np.min(data)) // 100 + step = 1 + abs(np.max(data) - np.min(data)) // 100 bins = np.arange(np.min(data), np.max(data) + step, step) else: bins = np.linspace(np.min(data), np.max(data), 100) From 610f19cbeae553c969785763f3d505e46847771d Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 15 Jan 2024 11:00:17 +0000 Subject: [PATCH 112/216] Ensure step size is at least 1 Update baseline images --- src/napari_matplotlib/histogram.py | 3 ++- .../tests/baseline/test_histogram_2D.png | Bin 28430 -> 25526 bytes .../tests/baseline/test_histogram_3D.png | Bin 20215 -> 20181 bytes 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 1d1f29bb..2db2f08b 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -72,7 +72,8 @@ def draw(self) -> None: # whole cube into memory. if data.dtype.kind in {"i", "u"}: # Make sure integer data types have integer sized bins - step = 1 + abs(np.max(data) - np.min(data)) // 100 + step = abs(np.max(data) - np.min(data)) // 100 + step = max(1, step) bins = np.arange(np.min(data), np.max(data) + step, step) else: bins = np.linspace(np.min(data), np.max(data), 100) diff --git a/src/napari_matplotlib/tests/baseline/test_histogram_2D.png b/src/napari_matplotlib/tests/baseline/test_histogram_2D.png index 856d22d3381f7ee9c81ab77962573aa52bf56840..00023ae722cf7317a8ef83b9cc9f7ce4fecf286d 100644 GIT binary patch literal 25526 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 literal 28430 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 diff --git a/src/napari_matplotlib/tests/baseline/test_histogram_3D.png b/src/napari_matplotlib/tests/baseline/test_histogram_3D.png index b5670bca7b55900edf960372259216b591052d84..bd3cafb84784d97343f4bf9f1ef52ad4856a6d96 100644 GIT binary patch literal 20181 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 mL9*|JFMA%$;1XIow1kUvs*B%g*VR)%C+J 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 nM|}`B@L%_9`z;GS-=O7HE@oV~diVbU7%cIR From f149a10ebbfbc88c96cca213a1710a610eb163d9 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Mon, 15 Jan 2024 15:09:40 +0000 Subject: [PATCH 113/216] Add changelog for 2.0 --- docs/changelog.rst | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index cb591f94..6395e9c1 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,5 +1,26 @@ Changelog ========= +2.0.0 +----- +Changes to custom theming +~~~~~~~~~~~~~~~~~~~~~~~~~ +``napari-matplotlib`` now uses colours from the current napari theme to customise the +Matplotlib plots. See `the example on creating a new napari theme +`_ for a helpful guide on how to +create custom napari themes. + +This means support for custom Matplotlib styles sheets has been removed. + +If you spot any issues with the new theming, please report them at +https://github.com/matplotlib/napari-matplotlib/issues. + +Other changes +~~~~~~~~~~~~~ +- Histogram bin sizes for integer-type data are now force to be an integer. +- The ``HistogramWidget`` now has two vertical lines showing the contrast limits used + to render the selected layer in the main napari window. +- Added an example gallery for the ``FeaturesHistogramWidget``. + 1.2.0 ----- Changes @@ -8,10 +29,6 @@ Changes - Histogram plots of points and vector layers are now coloured with their napari colourmap. - Added support for Matplotlib 3.8 -Bug fixes -~~~~~~~~~ -- Use integer bin limits for integer images in ``HistogramWidget`` - 1.1.0 ----- Additions From a7b09d4ce297cad9dd6fa424403c8398ec20bc74 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Thu, 11 Jan 2024 10:55:41 +0000 Subject: [PATCH 114/216] Add widgets to set bin parameters for histograms Also set np.linspace dtype based on image dtype --- src/napari_matplotlib/histogram.py | 130 +++++++++++++++++++++++++---- 1 file changed, 116 insertions(+), 14 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 2db2f08b..fd44d6f0 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -4,12 +4,7 @@ import numpy as np import numpy.typing as npt from matplotlib.container import BarContainer -from qtpy.QtWidgets import ( - QComboBox, - QLabel, - QVBoxLayout, - QWidget, -) +from qtpy.QtWidgets import QComboBox, QLabel, QVBoxLayout, QWidget, QGroupBox, QFormLayout, QDoubleSpinBox, QSpinBox, QAbstractSpinBox from .base import SingleAxesWidget from .features import FEATURES_LAYER_TYPES @@ -34,6 +29,50 @@ def __init__( parent: Optional[QWidget] = None, ): super().__init__(napari_viewer, parent=parent) + + # Create widgets for setting bin parameters + bins_start = QDoubleSpinBox() + bins_start.setObjectName("bins start") + bins_start.setStepType(QAbstractSpinBox.AdaptiveDecimalStepType) + bins_start.setRange(-1e10, 1e10) + bins_start.setValue(0) + bins_start.setWrapping(True) + bins_start.setKeyboardTracking(False) + bins_start.setDecimals(2) + + bins_stop = QDoubleSpinBox() + bins_stop.setObjectName("bins stop") + bins_stop.setStepType(QAbstractSpinBox.AdaptiveDecimalStepType) + bins_stop.setRange(-1e10, 1e10) + bins_stop.setValue(100) + bins_stop.setKeyboardTracking(False) + bins_stop.setDecimals(2) + + bins_num = QSpinBox() + bins_num.setObjectName("bins num") + bins_num.setRange(1, 100_000) + bins_num.setValue(101) + bins_num.setWrapping(False) + bins_num.setKeyboardTracking(False) + + # Set bins widget layout + bins_selection_layout = QFormLayout() + bins_selection_layout.addRow("start", bins_start) + bins_selection_layout.addRow("stop", bins_stop) + bins_selection_layout.addRow("num", bins_num) + + # Group the widgets and add to main layout + bins_widget_group = QGroupBox("Bins") + bins_widget_group_layout = QVBoxLayout() + bins_widget_group_layout.addLayout(bins_selection_layout) + bins_widget_group.setLayout(bins_widget_group_layout) + self.layout().addWidget(bins_widget_group) + + # Add callbacks + bins_start.valueChanged.connect(self._draw) + bins_stop.valueChanged.connect(self._draw) + bins_num.valueChanged.connect(self._draw) + self._update_layers(None) self.viewer.events.theme.connect(self._on_napari_theme_changed) @@ -53,11 +92,47 @@ def _update_contrast_lims(self) -> None: self.figure.canvas.draw() - def draw(self) -> None: - """ - Clear the axes and histogram the currently selected layer/slice. - """ - layer = self.layers[0] + @property + def bins_start(self) -> float: + """Minimum bin edge""" + return self.findChild(QDoubleSpinBox, name="bins start").value() + + @bins_start.setter + def bins_start(self, start: int | float) -> None: + """Set the minimum bin edge""" + self.findChild(QDoubleSpinBox, name="bins start").setValue(start) + + @property + def bins_stop(self) -> float: + """Maximum bin edge""" + return self.findChild(QDoubleSpinBox, name="bins stop").value() + + @bins_stop.setter + def bins_stop(self, stop: int | float) -> None: + """Set the maximum bin edge""" + self.findChild(QDoubleSpinBox, name="bins stop").setValue(stop) + + @property + def bins_num(self) -> int: + """Number of bins to use""" + return self.findChild(QSpinBox, name="bins num").value() + + @bins_num.setter + def bins_num(self, num: int) -> None: + """Set the number of bins to use""" + self.findChild(QSpinBox, name="bins num").setValue(num) + + def autoset_widget_bins(self, data: npt.ArrayLike) -> None: + """Update widgets with bins determined from the image data""" + + bins = np.linspace(np.min(data), np.max(data), 100, dtype=data.dtype) + self.bins_start = bins[0] + self.bins_stop = bins[-1] + self.bins_num = bins.size + + + def _get_layer_data(self, layer) -> np.ndarray: + """Get the data associated with a given layer""" if layer.data.ndim - layer.rgb == 3: # 3D data, can be single channel or RGB @@ -65,18 +140,45 @@ def draw(self) -> None: self.axes.set_title(f"z={self.current_z}") else: data = layer.data + # Read data into memory if it's a dask array data = np.asarray(data) + return data + + def on_update_layers(self) -> None: + """ + Called when the layer selection changes by ``self._update_layers()``. + """ + + if not self.layers: + return + + # Reset to bin start, stop and step + layer_data = self._get_layer_data(self.layers[0]) + self.autoset_widget_bins(data=layer_data) + + # Only allow integer bins for integer data + n_decimals = 0 if np.issubdtype(layer_data.dtype, np.integer) else 2 + self.findChild(QDoubleSpinBox, name="bins start").setDecimals(n_decimals) + self.findChild(QDoubleSpinBox, name="bins stop").setDecimals(n_decimals) + + def draw(self) -> None: + """ + Clear the axes and histogram the currently selected layer/slice. + """ + layer = self.layers[0] + data = self._get_layer_data(layer) + # Important to calculate bins after slicing 3D data, to avoid reading # whole cube into memory. if data.dtype.kind in {"i", "u"}: # Make sure integer data types have integer sized bins - step = abs(np.max(data) - np.min(data)) // 100 + step = (self.bins_start - self.bins_stop) // self.bins_num step = max(1, step) - bins = np.arange(np.min(data), np.max(data) + step, step) + bins = np.arange(self.bins_start, self.bins_stop + step, step) else: - bins = np.linspace(np.min(data), np.max(data), 100) + bins = np.linspace(self.bins_start, self.bins_stop, self.bins_num) if layer.rgb: # Histogram RGB channels independently From 96b2f0cd3cc6f5400ba4f8eaca71ea9482a56a07 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Thu, 11 Jan 2024 11:44:02 +0000 Subject: [PATCH 115/216] Add test for histogram widget when setting bin parameters --- .../tests/baseline/test_histogram_2D_bins.png | Bin 0 -> 21366 bytes src/napari_matplotlib/tests/test_histogram.py | 15 ++++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 src/napari_matplotlib/tests/baseline/test_histogram_2D_bins.png diff --git a/src/napari_matplotlib/tests/baseline/test_histogram_2D_bins.png b/src/napari_matplotlib/tests/baseline/test_histogram_2D_bins.png new file mode 100644 index 0000000000000000000000000000000000000000..eb43c3108147079f9410a40936975d94158ac6f0 GIT binary patch literal 21366 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 b-^Cj#YN-+8Uxv&S3Wb(bypnn8+Wr3z5b2@o literal 0 HcmV?d00001 diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index 1ceca519..b392ef50 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -9,6 +9,20 @@ assert_figures_not_equal, ) +@pytest.mark.mpl_image_compare +def test_histogram_2D_bins(make_napari_viewer, astronaut_data): + viewer = make_napari_viewer() + viewer.theme = "light" + viewer.add_image(astronaut_data[0], **astronaut_data[1]) + widget = HistogramWidget(viewer) + viewer.window.add_dock_widget(widget) + widget.bins_start = -50 + widget.bins_stop = 300 + widget.bins_num = 35 + fig = widget.figure + # Need to return a copy, as original figure is too eagerley garbage + # collected by the widget + return deepcopy(fig) @pytest.mark.mpl_image_compare def test_histogram_2D(make_napari_viewer, astronaut_data): @@ -20,7 +34,6 @@ def test_histogram_2D(make_napari_viewer, astronaut_data): # collected by the widget return deepcopy(fig) - @pytest.mark.mpl_image_compare def test_histogram_3D(make_napari_viewer, brain_data): viewer = make_napari_viewer() From b8623ededfa0dd4c922f507a38a9430b86665328 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Thu, 11 Jan 2024 11:50:21 +0000 Subject: [PATCH 116/216] Update changelog --- docs/changelog.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index cb591f94..96b353dc 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -7,6 +7,11 @@ Changes - Dropped support for Python 3.8, and added support for Python 3.11. - Histogram plots of points and vector layers are now coloured with their napari colourmap. - Added support for Matplotlib 3.8 +- Add widgets for setting histogram bin parameters + +Bug fixes +~~~~~~~~~ +- Use integer bin limits for integer images in ``HistogramWidget`` Bug fixes ~~~~~~~~~ From 4e4fb84b8dc7a1049dd7b1795425d06e117310f5 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Thu, 11 Jan 2024 11:52:56 +0000 Subject: [PATCH 117/216] Make linters happy --- src/napari_matplotlib/histogram.py | 24 +++++++++++++------ src/napari_matplotlib/tests/test_histogram.py | 3 +++ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index fd44d6f0..c5272665 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -4,7 +4,17 @@ import numpy as np import numpy.typing as npt from matplotlib.container import BarContainer -from qtpy.QtWidgets import QComboBox, QLabel, QVBoxLayout, QWidget, QGroupBox, QFormLayout, QDoubleSpinBox, QSpinBox, QAbstractSpinBox +from qtpy.QtWidgets import ( + QAbstractSpinBox, + QComboBox, + QDoubleSpinBox, + QFormLayout, + QGroupBox, + QLabel, + QSpinBox, + QVBoxLayout, + QWidget, +) from .base import SingleAxesWidget from .features import FEATURES_LAYER_TYPES @@ -124,16 +134,13 @@ def bins_num(self, num: int) -> None: def autoset_widget_bins(self, data: npt.ArrayLike) -> None: """Update widgets with bins determined from the image data""" - bins = np.linspace(np.min(data), np.max(data), 100, dtype=data.dtype) self.bins_start = bins[0] self.bins_stop = bins[-1] self.bins_num = bins.size - def _get_layer_data(self, layer) -> np.ndarray: """Get the data associated with a given layer""" - if layer.data.ndim - layer.rgb == 3: # 3D data, can be single channel or RGB data = layer.data[self.current_z] @@ -150,7 +157,6 @@ def on_update_layers(self) -> None: """ Called when the layer selection changes by ``self._update_layers()``. """ - if not self.layers: return @@ -160,8 +166,12 @@ def on_update_layers(self) -> None: # Only allow integer bins for integer data n_decimals = 0 if np.issubdtype(layer_data.dtype, np.integer) else 2 - self.findChild(QDoubleSpinBox, name="bins start").setDecimals(n_decimals) - self.findChild(QDoubleSpinBox, name="bins stop").setDecimals(n_decimals) + self.findChild(QDoubleSpinBox, name="bins start").setDecimals( + n_decimals + ) + self.findChild(QDoubleSpinBox, name="bins stop").setDecimals( + n_decimals + ) def draw(self) -> None: """ diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index b392ef50..58acf236 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -9,6 +9,7 @@ assert_figures_not_equal, ) + @pytest.mark.mpl_image_compare def test_histogram_2D_bins(make_napari_viewer, astronaut_data): viewer = make_napari_viewer() @@ -24,6 +25,7 @@ def test_histogram_2D_bins(make_napari_viewer, astronaut_data): # collected by the widget return deepcopy(fig) + @pytest.mark.mpl_image_compare def test_histogram_2D(make_napari_viewer, astronaut_data): viewer = make_napari_viewer() @@ -34,6 +36,7 @@ def test_histogram_2D(make_napari_viewer, astronaut_data): # collected by the widget return deepcopy(fig) + @pytest.mark.mpl_image_compare def test_histogram_3D(make_napari_viewer, brain_data): viewer = make_napari_viewer() From 5ac1f712cfa8f760a5e4e9ad028fd8882d087ee4 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Thu, 11 Jan 2024 12:18:55 +0000 Subject: [PATCH 118/216] Fix type hints --- src/napari_matplotlib/histogram.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index c5272665..3615172b 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -1,4 +1,4 @@ -from typing import Any, Optional, cast +from typing import Any, Optional, Union, cast import napari import numpy as np @@ -108,7 +108,7 @@ def bins_start(self) -> float: return self.findChild(QDoubleSpinBox, name="bins start").value() @bins_start.setter - def bins_start(self, start: int | float) -> None: + def bins_start(self, start: Union[int, float]) -> None: """Set the minimum bin edge""" self.findChild(QDoubleSpinBox, name="bins start").setValue(start) @@ -118,7 +118,7 @@ def bins_stop(self) -> float: return self.findChild(QDoubleSpinBox, name="bins stop").value() @bins_stop.setter - def bins_stop(self, stop: int | float) -> None: + def bins_stop(self, stop: Union[int, float]) -> None: """Set the maximum bin edge""" self.findChild(QDoubleSpinBox, name="bins stop").setValue(stop) @@ -132,14 +132,14 @@ def bins_num(self, num: int) -> None: """Set the number of bins to use""" self.findChild(QSpinBox, name="bins num").setValue(num) - def autoset_widget_bins(self, data: npt.ArrayLike) -> None: + def autoset_widget_bins(self, data: npt.NDArray[Any]) -> None: """Update widgets with bins determined from the image data""" bins = np.linspace(np.min(data), np.max(data), 100, dtype=data.dtype) self.bins_start = bins[0] self.bins_stop = bins[-1] self.bins_num = bins.size - def _get_layer_data(self, layer) -> np.ndarray: + def _get_layer_data(self, layer: napari.layers.Layer) -> npt.NDArray[Any]: """Get the data associated with a given layer""" if layer.data.ndim - layer.rgb == 3: # 3D data, can be single channel or RGB From fab29063cdb87b848c35002847656f663ac051ef Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Thu, 11 Jan 2024 12:51:53 +0000 Subject: [PATCH 119/216] Don't allow bins lower than 0 if dtype is unisgned --- examples/histogram.py | 2 +- src/napari_matplotlib/histogram.py | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/examples/histogram.py b/examples/histogram.py index ccda491a..17111f53 100644 --- a/examples/histogram.py +++ b/examples/histogram.py @@ -5,7 +5,7 @@ import napari viewer = napari.Viewer() -viewer.open_sample("napari", "kidney") +viewer.open_sample("napari", "coins") viewer.window.add_plugin_dock_widget( plugin_name="napari-matplotlib", widget_name="Histogram" diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 3615172b..348a506e 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -46,7 +46,7 @@ def __init__( bins_start.setStepType(QAbstractSpinBox.AdaptiveDecimalStepType) bins_start.setRange(-1e10, 1e10) bins_start.setValue(0) - bins_start.setWrapping(True) + bins_start.setWrapping(False) bins_start.setKeyboardTracking(False) bins_start.setDecimals(2) @@ -55,6 +55,7 @@ def __init__( bins_stop.setStepType(QAbstractSpinBox.AdaptiveDecimalStepType) bins_stop.setRange(-1e10, 1e10) bins_stop.setValue(100) + bins_start.setWrapping(False) bins_stop.setKeyboardTracking(False) bins_stop.setDecimals(2) @@ -165,13 +166,17 @@ def on_update_layers(self) -> None: self.autoset_widget_bins(data=layer_data) # Only allow integer bins for integer data + # And only allow values greater than 0 for unsigned integers n_decimals = 0 if np.issubdtype(layer_data.dtype, np.integer) else 2 - self.findChild(QDoubleSpinBox, name="bins start").setDecimals( - n_decimals - ) - self.findChild(QDoubleSpinBox, name="bins stop").setDecimals( - n_decimals - ) + is_unsigned = layer_data.dtype.kind == "u" + minimum_value = 0 if is_unsigned else -1e10 + + bins_start = self.findChild(QDoubleSpinBox, name="bins start") + bins_stop = self.findChild(QDoubleSpinBox, name="bins stop") + bins_start.setDecimals(n_decimals) + bins_stop.setDecimals(n_decimals) + bins_start.setMinimum(minimum_value) + bins_stop.setMinimum(minimum_value) def draw(self) -> None: """ From 55531747ef1e8c5597df9c081c44bc92a6dc3d3c Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Thu, 11 Jan 2024 13:12:56 +0000 Subject: [PATCH 120/216] Update changelog --- docs/changelog.rst | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 96b353dc..226cbb55 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -13,10 +13,6 @@ Bug fixes ~~~~~~~~~ - Use integer bin limits for integer images in ``HistogramWidget`` -Bug fixes -~~~~~~~~~ -- Use integer bin limits for integer images in ``HistogramWidget`` - 1.1.0 ----- Additions From e86d4f692a5252881924a3e35c317d1cb24a1723 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Thu, 11 Jan 2024 13:13:17 +0000 Subject: [PATCH 121/216] Undo changes to example of HistogramWidget --- examples/histogram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/histogram.py b/examples/histogram.py index 17111f53..ccda491a 100644 --- a/examples/histogram.py +++ b/examples/histogram.py @@ -5,7 +5,7 @@ import napari viewer = napari.Viewer() -viewer.open_sample("napari", "coins") +viewer.open_sample("napari", "kidney") viewer.window.add_plugin_dock_widget( plugin_name="napari-matplotlib", widget_name="Histogram" From 6513a69c16d27d44a64396ca968152f4f45dddef Mon Sep 17 00:00:00 2001 From: David Stansby Date: Mon, 15 Jan 2024 15:26:25 +0000 Subject: [PATCH 122/216] Re-use histogram binning --- src/napari_matplotlib/histogram.py | 24 ++++++++++-------- .../test_feature_histogram_points.png | Bin 14262 -> 17145 bytes .../test_feature_histogram_vectors.png | Bin 13818 -> 17259 bytes .../tests/baseline/test_histogram_2D.png | Bin 25526 -> 25761 bytes .../tests/baseline/test_histogram_3D.png | Bin 20181 -> 20216 bytes 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 2db2f08b..073620d1 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -20,6 +20,16 @@ _COLORS = {"r": "tab:red", "g": "tab:green", "b": "tab:blue"} +def _get_bins(data: npt.NDArray[Any]) -> npt.NDArray[Any]: + if data.dtype.kind in {"i", "u"}: + # Make sure integer data types have integer sized bins + step = np.ceil(np.ptp(data) / 100) + return np.arange(np.min(data), np.max(data) + step, step) + else: + # For other data types, just have 128 evenly spaced bins + return np.linspace(np.min(data), np.max(data), 100) + + class HistogramWidget(SingleAxesWidget): """ Display a histogram of the currently selected layer. @@ -70,13 +80,7 @@ def draw(self) -> None: # Important to calculate bins after slicing 3D data, to avoid reading # whole cube into memory. - if data.dtype.kind in {"i", "u"}: - # Make sure integer data types have integer sized bins - step = abs(np.max(data) - np.min(data)) // 100 - step = max(1, step) - bins = np.arange(np.min(data), np.max(data) + step, step) - else: - bins = np.linspace(np.min(data), np.max(data), 100) + bins = _get_bins(data) if layer.rgb: # Histogram RGB channels independently @@ -215,9 +219,9 @@ def draw(self) -> None: if data is None: return - _, bins, patches = self.axes.hist( - data, bins=50, edgecolor="white", linewidth=0.3 - ) + bins = _get_bins(data) + + _, bins, patches = self.axes.hist(data, bins=bins.tolist()) patches = cast(BarContainer, patches) # recolor the histogram plot diff --git a/src/napari_matplotlib/tests/baseline/test_feature_histogram_points.png b/src/napari_matplotlib/tests/baseline/test_feature_histogram_points.png index 74b84b2d565e293cb767ab9e4efea21e5825dbfa..be8770ee9229ae198086224cd76da3ce6c4df007 100644 GIT binary patch literal 17145 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 Xw9+@;gCb23@CP$6yHtMh`u+a_hA-RY literal 14262 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 H4p09FU@Qgk literal 13818 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 Zisce6_5d|3X)Y;fcJ$a0%HdO&{soHs8O8tr literal 25526 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 diff --git a/src/napari_matplotlib/tests/baseline/test_histogram_3D.png b/src/napari_matplotlib/tests/baseline/test_histogram_3D.png index bd3cafb84784d97343f4bf9f1ef52ad4856a6d96..ec4ad96dde9bb1694ff6aca9dbd22710f1ac529f 100644 GIT binary patch literal 20216 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 mL9*|JFM Date: Mon, 15 Jan 2024 15:59:34 +0000 Subject: [PATCH 123/216] Fix autosetting bins from data --- src/napari_matplotlib/histogram.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 348a506e..b0a04f14 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -135,7 +135,19 @@ def bins_num(self, num: int) -> None: def autoset_widget_bins(self, data: npt.NDArray[Any]) -> None: """Update widgets with bins determined from the image data""" - bins = np.linspace(np.min(data), np.max(data), 100, dtype=data.dtype) + if data.dtype.kind in {"i", "u"}: + # Make sure integer data types have integer sized bins + # We can't use unsigned ints when calculating the step, otherwise + # the following warning is raised: + # 'RuntimeWarning: overflow encountered in scalar subtract' + step = ( + abs(np.min(data).astype(int) - np.max(data).astype(int)) // 100 + ) + step = max(1, step) + bins = np.arange(np.min(data), np.max(data) + step, step) + else: + bins = np.linspace(np.min(data), np.max(data), 100) + self.bins_start = bins[0] self.bins_stop = bins[-1] self.bins_num = bins.size From 127d325d37133447dd9ba462c5a4a2f806ae86c4 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 15 Jan 2024 16:05:24 +0000 Subject: [PATCH 124/216] remove duplicate on_update_layers method --- src/napari_matplotlib/histogram.py | 84 ++++++++++++++---------------- 1 file changed, 40 insertions(+), 44 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index b0a04f14..4371ea9e 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -95,6 +95,26 @@ def on_update_layers(self) -> None: for layer in self.viewer.layers: layer.events.contrast_limits.connect(self._update_contrast_lims) + if not self.layers: + return + + # Reset to bin start, stop and step + layer_data = self._get_layer_data(self.layers[0]) + self.autoset_widget_bins(data=layer_data) + + # Only allow integer bins for integer data + # And only allow values greater than 0 for unsigned integers + n_decimals = 0 if np.issubdtype(layer_data.dtype, np.integer) else 2 + is_unsigned = layer_data.dtype.kind == "u" + minimum_value = 0 if is_unsigned else -1e10 + + bins_start = self.findChild(QDoubleSpinBox, name="bins start") + bins_stop = self.findChild(QDoubleSpinBox, name="bins stop") + bins_start.setDecimals(n_decimals) + bins_stop.setDecimals(n_decimals) + bins_start.setMinimum(minimum_value) + bins_stop.setMinimum(minimum_value) + def _update_contrast_lims(self) -> None: for lim, line in zip( self.layers[0].contrast_limits, self._contrast_lines @@ -103,6 +123,25 @@ def _update_contrast_lims(self) -> None: self.figure.canvas.draw() + def autoset_widget_bins(self, data: npt.NDArray[Any]) -> None: + """Update widgets with bins determined from the image data""" + + if data.dtype.kind in {"i", "u"}: + # Make sure integer data types have integer sized bins + # We can't use unsigned ints when calculating the step, otherwise + # the following warning is raised: + # 'RuntimeWarning: overflow encountered in scalar subtract' + step = abs(np.min(data).astype(int) - np.max(data).astype(int) // 100) + step = max(1, step) + bins = np.arange(np.min(data), np.max(data) + step, step) + else: + bins = np.linspace(np.min(data), np.max(data), 100) + + self.bins_start = bins[0] + self.bins_stop = bins[-1] + self.bins_num = bins.size + + @property def bins_start(self) -> float: """Minimum bin edge""" @@ -133,25 +172,6 @@ def bins_num(self, num: int) -> None: """Set the number of bins to use""" self.findChild(QSpinBox, name="bins num").setValue(num) - def autoset_widget_bins(self, data: npt.NDArray[Any]) -> None: - """Update widgets with bins determined from the image data""" - if data.dtype.kind in {"i", "u"}: - # Make sure integer data types have integer sized bins - # We can't use unsigned ints when calculating the step, otherwise - # the following warning is raised: - # 'RuntimeWarning: overflow encountered in scalar subtract' - step = ( - abs(np.min(data).astype(int) - np.max(data).astype(int)) // 100 - ) - step = max(1, step) - bins = np.arange(np.min(data), np.max(data) + step, step) - else: - bins = np.linspace(np.min(data), np.max(data), 100) - - self.bins_start = bins[0] - self.bins_stop = bins[-1] - self.bins_num = bins.size - def _get_layer_data(self, layer: napari.layers.Layer) -> npt.NDArray[Any]: """Get the data associated with a given layer""" if layer.data.ndim - layer.rgb == 3: @@ -166,30 +186,6 @@ def _get_layer_data(self, layer: napari.layers.Layer) -> npt.NDArray[Any]: return data - def on_update_layers(self) -> None: - """ - Called when the layer selection changes by ``self._update_layers()``. - """ - if not self.layers: - return - - # Reset to bin start, stop and step - layer_data = self._get_layer_data(self.layers[0]) - self.autoset_widget_bins(data=layer_data) - - # Only allow integer bins for integer data - # And only allow values greater than 0 for unsigned integers - n_decimals = 0 if np.issubdtype(layer_data.dtype, np.integer) else 2 - is_unsigned = layer_data.dtype.kind == "u" - minimum_value = 0 if is_unsigned else -1e10 - - bins_start = self.findChild(QDoubleSpinBox, name="bins start") - bins_stop = self.findChild(QDoubleSpinBox, name="bins stop") - bins_start.setDecimals(n_decimals) - bins_stop.setDecimals(n_decimals) - bins_start.setMinimum(minimum_value) - bins_stop.setMinimum(minimum_value) - def draw(self) -> None: """ Clear the axes and histogram the currently selected layer/slice. @@ -201,7 +197,7 @@ def draw(self) -> None: # whole cube into memory. if data.dtype.kind in {"i", "u"}: # Make sure integer data types have integer sized bins - step = (self.bins_start - self.bins_stop) // self.bins_num + step = abs((self.bins_start - self.bins_stop) // self.bins_num) step = max(1, step) bins = np.arange(self.bins_start, self.bins_stop + step, step) else: From b8ffdb79a7c20fe0ceaf7b9a0dbd8174c52c63ec Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 15 Jan 2024 16:05:35 +0000 Subject: [PATCH 125/216] Make linters happy --- src/napari_matplotlib/histogram.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 4371ea9e..294e509e 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -125,13 +125,14 @@ def _update_contrast_lims(self) -> None: def autoset_widget_bins(self, data: npt.NDArray[Any]) -> None: """Update widgets with bins determined from the image data""" - if data.dtype.kind in {"i", "u"}: # Make sure integer data types have integer sized bins # We can't use unsigned ints when calculating the step, otherwise # the following warning is raised: # 'RuntimeWarning: overflow encountered in scalar subtract' - step = abs(np.min(data).astype(int) - np.max(data).astype(int) // 100) + step = abs( + np.min(data).astype(int) - np.max(data).astype(int) // 100 + ) step = max(1, step) bins = np.arange(np.min(data), np.max(data) + step, step) else: @@ -141,7 +142,6 @@ def autoset_widget_bins(self, data: npt.NDArray[Any]) -> None: self.bins_stop = bins[-1] self.bins_num = bins.size - @property def bins_start(self) -> float: """Minimum bin edge""" From 88760cf203f89df667bb3711a47e1a588626c5b9 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 15 Jan 2024 16:21:15 +0000 Subject: [PATCH 126/216] Add HistogramWidget._bin_widgets attribute for storing bin widgets --- src/napari_matplotlib/histogram.py | 46 ++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 294e509e..b846af6e 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -42,7 +42,6 @@ def __init__( # Create widgets for setting bin parameters bins_start = QDoubleSpinBox() - bins_start.setObjectName("bins start") bins_start.setStepType(QAbstractSpinBox.AdaptiveDecimalStepType) bins_start.setRange(-1e10, 1e10) bins_start.setValue(0) @@ -51,7 +50,6 @@ def __init__( bins_start.setDecimals(2) bins_stop = QDoubleSpinBox() - bins_stop.setObjectName("bins stop") bins_stop.setStepType(QAbstractSpinBox.AdaptiveDecimalStepType) bins_stop.setRange(-1e10, 1e10) bins_stop.setValue(100) @@ -60,7 +58,6 @@ def __init__( bins_stop.setDecimals(2) bins_num = QSpinBox() - bins_num.setObjectName("bins num") bins_num.setRange(1, 100_000) bins_num.setValue(101) bins_num.setWrapping(False) @@ -84,6 +81,13 @@ def __init__( bins_stop.valueChanged.connect(self._draw) bins_num.valueChanged.connect(self._draw) + # Store widgets for later usage + self._bin_widgets = { + "start": bins_start, + "stop": bins_stop, + "num": bins_num, + } + self._update_layers(None) self.viewer.events.theme.connect(self._on_napari_theme_changed) @@ -108,12 +112,17 @@ def on_update_layers(self) -> None: is_unsigned = layer_data.dtype.kind == "u" minimum_value = 0 if is_unsigned else -1e10 - bins_start = self.findChild(QDoubleSpinBox, name="bins start") - bins_stop = self.findChild(QDoubleSpinBox, name="bins stop") - bins_start.setDecimals(n_decimals) - bins_stop.setDecimals(n_decimals) - bins_start.setMinimum(minimum_value) - bins_stop.setMinimum(minimum_value) + # Disable callbacks whilst widget values might change + for widget in self._bin_widgets.values(): + widget.blockSignals(True) + + self._bin_widgets["start"].setDecimals(n_decimals) + self._bin_widgets["stop"].setDecimals(n_decimals) + self._bin_widgets["start"].setMinimum(minimum_value) + self._bin_widgets["stop"].setMinimum(minimum_value) + + for widget in self._bin_widgets.values(): + widget.blockSignals(False) def _update_contrast_lims(self) -> None: for lim, line in zip( @@ -138,39 +147,46 @@ def autoset_widget_bins(self, data: npt.NDArray[Any]) -> None: else: bins = np.linspace(np.min(data), np.max(data), 100) + # Disable callbacks whilst setting widget values + for widget in self._bin_widgets.values(): + widget.blockSignals(True) + self.bins_start = bins[0] self.bins_stop = bins[-1] self.bins_num = bins.size + for widget in self._bin_widgets.values(): + widget.blockSignals(False) + @property def bins_start(self) -> float: """Minimum bin edge""" - return self.findChild(QDoubleSpinBox, name="bins start").value() + return self._bin_widgets["start"].value() @bins_start.setter def bins_start(self, start: Union[int, float]) -> None: """Set the minimum bin edge""" - self.findChild(QDoubleSpinBox, name="bins start").setValue(start) + self._bin_widgets["start"].setValue(start) @property def bins_stop(self) -> float: """Maximum bin edge""" - return self.findChild(QDoubleSpinBox, name="bins stop").value() + return self._bin_widgets["stop"].value() @bins_stop.setter def bins_stop(self, stop: Union[int, float]) -> None: """Set the maximum bin edge""" - self.findChild(QDoubleSpinBox, name="bins stop").setValue(stop) + self._bin_widgets["stop"].setValue(stop) @property def bins_num(self) -> int: """Number of bins to use""" - return self.findChild(QSpinBox, name="bins num").value() + return self._bin_widgets["num"].value() @bins_num.setter def bins_num(self, num: int) -> None: """Set the number of bins to use""" - self.findChild(QSpinBox, name="bins num").setValue(num) + self._bin_widgets["num"].setValue(num) def _get_layer_data(self, layer: napari.layers.Layer) -> npt.NDArray[Any]: """Get the data associated with a given layer""" From d56942b72abd8e65f821ba07feb99ff6f0a25526 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 15 Jan 2024 16:33:50 +0000 Subject: [PATCH 127/216] Fix calculation of bins from widget values --- src/napari_matplotlib/histogram.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index b846af6e..3215b145 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -136,12 +136,7 @@ def autoset_widget_bins(self, data: npt.NDArray[Any]) -> None: """Update widgets with bins determined from the image data""" if data.dtype.kind in {"i", "u"}: # Make sure integer data types have integer sized bins - # We can't use unsigned ints when calculating the step, otherwise - # the following warning is raised: - # 'RuntimeWarning: overflow encountered in scalar subtract' - step = abs( - np.min(data).astype(int) - np.max(data).astype(int) // 100 - ) + step = abs(np.max(data) - np.min(data)) // 100 step = max(1, step) bins = np.arange(np.min(data), np.max(data) + step, step) else: @@ -213,7 +208,7 @@ def draw(self) -> None: # whole cube into memory. if data.dtype.kind in {"i", "u"}: # Make sure integer data types have integer sized bins - step = abs((self.bins_start - self.bins_stop) // self.bins_num) + step = abs(self.bins_stop - self.bins_start) // self.bins_num step = max(1, step) bins = np.arange(self.bins_start, self.bins_stop + step, step) else: From 11590b251846ab9b6023663bacb6d286c3e5a15f Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 15 Jan 2024 16:51:22 +0000 Subject: [PATCH 128/216] Calculate step using n_bins-1 n_bins corresponds to number of bin edges rather than bins --- src/napari_matplotlib/histogram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 3215b145..4ce6ebc0 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -208,7 +208,7 @@ def draw(self) -> None: # whole cube into memory. if data.dtype.kind in {"i", "u"}: # Make sure integer data types have integer sized bins - step = abs(self.bins_stop - self.bins_start) // self.bins_num + step = abs(self.bins_stop - self.bins_start) // (self.bins_num - 1) step = max(1, step) bins = np.arange(self.bins_start, self.bins_stop + step, step) else: From 08a5086f345e5db2418f2f4e1f5f4e5b169567a4 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 15 Jan 2024 16:52:16 +0000 Subject: [PATCH 129/216] cannot use negative start bin for uint data --- .../tests/baseline/test_histogram_2D_bins.png | Bin 21366 -> 19894 bytes src/napari_matplotlib/tests/test_histogram.py | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/napari_matplotlib/tests/baseline/test_histogram_2D_bins.png b/src/napari_matplotlib/tests/baseline/test_histogram_2D_bins.png index eb43c3108147079f9410a40936975d94158ac6f0..db401612c44fb7eb92dc1ae9f2fd66a7bbd69fd6 100644 GIT binary patch literal 19894 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 BUXB0& literal 21366 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 b-^Cj#YN-+8Uxv&S3Wb(bypnn8+Wr3z5b2@o diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index 58acf236..399db3d0 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -17,8 +17,8 @@ def test_histogram_2D_bins(make_napari_viewer, astronaut_data): viewer.add_image(astronaut_data[0], **astronaut_data[1]) widget = HistogramWidget(viewer) viewer.window.add_dock_widget(widget) - widget.bins_start = -50 - widget.bins_stop = 300 + widget.bins_start = 0 + widget.bins_stop = 350 widget.bins_num = 35 fig = widget.figure # Need to return a copy, as original figure is too eagerley garbage From 65e84f8692e7ad42586304a643621b02dab95670 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 15 Jan 2024 16:56:00 +0000 Subject: [PATCH 130/216] Make HistogramWidget bins_num widget correspond to number of bins rather than number of bin edges --- src/napari_matplotlib/histogram.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 4ce6ebc0..728dfc84 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -148,7 +148,7 @@ def autoset_widget_bins(self, data: npt.NDArray[Any]) -> None: self.bins_start = bins[0] self.bins_stop = bins[-1] - self.bins_num = bins.size + self.bins_num = bins.size - 1 for widget in self._bin_widgets.values(): widget.blockSignals(False) @@ -208,11 +208,13 @@ def draw(self) -> None: # whole cube into memory. if data.dtype.kind in {"i", "u"}: # Make sure integer data types have integer sized bins - step = abs(self.bins_stop - self.bins_start) // (self.bins_num - 1) + step = abs(self.bins_stop - self.bins_start) // (self.bins_num) step = max(1, step) bins = np.arange(self.bins_start, self.bins_stop + step, step) else: - bins = np.linspace(self.bins_start, self.bins_stop, self.bins_num) + bins = np.linspace( + self.bins_start, self.bins_stop, self.bins_num + 1 + ) if layer.rgb: # Histogram RGB channels independently From 8a7d9e46da49492172df8f36e0f579c995407a65 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 15 Jan 2024 17:07:02 +0000 Subject: [PATCH 131/216] fix typo in comment about using 128 bins for float data --- src/napari_matplotlib/histogram.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 2329c1a2..39bcfa48 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -31,7 +31,7 @@ def _get_bins(data: npt.NDArray[Any]) -> npt.NDArray[Any]: step = np.ceil(np.ptp(data) / 100) return np.arange(np.min(data), np.max(data) + step, step) else: - # For other data types, just have 128 evenly spaced bins + # For other data types, just have 99 evenly spaced bins return np.linspace(np.min(data), np.max(data), 100) From 7c4cdc87328480e53bd07847e79fcf27b9fef697 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 15 Jan 2024 17:10:07 +0000 Subject: [PATCH 132/216] Update changelog --- docs/changelog.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 673a0efb..f4caaf38 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -20,6 +20,7 @@ Other changes - The ``HistogramWidget`` now has two vertical lines showing the contrast limits used to render the selected layer in the main napari window. - Added an example gallery for the ``FeaturesHistogramWidget``. +- Add widgets for setting bin parameters for ``HistogramWidget``. 1.2.0 ----- @@ -28,7 +29,6 @@ Changes - Dropped support for Python 3.8, and added support for Python 3.11. - Histogram plots of points and vector layers are now coloured with their napari colourmap. - Added support for Matplotlib 3.8 -- Add widgets for setting histogram bin parameters 1.1.0 ----- From 109418e4557e3b84cfe74602c6329c18047fb19f Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 15 Jan 2024 19:12:59 +0000 Subject: [PATCH 133/216] Use 101 bin edges for histograms of float data --- src/napari_matplotlib/histogram.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 073620d1..8269d985 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -26,8 +26,9 @@ def _get_bins(data: npt.NDArray[Any]) -> npt.NDArray[Any]: step = np.ceil(np.ptp(data) / 100) return np.arange(np.min(data), np.max(data) + step, step) else: - # For other data types, just have 128 evenly spaced bins - return np.linspace(np.min(data), np.max(data), 100) + # For other data types, just have 100 evenly spaced bins + # (and 101 bin edges) + return np.linspace(np.min(data), np.max(data), 101) class HistogramWidget(SingleAxesWidget): From 101b4e5fe0e473f7440aa32879011d71036c5379 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 15 Jan 2024 19:16:08 +0000 Subject: [PATCH 134/216] update baseline images for histogram tests with float data --- .../test_feature_histogram_points.png | Bin 17145 -> 17200 bytes .../test_feature_histogram_vectors.png | Bin 17259 -> 17725 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/napari_matplotlib/tests/baseline/test_feature_histogram_points.png b/src/napari_matplotlib/tests/baseline/test_feature_histogram_points.png index be8770ee9229ae198086224cd76da3ce6c4df007..88a28f79c8b07efca0319bd565bc306ba4a35c37 100644 GIT binary patch literal 17200 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 literal 17145 zcmeHucT`hdpKcIE6crUz6a)(jLMVy|(iIUym2Rji2BZX}1Pl;BeMLn9MF>TT^iCu| z5CQ=!N(7{Yk`ST-h8BXf&;oad_nTRBXWc($=6>tWy=z_8Vx62_&)Mg|SldEQi zJGUR&4uL>+!meDhgh2R@Kp>m02?~Ic)S&x!z~y|P!L>juU$?;E8~zB0>5afU-oAm} z9ygB!A^Zb8e0@|D)fJVYM{WlO-U-l9QbPV~14UndcO}(|>Jl)>wmVng0T77r4cBZ(1ai?0cIkrk-82>*^IV#PVQ|cK+doVVb`2`NAzq7Y;;S))R2`P7aE0GE^}-vr z%N5qcza>rn6!DkQsaV!Evs1B&>OtNzc*)YO%_EjAmX_O2!HuBjOCLYG@+7-(YYYC$ z)7`bfO?=W(MI&g2%~+|%1QHs#A%%Xio5;!Y4+ z@X#&bc_9LQLyEj>)7+6r-c>mYvWa&qwn>n8>pI|9rcMsXgB3&DZA2eJ$?+5F+wbee zTD2OWGvuRhBG8J)@e{ShTkd(kTHOpfnC$g(41PBrs6T>MY!4XeBShn^<8$T6mMX1L z63s89_ZeiBnb~2b862Bp>%B5~ZwF8TB_A?e;!U^fy0^RDCPvawUn1mZZ3aQ(@F!UI zuQ>!JCE_Rs@^wFxXaQZM@*Vfc8)Lem}5oYT9Qm}3* zTD@hCJ|lJI-Zaa2x6k9emsPHFRehWdHBLmF3e`*&HORt4w|@TXO8k(zT=YQT6W#+{ zzEisCN~#-p-V7!zKAQFO6jt?GJ_0UBcD~J+45l&bQnUVRx~D=BX1d9b>id+Np{@ zYtZBRF$6qcQ~XuP%%A4&+h=#xr&UDAE0HbJeF`n}Qe!S7-k>9(SK#~gnUzo$T70nA zc|BTZrXo%%yn{Di!g7;Z_=5~$;Gd@1IMv9x4~7<^p63QJ3x=6Uj!#!8+o@uCMk@)a z$=}6Bh4|Q7`pUFsY6skX=vo~1%c?O87qOlx5qvQD&fM{5(K>%wbUacnUSI{!y@uzmdBs9u@KdCH^f7&EE0+-3yO^q{gl;ym5^J0 zKkukPtd0wYEel`1toy!jR9|c#M(`1$J8P$_&=Cs>dGeXs@*Mw_Q=^<2?qK?x`%QMK zi1EO>8U98NRs98$HdDjK^1jsdGtU$v=afoX@Q(0vi&}BvkP4(j>t!bkQ6O`$cqS0I zcNs&vpd~~?7Ywb^%8g44mN0C6bXOacMGlSiX>HxCUOpK5C&e!*QY12b@XxpZYvC6>!kgjQ(MaCq-|vinc4hFu7DzI*%+{C{6ndMs zx>|2*XSdT1?5UI6_%=6@s_hk=938Agqx5NB^L6FUwHF0}KoXBdLi%cgh-I=n=7)Rh zUsH=d894-U>YP_vg-hr@B6>hb%E6OL+OxW|Q<=7(odDt`>+QI>6}-{)9elhk8+m&3 zZg7Eo-mS;Gi0MOklK%fI|MwQ*nda0c$d3#5Wmqa};X7ez30+oReyCh9*}J{~@=OGL z(uy9>>OeoFsfE}sB#tss7c#QlB{>q~S#4i;*Td8zIEiDOQ(iIwnoAtsBpB&hM)#55 zuCKi&RbNO=0iSuU4b`w#B4tUW|0eH!W6lb4uu$vHiI}H}mVUFN{!*icOf;`;VV{B+ zMng7TKi1s_E%pmX3?Lvfm*1ShQLT)J6#1J(Z|>IMeRbD=wmAPofBdtC{d_o>CzZ)2 z|9*q~1=HinYm>fLwY@zt(Bg*LA*!=)cOZf*cXTuV#`Je@gSEM#)+wYrUB5rW)0XN} zPwjZr$Uad`Lv9ij*bw_W*M-bgt7isl{gUo&dw(R5woijG?m%2p;vt`yX zFE^y@B!eS|n~2KlJS(2eARt@Y&hE4k0?&2bdPw*P>=+q;OEY#xi!nPtZ(la!OUB3I zwRn&H$h(y9BOVHx18s=cvMcDK&(3o)5AxPe8U9&PPx3ePG90TpyRo2Jt~-wid$|S} z$KQg@Xqi{r>xuEoPkylBDA)*d!bO2I|f^8 zdI?uv)@TpiiC_L;anMe8$d?~7s#%n|O+;L8nZIv^zl$^T#GD&-zX@j&%Kqd&H%V17 zv>B}E1RLhhuheW=3954m1vNjO_+<2>Fm=BNp5QJ4cA8>&*{SWpW5PUqOqt?xUSp&W zw}$`XjSi%vE^sWnj(+=gXpTkK@-pT4ipk>p#H9I8B}#VrpZxq~$r*hROKe^XKA|D* zkCe;$nr@Nd{sTL#QCdJw3@i#c>FaK)+{#3PnZHA3)%MZNPIUl{-)vG|C8-+pIUC}LN57(iwxw)T` za5-gqlKLZV-q)ouD|2nSJ*IxrRZ1_2IPW9c953CAde(ckD0K~e{(F98w;s9t4Ih0OyQ`_S^av*M|lCVR|dxRzT6>n z$OBs>D+FuslSIHh14@oFW^d7G!S7mB5OBp_zu`Jp22Y1TR?aT?vi;JmKl|N+=R+sB zHEc8ODJ-;!ouDSNB|a%ad)0 zvi3guM1n6 znLcn0YduvFF@bVwc)ymuAIx>2w@38h2S%J>$G;8;O1+YLM1vl2@xn3&hEZ=tZgUgl1>p)gBUQf}*JFE;E5)Y^>D%>H7`u?9aUwe|K7 zY+)`cV?{_Rfirp$mF`RbUY5Ds&tDecUK=q+99E#$45;~z_L#2)ET3D*11f4VYPoLx zk5}Mt?E*O@J8Z06XNkc*iPtCTx-|;LsK+&qP zOxZtJs|YL3bhdU4NA!6oTMoX@zTf<9VH>++%a)Qyjb^?c7v70T=qlH#u+Qf$RR;hC zrhexC5nJXh&(C@j0Yr!RFGzS@Rjk0aBrk~A;HAmEakd$?J{7b>EH9&hfO4dvCA{AM z1eRyh<}ZYE(&Ww&a#AqHw9L7eB5${NJ!8|qNX*Z2T$ZkcBak_2p6Ww7o#WeJ(VK`0 zSgE1yLiAJT#qN9$3894my+}pWsye|NJ*%V+H>cit3-*ID-;8WRi)CE+#M2q(fvwb+ z3#f*9p$&^dAHDr=1bf)H%9=?6;3nhJP$a&-xSp*maTN$)-_Ci%^_BIjm2sH|Z!^NU zhq;3c?!KHAwLuf>{hey74H4$nIwiirtdN(i_IvWc;fCZxq8t=LLiHu zhb#YeIQT!)bHMKaWJlMAuH2fB!{OqxQgf;|kmf6g;9H#M5-nj#i=%hZIM? zXy115ss{S5VZ$Gg5#Zb0Z1y)kOnvpWsyyd{B(6j|bH`+BPL?^Iw5uTks|b zcxo}vxoO(A5D7Vks>=cv(pqqlGz^3*kMh z^&Y9GVntx_4Vd5(C>dB!yMp4Nye^{$1&>s!m?k2MwAvF9wZEkMmoic2M=GGN3Nm=Y zbyt?3@6tHkwio5pPsmY+b>HqrIAA+VgM)?#^?s?xrpDBb)$yLwB0bWK-acWEgNzm1ik4IUKd1#=*w2Q>sP zjmPj;um%st+3)^>azelfhp*(S!>m6y==pp4^jxXnwL3{G=ew00%>P8G7iA;*>C!X4 zTK|#g!PRkb{;nZ)+ufUqZ8df)&dAx>S$iiZI;wU=R>X!B@ z!z}?NnaJ%9d`=3IsM#lD&TC=p6u4qNu{OWmvbJu~nwAp4#)o+2{9tV8KD8Ei< zvoWoDp~SmZy?93N?7Lpi&pI|9G`XqqywNUT-080u^87Z@ag2&fL4Ig{XV2Hc4rYx` z?L>WOKYXgz*Sbs7!Gm}(9M(IvwxF-zd%ZR;T(9+qWA)%7R%gA(aF;b3*2ysRYL7@d zq#~3^nCjW-gdWS3x-Er(%NBL3M9dK>$ql}>uhiyd*xYa3>=lc@aXnF&o9*d-KprXX z;@lg9yFBEsL~5C29vtuOtgRc4N4MEu;cB=msHa)kG$$6>s4srP_UQ7As%u+CB| zstpNx-OyE6rnL4T&cF2Ii+@EV3Rce;;&_k4UP3@a|lO106p>N=$+4KwvJ3+Q?N0E;pwVi*V5zsjXO zKI`P2XAU&guXF^qk0xkFyhd{z%Y$tTR>zYlWpfLoCyKu^>I$ssohp_!rqlbZv4}^uVxTherTdQ^U!3*v!Kl|Myp3t{>fY%iH^ffu zcodh+1Gh*E>rGd7KRb8jQ%0o23~!H%Wg0<>SbwhS@S2P5E7*Xo|4=CBThjwUb|NBW zroK>1N*ZQq;0Fbcpk4Km=Loo=!wKGOA~)Jqj##A0D$S%vFwy18(YN4O5QmM=HHshp z@|0))-#IgRP%k?BxvQq;x>=_+_C)JhanG~kGuq~`)Whf(yoWN2(pGvWN5=c3ZLlN$ zhlAZyhx&{<=bCuoPQNr+5G+QQTUs{QzGR2;<637OL9CA)0FNJFksG~V-Qc}XQ*PfZ zjfiw;nH@ZF4Q){b!E#_2XBRb*7c!Joi`O&dtxIVe;(@kB2V7&McP3;h{CYWa0`d zK=?t!VZ9cA<;l4WtL&CaqbT&6Lx$Z!n}Vgx>bZyQ+^HK^(0^>6&v z=^l}^-YaFQ4XgUoG}1E;93_9mF`e&SQ#=3F<@xq+3Hh>NZ(VJ} z-DjIHbFU|~jCcmJQrW5TUAUs2!in)^MH;?2EVMN=9sqlplfBj3=J2Mk{u7rKX+0Uu zk(YDw=jTg=DIDJ^*V>%r|2Z%qDR?BWr6oC<{@Lytb~rTS{*T+f_q=EXC`c0s3p^i0 zMoLLUIxl}pvL?YBsFP(g^ZF%wgmJ(bioU45{;{SQuDM}`l{d_PV)r=t{BkN()Y+YWM-=WmLS8)2hCdwX55W*W85|`4DcRi%ye&C~ax3ah6`(zDrSU zpgzkkoZ}9BJDFb}v^IRZkG&0r)Ui)SG&-(yqAY^jku^Kw=S!mCA}rpee7d)=m_Ff& z`K5oEqc1t{X}=Z+P`li|tH*1iZfWc%?f%f;fyMNdb{$!E$9Sk>*jV(`+WTpaUk7Xc zQNa3AaErsCFkHUx;P8Hy8#-T1NV-=_Sn(B$tfkoRR8x|f&r6jxdTmXTUhxDuKYYeV^ zddROiy%q7s`6wNbAaf@vOQf{MTr@b!-5h%%9k54;RK`h4FG&8 z(OPkp(CW2`&zFn7$+WG9gZPFK#dD}^XO2ftn^*at+X#CZDp!E_|=}@>}q7{0=V~Px47@8s7KTxG+jupBr&l+!&~f>#`{)Bihh|s2TS_#GTn6%K2>A9*E+CN8HP#{=2CP_Vvs*Mm znD3ne9+;_TETEQO>khiskSi{u#cr&hVq(CeL@-?#vq6%!ecs*s3@Wl^vE8A^LKOrh z)z^5Pn*LO{`^!dO1SpMZ`mko!+A8@rlAD3>14$USp{5BQ04axu3OrYi2D&AT@p3{v z4TP9LVLY(Zb;E$!YBkThSAVwZPYrHp9SwT9bkXyKhfC!+@e##qyk7au8GL`eWAc9P>H?M} z2i>9$en)=zpis^$6su$&eC{JQ<+=xZ2&G8j>Cfrw!gqK7oW93Iz>W5rU*?TIeRW~S z5dhKp1xaAVOcOsoNp1c7LX?*>{xN+1yV!0rUUZS<*lQzZ@W@F7ltzkp=3W>jxUxf1 z_Jdoku#kqQqHf z7_C*xi=;NK0i_C7Hnn(T#YKO>MtLJW>!00m#RZE1Ay-5N7jlsn&#d#OV_J9dD&r-0 z>$Tvm)t)6FQlyI_8cQrK<8%F;>|#P2UUkh$9MRL|`3 zjRkR!rw4jP4Sv2g=F7iGs6Gl0mC)S)`M1q+yh<;x=!*gDS#Ig9EMdNIIQSfAm1z2O zZlPz8TVv5nng6=@DptSXa0|ZLT^H}|#WcctP=Fd4>ohnZ}@qx0ko)lm!!pGlpxCbeA?Kaf+Jqk`M_tt}NuH_Fs z_s*9S8hf?2Ce_u?`L?qvVoYtY)0g{F_xskhca3FBG9_wabqixP^JD7>jkf#1>PHb@ zkT{06bA476cDV~$wMTe;UM-)LInU`Z=MJIEoW$z8SjI}3J!Rf=^IFq;q0N3lNRU;U*S>^#72m8~+wuc5=`TQ&pp`PX*m*?%BrmuK+NCnh5Cd8>WQy8=Bi}R2^Z%h3MUkQnSJ*58EPTt*d zaWQ_7B>0*qyxM$QuHHRe+dr z3}zNFiGJP=8O#}pjhySsx#wpt*lm<)!Q*G2((p$|nF7VxO=e2%N~8TGa}Rm2RK_21Gan!xHnl$D&&B zKZi8&P`d*0V(1Coe?Z8B`;WPYNSbH&#CTK|08npQJQ6f2g63s^vGLa3(_n!kqnqe> zFb(9j@94Z$2Gg_0LoQY%4+Qr^IkrSB;wwjM%f0m`hk4%fHZ=qtZn{AujL)Zzk82+W z5C_MeczWS)1itNZ{L3~;-cY;vd#`RNhW|)JEg3_PIw0(e!Em$k&G9#AfqQF2Aj&$; ze=6N-=G*^~OHys_@>!9Mb=`7d`s(a6hY||NhDs)fJ5Fe~2_AU_RlEqpD!P!grYvI} z(~utagnbZY$*(MhuR6||svTuh8LAX<6o`qQp&Y$6_<5d@bYckUPk3uz!B(oTn@dOaXyxY#jqM(i#&YwkGZCdJ*GZj0JaC|| z&i?^wLjCki*)=&}(7j@mejcwiqOl_8Q=Qkx7-yZW>YTcyR%k8-wK8qi)N`cO*l;F0 z%o4y&G5?jSlp<)Z?z%9e#4y9#mP(qQKyo|dB480ewGy64mtv{|_CBNmQ2;cDIZ+!)-%r;>YMhiPx>G$K-&9kW` zx|S(~eZm>pn;}15A1YyQ60*oV4NTusMcDJiY(ynwmMIUn7VMCDC6@(!KEB z#s~|^ag7fSbnV{rFaq@j)Ip?L0XQg0icZ!w;@aI|>;V%Q9|xI(e77##PvIF>2y=)+WXB67vI7B1fUiXRNGo0|+S?sqJ#s;1e^ zkM!#3WW0~W$Yx)aGuEDADYfV}Uh|l!uP=9Koas1i6P05bc&rFoy=b?VwwegEO`E$* z4=a;P(RXntQ5={<5ku|83)kjnho>6DZG6|IGBxHphvavwuJebitie z>ZLnRTmHaU-}jmy=sYc)~_wMyF^4f$2X-Q}tBCrm zX|8Oz=L%WdBeiu)Yny^yK1xIFv-QsDJFBx#ixtYO^G~SZ;))I>|G=f$vA*WDR1L?x zGOTN(x-z@pP6HQUF7Z#epO;R!Z9u!VuBIlAqod|7sheYUpakiFYgC!hFxU38cklfz z-!&D!)b@pZ_|dF++wG->0)c!+7}9G8WwO1+N>zKwG3N{`#!f2C_SXD;TtQ~ZP7~jT zLsIt0>wohu9{eZLlK&CZ{1@KdKWo?x-bHNN^71k%pKr9E#eKIT&}5NHX!qJAcxTgz zj;Ozbt-+_7E`4G980}{tgt%4v4&#xg^omE2O=)`YLohkiPX^|~eCwny(&=eCZvKbJgOC?zC&ceD}lg-Wiwm zTfp7RDm!fxR3&(%X`5}P!}o6~i7i!khCU}3^Tq0d6yZ`FZik6E;}?ei$EX(S9VIlA zBj4pr#Ksh*<~0AeFgo4}^~FKSKnd&9Qe&bVdrv#=;X&ks() z0?~|xW?hZ^mMHnU7uHw}PG)#by&*_l{X9@UI%T-lc-lq)(){5w-4cWeaJqiBAX<#6 z|I{3z+Ra#bBp#nz-Hf}<`XisX;If|HwcMb@{q({Mti7e^LvP}tBOu6$Mflfj&F6>2 z#@4(kq|O*2?EQz9lZ(;H>=z*8ObO|#@qJcw2%;XIfu?pzg%1Kc%2HzYmpYkak%1qs zU@64;awNRv=|xy4?Lu`^MAHCoMPr{n5j>K?Gt5q)v+)UlGs~>q4mh*ge(jdLSZRLG zrOnTeOz*n`CI&&lyJ;IS+y5K*c03i?^rwL{QYzW7T# z9_mC2Ll5LhL{|}y!e!h;A=jz&+LSN&Pkxy9AaXhRrR$1iQNh|rq2f$?iQA2{6jZ~X zrMMKO$;cUXUZ$B_bYNdvkx%>YiHW+kl(^WUGmxeWfolFhCur-=bB9! zU>#>8*0!LZf^^UHQ@cQBlFqsO7Bf=42nKlW(IrydLxJ!iOLvt zStH;r704~sdKsFhU-6*Kq~XbV{=HEz;-y~z&UNpmukm$s;8({G&+=+l&hFup28RRS z`S!aDolCxQFskA^`>}blvCU4BW^X^8Xv5zKH19424D4;3TVE;!b5h32pAk3fb^f*a z`B~EwFcO<(QVCdM>{IPR`wUK(cPej@gfB?09{a(UQE2+{=l zi9abFDT+QyBOu@um)%a_G{MOE4F+@a=9hawlHo|$6>5rY!iGd`un;Zao>$iHswE`2 zk$G}jyS5!fMEp{8)m#bwGPBqhG1>WfHw{P= zU+|rt4)88Z!m;+6Tm7(V1)&h6>R0^MtzXpqU5x)kuU-gdb46Mj|m0XZ>bCHP#zNTU@})5g;SZLsDoO>T5T zYBtb&b|5Il$oTGL`4Cpj)Q|drS}fL1^z23WV40Ca071>=>O@Nrjq=c5$n)DAP18Tk zGqka6f8cN*h2U0M)0WD3;YzP@gsH>?)95q5r_TjnanSApv9d!xhR)8&m%07aAY#{x zBt~Hy&9_o>rqYR8s<7lyZ5r>!bq?*KT0Xa?F_)1e*!yp(L7v1i3!kF>I~9Z5CfbQb zN9uiReQ?N=j0DEv!E>6qrtxN)DKp_KJu&wPH_-+vWBK=2sN0FX=U(}=FvJ{vJdiaq z`qVO$k(ubC(NW<1-MKxr3(r4ma9PycGQcCN7Scvb7giGAps@Beh1 z+5Iiu*w>u<-Y@g!1p3iUE{&R?nDJHKBu*6IsG%$ z=V{~QxR1tNn=Ae0USLRr-p+IeE<8)lXO61jvOREu6pw#pssP?=!uXz#^n*rt0gWY& z>zNDsWlfD2SFyKu?nv()_m3Z6%$xpP3M4mhg_1w1E_Tg_^EnONc88-b_h4A`iGnI1 z1>(KGbNi%{gC|&^r`h~MNq`*tRq#+9J)R7}jT;Dqk5r z~R3Et2Wn3E~q|#tG3s^;DpC8@w+|Z{A3CDPv=-5$Pc@@rzVbp+)CF@N@4E^ z`hn({a1U<$xYWwqqB8)YB1PEzjK!THQ=Omq+jRlBK09^-R$SYk(sJ#&Z0x?~C!jx` z_3qZ-zd1;x^@bNnRDS~{2fDjjnd_`2ABy>WFG+<5&Hku5C(3=j3*R;Aw%9yynhK81 zOL3d!Gv=Z99SM_<9(=v1;o903IoZwIE6*v~tJm(LKI%Mclj_zo;|O#OL7}$1#D2H+)c2?{<(7(3=X5hWcm|oH zMVWZ!_3C8KLKaB7NI#jW=S*&GuCNi>G_|U3aCuB0jy)AE0+LcHIQGg6_Z{>4k71BO z|F*5>+R+z5LRvlUrH(U<9S;!2_S{+4?##OHlL6^Yd81_wYd6S<}Rk2g3TF z0>$!#4J=BPpWSjGcvkCG+aGBTTGV=V26XnIhGJ8#CM6wh}H>7GPQ-Df*g{B&R3LYJQ<%he3eYneMZ95(PP zP0`*P5ii}K>8>j7UlaUhLW4RUm?#Znw>}c_P0#^n%>=^Xf!>BUM3Ie40+}t*FFg{% zyL;CuvVvhc(*@sUF|uU;PcX}r16}Uj>`PcgQUC49w0E2urfFwFxT*n^OhxBAZ%`jr zGSphnjG(hFH=JyrNI(6@(e9PQ;ZJ_0mveLiNl!HS-P z=Pv}-y$RMz*3FtOZLpY1(OJDY=VNp3^DlO*-cEZrK!H--`Fs z0w1@XyQtfOFXeoy_LwRU_PNCt$p zzht95&yC}e#ulQ7O&io-M1|K3E_rI#il%ce5>aPLdG7 zew7~~#ic7g09l_{q`Z`WBUh^(A$G>BM3@aO}^$9N}bc7zoSXy zd*q*OeJc=Z^lT3OyRT*T=Jmn&S2s-(A1q{Pf7nvXFZ_;>KKMas>++8vNdL%`J@|~d zy5H4cgAGU@I2IV$v94_I+ZLkyH$KdU6s-+D3LinU8DV|qabO<+CZG>Pir9Z!Vv&GK z4%^By%wQH<;C8N>k839tR$vaFGb6pwX(uonIQwU~Xe8}--`NuYRF_>uyP#!%y}&~g z-TJ?4dhv0?1AQ~cTo%ym2TD(~uWAhMpf#MF+VOZoW5&_WLZU=g=sclJ+B8&H%)4Im zb*1=aKr}7*?G~KBM8ZkKD6A;WV8JKs+9VC$_TaIp67s?r49VQ!c0M{muGe+wmga3; ze+l=yO?~0ns=84oaUDACS|>b;@2u=E2B$qtE%zac1k}`$4*?(qd?+mls-%lvEAA4% zuxXpHTZWEb{M^)=8q9vxR(v|Ka0^KZWYc+irfbq9K<3)r@{*4gl%2=77#t+?{SW~@FW1%R=k9^*=;d(85}f&12oe&RrWM`3_ODi5Ur(G5v6`gMz``C_Qgagzo( zf>o5(KT0pF;4nx`R>;YmVCXoe#*Cn}HIPSc0E`4`S-iz%p32+t(>;QB{og++HWW() zO7$)RT`n69Fjd+kzyJA=x@-A%$Q?@%Sh)^Z6h%I22?#jw!eChMl{@CK2Mn^LVI%0N zYY$A}*yy24;6QeJKw|uOb!r$x+`$y09K)mde*y>y#};oPg)wwfQ3-j!q`^7ce|vsR z%0U65+`7>e9DS08V^x0}Ne+JK0m8~NH;@i+unor~5ok!H(>27p;4VnA99`Ku)h*E@ zcIb9~|J4j;^sh^3Y*E5+AL0Iy=gfu`qKyT3plfh!iEPM_A%Kmt{gY{9U+^aBKI(6# z*7D57Upe?Y8ODS(bdstM?{Z6xY4HbW5nX>3kaEbDfO7%P4#BY;&wibfpX#xm_mp}M zuW35yM&8-BAClaBa5p5`lEfqvyg$K?F*w70u}~T~uMPAeplsi7N`e}Dq!x)sc@_fo zg}I>=eG#7ebylmNke3ZjlrAD@(9>0RauFZ>jsbql{U;NWla{6GX40^G>=J7>r!rjK zPr?BRg)|UmGd1hV{^#V#5D<9btx#Ub(bv{#b8U`u4-9m}zMU1+)@*bUx&4K{kAm(*3|yZVEsUjHdf?(tjcnK6uz_+_`44+q$m;)*#aLK_bYkrDTuZ=~5W|9LOYqM>WL5Jq?8?=Qs1&r`3 zW@utlR|zhGiPoQJopE&Z*a2x4a@T`EG?#xKi+!0+PM_*szv$xQ;-8rN)ogK8v-kpw zV8f+D8RcrvvX8^1AU~#gWJ5N!Z4Zh4m4<)>ub)5a*C})=gLz6YZSde8*bPxBIGQ+; z3Mk`#>P5nkmyy8a>$^c~@Lj}~I>SH^Y=PzX=-{~qHRoInv*V_fm^j)U zZwCV6lv#Y%tX82jBoe*qxEWGd*t-d(;RH;t8FuX_ACRw)wggmsa0t9E`sF3Ma>9f< z2*3ghip16^T7yReOiKa+@7T;cPL46B`>@Z|0SuMhp67Ay%`-Y6d4@FPo2hmGwq?>o zo>~HP6Y$Q5=)~*u4~%NH-A=Tg*@sZd-AvMbA$)6dB#d_$+FCs}CnY66TYV7yBNG9q zwf9d4J0IBG;O>{}5!60%ZKr`BYR6-6Jg$2p`qy3euq$l7NCIG(DF}+nJORY1A$6bv zg;ireqMQINHu_htB~Ejg(CFu=Z55A5!L!^?FJ~BndHDZM>_c3|_&1X3|CwCQ(mLOj Xw9+@;gCb23@CP$6yHtMh`u+a_hA-RY diff --git a/src/napari_matplotlib/tests/baseline/test_feature_histogram_vectors.png b/src/napari_matplotlib/tests/baseline/test_feature_histogram_vectors.png index 119c28e1269af57f8d8cff5c5da2e84a1ac306da..857d93449651193b77014826950c8a3d61e608d4 100644 GIT binary patch literal 17725 zcmeIa2UL^Wx-J|9#f1vGL_vzM1O)-5D1sD0kuG2aK{|+l^j<=@qLiR0AT20JuYw`e z1ZB~sm(YV!0tumq(31Q!ti8`Ud!K*YaqqbMj5Ef)cMKiz`{w-GoNs;J=k@hnea&NR zJZumM<>4XShMeka zbpbw56xJ|tmU+Flq;MfWr!$cWOy}!qJ)jl;SuE<-&8ZF_=7eTZy({+V@SK!mFoX## zq~5r2Z_JA?m2?2im1hw;A_(PfUmw?bb9hgcm=2G>dOypmRO!Z1=CMorGai8%=;dQ~ z)|E_3hy|kUPe$iRI`V6bC&iS$J^02pMp~x1)rYmE8E0;uBz!&oso>q>(d1G2^|wm{h1}9E6e+gLK}9v zVHY!Q34fo4NKPCGf9oJ{-DfIHIysC~k%7gAuDEDS9BSqxo?wsiJIvao@cfxG4xMEX zLg+W&9p05KhdhjdqPPl0*<=aiPf4>AOMSIo@mf4#7je682!Gk#)-%cq0W_)6W|pYT zH)K}U=Ah@#9`b*``Gx&w8K3XtMzFhS!tLu8=;b!o@q^SbTkclwEF>BJU2s@IR$S71 z7WM~jog2HqLCJ4P-#jK=rMi#I!ldtVG^)ap^ZYT=tR~RQ)N7pAtaOlIW?6shFc7B(trM#Hul#F^<(C$i9Wl_(skb`C z?#&_P2lCJHGnvgo=x^2ogA%#;20Y6@FzlOU4OT z)2v}jZ_}TGkNlfW_S>edNS)Y1mn)f=qIqwD4KPg!Xo&(>Lb#6zjXjHdcYC`zy(d;$ zr@!bPM zQOuhQJ_64m2l6mpRsUcxWW0F6qLqag8|x-rwlqTVdhCAC$jV7b7<@h2A{YUQA0<`( zs>-EU?p&5l#fu^J@j0}|v(wI~v6DzIu&%8A?x;ah^Nyy<<|{;vRMi-@eb9p5Pr)Io zLXRFe?3v-Po|co#1-w1js+)+KDPo_`&%81DYuwM-|J$}DeBcwKa!hM zh%_16&<)22Y`MPxK`ftn=V*~b%6gVNGbG}q-DbX%a?rv?-dMwPyWXyd6dSgTG zLkTT@!OHfgH>5DcniPby8R0Z|bi>Wq8xf!LK@3cUiA6nZX~DW6+cEqt*V{M2D1@*4 z?V;l>URRX|-xF)vqi?0_2eh=P1U_OUDGh;VU=Y}cEbitH#oLU@F&S?Uy@~YmaI=h` z(PDe5iZr{;&9Gg~tq)j^W4%tj_+(KU-dm#7o#2ohRc=%P6?x9M%k)A;{$ zyw4Y-4mopyP3^pPfs*85!3JsUe=-3Ld8CaA!Bwhfe5@N}gs%a8T`E)rvpLc&9`(Kb zE5$OT6k!>*3`Mfqs4=#6*1oBpv8`5ELV|cm8>E5732A1A_J!8F*OBZ9u_+}*MQc>4 zbCMP?X!zHihxTUipCi}C?RZu9)0~OMt+>+NDeQc2_4?_W11lea_*Y^3-wEu!BIM4A zAtxt@LF5Vn!`g|tBZnXtv}z}eOL>Xi)c)w8jfG}a>S%{0bp!WccGvbf!t(6i7uqP9 zcPBY6bg!X1bdkB$KWQ@d-R=09T?82cQL5X?zb@;*r3viI6gO;R;Uyx_-+92Tq5LiD z8)3a&%`5F;J*{gN*%!}~TVULFUn?h}+$`P`v4u9Ls@Lk?EW_5QZ|T1=)_C*rOz^UH zym7PF46HDc!4t2*gC)w)H&2*F;FmtU+Y1)bHA&H0s?yon&0E z+4(StWTUGlqX-&Mt)cL&ju>;;T7!(9#bfkbl3cfr6s zk&7MoT!`svE{s&Gq3xy1~n`LI;#|9elr&n5NHzPZ-@s_e-xWouq z#Y4yKV%C(Bq??UZ7?btOEDyXI0C5y&Q!^&E@2a6`qHzjis%QC8mN)X+@7;U`8b8oL z_$bJjzG*ilQ)ikeu6<8CzShgHP)Ty8rerf9R)R4&&wE&~-%#(2oe}4YwYt0UIp%bq zr6a=dX>aWM2@sG1tH<1LVr;C@)4562>iaj_kv@6yHO1a&t7y@kv$QuXscrYSDJeIU zK)^ke2s6`dg0(T05?Wo7E37y8cwklmUS1dOJ3~|b1w*97){xL5_x{b|zG3Pn}8SBOOhy`VJZOiXf3zU!^i*tNW{EE3V!hlaNLWp^Y= zaumz)$QBnBA*x7isu0s<-x(MpqA4;NWd^GQPjXHbv095SeB zlyP0GkW{53y{w`t!4#6N`Fpi%DgLk86GKQS4QO$U-y ze);>btri1f{*l3nHItILom3p9>-9L|D9iEgb+Au;SI1Hkh4b6X-xFaJ<&tnVC$W^lJJjB{mjs>>uHa?;9J~hHrkH+?Tptve4IR;z3b5*( z_O}MFv>t^B+_FEkjz6XR#gm1f>BCh6%N6n>!>^Y)2u2LJ$ZC)Bu=Xu%K6=C{vM`kJ zg<)miuZ0*Oi0-k+80Ib_{U|^4IdaRBDtG!T%}Y@;yXZ9~++pE+@i{WuDsR$Kk}LZd z!WOYw=>|D7H=+7_J0zKwey@(HfAgLv`fgH5XSSZtwMVDHa+U$kP#W^jcrWWgFv znFyyWpZxxTgK=(m^=_`sb-3CVYqm z*-jU*UYuU^<2DbGW|u52tc=Hru{8-_-k0Lu@o6SWT2F3DBZDjpO-lHPk|!Y%%KsJu z{#`}RjxERXGi#Y9vhD4{!yYB`X{I<|n~{eH)jx1bJgFM-+mJiz6eTFA8yj{TY3RdD zuJtIHFP02*W=W5YJh!0T{Fr8*VG`)SLe}-L#G2EW90%P|aU`zaAPptJC%DTEX{rR7 zbt@T8q=zqLTZEHK(LO~OIsc=A%^%tq?!&BFDSO3EU~xLjvq;Aq9^|E`7_Kk=YS;iC zL}=b&@3|x1DBN|0%nY$n>{gm4R^y*SQL8=ve9xC^-~bmAK4qT|pupW_htqb#FT)v| zGF-?X7r}D#qp^SefD662`B9WDa)=?VQ#YBJgxMNtvjOKP z%*{;zbUD7uxFuxMrRC8#dw<3pz8q!#(P6&jFB1z7(A_6~XAIYlNnZ!4r@a1qlBeWx zZ3WpYp?P}y;-3t5pk5w|z_T@~qVa8BeCDD1=bwP{0O7ML93e3B=!V}ar(+NEgRtoA zywwZFEz9g%d{3~T*Ie7DIJ(wty}fBE-V z-k1ZoHiw`2@Uw2F7#$F^ zj1w1Lt5EBlb3s-V77c6SI)rn#rw!%?>5)Yu1?Rs&EF2Wir`1w!Wj3^(@g3lDur zMX7{n$K4n#8nD`mbEB?lTJ!7KjXg$<5&Z3_q;T4Y#LLeU%!tkf0y{1q1{=Gu4`5|& zxrc!?zAQ*b7*3D>LeIr^{mA!1D|m$9gD{(|Z$?RB#ha~Z1fN~7MZc$I7`oY(TSrcP zS!c_5kawqJ5-pwS?rG7f1k;GKNaOe8Z5hfkkR@+b3|82e)c2i%%GH|J9491G)`j+< zzkWAiNKDbl>S3*b+VxyG9P@S zB+1Rn&?TF0e?I2lMcR56nz>KGK4nUrdhxTTg>hBGGq48Q@$BhK^6|u~0_?eiOmgCk zFuqJq@z5K?EB%TI`wI8TQ^c1se`qm~<&hx*55V`F@hYZIMA4PdZ5qOXp&StHS{4w4 z)zm+LA#~%fl?K=g1A~mC4CZ00erIGA5y~Te#{tL>bPUuM{B|8(6YTSaJKyKz18-S; z+SF-3^#~mEI;xdo&vw9?Z005&q7_ecw_@rrNwL?Q6lUDyoox$%%HQH)V?)Z_@1*B? zQW>Au2T0sOjS3;=t_sR_+EH^aaPZed*sM3TBX? zu3Q0T4)MZKnLnpFMcjB_lF~mf`=BeN*}-Z;xeFw8vrVu07HJ;eiuyh+po*q8;y#&J zS1WuqE*wPG1kHYuy9_)Jm*iz}cyQ!ST}!8XI9^yQURE1^*&40%HSFG`%N;mS#^{cY zsNl%m>PZsJg4{8-j|l9M|>xgoi42#ANT+R|IRi1pPr{Sfj|vvcIMB>ehu9DMs0q zR+EECzq(08SX^o+W}P`Mv?8T=u5$; zl+36hn^skswe;@N`NeRR2k$;l3Rv|{80@uwB0pUPz|N_F;GHN8g`5)f>rQqhZInNB zRUj~%srBv#xQ#fpj$=kj{(#l?_}EToMxgEObf){kHSa#+VRk34RrU{jbx0$; zRF7QA8h#(Fb7gX5LO^~lrPnmQK-nz05;4vLmCNdNMPN66e9s$$uKMzLtE4!};k|SY_!ch(^7DouI1kx$7L0fV zD`}vJ%bn$G_OU$pq*S6KuIM^rOr%4#T{P+z0)tvTi@@iLR$>hH@xF17d0Tk>q}dzu z;|$>sfGe$@)`Yk#e1qH9e@-icoCegsr0;R_(-l84Y>fQbL+sX7C50OGCGMpFOBToa&D0?HG-Wiz zI&RH2^Y`+SYw9fjLNg($FA*xISkO83IY5mQ@$KsYl1QRFs5{-|d{Jvvz{Pmt5{d+2 z$NJqb#TuE=m%#d5hYLmC#50CAoeYFpxDx4QcufyZ85u;oNH&rwbA(ee$vGbnHPVU{9>$Q^Ea)y z2zhu#u3;X4d8c+0T6WNqSikoU+w4A!ad~|>6%ti0VGqpDu}T6A(eAxfuLA}kd@3y} z5w0<-o@w8VL3kkjkdLuXQWxN%kY0x>ZtoM99f$W#eany*>!;jI`;8lJLr7ZZ|ggTd*Fr zet&5Ht`5EWwbHz_Wwk$zXfq}8voEXBSb!g-Tu1;Qs#AA62qX@ zab8C2qsHTwV@NC&?KsvMiDt}5N<0;Sf>C+=ic5xrsX?fk_*!bsR2BTr^}Wb}psW({ zv5iq@8uE{c1tPaoy;j@D#9!RVAQ?3q5-14Fjeh!>K&#m!$ua ze7xEjo#NHSrygA<%CJ7mm=%8Kq3-+6>63cYpMx1D3}l5zMB@ZS*luGOrCj>hzvQ0o zD3-h_Nn7mkLr=JiFOfIq1C&ZvEd0=2(c(2^-VCL+$z>DwJ$^ib4pPzTCqV)B>dPT( zhK+bqQ@nHv)#FAc$ovw_mS2bm;c*-p9-Qs&^kt=8E{yrNz3nGKn?uJYcG@z=R+SYg zDm2rBM+Qmen{#>-d#~y5NMq~_W9V+sO-uJMntrV*hFo$%k-w|Z-Vb6W&2>Nb%@>BR zJX0XgEa;Fr=^Hg+bdhiqfxQfjaV|pXe*Q!#x#Y$!MFr(n`Zqhbf&oF*8Um!_gSZfL z>#f(4{5!a(=^*v?tNjwT($Ym}J2IH+M9=Ns*m$Sn9dJ9H|3^i~@*wzIe5cl*`Z8?J zPC#YFM_?CnPW#ESc&AK)eYM}kNl;o()Ig3t*!xZXQRmL}&Z~HUEZOK?Rm>f=i{?()m?F-3XaCa%jw!Z4Lx{-nQZEm(vV4 z5Y)~i`Kx~lrNEYLTKN+U4G=>kvm@zmkewsU7) z)dmGEP~~1&*pK^#vN!~J1FqxV{*q-65+)ULO?V{>n5TWB&@);c);m z1IdiCa@V?&Y-+5~5`%Hl09Bw-m>Bo+eE2t}#eY#jb~>(x2{LAGYI;T?)ZgD&S64T& zmT6MfbztVr|k+s7Ba{b_d7DOzv8Tl=Acghrcv>tbVJOt^p!{ ziEAI_P1~&uWHj&?JnRJ?TG@^4UG^^M}g|@DS z5=mXZL_>O*Yy|qDXULV4TX;I9a_mzlEMt!sm$}2dzG>w_91P#lb!{xmTB^6mc~ASL zQu}c`mzXeWE=k#V7fvNq65UX|#NDt*+R+ABF{GRooII`4!;|XgK|(-HbyRkG4TE-W z`6W>+GPF0c=)R#qANZJ977?K->jZTR}?7A(tFm` z~brC`xg!fQ%IGJy3B0T0~R*yYvic^hhAy+WqppSFKZDxDJ| z%y~*3W<>A*Ow{==5}$v%EiI2%p555k_@#cvelQz9>+X3sD^Mk_Lk2~hmfA1=xD|Gc zclvkSXh--5xmTXyP9WXL=$pL3QHc^!RHo}^WIdy$PtR1j;o^m%oa!9+d7Bh`e@}vO z`tL}LY+X*Bhs28}3R|K>V2?r4?czsfQ{=Qer;Qc9Zj9>|{(|{&6^)vfiM#dp^b~=# zUlJxxzT>Mcy*V@zn!FFb3_CQGJPWz8uIRFV5BGdiye9R>&(L5DqRao*(rHU(-sg-qHhB z@{wn98;KY+jiXD99ese>-cH*U$K~7n99OO1ZQ}CV#fOE?*V&6C#`Nw{!XNznxkqhK}0!Rp9j4Vr!rvQ?2>%vV(3;R`c{R3-mwAeo$+I# zbJitc@6wZ<=#1J=2H_h8H`WX$ORIBJ6Gq#^U5SPQq1$(Z6Fx81-vZj%rxF}@ z`tpDn61U3{KwcFHCiWy%hn3zn)d^p2=_0;9Vw=7BqT6=^Lu*Y}vz~)G{gsptU;=M1 zhhE4VunM`@Z@ndsircGo&17!P$+?ns#?jO6 zvoZ8WXKHO1@8zxnny=sFOzh8GN4`X`ii06@y^)C0FB`9NGS2Ls_&8SM$L+??>j=D) zPlqFG4sLsGLdbk>(aHEH`f8SY7&e_L64!MPPwyB}%;2-l$ zlzD#2p(vRjQ}#fIeAR44R2?V$+AYjYt@oEz?z2CeK)G>pK2C*eiPj+0Aoy2W{a@>6 z{>f1MBOQz3gpQh-n!@rHSVQ*_skejnUHi0~1=Vil%Wwi!=~bj97rX{*+pW@$Wo?+` zYaxy44-cvGV95R$_O$?a3O80UZC({}T_e6+yp4f3aZq5)W^2$L;5cikB<) z4MzKG_CK7;bAVamI2XI@)WS$AB5N-%GOR?}G?|BK*wWuIwCF}{8woxGH^9jA1h_kR zTcmH1r?!4)hxkyXo1>DmIZUZ|u&CpVZb6_^_=23a`xM)Hauz(d}ZY z%5t^Gy(@vAchV*#i3CMVKF5zxt<|hWltvhL42=ITzFwl=7^4)vJ+9a zl&%O;;*1xd zF1;`=FRZ{U7~cs_=w>KvgspuQIg=$qC*tobDw}{{E>zuv9-g7JVShlrs{EvG^Wz0p z^!?uH3T84AS6$#j->DFqcdZIheyfwku{Ysycl|XhniaEBP(s__(ik}7N*EV^q_a>; zpMQE5BNh0S9zbhMp~VT*Uw_)gj;#;Yu)jzx4EF-S@|CJWIuUb%7#S7_Oh~|TqL}VN z_-;~#8Tz=9vq_1=POZv&KAkwQYIzG8z4=q)4IAXWu5Sprz}vZ*1pUdNphD{--2@{y zcN;|KPMDs0MT(P>|3^G`09c8X8%Qas`r0r%mWho)$F9QdR-lN>R+x;P{6CPjnqw}c zjWiyhj?K#!KpnxS&NJNSQTOR->==Mi0y;&`_U2QJ!);8%Nt?jq<|&2!(f5LaWzE6R z)_yKp2yihl?KovF_B#L_55dBcBw2Q%IF70))205qJ?j$itY@8f+~Y<%LgW=#VJc7R zxts6^w_^~SwBxFkZ$BV}7eG42q2e*}Zf4QNiZ52!^5pVw@OwkmBG>(~UqU8mGE5M8 z(F3j5yzS#Zkc~S&nRQJKIV+~CyaLP`B}z>Q_9AgF0Uyi zKH6ApQYqA!9#^Ffk+{h1E*J-lbQ-t)IB+rFBM~OPAlESuwpW)^p|`17JAC=_qXkU` z(O5ypV%^uwO-JCtK!(c6^oUE(QRB+e$diTiwWX4E{pwuV>2BkkVyfS+k$^H(u_Q^^2nCXBP&V?dKqmz#wnHm)uc=XA*u zLV6s1=amAp=eB|~DM-`Kt7myXOuhzsdk6x@c>b)*r2H_+$@ZA!gUUh5RKVr{pcmec*(f2(i?!c# zO3{vYhRXl?_vLD!B-khSolB68pOyz;E|jy)r)9}13an(yST=E z`1pTcmj0)BZww|BC~yLG-n{B|Z*>PE!poqC>P7_&{k>Gu{^k9o6`ss=0kS{R?hX>1 z3VLI}#Ru{x`Q)%=_4@VojI&V37PVe&fH(ZW?YtrAf?!M$Lyoed<5W~KyC8fQ80@>m zgGcb3%GGz16YKqaZcp&3kh3dNg64YLzq%8LUez#p4*#o3KL0Be!2P9w@Hze^$PHcl zR0y>{Q3~-y1~ioAeo!9z*SQ&Dz7bF8ERKF9C2Z{nAgs`LQ;fq1D9xTTQj_~r6hDNm z#dKLH$w`HhkcvQRxWoTt?Am_}SpJ96%>Ntwcm8;+3gOTu07&GufhNXCuUVKtFWsAp z>&#%7v^#ZQt{>s)}VL{Ma(%}Q@@?PKgdh=Db`0D=N z+b|ekZ>4$SRVI&}Z+2H?e88roQi&~5UPkTK%aJsB;WVw$np;EF>ppC!TA^euZM9>a zF3?ZJHm@k>;v%O>39$|3>-yJL#*Z2HhoJKWeP^nikcpa9Gd=Hdg5b8s3FjN8M#EC^ zTqZ82AGZyo*>ZK-h{rBpAn+e&ib~7a-C&y`n4462S&q-ZTZS~Q!nl!H9S1gv1SAFZNIr6lc=~}4=weZ-6838 zuII=(^MizP=mVkKBwAr@oYlEA)B1?wTAH(7d=3vU`J<4vTp@BNRCe9w5_a!Mom;RBI@4?SHuJW$y=en>h-?$s#JxGx49JexDQSFqj{#ur2*p{-V_^g{K znp9DimmH|~joA;o;gVb9!sc$`VwK!6Q8W?s(b#oB;hC)V+M31W_e}lL(l(4~@vi#i za9e2Z5SCNvLB}q#pGaKuFmkz>DE{EVKyol~t(4>Pl^@n|P69{M#HMOIb@A zq#+v;ZD+whz;jZ6B>dQ@^0vO8;wgXK!4%naG|T{PIDtM$eDU;!dOCW9H%~hrW3`E^ z;QeyoK5?>Uq4WsWZkuBu%}>bD7TS+}_#!Cx-WAG#HLmnLn;sG@rSk%D9b zrSXR{8TFe-E}KA}9&RG9KH;M1vhrP@-LWQ=H*9u_a(|t_6jK}~lw??B;u5g4{?dc< z-fBa@Ogb%u#+%*F>WoxG&vBiet+x{EX2m3BjZtg*WpvgF0YQP{JwOWX=tiv*(5jx| z1K^-NG0WX*B67t;ogs6ylw7i_C%v)$em@xNGf^(K9}MMk%sL%Df}JR;>9%tpx?hO> zx;d*FP!Med%PQG^q3(y_%crX9#jmC6bxKM&Qxml0`UoD_5e?E(hu^l7A4;ZPIvdQJ zfMs8nJO+3I8uVK7W`|z2_SLcq*%B5 zk!H^%v(D89Sf*Hul7|NS#eNY&;(aM8h1&-;J?eZlU=}1w7gBZo2--|iIdk#JXtB%N zIj&pvJAF>sUS!$F)`c!%pGr)u6taak4<*8=qu?1SLEG6*O&kNImZ^Pv-``sWIqB51 zA}A!3VW;FBVtaHyVY6Vpe%rWU`^ClLI{9LK56@(ex{2^fE-R&MvK1L-?ja|O>FG(b zQYuEWI+vmm#PMyKOHfZ?k3#d&F{Fx>LVAgg9iYP&-RWMpNOw1g4YIr`^&y+)X@5Us zYarJR`5Q1;X@R)CSnE=XbxqasHfVy_`1Qak#mOP4K<2ct{_lXx3R?9n0#;nh-BE=m zR>79JjybbFjkmy+Hn@LoSZh8PF$4Rgk17N;uc)2KA2HHqfYv7uy7@XS5ex&~;3aiB z@?Z$gaB4T|-R$|EdwY_`%L_1}& zoeDDNaqHjKEe11RiL2M!PAO|$i=DL!DCH8@Gdy@xMXB{|&BSDhoVs*#UOy?k7n^w(DS8je36|-8 zV%qC#+MBiPE<{zF5$O)YX6@RW=G2M$hYRX|2JhpQmWPd= zRVZ;rYJrTRo4j=+RchBVvb-olnBVgZepXKFLF0KF;^pP;*T=;lW<8U9PScYyu1ie5i0p(5qj zHm_vaaxi$&gd8V&W8}$YLE_ykE8Z>pULR%hufXX>xj@JJX?Ivn}u|H2Y%64X*Svw6rV zPd|qLDZCO|TpaLT_%%=LPS1Ap(qXMc`*@@45_LQi zt?@tN=kYgFJHC;7O7TbJJG>yVH%FKh34b-E@Rq%t-EB$frLCadQB50>fty2r2nn@# ziRE%A!i8G={yfw4t_cu$In-M#Ea1~dn{j~7$j#DzO}~xDVex>L>3eU>fT@t(&bwbG zex9|9i7Mv{x{(4JkVYa5VyGo*V>fWk3+ypW$r7xVaiFjrzY$kgzH}#tAv)03b){^l z9MJZ-R9sA)9NjU_YkDN#sxT8w8>$-4l(_#s`~B?mTBMQKRTqxVkL1lyL~^moXP< z!Vr`IJ{OBs=S-3h|LES$PVTIr`W#WVQ-_}L#MW3~?Uj0kuTN2uL61?0H91HR`~h@< zvFHT61vhiBoG&iO1-tV+?dkcJGdn2P^c%YKS8~h#vN)Lhja2t`! z^Nf6<`vx|v^9laulu2`z?E(JpmGd;+Vg-1X;EH|BNI$o58ie&h~^FfD_<;zO;*Gt5h2n!umaWnMOce@0@U;KVEE(s6rGfk#Mef8b{}x-v&zY zShE)&tfcT^D|s_I6Eyg$!QVMyh&?%(j8?mu8up)dPe}pFqepqum!|C5D9oRSi#)H+&9N+xvX`M${hrY!^$~y;BR{=lf4{g%L+5{T|>w2VihNf3s_le^=GBB&DB)_N%s5|y?gFoP(GG7t16kBl^{HJQWs?c3qCC*M-eoKZ&m>{9zKoj} zU|qbgSv?>4P`thpIU&3h2A|Fwan0iriF!xNW(&m`78_4vGk>eV`8{6WNcL?-ZYp;R zMcnxSq^BW=IW$9-z^llT9J7$&-v4-Dgk28|s3Aq;i8VU!d|fhH*Dds!((i(<2e|7- z>CiBJS?X}5a(plDG?`M|AKTBQ+-+DfGQ9fUzeTEj-}9Z{TV#;Q{srxHpu-3>Kor-3 zme4OzneT=5WO>(=JpQy~g6N9@wBU{uV9)LMu-Bi~_MWMU4EC%8R5GU=!4*v&*BEJ? zcq4Uao+#TH?fr}_rbuMJ^9b_6#@-a9d1jnqM;o(DUrOur8I=&>|FMDRQ9YzVSSSLt zwOnb|isx%N<0ZneY#SWFrwQ5`s!Iy%fFAnBl`BIUuJKh=A7q8xc@KC$5*_0GO5OcN z6`w#8t4My7Qqo(XtC^zrj@Rwh0*)}K5hA$6I%r!baO*~e>gJjXper(WjQ7FjT)qKi zXlQm9!9xzpMx#%#=cL58uMZGq6V&ssc07vd{ju>LxF`e{)#@7DIS`R+#@SAZq<2-G zQI!X5sm1BTU^Vij4g;?X{^J4eLu(cWa3c8f;(!`&Mt8anJWHZukVGE1t9P>pXDiup z50)r?_&{|@Rv$N5FS33BQLAyzM_9W6Z0^(7%gf6~MZ((WwE^ugkG?zNAit_)0z^VM z+cXC>$~sj1k-x8a*4e%-yLq z{nG0p36FaOgG4lHf@b?V7a`5(wjXU$nZ{EoziIb{Y5n$86*@zXd!truidZq6K~StFXZ7_wvJjLK+EMl z=YFHv>#GX}GzCA&h-SQ)$LV2}VrNgjmNF+w$F<9Gia*L0sH^7&y?9K)ij2R+*Ld@5 zYNxQLJEFpvAe*Z`CmXv`61tKmHo0FRo{}~{NpYv<#L9dD-G_k$> z&Jr_T+wE+&Rz*=bTLPoS8c43xQDDa;vv^t142s(iqcdT5}N~+x2az>2SWZgQ;mixa9!Cp!xz21N$nbA79K%yAH4L%82zO zdO-&;T$+iqlyvyu-87>XzzoX*ggANa%I3%o56HaO3J7ntv{S_3Ct-+Ohb-FNX{`_( z7O0E7wm5Z1?ecD_@SxCn5YFPNxa_!Dz;ntX{^Hk_y_6ONCgp#rVK;>?aQvfdrFZpJ R5yqw3>iV}!ZrMEj{{T~dlZgNT literal 17259 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 H4p09FU@Qgk From ae412cb24421c9b18e9a1b92317844bdfa191290 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 17:29:12 +0000 Subject: [PATCH 135/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.1.11 → v0.1.14](https://github.com/astral-sh/ruff-pre-commit/compare/v0.1.11...v0.1.14) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8df635ab..9f843050 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.1.11' + rev: 'v0.1.14' hooks: - id: ruff From 34c9e2c3226370717c2f86703a21154dd56d8607 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Tue, 23 Jan 2024 18:33:34 +0000 Subject: [PATCH 136/216] Fix HistogramWidget for multiscale data --- src/napari_matplotlib/histogram.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 073620d1..ffbd1fff 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -4,6 +4,8 @@ import numpy as np import numpy.typing as npt from matplotlib.container import BarContainer +from napari.layers import Image +from napari.layers._multiscale_data import MultiScaleData from qtpy.QtWidgets import ( QComboBox, QLabel, @@ -67,14 +69,18 @@ def draw(self) -> None: """ Clear the axes and histogram the currently selected layer/slice. """ - layer = self.layers[0] + layer: Image = self.layers[0] + data = layer.data - if layer.data.ndim - layer.rgb == 3: + if isinstance(layer.data, MultiScaleData): + data = data[layer.data_level] + + if layer.ndim - layer.rgb == 3: # 3D data, can be single channel or RGB - data = layer.data[self.current_z] + # Slice in z dimension + data = data[self.current_z] self.axes.set_title(f"z={self.current_z}") - else: - data = layer.data + # Read data into memory if it's a dask array data = np.asarray(data) From 31c8fac9bacb87c34a6dffa46781ac7849be1c70 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Tue, 23 Jan 2024 18:39:17 +0000 Subject: [PATCH 137/216] Fix pandas deprecation warning --- pyproject.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 22ff307f..ba9f9e66 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,14 +6,15 @@ build-backend = "setuptools.build_meta" write_to = "src/napari_matplotlib/_version.py" [tool.pytest.ini_options] -qt_api = "pyqt6" -addopts = "--mpl --mpl-baseline-relative" filterwarnings = [ "error", + "ignore:(?s).*Pyarrow will become a required dependency of pandas", # Coming from vispy "ignore:distutils Version classes are deprecated:DeprecationWarning", "ignore:`np.bool8` is a deprecated alias for `np.bool_`:DeprecationWarning", ] +qt_api = "pyqt6" +addopts = "--mpl --mpl-baseline-relative" [tool.black] line-length = 79 From c3c4dbd2774da51fbb9a8a072363201129bce3df Mon Sep 17 00:00:00 2001 From: David Stansby Date: Tue, 23 Jan 2024 18:47:48 +0000 Subject: [PATCH 138/216] Add 2.0.1 changelog --- docs/changelog.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 6395e9c1..255982a3 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,5 +1,13 @@ Changelog ========= +2.0.1 +----- +Bug fixes +~~~~~~~~~ +- Fixed using the ``HistogramWidget`` with layers containing multiscale data. +- Make sure ``HistogramWidget`` uses 100 bins (not 99) when floating point data is + selected. + 2.0.0 ----- Changes to custom theming From 266f4849136a4b11be6d4b27dffb886058e3cf2e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 17:32:20 +0000 Subject: [PATCH 139/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black: 23.12.1 → 24.1.1](https://github.com/psf/black/compare/23.12.1...24.1.1) - [github.com/astral-sh/ruff-pre-commit: v0.1.14 → v0.2.0](https://github.com/astral-sh/ruff-pre-commit/compare/v0.1.14...v0.2.0) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9f843050..5bff1036 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/psf/black - rev: 23.12.1 + rev: 24.1.1 hooks: - id: black @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.1.14' + rev: 'v0.2.0' hooks: - id: ruff From 0efd2b2c03e3dcc1cd455489af5a1fc813527935 Mon Sep 17 00:00:00 2001 From: Sam Cunliffe Date: Tue, 6 Feb 2024 19:31:50 +0000 Subject: [PATCH 140/216] Expecting two warnings so nested with pytest.warns. --- src/napari_matplotlib/tests/test_util.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/napari_matplotlib/tests/test_util.py b/src/napari_matplotlib/tests/test_util.py index a8792d41..918e7633 100644 --- a/src/napari_matplotlib/tests/test_util.py +++ b/src/napari_matplotlib/tests/test_util.py @@ -69,7 +69,10 @@ def test_fallback_if_missing_dimensions(mocker): test_css = " Flobble { background-color: rgb(0, 97, 163); } " mocker.patch("napari.qt.get_current_stylesheet").return_value = test_css with pytest.warns(RuntimeWarning, match="Unable to find DimensionToken"): - assert from_napari_css_get_size_of("Flobble", (1, 2)) == QSize(1, 2) + with pytest.warns(RuntimeWarning, match="Unable to find Flobble"): + assert from_napari_css_get_size_of("Flobble", (1, 2)) == QSize( + 1, 2 + ) def test_fallback_if_prelude_not_in_css(): From cd429ee947b9e8dc949851bab0ef106d157b0531 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 7 Feb 2024 09:45:06 +0000 Subject: [PATCH 141/216] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- examples/histogram.py | 1 + examples/scatter.py | 1 + examples/slice.py | 1 + 3 files changed, 3 insertions(+) diff --git a/examples/histogram.py b/examples/histogram.py index ccda491a..b9ceb377 100644 --- a/examples/histogram.py +++ b/examples/histogram.py @@ -2,6 +2,7 @@ Histograms ========== """ + import napari viewer = napari.Viewer() diff --git a/examples/scatter.py b/examples/scatter.py index cd812401..00e01ec9 100644 --- a/examples/scatter.py +++ b/examples/scatter.py @@ -2,6 +2,7 @@ Scatter plots ============= """ + import napari viewer = napari.Viewer() diff --git a/examples/slice.py b/examples/slice.py index 3e43443e..242a16cc 100644 --- a/examples/slice.py +++ b/examples/slice.py @@ -2,6 +2,7 @@ 1D slices ========= """ + import napari viewer = napari.Viewer() From 07217c621302d644a8796e878cf70bfdde2f2164 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 17:33:44 +0000 Subject: [PATCH 142/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.2.0 → v0.2.1](https://github.com/astral-sh/ruff-pre-commit/compare/v0.2.0...v0.2.1) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5bff1036..f97ded25 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.2.0' + rev: 'v0.2.1' hooks: - id: ruff From 6261f4c36fb531146cb270f3ad2bf9fc5d62ac1c Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Wed, 14 Feb 2024 10:54:40 +0000 Subject: [PATCH 143/216] Add 'num_bins, 'start', and 'stop' parameters to '_get_bins' --- src/napari_matplotlib/histogram.py | 56 ++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index bec5c61f..50360710 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -27,15 +27,44 @@ _COLORS = {"r": "tab:red", "g": "tab:green", "b": "tab:blue"} -def _get_bins(data: npt.NDArray[Any]) -> npt.NDArray[Any]: +def _get_bins( + data: npt.NDArray[Any], + num_bins: int = 100, + start: Optional[Union[int, float]] = None, + stop: Optional[Union[int, float]] = None, +) -> npt.NDArray[Any]: + """Create evenly spaced bins with a given interval. + + If `start` or `stop` are `None`, they will be set based on the minimum + and maximum values, respectively, of the data. + + Parameters + ---------- + data : napari.layers.Layer.data + Napari layer data. + num_bins : integer, optional + Number of evenly-spaced bins to create. + start : integer or real, optional + Start bin edge. Defaults to the minimum value of `data`. + stop : integer or real, optional + Stop bin edge. Defaults to the maximum value of `data`. + + Returns + ------- + bin_edges : numpy.ndarray + Array of evenly spaced bin edges. + """ + start = np.min(data) if start is None else start + stop = np.max(data) if stop is None else stop + if data.dtype.kind in {"i", "u"}: # Make sure integer data types have integer sized bins - step = np.ceil(np.ptp(data) / 100) - return np.arange(np.min(data), np.max(data) + step, step) + step = np.ceil((stop - start) / num_bins) + return np.arange(start, stop + step, step) else: - # For other data types, just have 100 evenly spaced bins - # (and 101 bin edges) - return np.linspace(np.min(data), np.max(data), 101) + # For other data types we can use exactly `num_bins` bins + # (and `num_bins` + 1 bin edges) + return np.linspace(start, stop, num_bins + 1) class HistogramWidget(SingleAxesWidget): @@ -217,15 +246,12 @@ def draw(self) -> None: # Important to calculate bins after slicing 3D data, to avoid reading # whole cube into memory. - if data.dtype.kind in {"i", "u"}: - # Make sure integer data types have integer sized bins - step = abs(self.bins_stop - self.bins_start) // (self.bins_num) - step = max(1, step) - bins = np.arange(self.bins_start, self.bins_stop + step, step) - else: - bins = np.linspace( - self.bins_start, self.bins_stop, self.bins_num + 1 - ) + bins = _get_bins( + data, + num_bins=self.bins_num, + start=self.bins_start, + stop=self.bins_stop, + ) if layer.rgb: # Histogram RGB channels independently From 46058eea210c3b7c532d0e857f05592e15568de5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 17:43:22 +0000 Subject: [PATCH 144/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black: 24.1.1 → 24.2.0](https://github.com/psf/black/compare/24.1.1...24.2.0) - [github.com/astral-sh/ruff-pre-commit: v0.2.1 → v0.2.2](https://github.com/astral-sh/ruff-pre-commit/compare/v0.2.1...v0.2.2) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f97ded25..e57a9c82 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/psf/black - rev: 24.1.1 + rev: 24.2.0 hooks: - id: black @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.2.1' + rev: 'v0.2.2' hooks: - id: ruff From 517b2139ccfe59a4cc486467692a0e62bb9839aa Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 3 May 2024 15:21:40 +0100 Subject: [PATCH 145/216] Update pre-commit --- .pre-commit-config.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e57a9c82..40048ea4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,13 +1,13 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 + rev: v4.6.0 hooks: - id: check-docstring-first - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/psf/black - rev: 24.2.0 + rev: 24.4.2 hooks: - id: black @@ -17,14 +17,14 @@ repos: - id: napari-plugin-checks - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.8.0 + rev: v1.10.0 hooks: - id: mypy additional_dependencies: [numpy, matplotlib] - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.2.2' + rev: 'v0.4.2' hooks: - id: ruff From 9949427de3b7212931e2601baabf2040c7cbfe22 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 3 May 2024 15:36:11 +0100 Subject: [PATCH 146/216] Bump codecov action --- .github/workflows/test_and_deploy.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test_and_deploy.yml b/.github/workflows/test_and_deploy.yml index 8665e1d2..9b24e7f4 100644 --- a/.github/workflows/test_and_deploy.yml +++ b/.github/workflows/test_and_deploy.yml @@ -58,7 +58,7 @@ jobs: if: ${{ always() }} - name: Coverage - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 # Don't run coverage on merge queue CI to avoid duplicating reports # to codecov. See https://github.com/matplotlib/napari-matplotlib/issues/155 if: github.event_name != 'merge_group' @@ -66,6 +66,8 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: true + + deploy: # this will run when you have tagged a commit, starting with "v*" # and requires that you have put your twine API key in your From ea21e54a0c30ceafb3b7c1bdbf7e9ab77f8629c7 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 3 May 2024 15:47:12 +0100 Subject: [PATCH 147/216] Suppress doc build warning --- docs/conf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/conf.py b/docs/conf.py index 2517a59c..5be3c950 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -33,6 +33,7 @@ "sphinx_automodapi.automodapi", "sphinx_automodapi.smart_resolver", "sphinx.ext.intersphinx", + "qtgallery", ] sphinx_gallery_conf = { @@ -40,6 +41,7 @@ "image_scrapers": (qtgallery.qtscraper,), "reset_modules": (qtgallery.reset_qapp,), } +suppress_warnings = ["config.cache"] qtgallery_conf = { "xvfb_size": (640, 480), From 2645f43d139202da084aba3cecaa5b19f762093b Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 3 May 2024 15:54:05 +0100 Subject: [PATCH 148/216] Remove napari hub preview --- .github/workflows/napari_hub_preview.yml | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 .github/workflows/napari_hub_preview.yml diff --git a/.github/workflows/napari_hub_preview.yml b/.github/workflows/napari_hub_preview.yml deleted file mode 100644 index c204ac45..00000000 --- a/.github/workflows/napari_hub_preview.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: napari hub Preview Page # we use this name to find your preview page artifact, so don't change it! -# For more info on this action, see https://github.com/chanzuckerberg/napari-hub-preview-action/blob/main/action.yml - -on: - pull_request: - types: [ labeled ] - -jobs: - preview-page: - if: ${{ github.event.label.name == 'napari hub preview' }} - name: Preview Page Deploy - runs-on: ubuntu-latest - - steps: - - name: Checkout repo - uses: actions/checkout@v3 - - - name: napari hub Preview Page Builder - uses: chanzuckerberg/napari-hub-preview-action@v0.1 - with: - hub-ref: main From e5b9bb2b5bf5b00aaf0fcbf5598a235b08fd9c83 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 3 May 2024 15:54:42 +0100 Subject: [PATCH 149/216] Update headless gui version --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 5b721d92..39c1ab51 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -32,7 +32,7 @@ jobs: sudo apt install graphviz --yes - name: Build Docs - uses: aganders3/headless-gui@v1 + uses: aganders3/headless-gui@v2 with: run: make html working-directory: ./docs From 8cc74cab748cc0da54e6c08ea52d8d0a119fee79 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 3 May 2024 16:01:03 +0100 Subject: [PATCH 150/216] Try stable release of napari for doc build --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 41e4e34f..25aa4cf8 100644 --- a/setup.cfg +++ b/setup.cfg @@ -47,7 +47,7 @@ napari.manifest = [options.extras_require] docs = - napari[all]==0.4.19rc3 + napari[all]==0.4.19 numpydoc pydantic<2 pydata-sphinx-theme From 0be3f7b70c60fd8cd44220ab4f1c6bfe24722770 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 3 May 2024 16:10:26 +0100 Subject: [PATCH 151/216] Remoe doc napari pin --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 25aa4cf8..cccec1c5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -47,7 +47,7 @@ napari.manifest = [options.extras_require] docs = - napari[all]==0.4.19 + napari[all] numpydoc pydantic<2 pydata-sphinx-theme From 797e4605e99e2773f9ebcbe5ddd0f687e316fb6e Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 24 May 2024 14:00:28 +0100 Subject: [PATCH 152/216] Try custom scrapers --- docs/conf.py | 57 +++++++++++++++++++++++++++++++++++++++++++--------- setup.cfg | 1 - 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 5be3c950..3c6ce6fb 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -13,7 +13,7 @@ # import os # import sys # sys.path.insert(0, os.path.abspath('.')) -import qtgallery +from sphinx_gallery import scrapers # -- Project information ----------------------------------------------------- @@ -33,22 +33,59 @@ "sphinx_automodapi.automodapi", "sphinx_automodapi.smart_resolver", "sphinx.ext.intersphinx", - "qtgallery", ] + +def reset_napari(gallery_conf, fname): + from napari.settings import get_settings + from qtpy.QtWidgets import QApplication + + settings = get_settings() + settings.appearance.theme = "dark" + + # Disabling `QApplication.exec_` means example scripts can call `exec_` + # (scripts work when run normally) without blocking example execution by + # sphinx-gallery. (from qtgallery) + QApplication.exec_ = lambda _: None + + +def napari_scraper(block, block_vars, gallery_conf): + """Basic napari window scraper. + + Looks for any QtMainWindow instances and takes a screenshot of them. + + `app.processEvents()` allows Qt events to propagateo and prevents hanging. + """ + import napari + + imgpath_iter = block_vars["image_path_iterator"] + + if app := napari.qt.get_app(): + app.processEvents() + else: + return "" + + img_paths = [] + for win, img_path in zip( + reversed(napari._qt.qt_main_window._QtMainWindow._instances), + imgpath_iter, + ): + img_paths.append(img_path) + win._window.screenshot(img_path, canvas_only=False) + + napari.Viewer.close_all() + app.processEvents() + + return scrapers.figure_rst(img_paths, gallery_conf["src_dir"]) + + sphinx_gallery_conf = { "filename_pattern": ".", - "image_scrapers": (qtgallery.qtscraper,), - "reset_modules": (qtgallery.reset_qapp,), + "image_scrapers": (napari_scraper,), + "reset_modules": (reset_napari,), } suppress_warnings = ["config.cache"] -qtgallery_conf = { - "xvfb_size": (640, 480), - "xvfb_color_depth": 24, - "xfvb_use_xauth": False, - "xfvb_extra_args": [], -} numpydoc_show_class_members = False automodapi_inheritance_diagram = True diff --git a/setup.cfg b/setup.cfg index cccec1c5..76fc8bf3 100644 --- a/setup.cfg +++ b/setup.cfg @@ -51,7 +51,6 @@ docs = numpydoc pydantic<2 pydata-sphinx-theme - qtgallery sphinx sphinx-automodapi sphinx-gallery From 312d50c03bd9e4df775c6baa17d728affe37658b Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 24 May 2024 14:03:57 +0100 Subject: [PATCH 153/216] Add some type ignores --- docs/conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 3c6ce6fb..2818f02e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -36,7 +36,7 @@ ] -def reset_napari(gallery_conf, fname): +def reset_napari(gallery_conf, fname): # type: ignore[no-untyped-def] from napari.settings import get_settings from qtpy.QtWidgets import QApplication @@ -49,7 +49,7 @@ def reset_napari(gallery_conf, fname): QApplication.exec_ = lambda _: None -def napari_scraper(block, block_vars, gallery_conf): +def napari_scraper(block, block_vars, gallery_conf): # type: ignore[no-untyped-def] """Basic napari window scraper. Looks for any QtMainWindow instances and takes a screenshot of them. From 5c80464405f4c5205628805911c33ef9bf0e1226 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 3 May 2024 15:27:26 +0100 Subject: [PATCH 154/216] Adhere to SPEC0 --- .github/workflows/test_and_deploy.yml | 2 +- docs/changelog.rst | 9 +++++++++ pyproject.toml | 4 ++-- setup.cfg | 4 ++-- tox.ini | 4 ++-- 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test_and_deploy.yml b/.github/workflows/test_and_deploy.yml index 9b24e7f4..94cf1e95 100644 --- a/.github/workflows/test_and_deploy.yml +++ b/.github/workflows/test_and_deploy.yml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: platform: [ubuntu-latest, macos-latest, windows-latest] - python-version: ['3.9', '3.10', '3.11'] + python-version: ['3.10', '3.11', '3.12'] steps: - uses: actions/checkout@v3 diff --git a/docs/changelog.rst b/docs/changelog.rst index 255982a3..8e3e8598 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,5 +1,14 @@ Changelog ========= +2.0.2 +----- +Dependencies +~~~~~~~~~~~~ +napari-matplotlib now adheres to `SPEC 0`_, and has: +- Dropped support for Python 3.9 +- Added support for Python 3.12 +- Added a minimum required numpy verison of 1.23 + 2.0.1 ----- Bug fixes diff --git a/pyproject.toml b/pyproject.toml index ba9f9e66..d5691133 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,7 +24,7 @@ profile = "black" line_length = 79 [tool.ruff] -target-version = "py39" +target-version = "py310" select = ["I", "UP", "F", "E", "W", "D"] ignore = [ "D100", # Missing docstring in public module @@ -46,7 +46,7 @@ fix = true convention = "numpy" [tool.mypy] -python_version = "3.9" +python_version = "3.10" # Block below are checks that form part of mypy 'strict' mode strict = true disallow_subclassing_any = false # TODO: fix diff --git a/setup.cfg b/setup.cfg index 76fc8bf3..2b745044 100644 --- a/setup.cfg +++ b/setup.cfg @@ -29,9 +29,9 @@ packages = find: install_requires = matplotlib napari - numpy + numpy>=1.23 tinycss2 -python_requires = >=3.9 +python_requires = >=3.10 include_package_data = True package_dir = =src diff --git a/tox.ini b/tox.ini index 4ec0c702..f4aed6a8 100644 --- a/tox.ini +++ b/tox.ini @@ -1,12 +1,12 @@ [tox] -envlist = py{39,310,311} +envlist = py{310,311,312} isolated_build = true [gh-actions] python = - 3.9: py39 3.10: py310 3.11: py311 + 3.12: py312 [testenv] extras = testing From 891f4aa263e1d08dccd22e27f7b00941cf076268 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 24 May 2024 14:17:39 +0100 Subject: [PATCH 155/216] Ignore pydantic warning --- pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index d5691133..bbec4096 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,6 +12,8 @@ filterwarnings = [ # Coming from vispy "ignore:distutils Version classes are deprecated:DeprecationWarning", "ignore:`np.bool8` is a deprecated alias for `np.bool_`:DeprecationWarning", + # Coming from pydantic via napari + "ignore:Pickle, copy, and deepcopy support will be removed from itertools in Python 3.14.:DeprecationWarning" ] qt_api = "pyqt6" addopts = "--mpl --mpl-baseline-relative" From 52bb0a902bc4c427f159a7ab4e4f2b969d33169b Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 24 May 2024 14:40:06 +0100 Subject: [PATCH 156/216] pre-commit fixes --- src/napari_matplotlib/base.py | 7 +++---- src/napari_matplotlib/histogram.py | 12 ++++++------ src/napari_matplotlib/scatter.py | 8 ++++---- src/napari_matplotlib/slice.py | 4 ++-- src/napari_matplotlib/util.py | 9 +++------ 5 files changed, 18 insertions(+), 22 deletions(-) diff --git a/src/napari_matplotlib/base.py b/src/napari_matplotlib/base.py index fb9e485c..c455335e 100644 --- a/src/napari_matplotlib/base.py +++ b/src/napari_matplotlib/base.py @@ -1,6 +1,5 @@ import os from pathlib import Path -from typing import Optional import matplotlib.style as mplstyle import napari @@ -38,7 +37,7 @@ class BaseNapariMPLWidget(QWidget): def __init__( self, napari_viewer: napari.Viewer, - parent: Optional[QWidget] = None, + parent: QWidget | None = None, ): super().__init__(parent=parent) self.viewer = napari_viewer @@ -173,7 +172,7 @@ class NapariMPLWidget(BaseNapariMPLWidget): def __init__( self, napari_viewer: napari.viewer.Viewer, - parent: Optional[QWidget] = None, + parent: QWidget | None = None, ): super().__init__(napari_viewer=napari_viewer, parent=parent) self._setup_callbacks() @@ -282,7 +281,7 @@ class SingleAxesWidget(NapariMPLWidget): def __init__( self, napari_viewer: napari.viewer.Viewer, - parent: Optional[QWidget] = None, + parent: QWidget | None = None, ): super().__init__(napari_viewer=napari_viewer, parent=parent) self.add_single_axes() diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 40765287..a0b6e09f 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -1,4 +1,4 @@ -from typing import Any, Optional, cast +from typing import Any, cast import napari import numpy as np @@ -44,7 +44,7 @@ class HistogramWidget(SingleAxesWidget): def __init__( self, napari_viewer: napari.viewer.Viewer, - parent: Optional[QWidget] = None, + parent: QWidget | None = None, ): super().__init__(napari_viewer, parent=parent) self._update_layers(None) @@ -121,7 +121,7 @@ class FeaturesHistogramWidget(SingleAxesWidget): def __init__( self, napari_viewer: napari.viewer.Viewer, - parent: Optional[QWidget] = None, + parent: QWidget | None = None, ): super().__init__(napari_viewer, parent=parent) @@ -137,12 +137,12 @@ def __init__( self._update_layers(None) @property - def x_axis_key(self) -> Optional[str]: + def x_axis_key(self) -> str | None: """Key to access x axis data from the FeaturesTable""" return self._x_axis_key @x_axis_key.setter - def x_axis_key(self, key: Optional[str]) -> None: + def x_axis_key(self, key: str | None) -> None: self._x_axis_key = key self._draw() @@ -166,7 +166,7 @@ def _get_valid_axis_keys(self) -> list[str]: else: return self.layers[0].features.keys() - def _get_data(self) -> tuple[Optional[npt.NDArray[Any]], str]: + def _get_data(self) -> tuple[npt.NDArray[Any] | None, str]: """Get the plot data. Returns diff --git a/src/napari_matplotlib/scatter.py b/src/napari_matplotlib/scatter.py index 67d6896c..98ebe928 100644 --- a/src/napari_matplotlib/scatter.py +++ b/src/napari_matplotlib/scatter.py @@ -1,4 +1,4 @@ -from typing import Any, Optional, Union +from typing import Any import napari import numpy.typing as npt @@ -100,7 +100,7 @@ class FeaturesScatterWidget(ScatterBaseWidget): def __init__( self, napari_viewer: napari.viewer.Viewer, - parent: Optional[QWidget] = None, + parent: QWidget | None = None, ): super().__init__(napari_viewer, parent=parent) @@ -118,7 +118,7 @@ def __init__( self._update_layers(None) @property - def x_axis_key(self) -> Union[str, None]: + def x_axis_key(self) -> str | None: """ Key for the x-axis data. """ @@ -133,7 +133,7 @@ def x_axis_key(self, key: str) -> None: self._draw() @property - def y_axis_key(self) -> Union[str, None]: + def y_axis_key(self) -> str | None: """ Key for the y-axis data. """ diff --git a/src/napari_matplotlib/slice.py b/src/napari_matplotlib/slice.py index 9459fa97..1924bf2b 100644 --- a/src/napari_matplotlib/slice.py +++ b/src/napari_matplotlib/slice.py @@ -1,4 +1,4 @@ -from typing import Any, Optional +from typing import Any import matplotlib.ticker as mticker import napari @@ -30,7 +30,7 @@ class SliceWidget(SingleAxesWidget): def __init__( self, napari_viewer: napari.viewer.Viewer, - parent: Optional[QWidget] = None, + parent: QWidget | None = None, ): # Setup figure/axes super().__init__(napari_viewer, parent=parent) diff --git a/src/napari_matplotlib/util.py b/src/napari_matplotlib/util.py index ed994256..c54b60a7 100644 --- a/src/napari_matplotlib/util.py +++ b/src/napari_matplotlib/util.py @@ -1,4 +1,3 @@ -from typing import Optional, Union from warnings import warn import napari.qt @@ -12,7 +11,7 @@ class Interval: An integer interval. """ - def __init__(self, lower_bound: Optional[int], upper_bound: Optional[int]): + def __init__(self, lower_bound: int | None, upper_bound: int | None): """ Parameters ---------- @@ -48,7 +47,7 @@ def __contains__(self, val: int) -> bool: return True @property - def _helper_text(self) -> Optional[str]: + def _helper_text(self) -> str | None: """ Helper text for widgets. """ @@ -86,9 +85,7 @@ def _has_id(nodes: list[tinycss2.ast.Node], id_name: str) -> bool: ) -def _get_dimension( - nodes: list[tinycss2.ast.Node], id_name: str -) -> Union[int, None]: +def _get_dimension(nodes: list[tinycss2.ast.Node], id_name: str) -> int | None: """ Get the value of the DimensionToken for the IdentToken `id_name`. From e7c49451e5e1b25ccef43ddba054ad4a23328e99 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 24 May 2024 14:43:04 +0100 Subject: [PATCH 157/216] Fix doc link --- docs/changelog.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 8e3e8598..ff2e60cf 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -4,7 +4,7 @@ Changelog ----- Dependencies ~~~~~~~~~~~~ -napari-matplotlib now adheres to `SPEC 0`_, and has: +napari-matplotlib now adheres to `SPEC 0 `_, and has: - Dropped support for Python 3.9 - Added support for Python 3.12 - Added a minimum required numpy verison of 1.23 From 1818110f3a04f9948b28ca789dd34eb7e7369674 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 24 May 2024 14:46:43 +0100 Subject: [PATCH 158/216] Don't fail if codecov fails --- .github/workflows/test_and_deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_and_deploy.yml b/.github/workflows/test_and_deploy.yml index 94cf1e95..5f9ed4b9 100644 --- a/.github/workflows/test_and_deploy.yml +++ b/.github/workflows/test_and_deploy.yml @@ -64,7 +64,7 @@ jobs: if: github.event_name != 'merge_group' with: token: ${{ secrets.CODECOV_TOKEN }} - fail_ci_if_error: true + fail_ci_if_error: false From 687ba2a279f0f1f5ef80b59258fe0caf6b8aa7fa Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 24 May 2024 14:16:47 +0100 Subject: [PATCH 159/216] Add some scientific Python repo recommendatiosn --- .github/workflows/test_and_deploy.yml | 4 ++++ pyproject.toml | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_and_deploy.yml b/.github/workflows/test_and_deploy.yml index 5f9ed4b9..2a8b7317 100644 --- a/.github/workflows/test_and_deploy.yml +++ b/.github/workflows/test_and_deploy.yml @@ -12,6 +12,10 @@ on: workflow_dispatch: merge_group: +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: test: name: ${{ matrix.platform }} py${{ matrix.python-version }} diff --git a/pyproject.toml b/pyproject.toml index bbec4096..5a865b0f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools", "wheel", "setuptools_scm"] +requires = ["setuptools", "setuptools_scm"] build-backend = "setuptools.build_meta" [tool.setuptools_scm] @@ -16,7 +16,11 @@ filterwarnings = [ "ignore:Pickle, copy, and deepcopy support will be removed from itertools in Python 3.14.:DeprecationWarning" ] qt_api = "pyqt6" -addopts = "--mpl --mpl-baseline-relative" +addopts = ["--mpl", "--mpl-baseline-relative", "--strict-config", "--strict-markers", "-ra"] +minversion = "7" +testpaths = ["src/napari_matplotlib/tests"] +log_cli_level = "INFO" +xfail_strict = true [tool.black] line-length = 79 From 33a71d3231841b6452d677e2a94d0792e4ee3ffe Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sat, 25 May 2024 09:29:58 +0100 Subject: [PATCH 160/216] Some more repo-review suggestions --- .pre-commit-config.yaml | 2 +- docs/conf.py | 1 + pyproject.toml | 12 ++++++++---- src/napari_matplotlib/histogram.py | 2 +- src/napari_matplotlib/tests/test_util.py | 2 +- src/napari_matplotlib/util.py | 9 +++++++-- 6 files changed, 19 insertions(+), 9 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 40048ea4..79342e26 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,7 @@ repos: - id: end-of-file-fixer - id: trailing-whitespace - - repo: https://github.com/psf/black + - repo: https://github.com/psf/black-pre-commit-mirror rev: 24.4.2 hooks: - id: black diff --git a/docs/conf.py b/docs/conf.py index 2818f02e..f1533830 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -69,6 +69,7 @@ def napari_scraper(block, block_vars, gallery_conf): # type: ignore[no-untyped- for win, img_path in zip( reversed(napari._qt.qt_main_window._QtMainWindow._instances), imgpath_iter, + strict=False, ): img_paths.append(img_path) win._window.screenshot(img_path, canvas_only=False) diff --git a/pyproject.toml b/pyproject.toml index 5a865b0f..05f7df68 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,10 @@ line_length = 79 [tool.ruff] target-version = "py310" -select = ["I", "UP", "F", "E", "W", "D"] +fix = true + +[tool.ruff.lint] +select = ["B", "I", "UP", "F", "E", "W", "D"] ignore = [ "D100", # Missing docstring in public module "D104", # Missing docstring in public package @@ -41,14 +44,13 @@ ignore = [ "D401", # First line of docstring should be in imperative mood ] -fix = true -[tool.ruff.per-file-ignores] +[tool.ruff.lint.per-file-ignores] "docs/*" = ["D"] "examples/*" = ["D"] "src/napari_matplotlib/tests/*" = ["D"] -[tool.ruff.pydocstyle] +[tool.ruff.lint.pydocstyle] convention = "numpy" [tool.mypy] @@ -59,6 +61,8 @@ disallow_subclassing_any = false # TODO: fix warn_return_any = false # TODO: fix ignore_missing_imports = true +enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"] + [[tool.mypy.overrides]] module = [ "napari_matplotlib/tests/*", diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index a0b6e09f..adbbae64 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -60,7 +60,7 @@ def on_update_layers(self) -> None: def _update_contrast_lims(self) -> None: for lim, line in zip( - self.layers[0].contrast_limits, self._contrast_lines + self.layers[0].contrast_limits, self._contrast_lines, strict=False ): line.set_xdata(lim) diff --git a/src/napari_matplotlib/tests/test_util.py b/src/napari_matplotlib/tests/test_util.py index 918e7633..e966cc26 100644 --- a/src/napari_matplotlib/tests/test_util.py +++ b/src/napari_matplotlib/tests/test_util.py @@ -26,7 +26,7 @@ def test_interval(): assert 10 not in interval with pytest.raises(ValueError, match="must be an integer"): - "string" in interval # type: ignore + assert "string" in interval # type: ignore[operator] with pytest.raises(ValueError, match="must be <= upper_bound"): Interval(5, 3) diff --git a/src/napari_matplotlib/util.py b/src/napari_matplotlib/util.py index c54b60a7..8d4150c3 100644 --- a/src/napari_matplotlib/util.py +++ b/src/napari_matplotlib/util.py @@ -94,14 +94,18 @@ def _get_dimension(nodes: list[tinycss2.ast.Node], id_name: str) -> int | None: None if no IdentToken is found. """ cleaned_nodes = [node for node in nodes if node.type != "whitespace"] - for name, _, value, _ in zip(*(iter(cleaned_nodes),) * 4): + for name, _, value, _ in zip(*(iter(cleaned_nodes),) * 4, strict=False): if ( name.type == "ident" and value.type == "dimension" and name.value == id_name ): return value.int_value - warn(f"Unable to find DimensionToken for {id_name}", RuntimeWarning) + warn( + f"Unable to find DimensionToken for {id_name}", + RuntimeWarning, + stacklevel=1, + ) return None @@ -134,6 +138,7 @@ def from_napari_css_get_size_of( f"Unable to find {qt_element_name} or unable to find its size in " f"the current Napari stylesheet, falling back to {fallback}", RuntimeWarning, + stacklevel=1, ) return QSize(*fallback) From 426a0f5f8401300b1c8c0e93c479e5559e1dec97 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sat, 25 May 2024 10:36:31 +0100 Subject: [PATCH 161/216] use '| None' rather than Optional[Union[...]] for type hints --- src/napari_matplotlib/histogram.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 042ef8fe..fe281c41 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -1,4 +1,4 @@ -from typing import Any, Optional, Union, cast +from typing import Any, cast import napari import numpy as np @@ -30,8 +30,8 @@ def _get_bins( data: npt.NDArray[Any], num_bins: int = 100, - start: Optional[Union[int, float]] = None, - stop: Optional[Union[int, float]] = None, + start: int | float | None = None, + stop: int | float | None = None, ) -> npt.NDArray[Any]: """Create evenly spaced bins with a given interval. @@ -195,7 +195,7 @@ def bins_start(self) -> float: return self._bin_widgets["start"].value() @bins_start.setter - def bins_start(self, start: Union[int, float]) -> None: + def bins_start(self, start: int | float) -> None: """Set the minimum bin edge""" self._bin_widgets["start"].setValue(start) @@ -205,7 +205,7 @@ def bins_stop(self) -> float: return self._bin_widgets["stop"].value() @bins_stop.setter - def bins_stop(self, stop: Union[int, float]) -> None: + def bins_stop(self, stop: int | float) -> None: """Set the maximum bin edge""" self._bin_widgets["stop"].setValue(stop) From 67a864101d2d7d037bfbe8f9f3e1b55569cd125e Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sat, 25 May 2024 11:02:24 +0100 Subject: [PATCH 162/216] remove widgest to set start and stop values for histogram bins --- src/napari_matplotlib/histogram.py | 145 +++--------------- .../tests/baseline/test_histogram_2D_bins.png | Bin 19894 -> 19832 bytes src/napari_matplotlib/tests/test_histogram.py | 4 +- 3 files changed, 24 insertions(+), 125 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index fe281c41..aeef8419 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -7,9 +7,7 @@ from napari.layers import Image from napari.layers._multiscale_data import MultiScaleData from qtpy.QtWidgets import ( - QAbstractSpinBox, QComboBox, - QDoubleSpinBox, QFormLayout, QGroupBox, QLabel, @@ -30,41 +28,29 @@ def _get_bins( data: npt.NDArray[Any], num_bins: int = 100, - start: int | float | None = None, - stop: int | float | None = None, ) -> npt.NDArray[Any]: """Create evenly spaced bins with a given interval. - If `start` or `stop` are `None`, they will be set based on the minimum - and maximum values, respectively, of the data. - Parameters ---------- data : napari.layers.Layer.data Napari layer data. num_bins : integer, optional - Number of evenly-spaced bins to create. - start : integer or real, optional - Start bin edge. Defaults to the minimum value of `data`. - stop : integer or real, optional - Stop bin edge. Defaults to the maximum value of `data`. + Number of evenly-spaced bins to create. Defaults to 100. Returns ------- bin_edges : numpy.ndarray Array of evenly spaced bin edges. """ - start = np.min(data) if start is None else start - stop = np.max(data) if stop is None else stop - if data.dtype.kind in {"i", "u"}: # Make sure integer data types have integer sized bins - step = np.ceil((stop - start) / num_bins) - return np.arange(start, stop + step, step) + step = np.ceil(np.ptp(data) / num_bins) + return np.arange(np.min(data), np.max(data) + step, step) else: # For other data types we can use exactly `num_bins` bins # (and `num_bins` + 1 bin edges) - return np.linspace(start, stop, num_bins + 1) + return np.linspace(np.min(data), np.max(data), num_bins + 1) class HistogramWidget(SingleAxesWidget): @@ -82,53 +68,28 @@ def __init__( ): super().__init__(napari_viewer, parent=parent) - # Create widgets for setting bin parameters - bins_start = QDoubleSpinBox() - bins_start.setStepType(QAbstractSpinBox.AdaptiveDecimalStepType) - bins_start.setRange(-1e10, 1e10) - bins_start.setValue(0) - bins_start.setWrapping(False) - bins_start.setKeyboardTracking(False) - bins_start.setDecimals(2) - - bins_stop = QDoubleSpinBox() - bins_stop.setStepType(QAbstractSpinBox.AdaptiveDecimalStepType) - bins_stop.setRange(-1e10, 1e10) - bins_stop.setValue(100) - bins_start.setWrapping(False) - bins_stop.setKeyboardTracking(False) - bins_stop.setDecimals(2) - - bins_num = QSpinBox() - bins_num.setRange(1, 100_000) - bins_num.setValue(101) - bins_num.setWrapping(False) - bins_num.setKeyboardTracking(False) + num_bins_widget = QSpinBox() + num_bins_widget.setRange(1, 100_000) + num_bins_widget.setValue(101) + num_bins_widget.setWrapping(False) + num_bins_widget.setKeyboardTracking(False) # Set bins widget layout bins_selection_layout = QFormLayout() - bins_selection_layout.addRow("start", bins_start) - bins_selection_layout.addRow("stop", bins_stop) - bins_selection_layout.addRow("num", bins_num) + bins_selection_layout.addRow("num bins", num_bins_widget) # Group the widgets and add to main layout - bins_widget_group = QGroupBox("Bins") - bins_widget_group_layout = QVBoxLayout() - bins_widget_group_layout.addLayout(bins_selection_layout) - bins_widget_group.setLayout(bins_widget_group_layout) - self.layout().addWidget(bins_widget_group) + params_widget_group = QGroupBox("Params") + params_widget_group_layout = QVBoxLayout() + params_widget_group_layout.addLayout(bins_selection_layout) + params_widget_group.setLayout(params_widget_group_layout) + self.layout().addWidget(params_widget_group) # Add callbacks - bins_start.valueChanged.connect(self._draw) - bins_stop.valueChanged.connect(self._draw) - bins_num.valueChanged.connect(self._draw) + num_bins_widget.valueChanged.connect(self._draw) # Store widgets for later usage - self._bin_widgets = { - "start": bins_start, - "stop": bins_stop, - "num": bins_num, - } + self.num_bins_widget = num_bins_widget self._update_layers(None) self.viewer.events.theme.connect(self._on_napari_theme_changed) @@ -144,27 +105,9 @@ def on_update_layers(self) -> None: if not self.layers: return - # Reset the bin start, stop and step values based on new layer data + # Reset the num bins based on new layer data layer_data = self._get_layer_data(self.layers[0]) - self.autoset_widget_bins(data=layer_data) - - # Only allow integer bins for integer data - # And only allow values greater than 0 for unsigned integers - n_decimals = 0 if np.issubdtype(layer_data.dtype, np.integer) else 2 - is_unsigned = layer_data.dtype.kind == "u" - minimum_value = 0 if is_unsigned else -1e10 - - # Disable callbacks whilst widget values might change - for widget in self._bin_widgets.values(): - widget.blockSignals(True) - - self._bin_widgets["start"].setDecimals(n_decimals) - self._bin_widgets["stop"].setDecimals(n_decimals) - self._bin_widgets["start"].setMinimum(minimum_value) - self._bin_widgets["stop"].setMinimum(minimum_value) - - for widget in self._bin_widgets.values(): - widget.blockSignals(False) + self._set_widget_nums_bins(data=layer_data) def _update_contrast_lims(self) -> None: for lim, line in zip( @@ -174,50 +117,10 @@ def _update_contrast_lims(self) -> None: self.figure.canvas.draw() - def autoset_widget_bins(self, data: npt.NDArray[Any]) -> None: - """Update widgets with bins determined from the image data""" + def _set_widget_nums_bins(self, data: npt.NDArray[Any]) -> None: + """Update num_bins widget with bins determined from the image data""" bins = _get_bins(data) - - # Disable callbacks whilst setting widget values - for widget in self._bin_widgets.values(): - widget.blockSignals(True) - - self.bins_start = bins[0] - self.bins_stop = bins[-1] - self.bins_num = bins.size - 1 - - for widget in self._bin_widgets.values(): - widget.blockSignals(False) - - @property - def bins_start(self) -> float: - """Minimum bin edge""" - return self._bin_widgets["start"].value() - - @bins_start.setter - def bins_start(self, start: int | float) -> None: - """Set the minimum bin edge""" - self._bin_widgets["start"].setValue(start) - - @property - def bins_stop(self) -> float: - """Maximum bin edge""" - return self._bin_widgets["stop"].value() - - @bins_stop.setter - def bins_stop(self, stop: int | float) -> None: - """Set the maximum bin edge""" - self._bin_widgets["stop"].setValue(stop) - - @property - def bins_num(self) -> int: - """Number of bins to use""" - return self._bin_widgets["num"].value() - - @bins_num.setter - def bins_num(self, num: int) -> None: - """Set the number of bins to use""" - self._bin_widgets["num"].setValue(num) + self.num_bins_widget.setValue(bins.size - 1) def _get_layer_data(self, layer: napari.layers.Layer) -> npt.NDArray[Any]: """Get the data associated with a given layer""" @@ -248,9 +151,7 @@ def draw(self) -> None: # whole cube into memory. bins = _get_bins( data, - num_bins=self.bins_num, - start=self.bins_start, - stop=self.bins_stop, + num_bins=self.num_bins_widget.value(), ) if layer.rgb: diff --git a/src/napari_matplotlib/tests/baseline/test_histogram_2D_bins.png b/src/napari_matplotlib/tests/baseline/test_histogram_2D_bins.png index db401612c44fb7eb92dc1ae9f2fd66a7bbd69fd6..98e3cde1254b75ffc92e7786f8106fe4cce3c16f 100644 GIT binary patch literal 19832 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 literal 19894 zcmeIacT`l{mo-|50*Vq;KtPfb6a-W4 zdZ-A4;nKrkr_>4Xz&FuOFKxkxfWsqo2PGS02WNddBbcndgRP~FgQb}Py_1ohy_tk z$}X{(F?Sc`KJ?M5JO@`D6?lquVH@mH$ufi^_v_&z-#vpNoKg2Up(Df`UoFK z&CVxlxVJfzYgh{=47p>-eys0$oC5uVU3!S;4t>JPiB1tfpFJdE(8mW~81(xW?yhvf zQkw~pgH>X$PL_nF@PS1YbMvg+_O`y>%$|LO$iaq^@ZJ&^>u8Dm=g*(1_^e}%+v1Zy zeE48oRH=(n&34hH?zed&D_e9I?|f%=jEPx&(|h)DJ`x@r(EMq=hg$MA*zX71o9hXj zipDcy@90Ezx2{wW(cZf;@jSsgPDm|OSy??}sK6vsuiCR5yPzGR7H+Ybr6RbpzrHz_ z9L$4sUO{i0w$8Lg^IDZ-Q#QL|7W>UQ;)UJJn|r84JW8we=*^*_5M0Q?3n?!bJovuX z!{ab_d+g{7u79BAfn1Id1&6YN!h6+R&D6m`b$It83Y|7_uw3G{^tq8|t(K4pe&)=X zXvcNga!2cU>(U>1@X*Gou5XllEkA5cht_6KXDi?4&J=mC>-QpprV?IG=b{Ea8#X$$@eG*PV4S5wzXsAEeSIaSXREVftjmYI znCcCRie1os=9_d;Rk|_yp9{z3Ln~RZcuCA)klvkL=CIF0mZ2$UqvTEdJ$LI{BNC3X zoG`NIMy#tGz1N<7O#KcX{&}YJ3+dnM=vxlgh5ojWh-PCsfU^R!0n+Xrk zgXSDG-o1O5m6@xmIZ>7GWhfJ9gY1)^fWzU~{q+vV;;AKL4AC3$P-P{hoN;skBRoRR zBw#>@El&Ee^x9GEhYu+&E&h=Qa+SRE4=3vD8S5;HXTC(~Enuo`OxO9L?jCU+uED8x z-Z>6Ws3LKmb$+VB{;DHZQP4=NnvI>Z5iQHT#!!>EvElIO(Ic~oaWs{vXJxg#xcDo7 ze}8W4eSR-3W8*ZZrNP|t@^a&VuY^u3TXa#EL!xs8*hF-@2dbqShfGR_h-+5I`<)$| z=UQJ1pZCCBzgYeurnA1%hhv7B`wnMfv*XXVJ_ z?6#jd+#1mH(os-Q5Im|}zf3`qPAC!B>3e~CV~Xxb{SM26FTR_L(@q0yEVD-W2-|AvGbVrOp}I7;eL_ zkC`^-7~s)77RA;dxwKqe?PD;SB6dHebR4=K9lDA8o>youeXdz$nHf~By)c$u(qFxs z*3#1Auszw(HZF8xIDCA0lfUUWvn$%!<@cjkea8{oG@A>3GV8MwX=Xj?dwb`pxTS(c zS5qR{5vuaSn<)kc2HZw1D$!gfash7D`_rhxYh_Wqmg=bJXey&;&*pwe(sq^2#t&rw zWi71mLgwa74>r<8d*r>a1xn;sfH8^W(DEGS%OA3gj)_Vyb9GI}P``}^8v^zc)%T9z z#nYCn{5J;0#n}Fu5QjT_iGHs0f&}yg0{dq!|2Q+p-mWE$qHE_m$d4*~o|q2Qnn4vZ|_)?V?BfPl<79>aRI~uV85m-q6SG3&&S@ zn-S1M|9vbDgRJvYs`!^@K;wA>Pc*Y6qSyxOOqB}j7-Y=N^WKnNJie5`;zDZbu-EkE z-O=Tz#Hq5RP8D~@)ny1skK5DF?V1klz^E=>>0J zF&2GU`6xtF2p>3g@ zBEJQ0r2odq!m>E-zH(vfb`{yN-y<>hC8pzuX(M0K_h36sa(vOoLLb|p_)h=vNX0(* zy?sltMN-A{fA^D1xX?Pt)o5v7U1BI?Rc<7^b=-_kk?9+8FfGz6nwOUn3vbq1s}IErjtW)ob%pJ;J3WxJP61tk7l7{Dgh2h2V0_T~)Wv6jH zKRhKB1bzE=Ui$b^|G{cTbD&9oytwWtIQqm$U05<(1$}ABw+|PzCK$s(BSt%o-4?CvZchMi0GSFc`snb zga_-u^4dZ;b45!uerKA83MF$6$(b3~00IL;KQHfx@DIieR@EJI0CT8Yn;S`(K z(7MBXUhM3+z`K9cz0taAVQwDUGtccVHF55E_6cxjn& zv8ulx`9Z)wjdA`3KJBlGASSpjO09aQf%7F#HWxW9n+nux4(o3p?f^p^8SlO7|?Ps6WH?WH+r2F==w5+TOu#I|p^xoj|Pf9m(S&6ntG>v`&JE)UY^9tW$cWqj; z*z)7WOP3tMOfG<#R89~%ZD;pcKZiUqJ_rVD-y*xcT(+cgT8z;L-X5KbV{0&hium)|` zMOi4+z{@j)jPL&4lKai)H+?<65If4>TlG=R(M$!ngq4Zu(HkO~Zt%n$ zR25b_j77e`H&f}AaDC4;XlyY3$+cF_f%Z6|qUR?FuB)qyir@CrOh*Fh3?Vr%N7w$| z9L!&X=}@avz|dTwxrptUhZd^S?B4+A|ICr3`fW?{ESxtW zxjg4mIXK)8yS;*fb7EXE-xW%j?_q;RFUZ!=O2;fk-ar@G1~M=( zj*^Oj)=2ub9d*m7qc`d|?0G(!Xy?7@sWq7{(#)GN1kX54a(q!I{QMkcdLp_442Ay! zc_L&D^i5aB(d9GI77klOCTzUCs!_UbnY`AcSC;hS$WJyNSAy4J8AsKQ!744^P z6XkUv1I;VgP{2kj{hrsEG3SXsS-!Cp=Lv)wI1?dB8e;jrQF!q=T@|ORUT#Sf^51n@tzVO&I(Nl*S(1yTk%8^k9+A|2QDyF`N@+{B@=Ek zCGBlJ7x+f$;pLP5&Cvo=66}aAN_MS7Z7~aIpT;$8VMbJxlzJw4v)Q$Zr9#_Kg17OOQwzkcZ zAxmD_k9H9NrBBO0|2<#K!1Q7}j`ll@tw7N7Ue{ywk>kp^4s=9AB%IvR(WlnF;}W-E za@CZT!w)BpsB_EgXU%{4Y2`!CJS~m+0@c0JA&Xn&0e88$RMeH{Y}jtyQr6VeEO^2I z*BBZKO#!xoiG>9}1&SLwKWaM-8EJktcs=fQgwU~TW&$>(2kbzH{hjCRdR5x1tE)A% z1~J3u>B$2g88!y>J)#I!e6YQYt^8@9qgy0hGVT@-$*!0C0vEq|K0BO|iHW(`1!16= zBr;Ui^N(mJJ9}fBs~mcyV0A}}#VcVS)iVa#AnY2*H)?g*9&@%B$~OX`nBdX=x?_j% zHZ*m<)d}yxgX?@R^yKN+?ThLOx)s{leVv!&GBE{LL*eE0stY5W99h(`n4^k3DrI!N zN2_rwXFH5>#jomkLcQBtNi8DAE~cKb5Fy%nGW@LMVKeE-n*HKO;M)>BL=ui>_xJaS z2DnGeY-+I12<%2zYO>_wnDe*-i0mwRV;D1Q7OlEK=!6ZH(L=SFnwp{$7&YWKES5;zY-L*1E?z%znVret6c%9z9)6=0CcyDXDZ)bJt06|4XrL3%+@_g!O zWflGL<4179D;5?OqS>i92hk&5+KOW4#YUa36bt(`2OS$~U?4CD!5jpso`P;}RDbr} z4aBg=c~tAPd6z0^#%iS4>}S(^U~rVRwPQK1+<8FFYxxAB6IVTP5(4p!h(5EF3yKE+ z#?ohiO|TxLZfU2T^wL!M!yQ=Z;*@R2>opq}n9b$s+wosz-K~6xLPw&k$I8vx*-Nl{ zZP7ehCEq>*^ic-U6i2z!*Cm5`A5rN1T;Y4xL^2&noj%(ze;bPc^oo}dv4OksN<*_GLQo`WwPh1P#IQ3l^OCuIzYQ@EZI$C(DZ!cse1=&t~;s0A;^m{V? zf4Kbrz4c#*p8rELoHR1B+TnE=7Votzu(>j!=Y{yuVBGjGSj~ff!D@2;W;N9+a=pW& zq83qJy8%m1?g566UcWB4I=tr^MAK90y3RA5h1?jnK+UUFV~ql;i0|1}_h;+o_+4UI zC_Y1YnT#@1Xhl0CPRJRr5^^}+-z^5nLQLXylNiK(Gv;@mtI!A!FAc6uw*m;Xs=2no z<^S$o1Y_!kbk~aKwie>o;U1OikJq6oFJGQQAM|Ve#aecgsXguow59ocLB~IM%U^L@ z=b9SnRysj&&3#mShCQgSuW!DNShO<*9=3n~erWE8dm2vefxK43KW#?xT?>+ulEPzR z7HtXu4RUvy6*F8U^M;s?NF8!0u*4tXI4OXN3>G~sg)9>#B_(^%%0#uEtgI{*w~K9o z(|?Md^i{$OQPV@HydkFPmgSomU3i{epcon+{$X%Z9eC&1h=?{Ub8-L5L#^rGo)SjS zT}UaGm6f&ehOA>zQuOfiRU%0w;vQ`6&0`HhP-4;tmSiqth%Sm5KA5WkJCsVSHD zy`xck|KQ+(%>j9<^#flBU~}HXDG?H09e5k#-k2DKRB@Vrb8?B7GZM0^|lpX%HhAS7G+*rIid-T&YKoUIP+2mnGgs8$>iN0aHq- zqxdwrxU_^ZhcK`fg*Gd?fHoiZssyeY@QqY_p0U;JTwF>*PL^sqIywc9rp{D2?*+>! zy1AAA;28;x6;@Y^ZS;K&Jh~SuF-nT zG02uJur@R_%)cbPUZ`J(*Ei6&t5>am;8r%a+0wjQop+m;MG`D;OGn3ci7Q$+M{Cl>2m`Ab z$c^iiH|qR!-)-NIrO0x=z-=Luh3wL$WQa=#A%^D0!8E5=Dp@lc^xh2+k~gkj7bg~7 zd)qF&UFkglxj7OKQjvrXilzG>Fh9|j2b}1^JRW)!*;40zb@)Q&$INoUm|pi)< zvtQrr@%lt7>`tY)9!^aPc?<9N$C2mXyxD)o~8rh@WTk!Noiiju0aqajelDQ5EZKg9$7*T?fG!u?-&_do3Jx^j5P zDJT|$z4l*$fG_>JTza|VVw&dxb{?N^{|N}`%?hdjV1tgz<~&Qn4M9Q8WQli**QRH5ufth6In~BTwa9>B)F?1%)miD!Qei9d^7vk>EumMRiketV`RI^ z8SS~%lVIMq(02%11JGB)x5o=9Vv*Pq(2}Iz-k3K}2?wm6i2(TFlo8h2!V%uh{W3J}W0@vjkmW6d<8v=O=nY zs{1YJ_3+4kwUaP-44X?uP3?$r9M~NJ7 z;3^TAKkk*Na7K96Jq5PkX_Fw}RzZHm3`9F1P%d)q84(a1~3(_CRPPKlGb%cpJr!G<|s!_F1_H9C~)Z@K0ic~ zf*}l7Au2pX^a`}nhBlaHqo;*~tw z8+RA<*vYG&kfcMT;Nn*)%eC`+jeylAqoK)B)Abyhm|5QqKU!d0=t_R$OGG_m^ZVQY z{J=&}EV`e!u(-gzKWg81J@ZYhWGr^?>pSdZ0B1O#O+3g}F~Yfw+k0o)Vz|9@A#cxI zGLjR)rl%|+;alZC9dYOe(mTC{W<5oA(*fp|=F0uwZ&`so>9jnW>As9c4f(z}A!Gn5 z0;xg3R~DgAec&`FWo5B8)YqGWlx6vJq?Y6ST-Tu|;J6?h2{xG$pmQ^m*va3O?-)$C z#Y{||Rk61&dt?&l7`e8t*9UUznequD<+JhbJkKZVjsH5EZ-4E2R6QlGwPaZ_l4+$% zxrvv9<7!r?IaVg{pt@sq9t#KQ1Bg&N-P7FBHXwiW!fj*8OsY*u#Fqkm3ky77zVSPW$5h-g@qJhqpq?ml~KUF8~y z1^zkP2JrmxZVPY(wwc90D5yU}AsHBgDiFdHcs2&p4FI3Hxxj{Mns;DjXP4z`|B%?q znJ_qc@E3JNC8q1~;|v0j-7U?{3KCyo0>S*7YZHfQ2?rZ2nunwI(()Z4j1f^$Y&Od| zAYkmv9x9m5b++isiWsi0R_{QmGXykDqIO5urrmzLu3pGOqEtb?xY%keOK-wC0k}AB z{o3h6&wp5zG_NE4^6e@;zP&tA&;8Q}rZeZ!zXqxo;@wxm7$L|VIfCi;7u{DtyKROt z8X1`^Zk;JH8!P7vk8yv;n3sBS4n(XAp)ydADiL@kv9PdexX>)D+G?@i zxo>bV!va;&K0!`OnrM-WR-K-n9xk#_J7K{IE?{(hme+TG3fet9J60is#h&wNo$mf# z^Ga)@t-W1QK|k?mHmUXj;3hX02T-on*_KDEV!!n`!!%-mqWk3Uf9@T%=>5>2*${8c z%v?Md^T!E~qxJ;j0FLs1`_^=v^Cmo0*%fkVP^>^egE>d9=b@0)NQ+PgxvajQ&0$P% z+F;30ka*MDDACMm!@As~^%|MSQtBL2adZ4uu;+qt<%{h?WYiStdn;aFs`EyS3*ezt zRF&+y_G_#S%_2ZLG~rb4DRC0b2x=nE^}~ybipuSO&;T6M$JN21q8LnjXvkvYXeSuQ zt~=|X$|@otvyRW?@0cQz9Y|pAW4k#p+zqgwL(p3{nF2S_Ie;l!k)%_Y;BV%K% z7j1~Z6IAtKxwN!&bl;H96MFa|pt)UHg+WfF;!-ZZl_+?`rveL1z>fc#9lFpsB5|c> zfn6O0m*s$cH5%c~`xeFePyf)yKysGU;m-(PL6^vaznq5EFdRk@7ei?rc}`d9)<|}h!iFRT3cYMV z3~Aj2xsEjv`s%{4xm&=8VpN0wD>GD^cp)L@;A0{a7naPaY_9iwYlB069v1CKAH0 zOyuuyy)~f6X?cSSmz z&>bP5j_?M#H3A4?{-v$_Z(oU|R}ih;u5484kiBd_6ie#c%a+T^n?eNpzHvNcyC$W~ zT~WDklf8>(70(?p#m@vRiKfn-f@wa2-BHgh(LU3DO57ZLms+2CMUfEXB$F1X%7|`- zd#H*p(w012a4~$D2n2-eq+;joR2>2tOCo8slV=A+tfgfCnjL*qcJX75;MNdLcZ(J# zy?k=*?>#;NlGKXp1#6n@>g%6DVj3j3sR1?ADR}Db{fq2pLr1Y4hwI^p`)+R*$<)X! zR{I<5T(!ac=;wg8%67}ZJYUEh_$e2`t)~%m1?Wx2Lclg(ClNc}-w~g+RKEoDL$C+F zty7^DT{&+gL{m1FX^vi|eNQ$R)393$po58(LV)1$`*Gp15KhwtOe152qlXytZS1^e z_Jz}(l+Xsb{h@9qM0hy2L5qS~GpgtXOb{1>E_gD2G76s7Rr-W0O#OJL=I#;DGc37? zJ0qM1lcyT9&LijF7OnYEz|y$ZRthGw@NgwAy8sP>4(|<@fOi#}w}yX&F!A)|xxror z!!9PZAgNVKyb@=;R9Q27^U9rM!pAlFeMwGz;eN5R_pN^}B3Ub(q3CJsU$UWR>TLuS zI+QlqOg^wU0vyJNDitw|2`bJyL*j_uav!l2Kc*#d1Ld9Oy3)V5n-h}MiPaWD2 zs=5~HIk_$kL!r@G0Ig+p8GXw!0T3)=yh!RD2L;aQxrbmR9PC}S_RBa9=bAUCTllF) zeh7|dy<&Bw!|Zq;zPsMfTEQeu*zaMf-j?eIwIr<$vy}!5BPPZZx5HaG+03G>=+PMx z4J1xUG(_U&aK)9=6<|aXxq>K$&C<#9Fe?bZVm%C|3e&|c9L68%E`!>CY= zoH~#oLsOsjcKQ9Sy%2^PT09ti)3xJ$41?)F&=b&CW~FBccgTro9jS}eRTiRy7s0nW zmvBz=i{l5E^Ze*?{%LJ`H``bZq0It=&AAcKf1$MNbDg#}?Y`90(dQlioF=z%N)QJo zrUvXsRVt3~)F9(U80`Cb$TYTHL4Tb`Qq@W0zyxu?dVk?0v4~9}xLJ#IiD~!}4fD1I zAQrYmiT(-?-C7>bawoo*MSI7YT9Ft=G7g<8@<8pWUfU=B_mqvK*kNKjhSwi}PX9YK zmOAdKPdY8;tv}aFUkV2*9m}I+&TicXD(jmhV%~BsO<%qX&U9n6tfMNrtfbIlpMMLa zaA5R4q~L;#lcV5^hX;;YEAy?eK1CoXob2p)m|fYQ zr}<)Xt@Nk0!(w6=@lCXQIRj4_`Ya4~LRAe0B@0+nmYfLlFMOt`jTwsS)Xe_rUtqQG-rc@wWNe9x?>qj4-H!ZkaBn! zgOie#C4IE1=cNpIYP|DJy+Jf1S{OB5-Q3Eu5>_Bw0V?dsit!v3q^kMRp@DFQ$=r1Q(MP9CNPmB=1vFdqajd2!$NnX4E~&aaHQ021z9`Ok}9PeM{iuS?uu&p|=i z8)8BTrhNS>q2oU0c<4z=N?JZMY_Ykxx7-6H=iHDIrSE)U@1Uvh_Ew!gVvW+VwQ0^4 z4e9U>CtMdOk799>#WT3vqE=rO;WItD0_}<~H)u3{bQKgBqFPgdBCLczGA=IFYk!LF zFd^U^p;5_5A4;!!<{&@+pb;dAXhWin=jTPTJpFiwE~qbE9coLHl4-P=elSN^pY}p_ zSsA`gX5+_~ZCnbpX1s;8dkG*w%qBWRVq%oaSmc($}locOBOvktvsoPAL?yli^o&mlvV_nKvSc6QxERHw4H|Dy;&z?OyT;XgJV0h+?d-%tX^GB{?Gh*mN>>}&U zn+ivV2M3r6!gGwx6F}5Ia@9+d4&hu&hS^Q7efA^IUZC?M7%5wR%pJA&GC?%l08h~8 zY3^OCN~+Z6%+WBK+jF?#E!7S1xZ8T0BgBe@hJm04(*Hn^yeD0Ldz)I=tuXT5W(tJK zkK$=W66AMLRY|nMZl*v_fs=C<#*c2nqEPgp@M6qApSmQdX=d{#1NK(k0uHQp;3jU< zgsvN$r-Db&3=o`^{kViRK5Eb#PR+GoTc~enXL7e zvCb5hv;-t@wu0I=E4ex4+h3BU;ni9Y`E!K<_+8+9KV7=g$t5T5?!00f=le?WXCf=E zgpZhjy8Dweaxn}=S9#wkPAZFE*YTGlXX$*cI;)ZSj zeY1WM_=*Hzh@JjZ`A6Q20RIH38#+D31L-nT2Ji1$Ty94%!v6A$iO9r4<#!xW`kRAG zM4*mE5_bO$Wzi9=JQ4&xm})zJ59<8qyd92zOY{*HfFuuUwg+VghWMK zCA-PGm}uapfK#V;7a-1fPZ8Mqf*ZnP64;!RpUc|-wf1zLz|T?F|E=W6$oq$MDvDRf0hzZC&t01W1F4AwY;WtJsMXsHfD zx+|Rb=Ve2G<_Uyfj53hQ2`eAQICT-dxwhm4&}ma%bZT>`Csj^TD8{#s+bvgTT2Csp z>S*~nV)kh=1J4vbD~u0p|w(jKs-arF%re|+}@*d9)IN9`%JvC)3|r|1kmKYxddAW8`FUbia162 zw<9)oUdiUOSII_>BLuZkKL_uRt?%}L;KWyN)qnZ@x2Zs(GO=uoV*P^%H9l6MuF_DL zt>9@ApR3m?T<{;zlfS#p4Yd3VT~DKIR>ORI3*t*tk)M+uOybhDhjdv~jQ@cX70n=z z+o=og3>Ulgi|BMR1-O$Ep`|AKLzTw4>QgPJ`DItt2nL?&tUD>^Ykl5ZRQMxr`S#*? zb3KBceJ^?fpeC(6 zKAeX6;GdFu3os~HS14u`U!+3Ac%P_$f7hPTe)0P5XgRi1+9-mKH^unT1E2mtdqCCU zpU=dHiG3m!d!P(rWRM8IphKttb`BISmBaeyHmR~vVkR?lu0bhix5XrBt77U)VvIML zyVGb9cvJu^c#B>0_Q?w`4fod0yuBb^wfI4%#HMWQ*U62*S2Mz~7^CVw@1H>{nw}R+ zPM?C+p2bNaJX>$2vt?QlDXY#b$v1ThmoBYy2!RM-*aHBpocWX##l^QHt^*;w!9MTE6tmW95SAHDtB@R>Y6$soR z@<5*l_eHuY4(#bIaQh{W62HW$2Z&sEmcdP6%X~4PNpIXM0tLN>;1Hjd1!j8+H=HxYSO)LE5(np$7;_ThOy)60u)7XABbU z`EOYg*H_W}uw1W+hMYSY`NzsP$Ds?wQig2)E@La#_*xkDhmPekuK{P@}de)m~+Rx*hj?<)%?`2x` z;)T^t05wWD|1Y94VFlm5d&`(i!_)~ig-4lgEYGf}4oG1T;cg{MmYZI?HmnsE?}NxL z$L4dEU{9I&f*=sZCYnhI8xFk~l~km3#2VFD%4s@2q?bK`zNNyaOs(2u3f=yP5h zC22*b$wF*hJnoU0LkG%10k9m>elmBm$4%Y{he}^SQk*<2u(L807aSwNo!kyrARGx6 z5Y8%K$NFp|SA9#0|?;Isv&S0Qq#P-p$>PqQ2 zO|F`@?Gt&AXAz6)VK~XSB&^U=zmO2ch<|oM#g7#XhPWMv432YObjzGa&Sy63%8C7g zVtQ`|fE&USVr&M(ig+=DnG;b`_`3Va(w_E!s<`MbfKziUYxTXe)~uP3>Up4?LtDcB zq*~E|GxqJt~C@?*1E?JhzLA`HBx1Lo)(KL#&Q1CF~ zSkz}!(u4Nevd|8<7SG1YRlTEvjlC>R;mxo9o20sAMgxEnaDpIZ>1vk45zG1XsRdG#EK?Dc}GjP0qpkNSMasa6E zAnmYE;bhiiNcNfUBM|fE9Ri&FKZ7s`P2`;YbO5a>JtN>7Z;0~g0oJgy9IP)?!qb1c z6YvmV82Ml=2?)hl>V9jL&hD|%gK8!=)qAK5i+mYrX_}O{c&7br1>6QdL60tg9(>{R zIUozcr!Cd9P(}6E`(1Jzd3na)Kd?8>nWGmV|5w7?;40VzNk2}?r%z%w)tiyV9c7Pz z{u#*y2HXn|VPIw*2eYuc*DU;LN1Td$zdsC6k*jAEQYAE+1}fDl_AsQOJLUO(|8r zuuCkIyq|BxtTW^N=S4ae>S z&Ik|EQk+RGceA#vr^GlpPyeb1Hu^cbUz(mGF+UfjN2ywXoOHfYZVnQBq0#12IeA3% z|5WuqJXZBr@|Yp^%=f3m98^6jlalMO$GZO0k3mrzbYp)BN}s0=+q3<5sdD)bUus4K zVy~~<(dLGb`&$roY9Zo;nI&-XiFxfaz|4rL-(6^FgoBCmJx`ew`+TajVt%;+6sFyS=5c}qdM`o^?L$eBfy;3@bhR2Sz0bqL1BH@6gqjUXO+j@p zR3r84fs4km`~qt$ca4+?yh^#0 z=tv0?Z3FwRt~sg&6n>>>Nhmo6Fh+X|)r zS4cHm?nP%%{Q{M9qpH^YW98C8&eUNlkg|M#&CmGYv*7Ek_BPz@2^8Oi_Q2#Os50(r zQ9;HO-QlAtF_C{UuDzXBY%`H7{-)*f1iAv6w-}rF)T#*=*7LK0uERo{v79q(931_0 zM?3hKkrH{ySUJbVepyh^+Cyx;lgNSI=r%?On0)ISFFU*8+LL;!372>j1zvMtFdiSr0!gB_ChN}BEvPT$x#50B+C zwpgi@isdvG`VTd6e)h~)hK2YPy*sG&C_cMyTTd`0b8Mk^CIb$OL5fD?WfQaEmBU(HOS4!)gH&xVj%`GertWeXldmNOGpH~jN4!Jt(mU@AG zK;`Fm&w_pIe(sz{RABkw_SfMecC7GPQ(e__0Yd~Rzc?%=7TNi7+$bo9^sfdrE2Dff z`CV0#UPta;BcQSoQ8IqF(HX;2Rt1d6mjivlk6_OnRPVmCsoi;=p3^vbWhzWwWYrZt zZfpfrrgNGsU70|wR18df6)?=*YA2kPF*UWc+yI(@#}mX=qGRCuOH`UMF=7dPI>r~8 zBHLof$jDMhN433T+KhX`Z>mALUBDdKl1L8l0D*BPu#At~|9)*o<`7=k-(_fb?LWi? zL1d@Fq}kpdi5{@n(>ByVpw``u<&Aj-I3A$MPR>Oy3wmiieCU%~wxtQ=4;J7#Uk`Bv zKZ60mL0&lviL_Yfw>J#buk+>EV^;k?1P1TyziMORqQdy~UPARr!eQ=N#l`)9#u9eQ zaoph}Oc9i*7Zw&8)0r~eWE0W??<-Nh9H{T8K`ip?6SG{U_Eh7vsjhDP*7DGlXtCFk zCom{xoqW6jh3dCjzI{{HS4bSH!`J}{;!nFW?$U@0LIni{%E~)l_D_`6Z&Zxs0?j7R zN>l_!lxT`Z$mwwyvu-Z@66e5AHs<**NiP%@i#0}ki21U*>tRPDkmR#G#`L`1$KR&C z6&}l3^TVmaabr$_W`BV#M+2?7axrB8%>SOBJ<&j1oK>Y~WM*FQr8|V`^+P+HwLxzX=(V+0>{3BT;j`u* z|DZ!G%4vq#_P4y^U@0x;_h16*cP~Dc=hR5r-&bRTgKT%X<+m$io{co2{3b6k%J$dK z99GWX#i^fKZ8G>=Y+9mOZN2Vx&zLw^s;8BH3dO z0uI4!gR^>3cxx`1O3)z#2qJHRBYnA$m-FJR%x&2i5m`ffJ7w@jhPIgT{?)XpLoJkm z$;-t*y)1bO3MYBEU9<|_fm~9)IffhoYw)dlZceS5bGO#E{Bx?IE8hWW!ix+kEplCk~c zQws~-;o4n;Ap7?DbdUrvUHjSWw)1|X6_Y#AK{3XZ(9tMx=^5Aq#aEy`01N%_fiWEv zEda>T?I-hyAn0d&v$?5hC#aqd|KKv2uVb;UGQXkMFaAAtpQgmKT^Z7k9AP9343dJb z3Up6$=7dEJ2$X!&FBrN^M~4DpR4;0K!|dT2EAXC8`D0k~w{N|mC{r{0=P@|ATBD@t_5_sGJ5}fa zMijh8rMn9491yuYy}L2ShT0fd7%E6lla0xR z#IJ@*$@zFDpnBZ7$bMFC%zg!tj;5e)i?g(_&B!z-i4h$rM_R@Pb0&)U4dheo!bGLzBQge-1twdq=~4X1eM9^;pjPzreeE zkf0X2u0vQ&IMl7lwLY`jW;BDdYUcq+TS7IC7iS;eE;O+Q1wW@e#~<#<6%D6^t-9RP zT-{$EE`1J)$<4t#5E5gotI9M&#h)I4dgv0Us`Hf|A{D%Xiiwfmq2|m)m%JyI3kZDD zH70;`$b6{VqzJre3lis!mac*~)dU$-eU2h*AKjd&kOMC-Fy9stzmpAudrJi|=oyevbz6N+5e{CU1S|t&SSY!S%_mdfI7bBzyy-D9rKSAB zt2>6nX!jBTx*P#m+*}^h0{Mt;V(ZeHBh&h@4>3Wltue@8=Oxqio#O4ofuogJt{JnA z%HG~y+p5zwS~dqjC#{E^oIC&(SBjtt74HI7Hqcn>Mjej4QS-C^YKi$s&D9>mK_&*k zG3>Njlm_&I6d3)^Zz}H3D`tL2j1VjE@0BsTN6X57vOWm<<6=+vBe{pU51zjKe*hVQ BUXB0& diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index 399db3d0..435973ba 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -17,9 +17,7 @@ def test_histogram_2D_bins(make_napari_viewer, astronaut_data): viewer.add_image(astronaut_data[0], **astronaut_data[1]) widget = HistogramWidget(viewer) viewer.window.add_dock_widget(widget) - widget.bins_start = 0 - widget.bins_stop = 350 - widget.bins_num = 35 + widget.num_bins_widget.setValue(25) fig = widget.figure # Need to return a copy, as original figure is too eagerley garbage # collected by the widget From cf9aae9e5f2ed6acc9182a5b53110abf5f4a19ad Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 17:37:35 +0000 Subject: [PATCH 163/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.4.2 → v0.4.5](https://github.com/astral-sh/ruff-pre-commit/compare/v0.4.2...v0.4.5) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 79342e26..ad714815 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.4.2' + rev: 'v0.4.5' hooks: - id: ruff From dea3e6d9e66187c8b3212453c076b7ec7492cbc2 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 17:41:38 +0000 Subject: [PATCH 164/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.4.5 → v0.4.7](https://github.com/astral-sh/ruff-pre-commit/compare/v0.4.5...v0.4.7) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ad714815..aefedf4d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.4.5' + rev: 'v0.4.7' hooks: - id: ruff From 34099bc0073e7e097773a328aaafae442a66889e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 17:44:38 +0000 Subject: [PATCH 165/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.4.7 → v0.4.8](https://github.com/astral-sh/ruff-pre-commit/compare/v0.4.7...v0.4.8) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index aefedf4d..c921bc02 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.4.7' + rev: 'v0.4.8' hooks: - id: ruff From 5990ef63ad6580adadacc48ddc9548aa7c3c6d82 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 17:41:36 +0000 Subject: [PATCH 166/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.4.8 → v0.4.9](https://github.com/astral-sh/ruff-pre-commit/compare/v0.4.8...v0.4.9) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c921bc02..2fedfd88 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.4.8' + rev: 'v0.4.9' hooks: - id: ruff From 2ad5adf83523e6ae8474c7aa9b0397c8f5ff20ab Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 24 Jun 2024 17:41:57 +0000 Subject: [PATCH 167/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.4.9 → v0.4.10](https://github.com/astral-sh/ruff-pre-commit/compare/v0.4.9...v0.4.10) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2fedfd88..305eb83c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.4.9' + rev: 'v0.4.10' hooks: - id: ruff From c60ff0e3e2b829f55a8906f143189a72a1868ebd Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 17:34:35 +0000 Subject: [PATCH 168/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-mypy: v1.10.0 → v1.10.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.10.0...v1.10.1) - [github.com/astral-sh/ruff-pre-commit: v0.4.10 → v0.5.1](https://github.com/astral-sh/ruff-pre-commit/compare/v0.4.10...v0.5.1) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 305eb83c..ebae2d3f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,14 +17,14 @@ repos: - id: napari-plugin-checks - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.10.0 + rev: v1.10.1 hooks: - id: mypy additional_dependencies: [numpy, matplotlib] - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.4.10' + rev: 'v0.5.1' hooks: - id: ruff From 3cb0fe7b7ddd391039b96e6fb6ff63cff3bbcfa9 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 12 Jul 2024 15:35:23 +0200 Subject: [PATCH 169/216] Pin max napari version --- docs/changelog.rst | 4 ++++ setup.cfg | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index ff2e60cf..697e4838 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,13 +1,17 @@ Changelog ========= + 2.0.2 ----- Dependencies ~~~~~~~~~~~~ napari-matplotlib now adheres to `SPEC 0 `_, and has: + - Dropped support for Python 3.9 - Added support for Python 3.12 - Added a minimum required numpy verison of 1.23 +- Pinned the maximum napari version to ``< 0.5``. + Version 3.0 of ``napari-matplotlib`` will introduce support for ``napari`` version 0.5. 2.0.1 ----- diff --git a/setup.cfg b/setup.cfg index 2b745044..073478a3 100644 --- a/setup.cfg +++ b/setup.cfg @@ -28,7 +28,7 @@ project_urls = packages = find: install_requires = matplotlib - napari + napari<0.5 numpy>=1.23 tinycss2 python_requires = >=3.10 From 70dc2567a17869f635d0b38189d2b07720717ed0 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 3 May 2024 15:16:10 +0100 Subject: [PATCH 170/216] Only update layers when selection is valid --- docs/changelog.rst | 6 ++++++ src/napari_matplotlib/base.py | 18 +++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 697e4838..cab6ca68 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -13,6 +13,12 @@ napari-matplotlib now adheres to `SPEC 0 None: self._update_layers ) + @property + def _valid_layer_selection(self) -> bool: + """ + Return `True` if layer selection is valid. + """ + return self.n_selected_layers in self.n_layers_input and all( + isinstance(layer, self.input_layer_types) for layer in self.layers + ) + def _update_layers(self, event: napari.utils.events.Event) -> None: """ Update the ``layers`` attribute with currently selected layers and re-draw. """ self.layers = list(self.viewer.layers.selection) self.layers = sorted(self.layers, key=lambda layer: layer.name) - self.on_update_layers() + if self._valid_layer_selection: + self.on_update_layers() self._draw() def _draw(self) -> None: @@ -243,10 +253,7 @@ def _draw(self) -> None: with mplstyle.context(self.napari_theme_style_sheet): # everything should be done in the style context self.clear() - if self.n_selected_layers in self.n_layers_input and all( - isinstance(layer, self.input_layer_types) - for layer in self.layers - ): + if self._valid_layer_selection: self.draw() self.canvas.draw() # type: ignore[no-untyped-call] @@ -269,6 +276,7 @@ def on_update_layers(self) -> None: Called when the selected layers are updated. This is a no-op, and is intended for derived classes to override. + It is only called if a selected layer is one of the input layer types. """ From 72e5791a56dfddb7c1c5646f7d1c69cfb6d1d022 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sat, 25 May 2024 09:36:29 +0100 Subject: [PATCH 171/216] Only set colors if x_axis_key is string --- src/napari_matplotlib/histogram.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index adbbae64..560676ce 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -209,10 +209,12 @@ def draw(self) -> None: # get the colormap from the layer depending on its type if isinstance(self.layers[0], napari.layers.Points): colormap = self.layers[0].face_colormap - self.layers[0].face_color = self.x_axis_key + if self.x_axis_key: + self.layers[0].face_color = self.x_axis_key elif isinstance(self.layers[0], napari.layers.Vectors): colormap = self.layers[0].edge_colormap - self.layers[0].edge_color = self.x_axis_key + if self.x_axis_key: + self.layers[0].edge_color = self.x_axis_key else: colormap = None From 2874081c869b32b17977c4df54a7267d59a9a286 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sat, 25 May 2024 09:44:58 +0100 Subject: [PATCH 172/216] Debugging --- src/napari_matplotlib/base.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/napari_matplotlib/base.py b/src/napari_matplotlib/base.py index 9440b748..97f4146e 100644 --- a/src/napari_matplotlib/base.py +++ b/src/napari_matplotlib/base.py @@ -229,6 +229,10 @@ def _valid_layer_selection(self) -> bool: """ Return `True` if layer selection is valid. """ + print(f"{self.n_selected_layers=}") + print(f"{self.n_layers_input=}") + print(f"{self.layers=}") + print(f"{self.input_layer_types=}") return self.n_selected_layers in self.n_layers_input and all( isinstance(layer, self.input_layer_types) for layer in self.layers ) From 3ebea2fdcbe375a079a445bdbffc0d504b62cece Mon Sep 17 00:00:00 2001 From: David Stansby Date: Sat, 25 May 2024 10:01:58 +0100 Subject: [PATCH 173/216] Put self._draw() in clause --- src/napari_matplotlib/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/napari_matplotlib/base.py b/src/napari_matplotlib/base.py index 97f4146e..eb023c31 100644 --- a/src/napari_matplotlib/base.py +++ b/src/napari_matplotlib/base.py @@ -245,7 +245,7 @@ def _update_layers(self, event: napari.utils.events.Event) -> None: self.layers = sorted(self.layers, key=lambda layer: layer.name) if self._valid_layer_selection: self.on_update_layers() - self._draw() + self._draw() def _draw(self) -> None: """ From b01809f49893af89965e85a0c98fb3c0dbfc3b79 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 12 Jul 2024 15:52:02 +0200 Subject: [PATCH 174/216] Always call on_update_layers --- src/napari_matplotlib/base.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/napari_matplotlib/base.py b/src/napari_matplotlib/base.py index eb023c31..720333e4 100644 --- a/src/napari_matplotlib/base.py +++ b/src/napari_matplotlib/base.py @@ -229,10 +229,6 @@ def _valid_layer_selection(self) -> bool: """ Return `True` if layer selection is valid. """ - print(f"{self.n_selected_layers=}") - print(f"{self.n_layers_input=}") - print(f"{self.layers=}") - print(f"{self.input_layer_types=}") return self.n_selected_layers in self.n_layers_input and all( isinstance(layer, self.input_layer_types) for layer in self.layers ) @@ -243,8 +239,8 @@ def _update_layers(self, event: napari.utils.events.Event) -> None: """ self.layers = list(self.viewer.layers.selection) self.layers = sorted(self.layers, key=lambda layer: layer.name) + self.on_update_layers() if self._valid_layer_selection: - self.on_update_layers() self._draw() def _draw(self) -> None: @@ -280,7 +276,6 @@ def on_update_layers(self) -> None: Called when the selected layers are updated. This is a no-op, and is intended for derived classes to override. - It is only called if a selected layer is one of the input layer types. """ From 8a545953b8de227fb4f0f79ffddf384ccadcac26 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 12 Jul 2024 16:00:36 +0200 Subject: [PATCH 175/216] Fix layer selection --- src/napari_matplotlib/histogram.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 560676ce..2881cf78 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -55,8 +55,10 @@ def on_update_layers(self) -> None: Called when the selected layers are updated. """ super().on_update_layers() - for layer in self.viewer.layers: - layer.events.contrast_limits.connect(self._update_contrast_lims) + if self._valid_layer_selection: + self.layers[0].events.contrast_limits.connect( + self._update_contrast_lims + ) def _update_contrast_lims(self) -> None: for lim, line in zip( From 25b9b0ee979694d3fc33f9812115cc47b91efe35 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 12 Jul 2024 16:13:42 +0200 Subject: [PATCH 176/216] Update changelog --- docs/changelog.rst | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index cab6ca68..54e6bba3 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,6 +1,13 @@ Changelog ========= +2.0.3 +----- +Bug fixes +~~~~~~~~~ +- Fix an error that happened when the histogram widget was open, but a layer that doesn't support + histogramming (e.g., a labels layer) was selected. + 2.0.2 ----- Dependencies @@ -13,12 +20,6 @@ napari-matplotlib now adheres to `SPEC 0 Date: Fri, 12 Jul 2024 16:24:48 +0200 Subject: [PATCH 177/216] Update changelog --- docs/changelog.rst | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 4c2509fa..60dd72ba 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,6 +1,12 @@ Changelog ========= +2.1.0 +----- +New features +~~~~~~~~~~~~ +- Added a GUI element to manually set the number of bins in the histogram widgets. + 2.0.3 ----- Bug fixes @@ -48,7 +54,6 @@ Other changes - The ``HistogramWidget`` now has two vertical lines showing the contrast limits used to render the selected layer in the main napari window. - Added an example gallery for the ``FeaturesHistogramWidget``. -- Add widgets for setting bin parameters for ``HistogramWidget``. 1.2.0 ----- From 597e1c5aee7c92d22217887092a4e67303af62f3 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Fri, 12 Jul 2024 16:55:24 +0200 Subject: [PATCH 178/216] Update test image --- .../scatter/baseline/test_scatter_2D.png | Bin 18394 -> 18788 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/napari_matplotlib/tests/scatter/baseline/test_scatter_2D.png b/src/napari_matplotlib/tests/scatter/baseline/test_scatter_2D.png index a11bda5f281b731712a2d1c6076f72569e0ff5e0..0685b192b01b00ab02c5bceb4d4c966a8264cb4a 100644 GIT binary patch literal 18788 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 Date: Mon, 15 Jul 2024 20:06:37 +0100 Subject: [PATCH 179/216] Revert "Update test image" This reverts commit 597e1c5aee7c92d22217887092a4e67303af62f3. --- .../scatter/baseline/test_scatter_2D.png | Bin 18788 -> 18394 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/napari_matplotlib/tests/scatter/baseline/test_scatter_2D.png b/src/napari_matplotlib/tests/scatter/baseline/test_scatter_2D.png index 0685b192b01b00ab02c5bceb4d4c966a8264cb4a..a11bda5f281b731712a2d1c6076f72569e0ff5e0 100644 GIT binary patch literal 18394 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 Date: Mon, 22 Jul 2024 17:45:02 +0000 Subject: [PATCH 180/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-mypy: v1.10.1 → v1.11.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.10.1...v1.11.0) - [github.com/astral-sh/ruff-pre-commit: v0.5.1 → v0.5.4](https://github.com/astral-sh/ruff-pre-commit/compare/v0.5.1...v0.5.4) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ebae2d3f..54ee2023 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,14 +17,14 @@ repos: - id: napari-plugin-checks - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.10.1 + rev: v1.11.0 hooks: - id: mypy additional_dependencies: [numpy, matplotlib] - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.5.1' + rev: 'v0.5.4' hooks: - id: ruff From 2e8330f509a93f30a6a1f8ccc6cd6d7627e04122 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 17:48:13 +0000 Subject: [PATCH 181/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.5.4 → v0.5.5](https://github.com/astral-sh/ruff-pre-commit/compare/v0.5.4...v0.5.5) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 54ee2023..7ede235e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.5.4' + rev: 'v0.5.5' hooks: - id: ruff From 3db8cae7298debeea16577065739047feeab137a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 17:56:44 +0000 Subject: [PATCH 182/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-mypy: v1.11.0 → v1.11.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.11.0...v1.11.1) - [github.com/astral-sh/ruff-pre-commit: v0.5.5 → v0.5.6](https://github.com/astral-sh/ruff-pre-commit/compare/v0.5.5...v0.5.6) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7ede235e..14ccabce 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,14 +17,14 @@ repos: - id: napari-plugin-checks - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.11.0 + rev: v1.11.1 hooks: - id: mypy additional_dependencies: [numpy, matplotlib] - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.5.5' + rev: 'v0.5.6' hooks: - id: ruff From 6e0348dafef343dbaf9272c1231cbfed33b4cc7c Mon Sep 17 00:00:00 2001 From: Kabilar Gunalan Date: Thu, 8 Aug 2024 16:16:28 -0500 Subject: [PATCH 183/216] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e4551d23..fb7aa635 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ A plugin to create Matplotlib plots from napari layers ## Introduction `napari-matplotlib` is a bridge between `napari` and `matplotlib`, making it easy to create publication quality `Matplotlib` plots based on the data loaded in `napari` layers. -Documentaiton can be found at https://napari-matplotlib.github.io/ +Documentation can be found at https://napari-matplotlib.github.io/ ## Contributing From 0efe4432143760800872f224e45b9a295e7619cb Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 17:42:28 +0000 Subject: [PATCH 184/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black-pre-commit-mirror: 24.4.2 → 24.8.0](https://github.com/psf/black-pre-commit-mirror/compare/24.4.2...24.8.0) - [github.com/astral-sh/ruff-pre-commit: v0.5.6 → v0.6.1](https://github.com/astral-sh/ruff-pre-commit/compare/v0.5.6...v0.6.1) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 14ccabce..cbf9cb88 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/psf/black-pre-commit-mirror - rev: 24.4.2 + rev: 24.8.0 hooks: - id: black @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.5.6' + rev: 'v0.6.1' hooks: - id: ruff From 3dbfc475bd981cfe11a48c21eb9af81c1f44ca58 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 17:48:50 +0000 Subject: [PATCH 185/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-mypy: v1.11.1 → v1.11.2](https://github.com/pre-commit/mirrors-mypy/compare/v1.11.1...v1.11.2) - [github.com/astral-sh/ruff-pre-commit: v0.6.1 → v0.6.2](https://github.com/astral-sh/ruff-pre-commit/compare/v0.6.1...v0.6.2) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index cbf9cb88..26d290e6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,14 +17,14 @@ repos: - id: napari-plugin-checks - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.11.1 + rev: v1.11.2 hooks: - id: mypy additional_dependencies: [numpy, matplotlib] - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.6.1' + rev: 'v0.6.2' hooks: - id: ruff From 0acbb986caa2637881369787c403b70e8390d8bf Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 17:43:14 +0000 Subject: [PATCH 186/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.6.2 → v0.6.3](https://github.com/astral-sh/ruff-pre-commit/compare/v0.6.2...v0.6.3) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 26d290e6..bd4cb83a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.6.2' + rev: 'v0.6.3' hooks: - id: ruff From 0878bc1af0d261ea01ae82c6eb18b3428c3aae6c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 10:06:11 +0000 Subject: [PATCH 187/216] Bump actions/download-artifact from 3 to 4.1.7 in /.github/workflows Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.1.7. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v3...v4.1.7) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 39c1ab51..e1a86215 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -50,7 +50,7 @@ jobs: if: contains(github.ref, 'tags') steps: - uses: actions/checkout@v3 - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4.1.7 with: name: docs From 183f4e2e9e5bdd21ba960c351de44bce15dd8355 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 17:45:46 +0000 Subject: [PATCH 188/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.6.3 → v0.6.4](https://github.com/astral-sh/ruff-pre-commit/compare/v0.6.3...v0.6.4) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bd4cb83a..9b8c4466 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.6.3' + rev: 'v0.6.4' hooks: - id: ruff From d1b75b1e2a4355f7a338f60089500e188de8226a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 17:43:13 +0000 Subject: [PATCH 189/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.6.4 → v0.6.5](https://github.com/astral-sh/ruff-pre-commit/compare/v0.6.4...v0.6.5) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9b8c4466..8fb0414b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.6.4' + rev: 'v0.6.5' hooks: - id: ruff From bbba362e8cee5eaa96b0c8afa117df648708cef8 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 17:43:16 +0000 Subject: [PATCH 190/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.6.5 → v0.6.7](https://github.com/astral-sh/ruff-pre-commit/compare/v0.6.5...v0.6.7) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8fb0414b..331601a3 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.6.5' + rev: 'v0.6.7' hooks: - id: ruff From d21e7c8a2390040722651807ed9988184952ae58 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 17:47:20 +0000 Subject: [PATCH 191/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.6.7 → v0.6.8](https://github.com/astral-sh/ruff-pre-commit/compare/v0.6.7...v0.6.8) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 331601a3..e8079098 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.6.7' + rev: 'v0.6.8' hooks: - id: ruff From 7e860f541d3398adaa567f3e56c665e2c58d5bfc Mon Sep 17 00:00:00 2001 From: David Stansby Date: Tue, 1 Oct 2024 12:35:54 +0100 Subject: [PATCH 192/216] Support napari>=0.5 (#274) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Remove as_dict kwarg * Pin to napari >= 0.5 * Fix scatter test? * Update test image * Fix brain data * Fix another as_dict arg * Fix FutureWarning * Fix scatter test's OverflowError And revert to original baseline images. * Try updating mypy's python version. * Revert shape → newshape and suppress deprecation warning. --------- Co-authored-by: Sam Cunliffe Co-authored-by: Sam Cunliffe --- pyproject.toml | 20 ++++++++++++------- setup.cfg | 2 +- src/napari_matplotlib/base.py | 6 +++--- .../tests/scatter/test_scatter.py | 6 ++++-- src/napari_matplotlib/tests/test_theme.py | 2 +- 5 files changed, 22 insertions(+), 14 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 05f7df68..f76831a3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,10 +13,18 @@ filterwarnings = [ "ignore:distutils Version classes are deprecated:DeprecationWarning", "ignore:`np.bool8` is a deprecated alias for `np.bool_`:DeprecationWarning", # Coming from pydantic via napari - "ignore:Pickle, copy, and deepcopy support will be removed from itertools in Python 3.14.:DeprecationWarning" + "ignore:Pickle, copy, and deepcopy support will be removed from itertools in Python 3.14.:DeprecationWarning", + # Until we stop supporting older numpy versions (<2.1) + "ignore:(?s).*`newshape` keyword argument is deprecated.*$:DeprecationWarning", ] qt_api = "pyqt6" -addopts = ["--mpl", "--mpl-baseline-relative", "--strict-config", "--strict-markers", "-ra"] +addopts = [ + "--mpl", + "--mpl-baseline-relative", + "--strict-config", + "--strict-markers", + "-ra", +] minversion = "7" testpaths = ["src/napari_matplotlib/tests"] log_cli_level = "INFO" @@ -54,17 +62,15 @@ ignore = [ convention = "numpy" [tool.mypy] -python_version = "3.10" +python_version = "3.12" # Block below are checks that form part of mypy 'strict' mode strict = true disallow_subclassing_any = false # TODO: fix -warn_return_any = false # TODO: fix +warn_return_any = false # TODO: fix ignore_missing_imports = true enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"] [[tool.mypy.overrides]] -module = [ - "napari_matplotlib/tests/*", -] +module = ["napari_matplotlib/tests/*"] disallow_untyped_defs = false diff --git a/setup.cfg b/setup.cfg index 073478a3..a3709e66 100644 --- a/setup.cfg +++ b/setup.cfg @@ -28,7 +28,7 @@ project_urls = packages = find: install_requires = matplotlib - napari<0.5 + napari>=0.5 numpy>=1.23 tinycss2 python_requires = >=3.10 diff --git a/src/napari_matplotlib/base.py b/src/napari_matplotlib/base.py index 720333e4..ca69a548 100644 --- a/src/napari_matplotlib/base.py +++ b/src/napari_matplotlib/base.py @@ -42,7 +42,7 @@ def __init__( super().__init__(parent=parent) self.viewer = napari_viewer self.napari_theme_style_sheet = style_sheet_from_theme( - get_theme(napari_viewer.theme, as_dict=False) + get_theme(napari_viewer.theme) ) # Sets figure.* style @@ -84,7 +84,7 @@ def _on_napari_theme_changed(self, event: Event) -> None: Event that triggered the callback. """ self.napari_theme_style_sheet = style_sheet_from_theme( - get_theme(event.value, as_dict=False) + get_theme(event.value) ) self._replace_toolbar_icons() @@ -97,7 +97,7 @@ def _napari_theme_has_light_bg(self) -> bool: bool True if theme's background colour has hsl lighter than 50%, False if darker. """ - theme = napari.utils.theme.get_theme(self.viewer.theme, as_dict=False) + theme = napari.utils.theme.get_theme(self.viewer.theme) _, _, bg_lightness = theme.background.as_hsl_tuple() return bg_lightness > 0.5 diff --git a/src/napari_matplotlib/tests/scatter/test_scatter.py b/src/napari_matplotlib/tests/scatter/test_scatter.py index a225863d..0c60660c 100644 --- a/src/napari_matplotlib/tests/scatter/test_scatter.py +++ b/src/napari_matplotlib/tests/scatter/test_scatter.py @@ -15,7 +15,9 @@ def test_scatter_2D(make_napari_viewer, astronaut_data): viewer.add_image(astronaut_data[0], **astronaut_data[1], name="astronaut") viewer.add_image( - astronaut_data[0] * -1, **astronaut_data[1], name="astronaut_reversed" + astronaut_data[0] * -1.0, + **astronaut_data[1], + name="astronaut_reversed", ) # De-select existing selection viewer.layers.selection.clear() @@ -36,7 +38,7 @@ def test_scatter_3D(make_napari_viewer, brain_data): viewer.add_image(brain_data[0], **brain_data[1], name="brain") viewer.add_image( - brain_data[0] * -1, **brain_data[1], name="brain_reversed" + brain_data[0] * -1.0, **brain_data[1], name="brain_reversed" ) # De-select existing selection viewer.layers.selection.clear() diff --git a/src/napari_matplotlib/tests/test_theme.py b/src/napari_matplotlib/tests/test_theme.py index 2310f32f..5fedc43d 100644 --- a/src/napari_matplotlib/tests/test_theme.py +++ b/src/napari_matplotlib/tests/test_theme.py @@ -29,7 +29,7 @@ def _mock_up_theme() -> None: Based on: https://napari.org/stable/gallery/new_theme.html """ - blue_theme = napari.utils.theme.get_theme("dark", False) + blue_theme = napari.utils.theme.get_theme("dark") blue_theme.label = "blue" blue_theme.background = "#4169e1" # my favourite shade of blue napari.utils.theme.register_theme( From 37fce7f0cbeee2ff149196b574f02398b5d73b19 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 20:37:49 +0200 Subject: [PATCH 193/216] [pre-commit.ci] pre-commit autoupdate (#289) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/pre-commit-hooks: v4.6.0 → v5.0.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.6.0...v5.0.0) - [github.com/astral-sh/ruff-pre-commit: v0.6.8 → v0.6.9](https://github.com/astral-sh/ruff-pre-commit/compare/v0.6.8...v0.6.9) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e8079098..924bc64c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v5.0.0 hooks: - id: check-docstring-first - id: end-of-file-fixer @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.6.8' + rev: 'v0.6.9' hooks: - id: ruff From 9f49b7acc7bc9fbcb958b105272e4fe384bcaeca Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 19:04:30 +0100 Subject: [PATCH 194/216] [pre-commit.ci] pre-commit autoupdate (#290) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black-pre-commit-mirror: 24.8.0 → 24.10.0](https://github.com/psf/black-pre-commit-mirror/compare/24.8.0...24.10.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 924bc64c..ff538b96 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/psf/black-pre-commit-mirror - rev: 24.8.0 + rev: 24.10.0 hooks: - id: black From b5178753a74158fb256852edf8a851a8598e3fe0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:33:49 +0000 Subject: [PATCH 195/216] [pre-commit.ci] pre-commit autoupdate (#291) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-mypy: v1.11.2 → v1.13.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.11.2...v1.13.0) - [github.com/astral-sh/ruff-pre-commit: v0.6.9 → v0.7.1](https://github.com/astral-sh/ruff-pre-commit/compare/v0.6.9...v0.7.1) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ff538b96..761bf7b8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,14 +17,14 @@ repos: - id: napari-plugin-checks - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.11.2 + rev: v1.13.0 hooks: - id: mypy additional_dependencies: [numpy, matplotlib] - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.6.9' + rev: 'v0.7.1' hooks: - id: ruff From 20cef6e780527a9d943f9306d79f7a51a90a5acd Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 18:54:57 +0000 Subject: [PATCH 196/216] [pre-commit.ci] pre-commit autoupdate (#292) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.7.1 → v0.7.2](https://github.com/astral-sh/ruff-pre-commit/compare/v0.7.1...v0.7.2) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 761bf7b8..dea49b69 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.7.1' + rev: 'v0.7.2' hooks: - id: ruff From ced5d9da6eaf47d00d66cfd7f0b3c4273ed73150 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 17:48:49 +0000 Subject: [PATCH 197/216] [pre-commit.ci] pre-commit autoupdate (#293) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.7.2 → v0.7.3](https://github.com/astral-sh/ruff-pre-commit/compare/v0.7.2...v0.7.3) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index dea49b69..3e5d6796 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.7.2' + rev: 'v0.7.3' hooks: - id: ruff From 89749f3f7b24be038fafe2e224d70274a741dabd Mon Sep 17 00:00:00 2001 From: Sam Cunliffe Date: Tue, 4 Feb 2025 14:42:30 +0000 Subject: [PATCH 198/216] Update actions to latest versions. --- .github/workflows/docs.yml | 4 ++-- .github/workflows/test_and_deploy.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e1a86215..965463c2 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -17,9 +17,9 @@ jobs: name: Build & Upload Artifact runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/setup-python@v3 + - uses: actions/setup-python@v5 with: python-version: "3.10" diff --git a/.github/workflows/test_and_deploy.yml b/.github/workflows/test_and_deploy.yml index 2a8b7317..3709ff58 100644 --- a/.github/workflows/test_and_deploy.yml +++ b/.github/workflows/test_and_deploy.yml @@ -27,10 +27,10 @@ jobs: python-version: ['3.10', '3.11', '3.12'] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} From 71280f645904d19d16437ab648efe7efe3a27509 Mon Sep 17 00:00:00 2001 From: Sam Cunliffe Date: Tue, 4 Feb 2025 14:45:03 +0000 Subject: [PATCH 199/216] Missed a few. --- .github/workflows/docs.yml | 2 +- .github/workflows/test_and_deploy.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 965463c2..fda82b66 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -49,7 +49,7 @@ jobs: needs: build-docs if: contains(github.ref, 'tags') steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/download-artifact@v4.1.7 with: name: docs diff --git a/.github/workflows/test_and_deploy.yml b/.github/workflows/test_and_deploy.yml index 3709ff58..69e2e2a0 100644 --- a/.github/workflows/test_and_deploy.yml +++ b/.github/workflows/test_and_deploy.yml @@ -54,7 +54,7 @@ jobs: run: python -m tox - name: Upload pytest test results - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: pytest-results-${{ matrix.platform }} py${{ matrix.python-version }} path: reports/ @@ -83,9 +83,9 @@ jobs: permissions: id-token: write steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: "3.x" - name: Install build From 72a4a7f6cbcf420a2441a8d000f3c1a7c2f45fea Mon Sep 17 00:00:00 2001 From: Sam Cunliffe Date: Tue, 4 Feb 2025 14:46:35 +0000 Subject: [PATCH 200/216] Upload docs. --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index fda82b66..67dd1583 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -38,7 +38,7 @@ jobs: working-directory: ./docs - name: Upload artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: docs path: docs/_build From 80c782af77ff9334f92bbb3a2f1f11a9a33c546b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 17:29:38 +0000 Subject: [PATCH 201/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black-pre-commit-mirror: 24.10.0 → 25.1.0](https://github.com/psf/black-pre-commit-mirror/compare/24.10.0...25.1.0) - [github.com/pre-commit/mirrors-mypy: v1.13.0 → v1.15.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.13.0...v1.15.0) - [github.com/astral-sh/ruff-pre-commit: v0.7.3 → v0.9.9](https://github.com/astral-sh/ruff-pre-commit/compare/v0.7.3...v0.9.9) --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3e5d6796..fb1a8ea2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/psf/black-pre-commit-mirror - rev: 24.10.0 + rev: 25.1.0 hooks: - id: black @@ -17,14 +17,14 @@ repos: - id: napari-plugin-checks - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.13.0 + rev: v1.15.0 hooks: - id: mypy additional_dependencies: [numpy, matplotlib] - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.7.3' + rev: 'v0.9.9' hooks: - id: ruff From 5f1129e441d004d636a5067d1107e3e42b90241b Mon Sep 17 00:00:00 2001 From: Sam Cunliffe Date: Tue, 4 Mar 2025 16:47:48 +0000 Subject: [PATCH 202/216] Ignore typing for now. --- src/napari_matplotlib/histogram.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index acdd8406..f874f0c5 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -28,7 +28,7 @@ def _get_bins( data: npt.NDArray[Any], num_bins: int = 100, -) -> npt.NDArray[Any]: +) -> npt.NDArray[np.floating]: """Create evenly spaced bins with a given interval. Parameters @@ -161,13 +161,13 @@ def draw(self) -> None: for i, c in enumerate("rgb"): self.axes.hist( data[..., i].ravel(), - bins=bins.tolist(), + bins=bins.tolist(), # type: ignore[arg-type] label=c, histtype="step", color=_COLORS[c], ) else: - self.axes.hist(data.ravel(), bins=bins.tolist(), label=layer.name) + self.axes.hist(data.ravel(), bins=bins.tolist(), label=layer.name) # type: ignore[arg-type] self._contrast_lines = [ self.axes.axvline(lim, color="white") @@ -297,7 +297,7 @@ def draw(self) -> None: bins = _get_bins(data) - _, bins, patches = self.axes.hist(data, bins=bins.tolist()) + _, bins, patches = self.axes.hist(data, bins=bins.tolist()) # type: ignore[arg-type] patches = cast(BarContainer, patches) # recolor the histogram plot From 3dd313761ef430016d8a90cd0e70ce54eb9045fe Mon Sep 17 00:00:00 2001 From: Sam Cunliffe Date: Tue, 4 Mar 2025 17:16:23 +0000 Subject: [PATCH 203/216] Create dependabot.yml --- .github/dependabot.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..64284b90 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,7 @@ +--- +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" From 439dc67314d483d022b33eb4d544c8efdab00ec9 Mon Sep 17 00:00:00 2001 From: Sam Cunliffe Date: Tue, 4 Mar 2025 17:27:30 +0000 Subject: [PATCH 204/216] Add group so all updates come in a single PR. --- .github/dependabot.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 64284b90..af3b9f02 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,3 +5,7 @@ updates: directory: "/" schedule: interval: "monthly" + groups: + github-actions: + patterns: + - "*" From 64e5c7095ee22f071d316e349a4d0e8f59654ac0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 17:33:13 +0000 Subject: [PATCH 205/216] Bump the github-actions group with 2 updates Bumps the github-actions group with 2 updates: [actions/download-artifact](https://github.com/actions/download-artifact) and [codecov/codecov-action](https://github.com/codecov/codecov-action). Updates `actions/download-artifact` from 4.1.7 to 4.1.9 - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v4.1.7...v4.1.9) Updates `codecov/codecov-action` from 4 to 5 - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions ... Signed-off-by: dependabot[bot] --- .github/workflows/docs.yml | 2 +- .github/workflows/test_and_deploy.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 67dd1583..e0e477a2 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -50,7 +50,7 @@ jobs: if: contains(github.ref, 'tags') steps: - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4.1.7 + - uses: actions/download-artifact@v4.1.9 with: name: docs diff --git a/.github/workflows/test_and_deploy.yml b/.github/workflows/test_and_deploy.yml index 69e2e2a0..77853f7e 100644 --- a/.github/workflows/test_and_deploy.yml +++ b/.github/workflows/test_and_deploy.yml @@ -62,7 +62,7 @@ jobs: if: ${{ always() }} - name: Coverage - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 # Don't run coverage on merge queue CI to avoid duplicating reports # to codecov. See https://github.com/matplotlib/napari-matplotlib/issues/155 if: github.event_name != 'merge_group' From 067fd10afa65c3f7379ffe7a6f701cee517acff4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 17:22:39 +0000 Subject: [PATCH 206/216] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.9.9 → v0.9.10](https://github.com/astral-sh/ruff-pre-commit/compare/v0.9.9...v0.9.10) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fb1a8ea2..0547e1d2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.9.9' + rev: 'v0.9.10' hooks: - id: ruff From 228458957c7fa2fd0afcbef250a1627001a08ce7 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 17:32:41 +0000 Subject: [PATCH 207/216] [pre-commit.ci] pre-commit autoupdate (#299) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.9.10 → v0.11.0](https://github.com/astral-sh/ruff-pre-commit/compare/v0.9.10...v0.11.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0547e1d2..cb440b3c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.9.10' + rev: 'v0.11.0' hooks: - id: ruff From 2d6a88650595456cc6c8901d03281c9cf99351cc Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 18:13:32 +0000 Subject: [PATCH 208/216] [pre-commit.ci] pre-commit autoupdate (#300) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.11.0 → v0.11.2](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.0...v0.11.2) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index cb440b3c..733413d5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.11.0' + rev: 'v0.11.2' hooks: - id: ruff From 1fb935f7a09e22db18f3dbd6f22ab6d6b393b9f0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 13:03:27 +0100 Subject: [PATCH 209/216] Bump actions/download-artifact in the github-actions group (#301) Bumps the github-actions group with 1 update: [actions/download-artifact](https://github.com/actions/download-artifact). Updates `actions/download-artifact` from 4.1.9 to 4.2.1 - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v4.1.9...v4.2.1) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: 4.2.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e0e477a2..b26b4990 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -50,7 +50,7 @@ jobs: if: contains(github.ref, 'tags') steps: - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4.1.9 + - uses: actions/download-artifact@v4.2.1 with: name: docs From b81aa2d3a7e14efce9089e5a4d26a88c95ef72ae Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 7 Apr 2025 21:23:51 +0100 Subject: [PATCH 210/216] [pre-commit.ci] pre-commit autoupdate (#302) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.11.2 → v0.11.4](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.2...v0.11.4) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 733413d5..a172dabd 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.11.2' + rev: 'v0.11.4' hooks: - id: ruff From e13454a105c55f1f489222cb5bf247d21cf5e536 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 10:42:39 +0100 Subject: [PATCH 211/216] [pre-commit.ci] pre-commit autoupdate (#303) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [pre-commit.ci] pre-commit autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.11.4 → v0.11.6](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.4...v0.11.6) * Remove type:ignore flags for bins in histogram.py. --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Sam Cunliffe --- .pre-commit-config.yaml | 2 +- src/napari_matplotlib/histogram.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a172dabd..bd929a1a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.11.4' + rev: 'v0.11.6' hooks: - id: ruff diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index f874f0c5..85bba9d2 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -161,13 +161,13 @@ def draw(self) -> None: for i, c in enumerate("rgb"): self.axes.hist( data[..., i].ravel(), - bins=bins.tolist(), # type: ignore[arg-type] + bins=bins.tolist(), label=c, histtype="step", color=_COLORS[c], ) else: - self.axes.hist(data.ravel(), bins=bins.tolist(), label=layer.name) # type: ignore[arg-type] + self.axes.hist(data.ravel(), bins=bins.tolist(), label=layer.name) self._contrast_lines = [ self.axes.axvline(lim, color="white") @@ -297,7 +297,7 @@ def draw(self) -> None: bins = _get_bins(data) - _, bins, patches = self.axes.hist(data, bins=bins.tolist()) # type: ignore[arg-type] + _, bins, patches = self.axes.hist(data, bins=bins.tolist()) patches = cast(BarContainer, patches) # recolor the histogram plot From c8fe163f25a3b31d4aa2f640e3756fc0302c45e3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 29 Apr 2025 06:41:45 +0100 Subject: [PATCH 212/216] [pre-commit.ci] pre-commit autoupdate (#304) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.11.6 → v0.11.7](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.6...v0.11.7) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bd929a1a..81613d04 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.11.6' + rev: 'v0.11.7' hooks: - id: ruff From f7a33364e2367334404ef3fc7d94a119f586c1d5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 May 2025 10:52:55 +0100 Subject: [PATCH 213/216] Bump actions/download-artifact in the github-actions group (#305) Bumps the github-actions group with 1 update: [actions/download-artifact](https://github.com/actions/download-artifact). Updates `actions/download-artifact` from 4.2.1 to 4.3.0 - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v4.2.1...v4.3.0) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: 4.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index b26b4990..55eb1aa2 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -50,7 +50,7 @@ jobs: if: contains(github.ref, 'tags') steps: - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4.2.1 + - uses: actions/download-artifact@v4.3.0 with: name: docs From 912ede93ae95936c5e8e5b654a10dd811c290933 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 6 May 2025 09:26:19 +0100 Subject: [PATCH 214/216] [pre-commit.ci] pre-commit autoupdate (#306) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.11.7 → v0.11.8](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.7...v0.11.8) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 81613d04..e1b0baf4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.11.7' + rev: 'v0.11.8' hooks: - id: ruff From db2be01b230dcfcec984660ba42625e165c907de Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 06:13:27 +0100 Subject: [PATCH 215/216] [pre-commit.ci] pre-commit autoupdate (#307) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.11.8 → v0.11.9](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.8...v0.11.9) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e1b0baf4..e592dea1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: 'v0.11.8' + rev: 'v0.11.9' hooks: - id: ruff From 64edb23935c1bfc1c3bdbbf5d6d947c2abe2b02f Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 20 Jul 2025 16:49:40 -0400 Subject: [PATCH 216/216] CI: Harden GHA configuration (#308) * CI: pin actions by SHA This eliminates the possibility of a tag being changed under us. * CI: pin actions by SHA This eliminates the possibility of a tag being changed under us. * CI: auto-fix via zizmor May include: - Avoids risky string interpolation. - Prevents checkout premissions from leaking * CI: Restrict default permissions Reduces risk of arbitrary code is run by attacker. * CI: run pre-commit on GHA --- .github/workflows/docs.yml | 12 +++++++++--- .github/workflows/test_and_deploy.yml | 25 ++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 55eb1aa2..6a5d182f 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,4 +1,6 @@ name: Build docs +permissions: + contents: read on: @@ -18,12 +20,14 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + persist-credentials: false - uses: actions/setup-python@v5 with: python-version: "3.10" - - uses: tlambert03/setup-qt-libs@v1 + - uses: tlambert03/setup-qt-libs@19e4ef2d781d81f5f067182e228b54ec90d23b76 # v1 - name: Install Dependencies run: | @@ -32,7 +36,7 @@ jobs: sudo apt install graphviz --yes - name: Build Docs - uses: aganders3/headless-gui@v2 + uses: aganders3/headless-gui@f85dd6316993505dfc5f21839d520ae440c84816 # v2 with: run: make html working-directory: ./docs @@ -50,12 +54,14 @@ jobs: if: contains(github.ref, 'tags') steps: - uses: actions/checkout@v4 + with: + persist-credentials: false - uses: actions/download-artifact@v4.3.0 with: name: docs - name: Push to GitHub pages - uses: JamesIves/github-pages-deploy-action@v4 + uses: JamesIves/github-pages-deploy-action@6c2d9db40f9296374acc17b90404b6e8864128c8 # v4 with: folder: html ssh-key: ${{ secrets.DEPLOY_KEY }} diff --git a/.github/workflows/test_and_deploy.yml b/.github/workflows/test_and_deploy.yml index 77853f7e..0521c9e6 100644 --- a/.github/workflows/test_and_deploy.yml +++ b/.github/workflows/test_and_deploy.yml @@ -1,4 +1,6 @@ name: tests +permissions: + contents: read on: push: @@ -17,6 +19,19 @@ concurrency: cancel-in-progress: true jobs: + pre-commit: + name: precommit + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + fetch-depth: 0 + - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + with: + python-version: "3.x" + - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 + with: + extra_args: --hook-stage manual --all-files test: name: ${{ matrix.platform }} py${{ matrix.python-version }} runs-on: ${{ matrix.platform }} @@ -28,6 +43,8 @@ jobs: steps: - uses: actions/checkout@v4 + with: + persist-credentials: false - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 @@ -35,7 +52,7 @@ jobs: python-version: ${{ matrix.python-version }} # these libraries enable testing on Qt on linux - - uses: tlambert03/setup-qt-libs@v1 + - uses: tlambert03/setup-qt-libs@19e4ef2d781d81f5f067182e228b54ec90d23b76 # v1 # strategy borrowed from vispy for installing opengl libs on windows - name: Install Windows OpenGL @@ -62,7 +79,7 @@ jobs: if: ${{ always() }} - name: Coverage - uses: codecov/codecov-action@v5 + uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5 # Don't run coverage on merge queue CI to avoid duplicating reports # to codecov. See https://github.com/matplotlib/napari-matplotlib/issues/155 if: github.event_name != 'merge_group' @@ -84,6 +101,8 @@ jobs: id-token: write steps: - uses: actions/checkout@v4 + with: + persist-credentials: false - name: Set up Python uses: actions/setup-python@v5 with: @@ -99,4 +118,4 @@ jobs: python -m build . - name: Publish package - uses: pypa/gh-action-pypi-publish@release/v1 + uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4 pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy