Skip to content

Commit a3cc646

Browse files
authored
Improve repr string for OrderedSet and RoutingTable (#1236)
1 parent 77f9e39 commit a3cc646

File tree

2 files changed

+26
-8
lines changed

2 files changed

+26
-8
lines changed

src/neo4j/_routing.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,13 @@ def __init__(self, elements=()):
3232
self._current = None
3333

3434
def __repr__(self):
35+
return (
36+
f"{self.__class__.__name__}(("
37+
f"{', '.join(map(repr, self._elements))}"
38+
f"))"
39+
)
40+
41+
def __str__(self):
3542
return f"{{{', '.join(map(repr, self._elements))}}}"
3643

3744
def __contains__(self, element):
@@ -118,10 +125,14 @@ def __init__(self, *, database, routers=(), readers=(), writers=(), ttl=0):
118125

119126
def __repr__(self):
120127
return (
121-
f"RoutingTable(database={self.database!r}, "
122-
f"routers={self.routers!r}, readers={self.readers!r}, "
123-
f"writers={self.writers!r}, "
124-
f"last_updated_time={self.last_updated_time!r}, ttl={self.ttl!r})"
128+
"RoutingTable("
129+
f"database={self.database!r}, "
130+
f"routers={tuple(self.routers)!r}, "
131+
f"readers={tuple(self.readers)!r}, "
132+
f"writers={tuple(self.writers)!r}, "
133+
f"last_updated_time={self.last_updated_time!r}, "
134+
f"ttl={self.ttl!r}"
135+
")"
125136
)
126137

127138
def __contains__(self, address):

tests/unit/common/io/test_routing.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,6 @@
5858

5959

6060
class TestOrderedSet:
61-
def test_should_repr_as_set(self):
62-
s = OrderedSet([1, 2, 3])
63-
assert repr(s) == "{1, 2, 3}"
64-
6561
def test_should_contain_element(self):
6662
s = OrderedSet([1, 2, 3])
6763
assert 2 in s
@@ -134,6 +130,17 @@ def test_should_be_able_to_replace(self):
134130
s.replace([3, 4, 5])
135131
assert list(s) == [3, 4, 5]
136132

133+
def test_repr(self):
134+
s = OrderedSet([1, 2, 3, "abc"])
135+
expected_repr = "OrderedSet((1, 2, 3, 'abc'))"
136+
assert repr(s) == expected_repr
137+
assert eval(repr(s)) == s
138+
139+
def test_str(self):
140+
s = OrderedSet([1, 2, 3, "abc"])
141+
expected_repr = "{1, 2, 3, 'abc'}"
142+
assert str(s) == expected_repr
143+
137144

138145
class TestRoutingTableConstruction:
139146
def test_should_be_initially_stale(self):

0 commit comments

Comments
 (0)