prediction-market-agent-tooling 0.49.1__py3-none-any.whl → 0.49.2__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.
@@ -307,7 +307,7 @@ class DeployableTraderAgent(DeployableAgent):
307
307
  def get_betting_strategy(self, market: AgentMarket) -> BettingStrategy:
308
308
  user_id = market.get_user_id(api_keys=APIKeys())
309
309
 
310
- total_amount = market.get_user_balance(user_id=user_id) * 0.1
310
+ total_amount = market.get_tiny_bet_amount().amount
311
311
  if existing_position := market.get_position(user_id=user_id):
312
312
  total_amount += existing_position.total_amount.amount
313
313
 
@@ -1,5 +1,9 @@
1
1
  from abc import ABC, abstractmethod
2
2
 
3
+ from scipy.optimize import minimize_scalar
4
+
5
+ from prediction_market_agent_tooling.gtypes import xDai
6
+ from prediction_market_agent_tooling.loggers import logger
3
7
  from prediction_market_agent_tooling.markets.agent_market import AgentMarket
4
8
  from prediction_market_agent_tooling.markets.data_models import (
5
9
  Currency,
@@ -10,10 +14,14 @@ from prediction_market_agent_tooling.markets.data_models import (
10
14
  TradeType,
11
15
  )
12
16
  from prediction_market_agent_tooling.markets.omen.data_models import get_boolean_outcome
17
+ from prediction_market_agent_tooling.markets.omen.omen import (
18
+ get_buy_outcome_token_amount,
19
+ )
13
20
  from prediction_market_agent_tooling.tools.betting_strategies.kelly_criterion import (
14
21
  get_kelly_bet_full,
15
22
  get_kelly_bet_simplified,
16
23
  )
24
+ from prediction_market_agent_tooling.tools.betting_strategies.utils import SimpleBet
17
25
  from prediction_market_agent_tooling.tools.utils import check_not_none
18
26
 
19
27
 
@@ -134,8 +142,9 @@ class MaxExpectedValueBettingStrategy(MaxAccuracyBettingStrategy):
134
142
 
135
143
 
136
144
  class KellyBettingStrategy(BettingStrategy):
137
- def __init__(self, max_bet_amount: float):
145
+ def __init__(self, max_bet_amount: float, max_price_impact: float | None = None):
138
146
  self.max_bet_amount = max_bet_amount
147
+ self.max_price_impact = max_price_impact
139
148
 
140
149
  def calculate_trades(
141
150
  self,
@@ -165,9 +174,19 @@ class KellyBettingStrategy(BettingStrategy):
165
174
  )
166
175
  )
167
176
 
177
+ kelly_bet_size = kelly_bet.size
178
+ if self.max_price_impact:
179
+ # Adjust amount
180
+ max_price_impact_bet_amount = self.calculate_bet_amount_for_price_impact(
181
+ market, kelly_bet, 0
182
+ )
183
+
184
+ # We just don't want Kelly size to extrapolate price_impact - hence we take the min.
185
+ kelly_bet_size = min(kelly_bet.size, max_price_impact_bet_amount)
186
+
168
187
  amounts = {
169
188
  market.get_outcome_str_from_bool(kelly_bet.direction): TokenAmount(
170
- amount=kelly_bet.size, currency=market.currency
189
+ amount=kelly_bet_size, currency=market.currency
171
190
  ),
172
191
  }
173
192
  target_position = Position(market_id=market.id, amounts=amounts)
@@ -176,8 +195,69 @@ class KellyBettingStrategy(BettingStrategy):
176
195
  )
177
196
  return trades
178
197
 
