polymarket-client 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- polymarket/__init__.py +416 -0
- polymarket/_frames_bridge.py +14 -0
- polymarket/_internal/__init__.py +0 -0
- polymarket/_internal/actions/__init__.py +0 -0
- polymarket/_internal/actions/_cursor.py +41 -0
- polymarket/_internal/actions/account.py +239 -0
- polymarket/_internal/actions/auth.py +199 -0
- polymarket/_internal/actions/builders.py +68 -0
- polymarket/_internal/actions/clob.py +272 -0
- polymarket/_internal/actions/data.py +573 -0
- polymarket/_internal/actions/gamma.py +742 -0
- polymarket/_internal/actions/orders/__init__.py +0 -0
- polymarket/_internal/actions/orders/_numeric.py +27 -0
- polymarket/_internal/actions/orders/allowance.py +90 -0
- polymarket/_internal/actions/orders/cancel.py +60 -0
- polymarket/_internal/actions/orders/context.py +69 -0
- polymarket/_internal/actions/orders/estimate.py +168 -0
- polymarket/_internal/actions/orders/limit.py +158 -0
- polymarket/_internal/actions/orders/market.py +312 -0
- polymarket/_internal/actions/orders/market_data.py +218 -0
- polymarket/_internal/actions/orders/math.py +48 -0
- polymarket/_internal/actions/orders/orders.py +73 -0
- polymarket/_internal/actions/orders/place.py +190 -0
- polymarket/_internal/actions/orders/post.py +90 -0
- polymarket/_internal/actions/orders/typed_data.py +203 -0
- polymarket/_internal/actions/orders/types.py +54 -0
- polymarket/_internal/actions/perps/__init__.py +0 -0
- polymarket/_internal/actions/perps/account.py +375 -0
- polymarket/_internal/actions/perps/credentials.py +174 -0
- polymarket/_internal/actions/perps/funds.py +115 -0
- polymarket/_internal/actions/perps/paging.py +206 -0
- polymarket/_internal/actions/perps/public.py +300 -0
- polymarket/_internal/actions/perps/signing.py +195 -0
- polymarket/_internal/actions/perps/trading.py +174 -0
- polymarket/_internal/actions/relayer/__init__.py +0 -0
- polymarket/_internal/actions/relayer/approvals.py +219 -0
- polymarket/_internal/actions/relayer/auth.py +93 -0
- polymarket/_internal/actions/relayer/calls.py +351 -0
- polymarket/_internal/actions/relayer/deployed.py +36 -0
- polymarket/_internal/actions/relayer/gasless.py +587 -0
- polymarket/_internal/actions/relayer/nonce.py +64 -0
- polymarket/_internal/actions/relayer/poll.py +99 -0
- polymarket/_internal/actions/relayer/positions.py +357 -0
- polymarket/_internal/actions/relayer/signing/__init__.py +0 -0
- polymarket/_internal/actions/relayer/signing/deposit_wallet.py +96 -0
- polymarket/_internal/actions/relayer/signing/proxy.py +59 -0
- polymarket/_internal/actions/relayer/signing/safe.py +110 -0
- polymarket/_internal/actions/relayer/submit.py +54 -0
- polymarket/_internal/actions/rewards.py +309 -0
- polymarket/_internal/actions/rfq.py +87 -0
- polymarket/_internal/context.py +64 -0
- polymarket/_internal/data_params.py +25 -0
- polymarket/_internal/dispatch.py +338 -0
- polymarket/_internal/eoa/__init__.py +0 -0
- polymarket/_internal/eoa/broadcast.py +165 -0
- polymarket/_internal/eoa/rpc.py +345 -0
- polymarket/_internal/gamma_paths.py +100 -0
- polymarket/_internal/hmac.py +34 -0
- polymarket/_internal/l1_auth.py +84 -0
- polymarket/_internal/pagination.py +330 -0
- polymarket/_internal/perps_session.py +1045 -0
- polymarket/_internal/request.py +87 -0
- polymarket/_internal/rfq.py +802 -0
- polymarket/_internal/streams/__init__.py +0 -0
- polymarket/_internal/streams/clob/__init__.py +0 -0
- polymarket/_internal/streams/clob/heartbeat.py +62 -0
- polymarket/_internal/streams/clob/market.py +209 -0
- polymarket/_internal/streams/clob/market_protocol.py +124 -0
- polymarket/_internal/streams/clob/user.py +213 -0
- polymarket/_internal/streams/clob/user_protocol.py +98 -0
- polymarket/_internal/streams/handle.py +134 -0
- polymarket/_internal/streams/merged_handle.py +140 -0
- polymarket/_internal/streams/perps/__init__.py +0 -0
- polymarket/_internal/streams/perps/heartbeat.py +65 -0
- polymarket/_internal/streams/perps/market.py +209 -0
- polymarket/_internal/streams/perps/market_protocol.py +125 -0
- polymarket/_internal/streams/reconnect.py +93 -0
- polymarket/_internal/streams/registry.py +73 -0
- polymarket/_internal/streams/rtds/__init__.py +0 -0
- polymarket/_internal/streams/rtds/heartbeat.py +60 -0
- polymarket/_internal/streams/rtds/manager.py +183 -0
- polymarket/_internal/streams/rtds/protocol.py +145 -0
- polymarket/_internal/streams/sports/__init__.py +0 -0
- polymarket/_internal/streams/sports/heartbeat.py +69 -0
- polymarket/_internal/streams/sports/manager.py +173 -0
- polymarket/_internal/validation.py +29 -0
- polymarket/_internal/wallet.py +229 -0
- polymarket/_internal/ws/__init__.py +11 -0
- polymarket/_internal/ws/backoff.py +25 -0
- polymarket/_internal/ws/connection.py +277 -0
- polymarket/_internal/ws/heartbeat.py +26 -0
- polymarket/_jupyter.py +72 -0
- polymarket/auth.py +58 -0
- polymarket/calls.py +33 -0
- polymarket/clients/__init__.py +8 -0
- polymarket/clients/_transport.py +372 -0
- polymarket/clients/async_public.py +1498 -0
- polymarket/clients/async_secure.py +3259 -0
- polymarket/clients/public.py +1182 -0
- polymarket/clients/secure.py +2684 -0
- polymarket/environments.py +89 -0
- polymarket/errors.py +67 -0
- polymarket/frames/__init__.py +14 -0
- polymarket/frames/_arrow.py +357 -0
- polymarket/frames/_builtin_overrides.py +46 -0
- polymarket/frames/_errors.py +10 -0
- polymarket/frames/_overrides.py +48 -0
- polymarket/frames/_pandas.py +95 -0
- polymarket/frames/_polars.py +94 -0
- polymarket/models/__init__.py +379 -0
- polymarket/models/base.py +40 -0
- polymarket/models/clob/__init__.py +85 -0
- polymarket/models/clob/_validators.py +239 -0
- polymarket/models/clob/account.py +200 -0
- polymarket/models/clob/api_key.py +38 -0
- polymarket/models/clob/builder.py +74 -0
- polymarket/models/clob/cancel.py +16 -0
- polymarket/models/clob/last_trade.py +21 -0
- polymarket/models/clob/market_events.py +230 -0
- polymarket/models/clob/order_book.py +95 -0
- polymarket/models/clob/order_response.py +151 -0
- polymarket/models/clob/orders.py +31 -0
- polymarket/models/clob/price_history.py +28 -0
- polymarket/models/clob/relayer.py +105 -0
- polymarket/models/clob/requests.py +13 -0
- polymarket/models/clob/rewards.py +235 -0
- polymarket/models/clob/user_events.py +172 -0
- polymarket/models/data/__init__.py +104 -0
- polymarket/models/data/activity.py +474 -0
- polymarket/models/data/analytics.py +91 -0
- polymarket/models/data/leaderboard.py +88 -0
- polymarket/models/data/market_positions.py +57 -0
- polymarket/models/data/portfolio.py +281 -0
- polymarket/models/gamma/__init__.py +115 -0
- polymarket/models/gamma/comment.py +127 -0
- polymarket/models/gamma/common.py +425 -0
- polymarket/models/gamma/event.py +528 -0
- polymarket/models/gamma/market.py +582 -0
- polymarket/models/gamma/profile.py +54 -0
- polymarket/models/gamma/search.py +168 -0
- polymarket/models/gamma/series.py +19 -0
- polymarket/models/gamma/tag.py +22 -0
- polymarket/models/perps/__init__.py +181 -0
- polymarket/models/perps/_validators.py +64 -0
- polymarket/models/perps/account.py +163 -0
- polymarket/models/perps/credentials.py +46 -0
- polymarket/models/perps/events.py +367 -0
- polymarket/models/perps/funds.py +80 -0
- polymarket/models/perps/market.py +225 -0
- polymarket/models/perps/orders.py +174 -0
- polymarket/models/perps/requests.py +176 -0
- polymarket/models/perps/results.py +41 -0
- polymarket/models/perps/types.py +72 -0
- polymarket/models/rfq.py +150 -0
- polymarket/models/rtds_events.py +237 -0
- polymarket/models/sports_events.py +63 -0
- polymarket/models/types.py +135 -0
- polymarket/pagination.py +315 -0
- polymarket/perps.py +21 -0
- polymarket/py.typed +0 -0
- polymarket/rfq.py +300 -0
- polymarket/streams/__init__.py +194 -0
- polymarket/streams/_specs.py +369 -0
- polymarket/transactions.py +181 -0
- polymarket/types.py +9 -0
- polymarket/version.py +8 -0
- polymarket_client-0.1.0.dist-info/METADATA +242 -0
- polymarket_client-0.1.0.dist-info/RECORD +170 -0
- polymarket_client-0.1.0.dist-info/WHEEL +4 -0
- polymarket_client-0.1.0.dist-info/licenses/LICENSE +21 -0
polymarket/__init__.py
ADDED
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
from polymarket.auth import BuilderApiKey, RelayerApiKey
|
|
2
|
+
from polymarket.calls import TransactionCall
|
|
3
|
+
from polymarket.clients import AsyncPublicClient, AsyncSecureClient, PublicClient, SecureClient
|
|
4
|
+
from polymarket.environments import PRODUCTION, Environment
|
|
5
|
+
from polymarket.errors import (
|
|
6
|
+
CancelledSigningError,
|
|
7
|
+
ConnectionLostError,
|
|
8
|
+
InsufficientAllowanceError,
|
|
9
|
+
InsufficientLiquidityError,
|
|
10
|
+
PolymarketError,
|
|
11
|
+
RateLimitError,
|
|
12
|
+
RequestRejectedError,
|
|
13
|
+
SigningError,
|
|
14
|
+
TimeoutError,
|
|
15
|
+
TransactionFailedError,
|
|
16
|
+
TransportError,
|
|
17
|
+
UnexpectedResponseError,
|
|
18
|
+
UserInputError,
|
|
19
|
+
)
|
|
20
|
+
from polymarket.models import (
|
|
21
|
+
AcceptedOrder,
|
|
22
|
+
Activity,
|
|
23
|
+
ActivityType,
|
|
24
|
+
ApiKeyCreds,
|
|
25
|
+
AssetType,
|
|
26
|
+
BalanceAllowance,
|
|
27
|
+
BuilderApiKeyInfo,
|
|
28
|
+
BuilderFeeRates,
|
|
29
|
+
BuilderTrade,
|
|
30
|
+
BuilderVolumeEntry,
|
|
31
|
+
BuilderVolumeTimePeriod,
|
|
32
|
+
CancelOrdersResponse,
|
|
33
|
+
ClobTrade,
|
|
34
|
+
ClosedPosition,
|
|
35
|
+
ComboActivity,
|
|
36
|
+
ComboActivityId,
|
|
37
|
+
ComboActivityType,
|
|
38
|
+
ComboCompressActivity,
|
|
39
|
+
ComboConditionId,
|
|
40
|
+
ComboConvertActivity,
|
|
41
|
+
ComboMarket,
|
|
42
|
+
ComboMarketOutcome,
|
|
43
|
+
ComboMarketOutcomes,
|
|
44
|
+
ComboMergeActivity,
|
|
45
|
+
ComboPosition,
|
|
46
|
+
ComboPositionLeg,
|
|
47
|
+
ComboPositionMarket,
|
|
48
|
+
ComboPositionMarketEvent,
|
|
49
|
+
ComboPositionOutcome,
|
|
50
|
+
ComboPositionStatus,
|
|
51
|
+
ComboRedeemActivity,
|
|
52
|
+
ComboSplitActivity,
|
|
53
|
+
ComboTradeActivity,
|
|
54
|
+
ComboUnwrapActivity,
|
|
55
|
+
ComboWrapActivity,
|
|
56
|
+
Comment,
|
|
57
|
+
CommentId,
|
|
58
|
+
ConditionId,
|
|
59
|
+
ConversionActivity,
|
|
60
|
+
CtfConditionId,
|
|
61
|
+
CurrentReward,
|
|
62
|
+
CurrentRewardConfig,
|
|
63
|
+
EarningBreakdown,
|
|
64
|
+
Event,
|
|
65
|
+
EventId,
|
|
66
|
+
GaslessTransaction,
|
|
67
|
+
Holder,
|
|
68
|
+
LastTradePrice,
|
|
69
|
+
LastTradePriceForToken,
|
|
70
|
+
LeaderboardCategory,
|
|
71
|
+
LeaderboardEntry,
|
|
72
|
+
LeaderboardOrderBy,
|
|
73
|
+
LeaderboardTimePeriod,
|
|
74
|
+
LiveVolume,
|
|
75
|
+
MakerOrder,
|
|
76
|
+
MakerRebateActivity,
|
|
77
|
+
Market,
|
|
78
|
+
MarketId,
|
|
79
|
+
MarketOrderType,
|
|
80
|
+
MarketPosition,
|
|
81
|
+
MarketReward,
|
|
82
|
+
MarketRewardConfig,
|
|
83
|
+
MarketRewardToken,
|
|
84
|
+
MarketVolume,
|
|
85
|
+
MergeActivity,
|
|
86
|
+
MetaHolder,
|
|
87
|
+
MetaMarketPosition,
|
|
88
|
+
Notification,
|
|
89
|
+
OpenInterest,
|
|
90
|
+
OpenOrder,
|
|
91
|
+
OrderBook,
|
|
92
|
+
OrderBookLevel,
|
|
93
|
+
OrderId,
|
|
94
|
+
OrderPostStatus,
|
|
95
|
+
OrderResponse,
|
|
96
|
+
OrderResponseErrorCode,
|
|
97
|
+
OrderSide,
|
|
98
|
+
OrderType,
|
|
99
|
+
PerpsBalance,
|
|
100
|
+
PerpsBook,
|
|
101
|
+
PerpsCandle,
|
|
102
|
+
PerpsCredentials,
|
|
103
|
+
PerpsDeposit,
|
|
104
|
+
PerpsFeeScheduleEntry,
|
|
105
|
+
PerpsFill,
|
|
106
|
+
PerpsFundingPayment,
|
|
107
|
+
PerpsFundingRate,
|
|
108
|
+
PerpsInstrument,
|
|
109
|
+
PerpsOrder,
|
|
110
|
+
PerpsOrderPlacement,
|
|
111
|
+
PerpsOrderRequest,
|
|
112
|
+
PerpsPlacedTpSlOrder,
|
|
113
|
+
PerpsPlacedTpSlOrders,
|
|
114
|
+
PerpsPortfolio,
|
|
115
|
+
PerpsPosition,
|
|
116
|
+
PerpsPositionTpSlTrigger,
|
|
117
|
+
PerpsTicker,
|
|
118
|
+
PerpsTpSlTrigger,
|
|
119
|
+
PerpsTrade,
|
|
120
|
+
PerpsWithdrawal,
|
|
121
|
+
PortfolioValue,
|
|
122
|
+
Position,
|
|
123
|
+
PositionId,
|
|
124
|
+
PriceHistoryInterval,
|
|
125
|
+
PriceHistoryPoint,
|
|
126
|
+
PriceRequest,
|
|
127
|
+
Profile,
|
|
128
|
+
PublicProfile,
|
|
129
|
+
QuestionId,
|
|
130
|
+
RedeemActivity,
|
|
131
|
+
ReferralRewardActivity,
|
|
132
|
+
RejectedOrder,
|
|
133
|
+
RelatedTag,
|
|
134
|
+
RelayerTransactionState,
|
|
135
|
+
ResolutionRequestId,
|
|
136
|
+
RewardActivity,
|
|
137
|
+
RewardsPercentages,
|
|
138
|
+
SearchResults,
|
|
139
|
+
SearchTag,
|
|
140
|
+
Series,
|
|
141
|
+
SeriesId,
|
|
142
|
+
SignedOrder,
|
|
143
|
+
SplitActivity,
|
|
144
|
+
SportsMarketTypes,
|
|
145
|
+
SportsMetadata,
|
|
146
|
+
Tag,
|
|
147
|
+
TagId,
|
|
148
|
+
TagReference,
|
|
149
|
+
Team,
|
|
150
|
+
TickSize,
|
|
151
|
+
TokenId,
|
|
152
|
+
TotalUserEarning,
|
|
153
|
+
Trade,
|
|
154
|
+
TradeActivity,
|
|
155
|
+
TradedMarketCount,
|
|
156
|
+
TraderLeaderboardEntry,
|
|
157
|
+
TransactionOutcome,
|
|
158
|
+
UnknownActivity,
|
|
159
|
+
UserEarning,
|
|
160
|
+
UserRewardsConfig,
|
|
161
|
+
UserRewardsEarning,
|
|
162
|
+
YieldActivity,
|
|
163
|
+
to_combo_condition_id,
|
|
164
|
+
to_ctf_condition_id,
|
|
165
|
+
)
|
|
166
|
+
from polymarket.pagination import AsyncPaginator, Page, Paginator
|
|
167
|
+
from polymarket.rfq import (
|
|
168
|
+
RfqCancelQuoteAck,
|
|
169
|
+
RfqCancelQuoteRejectedError,
|
|
170
|
+
RfqConfirmationAck,
|
|
171
|
+
RfqConfirmationDecision,
|
|
172
|
+
RfqConfirmationRejectedError,
|
|
173
|
+
RfqConfirmationRequestEvent,
|
|
174
|
+
RfqDirection,
|
|
175
|
+
RfqErrorCode,
|
|
176
|
+
RfqEvent,
|
|
177
|
+
RfqExecutionStatus,
|
|
178
|
+
RfqExecutionUpdateEvent,
|
|
179
|
+
RfqId,
|
|
180
|
+
RfqQuoteId,
|
|
181
|
+
RfqQuoteReference,
|
|
182
|
+
RfqQuoteRejectedError,
|
|
183
|
+
RfqQuoteRequestEvent,
|
|
184
|
+
RfqQuoteSource,
|
|
185
|
+
RfqRequestedSize,
|
|
186
|
+
RfqRequestedSizeUnit,
|
|
187
|
+
RfqRequestorPublicId,
|
|
188
|
+
RfqSession,
|
|
189
|
+
RfqSide,
|
|
190
|
+
RfqTradeEvent,
|
|
191
|
+
)
|
|
192
|
+
from polymarket.transactions import (
|
|
193
|
+
EoaTransactionHandle,
|
|
194
|
+
GaslessTransactionHandle,
|
|
195
|
+
MergeComboPositionRequest,
|
|
196
|
+
MergeMarketConditionRequest,
|
|
197
|
+
MergeMarketIdRequest,
|
|
198
|
+
MergeMarketPositionRequest,
|
|
199
|
+
MergePositionRequest,
|
|
200
|
+
SyncEoaTransactionHandle,
|
|
201
|
+
SyncGaslessTransactionHandle,
|
|
202
|
+
SyncTransactionHandle,
|
|
203
|
+
TransactionHandle,
|
|
204
|
+
)
|
|
205
|
+
from polymarket.types import EvmAddress, HexString, TransactionHash
|
|
206
|
+
from polymarket.version import __version__
|
|
207
|
+
|
|
208
|
+
__all__ = [
|
|
209
|
+
"PRODUCTION",
|
|
210
|
+
"AcceptedOrder",
|
|
211
|
+
"Activity",
|
|
212
|
+
"ActivityType",
|
|
213
|
+
"ApiKeyCreds",
|
|
214
|
+
"AssetType",
|
|
215
|
+
"AsyncPaginator",
|
|
216
|
+
"AsyncPublicClient",
|
|
217
|
+
"AsyncSecureClient",
|
|
218
|
+
"BalanceAllowance",
|
|
219
|
+
"BuilderApiKey",
|
|
220
|
+
"BuilderApiKeyInfo",
|
|
221
|
+
"BuilderFeeRates",
|
|
222
|
+
"BuilderTrade",
|
|
223
|
+
"BuilderVolumeEntry",
|
|
224
|
+
"BuilderVolumeTimePeriod",
|
|
225
|
+
"CancelOrdersResponse",
|
|
226
|
+
"CancelledSigningError",
|
|
227
|
+
"ConnectionLostError",
|
|
228
|
+
"ClobTrade",
|
|
229
|
+
"ClosedPosition",
|
|
230
|
+
"ComboActivity",
|
|
231
|
+
"ComboActivityId",
|
|
232
|
+
"ComboActivityType",
|
|
233
|
+
"ComboCompressActivity",
|
|
234
|
+
"ComboConvertActivity",
|
|
235
|
+
"ComboPosition",
|
|
236
|
+
"Comment",
|
|
237
|
+
"ComboPositionLeg",
|
|
238
|
+
"ComboPositionMarket",
|
|
239
|
+
"ComboPositionMarketEvent",
|
|
240
|
+
"ComboPositionOutcome",
|
|
241
|
+
"ComboPositionStatus",
|
|
242
|
+
"ComboRedeemActivity",
|
|
243
|
+
"ComboSplitActivity",
|
|
244
|
+
"ComboTradeActivity",
|
|
245
|
+
"ComboUnwrapActivity",
|
|
246
|
+
"ComboWrapActivity",
|
|
247
|
+
"CommentId",
|
|
248
|
+
"ComboConditionId",
|
|
249
|
+
"ComboMarket",
|
|
250
|
+
"ComboMarketOutcome",
|
|
251
|
+
"ComboMarketOutcomes",
|
|
252
|
+
"ConditionId",
|
|
253
|
+
"CtfConditionId",
|
|
254
|
+
"ConversionActivity",
|
|
255
|
+
"CurrentReward",
|
|
256
|
+
"CurrentRewardConfig",
|
|
257
|
+
"EarningBreakdown",
|
|
258
|
+
"EoaTransactionHandle",
|
|
259
|
+
"Environment",
|
|
260
|
+
"Event",
|
|
261
|
+
"EventId",
|
|
262
|
+
"EvmAddress",
|
|
263
|
+
"GaslessTransaction",
|
|
264
|
+
"GaslessTransactionHandle",
|
|
265
|
+
"HexString",
|
|
266
|
+
"Holder",
|
|
267
|
+
"InsufficientAllowanceError",
|
|
268
|
+
"InsufficientLiquidityError",
|
|
269
|
+
"LastTradePrice",
|
|
270
|
+
"LastTradePriceForToken",
|
|
271
|
+
"LeaderboardCategory",
|
|
272
|
+
"LeaderboardEntry",
|
|
273
|
+
"LeaderboardOrderBy",
|
|
274
|
+
"LeaderboardTimePeriod",
|
|
275
|
+
"LiveVolume",
|
|
276
|
+
"MakerOrder",
|
|
277
|
+
"MakerRebateActivity",
|
|
278
|
+
"Market",
|
|
279
|
+
"MarketId",
|
|
280
|
+
"MarketOrderType",
|
|
281
|
+
"MarketPosition",
|
|
282
|
+
"MarketReward",
|
|
283
|
+
"MarketRewardConfig",
|
|
284
|
+
"MarketRewardToken",
|
|
285
|
+
"MarketVolume",
|
|
286
|
+
"MergeActivity",
|
|
287
|
+
"ComboMergeActivity",
|
|
288
|
+
"MergeComboPositionRequest",
|
|
289
|
+
"MergeMarketConditionRequest",
|
|
290
|
+
"MergeMarketIdRequest",
|
|
291
|
+
"MergeMarketPositionRequest",
|
|
292
|
+
"MergePositionRequest",
|
|
293
|
+
"MetaHolder",
|
|
294
|
+
"MetaMarketPosition",
|
|
295
|
+
"Notification",
|
|
296
|
+
"OpenInterest",
|
|
297
|
+
"OpenOrder",
|
|
298
|
+
"OrderBook",
|
|
299
|
+
"OrderBookLevel",
|
|
300
|
+
"OrderId",
|
|
301
|
+
"OrderPostStatus",
|
|
302
|
+
"OrderResponse",
|
|
303
|
+
"OrderResponseErrorCode",
|
|
304
|
+
"OrderSide",
|
|
305
|
+
"OrderType",
|
|
306
|
+
"Page",
|
|
307
|
+
"Paginator",
|
|
308
|
+
"PerpsBalance",
|
|
309
|
+
"PerpsBook",
|
|
310
|
+
"PerpsCandle",
|
|
311
|
+
"PerpsCredentials",
|
|
312
|
+
"PerpsDeposit",
|
|
313
|
+
"PerpsFeeScheduleEntry",
|
|
314
|
+
"PerpsFill",
|
|
315
|
+
"PerpsFundingPayment",
|
|
316
|
+
"PerpsFundingRate",
|
|
317
|
+
"PerpsInstrument",
|
|
318
|
+
"PerpsOrder",
|
|
319
|
+
"PerpsOrderPlacement",
|
|
320
|
+
"PerpsOrderRequest",
|
|
321
|
+
"PerpsPlacedTpSlOrder",
|
|
322
|
+
"PerpsPlacedTpSlOrders",
|
|
323
|
+
"PerpsPortfolio",
|
|
324
|
+
"PerpsPosition",
|
|
325
|
+
"PerpsPositionTpSlTrigger",
|
|
326
|
+
"PerpsTicker",
|
|
327
|
+
"PerpsTpSlTrigger",
|
|
328
|
+
"PerpsTrade",
|
|
329
|
+
"PerpsWithdrawal",
|
|
330
|
+
"PolymarketError",
|
|
331
|
+
"PortfolioValue",
|
|
332
|
+
"Position",
|
|
333
|
+
"PositionId",
|
|
334
|
+
"PriceHistoryInterval",
|
|
335
|
+
"PriceHistoryPoint",
|
|
336
|
+
"PriceRequest",
|
|
337
|
+
"Profile",
|
|
338
|
+
"PublicClient",
|
|
339
|
+
"PublicProfile",
|
|
340
|
+
"QuestionId",
|
|
341
|
+
"RateLimitError",
|
|
342
|
+
"RedeemActivity",
|
|
343
|
+
"ReferralRewardActivity",
|
|
344
|
+
"RejectedOrder",
|
|
345
|
+
"RelatedTag",
|
|
346
|
+
"RelayerApiKey",
|
|
347
|
+
"RelayerTransactionState",
|
|
348
|
+
"RequestRejectedError",
|
|
349
|
+
"ResolutionRequestId",
|
|
350
|
+
"RewardActivity",
|
|
351
|
+
"RewardsPercentages",
|
|
352
|
+
"RfqCancelQuoteAck",
|
|
353
|
+
"RfqCancelQuoteRejectedError",
|
|
354
|
+
"RfqConfirmationAck",
|
|
355
|
+
"RfqConfirmationDecision",
|
|
356
|
+
"RfqConfirmationRejectedError",
|
|
357
|
+
"RfqConfirmationRequestEvent",
|
|
358
|
+
"RfqDirection",
|
|
359
|
+
"RfqErrorCode",
|
|
360
|
+
"RfqEvent",
|
|
361
|
+
"RfqExecutionStatus",
|
|
362
|
+
"RfqExecutionUpdateEvent",
|
|
363
|
+
"RfqId",
|
|
364
|
+
"RfqQuoteId",
|
|
365
|
+
"RfqQuoteReference",
|
|
366
|
+
"RfqQuoteRejectedError",
|
|
367
|
+
"RfqQuoteRequestEvent",
|
|
368
|
+
"RfqQuoteSource",
|
|
369
|
+
"RfqRequestedSize",
|
|
370
|
+
"RfqRequestedSizeUnit",
|
|
371
|
+
"RfqRequestorPublicId",
|
|
372
|
+
"RfqSession",
|
|
373
|
+
"RfqSide",
|
|
374
|
+
"RfqTradeEvent",
|
|
375
|
+
"SearchResults",
|
|
376
|
+
"SearchTag",
|
|
377
|
+
"SecureClient",
|
|
378
|
+
"Series",
|
|
379
|
+
"SeriesId",
|
|
380
|
+
"SignedOrder",
|
|
381
|
+
"SigningError",
|
|
382
|
+
"SplitActivity",
|
|
383
|
+
"SportsMarketTypes",
|
|
384
|
+
"SportsMetadata",
|
|
385
|
+
"SyncEoaTransactionHandle",
|
|
386
|
+
"SyncGaslessTransactionHandle",
|
|
387
|
+
"SyncTransactionHandle",
|
|
388
|
+
"Tag",
|
|
389
|
+
"TagId",
|
|
390
|
+
"TagReference",
|
|
391
|
+
"Team",
|
|
392
|
+
"TickSize",
|
|
393
|
+
"TimeoutError",
|
|
394
|
+
"TokenId",
|
|
395
|
+
"TotalUserEarning",
|
|
396
|
+
"to_combo_condition_id",
|
|
397
|
+
"to_ctf_condition_id",
|
|
398
|
+
"Trade",
|
|
399
|
+
"TradeActivity",
|
|
400
|
+
"TradedMarketCount",
|
|
401
|
+
"TraderLeaderboardEntry",
|
|
402
|
+
"TransactionCall",
|
|
403
|
+
"TransactionFailedError",
|
|
404
|
+
"TransactionHandle",
|
|
405
|
+
"TransactionHash",
|
|
406
|
+
"TransactionOutcome",
|
|
407
|
+
"TransportError",
|
|
408
|
+
"UnexpectedResponseError",
|
|
409
|
+
"UnknownActivity",
|
|
410
|
+
"UserEarning",
|
|
411
|
+
"UserInputError",
|
|
412
|
+
"UserRewardsConfig",
|
|
413
|
+
"UserRewardsEarning",
|
|
414
|
+
"YieldActivity",
|
|
415
|
+
"__version__",
|
|
416
|
+
]
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""Lazy, type-erased lookup of :mod:`polymarket.frames` functions for non-frames modules."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any, Literal
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def frames_func(name: Literal["to_arrow", "to_pandas", "to_polars"]) -> Any:
|
|
9
|
+
from polymarket import frames
|
|
10
|
+
|
|
11
|
+
return getattr(frames, name)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
__all__ = ["frames_func"]
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
from polymarket.errors import UnexpectedResponseError, UserInputError
|
|
2
|
+
|
|
3
|
+
END_CURSOR = "LTE="
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def validate_cursor(value: str | None) -> str | None:
|
|
7
|
+
if value is None:
|
|
8
|
+
return None
|
|
9
|
+
if not value:
|
|
10
|
+
raise UserInputError("cursor must be a non-empty string when provided.")
|
|
11
|
+
return value
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def next_cursor_or_none(raw: object) -> str | None:
|
|
15
|
+
if raw is None:
|
|
16
|
+
return None
|
|
17
|
+
if not isinstance(raw, str):
|
|
18
|
+
raise UnexpectedResponseError(
|
|
19
|
+
f"expected next_cursor to be a string, got {type(raw).__name__}"
|
|
20
|
+
)
|
|
21
|
+
if raw == END_CURSOR:
|
|
22
|
+
return None
|
|
23
|
+
if not raw:
|
|
24
|
+
raise UnexpectedResponseError(
|
|
25
|
+
"expected next_cursor to be non-empty or the END_CURSOR sentinel"
|
|
26
|
+
)
|
|
27
|
+
return raw
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def optional_int(payload: dict[str, object], key: str) -> int | None:
|
|
31
|
+
if key not in payload:
|
|
32
|
+
return None
|
|
33
|
+
value = payload[key]
|
|
34
|
+
if value is None:
|
|
35
|
+
return None
|
|
36
|
+
if isinstance(value, bool) or not isinstance(value, int):
|
|
37
|
+
raise UnexpectedResponseError(f"expected '{key}' to be an int, got {type(value).__name__}")
|
|
38
|
+
return value
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
__all__ = ["END_CURSOR", "next_cursor_or_none", "optional_int", "validate_cursor"]
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
from collections.abc import Sequence
|
|
2
|
+
from typing import cast
|
|
3
|
+
|
|
4
|
+
from pydantic import TypeAdapter, ValidationError
|
|
5
|
+
|
|
6
|
+
from polymarket._internal.actions._cursor import (
|
|
7
|
+
END_CURSOR,
|
|
8
|
+
next_cursor_or_none,
|
|
9
|
+
optional_int,
|
|
10
|
+
validate_cursor,
|
|
11
|
+
)
|
|
12
|
+
from polymarket._internal.request import QueryParamValue
|
|
13
|
+
from polymarket._internal.validation import require_nonempty
|
|
14
|
+
from polymarket.errors import UnexpectedResponseError, UserInputError
|
|
15
|
+
from polymarket.models.clob import (
|
|
16
|
+
AssetType,
|
|
17
|
+
BalanceAllowance,
|
|
18
|
+
ClobTrade,
|
|
19
|
+
Notification,
|
|
20
|
+
OpenOrder,
|
|
21
|
+
)
|
|
22
|
+
from polymarket.pagination import Page
|
|
23
|
+
|
|
24
|
+
_OpenOrdersAdapter = TypeAdapter(tuple[OpenOrder, ...])
|
|
25
|
+
_ClobTradesAdapter = TypeAdapter(tuple[ClobTrade, ...])
|
|
26
|
+
_NotificationsAdapter = TypeAdapter(tuple[Notification, ...])
|
|
27
|
+
|
|
28
|
+
_VALID_ASSET_TYPES: frozenset[str] = frozenset({"COLLATERAL", "CONDITIONAL"})
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def _validate_asset_type(asset_type: object) -> None:
|
|
32
|
+
if asset_type not in _VALID_ASSET_TYPES:
|
|
33
|
+
raise UserInputError(
|
|
34
|
+
f"asset_type must be 'COLLATERAL' or 'CONDITIONAL', got {asset_type!r}."
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _add_optional(params: dict[str, QueryParamValue], key: str, value: object) -> None:
|
|
39
|
+
if value is None:
|
|
40
|
+
return
|
|
41
|
+
if not isinstance(value, str | int | float | bool):
|
|
42
|
+
raise UserInputError(f"{key} must be a primitive, got {type(value).__name__}.")
|
|
43
|
+
params[key] = value
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def build_closed_only_mode_request() -> tuple[str, dict[str, str]]:
|
|
47
|
+
return "/auth/ban-status/closed-only", {}
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def parse_closed_only_mode(data: object) -> bool:
|
|
51
|
+
if not isinstance(data, dict):
|
|
52
|
+
raise UnexpectedResponseError("closed-only mode response did not match expected shape")
|
|
53
|
+
raw = cast(dict[str, object], data).get("closed_only")
|
|
54
|
+
if not isinstance(raw, bool):
|
|
55
|
+
raise UnexpectedResponseError(
|
|
56
|
+
f"closed-only mode response 'closed_only' must be a bool, got {type(raw).__name__}"
|
|
57
|
+
)
|
|
58
|
+
return raw
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def build_list_open_orders_request(
|
|
62
|
+
*,
|
|
63
|
+
token_id: str | None = None,
|
|
64
|
+
id: str | None = None,
|
|
65
|
+
market: str | None = None,
|
|
66
|
+
cursor: str | None = None,
|
|
67
|
+
) -> tuple[str, dict[str, QueryParamValue]]:
|
|
68
|
+
params: dict[str, QueryParamValue] = {}
|
|
69
|
+
if token_id is not None:
|
|
70
|
+
_add_optional(params, "asset_id", require_nonempty("token_id", token_id))
|
|
71
|
+
if id is not None:
|
|
72
|
+
_add_optional(params, "id", require_nonempty("id", id))
|
|
73
|
+
if market is not None:
|
|
74
|
+
_add_optional(params, "market", require_nonempty("market", market))
|
|
75
|
+
validated_cursor = validate_cursor(cursor)
|
|
76
|
+
if validated_cursor is not None:
|
|
77
|
+
_add_optional(params, "next_cursor", validated_cursor)
|
|
78
|
+
return "/data/orders", params
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def parse_open_orders_page(data: object) -> Page[OpenOrder]:
|
|
82
|
+
if not isinstance(data, dict):
|
|
83
|
+
raise UnexpectedResponseError("open orders response did not match expected shape")
|
|
84
|
+
payload = cast(dict[str, object], data)
|
|
85
|
+
try:
|
|
86
|
+
items = _OpenOrdersAdapter.validate_python(payload.get("data"))
|
|
87
|
+
except ValidationError as error:
|
|
88
|
+
raise UnexpectedResponseError("open orders response items malformed") from error
|
|
89
|
+
next_cursor = next_cursor_or_none(payload.get("next_cursor"))
|
|
90
|
+
return Page(
|
|
91
|
+
items=items,
|
|
92
|
+
has_more=next_cursor is not None,
|
|
93
|
+
next_cursor=next_cursor,
|
|
94
|
+
total_count=optional_int(payload, "count"),
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def build_get_order_request(*, order_id: str) -> tuple[str, dict[str, str]]:
|
|
99
|
+
validated = require_nonempty("order_id", order_id)
|
|
100
|
+
return f"/data/order/{validated}", {}
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def parse_open_order(data: object) -> OpenOrder:
|
|
104
|
+
return OpenOrder.parse_response(data)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def build_list_account_trades_request(
|
|
108
|
+
*,
|
|
109
|
+
token_id: str | None = None,
|
|
110
|
+
id: str | None = None,
|
|
111
|
+
market: str | None = None,
|
|
112
|
+
maker_address: str | None = None,
|
|
113
|
+
after: str | None = None,
|
|
114
|
+
before: str | None = None,
|
|
115
|
+
cursor: str | None = None,
|
|
116
|
+
) -> tuple[str, dict[str, QueryParamValue]]:
|
|
117
|
+
params: dict[str, QueryParamValue] = {}
|
|
118
|
+
if token_id is not None:
|
|
119
|
+
_add_optional(params, "asset_id", require_nonempty("token_id", token_id))
|
|
120
|
+
if id is not None:
|
|
121
|
+
_add_optional(params, "id", require_nonempty("id", id))
|
|
122
|
+
if market is not None:
|
|
123
|
+
_add_optional(params, "market", require_nonempty("market", market))
|
|
124
|
+
if maker_address is not None:
|
|
125
|
+
_add_optional(params, "maker_address", require_nonempty("maker_address", maker_address))
|
|
126
|
+
if after is not None:
|
|
127
|
+
_add_optional(params, "after", require_nonempty("after", after))
|
|
128
|
+
if before is not None:
|
|
129
|
+
_add_optional(params, "before", require_nonempty("before", before))
|
|
130
|
+
validated_cursor = validate_cursor(cursor)
|
|
131
|
+
if validated_cursor is not None:
|
|
132
|
+
_add_optional(params, "next_cursor", validated_cursor)
|
|
133
|
+
return "/data/trades", params
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def parse_account_trades_page(data: object) -> Page[ClobTrade]:
|
|
137
|
+
if not isinstance(data, dict):
|
|
138
|
+
raise UnexpectedResponseError("account trades response did not match expected shape")
|
|
139
|
+
payload = cast(dict[str, object], data)
|
|
140
|
+
try:
|
|
141
|
+
items = _ClobTradesAdapter.validate_python(payload.get("data"))
|
|
142
|
+
except ValidationError as error:
|
|
143
|
+
raise UnexpectedResponseError("account trades response items malformed") from error
|
|
144
|
+
next_cursor = next_cursor_or_none(payload.get("next_cursor"))
|
|
145
|
+
return Page(
|
|
146
|
+
items=items,
|
|
147
|
+
has_more=next_cursor is not None,
|
|
148
|
+
next_cursor=next_cursor,
|
|
149
|
+
total_count=optional_int(payload, "count"),
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def build_notifications_request(*, signature_type: int) -> tuple[str, dict[str, QueryParamValue]]:
|
|
154
|
+
return "/notifications", {"signature_type": signature_type}
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def parse_notifications(data: object) -> tuple[Notification, ...]:
|
|
158
|
+
try:
|
|
159
|
+
return _NotificationsAdapter.validate_python(data)
|
|
160
|
+
except ValidationError as error:
|
|
161
|
+
raise UnexpectedResponseError(
|
|
162
|
+
"notifications response did not match expected shape"
|
|
163
|
+
) from error
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def build_drop_notifications_request(
|
|
167
|
+
*, ids: Sequence[int | str], signature_type: int
|
|
168
|
+
) -> tuple[str, dict[str, QueryParamValue]]:
|
|
169
|
+
if isinstance(ids, str | bytes):
|
|
170
|
+
raise UserInputError("ids must be a sequence of notification ids, not a single string.")
|
|
171
|
+
if not ids:
|
|
172
|
+
raise UserInputError("ids must be a non-empty sequence.")
|
|
173
|
+
validated: list[str] = []
|
|
174
|
+
for entry in cast(Sequence[object], ids):
|
|
175
|
+
if isinstance(entry, bool) or not isinstance(entry, int | str):
|
|
176
|
+
raise UserInputError(f"ids entry must be an int or string, got {type(entry).__name__}.")
|
|
177
|
+
if isinstance(entry, str):
|
|
178
|
+
validated.append(require_nonempty("notification id", entry))
|
|
179
|
+
else:
|
|
180
|
+
validated.append(str(entry))
|
|
181
|
+
return "/notifications", {
|
|
182
|
+
"ids": ",".join(validated),
|
|
183
|
+
"signature_type": signature_type,
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
def build_balance_allowance_request(
|
|
188
|
+
*,
|
|
189
|
+
asset_type: AssetType,
|
|
190
|
+
token_id: str | None,
|
|
191
|
+
signature_type: int,
|
|
192
|
+
) -> tuple[str, dict[str, QueryParamValue]]:
|
|
193
|
+
_validate_asset_type(asset_type)
|
|
194
|
+
params: dict[str, QueryParamValue] = {
|
|
195
|
+
"asset_type": asset_type,
|
|
196
|
+
"signature_type": signature_type,
|
|
197
|
+
}
|
|
198
|
+
if token_id is not None:
|
|
199
|
+
params["token_id"] = require_nonempty("token_id", token_id)
|
|
200
|
+
return "/balance-allowance", params
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
def parse_balance_allowance(data: object) -> BalanceAllowance:
|
|
204
|
+
return BalanceAllowance.parse_response(data)
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
def build_update_balance_allowance_request(
|
|
208
|
+
*,
|
|
209
|
+
asset_type: AssetType,
|
|
210
|
+
token_id: str | None,
|
|
211
|
+
signature_type: int,
|
|
212
|
+
) -> tuple[str, dict[str, QueryParamValue]]:
|
|
213
|
+
_validate_asset_type(asset_type)
|
|
214
|
+
params: dict[str, QueryParamValue] = {
|
|
215
|
+
"asset_type": asset_type,
|
|
216
|
+
"signature_type": signature_type,
|
|
217
|
+
}
|
|
218
|
+
if token_id is not None:
|
|
219
|
+
params["token_id"] = require_nonempty("token_id", token_id)
|
|
220
|
+
return "/balance-allowance/update", params
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
__all__ = [
|
|
224
|
+
"END_CURSOR",
|
|
225
|
+
"build_balance_allowance_request",
|
|
226
|
+
"build_closed_only_mode_request",
|
|
227
|
+
"build_drop_notifications_request",
|
|
228
|
+
"build_get_order_request",
|
|
229
|
+
"build_list_account_trades_request",
|
|
230
|
+
"build_list_open_orders_request",
|
|
231
|
+
"build_notifications_request",
|
|
232
|
+
"build_update_balance_allowance_request",
|
|
233
|
+
"parse_account_trades_page",
|
|
234
|
+
"parse_balance_allowance",
|
|
235
|
+
"parse_closed_only_mode",
|
|
236
|
+
"parse_notifications",
|
|
237
|
+
"parse_open_order",
|
|
238
|
+
"parse_open_orders_page",
|
|
239
|
+
]
|