Skip to content

Commit afd9be0

Browse files
committed
Remove ticker API deprecated in 3.3.
1 parent b51a756 commit afd9be0

File tree

8 files changed

+26
-250
lines changed

8 files changed

+26
-250
lines changed

doc/api/next_api_changes/removals/20095-ES.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,18 @@ Axis and Locator ``pan`` and ``zoom``
33
The unused ``pan`` and ``zoom`` methods of `~.axis.Axis` and `~.ticker.Locator`
44
have been removed. Panning and zooming are now implemented using the
55
``start_pan``, ``drag_pan``, and ``end_pan`` methods of `~.axes.Axes`.
6+
7+
Ticker Locators and Formatters
8+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9+
10+
The following deprecated `.Locator`\s and `.Formatter`\s have been removed:
11+
12+
* ``OldScalarFormatter``, ``IndexFormatter`` and ``IndexDateFormatter``; use
13+
`.FuncFormatter` instead.
14+
* ``OldAutoLocator``
15+
16+
The following deprecated properties and methods have been removed:
17+
18+
* ``DateFormatter.illegal_s``
19+
* ``Locator.refresh()`` and the associated helper methods
20+
``NavigationToolbar2.draw()`` and ``ToolViewsPositions.refresh_locators()``

doc/api/prev_api_changes/api_changes_3.3.0/deprecations.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ The ``on_mappable_changed`` and ``update_bruteforce`` methods of
162162
`~matplotlib.colorbar.Colorbar` are deprecated; both can be replaced by calls
163163
to `~matplotlib.colorbar.Colorbar.update_normal`.
164164

165-
``OldScalarFormatter``, ``IndexFormatter`` and ``DateIndexFormatter``
165+
``OldScalarFormatter``, ``IndexFormatter`` and ``IndexDateFormatter``
166166
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
167167
These formatters are deprecated. Their functionality can be implemented using
168168
e.g. `.FuncFormatter`.

lib/matplotlib/backend_bases.py

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3136,7 +3136,7 @@ def release_pan(self, event):
31363136
'motion_notify_event', self.mouse_move)
31373137
for ax in self._pan_info.axes:
31383138
ax.end_pan()
3139-
self._draw()
3139+
self.canvas.draw_idle()
31403140
self._pan_info = None
31413141
self.push_current()
31423142

@@ -3198,7 +3198,7 @@ def release_zoom(self, event):
31983198
# "cancel" a zoom action by zooming by less than 5 pixels.
31993199
if ((abs(event.x - start_x) < 5 and event.key != "y")
32003200
or (abs(event.y - start_y) < 5 and event.key != "x")):
3201-
self._draw()
3201+
self.canvas.draw_idle()
32023202
self._zoom_info = None
32033203
return
32043204

@@ -3213,7 +3213,7 @@ def release_zoom(self, event):
32133213
(start_x, start_y, event.x, event.y),
32143214
self._zoom_info.direction, event.key, twinx, twiny)
32153215

3216-
self._draw()
3216+
self.canvas.draw_idle()
32173217
self._zoom_info = None
32183218
self.push_current()
32193219

@@ -3228,27 +3228,6 @@ def push_current(self):
32283228
for ax in self.canvas.figure.axes}))
32293229
self.set_history_buttons()
32303230

3231-
# Can be removed once Locator.refresh() is removed, and replaced by an
3232-
# inline call to self.canvas.draw_idle().
3233-
def _draw(self):
3234-
for a in self.canvas.figure.get_axes():
3235-
xaxis = getattr(a, 'xaxis', None)
3236-
yaxis = getattr(a, 'yaxis', None)
3237-
locators = []
3238-
if xaxis is not None:
3239-
locators.append(xaxis.get_major_locator())
3240-
locators.append(xaxis.get_minor_locator())
3241-
if yaxis is not None:
3242-
locators.append(yaxis.get_major_locator())
3243-
locators.append(yaxis.get_minor_locator())
3244-
3245-
for loc in locators:
3246-
mpl.ticker._if_refresh_overridden_call_and_emit_deprec(loc)
3247-
self.canvas.draw_idle()
3248-
3249-
draw = _api.deprecate_privatize_attribute(
3250-
"3.3", alternative="toolbar.canvas.draw_idle()")
3251-
32523231
def _update_view(self):
32533232
"""
32543233
Update the viewlim and position from the view and position stack for

lib/matplotlib/backend_tools.py

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
import matplotlib as mpl
2424
from matplotlib._pylab_helpers import Gcf
25-
from matplotlib import _api, cbook
25+
from matplotlib import cbook
2626

2727

2828
class Cursors(IntEnum): # Must subclass int for the macOS backend.
@@ -553,31 +553,6 @@ def update_home_views(self, figure=None):
553553
if a not in self.home_views[figure]:
554554
self.home_views[figure][a] = a._get_view()
555555

556-
# Can be removed once Locator.refresh() is removed, and replaced by an
557-
# inline call to self.figure.canvas.draw_idle().
558-
def _refresh_locators(self):
559-
for a in self.figure.get_axes():
560-
xaxis = getattr(a, 'xaxis', None)
561-
yaxis = getattr(a, 'yaxis', None)
562-
zaxis = getattr(a, 'zaxis', None)
563-
locators = []
564-
if xaxis is not None:
565-
locators.append(xaxis.get_major_locator())
566-
locators.append(xaxis.get_minor_locator())
567-
if yaxis is not None:
568-
locators.append(yaxis.get_major_locator())
569-
locators.append(yaxis.get_minor_locator())
570-
if zaxis is not None:
571-
locators.append(zaxis.get_major_locator())
572-
locators.append(zaxis.get_minor_locator())
573-
574-
for loc in locators:
575-
mpl.ticker._if_refresh_overridden_call_and_emit_deprec(loc)
576-
self.figure.canvas.draw_idle()
577-
578-
refresh_locators = _api.deprecate_privatize_attribute(
579-
"3.3", alternative="self.figure.canvas.draw_idle()")
580-
581556
def home(self):
582557
"""Recall the first view and position from the stack."""
583558
self.views[self.figure].home()
@@ -732,7 +707,7 @@ def _cancel_action(self):
732707
for zoom_id in self._ids_zoom:
733708
self.figure.canvas.mpl_disconnect(zoom_id)
734709
self.toolmanager.trigger_tool('rubberband', self)
735-
self.toolmanager.get_tool(_views_positions)._refresh_locators()
710+
self.figure.canvas.draw_idle()
736711
self._xypress = None
737712
self._button_pressed = None
738713
self._ids_zoom = []
@@ -859,7 +834,7 @@ def _cancel_action(self):
859834
self._xypress = []
860835
self.figure.canvas.mpl_disconnect(self._id_drag)
861836
self.toolmanager.messagelock.release(self)
862-
self.toolmanager.get_tool(_views_positions)._refresh_locators()
837+
self.figure.canvas.draw_idle()
863838

864839
def _press(self, event):
865840
if event.button == 1:

lib/matplotlib/dates.py

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -166,15 +166,12 @@
166166
date information. This is most useful when used with the `AutoDateLocator`.
167167
168168
* `DateFormatter`: use `~datetime.datetime.strftime` format strings.
169-
170-
* `IndexDateFormatter`: date plots with implicit *x* indexing.
171169
"""
172170

