Skip to content

Commit 6383c07

Browse files
authored
Add equality test (#698)
* Add equality test * Consistency * Implement equality per subclass
1 parent a69761e commit 6383c07

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/pendulum/tz/timezone.py

+6
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ def __new__(cls, key: str) -> Self:
6666
except zoneinfo.ZoneInfoNotFoundError:
6767
raise InvalidTimezone(key)
6868

69+
def __eq__(self, other: object) -> bool:
70+
return isinstance(other, Timezone) and self.key == other.key
71+
6972
@property
7073
def name(self) -> str:
7174
return self.key
@@ -172,6 +175,9 @@ def __init__(self, offset: int, name: str | None = None) -> None:
172175
self._offset = offset
173176
self._utcoffset = _datetime.timedelta(seconds=offset)
174177

178+
def __eq__(self, other: object) -> bool:
179+
return isinstance(other, FixedTimezone) and self._offset == other._offset
180+
175181
@property
176182
def name(self) -> str:
177183
return self._name

tests/tz/test_timezone.py

+10
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ def test_basic_convert():
4242
assert dt.tzinfo.dst(dt) == timedelta(seconds=3600)
4343

4444

45+
def test_equality():
46+
assert timezone("Europe/Paris") == timezone("Europe/Paris")
47+
assert timezone("Europe/Paris") != timezone("Europe/Berlin")
48+
49+
4550
def test_skipped_time_with_pre_rule():
4651
dt = datetime(2013, 3, 31, 2, 30, 45, 123456, fold=0)
4752
tz = timezone("Europe/Paris")
@@ -399,6 +404,11 @@ def test_fixed_timezone():
399404
assert tz2.dst(dt) == timedelta()
400405

401406

407+
def test_fixed_equality():
408+
assert fixed_timezone(19800) == fixed_timezone(19800)
409+
assert fixed_timezone(19800) != fixed_timezone(19801)
410+
411+
402412
def test_just_before_last_transition():
403413
tz = pendulum.timezone("Asia/Shanghai")
404414
dt = datetime(1991, 4, 20, 1, 49, 8, fold=0)

0 commit comments

Comments
 (0)