prediction-market-agent-tooling 0.57.1__py3-none-any.whl → 0.57.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.
@@ -12,8 +12,8 @@ T = t.TypeVar("T", bound=BaseModel)
12
12
 
13
13
 
14
14
  class BaseSubgraphHandler(metaclass=SingletonMeta):
15
- def __init__(self) -> None:
16
- self.sg = Subgrounds()
15
+ def __init__(self, timeout: int = 30) -> None:
16
+ self.sg = Subgrounds(timeout=timeout)
17
17
  # Patch methods to retry on failure.
18
18
  self.sg.query_json = tenacity.retry(
19
19
  stop=tenacity.stop_after_attempt(3),
@@ -142,7 +142,7 @@ class PlacedTrade(Trade):
142
142
  )
143
143
 
144
144
 
145
- class SimulationDetail(BaseModel):
145
+ class SimulatedBetDetail(BaseModel):
146
146
  strategy: str
147
147
  url: str
148
148
  market_p_yes: float
@@ -161,3 +161,16 @@ class SharpeOutput(BaseModel):
161
161
  annualized_volatility: float
162
162
  mean_daily_return: float
163
163
  annualized_sharpe_ratio: float
164
+
165
+
166
+ class SimulatedLifetimeDetail(BaseModel):
167
+ p_yes_mse: float
168
+ total_bet_amount: float
169
+ total_bet_profit: float
170
+ total_simulated_amount: float
171
+ total_simulated_profit: float
172
+ roi: float
173
+ simulated_roi: float
174
+ sharpe_output_original: SharpeOutput
175
+ sharpe_output_simulation: SharpeOutput
176
+ maximize: float
@@ -42,6 +42,10 @@ PRESAGIO_BASE_URL = "https://presagio.pages.dev"
42
42
  TEST_CATEGORY = "test" # This category is hidden on Presagio for testing purposes.
43
43
 
44
44
 
45
+ def construct_presagio_url(market_id: HexAddress) -> str:
46
+ return f"{PRESAGIO_BASE_URL}/markets?id={market_id}"
47
+
48
+
45
49
  def get_boolean_outcome(outcome_str: str) -> bool:
46
50
  if outcome_str == OMEN_TRUE_OUTCOME:
47
51
  return True
@@ -392,7 +396,7 @@ class OmenMarket(BaseModel):
392
396
 
393
397
  @property
394
398
  def url(self) -> str:
395
- return f"{PRESAGIO_BASE_URL}/markets?id={self.id}"
399
+ return construct_presagio_url(self.id)
396
400
 
397
401
  @staticmethod
398
402
  def from_created_market(model: "CreatedMarket") -> "OmenMarket":
@@ -499,13 +503,17 @@ class OmenBet(BaseModel):
499
503
  creator: OmenBetCreator
500
504
  creationTimestamp: int
501
505
  collateralAmount: Wei
502
- collateralAmountUSD: USD
503
506
  feeAmount: Wei
504
507
  outcomeIndex: int
505
508
  outcomeTokensTraded: Wei
506
509
  transactionHash: HexBytes
507
510
  fpmm: OmenMarket
508
511
 
512
+ @property
513
+ def collateral_amount_usd(self) -> USD:
514
+ # Convert manually instad of using the field `collateralAmountUSD` available on the graph, because it's bugged, it's 0 for non-xDai markets.
515
+ return USD(wei_to_xdai(self.collateralAmount))
516
+
509
517
  @property
510
518
  def creation_datetime(self) -> DatetimeUTC:
511
519
  return DatetimeUTC.to_datetime_utc(self.creationTimestamp)
@@ -540,7 +548,7 @@ class OmenBet(BaseModel):
540
548
  return Bet(
541
549
  id=str(self.transactionHash),
542
550
  # Use the transaction hash instead of the bet id - both are valid, but we return the transaction hash from the trade functions, so be consistent here.
543
- amount=BetAmount(amount=self.collateralAmountUSD, currency=Currency.xDai),
551
+ amount=BetAmount(amount=self.collateral_amount_usd, currency=Currency.xDai),
544
552
  outcome=self.boolean_outcome,
545
553
  created_time=self.creation_datetime,
546
554
  market_question=self.title,
@@ -556,7 +564,7 @@ class OmenBet(BaseModel):
556
564
  return ResolvedBet(
557
565
  id=self.transactionHash.hex(),
558
566
  # Use the transaction hash instead of the bet id - both are valid, but we return the transaction hash from the trade functions, so be consistent here.
559
- amount=BetAmount(amount=self.collateralAmountUSD, currency=Currency.xDai),
567
+ amount=BetAmount(amount=self.collateral_amount_usd, currency=Currency.xDai),
560
568
  outcome=self.boolean_outcome,
561
569
  created_time=self.creation_datetime,
562
570
  market_question=self.title,
@@ -775,6 +783,12 @@ class CreatedMarket(BaseModel):
775
783
  fee: Wei
776
784
  distribution_hint: list[OmenOutcomeToken] | None
777
785
 
786
+ @property
787
+ def url(self) -> str:
788
+ return construct_presagio_url(
789
+ self.market_event.fixed_product_market_maker_checksummed
790
+ )
791
+
778
792
 
779
793
  class ContractPrediction(BaseModel):
780
794
  model_config = ConfigDict(populate_by_name=True)
@@ -480,6 +480,8 @@ class OmenAgentMarket(AgentMarket):
480
480
  better_address: ChecksumAddress,
481
481
  start_time: DatetimeUTC,
482
482
  end_time: DatetimeUTC | None,
483
+ market_resolved_before: DatetimeUTC | None = None,
484
+ market_resolved_after: DatetimeUTC | None = None,
483
485
  ) -> list[ResolvedBet]:
484
486
  subgraph_handler = OmenSubgraphHandler()
485
487
  bets = subgraph_handler.get_resolved_bets_with_valid_answer(
@@ -487,6 +489,8 @@ class OmenAgentMarket(AgentMarket):
487
489
  start_time=start_time,
488
490
  end_time=end_time,
489
491
  market_id=None,
492
+ market_resolved_before=market_resolved_before,
493
+ market_resolved_after=market_resolved_after,
490
494
  )
491
495
  generic_bets = [b.to_generic_resolved_bet() for b in bets]
492
496
  return generic_bets
@@ -33,6 +33,9 @@ from prediction_market_agent_tooling.markets.omen.omen_contracts import (
33
33
  WrappedxDaiContract,
34
34
  sDaiContract,
35
35
  )
36
+ from prediction_market_agent_tooling.tools.caches.inmemory_cache import (
37
+ persistent_inmemory_cache,
38
+ )
36
39
  from prediction_market_agent_tooling.tools.utils import (
37
40
  DatetimeUTC,
38
41
  to_int_timestamp,
@@ -112,7 +115,6 @@ class OmenSubgraphHandler(BaseSubgraphHandler):
112
115
  bets_field.creator.id,
113
116
  bets_field.creationTimestamp,
114
117
  bets_field.collateralAmount,
115
- bets_field.collateralAmountUSD,
116
118
  bets_field.feeAmount,
117
119
  bets_field.outcomeIndex,
118
120
  bets_field.outcomeTokensTraded,
@@ -524,6 +526,8 @@ class OmenSubgraphHandler(BaseSubgraphHandler):
524
526
  filter_by_answer_finalized_not_null: bool = False,
525
527
  type_: t.Literal["Buy", "Sell"] | None = None,
526
528
  market_opening_after: DatetimeUTC | None = None,
529
+ market_resolved_before: DatetimeUTC | None = None,
530
+ market_resolved_after: DatetimeUTC | None = None,
527
531
  collateral_amount_more_than: Wei | None = None,
528
532
  sort_by_field: FieldPath | None = None,
529
533
  sort_direction: str | None = None,
@@ -549,6 +553,15 @@ class OmenSubgraphHandler(BaseSubgraphHandler):
549
553
  where_stms.append(
550
554
  trade.fpmm.openingTimestamp > to_int_timestamp(market_opening_after)
551
555
  )
556
+ if market_resolved_after is not None:
557
+ where_stms.append(
558
+ trade.fpmm.resolutionTimestamp > to_int_timestamp(market_resolved_after)
559
+ )
560
+ if market_resolved_before is not None:
561
+ where_stms.append(
562
+ trade.fpmm.resolutionTimestamp
563
+ < to_int_timestamp(market_resolved_before)
564
+ )
552
565
  if collateral_amount_more_than is not None:
553
566
  where_stms.append(trade.collateralAmount > collateral_amount_more_than)
554
567
 
@@ -577,6 +590,8 @@ class OmenSubgraphHandler(BaseSubgraphHandler):
577
590
  market_id: t.Optional[ChecksumAddress] = None,
578
591
  filter_by_answer_finalized_not_null: bool = False,
579
592
  market_opening_after: DatetimeUTC | None = None,
593
+ market_resolved_before: DatetimeUTC | None = None,
594
+ market_resolved_after: DatetimeUTC | None = None,
580
595
  collateral_amount_more_than: Wei | None = None,
581
596
  ) -> list[OmenBet]:
582
597
  return self.get_trades(
@@ -587,15 +602,19 @@ class OmenSubgraphHandler(BaseSubgraphHandler):
587
602
  filter_by_answer_finalized_not_null=filter_by_answer_finalized_not_null,
588
603
  type_="Buy", # We consider `bet` to be only the `Buy` trade types.
589
604
  market_opening_after=market_opening_after,
605
+ market_resolved_before=market_resolved_before,
606
+ market_resolved_after=market_resolved_after,
590
607
  collateral_amount_more_than=collateral_amount_more_than,
591
608
  )
592
609
 
593
610
  def get_resolved_bets(
594
611
  self,
595
612
  better_address: ChecksumAddress,
596
- start_time: DatetimeUTC,
613
+ start_time: DatetimeUTC | None = None,
597
614
  end_time: t.Optional[DatetimeUTC] = None,
598
615
  market_id: t.Optional[ChecksumAddress] = None,
616
+ market_resolved_before: DatetimeUTC | None = None,
617
+ market_resolved_after: DatetimeUTC | None = None,
599
618
  ) -> list[OmenBet]:
600
619
  omen_bets = self.get_bets(
601
620
  better_address=better_address,
@@ -603,14 +622,18 @@ class OmenSubgraphHandler(BaseSubgraphHandler):
603
622
  end_time=end_time,
604
623
  market_id=market_id,
605
624
  filter_by_answer_finalized_not_null=True,
625
+ market_resolved_before=market_resolved_before,
626
+ market_resolved_after=market_resolved_after,
606
627
  )
607
628
  return [b for b in omen_bets if b.fpmm.is_resolved]
608
629
 
609
630
  def get_resolved_bets_with_valid_answer(
610
631
  self,
611
632
  better_address: ChecksumAddress,
612
- start_time: DatetimeUTC,
633
+ start_time: DatetimeUTC | None = None,
613
634
  end_time: t.Optional[DatetimeUTC] = None,
635
+ market_resolved_before: DatetimeUTC | None = None,
636
+ market_resolved_after: DatetimeUTC | None = None,
614
637
  market_id: t.Optional[ChecksumAddress] = None,
615
638
  ) -> list[OmenBet]:
616
639
  bets = self.get_resolved_bets(
@@ -618,6 +641,8 @@ class OmenSubgraphHandler(BaseSubgraphHandler):
618
641
  start_time=start_time,
619
642
  end_time=end_time,
620
643
  market_id=market_id,
644
+ market_resolved_before=market_resolved_before,
645
+ market_resolved_after=market_resolved_after,
621
646
  )
622
647
  return [b for b in bets if b.fpmm.is_resolved_with_valid_answer]
623
648
 
@@ -926,3 +951,13 @@ class OmenSubgraphHandler(BaseSubgraphHandler):
926
951
  raise RuntimeError("Multiple results found for a single bet.")
927
952
 
928
953
  return results[0]
954
+
955
+
956
+ @persistent_inmemory_cache
957
+ def get_omen_market_by_market_id_cached(
958
+ market_id: HexAddress,
959
+ block_number: int, # Force `block_number` to be provided, because `latest` block constantly updates.
960
+ ) -> OmenMarket:
961
+ return OmenSubgraphHandler().get_omen_market_by_market_id(
962
+ market_id, block_number=block_number
963
+ )
@@ -3,13 +3,13 @@ import pandas as pd
3
3
 
4
4
  from prediction_market_agent_tooling.markets.data_models import (
5
5
  SharpeOutput,
6
- SimulationDetail,
6
+ SimulatedBetDetail,
7
7
  )
8
8
 
9
9
 
10
10
  class SharpeRatioCalculator:
11
11
  def __init__(
12
- self, details: list[SimulationDetail], risk_free_rate: float = 0.0
12
+ self, details: list[SimulatedBetDetail], risk_free_rate: float = 0.0
13
13
  ) -> None:
14
14
  self.details = details
15
15
  self.df = pd.DataFrame([d.model_dump() for d in self.details])
@@ -19,7 +19,9 @@ class SharpeRatioCalculator:
19
19
  self, required_columns: list[str]
20
20
  ) -> None:
