prediction-market-agent-tooling 0.48.15__tar.gz → 0.48.17__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 (91) hide show
  1. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/PKG-INFO +2 -1
  2. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/loggers.py +6 -3
  3. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/langfuse_client_utils.py +0 -5
  4. prediction_market_agent_tooling-0.48.17/prediction_market_agent_tooling/tools/parallelism.py +33 -0
  5. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/pyproject.toml +2 -1
  6. prediction_market_agent_tooling-0.48.15/prediction_market_agent_tooling/tools/parallelism.py +0 -44
  7. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/LICENSE +0 -0
  8. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/README.md +0 -0
  9. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/abis/depositablewrapper_erc20.abi.json +0 -0
  10. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/abis/erc20.abi.json +0 -0
  11. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/abis/erc4626.abi.json +0 -0
  12. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/abis/omen_dxdao.abi.json +0 -0
  13. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/abis/omen_fpmm.abi.json +0 -0
  14. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/abis/omen_fpmm_conditionaltokens.abi.json +0 -0
  15. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/abis/omen_fpmm_factory.abi.json +0 -0
  16. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/abis/omen_kleros.abi.json +0 -0
  17. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/abis/omen_oracle.abi.json +0 -0
  18. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/abis/omen_realitio.abi.json +0 -0
  19. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/abis/omen_thumbnailmapping.abi.json +0 -0
  20. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/abis/proxy.abi.json +0 -0
  21. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/benchmark/__init__.py +0 -0
  22. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/benchmark/agents.py +0 -0
  23. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/benchmark/benchmark.py +0 -0
  24. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/benchmark/utils.py +0 -0
  25. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/config.py +0 -0
  26. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/deploy/agent.py +0 -0
  27. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/deploy/agent_example.py +0 -0
  28. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/deploy/betting_strategy.py +0 -0
  29. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/deploy/constants.py +0 -0
  30. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/deploy/gcp/deploy.py +0 -0
  31. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/deploy/gcp/kubernetes_models.py +0 -0
  32. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/deploy/gcp/utils.py +0 -0
  33. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/gtypes.py +0 -0
  34. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/jobs/__init__.py +0 -0
  35. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/jobs/jobs.py +0 -0
  36. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/jobs/jobs_models.py +1 -1
  37. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/jobs/omen/omen_jobs.py +0 -0
  38. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/agent_market.py +0 -0
  39. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/categorize.py +0 -0
  40. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/data_models.py +0 -0
  41. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/manifold/__init__.py +0 -0
  42. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/manifold/api.py +0 -0
  43. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/manifold/data_models.py +0 -0
  44. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/manifold/manifold.py +0 -0
  45. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/manifold/utils.py +0 -0
  46. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/markets.py +0 -0
  47. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/metaculus/api.py +0 -0
  48. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/metaculus/data_models.py +0 -0
  49. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/metaculus/metaculus.py +0 -0
  50. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/omen/__init__.py +0 -0
  51. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/omen/data_models.py +0 -0
  52. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/omen/omen.py +0 -0
  53. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/omen/omen_contracts.py +0 -0
  54. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/omen/omen_resolving.py +0 -0
  55. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py +0 -0
  56. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/polymarket/api.py +0 -0
  57. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/polymarket/data_models.py +0 -0
  58. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/polymarket/data_models_web.py +0 -0
  59. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/polymarket/polymarket.py +0 -0
  60. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/markets/polymarket/utils.py +0 -0
  61. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/monitor/markets/manifold.py +0 -0
  62. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/monitor/markets/metaculus.py +0 -0
  63. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/monitor/markets/omen.py +0 -0
  64. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/monitor/markets/polymarket.py +0 -0
  65. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/monitor/monitor.py +0 -0
  66. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/monitor/monitor_app.py +0 -0
  67. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/monitor/monitor_settings.py +0 -0
  68. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/py.typed +0 -0
  69. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/balances.py +0 -0
  70. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/betting_strategies/kelly_criterion.py +0 -0
  71. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/betting_strategies/market_moving.py +0 -0
  72. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py +0 -0
  73. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/betting_strategies/stretch_bet_between.py +0 -0
  74. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/betting_strategies/utils.py +0 -0
  75. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/cache.py +0 -0
  76. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/contract.py +0 -0
  77. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/costs.py +0 -0
  78. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/gnosis_rpc.py +0 -0
  79. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/google.py +0 -0
  80. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/hexbytes_custom.py +0 -0
  81. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/image_gen/image_gen.py +0 -0
  82. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/image_gen/market_thumbnail_gen.py +0 -0
  83. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/is_predictable.py +0 -0
  84. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/langfuse_.py +0 -0
  85. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/safe.py +0 -0
  86. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/singleton.py +0 -0
  87. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/streamlit_user_login.py +0 -0
  88. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/tavily_storage/tavily_models.py +0 -0
  89. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/tavily_storage/tavily_storage.py +0 -0
  90. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/utils.py +0 -0
  91. {prediction_market_agent_tooling-0.48.15 → prediction_market_agent_tooling-0.48.17}/prediction_market_agent_tooling/tools/web3_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prediction-market-agent-tooling
