prediction-market-agent-tooling 0.64.11.dev653__tar.gz → 0.64.12__tar.gz

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.
Files changed (133) hide show
  1. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/PKG-INFO +1 -1
  2. prediction_market_agent_tooling-0.64.12/prediction_market_agent_tooling/chains.py +4 -0
  3. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/config.py +6 -5
  4. prediction_market_agent_tooling-0.64.12/prediction_market_agent_tooling/logprobs_parser.py +155 -0
  5. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/data_models.py +2 -0
  6. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/omen/omen.py +1 -1
  7. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/omen/omen_contracts.py +8 -0
  8. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/contract.py +54 -14
  9. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/pyproject.toml +1 -1
  10. prediction_market_agent_tooling-0.64.11.dev653/prediction_market_agent_tooling/logprobs_parser.py +0 -117
  11. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/LICENSE +0 -0
  12. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/README.md +0 -0
  13. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/debuggingcontract.abi.json +0 -0
  14. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/depositablewrapper_erc20.abi.json +0 -0
  15. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/erc20.abi.json +0 -0
  16. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/erc4626.abi.json +0 -0
  17. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/erc721.abi.json +0 -0
  18. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/gvp2_settlement.abi.json +0 -0
  19. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/omen_agentresultmapping.abi.json +0 -0
  20. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/omen_dxdao.abi.json +0 -0
  21. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/omen_fpmm.abi.json +0 -0
  22. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/omen_fpmm_conditionaltokens.abi.json +0 -0
  23. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/omen_fpmm_factory.abi.json +0 -0
  24. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/omen_kleros.abi.json +0 -0
  25. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/omen_oracle.abi.json +0 -0
  26. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/omen_realitio.abi.json +0 -0
  27. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/omen_thumbnailmapping.abi.json +0 -0
  28. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/ownable.abi.json +0 -0
  29. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/ownable_erc721.abi.json +0 -0
  30. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/proxy.abi.json +0 -0
  31. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/seer_gnosis_router.abi.json +0 -0
  32. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/abis/seer_market_factory.abi.json +0 -0
  33. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/benchmark/__init__.py +0 -0
  34. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/benchmark/agents.py +0 -0
  35. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/benchmark/benchmark.py +0 -0
  36. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/benchmark/utils.py +0 -0
  37. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/deploy/agent.py +0 -0
  38. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/deploy/agent_example.py +0 -0
  39. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/deploy/betting_strategy.py +0 -0
  40. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/deploy/constants.py +0 -0
  41. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/deploy/gcp/deploy.py +0 -0
  42. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/deploy/gcp/kubernetes_models.py +0 -0
  43. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/deploy/gcp/utils.py +0 -0
  44. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/deploy/trade_interval.py +0 -0
  45. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/gtypes.py +0 -0
  46. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/jobs/__init__.py +0 -0
  47. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/jobs/jobs_models.py +0 -0
  48. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/jobs/omen/omen_jobs.py +0 -0
  49. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/loggers.py +0 -0
  50. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/agent_market.py +0 -0
  51. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/base_subgraph_handler.py +0 -0
  52. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/blockchain_utils.py +0 -0
  53. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/categorize.py +0 -0
  54. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/manifold/__init__.py +0 -0
  55. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/manifold/api.py +0 -0
  56. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/manifold/data_models.py +0 -0
  57. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/manifold/manifold.py +0 -0
  58. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/manifold/utils.py +0 -0
  59. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/market_fees.py +0 -0
  60. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/markets.py +0 -0
  61. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/metaculus/api.py +0 -0
  62. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/metaculus/data_models.py +0 -0
  63. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/metaculus/metaculus.py +0 -0
  64. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/omen/__init__.py +0 -0
  65. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/omen/cow_contracts.py +0 -0
  66. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/omen/data_models.py +0 -0
  67. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/omen/omen_constants.py +0 -0
  68. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/omen/omen_resolving.py +0 -0
  69. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py +0 -0
  70. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/polymarket/api.py +0 -0
  71. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/polymarket/data_models.py +0 -0
  72. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/polymarket/data_models_web.py +0 -0
  73. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/polymarket/polymarket.py +0 -0
  74. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/polymarket/utils.py +0 -0
  75. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/seer/data_models.py +0 -0
  76. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/seer/price_manager.py +0 -0
  77. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/seer/seer.py +0 -0
  78. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/seer/seer_contracts.py +0 -0
  79. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/seer/seer_subgraph_handler.py +0 -0
  80. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/markets/seer/subgraph_data_models.py +0 -0
  81. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/monitor/financial_metrics/financial_metrics.py +0 -0
  82. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/monitor/markets/manifold.py +0 -0
  83. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/monitor/markets/metaculus.py +0 -0
  84. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/monitor/markets/omen.py +0 -0
  85. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/monitor/markets/polymarket.py +0 -0
  86. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/monitor/monitor.py +0 -0
  87. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/monitor/monitor_app.py +0 -0
  88. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/monitor/monitor_settings.py +0 -0
  89. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/py.typed +0 -0
  90. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/_generic_value.py +0 -0
  91. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/balances.py +0 -0
  92. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/betting_strategies/kelly_criterion.py +0 -0
  93. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/betting_strategies/market_moving.py +0 -0
  94. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py +0 -0
  95. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/betting_strategies/stretch_bet_between.py +0 -0
  96. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/betting_strategies/utils.py +0 -0
  97. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/caches/db_cache.py +0 -0
  98. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/caches/inmemory_cache.py +0 -0
  99. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/caches/serializers.py +0 -0
  100. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/costs.py +0 -0
  101. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/cow/cow_order.py +0 -0
  102. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/custom_exceptions.py +0 -0
  103. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/datetime_utc.py +0 -0
  104. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/db/db_manager.py +0 -0
  105. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/google_utils.py +0 -0
  106. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/hexbytes_custom.py +0 -0
  107. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/httpx_cached_client.py +0 -0
  108. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/image_gen/image_gen.py +0 -0
  109. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/image_gen/market_thumbnail_gen.py +0 -0
  110. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/ipfs/ipfs_handler.py +0 -0
  111. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/is_invalid.py +0 -0
  112. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/is_predictable.py +0 -0
  113. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/langfuse_.py +0 -0
  114. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/langfuse_client_utils.py +0 -0
  115. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/omen/reality_accuracy.py +0 -0
  116. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/omen/sell_positions.py +0 -0
  117. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/parallelism.py +0 -0
  118. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/relevant_news_analysis/data_models.py +0 -0
  119. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/relevant_news_analysis/relevant_news_analysis.py +0 -0
  120. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/relevant_news_analysis/relevant_news_cache.py +0 -0
  121. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/safe.py +0 -0
  122. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/singleton.py +0 -0
  123. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/streamlit_user_login.py +0 -0
  124. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/tavily/tavily_models.py +0 -0
  125. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/tavily/tavily_search.py +0 -0
  126. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/tokens/auto_deposit.py +0 -0
  127. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/tokens/auto_withdraw.py +0 -0
  128. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/tokens/main_token.py +0 -0
  129. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/tokens/token_utils.py +0 -0
  130. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/tokens/usd.py +0 -0
  131. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/transaction_cache.py +0 -0
  132. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/utils.py +0 -0
  133. {prediction_market_agent_tooling-0.64.11.dev653 → prediction_market_agent_tooling-0.64.12}/prediction_market_agent_tooling/tools/web3_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: prediction-market-agent-tooling
