We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 660c6b9 commit 1fabebaCopy full SHA for 1fabeba
pendulum/period.py
@@ -98,10 +98,14 @@ def xrange(self, unit):
98
op = operator.ge
99
100
start, end = self.start, self.end
101
+
102
+ i = 1
103
while op(start, end):
104
yield start
105
- start = getattr(start, method)(**{unit: 1})
106
+ start = getattr(self.start, method)(**{unit: i})
107
108
+ i += 1
109
110
def intersect(self, *periods):
111
"""
tests/period_tests/test_range.py
@@ -73,3 +73,22 @@ def test_contains_with_datetime(self):
73
p = Period(dt1, dt2)
74
dt = datetime(2000, 1, 7)
75
self.assertTrue(dt in p)
76
77
+ def test_range_months_overflow(self):
78
+ dt1 = Pendulum(2016, 1, 30, tzinfo='America/Sao_Paulo')
79
+ dt2 = dt1.add(months=4)
80
81
+ p = Period(dt1, dt2)
82
+ r = p.range('months')
83
+ self.assertPendulum(r[0], 2016, 1, 30, 0, 0, 0)
84
+ self.assertPendulum(r[-1], 2016, 5, 30, 0, 0, 0)
85
86
+ def test_range_with_dst(self):
87
+ dt1 = Pendulum(2016, 10, 14, tzinfo='America/Sao_Paulo')
88
+ dt2 = dt1.add(weeks=1)
89
90
91
+ r = p.range('days')
92
+ self.assertPendulum(r[0], 2016, 10, 14, 0, 0, 0)
93
+ self.assertPendulum(r[2], 2016, 10, 16, 1, 0, 0)
94
+ self.assertPendulum(r[-1], 2016, 10, 21, 0, 0, 0)
0 commit comments