Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src/polymarket/models/gamma/event.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,7 @@ class Event(BaseModel):
"""A Polymarket event."""

id: EventId
parent_event_id: EventId | None = Field(default=None, validation_alias="parentEventId")
ticker: str | None = None
slug: str | None = None
title: str | None = None
Expand Down Expand Up @@ -309,7 +310,7 @@ def render(self: Event) -> str:

return render(self)

@field_validator("id", mode="before")
@field_validator("id", "parent_event_id", mode="before")
@classmethod
def _coerce_id(cls, value: object) -> object:
return coerce_string_id(value)
Expand All @@ -331,6 +332,7 @@ def _normalize_event(cls, value: object) -> object:

return {
"id": data.get("id"),
"parent_event_id": data.get("parentEventId"),
"ticker": data.get("ticker"),
"slug": data.get("slug"),
"title": data.get("title"),
Expand Down
11 changes: 11 additions & 0 deletions tests/unit/test_gamma_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,17 @@ def test_event_accepts_integer_id_per_ts_schema() -> None:
assert event.id == "902661"


def test_event_parent_event_id_coerces_integer_to_event_id() -> None:
event = Event.parse_response(_minimal_event_payload(parentEventId=570146))

assert event.parent_event_id == "570146"


def test_event_parent_event_id_defaults_to_none() -> None:
assert Event.parse_response(_minimal_event_payload()).parent_event_id is None
assert Event.parse_response(_minimal_event_payload(parentEventId=None)).parent_event_id is None


def test_event_nested_series_accepts_integer_id() -> None:
event = Event.parse_response(
_minimal_event_payload(series=[{"id": 7, "slug": "s1", "title": "Series 1"}])
Expand Down
Loading