3
- Version: 0.64.11.dev653
3
+ Version: 0.64.12
4
4
  Summary: Tools to benchmark, deploy and monitor prediction market agents.
5
5
  Author: Gnosis
6
6
  Requires-Python: >=3.10,<3.13
@@ -0,0 +1,4 @@
1
+ from prediction_market_agent_tooling.gtypes import ChainID
2
+
3
+ ETHEREUM_ID = ChainID(1)
4
+ GNOSIS_CHAIN_ID = ChainID(100)
@@ -12,6 +12,7 @@ from safe_eth.eth import EthereumClient
12
12
  from safe_eth.safe.safe import SafeV141
13
13
  from web3 import Account, Web3
14
14
 
15
+ from prediction_market_agent_tooling.chains import ETHEREUM_ID, GNOSIS_CHAIN_ID
15
16
  from prediction_market_agent_tooling.deploy.gcp.utils import gcp_get_secret_value
16
17
  from prediction_market_agent_tooling.gtypes import (
17
18
  ChainID,
@@ -278,9 +279,9 @@ class RPCConfig(BaseSettings):
278
279
  env_file=".env", env_file_encoding="utf-8", extra="ignore"
279
280
  )
280
281
 
281
- ETHEREUM_RPC_URL: URI = Field(default=URI("https://ethereum-rpc.publicnode.com"))
282
- GNOSIS_RPC_URL: URI = Field(default=URI("https://rpc.gnosischain.com"))
283
- CHAIN_ID: ChainID = Field(default=ChainID(100))
282
+ ETHEREUM_RPC_URL: URI = Field(default=URI("https://rpc.eth.gateway.fm"))
283
+ GNOSIS_RPC_URL: URI = Field(default=URI("https://rpc.gnosis.gateway.fm"))
284
+ CHAIN_ID: ChainID = Field(default=GNOSIS_CHAIN_ID)
284
285
 
