diff --git a/changelog.d/update-uk-fuel-duty-bundle.changed.md b/changelog.d/update-uk-fuel-duty-bundle.changed.md new file mode 100644 index 00000000..74fa8ca3 --- /dev/null +++ b/changelog.d/update-uk-fuel-duty-bundle.changed.md @@ -0,0 +1 @@ +Update the bundled UK release to calibrated fuel-duty litres. diff --git a/pyproject.toml b/pyproject.toml index 787f7800..fd437c95 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,7 +43,7 @@ graph = [ ] uk = [ "policyengine_core>=3.26.1", - "policyengine-uk==2.88.14", + "policyengine-uk==2.88.20", ] us = [ "policyengine_core==3.26.1", @@ -61,7 +61,7 @@ dev = [ "pytest-asyncio>=0.26.0", "ruff>=0.9.0", "policyengine_core==3.26.1", - "policyengine-uk==2.88.14", + "policyengine-uk==2.88.20", "policyengine-us==1.700.0", "towncrier>=24.8.0", "mypy>=1.11.0", diff --git a/src/policyengine/data/release_manifests/uk.json b/src/policyengine/data/release_manifests/uk.json index 92bdb23e..5a6e8f21 100644 --- a/src/policyengine/data/release_manifests/uk.json +++ b/src/policyengine/data/release_manifests/uk.json @@ -5,39 +5,44 @@ "policyengine_version": "4.9.1", "model_package": { "name": "policyengine-uk", - "version": "2.88.14", - "sha256": "ed10005ba7d0c973c0966ebbf7672853fb3caaa0456b8bf485fb13f8c323d975", - "wheel_url": "https://files.pythonhosted.org/packages/a3/fc/276fb639a46bda35523329d8968bcc4089fde9e97fab82722c0ec853c6cc/policyengine_uk-2.88.14-py3-none-any.whl" + "version": "2.88.20", + "sha256": "8c3dacb868f3fb18296b8ef2475edaf543f57b8056d24a58bca59b108651f272", + "wheel_url": "https://files.pythonhosted.org/packages/32/f0/c0e7dbcc049501dc968da0a67de4976f305228328f96fe0ad08c65301c4f/policyengine_uk-2.88.20-py3-none-any.whl" }, "data_package": { "name": "policyengine-uk-data", - "version": "1.55.5", - "repo_id": "policyengine/policyengine-uk-data-private" + "version": "1.55.10", + "repo_id": "policyengine/policyengine-uk-data-private", + "release_manifest_path": "release_manifest.json", + "release_manifest_revision": "655dd07e4bb9c777b00dac044949611f1feb824f" }, "certified_data_artifact": { "data_package": { "name": "policyengine-uk-data", - "version": "1.55.5" + "version": "1.55.10" }, - "build_id": "policyengine-uk-data-1.55.5", + "build_id": "policyengine-uk-data-1.55.10", "dataset": "enhanced_frs_2023_24", - "uri": "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2023_24.h5@1.55.5" + "uri": "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2023_24.h5@655dd07e4bb9c777b00dac044949611f1feb824f", + "sha256": "584ae33d80ca0431254610a3f8254d132da73477d31966d6446282861ecae50d" }, "certification": { - "compatibility_basis": "matching_data_build_fingerprint", - "data_build_id": "policyengine-uk-data-1.55.5", - "built_with_model_version": "2.88.14", - "certified_for_model_version": "2.88.14", - "data_build_fingerprint": "sha256:dff5c5bb976ce254fa965ecfce6a0d84859fe1629a714ae28a79b3075522a0ae", + "compatibility_basis": "exact_build_model_version", + "data_build_id": "policyengine-uk-data-1.55.10", + "built_with_model_version": "2.88.20", + "certified_for_model_version": "2.88.20", + "data_build_fingerprint": "sha256:77f149725a36055fd89961855230401852b0712d301c6e26d6d16565c6b23809", "certified_by": "policyengine.py bundled manifest" }, "default_dataset": "enhanced_frs_2023_24", "datasets": { "frs_2023_24": { - "path": "frs_2023_24.h5" + "path": "frs_2023_24.h5", + "sha256": "df26d4d7af9d164aa2d064181b39290292d2f62bb26fee6126fc095fc06da292" }, "enhanced_frs_2023_24": { - "path": "enhanced_frs_2023_24.h5" + "path": "enhanced_frs_2023_24.h5", + "sha256": "584ae33d80ca0431254610a3f8254d132da73477d31966d6446282861ecae50d" } }, "region_datasets": { diff --git a/src/policyengine/data/release_manifests/uk.trace.tro.jsonld b/src/policyengine/data/release_manifests/uk.trace.tro.jsonld index eadba58f..8be0063b 100644 --- a/src/policyengine/data/release_manifests/uk.trace.tro.jsonld +++ b/src/policyengine/data/release_manifests/uk.trace.tro.jsonld @@ -17,7 +17,7 @@ "schema:name": "PolicyEngine", "schema:url": "https://policyengine.org" }, - "schema:dateCreated": "2026-05-09T07:14:50.156352Z", + "schema:dateCreated": "2026-05-20T20:16:50.641086Z", "schema:description": "TRACE TRO for certified runtime bundle uk-4.9.1 covering the bundle manifest, the certified dataset artifact, the country model wheel, and the country data release manifest when it is available.", "schema:name": "policyengine uk certified bundle TRO", "trov:createdWith": { @@ -45,7 +45,7 @@ "trov:hasArtifact": { "@id": "composition/1/artifact/data_release_manifest" }, - "trov:hasLocation": "https://huggingface.co/policyengine/policyengine-uk-data-private/resolve/1.55.5/release_manifest.json" + "trov:hasLocation": "https://huggingface.co/policyengine/policyengine-uk-data-private/resolve/655dd07e4bb9c777b00dac044949611f1feb824f/release_manifest.json" }, { "@id": "arrangement/1/location/dataset", @@ -53,7 +53,7 @@ "trov:hasArtifact": { "@id": "composition/1/artifact/dataset" }, - "trov:hasLocation": "https://huggingface.co/policyengine/policyengine-uk-data-private/resolve/1.55.5/enhanced_frs_2023_24.h5" + "trov:hasLocation": "https://huggingface.co/policyengine/policyengine-uk-data-private/resolve/655dd07e4bb9c777b00dac044949611f1feb824f/enhanced_frs_2023_24.h5" }, { "@id": "arrangement/1/location/model_wheel", @@ -61,7 +61,7 @@ "trov:hasArtifact": { "@id": "composition/1/artifact/model_wheel" }, - "trov:hasLocation": "https://files.pythonhosted.org/packages/a3/fc/276fb639a46bda35523329d8968bcc4089fde9e97fab82722c0ec853c6cc/policyengine_uk-2.88.14-py3-none-any.whl" + "trov:hasLocation": "https://files.pythonhosted.org/packages/32/f0/c0e7dbcc049501dc968da0a67de4976f305228328f96fe0ad08c65301c4f/policyengine_uk-2.88.20-py3-none-any.whl" } ] } @@ -75,54 +75,51 @@ "@type": "trov:ResearchArtifact", "schema:name": "policyengine.py bundle manifest for uk", "trov:mimeType": "application/json", - "trov:sha256": "908c979b898aebd52b5017c1f1e75c4b45e4ab5673e2cb97a1dd666933013a48" + "trov:sha256": "fa72ac10d69302da0cf5ca55466badffc3c82f020a71c20daa4e2039ff37f4c2" }, { "@id": "composition/1/artifact/data_release_manifest", "@type": "trov:ResearchArtifact", - "schema:name": "policyengine-uk-data release manifest 1.55.5", + "schema:name": "policyengine-uk-data release manifest 1.55.10", "trov:mimeType": "application/json", - "trov:sha256": "31de03e0bedc1ad29d5809fb16ca925f26485c86fc1b14bf911636ebb83863a4" + "trov:sha256": "9f41a0f14ca93d20e61d33419173c3fedc1c3ba295b6ca67dd3197a41643d179" }, { "@id": "composition/1/artifact/dataset", "@type": "trov:ResearchArtifact", "schema:name": "enhanced_frs_2023_24", "trov:mimeType": "application/x-hdf5", - "trov:sha256": "1e95dafde7997a24dac1abc122f8e2ebbc8c2d7d36bab8361e628a93401559ce" + "trov:sha256": "584ae33d80ca0431254610a3f8254d132da73477d31966d6446282861ecae50d" }, { "@id": "composition/1/artifact/model_wheel", "@type": "trov:ResearchArtifact", - "schema:name": "policyengine-uk==2.88.14 wheel", + "schema:name": "policyengine-uk==2.88.20 wheel", "trov:mimeType": "application/zip", - "trov:sha256": "ed10005ba7d0c973c0966ebbf7672853fb3caaa0456b8bf485fb13f8c323d975" + "trov:sha256": "8c3dacb868f3fb18296b8ef2475edaf543f57b8056d24a58bca59b108651f272" } ], "trov:hasFingerprint": { "@id": "composition/1/fingerprint", "@type": "trov:CompositionFingerprint", - "trov:sha256": "963655c8d38e59b8e71529ba4df0341ecdc9e620812fe86bddf555388311834c" + "trov:sha256": "fd1edf28ab87307b0db6aa3be98d3e72fba0ac9fff5372c6f9a17c7b0264e8be" } }, "trov:hasPerformance": { "@id": "trp/1", "@type": "trov:TransparentResearchPerformance", - "pe:builtWithModelVersion": "2.88.14", + "pe:builtWithModelVersion": "2.88.20", "pe:certifiedBy": "policyengine.py bundled manifest", - "pe:certifiedForModelVersion": "2.88.14", - "pe:ciGitRef": "refs/heads/main", - "pe:ciGitSha": "4319e7143d99597ea5f22a14bdc5637196b2ddfb", - "pe:ciRunUrl": "https://github.com/PolicyEngine/policyengine.py/actions/runs/26188268595", - "pe:compatibilityBasis": "matching_data_build_fingerprint", - "pe:dataBuildFingerprint": "sha256:dff5c5bb976ce254fa965ecfce6a0d84859fe1629a714ae28a79b3075522a0ae", - "pe:dataBuildId": "policyengine-uk-data-1.55.5", - "pe:emittedIn": "github-actions", - "rdfs:comment": "Certification of build policyengine-uk-data-1.55.5 for policyengine-uk 2.88.14.", + "pe:certifiedForModelVersion": "2.88.20", + "pe:compatibilityBasis": "exact_build_model_version", + "pe:dataBuildFingerprint": "sha256:77f149725a36055fd89961855230401852b0712d301c6e26d6d16565c6b23809", + "pe:dataBuildId": "policyengine-uk-data-1.55.10", + "pe:emittedIn": "local", + "rdfs:comment": "Certification of build policyengine-uk-data-1.55.10 for policyengine-uk 2.88.20.", "trov:accessedArrangement": { "@id": "arrangement/1" }, - "trov:startedAtTime": "2026-05-09T07:14:50.156352Z", + "trov:startedAtTime": "2026-05-20T20:16:50.641086Z", "trov:wasConductedBy": { "@id": "trs" } diff --git a/tests/test_models.py b/tests/test_models.py index 675e8859..7d375458 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -29,12 +29,12 @@ def test_has_release_manifest_metadata(self): assert uk_latest.release_manifest is not None assert uk_latest.release_manifest.country_id == "uk" assert uk_latest.model_package.name == "policyengine-uk" - assert uk_latest.model_package.version == "2.88.14" + assert uk_latest.model_package.version == "2.88.20" assert uk_latest.data_package.name == "policyengine-uk-data" - assert uk_latest.data_package.version == "1.55.5" + assert uk_latest.data_package.version == "1.55.10" assert ( uk_latest.default_dataset_uri - == "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2023_24.h5@1.55.5" + == "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2023_24.h5@655dd07e4bb9c777b00dac044949611f1feb824f" ) def test_has_hundreds_of_parameters(self): diff --git a/tests/test_release_manifests.py b/tests/test_release_manifests.py index fc93f089..42f1f26f 100644 --- a/tests/test_release_manifests.py +++ b/tests/test_release_manifests.py @@ -109,24 +109,24 @@ def test__given_uk_manifest__then_has_pinned_model_and_data_packages(self): assert manifest.country_id == "uk" assert manifest.policyengine_version == POLICYENGINE_VERSION assert manifest.model_package.name == "policyengine-uk" - assert manifest.model_package.version == "2.88.14" + assert manifest.model_package.version == "2.88.20" assert manifest.data_package.name == "policyengine-uk-data" - assert manifest.data_package.version == "1.55.5" + assert manifest.data_package.version == "1.55.10" assert ( manifest.data_package.repo_id == "policyengine/policyengine-uk-data-private" ) assert manifest.certified_data_artifact is not None assert ( - manifest.certified_data_artifact.build_id == "policyengine-uk-data-1.55.5" + manifest.certified_data_artifact.build_id == "policyengine-uk-data-1.55.10" ) assert manifest.certified_data_artifact.dataset == "enhanced_frs_2023_24" assert manifest.certification is not None - assert manifest.certification.data_build_id == "policyengine-uk-data-1.55.5" - assert manifest.certification.built_with_model_version == "2.88.14" - assert manifest.certification.certified_for_model_version == "2.88.14" + assert manifest.certification.data_build_id == "policyengine-uk-data-1.55.10" + assert manifest.certification.built_with_model_version == "2.88.20" + assert manifest.certification.certified_for_model_version == "2.88.20" assert ( manifest.certification.data_build_fingerprint - == "sha256:dff5c5bb976ce254fa965ecfce6a0d84859fe1629a714ae28a79b3075522a0ae" + == "sha256:77f149725a36055fd89961855230401852b0712d301c6e26d6d16565c6b23809" ) def test__given_us_dataset_name__then_resolves_to_versioned_hf_url(self): @@ -157,7 +157,7 @@ def test__given_uk_dataset_name__then_resolves_to_versioned_hf_url(self): assert ( resolved - == "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2023_24.h5@1.55.5" + == "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2023_24.h5@655dd07e4bb9c777b00dac044949611f1feb824f" ) def test__given_explicit_url__then_resolution_is_noop(self): @@ -612,9 +612,9 @@ def test__given_manifest_certification__then_release_bundle_exposes_it(self): assert bundle["bundle_id"] == f"uk-{POLICYENGINE_VERSION}" assert bundle["default_dataset"] == "enhanced_frs_2023_24" assert bundle["default_dataset_uri"] == manifest.default_dataset_uri - assert bundle["certified_data_build_id"] == "policyengine-uk-data-1.55.5" - assert bundle["data_build_model_version"] == "2.88.14" - assert bundle["compatibility_basis"] == "matching_data_build_fingerprint" + assert bundle["certified_data_build_id"] == "policyengine-uk-data-1.55.10" + assert bundle["data_build_model_version"] == "2.88.20" + assert bundle["compatibility_basis"] == "exact_build_model_version" assert bundle["certified_by"] == "policyengine.py bundled manifest" def test__given_runtime_certification__then_release_bundle_prefers_runtime_value( @@ -694,19 +694,19 @@ def test__given_uk_managed_dataset_name__then_resolves_within_bundle(self): else: assert dataset == ( "hf://policyengine/policyengine-uk-data-private/" - "enhanced_frs_2023_24.h5@1.55.5" + "enhanced_frs_2023_24.h5@655dd07e4bb9c777b00dac044949611f1feb824f" ) assert ( microsim.policyengine_bundle["policyengine_version"] == POLICYENGINE_VERSION ) assert microsim.policyengine_bundle["runtime_dataset"] == "enhanced_frs_2023_24" assert microsim.policyengine_bundle["runtime_dataset_uri"] == ( - "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2023_24.h5@1.55.5" + "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2023_24.h5@655dd07e4bb9c777b00dac044949611f1feb824f" ) dataset_source = microsim.policyengine_bundle["runtime_dataset_source"] assert ( dataset_source - == "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2023_24.h5@1.55.5" + == "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2023_24.h5@655dd07e4bb9c777b00dac044949611f1feb824f" or str(dataset_source).endswith( "policyengine_uk_data/storage/enhanced_frs_2023_24.h5" ) diff --git a/tests/test_uk_regions.py b/tests/test_uk_regions.py index 49fb1eb1..9b341bb1 100644 --- a/tests/test_uk_regions.py +++ b/tests/test_uk_regions.py @@ -68,7 +68,7 @@ def test__given_uk_registry__then_has_national_region(self): assert national.region_type == "national" assert ( national.dataset_path - == "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2023_24.h5@1.55.5" + == "hf://policyengine/policyengine-uk-data-private/enhanced_frs_2023_24.h5@655dd07e4bb9c777b00dac044949611f1feb824f" ) assert not national.requires_filter diff --git a/uv.lock b/uv.lock index 3302673d..83f691ec 100644 --- a/uv.lock +++ b/uv.lock @@ -2411,7 +2411,7 @@ wheels = [ [[package]] name = "policyengine" -version = "4.9.0" +version = "4.9.1" source = { editable = "." } dependencies = [ { name = "h5py", version = "3.14.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -2481,8 +2481,8 @@ requires-dist = [ { name = "policyengine-core", marker = "extra == 'dev'", specifier = "==3.26.1" }, { name = "policyengine-core", marker = "extra == 'uk'", specifier = ">=3.26.1" }, { name = "policyengine-core", marker = "extra == 'us'", specifier = "==3.26.1" }, - { name = "policyengine-uk", marker = "extra == 'dev'", specifier = "==2.88.14" }, - { name = "policyengine-uk", marker = "extra == 'uk'", specifier = "==2.88.14" }, + { name = "policyengine-uk", marker = "extra == 'dev'", specifier = "==2.88.20" }, + { name = "policyengine-uk", marker = "extra == 'uk'", specifier = "==2.88.20" }, { name = "policyengine-us", marker = "extra == 'dev'", specifier = "==1.700.0" }, { name = "policyengine-us", marker = "extra == 'us'", specifier = "==1.700.0" }, { name = "psutil", specifier = ">=5.9.0" }, @@ -2530,7 +2530,7 @@ wheels = [ [[package]] name = "policyengine-uk" -version = "2.88.14" +version = "2.88.20" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "microdf-python" }, @@ -2540,9 +2540,9 @@ dependencies = [ { name = "tables", version = "3.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, { name = "tables", version = "3.11.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8c/2b/ab82aa30c5d27176fd9d449ff5ed9708d0080b00912f7dc2efa0af0fd87e/policyengine_uk-2.88.14.tar.gz", hash = "sha256:21a4387ae52dcb5430b6d790edcc321816ed47147a3a0e21ffd482a36834d352", size = 1185947, upload-time = "2026-05-09T04:19:25.284Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/11/64c8b0269e68d42ffdc58c74b1975dcb6a67487de526855182ecc2479fb1/policyengine_uk-2.88.20.tar.gz", hash = "sha256:3c3939f4b4dc78be2747ec459bad2b5f341580be031af4004a554ce0c3f59682", size = 1189714, upload-time = "2026-05-20T17:38:13.426Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/fc/276fb639a46bda35523329d8968bcc4089fde9e97fab82722c0ec853c6cc/policyengine_uk-2.88.14-py3-none-any.whl", hash = "sha256:ed10005ba7d0c973c0966ebbf7672853fb3caaa0456b8bf485fb13f8c323d975", size = 1913671, upload-time = "2026-05-09T04:19:23.364Z" }, + { url = "https://files.pythonhosted.org/packages/32/f0/c0e7dbcc049501dc968da0a67de4976f305228328f96fe0ad08c65301c4f/policyengine_uk-2.88.20-py3-none-any.whl", hash = "sha256:8c3dacb868f3fb18296b8ef2475edaf543f57b8056d24a58bca59b108651f272", size = 1918240, upload-time = "2026-05-20T17:38:11.347Z" }, ] [[package]]