# being a bit too dynamic
# pylint: disable=E1101
from __future__ import division
+import operator
from distutils.version import LooseVersion
-def _mpl_le_1_2_1():
- try:
- import matplotlib as mpl
- return (str(mpl.__version__) <= LooseVersion('1.2.1') and
+def _mpl_version(version, op):
+ def inner():
+ try:
+ import matplotlib as mpl
+ except ImportError:
+ return False
+ return (op(LooseVersion(mpl.__version__), LooseVersion(version)) and
str(mpl.__version__)[0] != '0')
- except ImportError:
- return False
+ return inner
-def _mpl_ge_1_3_1():
- try:
- import matplotlib
- # The or v[0] == '0' is because their versioneer is
- # messed up on dev
- return (matplotlib.__version__ >= LooseVersion('1.3.1') or
- matplotlib.__version__[0] == '0')
- except ImportError:
- return False
-
-def _mpl_ge_1_4_0():
- try:
- import matplotlib
- return (matplotlib.__version__ >= LooseVersion('1.4') or
- matplotlib.__version__[0] == '0')
- except ImportError:
- return False
-
-
-def _mpl_ge_1_5_0():
- try:
- import matplotlib
- return (matplotlib.__version__ >= LooseVersion('1.5') or
- matplotlib.__version__[0] == '0')
- except ImportError:
- return False
-
-
-def _mpl_ge_2_0_0():
- try:
- import matplotlib
- return matplotlib.__version__ >= LooseVersion('2.0')
- except ImportError:
- return False
-
-
-def _mpl_le_2_0_0():
- try:
- import matplotlib
- return matplotlib.compare_versions('2.0.0', matplotlib.__version__)
- except ImportError:
- return False
-
-
-def _mpl_ge_2_0_1():
- try:
- import matplotlib
- return matplotlib.__version__ >= LooseVersion('2.0.1')
- except ImportError:
- return False
-
-
-def _mpl_ge_2_1_0():
- try:
- import matplotlib
- return matplotlib.__version__ >= LooseVersion('2.1')
- except ImportError:
- return False
+_mpl_ge_1_2_1 = _mpl_version('1.2.1', operator.ge)
+_mpl_le_1_2_1 = _mpl_version('1.2.1', operator.le)
+_mpl_ge_1_3_1 = _mpl_version('1.3.1', operator.ge)
+_mpl_ge_1_4_0 = _mpl_version('1.4.0', operator.ge)
+_mpl_ge_1_4_1 = _mpl_version('1.4.1', operator.ge)
+_mpl_ge_1_5_0 = _mpl_version('1.5.0', operator.ge)
+_mpl_ge_2_0_0 = _mpl_version('2.0.0', operator.ge)
+_mpl_le_2_0_0 = _mpl_version('2.0.0', operator.le)
+_mpl_ge_2_0_1 = _mpl_version('2.0.1', operator.ge)
+_mpl_ge_2_1_0 = _mpl_version('2.1.0', operator.ge)
+_mpl_ge_2_2_0 = _mpl_version('2.2.0', operator.ge)
import numpy as np
from pandas import Index, Series, DataFrame, NaT
-from pandas.compat import is_platform_mac, PY3
+from pandas.compat import PY3
from pandas.core.indexes.datetimes import date_range, bdate_range
from pandas.core.indexes.timedeltas import timedelta_range
from pandas.tseries.offsets import DateOffset
ax.plot(values)
def test_format_timedelta_ticks_narrow(self):
- if is_platform_mac():
- pytest.skip("skip on mac for precision display issue on older mpl")
-
- if self.mpl_ge_2_0_0:
+ if self.mpl_ge_2_2_0:
+ expected_labels = (['-1 days 23:59:59.999999998'] +
+ ['00:00:00.0000000{:0>2d}'.format(2 * i)
+ for i in range(6)])
+ elif self.mpl_ge_2_0_0:
expected_labels = [''] + [
'00:00:00.00000000{:d}'.format(2 * i)
for i in range(5)] + ['']
assert l.get_text() == l_expected
def test_format_timedelta_ticks_wide(self):
- if is_platform_mac():
- pytest.skip("skip on mac for precision display issue on older mpl")
-
if self.mpl_ge_2_0_0:
expected_labels = [
'',
'9 days 06:13:20',
''
]
+ if self.mpl_ge_2_2_0:
+ expected_labels[0] = '-2 days 20:13:20'
+ expected_labels[-1] = '10 days 10:00:00'
else:
expected_labels = [
'00:00:00',