285
286
  @property
286
287
  def ethereum_rpc_url(self) -> URI:
@@ -299,9 +300,9 @@ class RPCConfig(BaseSettings):
299
300
  return check_not_none(self.CHAIN_ID, "CHAIN_ID missing in the environment.")
300
301
 
301
302
  def chain_id_to_rpc_url(self, chain_id: ChainID) -> URI:
302
- if chain_id == ChainID(1):
303
+ if chain_id == ETHEREUM_ID:
303
304
  return self.ethereum_rpc_url
304
- elif chain_id == ChainID(100):
305
+ elif chain_id == GNOSIS_CHAIN_ID:
305
306
  return self.gnosis_rpc_url
306
307
  else:
307
308
  raise ValueError(f"Unsupported chain ID: {chain_id}")
@@ -0,0 +1,155 @@
1
+ import math
2
+ from itertools import product
3
+ from typing import Any, Tuple, Type
4
+
5
+ from pydantic import BaseModel, ValidationError
6
+ from pydantic.fields import FieldInfo
7
+ from pydantic.type_adapter import TypeAdapter
8
+
9
+ from prediction_market_agent_tooling.loggers import logger
10
+
11
+
12
+ class LogprobDetail(BaseModel):
13
+ token: str
14
+ logprob: float
15
+ prob: float
16
+
17
+
18
+ class FieldLogprobs(BaseModel):
19
+ key: str
20
+ logprobs: list[LogprobDetail]
21
+
22
+
23
+ class LogprobsParser:
24
+ def __init__(
25
+ self,
26
+ skip_fields: list[str] | None = None,
27
+ max_top_logprobs_length: int = 3,
28
+ max_logprobs_length: int = 5,
29
+ ):
30
+ base_skip_fields = ["logprobs"]
31
+ self.skip_fields = base_skip_fields + (skip_fields or [])
32
+ self.max_top_logprobs_length = max_top_logprobs_length
33
+ self.max_logprobs_length = max_logprobs_length
34
+
35
+ def _get_logprobs_key_index(
36
+ self, logprobs: list[dict[str, Any]], field_name: str
37
+ ) -> int:
38
+ key_candidate = ""
39
+ for i, token in enumerate(logprobs):
40
+ if token["token"] in field_name:
41
+ key_candidate = key_candidate + token["token"]
42
+ else:
43
+ key_candidate = ""
44
+ if key_candidate == field_name:
45
+ return i
46
+
47
+ return -1
48
+
49
+ def _get_logprobs_indexes_for_result(
50
+ self, logprobs: list[dict[str, Any]], key_index: int
51
+ ) -> Tuple[int, int]:
52
+ result_start_index = next(
53
+ (
54
+ i
55
+ for i in range(key_index + 1, len(logprobs))
56
+ if logprobs[i]["token"] in {":", ",", " ", ' "', '"', "\t", "\u00A0"}
57
+ ),
58
+ -1,
59
+ )
60
+ result_end_index = next(
61
+ (
62
+ i
63
+ for i in range(result_start_index, len(logprobs))
64
+ if logprobs[i]["token"] in {",", '"', ",\n", "\",\n'", '",\n'}
65
+ ),
66
+ len(logprobs) - 1,
67
+ )
68
+ return result_start_index + 1, result_end_index
69
+
70
+ def _is_correct_type(self, token: str, key_type: type | None) -> bool:
71
+ if key_type is None:
72
+ return True
73
+
74
+ try:
75
+ TypeAdapter(key_type).validate_python(token)
76
+ return True
77
+ except ValidationError:
78
+ return False
79
+
80
+ def _parse_valid_tokens_with__agg_probs(
81
+ self,
82
+ logprobs_list: list[tuple[dict[str, Any]]],
83
+ field_info: FieldInfo,
84
+ top_logprobs: int,
85
+ ) -> list[dict[str, Any]]:
86
+ results: list[dict[str, Any]] = [
87
+ {
88
+ "token": "".join(str(logprob["token"]) for logprob in logprobs),
89
+ "logprob": sum(float(logprob["logprob"]) for logprob in logprobs),
90
+ "prob": math.exp(
91
+ sum(float(logprob["logprob"]) for logprob in logprobs)
92
+ ),
93
+ }
94
+ for logprobs in logprobs_list
95
+ ]
96
+
97
+ results_filtered: list[dict[str, Any]] = [
98
+ result
99
+ for result in results
100
+ if self._is_correct_type(result["token"], field_info.annotation)
101
+ ]
102
+
103
+ sorted_results = sorted(
104
+ results_filtered, key=lambda x: x["logprob"], reverse=True
105
+ )
106
+ return (
107
+ sorted_results[:top_logprobs]
108
+ if len(sorted_results) > top_logprobs
109
+ else sorted_results
110
+ )
111
+
112
+ def parse_logprobs(
113
+ self, logprobs: list[dict[str, Any]], target_model_cls: Type[BaseModel]
114
+ ) -> list[FieldLogprobs]:
115
+ results_for_keys = []
116
+
117
+ for field_name, field_info in target_model_cls.model_fields.items():
118
+ if field_name in self.skip_fields:
119
+ continue
120
+
121
+ key_index = self._get_logprobs_key_index(logprobs, field_name)
122
+
123
+ if key_index < 0:
124
+ logger.warning(f"Key {field_name} not found in logprobs")
125
+ continue
126
+
127
+ (
128
+ result_start_index,
129
+ result_end_index,
130
+ ) = self._get_logprobs_indexes_for_result(logprobs, key_index)
131
+
132
+ if result_start_index < 0 or result_end_index < 0:
133
+ logger.warning(f"Error in parsing result for {field_name} in logprobs")
134
+ continue
135
+
136
+ valid_logprobs_raw = [
137
+ logprobs[i]["top_logprobs"][: self.max_top_logprobs_length]
138
+ for i in range(result_start_index, result_end_index)
139
+ if logprobs[i]["top_logprobs"] is not None
140
+ ]
141
+
142
+ parsed_logprobs_data = self._parse_valid_tokens_with__agg_probs(
143
+ list(product(*valid_logprobs_raw[: self.max_logprobs_length])),
144
+ field_info,
145
+ min(len(sublist) for sublist in valid_logprobs_raw),
146
+ )
147
+
148
+ results_for_keys.append(
149
+ FieldLogprobs(
150
+ key=field_name,
151
+ logprobs=[LogprobDetail(**item) for item in parsed_logprobs_data],
152
+ )
153
+ )
154
+
155
+ return results_for_keys
@@ -10,6 +10,7 @@ from prediction_market_agent_tooling.gtypes import (
10
10
  OutcomeToken,
11
11
  Probability,
12
12
  )
