Conversation
Greptile SummaryThis PR fixes a regression in the pluggable-serializer load path where
Confidence Score: 5/5Safe to merge; the one-line change is narrowly scoped, the tests directly cover both affected paths, and no existing callers of load_artifacts catch DataException specifically for the corruption case. The change is minimal and well-tested. Both the absent-artifact and metadata-without-blob paths now consistently raise KeyError, matching the historical contract. The only outstanding item is a documentation discrepancy in the PR description which does not affect runtime behavior. No files require special attention. Important Files Changed
Reviews (2): Last reviewed commit: "Preserve KeyError for missing artifact b..." | Re-trigger Greptile |
4a6a1d8 to
ba21c10
Compare
Summary
DataExceptionwrapper for artifacts missing from_objects_objects[name]lookup preserve the historicalKeyErrorbehavior_infoentry, load it with very old pickle defaultsContext
The pluggable serializer load path already uses
self._info.get(name, {}), which is the right compatibility behavior for artifacts without metadata: assume the very old pickle serializer defaults. The regression came from wrapping the later_objects[name]miss in aDataException, which made truly absent artifacts look like metadata/blob corruption.Validation
python -m pytest test/unit/test_serializer_integration.py::test_missing_artifact_raises_key_error test/unit/test_serializer_integration.py::test_missing_info_with_object_uses_pickle_defaults test/unit/test_serializer_integration.py::test_info_without_object_raises_key_error -qpython -m pytest test/unit/test_serializer_integration.py -qpre-commit run --files metaflow/datastore/task_datastore.py test/unit/test_serializer_integration.py