Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 925b056

Browse 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

File tree

3 files changed

+38
-4
lines changed

3 files changed

+38
-4
lines changed
Lines 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

Lines 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

Lines 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)