prediction-market-agent-tooling 0.60.4__tar.gz → 0.60.6__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 (123) hide show
  1. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/PKG-INFO +1 -1
  2. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/config.py +8 -0
  3. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/deploy/agent.py +1 -0
  4. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/polymarket/utils.py +2 -2
  5. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/balances.py +2 -0
  6. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/google_utils.py +23 -27
  7. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/pyproject.toml +1 -1
  8. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/LICENSE +0 -0
  9. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/README.md +0 -0
  10. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/debuggingcontract.abi.json +0 -0
  11. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/depositablewrapper_erc20.abi.json +0 -0
  12. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/erc20.abi.json +0 -0
  13. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/erc4626.abi.json +0 -0
  14. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/erc721.abi.json +0 -0
  15. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/omen_agentresultmapping.abi.json +0 -0
  16. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/omen_dxdao.abi.json +0 -0
  17. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/omen_fpmm.abi.json +0 -0
  18. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/omen_fpmm_conditionaltokens.abi.json +0 -0
  19. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/omen_fpmm_factory.abi.json +0 -0
  20. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/omen_kleros.abi.json +0 -0
  21. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/omen_oracle.abi.json +0 -0
  22. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/omen_realitio.abi.json +0 -0
  23. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/omen_thumbnailmapping.abi.json +0 -0
  24. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/ownable.abi.json +0 -0
  25. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/ownable_erc721.abi.json +0 -0
  26. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/proxy.abi.json +0 -0
  27. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/abis/seer_market_factory.abi.json +0 -0
  28. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/benchmark/__init__.py +0 -0
  29. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/benchmark/agents.py +0 -0
  30. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/benchmark/benchmark.py +0 -0
  31. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/benchmark/utils.py +0 -0
  32. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/deploy/agent_example.py +0 -0
  33. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/deploy/betting_strategy.py +0 -0
  34. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/deploy/constants.py +0 -0
  35. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/deploy/gcp/deploy.py +0 -0
  36. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/deploy/gcp/kubernetes_models.py +0 -0
  37. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/deploy/gcp/utils.py +0 -0
  38. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/deploy/trade_interval.py +0 -0
  39. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/gtypes.py +0 -0
  40. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/jobs/__init__.py +0 -0
  41. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/jobs/jobs_models.py +0 -0
  42. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/jobs/omen/omen_jobs.py +0 -0
  43. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/loggers.py +0 -0
  44. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/agent_market.py +0 -0
  45. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/base_subgraph_handler.py +0 -0
  46. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/blockchain_utils.py +0 -0
  47. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/categorize.py +0 -0
  48. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/data_models.py +0 -0
  49. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/manifold/__init__.py +0 -0
  50. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/manifold/api.py +0 -0
  51. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/manifold/data_models.py +0 -0
  52. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/manifold/manifold.py +0 -0
  53. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/manifold/utils.py +0 -0
  54. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/market_fees.py +0 -0
  55. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/markets.py +0 -0
  56. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/metaculus/api.py +0 -0
  57. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/metaculus/data_models.py +0 -0
  58. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/metaculus/metaculus.py +0 -0
  59. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/omen/__init__.py +0 -0
  60. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/omen/data_models.py +0 -0
  61. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/omen/omen.py +0 -0
  62. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/omen/omen_constants.py +0 -0
  63. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/omen/omen_contracts.py +0 -0
  64. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/omen/omen_resolving.py +0 -0
  65. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py +0 -0
  66. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/polymarket/api.py +0 -0
  67. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/polymarket/data_models.py +0 -0
  68. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/polymarket/data_models_web.py +0 -0
  69. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/polymarket/polymarket.py +0 -0
  70. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/seer/data_models.py +0 -0
  71. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/seer/seer.py +0 -0
  72. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/seer/seer_contracts.py +0 -0
  73. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/markets/seer/seer_subgraph_handler.py +0 -0
  74. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/monitor/financial_metrics/financial_metrics.py +0 -0
  75. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/monitor/markets/manifold.py +0 -0
  76. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/monitor/markets/metaculus.py +0 -0
  77. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/monitor/markets/omen.py +0 -0
  78. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/monitor/markets/polymarket.py +0 -0
  79. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/monitor/monitor.py +0 -0
  80. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/monitor/monitor_app.py +0 -0
  81. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/monitor/monitor_settings.py +0 -0
  82. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/py.typed +0 -0
  83. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/betting_strategies/kelly_criterion.py +0 -0
  84. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/betting_strategies/market_moving.py +0 -0
  85. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py +0 -0
  86. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/betting_strategies/stretch_bet_between.py +0 -0
  87. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/betting_strategies/utils.py +0 -0
  88. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/caches/db_cache.py +0 -0
  89. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/caches/inmemory_cache.py +0 -0
  90. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/caches/serializers.py +0 -0
  91. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/contract.py +0 -0
  92. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/costs.py +0 -0
  93. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/cow/cow_manager.py +0 -0
  94. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/cow/cow_order.py +0 -0
  95. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/custom_exceptions.py +0 -0
  96. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/datetime_utc.py +0 -0
  97. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/db/db_manager.py +0 -0
  98. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/hexbytes_custom.py +0 -0
  99. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/httpx_cached_client.py +0 -0
  100. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/image_gen/image_gen.py +0 -0
  101. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/image_gen/market_thumbnail_gen.py +0 -0
  102. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/ipfs/ipfs_handler.py +0 -0
  103. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/is_invalid.py +0 -0
  104. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/is_predictable.py +0 -0
  105. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/langfuse_.py +0 -0
  106. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/langfuse_client_utils.py +0 -0
  107. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/omen/reality_accuracy.py +0 -0
  108. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/omen/sell_positions.py +0 -0
  109. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/parallelism.py +0 -0
  110. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/relevant_news_analysis/data_models.py +0 -0
  111. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/relevant_news_analysis/relevant_news_analysis.py +0 -0
  112. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/relevant_news_analysis/relevant_news_cache.py +0 -0
  113. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/safe.py +0 -0
  114. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/singleton.py +0 -0
  115. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/streamlit_user_login.py +0 -0
  116. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/tavily/tavily_models.py +0 -0
  117. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/tavily/tavily_search.py +0 -0
  118. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/tokens/auto_deposit.py +0 -0
  119. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/tokens/auto_withdraw.py +0 -0
  120. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/tokens/main_token.py +0 -0
  121. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/transaction_cache.py +0 -0
  122. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/prediction_market_agent_tooling/tools/utils.py +0 -0
  123. {prediction_market_agent_tooling-0.60.4 → prediction_market_agent_tooling-0.60.6}/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.60.4
