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 eaf4437

Browse filesBrowse files
committed
Deprecate setting Axis.major.locator to non-Locator; idem for Formatters
See changelog. This is so that we can actually add new APIs to the base class (e.g. format_ticks; tick_deconflict (however that one ends up being named) and actually benefit from it in the rest of the codebase without worrying that third-party locators/formatters do not inherit from the base class (note that inheriting from the base class does not preclude third-party locators/formatters from completely redefining all methods, so this does not limit them).
1 parent c94d0ed commit eaf4437
Copy full SHA for eaf4437

File tree

Expand file treeCollapse file tree

2 files changed

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

2 files changed

+38
-2
lines changed
+8Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Deprecations
2+
````````````
3+
4+
Setting ``Axis.major.locator``, ``Axis.minor.locator``, ``Axis.major.formatter``
5+
or ``Axis.minor.formatter`` to an object that is not a subclass of `Locator` or
6+
`Formatter` (respectively) is deprecated. Note that these attributes should
7+
usually be set using `Axis.set_major_locator`, `Axis.set_minor_locator`, etc.
8+
which already raise an exception when an object of the wrong class is passed.

‎lib/matplotlib/axis.py

Copy file name to clipboardExpand all lines: lib/matplotlib/axis.py
+30-2Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -640,8 +640,36 @@ class Ticker(object):
640640
formatter : `matplotlib.ticker.Formatter` subclass
641641
Determines the format of the tick labels.
642642
"""
643-
locator = None
644-
formatter = None
643+
644+
def __init__(self):
645+
self._locator = None
646+
self._formatter = None
647+
648+
@property
649+
def locator(self):
650+
return self._locator
651+
652+
@locator.setter
653+
def locator(self, locator):
654+
if not isinstance(locator, mticker.Locator):
655+
cbook.warn_deprecated(
656+
"3.2", message="Support for locators that do not subclass "
657+
"matplotlib.ticker.Locator is deprecated since %(since)s and "
658+
"support for them will be removed %(removal)s.")
659+
self._locator = locator
660+
661+
@property
662+
def formatter(self):
663+
return self._formatter
664+
665+
@formatter.setter
666+
def formatter(self, formatter):
667+
if not isinstance(formatter, mticker.Formatter):
668+
cbook.warn_deprecated(
669+
"3.2", message="Support for formatters that do not subclass "
670+
"matplotlib.ticker.Formatter is deprecated since %(since)s "
671+
"and support for them will be removed %(removal)s.")
672+
self._formatter = formatter
645673

646674

647675
class _LazyTickList(object):

0 commit comments

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