From 05c898fb6d504162e4f17042be0c1a53f192af86 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Sat, 9 May 2026 03:47:36 -0400 Subject: [PATCH] Fix reproducibility release follow-ups --- .github/workflows/push.yaml | 2 +- changelog.d/repro-release-followups.fixed.md | 1 + src/policyengine/provenance/manifest.py | 11 +++++++---- tests/test_release_manifests.py | 10 ++++++++++ 4 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 changelog.d/repro-release-followups.fixed.md diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml index 642901af..5ccaa6e2 100644 --- a/.github/workflows/push.yaml +++ b/.github/workflows/push.yaml @@ -88,7 +88,7 @@ jobs: - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: - path: './docs/_build/html' + path: './docs/_site' - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v4 diff --git a/changelog.d/repro-release-followups.fixed.md b/changelog.d/repro-release-followups.fixed.md new file mode 100644 index 00000000..9808a569 --- /dev/null +++ b/changelog.d/repro-release-followups.fixed.md @@ -0,0 +1 @@ +Preserve core-package compatibility metadata when parsing data release manifests, and deploy the Quarto documentation output from the correct `_site` directory. diff --git a/src/policyengine/provenance/manifest.py b/src/policyengine/provenance/manifest.py index e2e2b343..061b0d20 100644 --- a/src/policyengine/provenance/manifest.py +++ b/src/policyengine/provenance/manifest.py @@ -34,11 +34,14 @@ class DataPackageVersion(PackageVersion): release_manifest_revision: Optional[str] = None -class CompatibleModelPackage(BaseModel): +class CompatiblePackage(BaseModel): name: str specifier: str +CompatibleModelPackage = CompatiblePackage + + class BuiltWithModelPackage(PackageVersion): git_sha: Optional[str] = None data_build_fingerprint: Optional[str] = None @@ -47,6 +50,7 @@ class BuiltWithModelPackage(PackageVersion): class DataBuildInfo(BaseModel): build_id: Optional[str] = None built_at: Optional[str] = None + built_with_core_package: Optional[PackageVersion] = None built_with_model_package: Optional[BuiltWithModelPackage] = None @@ -113,9 +117,8 @@ def uri(self) -> str: class DataReleaseManifest(BaseModel): schema_version: int data_package: PackageVersion - compatible_model_packages: list[CompatibleModelPackage] = Field( - default_factory=list - ) + compatible_model_packages: list[CompatiblePackage] = Field(default_factory=list) + compatible_core_packages: list[CompatiblePackage] = Field(default_factory=list) default_datasets: dict[str, str] = Field(default_factory=dict) build: Optional[DataBuildInfo] = None artifacts: dict[str, DataReleaseArtifact] = Field(default_factory=dict) diff --git a/tests/test_release_manifests.py b/tests/test_release_manifests.py index a6df40c5..fa4924c6 100644 --- a/tests/test_release_manifests.py +++ b/tests/test_release_manifests.py @@ -180,6 +180,10 @@ def test__given_country__then_can_fetch_data_release_manifest(self): "build": { "build_id": "policyengine-us-data-1.78.2", "built_at": "2026-04-10T12:00:00Z", + "built_with_core_package": { + "name": "policyengine-core", + "version": "3.26.0", + }, "built_with_model_package": { "name": "policyengine-us", "version": "1.687.0", @@ -190,6 +194,9 @@ def test__given_country__then_can_fetch_data_release_manifest(self): "compatible_model_packages": [ {"name": "policyengine-us", "specifier": "==1.687.0"} ], + "compatible_core_packages": [ + {"name": "policyengine-core", "specifier": "==3.26.0"} + ], "default_datasets": {"national": "enhanced_cps_2024"}, "artifacts": { "enhanced_cps_2024": { @@ -215,8 +222,11 @@ def test__given_country__then_can_fetch_data_release_manifest(self): assert manifest.build is not None assert manifest.build.build_id == "policyengine-us-data-1.78.2" assert manifest.build.built_at == "2026-04-10T12:00:00Z" + assert manifest.build.built_with_core_package is not None + assert manifest.build.built_with_core_package.version == "3.26.0" assert manifest.build.built_with_model_package is not None assert manifest.build.built_with_model_package.version == "1.687.0" + assert manifest.compatible_core_packages[0].specifier == "==3.26.0" assert ( manifest.artifacts["enhanced_cps_2024"].uri == "hf://policyengine/policyengine-us-data/enhanced_cps_2024.h5@1.78.2"