@@ -88,7 +88,6 @@ def test_date2num_masked():
88
88
(False , True , True , False , False , False ,
89
89
True ))
90
90
91
- @pytest .mark .xfail # TODO: un-fail once formatters exist
92
91
def test_timedelta_numpy ():
93
92
# TODO: merge with datetime test?
94
93
# test that numpy timedeltas work properly...
@@ -1571,83 +1570,75 @@ def test_strftimedelta(td, fmt, expected):
1571
1570
1572
1571
1573
1572
@pytest .mark .parametrize (
1574
- "t_delta, fmt, kwargs, expected, expected_offset " ,
1573
+ "t_delta, fmt, expected" ,
1575
1574
[
1576
- [datetime .timedelta (days = 141 ), "%d %day" , {},
1575
+ [datetime .timedelta (days = 141 ), "%d %day" ,
1577
1576
['100 days' , '120 days' , '140 days' , '160 days' , '180 days' ,
1578
- '200 days' , '220 days' , '240 days' , '260 days' ],
1579
- "" ],
1580
-
1581
- # [datetime.timedelta(hours=40), "%H:%m",
1582
- # {'offset_fmt': '%d %day', 'offset_on': 'days'},
1583
- # ['4:00', '8:00', '12:00', '16:00', '20:00', '24:00',
1584
- # '28:00', '32:00', '36:00', '40:00'],
1585
- # "100 days"],
1586
- #
1587
- # [datetime.timedelta(minutes=30), "%M:%s.0",
1588
- # {'offset_fmt': '%d %day, %h:%m', 'offset_on': 'hours'},
1589
- # ['42:00.0', '45:00.0', '48:00.0', '51:00.0', '54:00.0',
1590
- # '57:00.0', '60:00.0', '63:00.0', '66:00.0', '69:00.0'],
1591
- # "100 days, 03:00"],
1592
- #
1593
- # [datetime.timedelta(seconds=30), "%S.%ms",
1594
- # {'offset_fmt': '%d %day, %h:%m', 'offset_on': 'minutes'},
1595
- # ['0.000', '3.000', '6.000', '9.000', '12.000', '15.000',
1596
- # '18.000', '21.000', '24.000', '27.000', '30.000'],
1597
- # "100 days, 03:40"],
1598
- #
1599
- # [datetime.timedelta(microseconds=600), "%S.%ms%us",
1600
- # {'offset_fmt': '%d %day, %h:%m:%s', 'offset_on': 'seconds'},
1601
- # ['0.999900', '1.000000', '1.000100', '1.000200', '1.000300',
1602
- # '1.000400', '1.000500', '1.000600', '1.000700'],
1603
- # "100 days, 03:39:59"]
1577
+ '200 days' , '220 days' , '240 days' , '260 days' ]],
1578
+ [datetime .timedelta (hours = 40 ), "%d %day %h:%m" ,
1579
+ ['100 days 00:00' , '100 days 06:00' , '100 days 12:00' ,
1580
+ '100 days 18:00' , '101 days 00:00' , '101 days 06:00' ,
1581
+ '101 days 12:00' , '101 days 18:00' , '102 days 00:00' ]],
1582
+
1583
+ [datetime .timedelta (minutes = 30 ), "%m:%s.0" ,
1584
+ ['40:00.0' , '45:00.0' , '50:00.0' , '55:00.0' , '00:00.0' ,
1585
+ '05:00.0' , '10:00.0' , '15:00.0' , '20:00.0' ]],
1586
+
1587
+ [datetime .timedelta (seconds = 30 ), "%s.%ms" ,
1588
+ ['00.000' , '05.000' , '10.000' , '15.000' , '20.000' , '25.000' ,
1589
+ '30.000' , '35.000' ]],
1590
+
1591
+ [datetime .timedelta (microseconds = 600 ), "%s.%ms%us" ,
1592
+ ['59.999600' , '59.999800' , '00.000000' , '00.000200' ,
1593
+ '00.000400' , '00.000600' , '00.000800' , '00.001000' ]]
1604
1594
]
1605
1595
)
1606
- def test_timdelta_formatter (t_delta , fmt , kwargs , expected , expected_offset ):
1607
- def _create_timedelta_locator (td1 , td2 , fmt , kwargs ):
1596
+ def test_timdelta_formatter (t_delta , fmt , expected ):
1597
+ def _create_timedelta_locator (td1 , td2 , fmt ):
1608
1598
fig , ax = plt .subplots ()
1609
1599
1610
1600
locator = mdates .AutoTimedeltaLocator ()
1611
- formatter = mdates .TimedeltaFormatter (fmt , ** kwargs )
1601
+ formatter = mdates .TimedeltaFormatter (fmt )
1612
1602
ax .yaxis .set_major_locator (locator )
1613
1603
ax .yaxis .set_major_formatter (formatter )
1614
1604
ax .set_ylim (td1 , td2 )
1615
1605
fig .canvas .draw ()
1616
1606
sts = [st .get_text () for st in ax .get_yticklabels ()]
1617
- offset_text = ax .yaxis .get_offset_text ().get_text ()
1618
- return sts , offset_text
1607
+ return sts
1619
1608
1620
- td1 = datetime .timedelta (days = 100 , hours = 3 , minutes = 40 )
1609
+ td1 = datetime .timedelta (days = 100 , hours = 3 , minutes = 45 )
1621
1610
td2 = td1 + t_delta
1622
- strings , offset_string = _create_timedelta_locator (
1623
- td1 , td2 , fmt , kwargs
1611
+ strings = _create_timedelta_locator (
1612
+ td1 , td2 , fmt
1624
1613
)
1625
1614
assert strings == expected
1626
- assert offset_string == expected_offset
1627
-
1628
1615
1629
- def test_timedelta_formatter_usetex ():
1630
- formatter = mdates .TimedeltaFormatter ("%h:%m" , offset_on = 'days' ,
1631
- offset_fmt = "%d %day" , usetex = True )
1632
- values = [datetime .timedelta (days = 0 , hours = 12 ),
1633
- datetime .timedelta (days = 1 , hours = 0 ),
1634
- datetime .timedelta (days = 1 , hours = 12 ),
1635
- datetime .timedelta (days = 2 , hours = 0 )]
1636
1616
1637
- labels = formatter .format_ticks (mdates .date2num (values ))
1638
-
1639
- start = '$\\ mathdefault{'
1640
- i_start = len (start )
1641
- end = '}$'
1642
- i_end = - len (end )
1617
+ @pytest .mark .parametrize ('delta, expected' , [
1618
+ (datetime .timedelta (days = 200 ),
1619
+ ['%d days' % day for day in range (20 , 261 , 20 )]),
1620
+ (datetime .timedelta (days = 1 ),
1621
+ ['%d days, %02d:00' % (day , hour ) for day , hour in [
1622
+ (39 , 18 ), (40 , 0 ), (40 , 6 ), (40 , 12 ), (40 , 18 ), (41 , 0 ), (41 , 6 )]
1623
+ ]),
1624
+ (datetime .timedelta (hours = 2 ),
1625
+ ['%d days, %02d:%02d' % (day , hour , minu ) for day , hour , minu in [
1626
+ (39 , 23 , 45 ), (40 , 0 , 0 ), (40 , 0 , 15 ), (40 , 0 , 30 ), (40 , 0 , 45 ),
1627
+ (40 , 1 , 0 ), (40 , 1 , 15 ), (40 , 1 , 30 ), (40 , 1 , 45 ), (40 , 2 , 0 ),
1628
+ (40 , 2 , 15 )]
1629
+ ])
1630
+ ])
1631
+ def test_timedelta_formatter_usetex (delta , expected ):
1632
+ style .use ("default" )
1643
1633
1644
- def verify (string ):
1645
- assert string [:i_start ] == start
1646
- assert string [i_end :] == end
1634
+ d1 = datetime .timedelta (days = 40 )
1635
+ d2 = d1 + delta
1647
1636
1648
- # assert ticks are tex formatted
1649
- for lbl in labels :
1650
- verify (lbl )
1637
+ locator = mdates .AutoTimedeltaLocator ()
1638
+ locator .create_dummy_axis ()
1639
+ locator .axis .set_view_interval (mdates .timedelta2num (d1 ),
1640
+ mdates .timedelta2num (d2 ))
1651
1641
1652
- # assert offset is tex formatted
1653
- verify (formatter .get_offset ())
1642
+ formatter = mdates .AutoTimedeltaFormatter (locator , usetex = True )
1643
+ assert [formatter (loc ) for loc in locator ()] == [
1644
+ r'{\fontfamily{\familydefault}\selectfont %s}' % s for s in expected ]
0 commit comments