13
+ from prediction_market_agent_tooling.logprobs_parser import FieldLogprobs
13
14
  from prediction_market_agent_tooling.tools.utils import DatetimeUTC
14
15
 
15
16
 
@@ -77,6 +78,7 @@ class ProbabilisticAnswer(BaseModel):
77
78
  p_yes: Probability
78
79
  confidence: float
79
80
  reasoning: str | None = None
81
+ logprobs: list[FieldLogprobs] | None = None
80
82
 
81
83
  @property
82
84
  def p_no(self) -> Probability:
@@ -90,7 +90,7 @@ from prediction_market_agent_tooling.tools.web3_utils import get_receipt_block_t
90
90
 
91
91
  OMEN_DEFAULT_REALITIO_BOND_VALUE = xDai(0.01)
92
92
  # Too low value would work with the Omen contract, but causes CoW orders (when buying the specific market's tokens) to fail.
93
- OMEN_TINY_BET_AMOUNT = USD(0.001)
93
+ OMEN_TINY_BET_AMOUNT = USD(0.01)
94
94
 
95
95
 
96
96
  class OmenAgentMarket(AgentMarket):
@@ -431,6 +431,12 @@ class OmenFixedProductMarketMakerContract(ContractOnGnosisChain):
431
431
  )
432
432
 
433
433
 
434
+ class MetriSuperGroup(ContractERC20OnGnosisChain):
435
+ address: ChecksumAddress = Web3.to_checksum_address(
436
+ "0x7147A7405fCFe5CFa30c6d5363f9f357a317d082"
437
+ )
438
+
439
+
434
440
  class GNOContract(ContractERC20OnGnosisChain):
