Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
devel:languages:python:numeric
python-mplcursors
mplcursors-10b553e-mpl3.9-pytest8.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File mplcursors-10b553e-mpl3.9-pytest8.patch of Package python-mplcursors
From 10b553e7a430f69c1da16e9279c44dd665fd3787 Mon Sep 17 00:00:00 2001 From: Antony Lee <anntzer.lee@gmail.com> Date: Mon, 8 Apr 2024 11:58:04 +0200 Subject: [PATCH] Fixes for mpl 3.9, pytest 8, GHA node.js 20. --- ##.github/workflows/build.yml | 19 ++++++++++--------- ##CHANGELOG.rst | 5 +++++ ##pyproject.toml | 2 +- src/mplcursors/_pick_info.py | 23 ++++++++++++++--------- tests/test_mplcursors.py | 17 ++++------------- 5 files changed, 34 insertions(+), 32 deletions(-) --- a/src/mplcursors/_pick_info.py +++ b/src/mplcursors/_pick_info.py @@ -19,6 +19,7 @@ from matplotlib.backend_bases import RendererBase from matplotlib.collections import ( LineCollection, PatchCollection, PathCollection) +from matplotlib.colorbar import Colorbar from matplotlib.container import BarContainer, ErrorbarContainer, StemContainer from matplotlib.figure import Figure from matplotlib.image import AxesImage @@ -513,14 +514,18 @@ def wrapper(*args, **kwargs): return wrapper -def _format_coord_unspaced(ax, xy): - # Un-space-pad, remove empty coordinates from the output of - # `format_{x,y}data`, and rejoin with newlines. - return "\n".join( - line for line, empty in zip( - re.split(",? +", ax.format_coord(*xy)), - itertools.chain(["x=", "y=", "z="], itertools.repeat(None))) - if line != empty).rstrip() +def _format_coord_unspaced(ax, pos): + # This used to directly post-process the output of format_coord(), but got + # switched to handling special projections separately due to the change in + # formatting for rectilinear coordinates. + if ax.name == "polar": + return ax.format_coord(*pos).replace(", ", "\n") + elif ax.name == "3d": # Need to retrieve the actual line data coordinates. + warnings.warn("3d coordinates not supported yet") + return "" + else: + x, y = pos + return f"x={ax.format_xdata(x)}\ny={ax.format_ydata(y)}" @functools.singledispatch @@ -547,7 +552,7 @@ def _format_scalarmappable_value(artist, idx): # matplotlib/matplotlib#12473. if not artist.colorbar: fig = Figure() ax = fig.subplots() - artist.colorbar = fig.colorbar(artist, cax=ax) + artist.colorbar = Colorbar(ax, artist) # This hack updates the ticks without actually paying the cost of # drawing (RendererBase.draw_path raises NotImplementedError). try: diff --git a/tests/test_mplcursors.py b/tests/test_mplcursors.py index 2ff52fa..0beeeca 100644 --- a/tests/test_mplcursors.py +++ b/tests/test_mplcursors.py @@ -1,3 +1,4 @@ +from contextlib import ExitStack import copy import functools import gc @@ -46,12 +47,6 @@ def cleanup(): plt.close("all") -def _internal_warnings(record): - return [ - warning for warning in record - if Path(mplcursors.__file__).parent in Path(warning.filename).parents] - - def _process_event(name, ax, coords, *args): ax.viewLim # unstale viewLim. if name == "__mouse_click__": @@ -244,9 +239,7 @@ def test_nan(ax, plot_args, click, targets): def test_repeated_point(ax): ax.plot([0, 1, 1, 2], [0, 1, 1, 2]) cursor = mplcursors.cursor() - with pytest.warns(None) as record: - _process_event("__mouse_click__", ax, (.5, .5), 1) - assert not _internal_warnings(record) + _process_event("__mouse_click__", ax, (.5, .5), 1) # Should not warn. @pytest.mark.parametrize("origin", ["lower", "upper"]) @@ -388,8 +381,7 @@ def test_dataless_errorbar(ax): def test_stem(ax): try: # stem use_line_collection API change. - with pytest.warns(None): - ax.stem([1, 2, 3], use_line_collection=True) + ax.stem([1, 2, 3], use_line_collection=True) except TypeError: ax.stem([1, 2, 3]) cursor = mplcursors.cursor() @@ -409,10 +401,9 @@ def test_stem(ax): def test_misc_artists(ax, plotter, warns): plotter(ax) cursor = mplcursors.cursor() - with pytest.warns(None) as record: + with pytest.warns(UserWarning) if warns else ExitStack(): _process_event("__mouse_click__", ax, (.5, .5), 1) assert len(cursor.selections) == 0 - assert len(_internal_warnings(record)) == warns def test_indexless_projections(fig):
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor