Skip to content

Commit 52bfd15

Browse files
committed
re-phrase whatsnew; put test cases in paraterize
1 parent 94a8fad commit 52bfd15

File tree

2 files changed

+94
-92
lines changed

2 files changed

+94
-92
lines changed

doc/source/whatsnew/v1.3.0.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -974,7 +974,7 @@ Other
974974
- Bug in :meth:`DataFrame.convert_dtypes` incorrectly raised ValueError when called on an empty DataFrame (:issue:`40393`)
975975
- Bug in :meth:`DataFrame.clip` not interpreting missing values as no threshold (:issue:`40420`)
976976
- Bug in :class:`Series` backed by :class:`DatetimeArray` or :class:`TimedeltaArray` sometimes failing to set the array's ``freq`` to ``None`` (:issue:`41425`)
977-
- Bug in :meth:`_CustomBusinessMonth.apply` not applying extra offset when initially rolled date `new` is already a business day (:issue:`41356`)
977+
- Bug in :meth:`CustomBusinessMonthBegin.apply` (:meth:`CustomBusinessMonthEnd.apply`) not applying the extra ``offset`` parameter when beginning (end) of the target month is already a business day (:issue:`41356`)
978978

979979
.. ---------------------------------------------------------------------------
980980

pandas/tests/tseries/offsets/test_month.py

+93-91
Original file line numberDiff line numberDiff line change
@@ -205,51 +205,52 @@ def test_datetimeindex(self):
205205
0
206206
] == datetime(2012, 1, 31)
207207

208-
apply_with_extra_offset_cases: _ApplyCases = [
209-
(
210-
CBMonthEnd(n=1, offset=timedelta(days=5)),
211-
{
212-
datetime(2021, 3, 1): datetime(2021, 3, 31) + timedelta(days=5),
213-
datetime(2021, 4, 17): datetime(2021, 4, 30) + timedelta(days=5),
214-
},
215-
),
216-
(
217-
CBMonthEnd(n=2, offset=timedelta(days=40)),
218-
{
219-
datetime(2021, 3, 10): datetime(2021, 4, 30) + timedelta(days=40),
220-
datetime(2021, 4, 30): datetime(2021, 6, 30) + timedelta(days=40),
221-
},
222-
),
223-
(
224-
CBMonthEnd(n=1, offset=timedelta(days=-5)),
225-
{
226-
datetime(2021, 3, 1): datetime(2021, 3, 31) - timedelta(days=5),
227-
datetime(2021, 4, 11): datetime(2021, 4, 30) - timedelta(days=5),
228-
},
229-
),
230-
(
231-
-2 * CBMonthEnd(n=1, offset=timedelta(days=10)),
232-
{
233-
datetime(2021, 3, 1): datetime(2021, 1, 29) + timedelta(days=10),
234-
datetime(2021, 4, 3): datetime(2021, 2, 26) + timedelta(days=10),
235-
},
236-
),
237-
(
238-
CBMonthEnd(n=0, offset=timedelta(days=1)),
239-
{
240-
datetime(2021, 3, 2): datetime(2021, 3, 31) + timedelta(days=1),
241-
datetime(2021, 4, 1): datetime(2021, 4, 30) + timedelta(days=1),
242-
},
243-
),
244-
(
245-
CBMonthEnd(n=1, holidays=["2021-03-31"], offset=timedelta(days=1)),
246-
{
247-
datetime(2021, 3, 2): datetime(2021, 3, 30) + timedelta(days=1),
248-
},
249-
),
250-
]
251-
252-
@pytest.mark.parametrize("case", apply_with_extra_offset_cases)
208+
@pytest.mark.parametrize(
209+
"case",
210+
[
211+
(
212+
CBMonthEnd(n=1, offset=timedelta(days=5)),
213+
{
214+
datetime(2021, 3, 1): datetime(2021, 3, 31) + timedelta(days=5),
215+
datetime(2021, 4, 17): datetime(2021, 4, 30) + timedelta(days=5),
216+
},
217+
),
218+
(
219+
CBMonthEnd(n=2, offset=timedelta(days=40)),
220+
{
221+
datetime(2021, 3, 10): datetime(2021, 4, 30) + timedelta(days=40),
222+
datetime(2021, 4, 30): datetime(2021, 6, 30) + timedelta(days=40),
223+
},
224+
),
225+
(
226+
CBMonthEnd(n=1, offset=timedelta(days=-5)),
227+
{
228+
datetime(2021, 3, 1): datetime(2021, 3, 31) - timedelta(days=5),
229+
datetime(2021, 4, 11): datetime(2021, 4, 30) - timedelta(days=5),
230+
},
231+
),
232+
(
233+
-2 * CBMonthEnd(n=1, offset=timedelta(days=10)),
234+
{
235+
datetime(2021, 3, 1): datetime(2021, 1, 29) + timedelta(days=10),
236+
datetime(2021, 4, 3): datetime(2021, 2, 26) + timedelta(days=10),
237+
},
238+
),
239+
(
240+
CBMonthEnd(n=0, offset=timedelta(days=1)),
241+
{
242+
datetime(2021, 3, 2): datetime(2021, 3, 31) + timedelta(days=1),
243+
datetime(2021, 4, 1): datetime(2021, 4, 30) + timedelta(days=1),
244+
},
245+
),
246+
(
247+
CBMonthEnd(n=1, holidays=["2021-03-31"], offset=timedelta(days=1)),
248+
{
249+
datetime(2021, 3, 2): datetime(2021, 3, 30) + timedelta(days=1),
250+
},
251+
),
252+
],
253+
)
253254
def test_apply_with_extra_offset(self, case):
254255
offset, cases = case
255256
for base, expected in cases.items():
@@ -392,53 +393,54 @@ def test_datetimeindex(self):
392393
0
393394
] == datetime(2012, 1, 3)
394395

