Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 925b056

Browse filesBrowse files
authored
Merge pull request #21584 from anntzer/gmf
Move towards having get_shared_{x,y}_axes return immutable views.
2 parents fd4cce7 + f25782f commit 925b056
Copy full SHA for 925b056

File tree

Expand file treeCollapse file tree

3 files changed

+38
-4
lines changed
Filter options
Expand file treeCollapse file tree

3 files changed

+38
-4
lines changed
+6Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Modifications to the Groupers returned by ``get_shared_x_axes`` and ``get_shared_y_axes``
2+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3+
... are deprecated. In the future, these methods will return immutable views
4+
on the grouper structures. Note that previously, calling e.g. ``join()``
5+
would already fail to set up the correct structures for sharing axes; use
6+
`.Axes.sharex` or `.Axes.sharey` instead.

‎lib/matplotlib/axes/_base.py

Copy file name to clipboardExpand all lines: lib/matplotlib/axes/_base.py
+4-4Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4603,9 +4603,9 @@ def twiny(self):
46034603
return ax2
46044604

46054605
def get_shared_x_axes(self):
4606-
"""Return a reference to the shared axes Grouper object for x axes."""
4607-
return self._shared_axes["x"]
4606+
"""Return an immutable view on the shared x-axes Grouper."""
4607+
return cbook.GrouperView(self._shared_axes["x"])
46084608

46094609
def get_shared_y_axes(self):
4610-
"""Return a reference to the shared axes Grouper object for y axes."""
4611-
return self._shared_axes["y"]
4610+
"""Return an immutable view on the shared y-axes Grouper."""
4611+
return cbook.GrouperView(self._shared_axes["y"])

‎lib/matplotlib/cbook/__init__.py

Copy file name to clipboardExpand all lines: lib/matplotlib/cbook/__init__.py
+28Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -906,6 +906,34 @@ def get_siblings(self, a):
906906
return [x() for x in siblings]
907907

908908

909+
class GrouperView:
910+
"""Immutable view over a `.Grouper`."""
911+
912+
def __init__(self, grouper):
913+
self._grouper = grouper
914+
915+
class _GrouperMethodForwarder:
916+
def __init__(self, deprecated_kw=None):
917+
self._deprecated_kw = deprecated_kw
918+
919+
def __set_name__(self, owner, name):
920+
wrapped = getattr(Grouper, name)
921+
forwarder = functools.wraps(wrapped)(
922+
lambda self, *args, **kwargs: wrapped(
923+
self._grouper, *args, **kwargs))
924+
if self._deprecated_kw:
925+
forwarder = _api.deprecated(**self._deprecated_kw)(forwarder)
926+
setattr(owner, name, forwarder)
927+
928+
__contains__ = _GrouperMethodForwarder()
929+
__iter__ = _GrouperMethodForwarder()
930+
joined = _GrouperMethodForwarder()
931+
get_siblings = _GrouperMethodForwarder()
932+
clean = _GrouperMethodForwarder(deprecated_kw=dict(since="3.6"))
933+
join = _GrouperMethodForwarder(deprecated_kw=dict(since="3.6"))
934+
remove = _GrouperMethodForwarder(deprecated_kw=dict(since="3.6"))
935+
936+
909937
def simple_linear_interpolation(a, steps):
910938
"""
911939
Resample an array with ``steps - 1`` points between original point pairs.

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.