polymarket-apis 0.2.2__py3-none-any.whl → 0.2.4__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.

Potentially problematic release.


This version of polymarket-apis might be problematic. Click here for more details.

@@ -1,43 +1,66 @@
1
1
  from datetime import datetime
2
- from typing import Literal
2
+ from typing import Literal, Optional
3
3
 
4
- from pydantic import BaseModel, Field, field_validator
5
-
6
- from ..types.clob_types import MakerOrder, OrderBookSummary, PriceLevel, TickSize
7
- from ..types.common import EthAddress, Keccak256
4
+ from pydantic import AliasChoices, BaseModel, Field, field_validator
8
5
 
6
+ from ..types.clob_types import MakerOrder, OrderBookSummary, TickSize
7
+ from ..types.common import EthAddress, Keccak256, TimeseriesPoint
9
8
 
10
9
  # wss://ws-subscriptions-clob.polymarket.com/ws/market types
11
- class OrderBookSummaryEvent(OrderBookSummary):
12
- event_type: Literal["book"]
13
10
 
14
- class PriceChangeEvent(BaseModel):
15
- token_id: str = Field(alias="asset_id")
16
- changes: list[PriceLevel]
17
- hash: str
18
- market: str
19
- timestamp: datetime # time of event
20
- event_type: Literal["price_change"]
11
+ class PriceChange(BaseModel):
12
+ best_ask: float = Field(validation_alias=AliasChoices("ba", "best_ask"))
13
+ best_bid: float = Field(validation_alias=AliasChoices("bb", "best_bid"))
14
+ price: float = Field(validation_alias=AliasChoices("p", "price"))
15
+ size: float = Field(validation_alias=AliasChoices("s", "size"))
16
+ side: Literal["BUY", "SELL"] = Field(validation_alias=AliasChoices("si", "side"))
17
+ token_id: str = Field(validation_alias=AliasChoices("a", "asset_id"))
18
+ hash: str = Field(validation_alias=AliasChoices("h", "hash"))
19
+
20
+ class PriceChanges(BaseModel):
21
+ condition_id: Keccak256 = Field(validation_alias=AliasChoices("m", "market"))
22
+ price_changes: list[PriceChange] = Field(validation_alias=AliasChoices("pc", "price_changes"))
23
+ timestamp: datetime = Field(validation_alias=AliasChoices("t", "timestamp"))
21
24
 
22
- class TickSizeChangeEvent(BaseModel):
25
+ class TickSizeChange(BaseModel):
23
26
  token_id: str = Field(alias="asset_id")
24
27
  condition_id: Keccak256 = Field(alias="market")
25
28
  old_tick_size: TickSize
26
29
  new_tick_size: TickSize
30
+
31
+ class LastTradePrice(BaseModel):
32
+ price: float
33
+ size: float
27
34
  side: Literal["BUY", "SELL"]
28
- timestamp: datetime # time of event
35
+ token_id: str = Field(alias="asset_id")
36
+ condition_id: Keccak256 = Field(alias="market")
37
+ fee_rate_bps: float
38
+
39
+ class OrderBookSummaryEvent(OrderBookSummary):
40
+ event_type: Literal["book"]
41
+
42
+ class PriceChangeEvent(PriceChanges):
43
+ event_type: Literal["price_change"]
44
+
45
+ class TickSizeChangeEvent(TickSizeChange):
46
+ side: Literal["BUY", "SELL"]
47
+ timestamp: datetime
29
48
  event_type: Literal["tick_size_change"]
30
49
 
50
+ class LastTradePriceEvent(LastTradePrice):
51
+ timestamp: datetime
52
+ event_type: Literal["last_trade_price"]
53
+
31
54
  # wss://ws-subscriptions-clob.polymarket.com/ws/user types
55
+
32
56
  class OrderEvent(BaseModel):
33
57
  token_id: str = Field(alias="asset_id")
34
58
  condition_id: Keccak256 = Field(alias="market")
35
59
  order_id: Keccak256 = Field(alias="id")
36
- associated_trades: list[str] | None = None # list of trade ids which
60
+ associated_trades: Optional[list[str]] = None # list of trade ids which
37
61
  maker_address: EthAddress