3
+ Version: 0.60.6
4
4
  Summary: Tools to benchmark, deploy and monitor prediction market agents.
5
5
  Author: Gnosis
6
6
  Requires-Python: >=3.10,<3.13
@@ -60,6 +60,8 @@ class APIKeys(BaseSettings):
60
60
  PINATA_API_SECRET: t.Optional[SecretStr] = None
61
61
 
62
62
  TAVILY_API_KEY: t.Optional[SecretStr] = None
63
+ # Don't get fooled! Serper and Serp are two different services.
64
+ SERPER_API_KEY: t.Optional[SecretStr] = None
63
65
 
64
66
  SQLALCHEMY_DB_URL: t.Optional[SecretStr] = None
65
67
 
@@ -102,6 +104,12 @@ class APIKeys(BaseSettings):
102
104
  data.SAFE_ADDRESS = None
103
105
  return data
104
106
 
107
+ @property
108
+ def serper_api_key(self) -> SecretStr:
109
+ return check_not_none(
110
+ self.SERPER_API_KEY, "SERPER_API_KEY missing in the environment."
111
+ )
112
+
105
113
  @property
106
114
  def manifold_user_id(self) -> str:
107
115
  return get_authenticated_user(
@@ -106,6 +106,7 @@ class DeployableAgent:
106
106
  ) -> None:
107
107
  self.start_time = utcnow()
108
108
  self.enable_langfuse = enable_langfuse
109
+ self.api_keys = APIKeys()
109
110
  self.initialize_langfuse()
110
111
  self.load()
111
112
 
@@ -3,7 +3,7 @@ from prediction_market_agent_tooling.markets.markets import MarketType
3
3
  from prediction_market_agent_tooling.markets.polymarket.data_models_web import (
4
4
  PolymarketFullMarket,
5
5
  )
6
- from prediction_market_agent_tooling.tools.google_utils import search_google
6
+ from prediction_market_agent_tooling.tools.google_utils import search_google_gcp
7
7
 
8
8
 
9
9
  def find_resolution_on_polymarket(question: str) -> Resolution | None:
@@ -35,7 +35,7 @@ def find_url_to_polymarket(question: str) -> str | None:
35
35
  slug = "".join(replace_chars.get(char, char) for char in question.lower())
36
36
 
37
37
  # Search for the links to the Polymarket's market page on Google.