173171
import datetime
174172
import functools
175173
import logging
176174
import math
177-
import re
178175

179176
from dateutil.rrule import (rrule, MO, TU, WE, TH, FR, SA, SU, YEARLY,
180177
MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY,
@@ -189,7 +186,7 @@
189186

190187
__all__ = ('datestr2num', 'date2num', 'num2date', 'num2timedelta', 'drange',
191188
'epoch2num', 'num2epoch', 'set_epoch', 'get_epoch', 'DateFormatter',
192-
'ConciseDateFormatter', 'IndexDateFormatter', 'AutoDateFormatter',
189+
'ConciseDateFormatter', 'AutoDateFormatter',
193190
'DateLocator', 'RRuleLocator', 'AutoDateLocator', 'YearLocator',
194191
'MonthLocator', 'WeekdayLocator',
195192
'DayLocator', 'HourLocator', 'MinuteLocator',
@@ -607,11 +604,6 @@ class DateFormatter(ticker.Formatter):
607604
`~datetime.datetime.strftime` format string.
608605
"""
609606

610-
@_api.deprecated("3.3")
611-
@property
612-
def illegal_s(self):
613-
return re.compile(r"((^|[^%])(%%)*%s)")
614-
615607
def __init__(self, fmt, tz=None, *, usetex=None):
616608
"""
617609
Parameters
@@ -639,33 +631,6 @@ def set_tzinfo(self, tz):
639631
self.tz = tz
640632

641633

642-
@_api.deprecated("3.3")
643-
class IndexDateFormatter(ticker.Formatter):
644-
"""Use with `.IndexLocator` to cycle format strings by index."""
645-
646-
def __init__(self, t, fmt, tz=None):
647-
"""
648-
Parameters
649-
----------
650-
t : list of float
651-
A sequence of dates (floating point days).
652-
fmt : str
653-
A `~datetime.datetime.strftime` format string.
654-
"""
655-
if tz is None:
656-
tz = _get_rc_timezone()
657-
self.t = t
658-
self.fmt = fmt
659-
self.tz = tz
660-
661-
def __call__(self, x, pos=0):
662-
"""Return the label for time *x* at position *pos*."""
663-
ind = int(round(x))
664-
if ind >= len(self.t) or ind <= 0:
665-
return ''
666-
return num2date(self.t[ind], self.tz).strftime(self.fmt)
667-
668-
669634
class ConciseDateFormatter(ticker.Formatter):
670635
"""
671636
A `.Formatter` which attempts to figure out the best format to use for the

lib/matplotlib/pylab.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
from matplotlib.dates import (
1919
date2num, num2date, datestr2num, drange, epoch2num,
20-
num2epoch, DateFormatter, IndexDateFormatter, DateLocator,
20+
num2epoch, DateFormatter, DateLocator,
2121
RRuleLocator, YearLocator, MonthLocator, WeekdayLocator, DayLocator,
2222
HourLocator, MinuteLocator, SecondLocator, rrule, MO, TU, WE, TH, FR,
2323
SA, SU, YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY,

lib/matplotlib/tests/test_ticker.py

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import pytest
99

1010
import matplotlib as mpl
11-
from matplotlib import _api
1211
import matplotlib.pyplot as plt
1312
import matplotlib.ticker as mticker
1413

@@ -444,21 +443,6 @@ def test_set_params(self):
444443
assert sym.numticks == 8
445444

446445

447-
class TestIndexFormatter:
448-
@pytest.mark.parametrize('x, label', [(-2, ''),
449-
(-1, 'label0'),
450-
(0, 'label0'),
451-
(0.5, 'label1'),
452-
(1, 'label1'),
453-
(1.5, 'label2'),
454-
(2, 'label2'),
455-
(2.5, '')])
456-
def test_formatting(self, x, label):
457-
with _api.suppress_matplotlib_deprecation_warning():
458-
formatter = mticker.IndexFormatter(['label0', 'label1', 'label2'])
459-
assert formatter(x) == label
460-
461-
462446
class TestScalarFormatter:
463447
offset_data = [
464448
(123, 189, 0),

0 commit comments

Comments
 (0)