38
- order_owner: str # api key of order owner
39
- event_owner: str = Field(alias="owner") # api key of event owner
40
-
62
+ order_owner: str = Field(alias="owner") # api key of order owner
63
+ event_owner: Optional[str] = Field(None, alias="owner") # api key of event owner
41
64
 
42
65
  price: float
43
66
  side: Literal["BUY", "SELL"]
@@ -47,11 +70,11 @@ class OrderEvent(BaseModel):
47
70
  order_type: Literal["GTC", "FOK", "GTD"]
48
71
 
49
72
  created_at: datetime
50
- expiration: datetime | None = None
51
- timestamp: datetime # time of event
73
+ expiration: Optional[datetime] = None
74
+ timestamp: Optional[datetime] = None # time of event
52
75
 
53
- event_type: Literal["order"]
54
- type: Literal["PLACEMENT", "UPDATE" , "CANCELLATION"]
76
+ event_type: Optional[Literal["order"]] = None
77
+ type: Literal["PLACEMENT", "UPDATE", "CANCELLATION"]
55
78
 
56
79
  status: Literal["LIVE", "CANCELED", "MATCHED"]
57
80
 
@@ -67,7 +90,7 @@ class TradeEvent(BaseModel):
67
90
  taker_order_id: Keccak256
68
91
  maker_orders: list[MakerOrder]
69
92
  trade_id: str = Field(alias="id")
70
- trade_owner: str # api key of trade owner
93
+ trade_owner: Optional[str] = Field(None, alias="owner") # api key of trade owner
71
94
  event_owner: str = Field(alias="owner") # api key of event owner
72
95
 
73
96
  price: float
@@ -76,16 +99,18 @@ class TradeEvent(BaseModel):
76
99
  outcome: str
77
100
 
78
101
  last_update: datetime # time of last update to trade
79
- matchtime: datetime | None = None # time trade was matched
80
- timestamp: datetime # time of event
102
+ matchtime: Optional[datetime] = None # time trade was matched
103
+ timestamp: Optional[datetime] = None # time of event
81
104
 
82
- event_type: Literal["trade"]
83
- type: Literal["TRADE"]
105
+ event_type: Optional[Literal["trade"]] = None
106
+ type: Optional[Literal["TRADE"]] = None
84
107
 
85
108
  status: Literal["MATCHED", "MINED", "CONFIRMED", "RETRYING", "FAILED"]
86
109
 
87
110
  # wss://ws-live-data.polymarket.com types
88
- class LiveDataTrade(BaseModel):
111
+
112
+ # Payload models
113
+ class ActivityTrade(BaseModel):
89
114
  token_id: str = Field(alias="asset") # ERC1155 token ID of conditional token being traded
90
115
  condition_id: str = Field(alias="conditionId") # Id of market which is also the CTF condition ID
91
116
  event_slug: str = Field(alias="eventSlug") # Slug of the event
@@ -104,25 +129,24 @@ class LiveDataTrade(BaseModel):
104
129
  bio: str # Bio of the user of the trade
105
130
  pseudonym: str # Pseudonym of the user
106
131
  profile_image: str = Field(alias="profileImage") # URL to the user profile image
107
- profile_image_optimized: str | None = Field(None, alias="profileImageOptimized")
108
-
132
+ profile_image_optimized: Optional[str] = Field(None, alias="profileImageOptimized")
109
133
 
110
134
  class Comment(BaseModel):
111
135
  id: str # Unique identifier of comment
112
136
  body: str # Content of the comment
113
137
  parent_entity_type: str = Field(alias="parentEntityType") # Type of the parent entity (Event or Series)
114
138
  parent_entity_id: int = Field(alias="parentEntityID") # ID of the parent entity
115
- parent_comment_id: str | None = Field(None, alias="parentCommentID") # ID of the parent comment
139
+ parent_comment_id: Optional[str] = Field(None, alias="parentCommentID") # ID of the parent comment
116
140
  user_address: str = Field(alias="userAddress") # Address of the user
117
- reply_address: str | None = Field(None, alias="replyAddress") # Address of the reply user
141
+ reply_address: Optional[str] = Field(None, alias="replyAddress") # Address of the reply user
118
142
  created_at: datetime = Field(alias="createdAt") # Creation timestamp
