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 76a47d9

Browse filesBrowse files
authored
Merge pull request #29956 from timhoffm/mnt-gridspec-update
MNT: make signature of GridSpec.update explicit
2 parents 492a478 + b8673bd commit 76a47d9
Copy full SHA for 76a47d9

File tree

Expand file treeCollapse file tree

6 files changed

+40
-17
lines changed
Filter options
Expand file treeCollapse file tree

6 files changed

+40
-17
lines changed

‎lib/matplotlib/_api/__init__.py

Copy file name to clipboardExpand all lines: lib/matplotlib/_api/__init__.py
+9Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,15 @@
2525
MatplotlibDeprecationWarning)
2626

2727

28+
# A sentinel value for optional arguments, when None cannot be used as
29+
# default because we need to distinguish between None passed explicitly
30+
# and parameter not given. Usage: def foo(arg=_api.UNSET):
31+
class _Unset:
32+
def __repr__(self):
33+
return "<UNSET>"
34+
UNSET = _Unset()
35+
36+
2837
class classproperty:
2938
"""
3039
Like `property`, but also triggers on access via the class, and it is the

‎lib/matplotlib/_api/__init__.pyi

Copy file name to clipboardExpand all lines: lib/matplotlib/_api/__init__.pyi
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ from .deprecation import ( # noqa: F401, re-exported API
1818

1919
_T = TypeVar("_T")
2020

21+
class _Unset: ...
22+
2123
class classproperty(Any):
2224
def __init__(
2325
self,

‎lib/matplotlib/artist.py

Copy file name to clipboardExpand all lines: lib/matplotlib/artist.py
+1-7Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,6 @@ def _stale_axes_callback(self, val):
107107
_XYPair = namedtuple("_XYPair", "x y")
108108

109109

110-
class _Unset:
111-
def __repr__(self):
112-
return "<UNSET>"
113-
_UNSET = _Unset()
114-
115-
116110
class Artist:
117111
"""
118112
Abstract base class for objects that render into a FigureCanvas.
@@ -166,7 +160,7 @@ def _update_set_signature_and_docstring(cls):
166160
"""
167161
cls.set.__signature__ = Signature(
168162
[Parameter("self", Parameter.POSITIONAL_OR_KEYWORD),
169-
*[Parameter(prop, Parameter.KEYWORD_ONLY, default=_UNSET)
163+
*[Parameter(prop, Parameter.KEYWORD_ONLY, default=_api.UNSET)
170164
for prop in ArtistInspector(cls).get_setters()
171165
if prop not in Artist._PROPERTIES_EXCLUDED_FROM_SET]])
172166
cls.set._autogenerated_signature = True

‎lib/matplotlib/artist.pyi

Copy file name to clipboardExpand all lines: lib/matplotlib/artist.pyi
-2Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ class _XYPair(NamedTuple):
2626
x: ArrayLike
2727
y: ArrayLike
2828

29-
class _Unset: ...
30-
3129
class Artist:
3230
zorder: float
3331
stale_callback: Callable[[Artist, bool], None] | None

‎lib/matplotlib/gridspec.py

Copy file name to clipboardExpand all lines: lib/matplotlib/gridspec.py
+17-7Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import matplotlib as mpl
2020
from matplotlib import _api, _pylab_helpers, _tight_layout
21+
from matplotlib._api import UNSET as _UNSET
2122
from matplotlib.transforms import Bbox
2223

2324
_log = logging.getLogger(__name__)
@@ -366,7 +367,8 @@ def __init__(self, nrows, ncols, figure=None,
366367

367368
_AllowedKeys = ["left", "bottom", "right", "top", "wspace", "hspace"]
368369

369-
def update(self, **kwargs):
370+
def update(self, *, left=_UNSET, bottom=_UNSET, right=_UNSET, top=_UNSET,
371+
wspace=_UNSET, hspace=_UNSET):
370372
"""
371373
Update the subplot parameters of the grid.
372374
@@ -377,15 +379,23 @@ def update(self, **kwargs):
377379
----------
378380
left, right, top, bottom : float or None, optional
379381
Extent of the subplots as a fraction of figure width or height.
380-
wspace, hspace : float, optional
382+
wspace, hspace : float or None, optional
381383
Spacing between the subplots as a fraction of the average subplot
382384
width / height.
383385
"""
384-
for k, v in kwargs.items():
385-
if k in self._AllowedKeys:
386-
setattr(self, k, v)
387-
else:
388-
raise AttributeError(f"{k} is an unknown keyword")
386+
if left is not _UNSET:
387+
self.left = left
388+
if bottom is not _UNSET:
389+
self.bottom = bottom
390+
if right is not _UNSET:
391+
self.right = right
392+
if top is not _UNSET:
393+
self.top = top
394+
if wspace is not _UNSET:
395+
self.wspace = wspace
396+
if hspace is not _UNSET:
397+
self.hspace = hspace
398+
389399
for figmanager in _pylab_helpers.Gcf.figs.values():
390400
for ax in figmanager.canvas.figure.axes:
391401
if ax.get_subplotspec() is not None:

‎lib/matplotlib/gridspec.pyi

Copy file name to clipboardExpand all lines: lib/matplotlib/gridspec.pyi
+11-1Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ from typing import Any, Literal, overload
33
from numpy.typing import ArrayLike
44
import numpy as np
55

6+
from matplotlib._api import _Unset
67
from matplotlib.axes import Axes
78
from matplotlib.backend_bases import RendererBase
89
from matplotlib.figure import Figure
@@ -78,7 +79,16 @@ class GridSpec(GridSpecBase):
7879
width_ratios: ArrayLike | None = ...,
7980
height_ratios: ArrayLike | None = ...,
8081
) -> None: ...
81-
def update(self, **kwargs: float | None) -> None: ...
82+
def update(
83+
self,
84+
*,
85+
left: float | None | _Unset = ...,
86+
bottom: float | None | _Unset = ...,
87+
right: float | None | _Unset = ...,
88+
top: float | None | _Unset = ...,
89+
wspace: float | None | _Unset = ...,
90+
hspace: float | None | _Unset = ...,
91+
) -> None: ...
8292
def locally_modified_subplot_params(self) -> list[str]: ...
8393
def tight_layout(
8494
self,

0 commit comments

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