feat(size): Add platform discriminator field to insight models #544
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
platformfield withLiteraltype toAndroidInsightResultsandAppleInsightResultsmodelsBackground
Sentry's size analysis comparison code parses insight results using a union type
AndroidInsightResults | AppleInsightResults. Without a discriminator field, Pydantic uses left-to-right validation order, which causes iOS insights to be incorrectly parsed asAndroidInsightResults, silently dropping iOS-specific fields likestrip_binaryandimage_optimization.By adding an explicit
platformfield, Sentry can useField(discriminator="platform")to correctly resolve the union type based on the platform value in the JSON.Changes
android.py: Addplatform: Literal["android"] = "android"toAndroidInsightResultsapple.py: Addplatform: Literal["apple"] = "apple"toAppleInsightResultsDeployment Notes
This change is backwards compatible. The new field will be included in size analysis JSON output. Sentry will be updated to use this field as a discriminator, with a fallback for old data that doesn't include it.
Co-Authored-By: Claude [email protected]