38
- links = search_google(
38
+ links = search_google_gcp(
39
39
  # For some reason, just giving it in the query works better than using `site_search`, `exact_terms` or other parameters of the google search.
40
40
  query=f"{MarketType.POLYMARKET.market_class.base_url} {question}",
41
41
  num=10,
@@ -1,4 +1,5 @@
1
1
  from pydantic import BaseModel
2
+ from tenacity import retry, stop_after_attempt, wait_fixed
2
3
  from web3 import Web3
3
4
  from web3.types import Wei
4
5
 
@@ -20,6 +21,7 @@ class Balances(BaseModel):
20
21
  return xDai(self.xdai + self.wxdai + self.sdai)
21
22
 
22
23
 
24
+ @retry(stop=stop_after_attempt(3), wait=wait_fixed(1))
23
25
  def get_balances(address: ChecksumAddress, web3: Web3 | None = None) -> Balances:
24
26
  if not web3:
25
27
  web3 = WrappedxDaiContract().get_web3()
@@ -1,14 +1,11 @@
1
- import json
2
1
  import typing as t
3
2
  from datetime import timedelta
4
3
 
4
+ import requests
5
5
  import tenacity
6
- from google.cloud import secretmanager
7
6
  from googleapiclient.discovery import build
8
- from pydantic import SecretStr
9
7
 
10
- from prediction_market_agent_tooling.config import APIKeys, CloudCredentials
11
- from prediction_market_agent_tooling.gtypes import PrivateKey
8
+ from prediction_market_agent_tooling.config import APIKeys
12
9
  from prediction_market_agent_tooling.loggers import logger
13
10
  from prediction_market_agent_tooling.tools.caches.db_cache import db_cache
14
11
 
@@ -16,10 +13,10 @@ from prediction_market_agent_tooling.tools.caches.db_cache import db_cache
16
13
  @tenacity.retry(
17
14
  wait=tenacity.wait_fixed(1),
18
15
  stop=tenacity.stop_after_attempt(3),
19
- after=lambda x: logger.debug(f"search_google failed, {x.attempt_number=}."),
16
+ after=lambda x: logger.debug(f"search_google_gcp failed, {x.attempt_number=}."),
20
17
  )
21
18
  @db_cache(max_age=timedelta(days=1))
22
- def search_google(
19
+ def search_google_gcp(
23
20
  query: str | None = None,
24
21
  num: int = 3,
25
22
  exact_terms: str | None = None,
@@ -57,24 +54,23 @@ def search_google(
57
54
  raise ValueError(f"Can not parse results: {search}") from e
58
55
 
59
56
 
60
- def get_private_key_from_gcp_secret(
61
- secret_id: str,
62
- project_id: str = "582587111398", # Gnosis AI default project_id
63
- version_id: str = "latest",
64
- ) -> PrivateKey:
65
- # If credentials filename specified, use that, else read using default credentials path.
66
- google_application_credentials_filename = (
67
- CloudCredentials().GOOGLE_APPLICATION_CREDENTIALS
57
+ @tenacity.retry(
58
+ wait=tenacity.wait_fixed(1),
59
+ stop=tenacity.stop_after_attempt(3),
60
+ after=lambda x: logger.debug(f"search_google_serper failed, {x.attempt_number=}."),
61
+ )
62
+ @db_cache(max_age=timedelta(days=1))
63
+ def search_google_serper(q: str) -> list[str]:
64
+ """Search Google using the Serper API."""
65
+ url = "https://google.serper.dev/search"
66
+ response = requests.post(
67
+ url,
68
+ headers={
69
+ "X-API-KEY": APIKeys().serper_api_key.get_secret_value(),
70
+ "Content-Type": "application/json",
71
+ },
72
+ json={"q": q},
68
73
  )
69
- if google_application_credentials_filename is not None:
70
- # mypy interprets incorrectly that from_service_account_json requires further args.
71
- client = secretmanager.SecretManagerServiceClient.from_service_account_json(filename=google_application_credentials_filename) # type: ignore [call-arg]
72
- else:
73
- client = secretmanager.SecretManagerServiceClient()
74
- name = f"projects/{project_id}/secrets/{secret_id}/versions/{version_id}"
75
- response = client.access_secret_version(request={"name": name})
76
- secret_payload = response.payload.data.decode("UTF-8")
77
- secret_json = json.loads(secret_payload)
78
- if "private_key" not in secret_json:
79
- raise ValueError(f"Private key not found in gcp secret {secret_id}")
80
- return PrivateKey(SecretStr(secret_json["private_key"]))
74
+ response.raise_for_status()
75
+ parsed = response.json()
76
+ return [x["link"] for x in parsed["organic"] if x.get("link")]
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "prediction-market-agent-tooling"
3
- version = "0.60.4"
3
+ version = "0.60.6"
4
4
  description = "Tools to benchmark, deploy and monitor prediction market agents."
5
5
  authors = ["Gnosis"]
6
6
  readme = "README.md"