diff --git a/src/polymarket/clients/async_public.py b/src/polymarket/clients/async_public.py index b726372..801e4a5 100644 --- a/src/polymarket/clients/async_public.py +++ b/src/polymarket/clients/async_public.py @@ -297,6 +297,18 @@ async def close(self) -> None: finally: await self._ctx.clob.close() + @overload + async def get_market( + self, *, id: str, include_tag: bool | None = None, locale: str | None = None + ) -> Market: ... + @overload + async def get_market( + self, *, slug: str, include_tag: bool | None = None, locale: str | None = None + ) -> Market: ... + @overload + async def get_market( + self, *, url: str, include_tag: bool | None = None, locale: str | None = None + ) -> Market: ... async def get_market( self, *, @@ -322,6 +334,36 @@ async def get_market_tags(self, id: str) -> tuple[TagReference, ...]: """Get a market's tags.""" return await async_dispatch(self._ctx, _gamma_actions.get_market_tags_spec(id)) + @overload + async def get_event( + self, + *, + id: str, + include_best_lines: bool | None = None, + include_chat: bool | None = None, + include_template: bool | None = None, + locale: str | None = None, + ) -> Event: ... + @overload + async def get_event( + self, + *, + slug: str, + include_best_lines: bool | None = None, + include_chat: bool | None = None, + include_template: bool | None = None, + locale: str | None = None, + ) -> Event: ... + @overload + async def get_event( + self, + *, + url: str, + include_best_lines: bool | None = None, + include_chat: bool | None = None, + include_template: bool | None = None, + locale: str | None = None, + ) -> Event: ... async def get_event( self, *, @@ -363,6 +405,12 @@ async def get_series( _gamma_actions.get_series_spec(id, locale=locale), ) + @overload + async def get_tag( + self, *, id: str, include_template: bool | None = None, locale: str | None = None + ) -> Tag: ... + @overload + async def get_tag(self, *, slug: str, locale: str | None = None) -> Tag: ... async def get_tag( self, *, diff --git a/src/polymarket/clients/async_secure.py b/src/polymarket/clients/async_secure.py index 7bcfe77..6066bec 100644 --- a/src/polymarket/clients/async_secure.py +++ b/src/polymarket/clients/async_secure.py @@ -731,6 +731,18 @@ async def _close_rfq_session(self) -> None: def _user_or_wallet(self, user: str | None) -> str: return self._ctx.wallet if user is None else user + @overload + async def get_market( + self, *, id: str, include_tag: bool | None = None, locale: str | None = None + ) -> Market: ... + @overload + async def get_market( + self, *, slug: str, include_tag: bool | None = None, locale: str | None = None + ) -> Market: ... + @overload + async def get_market( + self, *, url: str, include_tag: bool | None = None, locale: str | None = None + ) -> Market: ... async def get_market( self, *, @@ -756,6 +768,36 @@ async def get_market_tags(self, id: str) -> tuple[TagReference, ...]: """Get a market's tags.""" return await async_dispatch(self._ctx, _gamma_actions.get_market_tags_spec(id)) + @overload + async def get_event( + self, + *, + id: str, + include_best_lines: bool | None = None, + include_chat: bool | None = None, + include_template: bool | None = None, + locale: str | None = None, + ) -> Event: ... + @overload + async def get_event( + self, + *, + slug: str, + include_best_lines: bool | None = None, + include_chat: bool | None = None, + include_template: bool | None = None, + locale: str | None = None, + ) -> Event: ... + @overload + async def get_event( + self, + *, + url: str, + include_best_lines: bool | None = None, + include_chat: bool | None = None, + include_template: bool | None = None, + locale: str | None = None, + ) -> Event: ... async def get_event( self, *, @@ -797,6 +839,12 @@ async def get_series( _gamma_actions.get_series_spec(id, locale=locale), ) + @overload + async def get_tag( + self, *, id: str, include_template: bool | None = None, locale: str | None = None + ) -> Tag: ... + @overload + async def get_tag(self, *, slug: str, locale: str | None = None) -> Tag: ... async def get_tag( self, *, @@ -2282,6 +2330,18 @@ async def merge_positions( ) return await self._dispatch_single_call(call, metadata=resolved_metadata) + @overload + async def redeem_positions( + self, *, condition_id: str, metadata: str | None = None + ) -> TransactionHandle: ... + @overload + async def redeem_positions( + self, *, market_id: str, metadata: str | None = None + ) -> TransactionHandle: ... + @overload + async def redeem_positions( + self, *, position_id: str, metadata: str | None = None + ) -> TransactionHandle: ... async def redeem_positions( self, *, diff --git a/src/polymarket/clients/public.py b/src/polymarket/clients/public.py index e18f3dc..43fa091 100644 --- a/src/polymarket/clients/public.py +++ b/src/polymarket/clients/public.py @@ -142,6 +142,18 @@ def close(self) -> None: finally: self._ctx.clob.close() + @overload + def get_market( + self, *, id: str, include_tag: bool | None = None, locale: str | None = None + ) -> Market: ... + @overload + def get_market( + self, *, slug: str, include_tag: bool | None = None, locale: str | None = None + ) -> Market: ... + @overload + def get_market( + self, *, url: str, include_tag: bool | None = None, locale: str | None = None + ) -> Market: ... def get_market( self, *, @@ -167,6 +179,36 @@ def get_market_tags(self, id: str) -> tuple[TagReference, ...]: """Get a market's tags.""" return sync_dispatch(self._ctx, _gamma_actions.get_market_tags_spec(id)) + @overload + def get_event( + self, + *, + id: str, + include_best_lines: bool | None = None, + include_chat: bool | None = None, + include_template: bool | None = None, + locale: str | None = None, + ) -> Event: ... + @overload + def get_event( + self, + *, + slug: str, + include_best_lines: bool | None = None, + include_chat: bool | None = None, + include_template: bool | None = None, + locale: str | None = None, + ) -> Event: ... + @overload + def get_event( + self, + *, + url: str, + include_best_lines: bool | None = None, + include_chat: bool | None = None, + include_template: bool | None = None, + locale: str | None = None, + ) -> Event: ... def get_event( self, *, @@ -208,6 +250,12 @@ def get_series( _gamma_actions.get_series_spec(id, locale=locale), ) + @overload + def get_tag( + self, *, id: str, include_template: bool | None = None, locale: str | None = None + ) -> Tag: ... + @overload + def get_tag(self, *, slug: str, locale: str | None = None) -> Tag: ... def get_tag( self, *, diff --git a/src/polymarket/clients/secure.py b/src/polymarket/clients/secure.py index 32c0808..a27bfc8 100644 --- a/src/polymarket/clients/secure.py +++ b/src/polymarket/clients/secure.py @@ -464,6 +464,18 @@ def close(self) -> None: def _user_or_wallet(self, user: str | None) -> str: return self._ctx.wallet if user is None else user + @overload + def get_market( + self, *, id: str, include_tag: bool | None = None, locale: str | None = None + ) -> Market: ... + @overload + def get_market( + self, *, slug: str, include_tag: bool | None = None, locale: str | None = None + ) -> Market: ... + @overload + def get_market( + self, *, url: str, include_tag: bool | None = None, locale: str | None = None + ) -> Market: ... def get_market( self, *, @@ -489,6 +501,36 @@ def get_market_tags(self, id: str) -> tuple[TagReference, ...]: """Get a market's tags.""" return sync_dispatch(self._ctx, _gamma_actions.get_market_tags_spec(id)) + @overload + def get_event( + self, + *, + id: str, + include_best_lines: bool | None = None, + include_chat: bool | None = None, + include_template: bool | None = None, + locale: str | None = None, + ) -> Event: ... + @overload + def get_event( + self, + *, + slug: str, + include_best_lines: bool | None = None, + include_chat: bool | None = None, + include_template: bool | None = None, + locale: str | None = None, + ) -> Event: ... + @overload + def get_event( + self, + *, + url: str, + include_best_lines: bool | None = None, + include_chat: bool | None = None, + include_template: bool | None = None, + locale: str | None = None, + ) -> Event: ... def get_event( self, *, @@ -530,6 +572,12 @@ def get_series( _gamma_actions.get_series_spec(id, locale=locale), ) + @overload + def get_tag( + self, *, id: str, include_template: bool | None = None, locale: str | None = None + ) -> Tag: ... + @overload + def get_tag(self, *, slug: str, locale: str | None = None) -> Tag: ... def get_tag( self, *, @@ -2176,6 +2224,18 @@ def merge_positions( ) return self._dispatch_single_call(call, metadata=resolved_metadata) + @overload + def redeem_positions( + self, *, condition_id: str, metadata: str | None = None + ) -> SyncTransactionHandle: ... + @overload + def redeem_positions( + self, *, market_id: str, metadata: str | None = None + ) -> SyncTransactionHandle: ... + @overload + def redeem_positions( + self, *, position_id: str, metadata: str | None = None + ) -> SyncTransactionHandle: ... def redeem_positions( self, *, diff --git a/tests/unit/test_relayer_redeem_positions.py b/tests/unit/test_relayer_redeem_positions.py index 7e32223..bacb6de 100644 --- a/tests/unit/test_relayer_redeem_positions.py +++ b/tests/unit/test_relayer_redeem_positions.py @@ -99,7 +99,10 @@ async def run() -> None: client = await make_deposit_client() try: with pytest.raises(UserInputError, match="exactly one"): - await client.redeem_positions(condition_id=_CONDITION_ID, market_id="123") + # Two selectors is intentionally invalid — exercises the runtime guard. + await client.redeem_positions( # pyright: ignore[reportCallIssue] + condition_id=_CONDITION_ID, market_id="123" + ) finally: await client.close() @@ -111,7 +114,8 @@ async def run() -> None: client = await make_deposit_client() try: with pytest.raises(UserInputError, match="exactly one"): - await client.redeem_positions() + # Zero selectors is intentionally invalid — exercises the runtime guard. + await client.redeem_positions() # pyright: ignore[reportCallIssue] finally: await client.close()