Skip to content

Commit f9f73a5

Browse files
pjruleInnovativeInventor
authored andcommitted
Use __slots__ in Partition
1 parent 4e97d0b commit f9f73a5

File tree

2 files changed

+41
-21
lines changed

2 files changed

+41
-21
lines changed

gerrychain/partition/partition.py

+11-1
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,18 @@ class Partition:
1616
:ivar dict parts: Maps district IDs to the set of nodes in that district.
1717
:ivar dict subgraphs: Maps district IDs to the induced subgraph of that district.
1818
"""
19-
2019
default_updaters = {"cut_edges": cut_edges}
20+
__slots__ = (
21+
'graph',
22+
'subgraphs',
23+
'assignment',
24+
'updaters',
25+
'parent',
26+
'flips',
27+
'flows',
28+
'edge_flows',
29+
'_cache'
30+
)
2131

2232
def __init__(
2333
self, graph=None, assignment=None, updaters=None, parent=None, flips=None

tests/constraints/test_validity.py

+30-20
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,35 @@
1414

1515

1616
@pytest.fixture
17-
def contiguous_partition():
17+
def contiguous_partition_with_flips():
1818
graph = nx.Graph()
1919
graph.add_nodes_from(range(4))
2020
graph.add_edges_from([(0, 1), (1, 2), (2, 3), (3, 0)])
2121
partition = Partition(graph, {0: 0, 1: 1, 2: 1, 3: 0})
2222

2323
# This flip will maintain contiguity.
24-
partition.test_flips = {0: 1}
25-
return partition
24+
return partition, {0: 1}
2625

2726

2827
@pytest.fixture
29-
def discontiguous_partition():
28+
def discontiguous_partition_with_flips():
3029
graph = nx.Graph()
3130
graph.add_nodes_from(range(4))
3231
graph.add_edges_from([(0, 1), (1, 2), (2, 3)])
3332
partition = Partition(graph, {0: 0, 1: 1, 2: 1, 3: 0})
3433

3534
# This flip will maintain discontiguity.
36-
partition.test_flips = {1: 0}
37-
return partition
35+
return partition, {1: 0}
36+
37+
38+
@pytest.fixture
39+
def contiguous_partition(contiguous_partition_with_flips):
40+
return contiguous_partition_with_flips[0]
41+
42+
43+
@pytest.fixture
44+
def discontiguous_partition(discontiguous_partition_with_flips):
45+
return discontiguous_partition_with_flips[0]
3846

3947

4048
def test_contiguous_with_contiguity_no_flips_is_true(contiguous_partition):
@@ -43,8 +51,9 @@ def test_contiguous_with_contiguity_no_flips_is_true(contiguous_partition):
4351
assert contiguous_bfs(contiguous_partition)
4452

4553

46-
def test_contiguous_with_contiguity_flips_is_true(contiguous_partition):
47-
contiguous_partition2 = contiguous_partition.flip(contiguous_partition.test_flips)
54+
def test_contiguous_with_contiguity_flips_is_true(contiguous_partition_with_flips):
55+
contiguous_partition, test_flips = contiguous_partition_with_flips
56+
contiguous_partition2 = contiguous_partition.flip(test_flips)
4857
assert contiguous(contiguous_partition2)
4958
assert single_flip_contiguous(contiguous_partition2)
5059
assert contiguous_bfs(contiguous_partition2)
@@ -64,10 +73,11 @@ def test_discontiguous_with_contiguous_bfs_no_flips_is_false(discontiguous_parti
6473
assert not contiguous_bfs(discontiguous_partition)
6574

6675

67-
def test_discontiguous_with_contiguous_flips_is_false(discontiguous_partition):
68-
discontiguous_partition2 = discontiguous_partition.flip(
69-
discontiguous_partition.test_flips
70-
)
76+
def test_discontiguous_with_contiguous_flips_is_false(
77+
discontiguous_partition_with_flips
78+
):
79+
part, test_flips = discontiguous_partition_with_flips
80+
discontiguous_partition2 = part.flip(test_flips)
7181
assert not contiguous(discontiguous_partition2)
7282

7383

@@ -76,18 +86,18 @@ def test_discontiguous_with_contiguous_flips_is_false(discontiguous_partition):
7686
"when the previous partition is discontiguous"
7787
)
7888
def test_discontiguous_with_single_flip_contiguous_flips_is_false(
79-
discontiguous_partition
89+
discontiguous_partition_with_flips
8090
):
81-
discontiguous_partition2 = discontiguous_partition.flip(
82-
discontiguous_partition.test_flips
83-
)
91+
part, test_flips = discontiguous_partition_with_flips
92+
discontiguous_partition2 = part.flip(test_flips)
8493
assert not single_flip_contiguous(discontiguous_partition2)
8594

8695

87-
def test_discontiguous_with_contiguous_bfs_flips_is_false(discontiguous_partition):
88-
discontiguous_partition2 = discontiguous_partition.flip(
89-
discontiguous_partition.test_flips
90-
)
96+
def test_discontiguous_with_contiguous_bfs_flips_is_false(
97+
discontiguous_partition_with_flips
98+
):
99+
part, test_flips = discontiguous_partition_with_flips
100+
discontiguous_partition2 = part.flip(test_flips)
91101
assert not contiguous_bfs(discontiguous_partition2)
92102

93103

0 commit comments

Comments
 (0)