Skip to content

Commit 2a30520

Browse files
author
Max Ghenis
committed
Expose compatible model versions in release manifest backfill
1 parent f745831 commit 2a30520

3 files changed

Lines changed: 55 additions & 0 deletions

File tree

.github/workflows/backfill_release_manifest.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ on:
1616
description: "Exact policyengine-us version used with this data release"
1717
required: true
1818
type: string
19+
compatible_model_package_versions:
20+
description: "Optional newline-separated additional exact policyengine-us runtime versions to certify"
21+
required: false
22+
default: ""
23+
type: string
1924
core_package_version:
2025
description: "Exact policyengine-core version used with this data release"
2126
required: true
@@ -107,6 +112,7 @@ jobs:
107112
VERSION: ${{ inputs.version }}
108113
ARTIFACTS: ${{ inputs.artifacts }}
109114
MODEL_PACKAGE_VERSION: ${{ inputs.model_package_version }}
115+
COMPATIBLE_MODEL_PACKAGE_VERSIONS: ${{ inputs.compatible_model_package_versions }}
110116
CORE_PACKAGE_VERSION: ${{ inputs.core_package_version }}
111117
COMPATIBLE_CORE_PACKAGE_VERSIONS: ${{ inputs.compatible_core_package_versions }}
112118
MODEL_PACKAGE_GIT_SHA: ${{ inputs.model_package_git_sha }}
@@ -154,6 +160,17 @@ jobs:
154160
"${artifact_args[@]}"
155161
)
156162
163+
while IFS= read -r model_version; do
164+
if [ -z "${model_version}" ]; then
165+
continue
166+
fi
167+
if [[ ! "${model_version}" =~ ^[0-9]+[.][0-9]+[.][0-9]+$ ]]; then
168+
echo "::error::Compatible model version must use x.y.z form, got '${model_version}'."
169+
exit 1
170+
fi
171+
cmd+=(--compatible-model-package-version "${model_version}")
172+
done <<< "${COMPATIBLE_MODEL_PACKAGE_VERSIONS}"
173+
157174
while IFS= read -r core_version; do
158175
if [ -z "${core_version}" ]; then
159176
continue

policyengine_us_data/storage/backfill_release_manifest.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ def build_backfilled_release_manifest(
111111
artifacts: Sequence[HfArtifactMetadata],
112112
model_package_version: str,
113113
core_package_version: str,
114+
compatible_model_package_versions: Sequence[str] | None = None,
114115
compatible_core_package_versions: Sequence[str] | None = None,
115116
hf_repo_name: str = DEFAULT_HF_REPO_NAME,
116117
model_package_name: str = DEFAULT_MODEL_PACKAGE_NAME,
@@ -132,6 +133,9 @@ def build_backfilled_release_manifest(
132133
"name": DEFAULT_CORE_PACKAGE_NAME,
133134
"version": core_package_version,
134135
},
136+
additional_compatible_specifiers=[
137+
f"=={version}" for version in compatible_model_package_versions or ()
138+
],
135139
additional_core_compatible_specifiers=[
136140
f"=={version}" for version in compatible_core_package_versions or ()
137141
],
@@ -220,6 +224,17 @@ def _parse_args() -> argparse.Namespace:
220224
)
221225
parser.add_argument("--model-package-version", required=True)
222226
parser.add_argument("--core-package-version", required=True)
227+
parser.add_argument(
228+
"--compatible-model-package-version",
229+
action="append",
230+
dest="compatible_model_package_versions",
231+
default=[],
232+
help=(
233+
"Additional exact policyengine-us runtime version to certify as "
234+
"compatible. Repeat for multiple versions. The build model remains "
235+
"--model-package-version."
236+
),
237+
)
223238
parser.add_argument(
224239
"--compatible-core-package-version",
225240
action="append",
@@ -278,6 +293,7 @@ def main() -> int:
278293
artifacts=artifacts,
279294
model_package_version=args.model_package_version,
280295
core_package_version=args.core_package_version,
296+
compatible_model_package_versions=args.compatible_model_package_versions,
281297
compatible_core_package_versions=args.compatible_core_package_versions,
282298
hf_repo_name=args.hf_repo_name,
283299
model_package_git_sha=args.model_package_git_sha,

tests/unit/test_backfill_release_manifest.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,28 @@ def test_build_backfilled_release_manifest_records_additional_core_compatibility
146146
]
147147

148148

149+
def test_build_backfilled_release_manifest_records_additional_model_compatibility():
150+
manifest = build_backfilled_release_manifest(
151+
version="1.73.0",
152+
artifacts=[
153+
HfArtifactMetadata(
154+
path="enhanced_cps_2024.h5",
155+
sha256="a" * 64,
156+
size_bytes=1,
157+
)
158+
],
159+
model_package_version="1.653.3",
160+
compatible_model_package_versions=["1.722.4"],
161+
core_package_version="3.26.0",
162+
)
163+
164+
assert manifest["build"]["built_with_model_package"]["version"] == "1.653.3"
165+
assert manifest["compatible_model_packages"] == [
166+
{"name": "policyengine-us", "specifier": "==1.653.3"},
167+
{"name": "policyengine-us", "specifier": "==1.722.4"},
168+
]
169+
170+
149171
def test_upload_backfilled_release_manifest_uploads_manifest_and_trace(monkeypatch):
150172
api = MagicMock()
151173
api.create_commit.return_value = SimpleNamespace(oid="commit-sha")

0 commit comments

Comments
 (0)