From 85be38abcb859727b85c91c6ee5a071e88cffbc9 Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Fri, 31 Oct 2025 20:55:49 +0100 Subject: [PATCH 01/10] fix static analysis --- docs/user-guide/imshow.ipynb | 6 +++--- docs/user-guide/plot.ipynb | 8 ++++---- docs/user-guide/scatter.ipynb | 6 +++--- requirements/make_base.py | 4 +++- src/matplotgl/axes.py | 7 +++---- src/matplotgl/figure.py | 6 +++--- src/matplotgl/image.py | 5 ++--- src/matplotgl/line.py | 7 ++++--- src/matplotgl/mesh.py | 5 +++-- src/matplotgl/points.py | 9 ++++----- src/matplotgl/pyplot.py | 4 +--- src/matplotgl/subplots.py | 3 +-- src/matplotgl/utils.py | 5 ++--- src/matplotgl/widgets.py | 12 +++++------- 14 files changed, 41 insertions(+), 46 deletions(-) diff --git a/docs/user-guide/imshow.ipynb b/docs/user-guide/imshow.ipynb index 31cfdcb..fe50342 100644 --- a/docs/user-guide/imshow.ipynb +++ b/docs/user-guide/imshow.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "394c0bcc-4177-4083-abbb-9f829ab60a01", + "id": "0", "metadata": {}, "source": [ "# Imshow" @@ -11,7 +11,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7b97da73-c403-48e6-a9a4-d86b8452eca2", + "id": "1", "metadata": {}, "outputs": [], "source": [ @@ -22,7 +22,7 @@ { "cell_type": "code", "execution_count": null, - "id": "650ad4ba-b117-4295-a4d0-55a3df249b1c", + "id": "2", "metadata": {}, "outputs": [], "source": [ diff --git a/docs/user-guide/plot.ipynb b/docs/user-guide/plot.ipynb index 78bdd48..d1d0976 100644 --- a/docs/user-guide/plot.ipynb +++ b/docs/user-guide/plot.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "d228c316-3700-44b4-b457-218454da891d", + "id": "0", "metadata": {}, "source": [ "# Plot" @@ -11,7 +11,7 @@ { "cell_type": "code", "execution_count": null, - "id": "710d60a6-0166-44b5-8460-0e46eff525fa", + "id": "1", "metadata": {}, "outputs": [], "source": [ @@ -22,7 +22,7 @@ { "cell_type": "code", "execution_count": null, - "id": "0bcb7406-4eb8-45af-971e-36c7af397de4", + "id": "2", "metadata": {}, "outputs": [], "source": [ @@ -42,7 +42,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5c0de3de-4ce7-4882-9c0d-db6cb189bce0", + "id": "3", "metadata": {}, "outputs": [], "source": [ diff --git a/docs/user-guide/scatter.ipynb b/docs/user-guide/scatter.ipynb index 76487f8..ec90b57 100644 --- a/docs/user-guide/scatter.ipynb +++ b/docs/user-guide/scatter.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "935f17d3-eae3-41e5-8258-8165cda406bb", + "id": "0", "metadata": {}, "source": [ "# Scatter" @@ -11,7 +11,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9f36776c-0c6b-4d3b-8d76-86961aa11d16", + "id": "1", "metadata": {}, "outputs": [], "source": [ @@ -22,7 +22,7 @@ { "cell_type": "code", "execution_count": null, - "id": "05d54f24-7298-4ec3-befd-85ebaff9d1a6", + "id": "2", "metadata": {}, "outputs": [], "source": [ diff --git a/requirements/make_base.py b/requirements/make_base.py index 4c004af..2cda547 100644 --- a/requirements/make_base.py +++ b/requirements/make_base.py @@ -70,7 +70,9 @@ def as_nightly(repo: str) -> str: nightly = tuple(args.nightly.split(",") if args.nightly else []) -nightly_dependencies = [dep for dep in dependencies + test_dependencies if not dep.startswith(nightly)] +nightly_dependencies = [ + dep for dep in dependencies + test_dependencies if not dep.startswith(nightly) +] nightly_dependencies += [as_nightly(arg) for arg in nightly] write_dependencies("nightly", nightly_dependencies) diff --git a/src/matplotgl/axes.py b/src/matplotgl/axes.py index e689448..46cb690 100644 --- a/src/matplotgl/axes.py +++ b/src/matplotgl/axes.py @@ -2,15 +2,14 @@ # Copyright (c) 2023 Matplotgl contributors (https://github.com/matplotgl) import ipywidgets as ipw +import numpy as np import pythreejs as p3 from matplotlib.axes import Axes as MplAxes -import numpy as np - -from .line import Line -from .points import Points from .image import Image +from .line import Line from .mesh import Mesh +from .points import Points from .utils import latex_to_html from .widgets import ClickableHTML diff --git a/src/matplotgl/figure.py b/src/matplotgl/figure.py index 842acd5..e9d9107 100644 --- a/src/matplotgl/figure.py +++ b/src/matplotgl/figure.py @@ -1,11 +1,10 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2023 Matplotgl contributors (https://github.com/matplotgl) +from .colorbar import Colorbar from .toolbar import Toolbar from .widgets import HBar -from .colorbar import Colorbar - class Figure(HBar): def __init__(self, *, figsize=(5.0, 3.5), dpi=96, nrows=1, ncols=1) -> None: @@ -35,7 +34,8 @@ def toggle_zoom(self, change): ax._zoom_down_picker.observe(ax.on_mouse_down, names=["point"]) ax._zoom_up_picker.observe(ax.on_mouse_up, names=["point"]) ax._zoom_move_picker.observe(ax.on_mouse_move, names=["point"]) - ax.renderer.controls = ax._base_controls + [ + ax.renderer.controls = [ + *ax._base_controls, ax._zoom_down_picker, ax._zoom_up_picker, ax._zoom_move_picker, diff --git a/src/matplotgl/image.py b/src/matplotgl/image.py index 7af8691..c9749a8 100644 --- a/src/matplotgl/image.py +++ b/src/matplotgl/image.py @@ -1,10 +1,9 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2023 Matplotgl contributors (https://github.com/matplotgl) -import pythreejs as p3 import matplotlib as mpl import numpy as np - +import pythreejs as p3 from .norm import Normalizer @@ -13,7 +12,7 @@ class Image: def __init__( self, array: np.ndarray, - extent: list[float] = None, + extent: list[float] | None = None, cmap: str = "viridis", zorder: float = 0, ): diff --git a/src/matplotgl/line.py b/src/matplotgl/line.py index 289b438..a75036c 100644 --- a/src/matplotgl/line.py +++ b/src/matplotgl/line.py @@ -2,11 +2,12 @@ # Copyright (c) 2023 Matplotgl contributors (https://github.com/matplotgl) import warnings -from matplotlib import colors as mplc -import pythreejs as p3 + import numpy as np +import pythreejs as p3 +from matplotlib import colors as mplc -from .utils import fix_empty_range, find_limits +from .utils import find_limits, fix_empty_range class Line: diff --git a/src/matplotgl/mesh.py b/src/matplotgl/mesh.py index ae5c2a9..d730007 100644 --- a/src/matplotgl/mesh.py +++ b/src/matplotgl/mesh.py @@ -2,11 +2,12 @@ # Copyright (c) 2023 Matplotgl contributors (https://github.com/matplotgl) import warnings -import pythreejs as p3 + import matplotlib as mpl import numpy as np +import pythreejs as p3 -from .utils import fix_empty_range, find_limits +from .utils import find_limits, fix_empty_range class Mesh: diff --git a/src/matplotgl/points.py b/src/matplotgl/points.py index 4561d21..ac47ce3 100644 --- a/src/matplotgl/points.py +++ b/src/matplotgl/points.py @@ -2,14 +2,13 @@ # Copyright (c) 2023 Matplotgl contributors (https://github.com/matplotgl) import warnings -import numpy as np -import pythreejs as p3 -import matplotlib.colors as mplc import matplotlib as mpl +import matplotlib.colors as mplc +import numpy as np +import pythreejs as p3 -from .utils import fix_empty_range, find_limits - +from .utils import find_limits, fix_empty_range SHADER_LIBRARY = { "o": """ diff --git a/src/matplotgl/pyplot.py b/src/matplotgl/pyplot.py index df4c03e..5b89441 100644 --- a/src/matplotgl/pyplot.py +++ b/src/matplotgl/pyplot.py @@ -1,15 +1,13 @@ # SPDX-License-Identifier: BSD-3-Clause import matplotlib -from matplotlib.figure import Figure as MplFigure - import numpy as np +from matplotlib.figure import Figure as MplFigure from .axes import Axes from .figure import Figure from .widgets import VBar - matplotlib.use("Agg") # Headless backend diff --git a/src/matplotgl/subplots.py b/src/matplotgl/subplots.py index 490cebe..7fb2daf 100644 --- a/src/matplotgl/subplots.py +++ b/src/matplotgl/subplots.py @@ -1,9 +1,8 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2023 Matplotgl contributors (https://github.com/matplotgl) -import numpy as np - import matplotlib +import numpy as np from matplotlib.figure import Figure as MplFigure from .axes import Axes diff --git a/src/matplotgl/utils.py b/src/matplotgl/utils.py index 710048a..9079d9b 100644 --- a/src/matplotgl/utils.py +++ b/src/matplotgl/utils.py @@ -1,6 +1,5 @@ -from typing import Literal - import re +from typing import Literal import numpy as np import pythreejs as p3 @@ -24,7 +23,7 @@ def value_to_string(val, precision: int = 3) -> str: elif (abs(val) >= 1.0e4) or (abs(val) <= 1.0e-4): text = "{val:.{prec}e}".format(val=val, prec=precision) else: - text = "{}".format(val) + text = str(val) if len(text) > precision + 2 + (text[0] == "-"): text = "{val:.{prec}f}".format(val=val, prec=precision) return text diff --git a/src/matplotgl/widgets.py b/src/matplotgl/widgets.py index 73ca0c8..57796e3 100644 --- a/src/matplotgl/widgets.py +++ b/src/matplotgl/widgets.py @@ -3,8 +3,7 @@ import anywidget import traitlets - -from ipywidgets import VBox, HBox, Widget +from ipywidgets import HBox, VBox, Widget class Bar: @@ -19,7 +18,7 @@ def add(self, obj: Widget): """ Append a widget to the list of children. """ - self.children = list(self.children) + [obj] + self.children = [*list(self.children), obj] def remove(self, obj: Widget): """ @@ -69,10 +68,9 @@ class Box(VBar): """ def __init__(self, widgets): - children = [] - for view in widgets: - children.append(HBar(view) if isinstance(view, (list, tuple)) else view) - super().__init__(children) + super().__init__( + [HBar(view) if isinstance(view, list | tuple) else view for view in widgets] + ) class ClickableHTML(anywidget.AnyWidget): From c0e26b8b42c29377fbe3e1d83fa7daf70863b77b Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Fri, 31 Oct 2025 21:02:34 +0100 Subject: [PATCH 02/10] add basic tests --- pyproject.toml | 2 +- tests/plot_test.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 tests/plot_test.py diff --git a/pyproject.toml b/pyproject.toml index ea8eead..0809f23 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -60,7 +60,7 @@ addopts = """ testpaths = "tests" filterwarnings = [ "error", -] + 'ignore:\n Sentinel is not a public part of the traitlets API:DeprecationWarning',] [tool.ruff] line-length = 88 diff --git a/tests/plot_test.py b/tests/plot_test.py new file mode 100644 index 0000000..7c81261 --- /dev/null +++ b/tests/plot_test.py @@ -0,0 +1,60 @@ +import numpy as np + +import matplotgl.pyplot as plt + + +def test_plot_one_line(): + fig, ax = plt.subplots() + points_per_line = 100 + x = np.linspace(0, 10, points_per_line) + y = np.sin(x) * np.exp(-x / 5) + np.random.uniform(-0.1, 0.1, size=points_per_line) + ax.plot(x, y) + + assert len(fig.axes) == 1 + assert len(ax.lines) == 1 + lines = ax.lines[0] + assert np.allclose(lines.get_xdata(), x) + assert np.allclose(lines.get_ydata(), y) + + +def test_plot_multiple_lines(): + fig, ax = plt.subplots() + points_per_line = 100 + x = np.linspace(0, 10, points_per_line) + y = [] + for i in range(4): + y.append( + np.sin(x + i) * np.exp(-x / 5) + + np.random.uniform(-0.1, 0.1, size=points_per_line) + ) + ax.plot(x, y[i]) + + assert len(fig.axes) == 1 + assert len(ax.lines) == 4 + for i, line in enumerate(ax.lines): + assert np.allclose(line.get_xdata(), x) + assert np.allclose(line.get_ydata(), y[i]) + + +def test_scatter(): + fig, ax = plt.subplots() + x, y = np.random.normal(size=(2, 1000)) + ax.scatter(x, y) + + assert len(fig.axes) == 1 + assert len(ax.collections) == 1 + scatter = ax.collections[0] + assert np.allclose(scatter.get_xdata(), x) + assert np.allclose(scatter.get_ydata(), y) + + +def test_imshow(): + fig, ax = plt.subplots() + data = np.random.rand(200, 300) + ax.imshow(data, cmap='viridis', extent=[0, 10, 0, 5]) + + assert len(fig.axes) == 1 + assert len(ax.images) == 1 + im = ax.images[0] + assert np.allclose(im._array, data) + assert im.get_extent() == [0, 10, 0, 5] From 9a12d63085b18aea4541b13444dcad3032e98854 Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Fri, 31 Oct 2025 21:07:25 +0100 Subject: [PATCH 03/10] add anywidget to deps --- pyproject.toml | 1 + requirements/base.in | 1 + requirements/base.txt | 11 +++++++++-- requirements/nightly.in | 1 + requirements/nightly.txt | 11 +++++++++-- 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 0809f23..7d871b9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,6 +32,7 @@ requires-python = ">=3.11" dependencies = [ "matplotlib", "pythreejs", + "anywidget", ] dynamic = ["version"] diff --git a/requirements/base.in b/requirements/base.in index a3923cb..f862369 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -4,3 +4,4 @@ # The following was generated by 'tox -e deps', DO NOT EDIT MANUALLY! matplotlib pythreejs +anywidget diff --git a/requirements/base.txt b/requirements/base.txt index 6e74756..09adb19 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,10 +1,12 @@ -# SHA1:04ba1dfd0c00e2f352f80789e53cd5ef22ea5d76 +# SHA1:2c258b7b4a1cf8f84c688edac6f53735d3ea39b8 # # This file was generated by pip-compile-multi. # To update, run: # # requirements upgrade # +anywidget==0.9.18 + # via -r base.in asttokens==3.0.0 # via stack-data comm==0.2.3 @@ -27,6 +29,7 @@ ipython-pygments-lexers==1.1.1 # via ipython ipywidgets==8.1.7 # via + # anywidget # ipydatawidgets # pythreejs jedi==0.19.2 @@ -55,6 +58,8 @@ pillow==12.0.0 # via matplotlib prompt-toolkit==3.0.52 # via ipython +psygnal==0.15.0 + # via anywidget ptyprocess==0.7.0 # via pexpect pure-eval==0.2.3 @@ -83,7 +88,9 @@ traitlets==5.14.3 traittypes==0.2.3 # via ipydatawidgets typing-extensions==4.15.0 - # via ipython + # via + # anywidget + # ipython wcwidth==0.2.14 # via prompt-toolkit widgetsnbextension==4.0.14 diff --git a/requirements/nightly.in b/requirements/nightly.in index 7738c80..ba91b3f 100644 --- a/requirements/nightly.in +++ b/requirements/nightly.in @@ -3,4 +3,5 @@ # The following was generated by 'tox -e deps', DO NOT EDIT MANUALLY! matplotlib pythreejs +anywidget pytest diff --git a/requirements/nightly.txt b/requirements/nightly.txt index 8baa616..035afe3 100644 --- a/requirements/nightly.txt +++ b/requirements/nightly.txt @@ -1,10 +1,12 @@ -# SHA1:bd1b1a61cb415a83b0c4c4c36380945b04796f84 +# SHA1:d2cf1c994df2f0f7d49dbb832580621379e9d486 # # This file was generated by pip-compile-multi. # To update, run: # # requirements upgrade # +anywidget==0.9.18 + # via -r nightly.in asttokens==3.0.0 # via stack-data comm==0.2.3 @@ -29,6 +31,7 @@ ipython-pygments-lexers==1.1.1 # via ipython ipywidgets==8.1.7 # via + # anywidget # ipydatawidgets # pythreejs jedi==0.19.2 @@ -61,6 +64,8 @@ pluggy==1.6.0 # via pytest prompt-toolkit==3.0.52 # via ipython +psygnal==0.15.0 + # via anywidget ptyprocess==0.7.0 # via pexpect pure-eval==0.2.3 @@ -92,7 +97,9 @@ traitlets==5.14.3 traittypes==0.2.3 # via ipydatawidgets typing-extensions==4.15.0 - # via ipython + # via + # anywidget + # ipython wcwidth==0.2.14 # via prompt-toolkit widgetsnbextension==4.0.14 From f7175bc9fec139262acac8e1c04e01d83f947ede Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Fri, 31 Oct 2025 21:29:31 +0100 Subject: [PATCH 04/10] add logos --- docs/_static/logo-dark.svg | 101 +++++++++++++++++++++++++++++++++++++ docs/_static/logo.svg | 101 +++++++++++++++++++++++++++++++++++++ 2 files changed, 202 insertions(+) create mode 100644 docs/_static/logo-dark.svg create mode 100644 docs/_static/logo.svg diff --git a/docs/_static/logo-dark.svg b/docs/_static/logo-dark.svg new file mode 100644 index 0000000..2a51040 --- /dev/null +++ b/docs/_static/logo-dark.svg @@ -0,0 +1,101 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_static/logo.svg b/docs/_static/logo.svg new file mode 100644 index 0000000..71ce54f --- /dev/null +++ b/docs/_static/logo.svg @@ -0,0 +1,101 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + From e22c35146c26a81dec1dc3457fa1abdf88858e09 Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Fri, 31 Oct 2025 21:37:34 +0100 Subject: [PATCH 05/10] add favicon --- docs/_static/favicon.ico | Bin 0 -> 137750 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/_static/favicon.ico diff --git a/docs/_static/favicon.ico b/docs/_static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..af3f7a3142ff9087f812789e8ae0c687b469892e GIT binary patch literal 137750 zcmeI5349$@`M;-4X$lll%2uF|LIGJz5s*b7l|}f2pduifP$(!UV%gk&NK!yHl~ooI zEj!)Iz6lbjARr)uY$`Nm5fRX^M~uz?`JS0~dNP?icW!cTdXr}Qd3w&7Im>(A_srR5 z?j#5X1w(_TrT}+Lu)(lF!PkQzm^d*EPy2ZgoX5Ed6Qb)o1;J;2H7FQAKDxeM5F9$6 zlw+dsh#(lc)ZkzQuJSv2ND$0fd2p}+c{Twj-FbQC8#^v=gyH`C|Ewc}VAfHNVYpv} zX80KX0Y8J)W=Zh_N59g*%+Tfm_8*Lmw}GqRU(n&vj{j;H-mfaZ1XpH8WcTYrcN1)T z0q9=$?e6 zcCV*hAFzKPu|M`zA0J@l7{@B;qowZyI{;gpuB-e6z?VXG_ zVE-z$|EzCB_j@?Ex3%0G*gk2)LSfAX9)oG1bzWM$0sB{({k0$G#`w_gTFW)T`~vn% zv#HK$4KNwBCRiG7g|xT>_OBBA-|?+QYdP#MyL|`#T)=K=w$!=#ptb+nHcw`z%%ALmxN`WKsco}RRp`!f6nN?FVOoA_73HlX`FNIuV5O!gmxEZURU z$mTJUZQuwsFq<)6`k;@rwcH%SrL5&XB>r631(Zj@`)o1U|NoF_A-n{qg4#nt8JDDX zfjxqojt&N)k1gQWP|8|PeZzgQFR0Hbs?)_}|Fe+IA8#~|ISxij<|X-<5zgy%-@XjK zj8 z{WZ6{9LDi{SMvnD$J6a&!2aDGaQ}Gi}d|IuG+!pprZXj;@#Rh z$~zRaZcjd!D``|B{eb;Tv;T7F>_M>mP3}8zC2UFi(AZG6{y_6N%MW)M_#)g5ZQ#pb z{sH?Z?1`Sz_J2)ZCGG!Uk2L#RUVo>opTdUInTO#9GkfrRHl=rYgni2d{4+p(j+K|@ z4%mP3+28E(H*9nY)W`R43G;G$9?Kk0eaV)fzD0eESqRtKhXbYYN+!? z^rb#n&pZp+z|PASe}ZqpDsel=ad+NuxV!H^MLP8*uY=`T%zc%(n{}2rJ4E~e`)8}D z)76>ZaC_i-4pPh(cKyG^eFzQ)%^iy##L*c499SNCT*W_-eW1Zb3-BV4X2AZQK8krY zo})9p4|xT=3wdm#IGV3bg%yjHL7e9yZ@vqNdj^cPKBidy{&ms~*xy%34nI26JJEV3 zvOC-gA3+{_wG)rtJ^LVz#*Sk7X>aD|FmBdy;XE<a z2xj-t?vi0?Zs-Cr`n&z3Hc)l;_iU%4QJ)i$f7s{_V3;M9~)_YKNkwwvM1;DJF1Nq zS+}@v!2Z2%|DCXr-r>(<=eLNb`JmRBdG;Wc=Sjt_z9`0k{d?X1`(UGD`;z}8&LyxF ztOOgt58*FRtlgZs$hyUS1NN^f`|BRpyF}abTr1p5j^_3=!hH-qgVuaezmqG}4hHO> zX!hu;dgg!OH~9+P|1Th`+fPjH@!31>T-SQ&NZ(o1iegEc~3>#`6btDwrL(NEA zZu{RtSxY6yeyg8;b1*yn?qgGiOiT3rKPP(6JG$>zK~MS}*83Uy(p>CvSQ}g$NR9^? zY0GVY?E~*UBYM6kd2~c`fA?Mq=QaiH2@K5tLiNP|OJ5OnxQBq=^VBobLb~$L%a-n& zm^Rn8-wI@;FSq?A&+Bk1)PvPWuKK7W;A!yXPWqR)`yYLnp7adl3vegs{m!IriiQ72 znn&Pp&_1o@TPR(3?5}6Mh1P$5IkNNjLG{si|69mf_gmT@$2UX{Pha2vnW6FUNcRr7 z-oKj;?}6!}yRP*78`ukmX5`l$`+u7Jw6B|2Hno+!d%x=I_~m*2qp#b4RyZHtoqB7J zJg-jk#?yN^CuQW@9sBEf{|`ZV=anN*JoR^)=Z?&8{l5SFm-Nise?OQ*hc6Q62QVHshHt=Q zApPahb6T8|?JwKJ^ULt}NBdF!{g7u)kd#5sd)=JX-hVH}_KMr*`~U3U|4Lt4`~3{o zGri-tdEILGzYAIScv9znxLfv@-e>SDXHSk5@gD_GK%TL_g?NpycC^mz*0=wb0Q*aq z=dzAdf9v$EI_ogK-5&n7Q++{q)(hRXe<($#HX!-dgli$I4g8+#TU>2_51`22rIl02 z?dSKu)&kq9Z!B~~eZpGAdkOq|JCDD|_BXlgH|EH&0lZQ`7QOHH73kEKEsyTFMeMJ2 z&>kwUoCo=x35E1q&hI~HomKSvOT^JWp=?=5rb6e-W`F7TrtohwXb$&C0a-L}9S3DQ zir8QM&=0yhwi@?OXFjCqJnLLp?|;dN4Ao|T)n9uRQ(*V86YgK7+ZYHI&A>EL*2t>+|-f&Z_@aIqR-<()qCQ4bd~I?(_$w?=Abw zW*@;7u-Wu*pV+nC=)Tu8zcb(+NV9LTbA8_azYgCgIh6XBvi^CQ_>B;+Ka0IX;dd6K zE2sU3liveS%vPFHp9LBZwuX~I`zOWHWnJ&{_K)6^SOz_4pL>3Z`jGy<1Eav*SJ&kj z7l>Ov`-gj}Hb|g z0GFSCzbE~~DVzOo4&U>cK%RetEIGS#P4n$zGV<*g_O~`bJvB$t{B9e#3QBoKrTLSd znd>N}>wXLxT>Ym9jPg}s^*$vRoM-`@Ye0%EY8pqVH1$(calQ z=;bt+pP?V$uIAUctbI8PC*88x-(;p7*-y`RljT_WeC-8g9T{ntDEpg^qP?@=y70FM z-B~l5?$g||+FvqbKaJ~YW$D~c{C#1oqwi*z-C?|-G)3OTc$|7b6JPjF*fTKdIt&U<&E7TG=zH^YbE+cmF$ z!2X4w|4N6NJFN?@4V3!5r%JXDlZiFMaQyp%=2oSw8CAal`yUnj9zA5;FVArOSkQYb z)!Poj-z;hDEoIHPq}yNj&OFGnzpiQD{UJCQG-kMVaKrJHyuYEnGI2O);1z_^~uHM(% zx~m0yc7{CrjQyiI^%!KH39_xPpDe$gYfgh5X$M1atEwI7Z?j6K=sDv!{67c(Ipci7 zM{B>PXV&hTntc0={Utr}isj${(7O%)g)H0q*WM=XFW}R><31R-s@j3QcaL1^=eC0H zz&ByzIs7f3Vr%iP)-8U9y!({>?cFrwmhD!Aufr3NwQuIP0r_8ppTGuuQ^?v>ab@*V z4CIPsGQZZ5l{m=1PubseVEb&+5BJ3yxZi~rAZhEY@L!4lLs$!(&h-tECF!8vebWAB zBh8`IFU}0#by<)4==s?zkY#uOn);2WK>h5>;M#%Z-``#8+o$bs_OX37-q{;OoyNnZ zpgm#V)>(edBYp=5L%e3R{QIj*UHgUo%|7Z2sFN51+r#znE@au>zovD?9qdWzTUs*v;2$JjQ01^%f1V@_*zhZw!dk0R`@L5#)Xxrv)*}l5=vb&oEK#?4{=6?JcXm+BZE4^sGEtCqJC$@4x05L$waS1jgx|4BV2} zR4$EopINw6J*36AyrO4AI}pAR^vuZDMV4RdirYc!46Qd@9n;EM9Oq0PT+M;M3eAw` z-IF|j|M_|H%F>O0P0u#ZfcWpft3S#*;{GapCZc=vaM%}Cx4C_}_QuIGY@6Y_e^0{N z2as+3I%N5^&!GNpd+xWg^mkdhDR#|thpRUE|KL_opPW?(yQcBG=wDGK&X?f1oOxQ_ zYBMLn>fm&q{Ef7}FRW`b4|T4_sf*wZP#)@cp8(C{!yT>f2n}u2OdIjOB-`=K`AR{Soqv zcP6WzL!1TcS$o!+tI`MM4F=sa7lYcO$y3agJ|Bid!0EG?tY)|AVVPT!?n-zEij`&8 zH4gn2_Jb8*D69!5K;C{uee`XhKCZ0euRR}*>M6N?2!92WKaZ>DlHY|jOkembc98cL z@Dk*aO>xww{{-KHRlwax8b9(LalMXozcc+DdCY|OA+HP{5%&?09c6d*4|&sCJoRzf z@82HW_*<^IINt&b`=!uTf2X~m*TBjy=1Rv;K<_aM=&?lzh#gF}#>ueSI3*mxK0*^U7~y)&Zn( zeJrl~+a={{2+@0m8neC$dbXW5W@)Vc8Ekl`?Pr$h9TRU|EnSU(L*e(3r#};YPtV)^3!84G@c4=|cel)izMb8)0FAeHhO$w(*7Sr|8`1Q>A z4$yogP5!iV8nZM%-yVIrF$;fL4&@_m4qdf_?O`KWO6Nsy95y$Io;Qr4+*6^H`HAeV zxxv?AGf+LW-pI3OJD2inDp}9#_+0_AgnZrY10GEHcc8vL&E{$6G*7<-He>I=tr_u` z1chYui4A9hYQJ|0FvEI-fSq$7>LS3}nPVlLM!YJXG1 zTz$hK+P9!gjlY^tYhJw&tUkqDtr>p|>)Ja_rOd-kmTGowEleG2;e05hAFUq_xG81N zIMz-0cLJ^@ULn2qn*B}Z(frGvuc_bF{Q9pMGN#F{HRH*!2Do;g+#|E{`l=h%>$A9p z#&fNgMykCOI-)$Z2U(~O=ym&>tkHNEObg#J-vAlUh1Vd>-f8Ew2DUx274f@vpm$yS z%R!ws1FhH6>i+gY^fC94oUIufG)J_2`?5>jv+SSQ z|6d!v!yx;A5eoJH_i}AmwalTWg>zrmk0Y1XjM^i+3)&#f=4t2dq%AGom+fw{Q|B!E z>)zOZPBj0U>+MH#-gLMu{%asjPdcZ*WmmBHR`g0z-p;4&3XT{eS4Gp#b2ut(WYC)G9Y+F0#CZKV~8*}KqntrO;g`cOSV%Qta5%xNlJ21+dBN=XA_)2BVt!2U~-M(8_@h;Hs1^Cm>=o6!g|mMFGHR@ERNn8m<;iJOZRs2;JRxc ze7i?u$JX#`(BAI9K+h_Vf)&BV(;9Z*D6Rp$dnBEC-^4nda0{4yd{^^9-R}oO9k{gi z{N>t%TzF&7pAYKi{j^zr^*xWm;SjDFqr9!3zcmbJ<*jk78TN-}x5d#IavyvJ+&mF?;OIjd zu=U3E;rOr#_R~DC*qTx6&#vplBJ!`4bq+5K zI)~d5;g&?WsdJd*ozk}_!mYv3PS=}*JcTzzb6gEEA_+7&LZZ882Ml z(cCFq+tJi1Jg5WB#_<&hYP>L!gIX`#Lb%=ww-Iji!l(t27Uf4s;YIpz;ij5c9}25+ zm_8MzaWweh)*z_&!!(xIK8jy7T+`e+eqBo<+?qFxf~BrFetXbBxHitOHK-$8(`5NI z^E(w^KH6z%!Oml4v>%TDAp6eZfwYP=AsR}oneu<@UtpBWVLx-zH9KX(m zU4AZojSG*CuMcuz$*24&r%~zSa8ppO#;RPCn|=&?(%atlbe_r^D$KrY@br)TJRj5ynSvQ3g>sk|-)) zoj}xIbG=b1F^?QIfO>f_j~v~vVO`A8{r-S1xD1-O?y{gtjY=Mnaz~|gRZ^^GOiUK8 zN^SUPtxDUbDzy=lx~Mj;O6|%-VdpeRT+~V!udC8L!peYftdsU&w8C+f)CLG!mGCq+ zDcmfvbVOlVT&HkUrTF^7SVv)g9ZjaQ(V=!*EPW7~r>#E94*}&{*tjU%5PIGJOO>3S+74AMJZQNTZ5EbR*9wADT%E!QR3I2-wc*qQE{po`qWfQ2_+bna8rb4AS>>V= zu`;4?Yp3MWZlfg)-AET59UGAKL}-RV!5IGMxF86|jtdD-RQLbP<=k8^`ui(e5!Uk> z?fJhBCqiv?*Pw4o=dHD*|FLiew1B_XY9+jD->hMEN^Q@u(W~^XcP&na7r@uM@BdD9 z)}(Jqg??Q>6S*UC^(<4r?^_7IzLWmReXFL`B`vzO-{MOD!(l(TAM(CyIH3P-niL(o zHcwx#eU#ncX3#qk$u^!99?*Y@`j7kg@cH9*==)lDw}{>g-46r$a(>)QKm;dc@3 zy(R4#X0`9Pxqc~p6`oItJD~p}`nSDUbSM4m{jAer0c7d@J+9vfJHQa00S>{v3zBJi zq<^~?i&UXcUe-4$(3hdPq}EGmZP?f8$Hch<_Jm>J(xWH&%c}pm z-xmG=MuXG4{@!ldQ3?IuakTrL@>K~LUn0D1nhbsA9P+FGcqCCTU-#NOI|tVH_j$7F z*Ngg>oTp{UQtj7}Uw!_Q;Oks|t*w3q`WwfCa9x|vQ=eYef6>1!l1Jvn6$ibp0BQRF z1@Dx_bDC1*>t+2H{o4+u$X<@Pvr70|%mwtXxz9lm_}>c2D_gbc-=ACOtwVR>Nnak? zr>QBH4{_4kzvh=;Eta;>^=i|9G;ZlVUacQ0@||4e8=?0`_k~;Fz(P8*^Tg@*`lpWS zN6&{}!j`PtH0R4bo|&$auKEVc2RH3EL1!n^B*UcZ|N1}DeQQSF;L^O}@9;C&(0*Tu zzvM${9O2*6+y?(upx;aQ^O&=WWla1fMgNZ_bfdMykDwkxUFP^5l*OG(T>SQa^FQ$W zdN==o{%L^xc4q|o`9lF6>HXht!z$qHko6vDbkErD3t9@~Y5Fg^-$?rY-~Pkz#6g;?g2>cmL$7yaG*Js0;1v82+5U1bkKl%;+=c(({kftv?C%tLjvRG%3)J{oO;I|^O^D_gGa zC%x0-zA>4VPujI=*1yTCx<%h;(erA*?(&zS{||}3qw>ppC~kz-%HIc#J4qRuIrk}h z9<1N>{#6(1C(cZ%d#UnyPPnp<}LNBYzL)7CH*l51rvJLzgKRBM+>ps}LpF`)mhDnf7C4^>~2HGfU& z-Vf`!u-(uva9Qg|r+RL!GXWcTfYySS30sZ^h z2>s|){e4r2xuV=c}j^*n6XBvOBKjp?(xzXPj z(K|Nt!H+NhReBepYYB_a4CsH6F3gACc7~+>U*p`m5b&F!_)vIm_zd%M{QXw{swecy z{F8Fh^#3=`uMsQW^F;fs`a4VgQvcM;?)M8*>NuPIAI%lJ94T=%ZWf*Y6DLjoEu3Eq zIvwttO5yW`3%J&=^zZ+@4(g^k$+IbSRKKwE^yu4C{$5;4+@9!PZwJmzZt)2GH?>R@eZB>p2o?JBKqR!85}9)N7MTJ)Vx|C;=H^}j7~--l#+ z3%|@Y?MLYOLE3(h#ryfK{C&=>quS;_(O9+>^|}u}0jo=1S9<_zkD8+=)8y5^p2u7T z-6`M7)cv~SZAG3dRGa>hS!;hi543uux$kgYeL>naJNHV;^}PDmJy-{mK>InespVVD z)pLrAVdH6sWVQV8TGi=4`}w=QU%UnN8wWoGz3W{}Cw4uT{-fV7SU;%!Ozmr`Z?k;T z+;_QtEvWBu^RYaCv$IO|pM3vB_0@Byt&ul=zZk!Cv=RIU(sYtMmrMWFYNNi;{=V{9 z%9sjz-j&SvMb3QzbniO5<$V`4OaIfob)LzT$1U*wzho}@{%!RBNmBnBf4^;YGZ~_H z6;H@odVfIcpwmF| zChL$4SE~JYTmQ(s6wJzyUG3^-*bU|~sjvn5*Ze}`u-2jHK`SKV zr-iFd|1%GF?RqcdZz)m-)$tmL=U4bsj~?ki{9D_<%aG;oT)Q4*i!-t5d+)`@hMwp@>f6=NX-;`Bq_yKTd2~)=fab0fL3;?vcvY!? z>qL;(>@W=fo^S_f-!)keKWuwmtD7Crzw)^%C0)_^f1*8TzIQliKd0FE`W$g|-;4sQ zhcBo6Rjq&3J+b$zHgpiEKh``qSsx2aHySf1!3xp3vD^BW9R3`KJf+hgLE1g3zUBg0 z8$!KD?{pG2`OK|){j2Ue5`QaWW$N-xcnUNZxB4XAPq=m;oB+?H#LLzGLkYtFnO{1c zVh_#Jrl;hoIkMV`i|40JiQ8xNZ}qUhRS~tvHL24N;4dk4OWGnWT(bU64$6~$&q^ux zxEmj$>oN&(iY5Z3}u{mqG^q=1T^S}S!)Am1-x+e9ny1fC~A6yAcKZVR# zmh)B)uI8)_Fb&eiN7KFB9)16T^ov{nBaq>7@atrLy`MD?4us{v*`bnu19mR&mRdQu zOT!o7PSBjhebV0(U@Si&|KtT zcnJJCtL}|2^`tD)FK+#-j;n&!ov(oDJk3>oZ-DJVcB{M{qB5egR>swwRnMlhj?;ZP zv@h#lvQvj(&M|JkW*q*X!#^QS|90*zu3rY5vo6v;Pq&__l%h9V2dgYlzf_j{kbD+v z`!^j}{g`vsAk%hmExZe+^ECHWuAdF-*_%qBW7~SPQ$u zt)PAKH2vE-t)0FHqanPX68o2yf3>;DTUGj(e(YX|bU7S%e`tnJz;vE;wPw&f_8YJw z#O<`&bneT8oK>fPlW%so=V*GAPLF~oAZx!yb5`x2902j0)$*)17a7Z;{~h&P)=C}7 zXf}|$I-CqIK=K~&!eJKx2R%#JE6S^)RZGmt*NtQ^HfPls zu4j9n1&!?$pDX22f|DbB$Np0Me!G#sl;58!{>>2YRhMI4kW~lDa`(gRNp9|`-;1dZ znv*8$;fFP+y#zL!9(~VJ`)|E{P`=&EgYoYQ^TC%>{!;a?{`eU<7PLkQ^%FfaC{#y_ z=evdCrk(fh2d%}_zSYi)%~^H7=$_a8W4cJozO3g=);oEBm2x+R^WjZM>b{u%|4|@~ z(rIn}5F89zv%C6TmROuKrioc5~j1dR(?E4uob8_85p z_*D2CXkID1y8eN&+^uQVW=c6oZ{=v-qxp~KL7ESlTuE2=?Gtbm#Bln7AGM>s;Ze}@Hie?01B0>c6cnT0=eyOaVbN6_SSGUv_heBx^v$8hr`IX)~{P$zl}Ad zSKTz$XuYF-qbzwehF=HUVMjM6b!Sc&jk)T7_ki2sW3X~x!v7c_rZifqZaqz~l`+vIq{mqDI6tM+5Z-Q+!&N#>muj>`?# z;_Ba2?y0b0^bOCT9BV?aoMrLv3%`Y|{Tk`@4N(0K0gWeF{ll4A^~`&XGVC7LoOOG+ z0g63iTtJ*NU@W-wnnUD0{P$io$Fe-+mh(uAeJhav(eQUj-UDjyx58&Y>kxhOL2{{o zxD>RePNwP6bG~Ffy?b7B*0la1S-!&0!%5JsIjiZXr{j9EF3GT!GdKMGw%T>FE}G+P z2(B$Cy*FNt;QYLlG-cJl%GBR4F&S_*XFU*9cGjF#^O(osNEiuW9wp9|Req(9=w3Sr z8IyCbKX7hD+BePt83TARgx2D#GoukmaH&~I(r zA%BF{A8Gy1EY53=<=&^QWX+;^qnnpd-uiGhyavABegAx}O{k+f)^;TSMIakBf!4fsEzOnPo`PdQ{j}XP6|GWS&XMk&7tLAE0kws# zm^Z}jr=mi1Gjn7d2kLLq^l9e`*~hLYUCmF_N2zbqyv5nU{{CP$Ma@k1KdxFiNjEd$ zV!nv1Y9F76dmyb}N$R$g@Wj^r#G%kmfb;f$F;%5FJ(8qSS3)XjQvheTAs1Lgs-h{L?c1~mCWuUQAW2V!q=Pr$Z zZ@3FIZ&W*Y4o-yCp~g{(h$54Ygq?GecyTJ!G*_k->qU+<;(|4rJd zur&-RSopw&SOZO`bh;l#qPHVKdtzE2H8W zz7O_+Wx@4rB@{alHK75`8%>Y6W8rjY0smgmnoV=xiLe5=G}&Q@)|0 z`O}tgBdDKw9U5T`h;3CMo2owDp`*$DAO06C^0#~bR?pw;`GZCNcF*7H`CB}H)1an~ zg^jL=g+XmoM|-{Vw*~e1Yn{I}Xk6qUglu-c#`D*C{`%Pe$JWr_PDXW+zpbI8J@(gk zw8sA0j^@};F|j{r3>Nttg8C?*g+YDL82LMz>IZe0zq!69_P641iDZ+%DUuogLbTxO zf*(yadj5t~e@)Y(^R+G6{+7C$_L}A}PE)P&cm9RJpxDp3xZF1U$kV8D{0Btb24!}IN)pLP?TS958K{DbhfME;<$qoXbK)2=!?7KVQ1(a|y0 zrKNEE9ihKDY{DvwLL1`q?Ll4aj}o{z9btl2+5m;R1kJP!3RP*ejiA1@LsIfzeNfxn zAoX&wp=l5iT8IhF0TGm-g_aZqgIt2vT2zC-19WFNeP|nBV;g7|`AB!h{v;L!M zs#a_0AL_&l{eh%JC%P&jqQeOh`4J*$JSz&|U(2N=+`K&@OMrOh=ZfcVjkK$Xk(6PY zP`RPMDRedPJv33|kzpg#uci?ZZQ!j|HSc*v0+kaN- z@2Oq1ScI!!p^3F$v1j$ate_~pn)O|se}goPww>o)kt=#t$O;ukU2U$WeVH9V^EvJH z`txe7XPyPk^Xz<|u0Qp#dTSnQ@5;UH)lc=*p53D`5wzye`n#n1cj`;3;QbYS*MT}1 zS?_Af-jiWe6kmHmzlT!mFa2u&PkZ97+zK`2T-io4s7~L5zkt=p-1(fF0&9cmNv`_C z((51YyJ!#QF*po{t4%DfgYxx!;5ta|BWZ8^0@!$_*B_dkobOis**~cz?cE^#svr3Q z_0Rm<5>{pWzOPV*uj;ko8@VBkefU>r~3aH ztp0jlp*E3PZ%fbhvelpWuWBq`bNzibJ6Eb}b-=9wjpJPo&L!)Aw&L-7z089+<*NV8 z0`*rvxr{$vWD4Y6l>8COV>7rMPJ=G@8RwGqKgY|epqF$Ntv~rM4_84G)I(UOjJ`6C z6TVZoF5xrbRZ!cW30>|p&Q)vuwa(CUTFI{a^EimdOx+*JgX_|f_S?P-FM{3Eay5_Z zOZ8t7d7t*`pt;v0a46_qf-ZljnsZ0M6OcBReJ$_KetV` zft0wdoVyyffto&6f3;=x*)kKy!Z8)$&WaFLCV@aAS_2hy0vh9QB{>$=kj9hwlJA z>*b?*%l@xGa=ou{Bwm%L}A`&Rb1`m5dV2kuaRH$Chhv<9q- z`b)M5tx0vyn_PduKQg-J1Rrs*m2U`4MO= z^6TdN)qkA@+Pn167pnhi#PjcOOY;HeKS|{AF=3V8>-|4vs=eO;CZD-_ckZ2(^M6d7 zORc|tcTK!{m;x<{G*-rcIX@579^Cs%i!2}dIA3Y|YhL~gm`rN>zk=;xOSlNEAG0{V zn_7Q+ruFd;oE|nIkEx*gTG}`89}6m9x=KAb-=+SA;`$kAEFqrmDJw5^|A*@;|7kCt z`s88YWWrUSbval*NjJ6rCX1KPTKHe~@==~)8QFU+$@)va8l}}ZQt0SG{m*rIM{Ai# zM(uMX>uur8`kQ>DUm5=F<#RUvq6cv_Pk6*jr~6WU#b|K)OZ#m@59&XQe3!AjakZ}f zC0KovZg=aScmGfAcut~x&8O549StjjwbfXkCDz}+|J4_3%`ySh2mAuwhh)7iT+#Yp zf0C=)#*{x5WP2-DuKJS)LH(!h6Q>9LcCv)}>t4SGq*Fg{joliv{d4mBa~6dwT7UcA z0OhD1?gDBH{`^ET$Y!_09-#WD{)(Tc|C7#Eg_Ge$NY>ZF^SRapYbWAVwEothDbv{& zSNG;Va33V+5we-a^3Q_C)1vi{^&5`Y>yqZD@Bvu8+wiNe-gx#mV;St4+-}$ZMt-+d z$}yw!@4Qx^?8D(P_#gN(y+v64*z4Z;)bY>CxAB_zYCrdQ>6HHnaQat#?^=)QuRLj| zB_E!wl4TSe56^)$i;~xWmY=!gu`>AM-(7@Pfv{a?%mFNqq#LIV z^U!^nHP@V#_WUa)Pu0K2`#&l9YM$lSUuz%r-TT9EaC%4^%aeH}!|q_TB&F z+$As$;xwfyLUr}i%b({UUPbJ0WhZ1>jqr)^Joxvj{I9?nFc#vvSU#0j>spY{BwiR(@-&812`EUo%G{F}nXpnJf| zm#ew?<8UO5gs{AB=)I79mM53_EXbnx5<$uF6**crB<; zG&$s|&%7V@gLuqLmRCwx-_;;5Lu+m6*w_EPgp>A9t_QVF(paN0NAkOQUE+IqYQLWW z^?hM^DeWb`7LJ7)6E!xbjhV91=b@n9i|K*1R&VVA?ge*38~8e(O?W9kFTzK_6Oddp zYMi|gHo0-pT45!^$AH%B(v#UwW1%ZQ*&gO}p6AQXvUf9Rz3a=S{H}p*!RZ}0_d#5} z`_KT>A!*b9aPA)1R(A9c&Pi_B^SkgO_%g}g0_VU9@HbH-~7aJ`iWfK z_eVh?y{q5Y)PK*`@+ssJe@%D45&C9GOV zMx9T*Mp`bWoZ039W|aPm|2*kJnZiD6Ea4x+E08Qt^NAB-H3(%)`R2G?!<8PC-zYm* z%6C&O4ek(_0MCKR^dWx9G6E!v>?b{F{bO+^`t>a4C!MPk>p8iaC(3?)pRIhQW6duo z!JOk==Ew1`f%|&j7kHKV+t9$TrSh_o9l#+%r zehOB$+P}sDzx`iC*l+)uV{JO?h(&cNr98#eJ`#Bt8Z*BN4}k2iF<_kn(U`eC z+z9W1-$vAD-3woa#8vY12_g;X%5r&tw5@pB?nao~tSBI@(1v{VUvxaegPq-bD zeYg5hwIj`)l5=V4RQ>vhGKgG}EYj{pzo0~W(S36u%!6cI{k9>U%z>T3tpWW!`=URg zC*3z{>#}(}Sl!j9YP{4vu?$qzy6jw7HgfBo+uqiI`$k9W_vJ3= zXmM^!V^iqX2ccUVwCQ?lZH;r=YwOySeqn80OI_$TDSyIEgF3sXPYJ{3PEojhP#CW@ z2;G)|uWE1}w^jMIOsu1v#wjhWavP#>ovybvwAO@fTQG(6Z4G?oqrC=~&rDE0Zi{p4 zJKCIE+p*BOe8WL*JD-A>huaZ;2BMB{Z|HLnbsepI{z7gW`de6A!v`rE_&i9^#-~v_ zT5E%e4J|bt&9zOG7<4q(w*<8d`HDrOzS7ZD|87USzT%;eN!0SS4Sg;G*L^=`Fxko? z`aZ-w=Qi*^pUDX7+_xuM#)MysXlskU8sWa2;bPS5f9&4Ke;d$9#=}I2zZ0=;Wxf+( z?HpHYoC$CzXq-G5y8O-zk*eZAHg|ts$hsTfF12*Qtn z&F?f(@^ijB z@~a*0?dL^!5X5sw{Hce|d#Eow9i-o-`~-we{`c^2<6rarTq~FSYM0l-@vtg{a-v`V zh|a6em<-Q?bbKEq-{qOSDeE2X=yZPJ&001?xCUB5=X7s<$xlbPn&iJcl2h}^ zoxyCWdqMq`+R}lQlt0=h&>YWiKXL!Ud217w`f^12H~FReH9+!bF6@8{taFOBAn`o?2?5H5@U$!BS}0@^?_s{A)Ws!LU{96AOoYxcg0FXWMeef4RWlHYJpf&b4Kz*Od zVs4uJvZ2tprhZg$Rqx|L$D<2Q%eEDxd{=tfu_N<)q#pJiO>CD74t1C%sa+}*l ze#xb>BP6rpYApDSJC_(QqWF^E?ltM@KydwqOGAEk5YCc+Rj!--cX@eeESL!>^vKT`2F5;3n7=)DOls!=EL;_Lglvtb6cAmU_3|i6xM<(F4}wdc=U`mE>Q2^nfgvmIOq?}C*pH&uR95Z86z+!duMIRCWx zX)bB4|5165!hVq2uO!p!-9O?Q>OXdaTS51w^3&M5S2CT2xu!HF&p$1_T+(j|lH0~{ z+2Ll8EtJ2L&rg%|C-zO%CiaJWK>bsFGQNemRu1_k-zZQ&`W%@3)fTRWZ9#3Mcs)AX zLpIb}x8T9GT=Fwk7CcO@$Xy5bG-v^|U9aP6Sej(Y4osaTZ3b)w(tLrOUnPv;U*J_3Obo zwHdXYYd~X^)#G{mC&FqF=TS^vyY8pKzaBgT%KKsP*T2>Ws1JJ(bWiEtip#_=88?6~ zvUu^-$LU_yJ*|6NWoc~s15APyz~!mASk__ja94t(;VH1OS94~6|3rEF{fg?NzHN6{ z9yHEf3a^9m`4+@>k{o_}=bG-vec^tPPE-%gS$_*Uuj`?1zMWnRu1jD0fckoyxBmzK zZ(t|z_pg+f`jyG>ET}x8enqy@9MaCoRes9%07&jJ`ZgQMb?N4DFx|;6H^HtTd%5_@ zT5w)-pJQP@NbX1AFzB*>sCLeIV{QCXpap!H|4sOIcnnM*t@w9HmaQ=7ebnZ3ALxFt zJe5{+xotqYcJVDQg(I7;kADwX)#AuaJM8-O@ZGlYgr5SH_b=EF)Q7DCSAfoEj`=Es zI6mr+G?!EVWc5(Lbs=mLy=NPX#yLN2r~1W_QaoNd%~Mp4^tPgRUhPKhLGph==dG_w z$*LMKf#~D?^kXiyc@_)CZAl@YjcR( zpvt-_To?H9d=Yx=k7SS?bT3~9uY>Ms^=s;HSBDeeIk5Vv&sCd{K34#ZA-96|A0LJ< zL#O8=Jr*=01IjY}s6XBSB(t3}SN)3ay%w-~=-zxB-t*4AfPW(Nn*3HZ$~0M>n>>F> z*sp9tybIwCuzJXS2^wJxbV_geEN<82!qr$b0qz9pUTtY}|Mzd@mNk4`NG}^T^V*PH z{plNAz4s)yH8{0VZu5v!>zz9}bRTGS?z{6^PaVzq1#%mLV2a#2-Z_%X&SDMjTDWz% z^{4ZeqP()&|OFx zg?V91<;~;eE4j`5g&*fOv^$qSJJq0Y8}D1mZRaH{T;B6)lv{ItbN#{^GOB5@_?`H&U=NM4?pAJJQqGAX6yL$_FY1j+y28~a;2OorG{K8{d z6VJo_IC=c!Yvrns)4ekbG*A6I{0iQLdC;kR!j{gtdCE$QLq0Y}X#8&ljn$Wf#tqFk zG=KUXB+Flhb4S32ko!1b8_FN5MQrSo>+FSUH-xelBQAH!onujk6reXO=(ZA)==uOAE= zt0cn&aMz!BE)P$F+NXOyj;r!-fgw@e($%lwebD?$GQ0&-!1Z;wC6%vyb&zg3 zP~BC&Ta)0b{99qED30#ie}Uxu4D1P-d#FuYnv%;Wt;*LPfy!52c26bC--v4}UpkT9 z)ebZl?RNR3RoSxNF7O(t@7x2lHb|CV&pDN+b}|Rl{&a7sjo7_eQvFG%_M|n#+aSBX z2eR$ekSt$)#a3_wXdUq(oCoWHJ8-Rh_5Z`{d}KehAL+`!|5qcdcDw*|@9hkK0hOIB zU%C=&!7K0}NPc%dDnsSJ2=hVftU+MuvdUL~t~Mx{e+ym8cln3=z$UZwpWM%pJQsoV zC|mv%HUP<>c9pFEikwqFuKwpHP(RlO|AbEUcM9e|&S&+1x~@8?4XItI50fs`hiwMB zzkK~mKN>fG4U$3aN&T^OSFHT|h~xS{8v_!1OVa0o@DThLTHphC6m0yFyh65l3N&_V zOwhSP~%EQV~Tl@+%gVMbSC%`DMIDYx+_n!ydd-uZbVDk^fSAV8*pM`c%o*F0q z1WNM+tfvfdeWasF(RHO$ydyy8UA!ob?j_}a2qfoUety!CY@>eZv#=t}1ledi@bmQ3 zDgP5edXVh*!@gkiKR<4qN35Vl^^$$n-@FAXPvy@5)lKyp0-e%ZIC9s)Jsn;F?SpM= zW#I3W&d&QTacbbF@DWJ=>Z_!Gp*DIss2`2n0_!dL2SZrLNzPrL@Osec{`bpD^GA6M z$K4+u1dW-e!9E~6NG|npDReIJ%^tO(wPuHVK+1Dz*bD9k zyZ0oEWV#9Tv#7EhCu-n%1g0tA!K#iC#<1c(#7(JKD8f(c0jCPsX-{+pCE8DHsW|_9;}?h)r;R z32H0WpSo*FWkm5U-717n0=20h!(Fhl(%`NMy6-Hm%PI=14XCXj4_Ct&SRH1A+oQ+* z4tyPSFDbs|GZFteAY1(q6i3%o-W;&3_2{WcAb2Bla1R|2I``I3KV z<+4{&P(Ux zp*{+0T$=@Jf$r4_ptx#(l27(g9+`RormuR4tb zwY@b!ajg9)&voDtI2;~^ox#deUXx%Zd1tEh6P5$jO~mQk z4HVv6I;VUk+c4M|E`>jUWL10Xl1}N{8rdWLBKxH~2f>gDoDjQ5F8+1#j%DX$%-MLN Rp7?Y|pC(o=%?&~D{{dv=3{wCA literal 0 HcmV?d00001 From 40c911ecdeaa4c7433b26c78e82b946002c92fed Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Fri, 31 Oct 2025 22:39:28 +0100 Subject: [PATCH 06/10] new logo --- docs/_static/logo-dark.svg | 157 +++++++++++++++---------------------- docs/_static/logo.svg | 157 +++++++++++++++---------------------- 2 files changed, 126 insertions(+), 188 deletions(-) diff --git a/docs/_static/logo-dark.svg b/docs/_static/logo-dark.svg index 2a51040..3848b20 100644 --- a/docs/_static/logo-dark.svg +++ b/docs/_static/logo-dark.svg @@ -2,100 +2,69 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - + transform="translate(-30.378231,-80.314021)"> diff --git a/docs/_static/logo.svg b/docs/_static/logo.svg index 71ce54f..f7bf6e6 100644 --- a/docs/_static/logo.svg +++ b/docs/_static/logo.svg @@ -2,100 +2,69 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - + transform="translate(-30.378231,-80.314021)"> From ab53c8341642af5d154c4e90a2b5b8b35a9593d8 Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Fri, 31 Oct 2025 22:58:32 +0100 Subject: [PATCH 07/10] replacement -> clone --- .copier-answers.yml | 2 +- README.md | 2 +- docs/index.md | 2 +- pyproject.toml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.copier-answers.yml b/.copier-answers.yml index 87f96d4..185c203 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -1,7 +1,7 @@ # Changes here will be overwritten by Copier; NEVER EDIT MANUALLY _commit: 47497b5 _src_path: gh:scipp/copier_template -description: Matplotlib replacement for Jupyter that uses WebGL via Pythreejs +description: Matplotlib clone for Jupyter that uses WebGL via Pythreejs max_python: '3.13' min_python: '3.11' namespace_package: '' diff --git a/README.md b/README.md index 8d6989b..24a6ab4 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ ## About -Matplotlib replacement for Jupyter that uses WebGL via Pythreejs +Matplotlib clone for Jupyter that uses WebGL via Pythreejs ## Installation diff --git a/docs/index.md b/docs/index.md index 208ef8e..cefe54c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -24,7 +24,7 @@ # {transparent}`Matplotgl`
- Matplotlib replacement for Jupyter that uses WebGL via Pythreejs + Matplotlib clone for Jupyter that uses WebGL via Pythreejs

diff --git a/pyproject.toml b/pyproject.toml index 7d871b9..278320d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta" [project] name = "matplotgl" -description = "Matplotlib replacement for Jupyter that uses WebGL via Pythreejs" +description = "Matplotlib clone for Jupyter that uses WebGL via Pythreejs" authors = [{ name = "Scipp contributors" }] license = "BSD-3-Clause" license-files = ["LICENSE"] From 2be649eabb37919f814ef7877d2168c877e093c6 Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Fri, 31 Oct 2025 23:06:36 +0100 Subject: [PATCH 08/10] cursor label fixed width --- src/matplotgl/axes.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/matplotgl/axes.py b/src/matplotgl/axes.py index 46cb690..072157c 100644 --- a/src/matplotgl/axes.py +++ b/src/matplotgl/axes.py @@ -135,7 +135,12 @@ def __init__(self, *, ax: MplAxes, figure=None) -> None: ) self._margins["cursor"] = ipw.Label( "(0.00, 0.00)", - layout={"grid_area": "cursor", "padding": "0", "margin": "0"}, + layout={ + "grid_area": "cursor", + "padding": "0", + "margin": "0", + "width": "80px", + }, ) if figure is not None: From b9c8096dc89934927687c295918077b6374c5b5b Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Fri, 31 Oct 2025 23:11:44 +0100 Subject: [PATCH 09/10] update favicon --- docs/_static/favicon.ico | Bin 137750 -> 137750 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/_static/favicon.ico b/docs/_static/favicon.ico index af3f7a3142ff9087f812789e8ae0c687b469892e..31c6f224486374a6d0d9117668b7e13c79a59c42 100644 GIT binary patch literal 137750 zcmeEv1+*3A-uD9nN4?fnuPEJdy1To(ySux);B*HkI2~|k4j?6I04jDPV56uY4QIaJ ze>VFx=zU*feQUk5*6i7P_QW&KzjGLy!RD~+Y=-R;w&u|pERZqg?JfA-U&~lI_GxS1 z|6i9e#nu^2TKfL~D;e`VhclPl|NRVOb7s$E&tOZ}3!cT;mjBFTYjDkMtk}u#r?2$w zlYcXQ75x6c&;Q?Npr$#8scJf~=)`yn6APPjGV&^%v4zc>vB^mun|HQ7QB;}3IPTv6 z?~nO^FTXu0a{AMcMPC2-6OmUx_(J5wyB9>> z_~4w#7Z*Md`SPpxMJ{}O2J7osUlqCV%^{JC-y9VA>brv?-(K1`=bKA=agAMbu3Xzb z=hoeAv+r@+W^>%`SsZud5sv#}Chj*wa8GXfLH*y}DKoIHypXkYR6XMx98#>LqW+VP_Y+-7c<@uzpHrm`+M&q-JtvoN7Wwl45LHx@<&B zoHzds8 z&>AssLu=HF8`@&#wzS2+(A=8vd{b-ca}66Z|6RKw|Cy?$lBcSgE1xQFYJ8%&Ves*F zjaweiX*l^!%`}2ZifrA{!5#6X`y3PGrlgpNVuFJTKC||Ds6ao^M4ew_O&g z-F;`yru{EJlbV|qYG!T!-LhrNM)?5G4}cE~7tG^i

hYc>44gR}_g(2mHp?e0Ju& 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

9sQrndGKtYaxpn3t@`;9A5OPXO&A7Tj$<-DvG2 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 literal 137750 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 Rp7?Y|pC(o=%?&~D{{dv=3{wCA From 60bef85106c8d2e4bd6dc97012e3fd1f9ff1f1be Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Fri, 31 Oct 2025 23:20:48 +0100 Subject: [PATCH 10/10] spine linewidth --- src/matplotgl/axes.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/matplotgl/axes.py b/src/matplotgl/axes.py index 072157c..6faf194 100644 --- a/src/matplotgl/axes.py +++ b/src/matplotgl/axes.py @@ -22,6 +22,7 @@ def __init__(self, *, ax: MplAxes, figure=None) -> None: self._ymin = 0.0 self._ymax = 1.0 self._fig = None + self._spine_linewidth = 1.0 self._ax = ax self._artists = [] self.lines = [] @@ -341,13 +342,14 @@ def _make_xticks(self): bottom_string = ( f'' + f'style="stroke:black;stroke-width:{self._spine_linewidth}" />' ) self._margins["topspine"].value = ( f'' f'' + f'y2="{self._thin_margin}" style="stroke:black;stroke-width:' + f'{self._spine_linewidth}" />' ) for tick, label in zip(xticks_axes, xlabels, strict=True): @@ -394,13 +396,13 @@ def _make_yticks(self): f'' f'' + f'style="stroke:black;stroke-width:{self._spine_linewidth}" />' ) self._margins["rightspine"].value = ( f'' f'' + f'style="stroke:black;stroke-width:{self._spine_linewidth}" />' ) for tick, label in zip(yticks_axes, ytexts, strict=True):