diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fb79b45..78476fd8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Fixed - Fixed ISO week dates not being parsed properly in `fom_format()`. +- Fixed period `==` comparison raising an exception when compared with other types. ## [2.0.4] - 2018-10-30 diff --git a/pendulum/period.py b/pendulum/period.py index 31a4eb1c..f8fb220c 100644 --- a/pendulum/period.py +++ b/pendulum/period.py @@ -372,8 +372,11 @@ def __hash__(self): return hash((self.start, self.end, self._absolute)) def __eq__(self, other): - return (self.start, self.end, self._absolute) == ( - other.start, - other.end, - other._absolute, - ) + try: + return (self.start, self.end, self._absolute) == ( + other.start, + other.end, + other._absolute, + ) + except AttributeError: + return NotImplemented diff --git a/tests/period/test_behavior.py b/tests/period/test_behavior.py index 1d1c98b2..0dba7d4e 100644 --- a/tests/period/test_behavior.py +++ b/tests/period/test_behavior.py @@ -40,3 +40,11 @@ def test_comparison_to_timedelta(): period = dt2 - dt1 assert period < timedelta(days=4) + +def test_comparison_with_other(): + dt1 = pendulum.datetime(2016, 11, 18) + dt2 = pendulum.datetime(2016, 11, 20) + p = pendulum.period(dt1, dt2) + + assert p != None + assert not p == None