3
- Version: 0.48.15
3
+ Version: 0.48.17
4
4
  Summary: Tools to benchmark, deploy and monitor prediction market agents.
5
5
  Author: Gnosis
6
6
  Requires-Python: >=3.10,<3.12
@@ -26,6 +26,7 @@ Requires-Dist: langchain-community (>=0.0.19)
26
26
  Requires-Dist: langchain-openai (>=0.1.0,<0.2.0) ; extra == "langchain"
27
27
  Requires-Dist: langfuse (>=2.42.0,<3.0.0)
28
28
  Requires-Dist: loguru (>=0.7.2,<0.8.0)
29
+ Requires-Dist: loky (>=3.4.1,<4.0.0)
29
30
  Requires-Dist: numpy (>=1.26.4,<2.0.0)
30
31
  Requires-Dist: openai (>=1.0.0,<2.0.0) ; extra == "openai"
31
32
  Requires-Dist: prompt-toolkit (>=3.0.43,<4.0.0)
@@ -49,6 +49,11 @@ def patch_logger() -> None:
49
49
  Function to patch loggers according to the deployed environment.
50
50
  Patches Loguru's logger, Python's default logger, warnings library and also monkey-patch print function as many libraries just use it.
51
51
  """
52
+ if not getattr(logger, "_patched", False):
53
+ logger._patched = True # type: ignore[attr-defined] # Hacky way to store a flag on the logger object, to not patch it multiple times.
54
+ else:
55
+ return
56
+
52
57
  config = LogConfig()
53
58
 
54
59
  if config.LOG_FORMAT == LogFormat.GCP:
@@ -116,6 +121,4 @@ def simple_warning_format(message, category, filename, lineno, line=None): # ty
116
121
  ) # Escape new lines, because otherwise logs will be broken.
117
122
 
118
123
 
119
- if not getattr(logger, "_patched", False):
120
- patch_logger()
121
- logger._patched = True # type: ignore[attr-defined] # Hacky way to store a flag on the logger object, to not patch it multiple times.
124
+ patch_logger()
@@ -150,10 +150,5 @@ def get_trace_for_bet(
150
150
  add_utc_timezone_validator(bet.created_time),
151
151
  [t.timestamp for t in traces_for_bet],
152
152
  )
153
- # Sanity check - the trace should be after the bet
154
- if traces_for_bet[closest_trace_index].timestamp < add_utc_timezone_validator(
155
- bet.created_time
156
- ):
157
- return None
158
153
 
159
154
  return traces_for_bet[closest_trace_index]
@@ -0,0 +1,33 @@
1
+ from typing import Callable, Generator, TypeVar
2
+
3
+ from loky import get_reusable_executor
4
+
5
+ from prediction_market_agent_tooling.loggers import patch_logger
6
+
7
+ A = TypeVar("A")
8
+ B = TypeVar("B")
9
+
10
+
11
+ def par_map(
12
+ items: list[A],
13
+ func: Callable[[A], B],
14
+ max_workers: int = 5,
15
+ ) -> "list[B]":
16
+ """Applies the function to each element using the specified executor. Awaits for all results."""
17
+ executor = get_reusable_executor(max_workers=max_workers, initializer=patch_logger)
18
+ futures = [executor.submit(func, item) for item in items]
19
+ results = []
20
+ for fut in futures:
21
+ results.append(fut.result())
22
+ return results
23
+
24
+
25
+ def par_generator(
26
+ items: list[A],
27
+ func: Callable[[A], B],
28
+ max_workers: int = 5,
29
+ ) -> Generator[B, None, None]:
30
+ """Applies the function to each element using the specified executor. Yields results as they come."""
31
+ executor = get_reusable_executor(max_workers=max_workers, initializer=patch_logger)
32
+ for res in executor.map(func, items):
33
+ yield res
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "prediction-market-agent-tooling"
3
- version = "0.48.15"
3
+ version = "0.48.17"
4
4
  description = "Tools to benchmark, deploy and monitor prediction market agents."
5
5
  authors = ["Gnosis"]
6
6
  readme = "README.md"
@@ -47,6 +47,7 @@ tavily-python = "^0.3.9"
47
47
  sqlmodel = "^0.0.21"
48
48
  psycopg2-binary = "^2.9.9"
49
49
  base58 = ">=1.0.2,<2.0"
50
+ loky = "^3.4.1"
50
51
 
51
52
  [tool.poetry.extras]
52
53
  openai = ["openai"]
@@ -1,44 +0,0 @@
1
- import concurrent
2
- from concurrent.futures import Executor
3
- from concurrent.futures.process import ProcessPoolExecutor
4
- from concurrent.futures.thread import ThreadPoolExecutor
5
- from typing import Callable, Generator, TypeVar
6
-
7
- # Max workers to 5 to avoid rate limiting on some APIs, create a custom executor if you need more workers.
8
- DEFAULT_THREADPOOL_EXECUTOR = ThreadPoolExecutor(max_workers=5)
9
- DEFAULT_PROCESSPOOL_EXECUTOR = ProcessPoolExecutor(max_workers=5)
10
-
11
- A = TypeVar("A")
12
- B = TypeVar("B")
13
-
14
-
15
- def par_map(
16
- items: list[A],
17
- func: Callable[[A], B],
18
- executor: Executor = DEFAULT_THREADPOOL_EXECUTOR,
19
- ) -> "list[B]":
20
- """Applies the function to each element using the specified executor. Awaits for all results.
21
- If executor is ProcessPoolExecutor, make sure the function passed is pickable, e.g. no lambda functions
22
- """
23
- futures: list[concurrent.futures._base.Future[B]] = [
24
- executor.submit(func, item) for item in items
25
- ]
26
- results = []
27
- for fut in futures:
28
- results.append(fut.result())
29
- return results
30
-
31
-
32
- def par_generator(
33
- items: list[A],
34
- func: Callable[[A], B],
35
- executor: Executor = DEFAULT_THREADPOOL_EXECUTOR,
36
- ) -> Generator[B, None, None]:
37
- """Applies the function to each element using the specified executor. Yields results as they come.
38
- If executor is ProcessPoolExecutor, make sure the function passed is pickable, e.g. no lambda functions.
39
- """
40
- futures: list[concurrent.futures._base.Future[B]] = [
41
- executor.submit(func, item) for item in items
42
- ]
43
- for fut in concurrent.futures.as_completed(futures):
44
- yield fut.result()
@@ -36,8 +36,8 @@ class JobAgentMarket(AgentMarket, ABC):
36
36
  def get_reward(self, max_bond: float) -> float:
37
37
  """Reward for completing this job."""
38
38
 
39
- @abstractmethod
40
39
  @classmethod
40
+ @abstractmethod
41
41
  def get_jobs(
42
42
  cls, limit: int | None, filter_by: FilterBy, sort_by: SortBy
43
43
  ) -> t.Sequence["JobAgentMarket"]: