Skip to content

Commit 40bde64

Browse files
committed
fix metrics model creation
1 parent 2484ac6 commit 40bde64

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

redistricting/models/Plan.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,13 @@ def __init__(self, plan: 'RdsPlan'):
8787
def __init__(self, cutEdges: Union[int, None] = None, splits: KeyedList[RdsSplits] = None):
8888
...
8989

90-
def __init__(self, planOrCutEdges: Union[int, 'RdsPlan'] = None, splits: KeyedList[RdsSplits] = MISSING, parent: Optional[QObject] = None):
91-
if isinstance(planOrCutEdges, RdsPlan):
90+
def __init__(self, cutEdges: Union[int, 'RdsPlan'] = None, splits: KeyedList[RdsSplits] = MISSING, parent: Optional[QObject] = None):
91+
if isinstance(cutEdges, RdsPlan):
9292
super().__init__(parent=parent)
93-
self.plan = planOrCutEdges
93+
self.plan = cutEdges
9494
self.updateGeoFields(self.plan.geoFields)
9595
else:
96-
super().__init__(cutEdges=planOrCutEdges, splits=splits, parent=parent)
96+
super().__init__(cutEdges=cutEdges, splits=splits, parent=parent)
9797

9898
def __pre_init__(self):
9999
self.plan: 'RdsPlan' = None

redistricting/models/base/model.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -732,7 +732,7 @@ def __init__(self, *args, **kwargs):
732732
sig = inspect.signature(type(self).__init__)
733733

734734
# remove any passed in missing params
735-
args = (a for a in args if a is not MISSING)
735+
args = tuple(a for a in args if a is not MISSING)
736736
kwargs = {k: v for k, v in kwargs.items() if v is not MISSING}
737737

738738
bound_args = sig.bind(*args, **kwargs)

tests/unittests/models/test_stats.py

+13
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,26 @@
1616
* *
1717
***************************************************************************/
1818
"""
19+
import pytest
1920
from pytest_mock import MockerFixture
2021

22+
from redistricting.models.base.lists import KeyedList
2123
from redistricting.models.columns import MetricsColumns
2224
from redistricting.models.field import RdsGeoField
2325
from redistricting.models.plan import RdsMetrics
26+
from redistricting.models.splits import RdsSplits
2427

2528
# pylint: disable=protected-access
2629

2730

2831
class TestPlanStats:
2932

33+
@pytest.fixture
34+
def mock_splits(self, mocker: MockerFixture):
35+
l = mocker.create_autospec(spec=KeyedList[RdsSplits])
36+
l.__len__.return_value = 1
37+
l.__getitem__.return_value = mocker.create_autospec(spec=RdsSplits)
38+
3039
def test_create(self, mock_plan, mocker: MockerFixture):
3140
districts = type(mock_plan).districts
3241
districts.__getitem__.return_value = [0.5]
@@ -37,3 +46,7 @@ def test_create(self, mock_plan, mocker: MockerFixture):
3746
for f in MetricsColumns.CompactnessScores():
3847
assert getattr(stats, f) == 0.5
3948
assert len(stats.splits) == 1
49+
50+
def test_create_with_cutedges_and_splits(self, mock_splits):
51+
stats = RdsMetrics(2013, mock_splits)
52+
assert stats.cutEdges == 2013

0 commit comments

Comments
 (0)