119
- updated_at: datetime | None = Field(None, alias="updatedAt") # Last update timestamp
143
+ updated_at: Optional[datetime] = Field(None, alias="updatedAt") # Last update timestamp
120
144
 
121
145
  class Reaction(BaseModel):
122
146
  id: str # Unique identifier of reaction
123
147
  comment_id: int = Field(alias="commentID") # ID of the comment
124
148
  reaction_type: str = Field(alias="reactionType") # Type of the reaction
125
- icon: str | None = None # Icon representing the reaction
149
+ icon: Optional[str] = None # Icon representing the reaction
126
150
  user_address: str = Field(alias="userAddress") # Address of the user
127
151
  created_at: datetime = Field(alias="createdAt") # Creation timestamp
128
152
 
@@ -138,7 +162,7 @@ class Request(BaseModel):
138
162
  price: float # Price from in/out sizes
139
163
  size_in: float = Field(alias="sizeIn") # Input size of the request
140
164
  size_out: float = Field(alias="sizeOut") # Output size of the request
141
- expiry: datetime | None = None
165
+ expiry: Optional[datetime] = None
142
166
 
143
167
  class Quote(BaseModel):
144
168
  quote_id: str = Field(alias="quoteId") # Unique identifier for the quote
@@ -152,16 +176,37 @@ class Quote(BaseModel):
152
176
  side: Literal["BUY", "SELL"] # Indicates buy or sell side
153
177
  size_in: float = Field(alias="sizeIn") # Input size of the quote
154
178
  size_out: float = Field(alias="sizeOut") # Output size of the quote
155
- expiry: datetime | None = None
179
+ expiry: Optional[datetime] = None
156
180
 
157
- class LiveDataTradeEvent(BaseModel):
158
- payload: LiveDataTrade
181
+ class CryptoPriceSubscribe(BaseModel):
182
+ data: list[TimeseriesPoint]
183
+ symbol: str
184
+
185
+ class CryptoPriceUpdate(TimeseriesPoint):
186
+ symbol: str
187
+ full_accuracy_value: str
188
+
189
+ class AggOrderBookSummary(OrderBookSummary):
190
+ min_order_size: float
191
+ tick_size: TickSize
192
+ neg_risk: bool
193
+
194
+ class LiveDataClobMarket(BaseModel):
195
+ token_ids: list[str] = Field(alias="asset_ids")
196
+ condition_id: Keccak256 = Field(alias="market")
197
+ min_order_size: float
198
+ tick_size: TickSize
199
+ neg_risk: bool
200
+
201
+ # Event models
202
+ class ActivityTradeEvent(BaseModel):
203
+ payload: ActivityTrade
159
204
  timestamp: datetime
160
205
  type: Literal["trades"]
161
206
  topic: Literal["activity"]
162
207
 
163
- class LiveDataOrderMatchEvent(BaseModel):
164
- payload: LiveDataTrade
208
+ class ActivityOrderMatchEvent(BaseModel):
209
+ payload: ActivityTrade
165
210
  timestamp: datetime
166
211
  type: Literal["orders_matched"]
167
212
  topic: Literal["activity"]
@@ -189,3 +234,72 @@ class QuoteEvent(BaseModel):
189
234
  timestamp: datetime
190
235
  type: Literal["quote_created", "quote_edited", "quote_canceled", "quote_expired"]
191
236
  topic: Literal["rfq"]
