prediction-market-agent-tooling 0.56.2.dev129__tar.gz → 0.56.2.dev137__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 (106) hide show
  1. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/PKG-INFO +1 -1
  2. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/caches/db_cache.py +18 -17
  3. prediction_market_agent_tooling-0.56.2.dev137/prediction_market_agent_tooling/tools/pickle_utils.py +31 -0
  4. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/pyproject.toml +1 -1
  5. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/LICENSE +0 -0
  6. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/README.md +0 -0
  7. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/abis/debuggingcontract.abi.json +0 -0
  8. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/abis/depositablewrapper_erc20.abi.json +0 -0
  9. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/abis/erc20.abi.json +0 -0
  10. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/abis/erc4626.abi.json +0 -0
  11. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/abis/omen_agentresultmapping.abi.json +0 -0
  12. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/abis/omen_dxdao.abi.json +0 -0
  13. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/abis/omen_fpmm.abi.json +0 -0
  14. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/abis/omen_fpmm_conditionaltokens.abi.json +0 -0
  15. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/abis/omen_fpmm_factory.abi.json +0 -0
  16. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/abis/omen_kleros.abi.json +0 -0
  17. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/abis/omen_oracle.abi.json +0 -0
  18. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/abis/omen_realitio.abi.json +0 -0
  19. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/abis/omen_thumbnailmapping.abi.json +0 -0
  20. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/abis/proxy.abi.json +0 -0
  21. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/benchmark/__init__.py +0 -0
  22. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/benchmark/agents.py +0 -0
  23. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/benchmark/benchmark.py +0 -0
  24. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/benchmark/utils.py +0 -0
  25. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/config.py +0 -0
  26. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/deploy/agent.py +0 -0
  27. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/deploy/agent_example.py +0 -0
  28. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/deploy/betting_strategy.py +0 -0
  29. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/deploy/constants.py +0 -0
  30. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/deploy/gcp/deploy.py +0 -0
  31. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/deploy/gcp/kubernetes_models.py +0 -0
  32. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/deploy/gcp/utils.py +0 -0
  33. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/deploy/trade_interval.py +0 -0
  34. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/gtypes.py +0 -0
  35. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/jobs/__init__.py +0 -0
  36. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/jobs/jobs_models.py +0 -0
  37. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/jobs/omen/omen_jobs.py +0 -0
  38. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/loggers.py +0 -0
  39. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/agent_market.py +0 -0
  40. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/base_subgraph_handler.py +0 -0
  41. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/categorize.py +0 -0
  42. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/data_models.py +0 -0
  43. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/manifold/__init__.py +0 -0
  44. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/manifold/api.py +0 -0
  45. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/manifold/data_models.py +0 -0
  46. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/manifold/manifold.py +0 -0
  47. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/manifold/utils.py +0 -0
  48. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/market_fees.py +0 -0
  49. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/markets.py +0 -0
  50. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/metaculus/api.py +0 -0
  51. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/metaculus/data_models.py +0 -0
  52. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/metaculus/metaculus.py +0 -0
  53. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/omen/__init__.py +0 -0
  54. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/omen/data_models.py +0 -0
  55. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/omen/omen.py +0 -0
  56. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/omen/omen_contracts.py +0 -0
  57. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/omen/omen_resolving.py +0 -0
  58. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py +0 -0
  59. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/polymarket/api.py +0 -0
  60. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/polymarket/data_models.py +0 -0
  61. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/polymarket/data_models_web.py +0 -0
  62. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/polymarket/polymarket.py +0 -0
  63. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/polymarket/utils.py +0 -0
  64. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/seer/data_models.py +0 -0
  65. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/markets/seer/seer_subgraph_handler.py +0 -0
  66. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/monitor/markets/manifold.py +0 -0
  67. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/monitor/markets/metaculus.py +0 -0
  68. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/monitor/markets/omen.py +0 -0
  69. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/monitor/markets/polymarket.py +0 -0
  70. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/monitor/monitor.py +0 -0
  71. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/monitor/monitor_app.py +0 -0
  72. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/monitor/monitor_settings.py +0 -0
  73. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/py.typed +0 -0
  74. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/balances.py +0 -0
  75. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/betting_strategies/kelly_criterion.py +0 -0
  76. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/betting_strategies/market_moving.py +0 -0
  77. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py +0 -0
  78. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/betting_strategies/stretch_bet_between.py +0 -0
  79. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/betting_strategies/utils.py +0 -0
  80. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/caches/inmemory_cache.py +0 -0
  81. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/contract.py +0 -0
  82. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/costs.py +0 -0
  83. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/datetime_utc.py +0 -0
  84. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/gnosis_rpc.py +0 -0
  85. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/google.py +0 -0
  86. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/hexbytes_custom.py +0 -0
  87. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/httpx_cached_client.py +0 -0
  88. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/image_gen/image_gen.py +0 -0
  89. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/image_gen/market_thumbnail_gen.py +0 -0
  90. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/ipfs/ipfs_handler.py +0 -0
  91. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/is_invalid.py +0 -0
  92. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/is_predictable.py +0 -0
  93. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/langfuse_.py +0 -0
  94. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/langfuse_client_utils.py +0 -0
  95. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/omen/reality_accuracy.py +0 -0
  96. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/parallelism.py +0 -0
  97. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/relevant_news_analysis/data_models.py +0 -0
  98. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/relevant_news_analysis/relevant_news_analysis.py +0 -0
  99. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/relevant_news_analysis/relevant_news_cache.py +0 -0
  100. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/safe.py +0 -0
  101. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/singleton.py +0 -0
  102. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/streamlit_user_login.py +0 -0
  103. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/tavily/tavily_models.py +0 -0
  104. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/tavily/tavily_search.py +0 -0
  105. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/prediction_market_agent_tooling/tools/utils.py +0 -0
  106. {prediction_market_agent_tooling-0.56.2.dev129 → prediction_market_agent_tooling-0.56.2.dev137}/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.56.2.dev129
