@@ -129,46 +129,45 @@ def test_resample_timedelta_values():
129129
130130
131131@pytest .mark .parametrize (
132- "freq, resample_freq, start, periods, expected_resample_end" ,
133- [("10S" , "3H" , "8H" , 5040 , "20H" )],
132+ "start, end, freq, resample_freq" ,
133+ [
134+ ("8H" , "21h59min" , "10S" , "3H" ),
135+ ("3H" , "22H" , "1H" , "5H" ),
136+ ("527D" , "5006D" , "3D" , "10D" )
137+ ],
134138)
135- def test_resample_timedelta_end_already_included_in_bins (
136- freq , resample_freq , start , periods , expected_resample_end ,
137- ):
139+ def test_resample_timedelta_edge_case (start , end , freq , resample_freq ,):
138140 # GH 30353
139141 # check that the timedelta bins does not contains an extra bin
140- idx = pd .timedelta_range (start = start , freq = freq , periods = periods )
141- s = pd .Series (np .arange (periods ), index = idx )
142+ idx = pd .timedelta_range (start = start , end = end , freq = freq )
143+ s = pd .Series (np .arange (len ( idx ) ), index = idx )
142144 result = s .resample (resample_freq ).min ()
143- expected_index = pd .timedelta_range (
144- freq = resample_freq , start = start , end = expected_resample_end
145- )
145+ expected_index = pd .timedelta_range (freq = resample_freq , start = start , end = end )
146146 tm .assert_index_equal (result .index , expected_index )
147147 assert not np .isnan (result [- 1 ])
148148
149149
150150@pytest .mark .parametrize (
151- "freq, start, end" , [("1day" , "10day" , "2D" )],
151+ "start, end, freq" , [
152+ ("1day" , "10day" , "2D" ),
153+ ("2day" , "30day" , "3D" ),
154+ ("2s" , "50s" , "5s" )
155+ ],
152156)
153- def test_timedelta_range_large_stride (start , end , freq ):
154- # GH 30353
157+ def test_timedelta_range_freq_divide_end (start , end , freq ):
158+ # GH 30353 only the cases where `(end % freq) == 0` used to fail
155159
156- def mock_timedelta_range (
157- start = None , end = None , periods = None , freq = None , name = None , closed = None
158- ):
160+ def mock_timedelta_range (start = None , end = None , ** kwargs ):
159161 epoch = pd .Timestamp (0 )
160162 if start is not None :
161163 start = epoch + pd .Timedelta (start )
162164 if end is not None :
163165 end = epoch + pd .Timedelta (end )
164- res = pd .date_range (
165- start = start , end = end , periods = periods , freq = freq , name = name , closed = closed
166- )
167- res -= epoch
168- res .freq = freq
169- return res
166+ result = pd .date_range (start = start , end = end , ** kwargs ) - epoch
167+ result .freq = freq
168+ return result
170169
171- res = pd .timedelta_range ("1day" , "10day" , freq = "2D" )
172- exp = mock_timedelta_range ("1day" , "10day" , freq = "2D" )
170+ res = pd .timedelta_range (start = start , end = end , freq = freq )
171+ exp = mock_timedelta_range (start = start , end = end , freq = freq )
173172
174- tm .assert_index_equal (res , exp )
173+ tm .assert_index_equal (res , exp )
0 commit comments