Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/update-policyengine-bundle-5.2.0.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Update the PolicyEngine bundle to 5.2.0.
18 changes: 12 additions & 6 deletions policyengine_api/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@
"uk": "policyengine-uk",
"us": "policyengine-us",
}
BUNDLED_COUNTRY_DATASET_LABELS = {
"populace": "Populace",
BUNDLE_DATASET_DISPLAY_LABELS = {
"populace_": "Microcosm",
"enhanced_frs_": "Enhanced FRS",
}
DEFAULT_BUNDLE_DATASET_LABEL = "Certified dataset"

Expand Down Expand Up @@ -108,13 +109,18 @@ def get_bundle_default_dataset(country_id: str) -> str | None:
return str(default_dataset)


def _bundle_dataset_display_label(default_dataset: object) -> str:
dataset_name = str(default_dataset or "")
for prefix, label in BUNDLE_DATASET_DISPLAY_LABELS.items():
if dataset_name.startswith(prefix):
return label
return DEFAULT_BUNDLE_DATASET_LABEL


def get_bundle_default_dataset_option(country_id: str) -> dict:
release = get_bundle_data_release(country_id)
default_dataset = release.get("default_dataset")
data_producer = release.get("data_producer")
label = BUNDLED_COUNTRY_DATASET_LABELS.get(
str(data_producer), DEFAULT_BUNDLE_DATASET_LABEL
)
label = _bundle_dataset_display_label(default_dataset)
title = (
f"Certified {label} dataset"
if label != DEFAULT_BUNDLE_DATASET_LABEL
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ dependencies = [
"policyengine_canada==0.96.3",
"policyengine-ng==0.5.1",
"policyengine-il==0.1.0",
"policyengine[models]==4.20.3",
"policyengine[models]==5.2.0",
"pydantic",
"pymysql",
"python-dotenv",
Expand Down
37 changes: 24 additions & 13 deletions tests/unit/services/test_metadata_service.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import pytest

from policyengine_api.constants import get_bundle_data_release
from policyengine_api.services.metadata_service import MetadataService


Expand Down Expand Up @@ -117,27 +119,36 @@ def test_verify_metadata_for_given_country(
assert "datasets" in metadata["economy_options"]
assert isinstance(metadata["economy_options"]["datasets"], list)

@pytest.mark.parametrize("country_id", ["us", "uk"])
def test_default_dataset_matches_policyengine_bundle(self, country_id):
"""Metadata should expose the default certified by PolicyEngine.py."""
service = MetadataService()
metadata = service.get_metadata(country_id)
release = get_bundle_data_release(country_id)

datasets = metadata["economy_options"]["datasets"]

assert len(datasets) == 1
assert datasets[0]["default"] is True
assert datasets[0]["name"] == release["default_dataset"]
assert datasets[0]["dataset_uri"] == release["default_dataset_uri"]
assert datasets[0]["data_version"] == release["version"]

@pytest.mark.parametrize(
"country_id, expected_dataset",
"country_id, expected_label",
[
("us", "populace_us_2024"),
("uk", "populace_uk_2023"),
("us", "Microcosm"),
("uk", "Enhanced FRS"),
],
)
def test_default_dataset_is_certified_populace(self, country_id, expected_dataset):
"""Metadata should expose the bundle-resolved Populace dataset by default."""
def test_default_dataset_uses_user_facing_label(self, country_id, expected_label):
service = MetadataService()
metadata = service.get_metadata(country_id)

datasets = metadata["economy_options"]["datasets"]
dataset = metadata["economy_options"]["datasets"][0]

assert len(datasets) == 1
assert datasets[0]["name"] == expected_dataset
assert datasets[0]["label"] == "Populace"
assert datasets[0]["title"] == "Certified Populace dataset"
assert datasets[0]["default"] is True
assert datasets[0]["dataset_uri"].startswith("hf://policyengine/populace-")
assert datasets[0]["data_version"].startswith(f"populace-{country_id}-")
assert dataset["label"] == expected_label
assert dataset["title"] == f"Certified {expected_label} dataset"

@pytest.mark.parametrize(
"country_id, expected_types",
Expand Down
16 changes: 16 additions & 0 deletions tests/unit/test_constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,36 @@
import sys

import pytest

from policyengine_api.constants import (
COUNTRY_PACKAGE_VERSIONS,
POLICYENGINE_CORE_VERSION,
POLICYENGINE_VERSION,
REGION_PREFIXES,
UK_REGION_TYPES,
US_REGION_TYPES,
_bundle_dataset_display_label,
_load_policyengine_bundle,
_normalize_distribution_name,
_resolve_distribution_version,
get_py_manifest,
)


class TestBundleDatasetDisplayLabels:
@pytest.mark.parametrize(
"dataset_name, expected_label",
[
("populace_us_2024", "Microcosm"),
("enhanced_frs_2024_25", "Enhanced FRS"),
("future_dataset", "Certified dataset"),
(None, "Certified dataset"),
],
)
def test__uses_user_facing_dataset_family_name(self, dataset_name, expected_label):
assert _bundle_dataset_display_label(dataset_name) == expected_label


class TestUKRegionTypes:
"""Tests for UK_REGION_TYPES constant."""

Expand Down
Loading
Loading