198
+ def calculate_price_impact_for_bet_amount(
199
+ self, buy_direction: bool, bet_amount: float, yes: float, no: float, fee: float
200
+ ) -> float:
201
+ total_outcome_tokens = yes + no
202
+ expected_price = (
203
+ no / total_outcome_tokens if buy_direction else yes / total_outcome_tokens
204
+ )
205
+
206
+ tokens_to_buy = get_buy_outcome_token_amount(
207
+ bet_amount, buy_direction, yes, no, fee
208
+ )
209
+
210
+ actual_price = bet_amount / tokens_to_buy
211
+ # price_impact should always be > 0
212
+ price_impact = (actual_price - expected_price) / expected_price
213
+ return price_impact
214
+
215
+ def calculate_bet_amount_for_price_impact(
216
+ self,
217
+ market: AgentMarket,
218
+ kelly_bet: SimpleBet,
219
+ fee: float,
220
+ ) -> float:
221
+ def calculate_price_impact_deviation_from_target_price_impact(
222
+ bet_amount: xDai,
223
+ ) -> float:
224
+ price_impact = self.calculate_price_impact_for_bet_amount(
225
+ kelly_bet.direction,
226
+ bet_amount,
227
+ yes_outcome_pool_size,
228
+ no_outcome_pool_size,
229
+ fee,
230
+ )
231
+ # We return abs for the algorithm to converge to 0 instead of the min (and possibly negative) value.
232
+
233
+ max_price_impact = check_not_none(self.max_price_impact)
234
+ return abs(price_impact - max_price_impact)
235
+
236
+ if not market.outcome_token_pool:
237
+ logger.warning(
238
+ "Market outcome_token_pool is None, cannot calculate bet amount"
239
+ )
240
+ return kelly_bet.size
241
+
242
+ yes_outcome_pool_size = market.outcome_token_pool[
243
+ market.get_outcome_str_from_bool(True)
244
+ ]
245
+ no_outcome_pool_size = market.outcome_token_pool[
246
+ market.get_outcome_str_from_bool(False)
247
+ ]
248
+
249
+ # The bounds below have been found to work heuristically.
250
+ optimized_bet_amount = minimize_scalar(
251
+ calculate_price_impact_deviation_from_target_price_impact,
252
+ bounds=(0, 1000 * (yes_outcome_pool_size + no_outcome_pool_size)),
253
+ method="bounded",
254
+ tol=1e-11,
255
+ options={"maxiter": 10000},
256
+ )
257
+ return float(optimized_bet_amount.x)
258
+
179
259
  def __repr__(self) -> str:
180
- return f"{self.__class__.__name__}(max_bet_amount={self.max_bet_amount})"
260
+ return f"{self.__class__.__name__}(max_bet_amount={self.max_bet_amount}, max_price_impact={self.max_price_impact})"
181
261
 
182
262
 
183
263
  class MaxAccuracyWithKellyScaledBetsStrategy(BettingStrategy):