237
+
238
+ class CryptoPriceUpdateEvent(BaseModel):
239
+ payload: CryptoPriceUpdate
240
+ timestamp: datetime
241
+ connection_id: str
242
+ type: Literal["update"]
243
+ topic: Literal["crypto_prices", "crypto_prices_chainlink"]
244
+
245
+ class CryptoPriceSubscribeEvent(BaseModel):
246
+ payload: CryptoPriceSubscribe
247
+ timestamp: datetime
248
+ type: Literal["subscribe"]
249
+ topic: Literal["crypto_prices", "crypto_prices_chainlink"]
250
+
251
+ class LiveDataOrderBookSummaryEvent(BaseModel):
252
+ payload: list[AggOrderBookSummary] | AggOrderBookSummary
253
+ timestamp: datetime
254
+ connection_id: str
255
+ type: Literal["agg_orderbook"]
256
+ topic: Literal["clob_market"]
257
+
258
+ class LiveDataPriceChangeEvent(BaseModel):
259
+ payload: PriceChanges
260
+ timestamp: datetime
261
+ connection_id: str
262
+ type: Literal["price_change"]
263
+ topic: Literal["clob_market"]
264
+
265
+ class LiveDataLastTradePriceEvent(BaseModel):
266
+ payload: LastTradePrice
267
+ timestamp: datetime
268
+ connection_id: str
269
+ type: Literal["last_trade_price"]
270
+ topic: Literal["clob_market"]
271
+
272
+ class LiveDataTickSizeChangeEvent(BaseModel):
273
+ payload: TickSizeChange
274
+ timestamp: datetime
275
+ connection_id: str
276
+ type: Literal["tick_size_change"]
277
+ topic: Literal["clob_market"]
278
+
279
+ class MarketStatusChangeEvent(BaseModel):
280
+ payload: LiveDataClobMarket
281
+ timestamp: datetime
282
+ connection_id: str
283
+ type: Literal["market_created", "market_resolved"]
284
+ topic: Literal["clob_market"]
285
+
286
+ class LiveDataOrderEvent(BaseModel):
287
+ connection_id: str
288
+ payload: OrderEvent
289
+ timestamp: datetime
290
+ type: Literal["order"]
291
+ topic: Literal["clob_user"]
292
+
293
+ class LiveDataTradeEvent(BaseModel):
294
+ connection_id: str
295
+ payload: TradeEvent
296
+ timestamp: datetime
297
+ type: Literal["trade"]
298
+ topic: Literal["clob_user"]
299
+
300
+ class ErrorEvent(BaseModel):
301
+ message: str
302
+ connection_id: str = Field(alias="connectionId")
303
+ request_id: str = Field(alias="requestId")
304
+
305
+
@@ -34,3 +34,15 @@ def get_contract_config(chain_id: int, neg_risk: bool = False) -> ContractConfig
34
34
  raise ValueError(msg)
35
35
 
36
36
  return config
37
+
38
+
39
+ GRAPHQL_ENDPOINTS = {
40
+ "activity_subgraph": "https://api.goldsky.com/api/public/project_cl6mb8i9h0003e201j6li0diw/subgraphs/activity-subgraph/0.0.4/gn",
41
+ "fpmm_subgraph": "https://api.goldsky.com/api/public/project_cl6mb8i9h0003e201j6li0diw/subgraphs/fpmm-subgraph/0.0.1/gn",
42
+ "open_interest_subgraph": "https://api.goldsky.com/api/public/project_cl6mb8i9h0003e201j6li0diw/subgraphs/oi-subgraph/0.0.6/gn",
43
+ "orderbook_subgraph": "https://api.goldsky.com/api/public/project_cl6mb8i9h0003e201j6li0diw/subgraphs/orderbook-subgraph/0.0.1/gn",
44
+ "pnl_subgraph": "https://api.goldsky.com/api/public/project_cl6mb8i9h0003e201j6li0diw/subgraphs/pnl-subgraph/0.0.14/gn",
45
+ "positions_subgraph": "https://api.goldsky.com/api/public/project_cl6mb8i9h0003e201j6li0diw/subgraphs/positions-subgraph/0.0.7/gn",
46
+ "sports_oracle_subgraph": "https://api.goldsky.com/api/public/project_cl6mb8i9h0003e201j6li0diw/subgraphs/sports-oracle-subgraph/0.0.1/gn",
47
+ "wallet_subgraph": "https://api.goldsky.com/api/public/project_cl6mb8i9h0003e201j6li0diw/subgraphs/wallet-subgraph/0.0.4/gn",
48
+ }
@@ -29,6 +29,7 @@ IS_ORDER_SCORING = "/order-scoring"
29
29
  ARE_ORDERS_SCORING = "/orders-scoring"
30
30
  GET_TICK_SIZE = "/tick-size"
31
31
  GET_NEG_RISK = "/neg-risk"
32
+ GET_FEE_RATE = "/fee-rate"
32
33
  GET_SAMPLING_SIMPLIFIED_MARKETS = "/sampling-simplified-markets"
