Skip to content

Commit 13937e6

Browse files
mshuffettsdispater
authored andcommitted
Added __eq__ and __hash__ to Period (#207)
1 parent ddeab51 commit 13937e6

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

pendulum/period.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,3 +346,9 @@ def __reduce__(self):
346346

347347
def __reduce_ex__(self, protocol):
348348
return self.__class__, self._getstate(protocol)
349+
350+
def __hash__(self):
351+
return hash((self.start, self.end, self._absolute))
352+
353+
def __eq__(self, other):
354+
return (self.start, self.end, self._absolute) == (other.start, other.end, other._absolute)

tests/period/test_hashing.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import pendulum
2+
3+
4+
def test_periods_with_same_duration_and_different_dates():
5+
day1 = pendulum.DateTime(2018, 1, 1)
6+
day2 = pendulum.DateTime(2018, 1, 2)
7+
day3 = pendulum.DateTime(2018, 1, 2)
8+
9+
period1 = day2 - day1
10+
period2 = day3 - day2
11+
12+
assert period1 != period2
13+
assert len({period1, period2}) == 2
14+
15+
16+
def test_periods_with_same_dates():
17+
period1 = pendulum.DateTime(2018, 1, 2) - pendulum.DateTime(2018, 1, 1)
18+
period2 = pendulum.DateTime(2018, 1, 2) - pendulum.DateTime(2018, 1, 1)
19+
20+
assert period1 == period2
21+
assert len({period1, period2}) == 1

0 commit comments

Comments
 (0)