435
441
  address: ChecksumAddress = Web3.to_checksum_address(
436
442
  "0x9c58bacc331c9aa871afd802db6379a98e80cedb"
@@ -923,10 +929,12 @@ class CollateralTokenChoice(str, Enum):
923
929
  wxdai = "wxdai"
924
930
  sdai = "sdai"
925
931
  gno = "gno"
932
+ metri_super_user = "metri_super_user"
926
933
 
927
934
 
928
935
  COLLATERAL_TOKEN_CHOICE_TO_ADDRESS = {
929
936
  CollateralTokenChoice.wxdai: WrappedxDaiContract().address,
930
937
  CollateralTokenChoice.sdai: sDaiContract().address,
931
938
  CollateralTokenChoice.gno: GNOContract().address,
939
+ CollateralTokenChoice.metri_super_user: MetriSuperGroup().address,
932
940
  }
@@ -4,6 +4,8 @@ import time
4
4
  import typing as t
5
5
  from contextlib import contextmanager
6
6
 
7
+ import eth_abi
8
+ from eth_abi.exceptions import DecodingError
7
9
  from pydantic import BaseModel, field_validator
8
10
  from web3 import Web3
9
11
  from web3.constants import CHECKSUM_ADDRESSS_ZERO
@@ -20,6 +22,7 @@ from prediction_market_agent_tooling.gtypes import (
20
22
  TxReceipt,
21
23
  Wei,
22
24
  )
25
+ from prediction_market_agent_tooling.loggers import logger
23
26
  from prediction_market_agent_tooling.tools.utils import DatetimeUTC
24
27
  from prediction_market_agent_tooling.tools.web3_utils import (
25
28
  call_function_on_contract,
@@ -591,27 +594,64 @@ def contract_implements_function(
591
594
  look_for_proxy_contract: bool = True,
592
595
  ) -> bool:
593
596
  function_signature = f"{function_name}({','.join(function_arg_types or [])})"
594
- function_hash = web3.keccak(text=function_signature)[0:4].hex()[2:]
597
+ function_selector = web3.keccak(text=function_signature)[0:4].hex()[2:]
598
+ # 1. Check directly in bytecode
599
+ bytecode = web3.eth.get_code(contract_address).hex()
600
+ if function_selector in bytecode:
601
+ return True
595
602
  contract_code = web3.eth.get_code(contract_address).hex()
596
- implements = function_hash in contract_code
597
- if (
598
- not implements
599
- and look_for_proxy_contract
600
- and contract_implements_function(
603
+ implements = function_selector in contract_code
604
+
605
+ # If not found directly and we should check proxies
606
+ if not implements and look_for_proxy_contract:
607
+ # Case 1: Check if it's a standard proxy (has implementation() function)
608
+ if contract_implements_function(
601
609
  contract_address, "implementation", web3, look_for_proxy_contract=False
602
- )
603
- ):
604
- implementation_address = ContractProxyOnGnosisChain(
605
- address=contract_address
606
- ).implementation()
607
- implements = contract_implements_function(
608
- implementation_address,
610
+ ):
611
+ # Get the implementation address and check the function there
612
+ implementation_address = ContractProxyOnGnosisChain(
613
+ address=contract_address
614
+ ).implementation()
615
+ implements = contract_implements_function(
616
+ implementation_address,
617
+ function_name=function_name,
618
+ web3=web3,
619
+ function_arg_types=function_arg_types,
620
+ look_for_proxy_contract=False,
621
+ )
622
+ else:
623
+ # Case 2: Check if it's a minimal proxy contract
624
+ implements = minimal_proxy_implements_function(
625
+ contract_address=contract_address,
626
+ function_name=function_name,
627
+ web3=web3,
628
+ function_arg_types=function_arg_types,
629
+ )
630
+
631
+ return implements
632
+
633
+
634
+ def minimal_proxy_implements_function(
635
+ contract_address: ChecksumAddress,
636
+ function_name: str,
637
+ web3: Web3,
638
+ function_arg_types: list[str] | None = None,
639
+ ) -> bool:
640
+ try:
641
+ # Read storage slot 0 which should contain the implementation address in minimal proxies
642
+ raw_slot_0 = web3.eth.get_storage_at(contract_address, 0)
643
+ singleton_address = eth_abi.decode(["address"], raw_slot_0)[0]
644
+ # Recurse into singleton
645
+ return contract_implements_function(
646
+ Web3.to_checksum_address(singleton_address),
609
647
  function_name=function_name,
610
648
  web3=web3,
611
649
  function_arg_types=function_arg_types,
612
650
  look_for_proxy_contract=False,
613
651
  )
614
- return implements
652
+ except DecodingError:
653
+ logger.info(f"Error decoding contract address for singleton")
654
+ return False
615
655
 
616
656
 
617
657
  def init_collateral_token_contract(
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "prediction-market-agent-tooling"
3
- version = "0.64.11.dev653"
3
+ version = "0.64.12"
4
4
  description = "Tools to benchmark, deploy and monitor prediction market agents."
5
5
  authors = ["Gnosis"]
6
6
  readme = "README.md"
@@ -1,117 +0,0 @@
1
- import math
2
- from itertools import product
3
- from typing import Any, Tuple
4
-
5
- from pydantic import BaseModel
6
-
7
- from prediction_market_agent_tooling.loggers import logger
8
-
9
-
10
- class LogprobKey(BaseModel):
11
- name: str
12
- key_type: type
13
- valid_values: set[Any] | None
14
-
15
-
16
- class LogprobsParser:
17
- def _get_logprobs_key_index(
18
- self, logprobs: list[dict[str, Any]], key: LogprobKey
19
- ) -> int:
20
- key_candidate = ""
21
- for i, token in enumerate(logprobs):
22
- if token["token"] in key.name:
23
- key_candidate = key_candidate + token["token"]
24
- else:
25
- key_candidate = ""
26
- if key_candidate == key.name:
27
- return i
28
-
29
- return -1
30
-
31
- def _get_logprobs_indexes_for_result(
32
- self, logprobs: list[dict[str, Any]], key_index: int
33
- ) -> Tuple[int, int]:
34
- result_start_index = next(
35
- (
36
- i
37
- for i in range(key_index + 1, len(logprobs))
38
- if logprobs[i]["token"] in {":", ",", " ", ' "', '"', "\t", "\u00A0"}
39
- ),
40
- -1,
41
- )
42
- result_end_index = next(
43
- (
44
- i
45
- for i in range(result_start_index, len(logprobs))
46
- if logprobs[i]["token"] in {",", '"', ",\n", "\",\n'", '",\n'}
47
- ),
48
- -1,
49
- )
50
- return result_start_index + 1, result_end_index
51
-
52
- def _is_correct_type(self, token: str, key_type: type) -> bool:
53
- try:
54
- key_type(token)
55
- return True
56
- except ValueError:
57
- return False
58
-
59
- def _parse_valid_tokens_with__agg_probs(
60
- self, logprobs_list: list[tuple[dict[str, Any]]], key: LogprobKey
61
- ) -> list[dict[str, Any]]:
62
- results: list[dict[str, Any]] = [
63
- {
64
- "token": "".join(str(logprob["token"]) for logprob in logprobs),
65
- "logprob": sum(float(logprob["logprob"]) for logprob in logprobs),
66
- "prob": math.exp(
67
- sum(float(logprob["logprob"]) for logprob in logprobs)
68
- ),
69
- }
70
- for logprobs in logprobs_list
71
- ]
72
-
73
- results_filtered: list[dict[str, Any]] = [
74
- result
75
- for result in results
76
- if self._is_correct_type(result["token"], key.key_type)
77
- and (key.valid_values is None or result["token"] in key.valid_values)
78
- ]
79
-
80
- return sorted(results_filtered, key=lambda x: x["logprob"], reverse=True)[
81
- : len(logprobs_list[0])
82
- ]
83
-
84
- def parse_logprobs(
85
- self, logprobs: list[dict[str, Any]], keys: list[LogprobKey]
86
- ) -> list[dict[str, Any]]:
87
- results_for_keys = []
88
-
89
- for key in keys:
90
- key_index = self._get_logprobs_key_index(logprobs, key)
91
- if key_index < 0:
92
- logger.warning(f"Key {key.name} not found in logprobs")
93
- continue
94
-
95
- (
96
- result_start_index,
97
- result_end_index,
98
- ) = self._get_logprobs_indexes_for_result(logprobs, key_index)
99
- if result_start_index < 0 or result_end_index < 0:
100
- logger.warning(f"Error in parsing result for {key.name} in logprobs")
101
- continue
102
-
103
- valid_logprobs = [
104
- logprobs[i]["top_logprobs"]
105
- for i in range(result_start_index, result_end_index)
106
- ]
107
-
108
- results_for_keys.append(
109
- {
110
- "key": key.name,
111
- "logprobs": self._parse_valid_tokens_with__agg_probs(
112
- list(product(*valid_logprobs)), key
113
- ),
114
- }
115
- )
116
-
117
- return results_for_keys