3
+ Version: 0.56.2.dev137
4
4
  Summary: Tools to benchmark, deploy and monitor prediction market agents.
5
5
  Author: Gnosis
6
6
  Requires-Python: >=3.10,<3.12
@@ -2,7 +2,7 @@ import hashlib
2
2
  import inspect
3
3
  import json
4
4
  from datetime import date, timedelta
5
- from functools import wraps
5
+ from functools import partial, wraps
6
6
  from typing import (
7
7
  Any,
8
8
  Callable,
@@ -15,13 +15,14 @@ from typing import (
15
15
  )
16
16
 
17
17
  from pydantic import BaseModel
18
- from sqlalchemy import Column, Engine
18
+ from sqlalchemy import Column
19
19
  from sqlalchemy.dialects.postgresql import JSONB
20
20
  from sqlmodel import Field, Session, SQLModel, create_engine, desc, select
21
21
 
22
22
  from prediction_market_agent_tooling.config import APIKeys
23
23
  from prediction_market_agent_tooling.loggers import logger
24
24
  from prediction_market_agent_tooling.tools.datetime_utc import DatetimeUTC
25
+ from prediction_market_agent_tooling.tools.pickle_utils import InitialiseNonPickable
25
26
  from prediction_market_agent_tooling.tools.utils import utcnow
26
27
 
27
28
  FunctionT = TypeVar("FunctionT", bound=Callable[..., Any])
@@ -40,9 +41,6 @@ class FunctionCache(SQLModel, table=True):
40
41
  created_at: DatetimeUTC = Field(default_factory=utcnow, index=True)
41
42
 
42
43
 
43
- DB_CACHE_ENGINE: None | Engine = None
44
-
45
-
46
44
  @overload
47
45
  def db_cache(
48
46
  func: None = None,
@@ -93,6 +91,18 @@ def db_cache(
93
91
  return decorator
94
92
 
95
93
  api_keys = api_keys if api_keys is not None else APIKeys()
94
+ wrapped_engine = InitialiseNonPickable(
95
+ partial(
96
+ create_engine,
97
+ api_keys.sqlalchemy_db_url.get_secret_value(),
98
+ # Use custom json serializer and deserializer, because otherwise, for example `datetime` serialization would fail.
99
+ json_serializer=json_serializer,
100
+ json_deserializer=json_deserializer,
101
+ )
102
+ )
103
+
104
+ if api_keys.ENABLE_CACHE:
105
+ SQLModel.metadata.create_all(wrapped_engine.get_value())
96
106
 
97
107
  @wraps(func)
98
108
  def wrapper(*args: Any, **kwargs: Any) -> Any:
@@ -100,16 +110,7 @@ def db_cache(
100
110
  if not api_keys.ENABLE_CACHE:
101
111
  return func(*args, **kwargs)
102
112
 
103
- global DB_CACHE_ENGINE
104
- if DB_CACHE_ENGINE is None:
105
- DB_CACHE_ENGINE = create_engine(
106
- api_keys.sqlalchemy_db_url.get_secret_value(),
107
- # Use custom json serializer and deserializer, because otherwise, for example `datetime` serialization would fail.
108
- json_serializer=json_serializer,
109
- json_deserializer=json_deserializer,
110
- )
111
- # Create table if it doesn't exist
112
- SQLModel.metadata.create_all(DB_CACHE_ENGINE)
113
+ engine = wrapped_engine.get_value()
113
114
 
114
115
  # Convert *args and **kwargs to a single dictionary, where we have names for arguments passed as args as well.
115
116
  signature = inspect.signature(func)
@@ -155,7 +156,7 @@ def db_cache(
155
156
  if return_type is not None and contains_pydantic_model(return_type):
156
157
  is_pydantic_model = True
157
158
 
158
- with Session(DB_CACHE_ENGINE) as session:
159
+ with Session(engine) as session:
159
160
  # Try to get cached result
160
161
  statement = (
161
162
  select(FunctionCache)
@@ -208,7 +209,7 @@ def db_cache(
208
209
  result=computed_result,
209
210
  created_at=utcnow(),
210
211
  )
211
- with Session(DB_CACHE_ENGINE) as session:
212
+ with Session(engine) as session:
212
213
  logger.info(f"Saving {cache_entry} into database.")
213
214
  session.add(cache_entry)
214
215
  session.commit()
@@ -0,0 +1,31 @@
1
+ import typing as t
2
+
3
+ InitialisedValue = t.TypeVar("InitialisedValue")
4
+
5
+
6
+ class InitialiseNonPickable(t.Generic[InitialisedValue]):
7
+ """
8
+ Use this class to wrap values that you want to be shared within a thread,
9
+ but they are re-initialised for a new processes.
10
+
11
+ Initialiser for the value still needs to be pickable.
12
+ """
13
+
14
+ def __init__(self, initialiser: t.Callable[[], InitialisedValue]) -> None:
15
+ self.value: InitialisedValue | None = None
16
+ self.initialiser = initialiser
17
+
18
+ def __getstate__(self) -> dict[str, t.Any]:
19
+ # During pickling, always return `value` as just None, which is pickable and this class will re-initialise it in `get_value` when called.
20
+ return {"value": None, "initialiser": self.initialiser}
21
+
22
+ def __setstate__(self, d: dict[str, t.Any]) -> None:
23
+ self.value = d["value"]
24
+ self.initialiser = d["initialiser"]
25
+
26
+ def get_value(self) -> InitialisedValue:
27
+ """Use this function to get the wrapped value, which will be initialised if necessary."""
28
+ if self.value is None:
29
+ self.value = self.initialiser()
30
+
31
+ return self.value
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "prediction-market-agent-tooling"
3
- version = "0.56.2.dev129"
3
+ version = "0.56.2.dev137"
4
4
  description = "Tools to benchmark, deploy and monitor prediction market agents."
5
5
  authors = ["Gnosis"]
6
6
  readme = "README.md"