Skip to content

Commit b94e8e1

Browse files
committed
ruff
1 parent 20c95c7 commit b94e8e1

4 files changed

Lines changed: 312 additions & 232 deletions

File tree

tests/test_electoral_roll.py

Lines changed: 48 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,25 @@ def test_basic_electoral_roll_prediction(self):
2727
result = in_rolls_fn_gender(self.df, "name")
2828

2929
# Check required columns are present
30-
expected_cols = ["prop_female", "prop_male", "prop_third_gender",
31-
"n_female", "n_male", "n_third_gender"]
30+
expected_cols = [
31+
"prop_female",
32+
"prop_male",
33+
"prop_third_gender",
34+
"n_female",
35+
"n_male",
36+
"n_third_gender",
37+
]
3238
for col in expected_cols:
3339
self.assertIn(col, result.columns)
3440

3541
# Validate gender predictions for known names
3642
# yasmin should be predominantly female
37-
yasmin_row = result[result['name'] == 'yasmin'].iloc[0]
38-
self.assertTrue(yasmin_row['prop_female'] > 0.9)
43+
yasmin_row = result[result["name"] == "yasmin"].iloc[0]
44+
self.assertTrue(yasmin_row["prop_female"] > 0.9)
3945

4046
# vivek should be predominantly male
41-
vivek_row = result[result['name'] == 'vivek'].iloc[0]
42-
self.assertTrue(vivek_row['prop_female'] < 0.1)
47+
vivek_row = result[result["name"] == "vivek"].iloc[0]
48+
self.assertTrue(vivek_row["prop_female"] < 0.1)
4349

4450
def test_state_filtering(self):
4551
"""Test state-specific electoral roll data."""
@@ -49,10 +55,12 @@ def test_state_filtering(self):
4955
self.assertIn("prop_female", result.columns)
5056

5157
# Gender predictions should still be reasonable
52-
yasmin_row = result[result['name'] == 'yasmin'].iloc[0]
53-
vivek_row = result[result['name'] == 'vivek'].iloc[0]
54-
self.assertTrue(yasmin_row['prop_female'] > 0.8) # Slightly more lenient for state-specific
55-
self.assertTrue(vivek_row['prop_female'] < 0.2)
58+
yasmin_row = result[result["name"] == "yasmin"].iloc[0]
59+
vivek_row = result[result["name"] == "vivek"].iloc[0]
60+
self.assertTrue(
61+
yasmin_row["prop_female"] > 0.8
62+
) # Slightly more lenient for state-specific
63+
self.assertTrue(vivek_row["prop_female"] < 0.2)
5664

5765
def test_year_filtering(self):
5866
"""Test year-specific electoral roll data."""
@@ -62,36 +70,40 @@ def test_year_filtering(self):
6270
self.assertIn("prop_female", result.columns)
6371

6472
# Gender predictions should still be reasonable
65-
yasmin_row = result[result['name'] == 'yasmin'].iloc[0]
66-
vivek_row = result[result['name'] == 'vivek'].iloc[0]
67-
self.assertTrue(yasmin_row['prop_female'] > 0.8)
68-
self.assertTrue(vivek_row['prop_female'] < 0.2)
73+
yasmin_row = result[result["name"] == "yasmin"].iloc[0]
74+
vivek_row = result[result["name"] == "vivek"].iloc[0]
75+
self.assertTrue(yasmin_row["prop_female"] > 0.8)
76+
self.assertTrue(vivek_row["prop_female"] < 0.2)
6977

7078
def test_dataset_v1(self):
7179
"""Test v1 dataset functionality."""
72-
result = in_rolls_fn_gender(self.df, "name", state="andhra", year=1985, dataset="v1")
80+
result = in_rolls_fn_gender(
81+
self.df, "name", state="andhra", year=1985, dataset="v1"
82+
)
7383

7484
# Should have required columns
7585
self.assertIn("prop_female", result.columns)
7686

7787
# Gender predictions should be consistent
78-
yasmin_row = result[result['name'] == 'yasmin'].iloc[0]
79-
vivek_row = result[result['name'] == 'vivek'].iloc[0]
80-
self.assertTrue(yasmin_row['prop_female'] > 0.8)
81-
self.assertTrue(vivek_row['prop_female'] < 0.2)
88+
yasmin_row = result[result["name"] == "yasmin"].iloc[0]
89+
vivek_row = result[result["name"] == "vivek"].iloc[0]
90+
self.assertTrue(yasmin_row["prop_female"] > 0.8)
91+
self.assertTrue(vivek_row["prop_female"] < 0.2)
8292

8393
def test_dataset_v2(self):
8494
"""Test v2 dataset functionality."""
85-
result = in_rolls_fn_gender(self.df, "name", state="andhra", year=1985, dataset="v2")
95+
result = in_rolls_fn_gender(
96+
self.df, "name", state="andhra", year=1985, dataset="v2"
97+
)
8698

8799
# Should have required columns
88100
self.assertIn("prop_female", result.columns)
89101

90102
# Gender predictions should be consistent
91-
yasmin_row = result[result['name'] == 'yasmin'].iloc[0]
92-
vivek_row = result[result['name'] == 'vivek'].iloc[0]
93-
self.assertTrue(yasmin_row['prop_female'] > 0.8)
94-
self.assertTrue(vivek_row['prop_female'] < 0.2)
103+
yasmin_row = result[result["name"] == "yasmin"].iloc[0]
104+
vivek_row = result[result["name"] == "vivek"].iloc[0]
105+
self.assertTrue(yasmin_row["prop_female"] > 0.8)
106+
self.assertTrue(vivek_row["prop_female"] < 0.2)
95107

96108
def test_column_types_and_values(self):
97109
"""Test that output columns have correct types and value ranges."""
@@ -115,10 +127,18 @@ def test_proportion_sum_consistency(self):
115127
result = in_rolls_fn_gender(self.df, "name")
116128

117129
for idx, row in result.iterrows():
118-
if pd.notna(row['prop_female']) and pd.notna(row['prop_male']):
119-
prop_sum = row['prop_female'] + row['prop_male'] + row.get('prop_third_gender', 0)
120-
self.assertAlmostEqual(prop_sum, 1.0, places=2,
121-
msg=f"Proportions don't sum to 1 for row {idx}")
130+
if pd.notna(row["prop_female"]) and pd.notna(row["prop_male"]):
131+
prop_sum = (
132+
row["prop_female"]
133+
+ row["prop_male"]
134+
+ row.get("prop_third_gender", 0)
135+
)
136+
self.assertAlmostEqual(
137+
prop_sum,
138+
1.0,
139+
places=2,
140+
msg=f"Proportions don't sum to 1 for row {idx}",
141+
)
122142

123143
def test_invalid_column_name(self):
124144
"""Test behavior with invalid column name."""

0 commit comments

Comments
 (0)