395-
apply_with_extra_offset_cases: _ApplyCases = [
396-
(
397-
CBMonthBegin(n=1, offset=timedelta(days=5)),
398-
{
399-
datetime(2021, 3, 1): datetime(2021, 4, 1) + timedelta(days=5),
400-
datetime(2021, 4, 17): datetime(2021, 5, 3) + timedelta(days=5),
401-
},
402-
),
403-
(
404-
CBMonthBegin(n=2, offset=timedelta(days=40)),
405-
{
406-
datetime(2021, 3, 10): datetime(2021, 5, 3) + timedelta(days=40),
407-
datetime(2021, 4, 30): datetime(2021, 6, 1) + timedelta(days=40),
408-
},
409-
),
410-
(
411-
CBMonthBegin(n=1, offset=timedelta(days=-5)),
412-
{
413-
datetime(2021, 3, 1): datetime(2021, 4, 1) - timedelta(days=5),
414-
datetime(2021, 4, 11): datetime(2021, 5, 3) - timedelta(days=5),
415-
},
416-
),
417-
(
418-
-2 * CBMonthBegin(n=1, offset=timedelta(days=10)),
419-
{
420-
datetime(2021, 3, 1): datetime(2021, 1, 1) + timedelta(days=10),
421-
datetime(2021, 4, 3): datetime(2021, 3, 1) + timedelta(days=10),
422-
},
423-
),
424-
(
425-
CBMonthBegin(n=0, offset=timedelta(days=1)),
426-
{
427-
datetime(2021, 3, 2): datetime(2021, 4, 1) + timedelta(days=1),
428-
datetime(2021, 4, 1): datetime(2021, 4, 1) + timedelta(days=1),
429-
},
430-
),
431-
(
432-
CBMonthBegin(
433-
n=1, holidays=["2021-04-01", "2021-04-02"], offset=timedelta(days=1)
396+
@pytest.mark.parametrize(
397+
"case",
398+
[
399+
(
400+
CBMonthBegin(n=1, offset=timedelta(days=5)),
401+
{
402+
datetime(2021, 3, 1): datetime(2021, 4, 1) + timedelta(days=5),
403+
datetime(2021, 4, 17): datetime(2021, 5, 3) + timedelta(days=5),
404+
},
434405
),
435-
{
436-
datetime(2021, 3, 2): datetime(2021, 4, 5) + timedelta(days=1),
437-
},
438-
),
439-
]
440-
441-
@pytest.mark.parametrize("case", apply_with_extra_offset_cases)
406+
(
407+
CBMonthBegin(n=2, offset=timedelta(days=40)),
408+
{
409+
datetime(2021, 3, 10): datetime(2021, 5, 3) + timedelta(days=40),
410+
datetime(2021, 4, 30): datetime(2021, 6, 1) + timedelta(days=40),
411+
},
412+
),
413+
(
414+
CBMonthBegin(n=1, offset=timedelta(days=-5)),
415+
{
416+
datetime(2021, 3, 1): datetime(2021, 4, 1) - timedelta(days=5),
417+
datetime(2021, 4, 11): datetime(2021, 5, 3) - timedelta(days=5),
418+
},
419+
),
420+
(
421+
-2 * CBMonthBegin(n=1, offset=timedelta(days=10)),
422+
{
423+
datetime(2021, 3, 1): datetime(2021, 1, 1) + timedelta(days=10),
424+
datetime(2021, 4, 3): datetime(2021, 3, 1) + timedelta(days=10),
425+
},
426+
),
427+
(
428+
CBMonthBegin(n=0, offset=timedelta(days=1)),
429+
{
430+
datetime(2021, 3, 2): datetime(2021, 4, 1) + timedelta(days=1),
431+
datetime(2021, 4, 1): datetime(2021, 4, 1) + timedelta(days=1),
432+
},
433+
),
434+
(
435+
CBMonthBegin(
436+
n=1, holidays=["2021-04-01", "2021-04-02"], offset=timedelta(days=1)
437+
),
438+
{
439+
datetime(2021, 3, 2): datetime(2021, 4, 5) + timedelta(days=1),
440+
},
441+
),
442+
],
443+
)
442444
def test_apply_with_extra_offset(self, case):
443445
offset, cases = case
444446
for base, expected in cases.items():

0 commit comments

Comments
 (0)