@@ -28,6 +28,8 @@ from prediction_market_agent_tooling.tools.utils import (
28
28
  class SortBy(str, Enum):
29
29
  CLOSING_SOONEST = "closing-soonest"
30
30
  NEWEST = "newest"
31
+ HIGHEST_LIQUIDITY = "highest_liquidity"
32
+ LOWEST_LIQUIDITY = "lowest_liquidity"
31
33
  NONE = "none"
32
34
 
33
35
 
@@ -47,6 +47,7 @@ from prediction_market_agent_tooling.markets.omen.data_models import (
47
47
  )
48
48
  from prediction_market_agent_tooling.markets.omen.omen_contracts import (
49
49
  OMEN_DEFAULT_MARKET_FEE_PERC,
50
+ REALITY_DEFAULT_FINALIZATION_TIMEOUT,
50
51
  Arbitrator,
51
52
  OmenConditionalTokenContract,
52
53
  OmenFixedProductMarketMakerContract,
@@ -840,7 +841,7 @@ def omen_create_market_tx(
840
841
  language: str,
841
842
  outcomes: list[str],
842
843
  auto_deposit: bool,
843
- finalization_timeout: timedelta = timedelta(days=1),
844
+ finalization_timeout: timedelta = REALITY_DEFAULT_FINALIZATION_TIMEOUT,
844
845
  fee_perc: float = OMEN_DEFAULT_MARKET_FEE_PERC,
845
846
  distribution_hint: list[OmenOutcomeToken] | None = None,
846
847
  collateral_token_address: ChecksumAddress = WrappedxDaiContract().address,
@@ -431,6 +431,7 @@ class sDaiContract(ContractERC4626OnGnosisChain):
431
431
 
432
432
 
433
433
  OMEN_DEFAULT_MARKET_FEE_PERC = 0.02 # 2% fee from the buying shares amount.
434
+ REALITY_DEFAULT_FINALIZATION_TIMEOUT = timedelta(days=3)
434
435
 
435
436
 
436
437
  class OmenFixedProductMarketMakerFactoryContract(ContractOnGnosisChain):
@@ -240,7 +240,7 @@ def omen_resolve_market_tx(
240
240
  web3: Web3 | None = None,
241
241
  ) -> None:
242
242
  """
243
- Market can be resolved 24h after last answer was submitted via `omen_submit_answer_market_tx`.
243
+ Market can be resolved after the answer if finalized on Reality.
244
244
  """
245
245
  oracle_contract = OmenOracleContract()
246
246
  oracle_contract.resolve(
@@ -319,6 +319,16 @@ class OmenSubgraphHandler(metaclass=SingletonMeta):
319
319
  sort_by_field = (
320
320
  self.trades_subgraph.FixedProductMarketMaker.openingTimestamp
321
321
  )
322
+ case SortBy.HIGHEST_LIQUIDITY:
323
+ sort_direction = "desc"
324
+ sort_by_field = (
325
+ self.trades_subgraph.FixedProductMarketMaker.liquidityMeasure
326
+ )
327
+ case SortBy.LOWEST_LIQUIDITY:
328
+ sort_direction = "asc"
329
+ sort_by_field = (
330
+ self.trades_subgraph.FixedProductMarketMaker.liquidityMeasure
331
+ )
322
332
  case SortBy.NONE:
323
333
  sort_direction = None
324
334
  sort_by_field = None
@@ -2,8 +2,8 @@ import typing as t
2
2
 
3
3
  import requests
4
4
  import tenacity
5
- from loguru import logger
6
5
 
6
+ from prediction_market_agent_tooling.loggers import logger
7
7
  from prediction_market_agent_tooling.markets.polymarket.data_models import (
8
8
  POLYMARKET_FALSE_OUTCOME,
9
9
  POLYMARKET_TRUE_OUTCOME,
@@ -0,0 +1,11 @@
1
+ import hishel
2
+
3
+
4
+ class HttpxCachedClient:
5
+ def __init__(self) -> None:
6
+ storage = hishel.FileStorage(ttl=3600, check_ttl_every=600)
7
+ controller = hishel.Controller(force_cache=True)
8
+ self.client = hishel.CacheClient(storage=storage, controller=controller)
9
+
10
+ def get_client(self) -> hishel.CacheClient:
11
+ return self.client
@@ -1,7 +1,7 @@
1
1
  import tenacity
2
- from loguru import logger
3
2
 
4
3
  from prediction_market_agent_tooling.config import APIKeys
4
+ from prediction_market_agent_tooling.loggers import logger
5
5
  from prediction_market_agent_tooling.tools.cache import persistent_inmemory_cache
6
6
  from prediction_market_agent_tooling.tools.langfuse_ import (
7
7
  get_langfuse_langchain_config,
@@ -2,7 +2,6 @@ import typing as t
2
2
  from datetime import datetime, timedelta
3
3
 
4
4
  import tenacity
5
- from loguru import logger
6
5
  from pydantic import BaseModel
7
6
  from sqlalchemy import Column
8
7
  from sqlalchemy.dialects.postgresql import JSONB
@@ -18,6 +17,7 @@ from sqlmodel import (
18
17
  )
19
18
 
20
19
  from prediction_market_agent_tooling.config import APIKeys
20
+ from prediction_market_agent_tooling.loggers import logger
21
21
  from prediction_market_agent_tooling.tools.utils import utcnow
22
22
 
23
23
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prediction-market-agent-tooling
3
- Version: 0.49.1
3
+ Version: 0.49.2
4
4
  Summary: Tools to benchmark, deploy and monitor prediction market agents.
5
5
  Author: Gnosis
6
6
  Requires-Python: >=3.10,<3.12
@@ -20,6 +20,7 @@ Requires-Dist: google-api-python-client (==2.95.0) ; extra == "google"
20
20
  Requires-Dist: google-cloud-functions (>=1.16.0,<2.0.0)
21
21
  Requires-Dist: google-cloud-resource-manager (>=1.12.0,<2.0.0)
22
22
  Requires-Dist: google-cloud-secret-manager (>=2.18.2,<3.0.0)
23
+ Requires-Dist: hishel (>=0.0.31,<0.0.32)
23
24
  Requires-Dist: isort (>=5.13.2,<6.0.0)
24
25
  Requires-Dist: langchain (>=0.2.6,<0.3.0) ; extra == "langchain"
25
26
  Requires-Dist: langchain-community (>=0.0.19)
@@ -17,9 +17,9 @@ prediction_market_agent_tooling/benchmark/agents.py,sha256=BwE3U11tQq0rfOJBn-Xn5
17
17
  prediction_market_agent_tooling/benchmark/benchmark.py,sha256=MqTiaaJ3cYiOLUVR7OyImLWxcEya3Rl5JyFYW-K0lwM,17097
18
18
  prediction_market_agent_tooling/benchmark/utils.py,sha256=D0MfUkVZllmvcU0VOurk9tcKT7JTtwwOp-63zuCBVuc,2880
19
19
  prediction_market_agent_tooling/config.py,sha256=LAOG22P7yi8zDBqMuhBD6FaoCG-w4_tE8rF14hqDffk,6519
20
- prediction_market_agent_tooling/deploy/agent.py,sha256=HA2cp9--jz1VUv2SP2gy2yZvhug6oIu_A85N96dHdwE,21862
20
+ prediction_market_agent_tooling/deploy/agent.py,sha256=o1k7MbaprWHnznhW69YrwwmYl5KOpvPCkdGZ3QB61eM,21851
21
21
  prediction_market_agent_tooling/deploy/agent_example.py,sha256=dIIdZashExWk9tOdyDjw87AuUcGyM7jYxNChYrVK2dM,1001
22
- prediction_market_agent_tooling/deploy/betting_strategy.py,sha256=eCmKpi3EJxFNbPiT7zDYRxJrP76mj0idvSlzin1wtWg,8990
22
+ prediction_market_agent_tooling/deploy/betting_strategy.py,sha256=cOPznMX0jd380qHw06A-l1XUyoicV54AXBghirtPw0Q,12127
23
23
  prediction_market_agent_tooling/deploy/constants.py,sha256=M5ty8URipYMGe_G-RzxRydK3AFL6CyvmqCraJUrLBnE,82
24
24
  prediction_market_agent_tooling/deploy/gcp/deploy.py,sha256=CYUgnfy-9XVk04kkxA_5yp0GE9Mw5caYqlFUZQ2j3ks,3739
25
25
  prediction_market_agent_tooling/deploy/gcp/kubernetes_models.py,sha256=qYIHRxQLac3yxtZ8ChikiPG9O1aUQucHW0muTSm1nto,2627
@@ -30,7 +30,7 @@ prediction_market_agent_tooling/jobs/jobs.py,sha256=I07yh0GJ-xhlvQaOUQB8xlSnihhc
30
30
  prediction_market_agent_tooling/jobs/jobs_models.py,sha256=8JS9n_EVgmNzqRg1YUjopPVZRjqFneVYCKnX4UEFy3I,1326
31
31
  prediction_market_agent_tooling/jobs/omen/omen_jobs.py,sha256=Mr6fZqfOs4tzGYsp7g0ygolYjQaFCLG7ljP1mKs71ng,3946
32
32
  prediction_market_agent_tooling/loggers.py,sha256=Am6HHXRNO545BO3l7Ue9Wb2TkYE1OK8KKhGbI3XypVU,3751
33
- prediction_market_agent_tooling/markets/agent_market.py,sha256=we9AWBu2vUH572Qpi9N_3x5YekRSg_yIK_dxfptEhVM,10448
33
+ prediction_market_agent_tooling/markets/agent_market.py,sha256=kQ56_bC7mW7Ql3AyCjmwVMnb06i5PJC1FSRZQfEi3W8,10534
34
34
  prediction_market_agent_tooling/markets/categorize.py,sha256=jsoHWvZk9pU6n17oWSCcCxNNYVwlb_NXsZxKRI7vmsk,1301
35
35
  prediction_market_agent_tooling/markets/data_models.py,sha256=bS4r9IddE0l2m3u8h7_T-Z2gJr1C7BBLtZPtNnGJ-8c,3577
36
36
  prediction_market_agent_tooling/markets/manifold/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -44,11 +44,11 @@ prediction_market_agent_tooling/markets/metaculus/data_models.py,sha256=6TBy17xn
44
44
  prediction_market_agent_tooling/markets/metaculus/metaculus.py,sha256=hNn4-iD07TQIKrinZYc_iF-nvwLGQHLmgNz5AksSyKc,3633
45
45
  prediction_market_agent_tooling/markets/omen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
46
  prediction_market_agent_tooling/markets/omen/data_models.py,sha256=qu5B_hdexQ69TzOvJ8UhC6cyxamluLXXXLkQLL_vK-c,26270
47
- prediction_market_agent_tooling/markets/omen/omen.py,sha256=70q9DGR1nl0gEUVld0fbtr1Ex-eLoe7VJdbe1qFoPNs,47865
48
- prediction_market_agent_tooling/markets/omen/omen_contracts.py,sha256=T4kqqrG0Ihduj32tFuAwTctNDTTFb4p26cDP01CJm90,28148
49
- prediction_market_agent_tooling/markets/omen/omen_resolving.py,sha256=udzte2jD33tONHPfMGhQbkAlHePRuw5iF8YXy71P8qo,9555
50
- prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py,sha256=eERlL4gvrtZhz0ZbvSyoB2NcYwQqHyN11MR5O67hggc,32210
51
- prediction_market_agent_tooling/markets/polymarket/api.py,sha256=HXmA1akA0qDj0m3e-GEvWG8x75pm6BX4H7YJPQcST7I,4767
47
+ prediction_market_agent_tooling/markets/omen/omen.py,sha256=5w41_gPJbT4n0HT5qFvJHE9py3C-M--L8WFhjyuSUiY,47926
48
+ prediction_market_agent_tooling/markets/omen/omen_contracts.py,sha256=uabAiNxW1tnw2M-eqetUAB2s7BzTKdgg46SPlTMZmwM,28205
49
+ prediction_market_agent_tooling/markets/omen/omen_resolving.py,sha256=A2q8BR0o_0cdR2JxThtFzuO8yyaKMlx2OT_zCk5pya4,9525
50
+ prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py,sha256=EJnzZDF2ykY8WLpCMnjBzW76AUnWajHvZVAcLLp3B9U,32642
51
+ prediction_market_agent_tooling/markets/polymarket/api.py,sha256=UZ4_TG8ceb9Y-qgsOKs8Qiv8zDt957QkT8IX2c83yqo,4800
52
52
  prediction_market_agent_tooling/markets/polymarket/data_models.py,sha256=9CJzakyEcsn6DQBK2nOXjOMzTZBLAmK_KqevXvW17DI,4292
53
53
  prediction_market_agent_tooling/markets/polymarket/data_models_web.py,sha256=IPsFT3FX9Ge5l5zR1nBd2w-sd5ue7oR8PJSW710vFWY,12479
54
54
  prediction_market_agent_tooling/markets/polymarket/polymarket.py,sha256=SONMs6gFAR_j8xgVK8MmQDTrFx64_JCi5IfVr52EeKE,2773
@@ -73,10 +73,11 @@ prediction_market_agent_tooling/tools/costs.py,sha256=EaAJ7v9laD4VEV3d8B44M4u3_o
73
73
  prediction_market_agent_tooling/tools/gnosis_rpc.py,sha256=ctBfB1os-MvZ1tm0Rwdyn9b3dvFnlM9naKvZmzywc3A,197
74
74
  prediction_market_agent_tooling/tools/google.py,sha256=SfVDxb3oEOUK8mpd0l3mTX9ybrdrTPNM6HjfJ7kfNjA,1794
75
75
  prediction_market_agent_tooling/tools/hexbytes_custom.py,sha256=Bp94qgPjvjWf1Vb4lNzGFDXRdThw1rJ91vL6r2PWq5E,2096
76
+ prediction_market_agent_tooling/tools/httpx_cached_client.py,sha256=0-N1r0zcGKlY9Rk-Ab8hbqwc54eMbsoa3jXL0_yCCiM,355
76
77
  prediction_market_agent_tooling/tools/image_gen/image_gen.py,sha256=HzRwBx62hOXBOmrtpkXaP9Qq1Ku03uUGdREocyjLQ_k,1266
77
78
  prediction_market_agent_tooling/tools/image_gen/market_thumbnail_gen.py,sha256=8A3U2uxsCsOfLjru-6R_PPIAuiKY4qFkWp_GSBPV6-s,1280
78
79
  prediction_market_agent_tooling/tools/ipfs/ipfs_handler.py,sha256=CTTMfTvs_8PH4kAtlQby2aeEKwgpmxtuGbd4oYIdJ2A,1201
79
- prediction_market_agent_tooling/tools/is_predictable.py,sha256=QapzvJVgUZdhucgmxhzWAQ885BwSwvYUi0SG8mkLQMQ,6738
80
+ prediction_market_agent_tooling/tools/is_predictable.py,sha256=NIoR2bTNMmADcyNY2aKNMWkiDw7Z_9kZMcFXEdyewy4,6771
80
81
  prediction_market_agent_tooling/tools/langfuse_.py,sha256=jI_4ROxqo41CCnWGS1vN_AeDVhRzLMaQLxH3kxDu3L8,1153
81
82
  prediction_market_agent_tooling/tools/langfuse_client_utils.py,sha256=oE4pwfsadbn_S0rGRAeQzv2D5CLAJQRXt7KW2-kq_7I,5480
82
83
  prediction_market_agent_tooling/tools/omen/reality_accuracy.py,sha256=M1SF7iSW1gVlQSTskdVFTn09uPLST23YeipVIWj54io,2236
@@ -84,12 +85,12 @@ prediction_market_agent_tooling/tools/parallelism.py,sha256=6Gou0hbjtMZrYvxjTDFU
84
85
  prediction_market_agent_tooling/tools/safe.py,sha256=h0xOO0eNtitClf0fPkn-0oTc6A_bflDTee98V_aiV-A,5195
85
86
  prediction_market_agent_tooling/tools/singleton.py,sha256=CiIELUiI-OeS7U7eeHEt0rnVhtQGzwoUdAgn_7u_GBM,729
86
87
  prediction_market_agent_tooling/tools/streamlit_user_login.py,sha256=NXEqfjT9Lc9QtliwSGRASIz1opjQ7Btme43H4qJbzgE,3010
87
- prediction_market_agent_tooling/tools/tavily_storage/tavily_models.py,sha256=Uq2iyDygVRxp6qHAnz9t5c1uTLGV2RPQE15sVJFLds8,6341
88
+ prediction_market_agent_tooling/tools/tavily_storage/tavily_models.py,sha256=KXRic0UlAyjWX0NADJUg1wEHaSzFdASMAOUQboUlt6A,6374
88
89
  prediction_market_agent_tooling/tools/tavily_storage/tavily_storage.py,sha256=xrtQH9v5pXycBRyc5j45pWqkSffkoc9efNIU1_G633Q,3706
89
90
  prediction_market_agent_tooling/tools/utils.py,sha256=zcen2m2JDdXNe0KnDdmfMczr4Z2QvoY8oFPbgDGmLzg,7886
90
91
  prediction_market_agent_tooling/tools/web3_utils.py,sha256=dkcjG-LtuaWRh7WEMzRGmZ5B5rsxZTlliFOI6fj-EJ8,11842
91
- prediction_market_agent_tooling-0.49.1.dist-info/LICENSE,sha256=6or154nLLU6bELzjh0mCreFjt0m2v72zLi3yHE0QbeE,7650
92
- prediction_market_agent_tooling-0.49.1.dist-info/METADATA,sha256=BkTKThKv9Y02EmnE5IQYiTI_BqnzeZNH-6SU0XyVyA0,7896
93
- prediction_market_agent_tooling-0.49.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
94
- prediction_market_agent_tooling-0.49.1.dist-info/entry_points.txt,sha256=m8PukHbeH5g0IAAmOf_1Ahm-sGAMdhSSRQmwtpmi2s8,81
95
- prediction_market_agent_tooling-0.49.1.dist-info/RECORD,,
92
+ prediction_market_agent_tooling-0.49.2.dist-info/LICENSE,sha256=6or154nLLU6bELzjh0mCreFjt0m2v72zLi3yHE0QbeE,7650
93
+ prediction_market_agent_tooling-0.49.2.dist-info/METADATA,sha256=GYwB197xs5Bwt54lhxYkmECyI1QhyTybyn9nAhCreUc,7937
94
+ prediction_market_agent_tooling-0.49.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
95
+ prediction_market_agent_tooling-0.49.2.dist-info/entry_points.txt,sha256=m8PukHbeH5g0IAAmOf_1Ahm-sGAMdhSSRQmwtpmi2s8,81
96
+ prediction_market_agent_tooling-0.49.2.dist-info/RECORD,,