33
34
  GET_SAMPLING_MARKETS = "/sampling-markets"
34
35
  GET_SIMPLIFIED_MARKETS = "/simplified-markets"
@@ -4,8 +4,14 @@ class InvalidPriceError(Exception):
4
4
  class InvalidTickSizeError(Exception):
5
5
  pass
6
6
 
7
+ class InvalidFeeRateError(Exception):
8
+ pass
9
+
7
10
  class LiquidityError(Exception):
8
11
  pass
9
12
 
10
13
  class MissingOrderbookError(Exception):
11
14
  pass
15
+
16
+ class AuthenticationRequiredError(ValueError):
17
+ """Raised when authentication credentials are required but not provided."""
@@ -49,6 +49,6 @@ def create_level_2_headers(signer: Signer, creds: ApiCreds, request_args: Reques
49
49
  POLY_ADDRESS: signer.address(),
50
50
  POLY_SIGNATURE: hmac_sig,
51
51
  POLY_TIMESTAMP: timestamp,
52
- POLY_API_KEY: creds.api_key,
52
+ POLY_API_KEY: creds.key,
53
53
  POLY_PASSPHRASE: creds.passphrase,
54
54
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: polymarket-apis
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: Unified Polymarket APIs - clob, gamma, data, web3, websockets
5
5
  Author-email: Razvan Gheorghe <razvan@gheorghe.me>
6
6
  Requires-Python: >=3.12
@@ -1,22 +1,23 @@
1
1
  polymarket_apis/__init__.py,sha256=8a6dT19YqnOcLEmprl8vavi97JpaRrcDWBTllGsrmbE,61
2
2
  polymarket_apis/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- polymarket_apis/clients/clob_client.py,sha256=2Mgh-WRPJ3CqlcuBMrXAgKQRzWr-dNthynZf2Q0jsiY,29549
3
+ polymarket_apis/clients/clob_client.py,sha256=pE-q-4hAUyKIUHN5tbBxX4o4uzMGiMcTNQ2dIJLQkDY,31025
4
4
  polymarket_apis/clients/data_client.py,sha256=sAJqesjKT8cRNr-j4OsXj-xYHEOzt0WWCvXcvejX7uI,8641
5
- polymarket_apis/clients/gamma_client.py,sha256=y-qBzU21qKXpluO3-mWPY_h9N6KSbiq4cpvR-X8Awqo,11972
6
- polymarket_apis/clients/web3_client.py,sha256=lIE-xXYmlk0sO0OFy2OQ9ylJPIL39gMnSg2bAjD6HmQ,11215
7
- polymarket_apis/clients/websockets_client.py,sha256=Spdp_8L_RzNJEZ867Vk9BMTW3J-lMAwyx3P0R98x_j4,4646
5
+ polymarket_apis/clients/gamma_client.py,sha256=yGi7l0vceBgrwMlqLFZYyQ_Lj13hNaDwaBtLSDoTAnM,12190
6
+ polymarket_apis/clients/graphql_client.py,sha256=Jgrz107EVpHRSAXvY45hRUKuPndl9-41_EaqIYbb5mo,6907
7
+ polymarket_apis/clients/web3_client.py,sha256=0SX25LMP59FWzfsoshxt-_XNPcPXnmvwmCaHu3K4K2E,11222
8
+ polymarket_apis/clients/websockets_client.py,sha256=wueJ54ZgJgeiJmKi5EEIB8_YwkdD3y2Dr4t9WjFMXuU,7581
8
9
  polymarket_apis/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- polymarket_apis/types/clob_types.py,sha256=TlbSH6P3BpDz1xX9hhcHjH6Y5HogZVnhjL-wTE9hF2Q,11703
10
- polymarket_apis/types/common.py,sha256=eqgTPYQaRe_kl4XpixLgQlVlP0iB1jd3ThiJs_xwHx0,1568
10
+ polymarket_apis/types/clob_types.py,sha256=O7_6x5gtLjjkcVhcUMv7aIyFhdk2LRfRObPibRwdC44,11699
11
+ polymarket_apis/types/common.py,sha256=eTY2kjOArzrZRVSmEJvxEyxGJeMx045R073EMZMzCKM,1629
11
12
  polymarket_apis/types/data_types.py,sha256=K-bE5g1owFozvznmQZ0MicxGccqVSuEibuVzXFAoa4E,4408
12
- polymarket_apis/types/gamma_types.py,sha256=zREASm8jrQokxNC-VYvghYtorhdHebvxww803iRadSU,10377
13
- polymarket_apis/types/websockets_types.py,sha256=o55PkBksDgy4yxAWEM_qB3JifxuP70ev5IyQuj9Krfk,8278
13
+ polymarket_apis/types/gamma_types.py,sha256=CfjuQbkNaM-PcZoezSZvMk4ru7a4AzXh64Clbf13MHc,12518
14
+ polymarket_apis/types/websockets_types.py,sha256=96xQl6xQ4ReL-b4a-UYNittPvXJBXuzX1RBxlJHJg-s,11993
14
15
  polymarket_apis/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- polymarket_apis/utilities/config.py,sha256=t1cN9nLy949nL-kO8-m3ODS9g-rcYVduxJ2J1LNUqdc,1358
16
+ polymarket_apis/utilities/config.py,sha256=IfIBJa6rSi-e-9_HjeI8j4cD3MXtzRjoLzgcgn5tHbc,2448
16
17
  polymarket_apis/utilities/constants.py,sha256=OdxaAsyYzAK1RXty5VtvidMgan8YW-JfHS3Rdxp6n_U,580
17
- polymarket_apis/utilities/endpoints.py,sha256=OX6KBeS7XHC8t50s0QpBw8KMg7IS279Jq6xIk8I05Kc,1208
18
- polymarket_apis/utilities/exceptions.py,sha256=agbe5OZD9kRoQVTGJvBK3mbnZgLTXI4FJNESM0zsKqM,187
19
- polymarket_apis/utilities/headers.py,sha256=dl3ONZU56nsrGkAishwYtALT-Qn8P3Ts_z58-XgPARg,1514
18
+ polymarket_apis/utilities/endpoints.py,sha256=bxZyrJBPbVauWc-eR0RMh6KDqU-SmO_3LfQwVMNJ6vE,1235
19
+ polymarket_apis/utilities/exceptions.py,sha256=58vuiLuZxX6d05qa29jgEOC4ZYBv368JaO8DAFMD0Dc,363
20
+ polymarket_apis/utilities/headers.py,sha256=Cc5WEnIBLYAgfwvmCXRBwA2zUYME8fDy4PbwlwlB6Oo,1510
20
21
  polymarket_apis/utilities/order_builder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
22
  polymarket_apis/utilities/order_builder/builder.py,sha256=-eQ092J6Wkproy2SY6USFGWAniS5ZMBg85Ij_cnqqPs,8332
22
23
  polymarket_apis/utilities/order_builder/helpers.py,sha256=QN39noGcWrGAy89dJc8DvEGJwiX0fMVc62R-pkclAu4,1714
@@ -35,6 +36,6 @@ polymarket_apis/utilities/web3/abis/ProxyWalletFactory.json,sha256=5KjBHUWdkc_kd
35
36
  polymarket_apis/utilities/web3/abis/UChildERC20Proxy.json,sha256=ZyQC38U0uxInlmnW2VXDVD3TJfTIRmSNMkTxQsaG7oA,27396
36
37
  polymarket_apis/utilities/web3/abis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
38
  polymarket_apis/utilities/web3/abis/custom_contract_errors.py,sha256=ZCeJPK5tobPAR9vaNxw_pQZwKyZc_R0GdggfWaeXvOs,1176
38
- polymarket_apis-0.2.2.dist-info/METADATA,sha256=Ghid2hQzHlSGgv4BzxuQHy6GgkBLUDgvx6XVytm6UQM,558
39
- polymarket_apis-0.2.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
40
- polymarket_apis-0.2.2.dist-info/RECORD,,
39
+ polymarket_apis-0.2.4.dist-info/METADATA,sha256=QU7aW8ETv0ihWuLccK9WVsPP-lwIrhStoIfjN0apFj4,558
40
+ polymarket_apis-0.2.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
41
+ polymarket_apis-0.2.4.dist-info/RECORD,,