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

Skip to content

Commit 8a27054

Browse files
authored
Merge pull request #10772 from jklymak/api-check-locatorargs
API: check locator and formatter args when passed
2 parents b2782e0 + a6651fe commit 8a27054

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

lib/matplotlib/axis.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1568,6 +1568,9 @@ def set_major_formatter(self, formatter):
15681568
15691569
ACCEPTS: A :class:`~matplotlib.ticker.Formatter` instance
15701570
"""
1571+
if not isinstance(formatter, mticker.Formatter):
1572+
raise TypeError("formatter argument should be instance of "
1573+
"matplotlib.ticker.Formatter")
15711574
self.isDefault_majfmt = False
15721575
self.major.formatter = formatter
15731576
formatter.set_axis(self)
@@ -1579,6 +1582,9 @@ def set_minor_formatter(self, formatter):
15791582
15801583
ACCEPTS: A :class:`~matplotlib.ticker.Formatter` instance
15811584
"""
1585+
if not isinstance(formatter, mticker.Formatter):
1586+
raise TypeError("formatter argument should be instance of "
1587+
"matplotlib.ticker.Formatter")
15821588
self.isDefault_minfmt = False
15831589
self.minor.formatter = formatter
15841590
formatter.set_axis(self)
@@ -1590,6 +1596,9 @@ def set_major_locator(self, locator):
15901596
15911597
ACCEPTS: a :class:`~matplotlib.ticker.Locator` instance
15921598
"""
1599+
if not isinstance(locator, mticker.Locator):
1600+
raise TypeError("formatter argument should be instance of "
1601+
"matplotlib.ticker.Locator")
15931602
self.isDefault_majloc = False
15941603
self.major.locator = locator
15951604
locator.set_axis(self)
@@ -1601,6 +1610,9 @@ def set_minor_locator(self, locator):
16011610
16021611
ACCEPTS: a :class:`~matplotlib.ticker.Locator` instance
16031612
"""
1613+
if not isinstance(locator, mticker.Locator):
1614+
raise TypeError("formatter argument should be instance of "
1615+
"matplotlib.ticker.Locator")
16041616
self.isDefault_minloc = False
16051617
self.minor.locator = locator
16061618
locator.set_axis(self)

lib/matplotlib/tests/test_ticker.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -728,3 +728,27 @@ def test_latex(self, is_latex, usetex, expected):
728728
fmt = mticker.PercentFormatter(symbol='\\{t}%', is_latex=is_latex)
729729
with matplotlib.rc_context(rc={'text.usetex': usetex}):
730730
assert fmt.format_pct(50, 100) == expected
731+
732+
733+
def test_majformatter_type():
734+
fig, ax = plt.subplots()
735+
with pytest.raises(TypeError):
736+
ax.xaxis.set_major_formatter(matplotlib.ticker.LogLocator())
737+
738+
739+
def test_minformatter_type():
740+
fig, ax = plt.subplots()
741+
with pytest.raises(TypeError):
742+
ax.xaxis.set_minor_formatter(matplotlib.ticker.LogLocator())
743+
744+
745+
def test_majlocator_type():
746+
fig, ax = plt.subplots()
747+
with pytest.raises(TypeError):
748+
ax.xaxis.set_major_locator(matplotlib.ticker.LogFormatter())
749+
750+
751+
def test_minlocator_type():
752+
fig, ax = plt.subplots()
753+
with pytest.raises(TypeError):
754+
ax.xaxis.set_minor_locator(matplotlib.ticker.LogFormatter())

0 commit comments

Comments
 (0)