From 267d6b05531e062c5424ed1c89a440cae669483e Mon Sep 17 00:00:00 2001 From: kartojal Date: Mon, 31 Aug 2026 13:06:39 +0200 Subject: [PATCH] feat!: remove legacy AMM and upstream-removed fields from gamma models The markets API stopped returning these consumer-facing fields: - requires_translation from event, series, and tag models - volume_amm from MarketMetrics and liquidity_amm from EventMetrics - the market_maker_addresses filter from list_markets (the market_maker_address query param is being dropped upstream) Responses that still carry any of these fields keep parsing; the values are ignored. A regression test covers the rollout window. Co-Authored-By: Claude Fable 5 --- src/polymarket/_internal/actions/gamma.py | 2 -- src/polymarket/clients/async_public.py | 2 -- src/polymarket/clients/async_secure.py | 2 -- src/polymarket/clients/public.py | 2 -- src/polymarket/clients/secure.py | 2 -- src/polymarket/models/gamma/common.py | 8 -------- src/polymarket/models/gamma/event.py | 8 -------- src/polymarket/models/gamma/market.py | 5 ----- tests/unit/test_gamma_models.py | 21 ++++++++++++++++++--- tests/unit/test_gamma_paginated_specs.py | 3 --- 10 files changed, 18 insertions(+), 37 deletions(-) diff --git a/src/polymarket/_internal/actions/gamma.py b/src/polymarket/_internal/actions/gamma.py index 53bf8972..3fd3fa62 100644 --- a/src/polymarket/_internal/actions/gamma.py +++ b/src/polymarket/_internal/actions/gamma.py @@ -515,7 +515,6 @@ def list_markets_spec( liquidity_num_max: float | None = None, liquidity_num_min: float | None = None, locale: str | None = None, - market_maker_addresses: str | Sequence[str] | None = None, order: str | None = None, position_ids: str | Sequence[str] | None = None, question_ids: str | Sequence[str] | None = None, @@ -549,7 +548,6 @@ def list_markets_spec( _add_optional(params, "liquidity_num_max", liquidity_num_max) _add_optional(params, "liquidity_num_min", liquidity_num_min) _add_optional(params, "locale", locale) - _add_optional_seq(params, "market_maker_address", market_maker_addresses) _add_optional(params, "order", order) _add_optional_seq(params, "position_ids", position_ids) _add_optional_seq(params, "question_ids", question_ids) diff --git a/src/polymarket/clients/async_public.py b/src/polymarket/clients/async_public.py index e02e5b3a..0b517714 100644 --- a/src/polymarket/clients/async_public.py +++ b/src/polymarket/clients/async_public.py @@ -998,7 +998,6 @@ def list_markets( liquidity_num_max: float | None = None, liquidity_num_min: float | None = None, locale: str | None = None, - market_maker_addresses: str | Sequence[str] | None = None, order: str | None = None, position_ids: str | Sequence[str] | None = None, question_ids: str | Sequence[str] | None = None, @@ -1045,7 +1044,6 @@ def list_markets( liquidity_num_max=liquidity_num_max, liquidity_num_min=liquidity_num_min, locale=locale, - market_maker_addresses=market_maker_addresses, order=order, position_ids=position_ids, question_ids=question_ids, diff --git a/src/polymarket/clients/async_secure.py b/src/polymarket/clients/async_secure.py index f8c1dcfd..7af09dbb 100644 --- a/src/polymarket/clients/async_secure.py +++ b/src/polymarket/clients/async_secure.py @@ -1716,7 +1716,6 @@ def list_markets( liquidity_num_max: float | None = None, liquidity_num_min: float | None = None, locale: str | None = None, - market_maker_addresses: str | Sequence[str] | None = None, order: str | None = None, position_ids: str | Sequence[str] | None = None, question_ids: str | Sequence[str] | None = None, @@ -1757,7 +1756,6 @@ def list_markets( liquidity_num_max=liquidity_num_max, liquidity_num_min=liquidity_num_min, locale=locale, - market_maker_addresses=market_maker_addresses, order=order, position_ids=position_ids, question_ids=question_ids, diff --git a/src/polymarket/clients/public.py b/src/polymarket/clients/public.py index ad7ff321..bc5cf3f7 100644 --- a/src/polymarket/clients/public.py +++ b/src/polymarket/clients/public.py @@ -783,7 +783,6 @@ def list_markets( liquidity_num_max: float | None = None, liquidity_num_min: float | None = None, locale: str | None = None, - market_maker_addresses: str | Sequence[str] | None = None, order: str | None = None, position_ids: str | Sequence[str] | None = None, question_ids: str | Sequence[str] | None = None, @@ -835,7 +834,6 @@ def list_markets( liquidity_num_max=liquidity_num_max, liquidity_num_min=liquidity_num_min, locale=locale, - market_maker_addresses=market_maker_addresses, order=order, position_ids=position_ids, question_ids=question_ids, diff --git a/src/polymarket/clients/secure.py b/src/polymarket/clients/secure.py index 7bb62244..fcbc446a 100644 --- a/src/polymarket/clients/secure.py +++ b/src/polymarket/clients/secure.py @@ -1244,7 +1244,6 @@ def list_markets( liquidity_num_max: float | None = None, liquidity_num_min: float | None = None, locale: str | None = None, - market_maker_addresses: str | Sequence[str] | None = None, order: str | None = None, position_ids: str | Sequence[str] | None = None, question_ids: str | Sequence[str] | None = None, @@ -1285,7 +1284,6 @@ def list_markets( liquidity_num_max=liquidity_num_max, liquidity_num_min=liquidity_num_min, locale=locale, - market_maker_addresses=market_maker_addresses, order=order, position_ids=position_ids, question_ids=question_ids, diff --git a/src/polymarket/models/gamma/common.py b/src/polymarket/models/gamma/common.py index 41d027bc..f30afbb5 100644 --- a/src/polymarket/models/gamma/common.py +++ b/src/polymarket/models/gamma/common.py @@ -76,10 +76,6 @@ class TagReference(BaseModel): updated_at: datetime | None = Field(default=None, validation_alias="updatedAt") force_hide: bool | None = Field(default=None, validation_alias="forceHide") is_carousel: bool | None = Field(default=None, validation_alias="isCarousel") - requires_translation: bool | None = Field( - default=None, - validation_alias="requiresTranslation", - ) active_events_count: int | None = Field(default=None, validation_alias="activeEventsCount") @field_validator("published_at", "created_at", "updated_at", mode="before") @@ -158,10 +154,6 @@ class SeriesReference(BaseModel): cg_asset_name: str | None = Field(default=None, validation_alias="cgAssetName") score: int | None = None comment_count: int | None = Field(default=None, validation_alias="commentCount") - requires_translation: bool | None = Field( - default=None, - validation_alias="requiresTranslation", - ) @field_validator("id", mode="before") @classmethod diff --git a/src/polymarket/models/gamma/event.py b/src/polymarket/models/gamma/event.py index 85b4a1f3..b0de17cf 100644 --- a/src/polymarket/models/gamma/event.py +++ b/src/polymarket/models/gamma/event.py @@ -57,10 +57,6 @@ class EventState(BaseModel): ended: bool | None = None automatically_active: bool | None = Field(default=None, validation_alias="automaticallyActive") comments_enabled: bool | None = Field(default=None, validation_alias="commentsEnabled") - requires_translation: bool | None = Field( - default=None, - validation_alias="requiresTranslation", - ) class EventSchedule(BaseModel): @@ -94,7 +90,6 @@ def _parse_event_date(cls, value: object) -> date | None: class EventMetrics(BaseModel): liquidity: Decimal | None = None - liquidity_amm: Decimal | None = Field(default=None, validation_alias="liquidityAmm") liquidity_clob: Decimal | None = Field(default=None, validation_alias="liquidityClob") volume: Decimal | None = None volume_24hr: Decimal | None = Field(default=None, validation_alias="volume24hr") @@ -108,7 +103,6 @@ class EventMetrics(BaseModel): @field_validator( "liquidity", - "liquidity_amm", "liquidity_clob", "volume", "volume_24hr", @@ -358,7 +352,6 @@ def _normalize_event(cls, value: object) -> object: "ended": data.get("ended"), "automatically_active": data.get("automaticallyActive"), "comments_enabled": data.get("commentsEnabled"), - "requires_translation": data.get("requiresTranslation"), }, "schedule": { "start_date": data.get("startDate"), @@ -372,7 +365,6 @@ def _normalize_event(cls, value: object) -> object: }, "metrics": { "liquidity": data.get("liquidity"), - "liquidity_amm": data.get("liquidityAmm"), "liquidity_clob": data.get("liquidityClob"), "volume": data.get("volume"), "volume_24hr": data.get("volume24hr"), diff --git a/src/polymarket/models/gamma/market.py b/src/polymarket/models/gamma/market.py index f649c00d..251f99d9 100644 --- a/src/polymarket/models/gamma/market.py +++ b/src/polymarket/models/gamma/market.py @@ -130,10 +130,6 @@ class MarketMetrics(BaseModel): default=None, validation_alias="volume1yr", ) - volume_amm: Decimal | None = Field( - default=None, - validation_alias="volumeAmm", - ) volume_clob: Decimal | None = Field( default=None, validation_alias="volumeClob", @@ -494,7 +490,6 @@ def _normalize_market(cls, value: object) -> object: "volume_1wk": data.get("volume1wk"), "volume_1mo": data.get("volume1mo"), "volume_1yr": data.get("volume1yr"), - "volume_amm": data.get("volumeAmm"), "volume_clob": data.get("volumeClob"), "liquidity": data.get("liquidity"), "liquidity_num": data.get("liquidityNum"), diff --git a/tests/unit/test_gamma_models.py b/tests/unit/test_gamma_models.py index 2e7e30e7..7bc959da 100644 --- a/tests/unit/test_gamma_models.py +++ b/tests/unit/test_gamma_models.py @@ -34,7 +34,6 @@ def _minimal_market_payload(**overrides: object) -> dict[str, object]: "outcomePrices": ["0.6", "0.4"], "clobTokenIds": ["TOKEN-YES", "TOKEN-NO"], "positionIds": ["POSITION-YES", "POSITION-NO"], - "marketMakerAddress": "0xMM", } payload.update(overrides) return payload @@ -53,6 +52,24 @@ def test_market_parses_minimal_payload() -> None: assert market.position_ids == ("POSITION-YES", "POSITION-NO") +def test_market_ignores_legacy_fields_still_present_in_responses() -> None: + # The API stopped returning these fields, but historical AMM markets and + # not-yet-migrated responses may still carry them. + market = Market.parse_response( + _minimal_market_payload( + marketMakerAddress="0xMM", + ammType="fpmm", + fpmmLive=True, + volumeAmm="123.45", + liquidityAmm="67.89", + pagerDutyNotificationEnabled=True, + requiresTranslation=True, + ) + ) + + assert market.id == "MARKET-1" + + def test_market_normalizes_groups_from_flat_payload() -> None: payload = _minimal_market_payload( slug="my-market", @@ -365,14 +382,12 @@ def test_event_skips_markets_with_non_binary_outcomes() -> None: "outcomes": ["Yes", "No"], "outcomePrices": ["0.5", "0.5"], "clobTokenIds": ["A", "B"], - "marketMakerAddress": "0xMM", }, { "id": "M2", "outcomes": ["Only"], "outcomePrices": ["1"], "clobTokenIds": ["X"], - "marketMakerAddress": "0xMM", }, ], ) diff --git a/tests/unit/test_gamma_paginated_specs.py b/tests/unit/test_gamma_paginated_specs.py index c83acd64..3770281a 100644 --- a/tests/unit/test_gamma_paginated_specs.py +++ b/tests/unit/test_gamma_paginated_specs.py @@ -16,7 +16,6 @@ def _minimal_market_payload(**overrides: object) -> dict[str, object]: "outcomePrices": ["0.6", "0.4"], "clobTokenIds": ["TOKEN-YES", "TOKEN-NO"], "positionIds": ["POSITION-YES", "POSITION-NO"], - "marketMakerAddress": "0xMM", } payload.update(overrides) return payload @@ -72,14 +71,12 @@ def test_list_markets_spec_default_has_no_params() -> None: def test_list_markets_spec_collects_array_params() -> None: spec = gamma_actions.list_markets_spec( clob_token_ids=["A", "B"], - market_maker_addresses=["0xMM"], ids=[1, 2], position_ids=["P1", "P2"], ) assert spec.base_params == { "clob_token_ids": ("A", "B"), - "market_maker_address": ("0xMM",), "id": (1, 2), "position_ids": ("P1", "P2"), }