21
21
  if not set(required_columns).issubset(self.df.columns):
22
- raise ValueError("Dataframe doesn't contain all the required columns.")
22
+ raise ValueError(
23
+ f"Dataframe doesn't contain all the required columns. {required_columns=} {self.df.columns=}"
24
+ )
23
25
 
24
26
  def prepare_wallet_daily_balance_df(
25
27
  self, timestamp_col_name: str, profit_col_name: str
@@ -1,5 +1,5 @@
1
1
  from functools import cache
2
- from typing import Any, Callable, TypeVar, cast
2
+ from typing import Any, Callable, TypeVar, cast, overload
3
3
 
4
4
  from joblib import Memory
5
5
 
@@ -7,11 +7,51 @@ from prediction_market_agent_tooling.config import APIKeys
7
7
 
8
8
  MEMORY = Memory(APIKeys().CACHE_DIR, verbose=0)
9
9
 
10
+
10
11
  T = TypeVar("T", bound=Callable[..., Any])
11
12
 
12
13
 
13
- def persistent_inmemory_cache(func: T) -> T:
14
+ @overload
15
+ def persistent_inmemory_cache(
16
+ func: None = None,
17
+ *,
18
+ in_memory_cache: bool = True,
19
+ ) -> Callable[[T], T]:
20
+ ...
21
+
22
+
23
+ @overload
24
+ def persistent_inmemory_cache(
25
+ func: T,
26
+ *,
27
+ in_memory_cache: bool = True,
28
+ ) -> T:
29
+ ...
30
+
31
+
32
+ def persistent_inmemory_cache(
33
+ func: T | None = None,
34
+ *,
35
+ in_memory_cache: bool = True,
36
+ ) -> T | Callable[[T], T]:
14
37
  """
15
- Wraps a function with both file cache (for persistent cache) and in-memory cache (for speed).
38
+ Wraps a function with both file cache (for persistent cache) and optional in-memory cache (for speed).
39
+ Can be used as @persistent_inmemory_cache or @persistent_inmemory_cache(in_memory_cache=False)
16
40
  """
17
- return cast(T, cache(MEMORY.cache(func)) if APIKeys().ENABLE_CACHE else func)
41
+ if func is None:
42
+ # Ugly Pythonic way to support this decorator as `@persistent_inmemory_cache` but also `@persistent_inmemory_cache(in_memory_cache=False)`
43
+ def decorator(func: T) -> T:
44
+ return persistent_inmemory_cache(
45
+ func,
46
+ in_memory_cache=in_memory_cache,
47
+ )
48
+
49
+ return decorator
50
+ else:
51
+ # The decorator is called without arguments.
52
+ if not APIKeys().ENABLE_CACHE:
53
+ return func
54
+ cached_func = MEMORY.cache(func)
55
+ if in_memory_cache:
56
+ cached_func = cache(cached_func)
57
+ return cast(T, cached_func)
@@ -3,7 +3,10 @@ import hishel
3
3
 
4
4
  class HttpxCachedClient:
5
5
  def __init__(self) -> None:
6
- storage = hishel.FileStorage(ttl=3600, check_ttl_every=600)
6
+ storage = hishel.FileStorage(
7
+ ttl=24 * 60 * 60,
8
+ check_ttl_every=1 * 60 * 60,
9
+ )
7
10
  controller = hishel.Controller(force_cache=True)
8
11
  self.client = hishel.CacheClient(storage=storage, controller=controller)
9
12
 
@@ -63,6 +63,7 @@ def get_traces_for_agent(
63
63
  from_timestamp: DatetimeUTC,
64
64
  has_output: bool,
65
65
  client: Langfuse,
66
+ to_timestamp: DatetimeUTC | None = None,
66
67
  ) -> list[TraceWithDetails]:
67
68
  """
68
69
  Fetch agent traces using pagination
@@ -76,6 +77,7 @@ def get_traces_for_agent(
76
77
  limit=100,
77
78
  page=page,
78
79
  from_timestamp=from_timestamp,
80
+ to_timestamp=to_timestamp,
79
81
  )
80
82
  if not traces.data:
81
83
  break
@@ -9,8 +9,8 @@ from prediction_market_agent_tooling.loggers import logger
9
9
 
10
10
  class TransactionBlockCache:
11
11
  def __init__(self, web3: Web3):
12
- self.block_number_cache = dc.Cache("block_cache_dir")
13
- self.block_timestamp_cache = dc.Cache("timestamp_cache_dir")
12
+ self.block_number_cache = dc.Cache(".cache/block_cache_dir")
13
+ self.block_timestamp_cache = dc.Cache(".cache/timestamp_cache_dir")
14
14
  self.web3 = web3
15
15
 
16
16
  @tenacity.retry(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prediction-market-agent-tooling
3
- Version: 0.57.1
3
+ Version: 0.57.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
@@ -10,6 +10,7 @@ Classifier: Programming Language :: Python :: 3.11
10
10
  Provides-Extra: google
11
11
  Provides-Extra: langchain
12
12
  Provides-Extra: openai
13
+ Provides-Extra: optuna
13
14
  Requires-Dist: autoflake (>=2.2.1,<3.0.0)
14
15
  Requires-Dist: base58 (>=1.0.2,<2.0)
15
16
  Requires-Dist: cron-validator (>=1.0.8,<2.0.0)
@@ -30,6 +31,7 @@ Requires-Dist: loguru (>=0.7.2,<0.8.0)
30
31
  Requires-Dist: loky (>=3.4.1,<4.0.0)
31
32
  Requires-Dist: numpy (>=1.26.4,<2.0.0)
32
33
  Requires-Dist: openai (>=1.0.0,<2.0.0) ; extra == "openai"
34
+ Requires-Dist: optuna (>=4.1.0,<5.0.0) ; extra == "optuna"
33
35
  Requires-Dist: pinatapy-vourhey (>=0.2.0,<0.3.0)
34
36
  Requires-Dist: prompt-toolkit (>=3.0.43,<4.0.0)
35
37
  Requires-Dist: psycopg2-binary (>=2.9.9,<3.0.0)
@@ -31,9 +31,9 @@ prediction_market_agent_tooling/jobs/jobs_models.py,sha256=GOtsNm7URhzZM5fPY64r8
31
31
  prediction_market_agent_tooling/jobs/omen/omen_jobs.py,sha256=N0_jGDyXQeVXXlYg4oA_pOfqIjscHsLQbr0pBwFGoRo,5178
32
32
  prediction_market_agent_tooling/loggers.py,sha256=Am6HHXRNO545BO3l7Ue9Wb2TkYE1OK8KKhGbI3XypVU,3751
33
33
  prediction_market_agent_tooling/markets/agent_market.py,sha256=W2ME57-CSAhrt8qm8-b5r7yLq-Sk7R_BZMaApvjhrUE,12901
34
- prediction_market_agent_tooling/markets/base_subgraph_handler.py,sha256=IxDTwX4tej9j5olNkXcLIE0RCF1Nh2icZQUT2ERMmZo,1937
34
+ prediction_market_agent_tooling/markets/base_subgraph_handler.py,sha256=7RaYO_4qAmQ6ZGM8oPK2-CkiJfKmV9MxM-rJlduaecU,1971
35
35
  prediction_market_agent_tooling/markets/categorize.py,sha256=jsoHWvZk9pU6n17oWSCcCxNNYVwlb_NXsZxKRI7vmsk,1301
36
- prediction_market_agent_tooling/markets/data_models.py,sha256=VoEWm338qQMQIRvWpWpDgDjVk9D_3tCHrZPd0Gy0dAA,4033
36
+ prediction_market_agent_tooling/markets/data_models.py,sha256=oMoHxxiNekGgXX1FFExS_MNuHjte2pV1OEynVDIKVc8,4368
37
37
  prediction_market_agent_tooling/markets/manifold/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  prediction_market_agent_tooling/markets/manifold/api.py,sha256=Fd0HYnstvvHO6AZkp1xiRlvCwQUc8kLR8DAj6PAZu0s,7297
39
39
  prediction_market_agent_tooling/markets/manifold/data_models.py,sha256=eiGS4rEkxseZNpEb2BICKnjF0qqgkQTMuUPbSe7_04I,6059
@@ -45,11 +45,11 @@ prediction_market_agent_tooling/markets/metaculus/api.py,sha256=4TRPGytQQbSdf42D
45
45
  prediction_market_agent_tooling/markets/metaculus/data_models.py,sha256=Suxa7xELdYuFNKqvGvFh8qyfVtAg79E-vaQ6dqNZOtA,3261
46
46
  prediction_market_agent_tooling/markets/metaculus/metaculus.py,sha256=86TIx6cavEWc8Cv4KpZxSvwiSw9oFybXE3YB49pg-CA,4377
47
47
  prediction_market_agent_tooling/markets/omen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
- prediction_market_agent_tooling/markets/omen/data_models.py,sha256=sUiv8xdccvw15ndgbHIavwz7O_eBxp4wGX2zuuZkd2g,27768
49
- prediction_market_agent_tooling/markets/omen/omen.py,sha256=6zo8iBBLdI9g9keJ1dw9PXs4rf4V4tCW8D4e08f3g0Q,51349
48
+ prediction_market_agent_tooling/markets/omen/data_models.py,sha256=MBaWnUDGjYzbnDOHKPGrhAn0CP7iETVmsulRPqTf00I,28270
49
+ prediction_market_agent_tooling/markets/omen/omen.py,sha256=jrpfeMk8SUwk1p5QWCOm3Qt9HOHsux7DIBm77WRHqW4,51582
50
50
  prediction_market_agent_tooling/markets/omen/omen_contracts.py,sha256=baXJwk-jSI3-FV-k239oCNOA4oKz6LT47juX8AKpW3A,28297
51
51
  prediction_market_agent_tooling/markets/omen/omen_resolving.py,sha256=iDWdjICGkt968exwCjY-6nsnQyrrNAg3YjnDdP430GQ,9415
52
- prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py,sha256=lG-2hCmmkjKHX1Ca-SipLBeETnTheXpjg5Qfed0tqFo,36506
52
+ prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py,sha256=IsnWiVSmaR5I82D49MpJpRu7uE-wkMEgubsLzt0qZVI,38125
53
53
  prediction_market_agent_tooling/markets/polymarket/api.py,sha256=UZ4_TG8ceb9Y-qgsOKs8Qiv8zDt957QkT8IX2c83yqo,4800
54
54
  prediction_market_agent_tooling/markets/polymarket/data_models.py,sha256=Fd5PI5y3mJM8VHExBhWFWEnuuIKxQmIAXgBuoPDvNjw,4341
55
55
  prediction_market_agent_tooling/markets/polymarket/data_models_web.py,sha256=VZhVccTApygSKMmy6Au2G02JCJOKJnR_oVeKlaesuSg,12548
@@ -57,7 +57,7 @@ prediction_market_agent_tooling/markets/polymarket/polymarket.py,sha256=NRoZK71P
57
57
  prediction_market_agent_tooling/markets/polymarket/utils.py,sha256=DImFxeMg8lTfsEDZ8FavndW38TfUsCkawcVGnucsuGo,2029
58
58
  prediction_market_agent_tooling/markets/seer/data_models.py,sha256=2f6DOXhGerYbTSk5vUvw_y87TcUxOtSfca8-Et7imtU,643
59
59
  prediction_market_agent_tooling/markets/seer/seer_subgraph_handler.py,sha256=Jola8AxmNDljBCzl6Gvjb9qH75Y7D5dAwbdZl_jndN8,5478
60
- prediction_market_agent_tooling/monitor/financial_metrics/financial_metrics.py,sha256=fEiD-upH7vm5FWSND86r_qW0oV5ZonhaJEBxLK0OZAs,2672
60
+ prediction_market_agent_tooling/monitor/financial_metrics/financial_metrics.py,sha256=fjIgjDIx5MhH5mwf7S0cspLOOSU3elYLhGYoIiM26mU,2746
61
61
  prediction_market_agent_tooling/monitor/markets/manifold.py,sha256=TS4ERwTfQnot8dhekNyVNhJYf5ysYsjF-9v5_kM3aVI,3334
62
62
  prediction_market_agent_tooling/monitor/markets/metaculus.py,sha256=LOnyWWBFdg10-cTWdb76nOsNjDloO8OfMT85GBzRCFI,1455
63
63
  prediction_market_agent_tooling/monitor/markets/omen.py,sha256=EqiJYTvDbSu7fBpbrBmCuf3fc6GHr4MxWrBGa69MIyc,3305
@@ -73,7 +73,7 @@ prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py,s
73
73
  prediction_market_agent_tooling/tools/betting_strategies/stretch_bet_between.py,sha256=THMXwFlskvzbjnX_OiYtDSzI8XVFyULWfP2525_9UGc,429
74
74
  prediction_market_agent_tooling/tools/betting_strategies/utils.py,sha256=kpIb-ci67Vc1Yqqaa-_S4OUkbhWSIYog4_Iwp69HU_k,97
75
75
  prediction_market_agent_tooling/tools/caches/db_cache.py,sha256=rkA7somZZo5G6OZVvNrCuCVc4kn7TUoPxmOq4J6BZ54,10391
76
- prediction_market_agent_tooling/tools/caches/inmemory_cache.py,sha256=tGHHd9HCiE_hCCtPtloHZQdDfBuiow9YsqJNYi2Tx_0,499
76
+ prediction_market_agent_tooling/tools/caches/inmemory_cache.py,sha256=ZW5iI5rmjqeAebu5T7ftRnlkxiL02IC-MxCfDB80x7w,1506
77
77
  prediction_market_agent_tooling/tools/caches/serializers.py,sha256=upSXN5__rmRlzJ6tv1h7FodKzJu9eCkFrN_zeuwroJM,2151
78
78
  prediction_market_agent_tooling/tools/contract.py,sha256=Um_nQlpYJRBy4MnNR1CPKESehVwx_w35LwYX6T6py_0,20837
79
79
  prediction_market_agent_tooling/tools/costs.py,sha256=EaAJ7v9laD4VEV3d8B44M4u3_oEO_H16jRVCdoZ93Uw,954
@@ -82,14 +82,14 @@ prediction_market_agent_tooling/tools/datetime_utc.py,sha256=2JSWF7AXQnv04_D_cu9
82
82
  prediction_market_agent_tooling/tools/db/db_manager.py,sha256=-WGYY-ZyqPveXb642gw4-Zh-RicMrBFgx7uqCB8TuDg,2801
83
83
  prediction_market_agent_tooling/tools/google_utils.py,sha256=t3_UEEvKX3L0biSIQ560GdRbllQ6eprhK_upE243A-0,3185
84
84
  prediction_market_agent_tooling/tools/hexbytes_custom.py,sha256=Bp94qgPjvjWf1Vb4lNzGFDXRdThw1rJ91vL6r2PWq5E,2096
85
- prediction_market_agent_tooling/tools/httpx_cached_client.py,sha256=0-N1r0zcGKlY9Rk-Ab8hbqwc54eMbsoa3jXL0_yCCiM,355
85
+ prediction_market_agent_tooling/tools/httpx_cached_client.py,sha256=RxD-hwtZCMctnMwfzy8t51W9Z9gxFGtDYxBIMChazpc,406
86
86
  prediction_market_agent_tooling/tools/image_gen/image_gen.py,sha256=HzRwBx62hOXBOmrtpkXaP9Qq1Ku03uUGdREocyjLQ_k,1266
87
87
  prediction_market_agent_tooling/tools/image_gen/market_thumbnail_gen.py,sha256=jgOow4zw6g8dIJrog6Tp-3NQs4wjUJ3VgVKyMQv-0QM,1286
88
88
  prediction_market_agent_tooling/tools/ipfs/ipfs_handler.py,sha256=CTTMfTvs_8PH4kAtlQby2aeEKwgpmxtuGbd4oYIdJ2A,1201
89
89
  prediction_market_agent_tooling/tools/is_invalid.py,sha256=vuX0TKKhc_7iVnwAjXvfZeFwjr9nyYgREaYQDe-GYgA,5334
90
90
  prediction_market_agent_tooling/tools/is_predictable.py,sha256=dSuL8eLnGNKd_MQ3CaT1OuQkAykr3m5kn7f8HHKgDcM,6797
91
91
  prediction_market_agent_tooling/tools/langfuse_.py,sha256=jI_4ROxqo41CCnWGS1vN_AeDVhRzLMaQLxH3kxDu3L8,1153
92
- prediction_market_agent_tooling/tools/langfuse_client_utils.py,sha256=_m5SFnJJy4E0ubvY8ohzEEjES4nMJ_2zfa3wp4x3gSA,5817
92
+ prediction_market_agent_tooling/tools/langfuse_client_utils.py,sha256=83T31s-YbsnNBLyYCjmBI2BBKUEqJUuYFa0uCdkoqy8,5901
93
93
  prediction_market_agent_tooling/tools/omen/reality_accuracy.py,sha256=M1SF7iSW1gVlQSTskdVFTn09uPLST23YeipVIWj54io,2236
94
94
  prediction_market_agent_tooling/tools/parallelism.py,sha256=6Gou0hbjtMZrYvxjTDFUDZuxmE2nqZVbb6hkg1hF82A,1022
95
95
  prediction_market_agent_tooling/tools/relevant_news_analysis/data_models.py,sha256=95l84aztFaxcRLLcRQ46yKJbIlOEuDAbIGLouyliDzA,1316
@@ -100,11 +100,11 @@ prediction_market_agent_tooling/tools/singleton.py,sha256=CiIELUiI-OeS7U7eeHEt0r
100
100
  prediction_market_agent_tooling/tools/streamlit_user_login.py,sha256=NXEqfjT9Lc9QtliwSGRASIz1opjQ7Btme43H4qJbzgE,3010
101
101
  prediction_market_agent_tooling/tools/tavily/tavily_models.py,sha256=5ldQs1pZe6uJ5eDAuP4OLpzmcqYShlIV67kttNFvGS0,342
102
102
  prediction_market_agent_tooling/tools/tavily/tavily_search.py,sha256=Kw2mXNkMTYTEe1MBSTqhQmLoeXtgb6CkmHlcAJvhtqE,3809
103
- prediction_market_agent_tooling/tools/transaction_cache.py,sha256=C96OHkNqPJr_yDiHesSRgekeXIbX62qFl9qldArleuo,1800
103
+ prediction_market_agent_tooling/tools/transaction_cache.py,sha256=K5YKNL2_tR10Iw2TD9fuP-CTGpBbZtNdgbd0B_R7pjg,1814
104
104
  prediction_market_agent_tooling/tools/utils.py,sha256=WvuUCHgMCiMq8_wMm5PHNwvLhcdDk2zGKaAM8OUC-qY,6438
105
105
  prediction_market_agent_tooling/tools/web3_utils.py,sha256=hWDa7D-jP-iW647t0ATPyiUgKbAq25iH97KUnha25SQ,11944
106
- prediction_market_agent_tooling-0.57.1.dist-info/LICENSE,sha256=6or154nLLU6bELzjh0mCreFjt0m2v72zLi3yHE0QbeE,7650
107
- prediction_market_agent_tooling-0.57.1.dist-info/METADATA,sha256=dOd_dooUIoLkSfsh7mHctHKfDM1W4fCmqu-Xgr_8gAY,8106
108
- prediction_market_agent_tooling-0.57.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
109
- prediction_market_agent_tooling-0.57.1.dist-info/entry_points.txt,sha256=m8PukHbeH5g0IAAmOf_1Ahm-sGAMdhSSRQmwtpmi2s8,81
110
- prediction_market_agent_tooling-0.57.1.dist-info/RECORD,,
106
+ prediction_market_agent_tooling-0.57.2.dist-info/LICENSE,sha256=6or154nLLU6bELzjh0mCreFjt0m2v72zLi3yHE0QbeE,7650
107
+ prediction_market_agent_tooling-0.57.2.dist-info/METADATA,sha256=tzVRrpZtV9Jty0w9XLwxGagZiC3scgqPP6d2cBhqp1A,8188
108
+ prediction_market_agent_tooling-0.57.2.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
109
+ prediction_market_agent_tooling-0.57.2.dist-info/entry_points.txt,sha256=m8PukHbeH5g0IAAmOf_1Ahm-sGAMdhSSRQmwtpmi2s8,81
110
+ prediction_market_agent_tooling-0.57.2.dist-info/RECORD,,