diff --git a/src/polymarket/models/data/activity.py b/src/polymarket/models/data/activity.py index dc88a8b..b0f6a11 100644 --- a/src/polymarket/models/data/activity.py +++ b/src/polymarket/models/data/activity.py @@ -121,7 +121,7 @@ class TradeActivity(_KnownActivityBase): outcome_index: int = Field(validation_alias="outcomeIndex") title: str slug: str - icon: str + icon: str | None = None event_slug: str = Field(validation_alias="eventSlug") @field_validator("condition_id", mode="before") @@ -140,7 +140,7 @@ class _MarketEventActivity(_KnownActivityBase): amount: Decimal title: str slug: str - icon: str + icon: str | None = None event_slug: str = Field(validation_alias="eventSlug") @field_validator("condition_id", mode="before") @@ -284,7 +284,7 @@ def _normalize_activity_payload(data: dict[str, Any]) -> dict[str, Any]: if normalized.get("outcomeIndex") == 999: normalized.pop("outcomeIndex", None) - for sentinel_key in ("conditionId", "asset", "side", "outcome"): + for sentinel_key in ("conditionId", "asset", "side", "outcome", "icon"): if normalized.get(sentinel_key) == "": normalized.pop(sentinel_key, None) diff --git a/tests/unit/test_data_activity.py b/tests/unit/test_data_activity.py index dbd2331..b6df610 100644 --- a/tests/unit/test_data_activity.py +++ b/tests/unit/test_data_activity.py @@ -125,6 +125,18 @@ def test_empty_string_sentinels_drop_to_none_on_trade_raises() -> None: parse_activity(payload) +def test_trade_empty_icon_normalizes_to_none() -> None: + activity = parse_activity(_trade_payload(icon="")) + assert isinstance(activity, TradeActivity) + assert activity.icon is None + + +def test_market_event_empty_icon_normalizes_to_none() -> None: + activity = parse_activity(_market_event_payload("SPLIT", icon="")) + assert isinstance(activity, SplitActivity) + assert activity.icon is None + + def test_market_event_variants_parse() -> None: for activity_type, expected_class in [ ("SPLIT", SplitActivity),