prediction-market-agent-tooling 0.56.2.dev145__tar.gz → 0.56.2.dev147__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.
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/PKG-INFO +2 -1
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/loggers.py +38 -16
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/caches/db_cache.py +8 -13
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/relevant_news_analysis/relevant_news_cache.py +6 -3
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/pyproject.toml +2 -1
- prediction_market_agent_tooling-0.56.2.dev145/prediction_market_agent_tooling/tools/pickle_utils.py +0 -31
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/LICENSE +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/README.md +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/abis/debuggingcontract.abi.json +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/abis/depositablewrapper_erc20.abi.json +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/abis/erc20.abi.json +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/abis/erc4626.abi.json +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/abis/omen_agentresultmapping.abi.json +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/abis/omen_dxdao.abi.json +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/abis/omen_fpmm.abi.json +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/abis/omen_fpmm_conditionaltokens.abi.json +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/abis/omen_fpmm_factory.abi.json +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/abis/omen_kleros.abi.json +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/abis/omen_oracle.abi.json +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/abis/omen_realitio.abi.json +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/abis/omen_thumbnailmapping.abi.json +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/abis/proxy.abi.json +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/benchmark/__init__.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/benchmark/agents.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/benchmark/benchmark.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/benchmark/utils.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/config.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/deploy/agent.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/deploy/agent_example.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/deploy/betting_strategy.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/deploy/constants.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/deploy/gcp/deploy.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/deploy/gcp/kubernetes_models.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/deploy/gcp/utils.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/deploy/trade_interval.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/gtypes.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/jobs/__init__.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/jobs/jobs_models.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/jobs/omen/omen_jobs.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/agent_market.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/base_subgraph_handler.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/categorize.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/data_models.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/manifold/__init__.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/manifold/api.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/manifold/data_models.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/manifold/manifold.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/manifold/utils.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/market_fees.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/markets.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/metaculus/api.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/metaculus/data_models.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/metaculus/metaculus.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/omen/__init__.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/omen/data_models.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/omen/omen.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/omen/omen_contracts.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/omen/omen_resolving.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/polymarket/api.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/polymarket/data_models.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/polymarket/data_models_web.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/polymarket/polymarket.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/polymarket/utils.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/seer/data_models.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/markets/seer/seer_subgraph_handler.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/monitor/markets/manifold.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/monitor/markets/metaculus.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/monitor/markets/omen.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/monitor/markets/polymarket.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/monitor/monitor.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/monitor/monitor_app.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/monitor/monitor_settings.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/py.typed +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/balances.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/betting_strategies/kelly_criterion.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/betting_strategies/market_moving.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/betting_strategies/stretch_bet_between.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/betting_strategies/utils.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/caches/inmemory_cache.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/contract.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/costs.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/datetime_utc.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/gnosis_rpc.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/google.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/hexbytes_custom.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/httpx_cached_client.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/image_gen/image_gen.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/image_gen/market_thumbnail_gen.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/ipfs/ipfs_handler.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/is_invalid.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/is_predictable.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/langfuse_.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/langfuse_client_utils.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/omen/reality_accuracy.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/parallelism.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/relevant_news_analysis/data_models.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/relevant_news_analysis/relevant_news_analysis.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/safe.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/singleton.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/streamlit_user_login.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/tavily/tavily_models.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/tavily/tavily_search.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/prediction_market_agent_tooling/tools/utils.py +0 -0
- {prediction_market_agent_tooling-0.56.2.dev145 → prediction_market_agent_tooling-0.56.2.dev147}/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.
|
3
|
+
Version: 0.56.2.dev147
|
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 (>=0.2.6,<0.3.0) ; extra == "langchain"
|
|
26
26
|
Requires-Dist: langchain-community (>=0.0.19)
|
27
27
|
Requires-Dist: langchain-openai (>=0.1.0,<0.2.0) ; extra == "langchain"
|
28
28
|
Requires-Dist: langfuse (>=2.42.0,<3.0.0)
|
29
|
+
Requires-Dist: loguru (>=0.7.2,<0.8.0)
|
29
30
|
Requires-Dist: loky (>=3.4.1,<4.0.0)
|
30
31
|
Requires-Dist: numpy (>=1.26.4,<2.0.0)
|
31
32
|
Requires-Dist: openai (>=1.0.0,<2.0.0) ; extra == "openai"
|
@@ -1,13 +1,16 @@
|
|
1
1
|
import builtins
|
2
2
|
import logging
|
3
|
+
import sys
|
3
4
|
import typing as t
|
4
5
|
import warnings
|
5
6
|
from enum import Enum
|
6
7
|
|
8
|
+
from loguru import logger
|
7
9
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
8
10
|
|
9
11
|
|
10
12
|
class LogFormat(str, Enum):
|
13
|
+
DEFAULT = "default"
|
11
14
|
GCP = "gcp"
|
12
15
|
|
13
16
|
|
@@ -24,8 +27,8 @@ class LogConfig(BaseSettings):
|
|
24
27
|
env_file=".env", env_file_encoding="utf-8", extra="ignore"
|
25
28
|
)
|
26
29
|
|
27
|
-
LOG_FORMAT: LogFormat = LogFormat.
|
28
|
-
LOG_LEVEL: LogLevel = LogLevel.
|
30
|
+
LOG_FORMAT: LogFormat = LogFormat.DEFAULT
|
31
|
+
LOG_LEVEL: LogLevel = LogLevel.DEBUG
|
29
32
|
|
30
33
|
|
31
34
|
class NoNewLineStreamHandler(logging.StreamHandler): # type: ignore # StreamHandler is not typed in the standard library.
|
@@ -33,15 +36,18 @@ class NoNewLineStreamHandler(logging.StreamHandler): # type: ignore # StreamHan
|
|
33
36
|
return super().format(record).replace("\n", " ")
|
34
37
|
|
35
38
|
|
39
|
+
GCP_LOG_LOGURU_FORMAT = (
|
40
|
+
"{level:<.1}{time:MMDD HH:mm:ss} {process} {name}:{line}] {message}"
|
41
|
+
)
|
36
42
|
GCP_LOG_LOGGING_FORMAT, GCP_LOG_FORMAT_LOGGING_DATEFMT = (
|
37
|
-
"%(levelname).1s%(asctime)s %(process)d %(name)s:%(
|
43
|
+
"%(levelname).1s%(asctime)s %(process)d %(name)s:%(lineno)d] %(message)s"
|
38
44
|
), "%m%d %H:%M:%S"
|
39
45
|
|
40
46
|
|
41
47
|
def patch_logger() -> None:
|
42
48
|
"""
|
43
49
|
Function to patch loggers according to the deployed environment.
|
44
|
-
Patches Python's default logger, warnings library and also monkey-patch print function as many libraries just use it.
|
50
|
+
Patches Loguru's logger, Python's default logger, warnings library and also monkey-patch print function as many libraries just use it.
|
45
51
|
"""
|
46
52
|
if not getattr(logger, "_patched", False):
|
47
53
|
logger._patched = True # type: ignore[attr-defined] # Hacky way to store a flag on the logger object, to not patch it multiple times.
|
@@ -51,34 +57,52 @@ def patch_logger() -> None:
|
|
51
57
|
config = LogConfig()
|
52
58
|
|
53
59
|
if config.LOG_FORMAT == LogFormat.GCP:
|
60
|
+
format_loguru = GCP_LOG_LOGURU_FORMAT
|
54
61
|
format_logging = GCP_LOG_LOGGING_FORMAT
|
55
62
|
datefmt_logging = GCP_LOG_FORMAT_LOGGING_DATEFMT
|
56
|
-
print_logging =
|
63
|
+
print_logging = print_using_loguru_info
|
57
64
|
handlers = [NoNewLineStreamHandler()]
|
58
65
|
|
66
|
+
elif config.LOG_FORMAT == LogFormat.DEFAULT:
|
67
|
+
format_loguru, format_logging, datefmt_logging = None, None, None
|
68
|
+
print_logging = None
|
69
|
+
handlers = None
|
70
|
+
|
59
71
|
else:
|
60
72
|
raise ValueError(f"Unknown log format: {config.LOG_FORMAT}")
|
61
73
|
|
62
74
|
# Change built-in logging.
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
75
|
+
if format_logging is not None:
|
76
|
+
logging.basicConfig(
|
77
|
+
level=config.LOG_LEVEL.value,
|
78
|
+
format=format_logging,
|
79
|
+
datefmt=datefmt_logging,
|
80
|
+
handlers=handlers,
|
81
|
+
)
|
82
|
+
|
83
|
+
# Change loguru.
|
84
|
+
if format_loguru is not None:
|
85
|
+
logger.remove()
|
86
|
+
logger.add(
|
87
|
+
sys.stdout,
|
88
|
+
format=format_loguru,
|
89
|
+
level=config.LOG_LEVEL.value,
|
90
|
+
colorize=True,
|
91
|
+
)
|
69
92
|
|
70
93
|
# Change warning formatting to a simpler one (no source code in a new line).
|
71
94
|
warnings.formatwarning = simple_warning_format
|
72
95
|
# Use logging module for warnings.
|
73
96
|
logging.captureWarnings(True)
|
74
97
|
|
75
|
-
# Use
|
76
|
-
|
98
|
+
# Use loguru for prints.
|
99
|
+
if print_logging is not None:
|
100
|
+
builtins.print = print_logging # type: ignore[assignment] # Monkey patching, it's messy but it works.
|
77
101
|
|
78
102
|
logger.info(f"Patched logger for {config.LOG_FORMAT.value} format.")
|
79
103
|
|
80
104
|
|
81
|
-
def
|
105
|
+
def print_using_loguru_info(
|
82
106
|
*values: object,
|
83
107
|
sep: str = " ",
|
84
108
|
end: str = "\n",
|
@@ -97,6 +121,4 @@ def simple_warning_format(message, category, filename, lineno, line=None): # ty
|
|
97
121
|
) # Escape new lines, because otherwise logs will be broken.
|
98
122
|
|
99
123
|
|
100
|
-
logger = logging.getLogger("prediction-market-agent-tooling")
|
101
|
-
|
102
124
|
patch_logger()
|
@@ -22,7 +22,6 @@ from sqlmodel import Field, Session, SQLModel, create_engine, desc, select
|
|
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
|
26
25
|
from prediction_market_agent_tooling.tools.utils import utcnow
|
27
26
|
|
28
27
|
FunctionT = TypeVar("FunctionT", bound=Callable[..., Any])
|
@@ -91,17 +90,6 @@ def db_cache(
|
|
91
90
|
return decorator
|
92
91
|
|
93
92
|
api_keys = api_keys if api_keys is not None else APIKeys()
|
94
|
-
wrapped_engine = InitialiseNonPickable(
|
95
|
-
lambda: create_engine(
|
96
|
-
api_keys.sqlalchemy_db_url.get_secret_value(),
|
97
|
-
# Use custom json serializer and deserializer, because otherwise, for example `datetime` serialization would fail.
|
98
|
-
json_serializer=json_serializer,
|
99
|
-
json_deserializer=json_deserializer,
|
100
|
-
)
|
101
|
-
)
|
102
|
-
|
103
|
-
if api_keys.ENABLE_CACHE:
|
104
|
-
SQLModel.metadata.create_all(wrapped_engine.get_value())
|
105
93
|
|
106
94
|
@wraps(func)
|
107
95
|
def wrapper(*args: Any, **kwargs: Any) -> Any:
|
@@ -109,7 +97,14 @@ def db_cache(
|
|
109
97
|
if not api_keys.ENABLE_CACHE:
|
110
98
|
return func(*args, **kwargs)
|
111
99
|
|
112
|
-
engine =
|
100
|
+
engine = create_engine(
|
101
|
+
api_keys.sqlalchemy_db_url.get_secret_value(),
|
102
|
+
# Use custom json serializer and deserializer, because otherwise, for example `datetime` serialization would fail.
|
103
|
+
json_serializer=json_serializer,
|
104
|
+
json_deserializer=json_deserializer,
|
105
|
+
pool_size=1,
|
106
|
+
)
|
107
|
+
SQLModel.metadata.create_all(engine)
|
113
108
|
|
114
109
|
# Convert *args and **kwargs to a single dictionary, where we have names for arguments passed as args as well.
|
115
110
|
signature = inspect.signature(func)
|
@@ -25,9 +25,12 @@ class RelevantNewsCacheModel(SQLModel, table=True):
|
|
25
25
|
class RelevantNewsResponseCache:
|
26
26
|
def __init__(self, sqlalchemy_db_url: str | None = None):
|
27
27
|
self.engine = create_engine(
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
(
|
29
|
+
sqlalchemy_db_url
|
30
|
+
if sqlalchemy_db_url
|
31
|
+
else APIKeys().sqlalchemy_db_url.get_secret_value()
|
32
|
+
),
|
33
|
+
pool_size=1,
|
31
34
|
)
|
32
35
|
self._initialize_db()
|
33
36
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "prediction-market-agent-tooling"
|
3
|
-
version = "0.56.2.
|
3
|
+
version = "0.56.2.dev147"
|
4
4
|
description = "Tools to benchmark, deploy and monitor prediction market agents."
|
5
5
|
authors = ["Gnosis"]
|
6
6
|
readme = "README.md"
|
@@ -35,6 +35,7 @@ langchain = { version = "^0.2.6", optional = true}
|
|
35
35
|
langchain-openai = { version = "^0.1.0", optional = true}
|
36
36
|
google-api-python-client = { version = "2.95.0", optional = true}
|
37
37
|
subgrounds = "^1.9.1"
|
38
|
+
loguru = "^0.7.2"
|
38
39
|
safe-eth-py = "^6.0.0b41"
|
39
40
|
eth-account = ">=0.8.0,<0.12.0"
|
40
41
|
prompt-toolkit = "^3.0.43"
|
prediction_market_agent_tooling-0.56.2.dev145/prediction_market_agent_tooling/tools/pickle_utils.py
DELETED
@@ -1,31 +0,0 @@
|
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|