Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions dateparser/date.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@ def date_range(begin, end, **kwargs):
step = relativedelta(**kwargs) if kwargs else relativedelta(days=1)

date = begin
if date + step <= date:
raise ValueError("date_range step must be positive")

while date < end:
yield date
date += step
Expand Down
14 changes: 14 additions & 0 deletions tests/test_date.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,20 @@ def test_should_reject_easily_mistaken_dateutil_arguments(self, invalid_period):
)
self.then_period_was_rejected(invalid_period)

@parameterized.expand(
[
param(step={"months": 0}),
param(step={"days": -1}),
]
)
def test_should_reject_steps_that_do_not_advance(self, step):
with pytest.raises(ValueError, match="date_range step must be positive"):
next(
date.date_range(
datetime(2014, 6, 15), datetime(2014, 6, 25), **step
)
)

def when_date_range_generated(self, begin, end, **size):
try:
self.result = list(date.date_range(begin, end, **size))
Expand Down
Loading