prediction-market-agent-tooling 0.21.1__tar.gz → 0.23.0__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 (71) hide show
  1. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/PKG-INFO +1 -1
  2. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/deploy/agent.py +1 -1
  3. prediction_market_agent_tooling-0.23.0/prediction_market_agent_tooling/loggers.py +75 -0
  4. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/manifold/api.py +1 -1
  5. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/omen/omen.py +1 -1
  6. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/omen/omen_resolving.py +1 -1
  7. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py +1 -1
  8. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/polymarket/data_models_web.py +1 -1
  9. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/monitor/monitor.py +1 -1
  10. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/betting_strategies/market_moving.py +1 -1
  11. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/google.py +1 -1
  12. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/safe.py +1 -1
  13. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/utils.py +1 -1
  14. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/web3_utils.py +1 -1
  15. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/pyproject.toml +1 -1
  16. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/LICENSE +0 -0
  17. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/README.md +0 -0
  18. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/abis/erc20.abi.json +0 -0
  19. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/abis/omen_dxdao.abi.json +0 -0
  20. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/abis/omen_fpmm.abi.json +0 -0
  21. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/abis/omen_fpmm_conditionaltokens.abi.json +0 -0
  22. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/abis/omen_fpmm_factory.abi.json +0 -0
  23. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/abis/omen_kleros.abi.json +0 -0
  24. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/abis/omen_oracle.abi.json +0 -0
  25. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/abis/omen_realitio.abi.json +0 -0
  26. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/abis/wxdai.abi.json +0 -0
  27. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/benchmark/__init__.py +0 -0
  28. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/benchmark/agents.py +0 -0
  29. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/benchmark/benchmark.py +0 -0
  30. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/benchmark/utils.py +0 -0
  31. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/config.py +0 -0
  32. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/deploy/agent_example.py +0 -0
  33. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/deploy/constants.py +0 -0
  34. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/deploy/gcp/deploy.py +0 -0
  35. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/deploy/gcp/kubernetes_models.py +0 -0
  36. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/deploy/gcp/utils.py +0 -0
  37. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/gtypes.py +0 -0
  38. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/agent_market.py +0 -0
  39. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/categorize.py +0 -0
  40. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/data_models.py +0 -0
  41. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/manifold/__init__.py +0 -0
  42. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/manifold/data_models.py +0 -0
  43. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/manifold/manifold.py +0 -0
  44. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/manifold/utils.py +0 -0
  45. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/markets.py +0 -0
  46. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/omen/__init__.py +0 -0
  47. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/omen/data_models.py +0 -0
  48. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/omen/omen_contracts.py +0 -0
  49. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/polymarket/api.py +0 -0
  50. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/polymarket/data_models.py +0 -0
  51. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/polymarket/polymarket.py +0 -0
  52. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/markets/polymarket/utils.py +0 -0
  53. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/monitor/langfuse/langfuse_wrapper.py +0 -0
  54. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/monitor/markets/manifold.py +0 -0
  55. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/monitor/markets/omen.py +0 -0
  56. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/monitor/markets/polymarket.py +0 -0
  57. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/monitor/monitor_app.py +0 -0
  58. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/monitor/monitor_settings.py +0 -0
  59. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/py.typed +0 -0
  60. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/balances.py +0 -0
  61. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/betting_strategies/kelly_criterion.py +0 -0
  62. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py +0 -0
  63. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/betting_strategies/stretch_bet_between.py +0 -0
  64. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/cache.py +0 -0
  65. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/contract.py +0 -0
  66. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/costs.py +0 -0
  67. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/gnosis_rpc.py +0 -0
  68. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/hexbytes_custom.py +0 -0
  69. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/is_predictable.py +0 -0
  70. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/parallelism.py +0 -0
  71. {prediction_market_agent_tooling-0.21.1 → prediction_market_agent_tooling-0.23.0}/prediction_market_agent_tooling/tools/singleton.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: prediction-market-agent-tooling
3
- Version: 0.21.1
3
+ Version: 0.23.0
4
4
  Summary: Tools to benchmark, deploy and monitor prediction market agents.
5
5
  Author: Gnosis
6
6
  Requires-Python: >=3.10,<3.12
@@ -5,7 +5,6 @@ import time
5
5
  import typing as t
6
6
  from datetime import datetime, timedelta
7
7
 
8
- from loguru import logger
9
8
  from pydantic import BaseModel, BeforeValidator
10
9
  from typing_extensions import Annotated
11
10
 
@@ -24,6 +23,7 @@ from prediction_market_agent_tooling.deploy.gcp.utils import (
24
23
  gcp_resolve_api_keys_secrets,
25
24
  )
26
25
  from prediction_market_agent_tooling.gtypes import Probability
26
+ from prediction_market_agent_tooling.loggers import logger
27
27
  from prediction_market_agent_tooling.markets.agent_market import (
28
28
  AgentMarket,
29
29
  FilterBy,
@@ -0,0 +1,75 @@
1
+ import logging
2
+ import sys
3
+ import warnings
4
+ from enum import Enum
5
+
6
+ from loguru import logger
7
+ from pydantic_settings import BaseSettings, SettingsConfigDict
8
+
9
+
10
+ class LogFormat(str, Enum):
11
+ DEFAULT = "default"
12
+ GCP = "gcp"
13
+
14
+
15
+ class LogConfig(BaseSettings):
16
+ model_config = SettingsConfigDict(
17
+ env_file=".env", env_file_encoding="utf-8", extra="ignore"
18
+ )
19
+
20
+ LOG_FORMAT: LogFormat = LogFormat.DEFAULT
21
+
22
+
23
+ GCP_LOG_LOGURU_FORMAT = (
24
+ "{level:<.1}{time:MMDD HH:mm:ss} {process} {name}:{line}] {message}"
25
+ )
26
+ GCP_LOG_LOGGING_FORMAT, GCP_LOG_FORMAT_LOGGING_DATEFMT = (
27
+ "%(levelname).1s%(asctime)s %(process)d %(name)s:%(lineno)d] %(message)s"
28
+ ), "%m%d %H:%M:%S"
29
+
30
+
31
+ def patch_logger() -> None:
32
+ config = LogConfig()
33
+
34
+ if config.LOG_FORMAT == LogFormat.GCP:
35
+ format_loguru = GCP_LOG_LOGURU_FORMAT
36
+ format_logging = GCP_LOG_LOGGING_FORMAT
37
+ datefmt_logging = GCP_LOG_FORMAT_LOGGING_DATEFMT
38
+
39
+ elif config.LOG_FORMAT == LogFormat.DEFAULT:
40
+ format_loguru, format_logging, datefmt_logging = None, None, None
41
+
42
+ else:
43
+ raise ValueError(f"Unknown log format: {config.LOG_FORMAT}")
44
+
45
+ # Change built-in logging.
46
+ if format_logging is not None:
47
+ logging.basicConfig(
48
+ level=logging.DEBUG, format=format_logging, datefmt=datefmt_logging
49
+ )
50
+
51
+ # Change loguru.
52
+ if format_loguru is not None:
53
+ logger.remove()
54
+ logger.add(
55
+ sys.stdout,
56
+ format=format_loguru,
57
+ level="DEBUG", # Can be the lowest level, higher ones will use by default this one.
58
+ colorize=True,
59
+ )
60
+
61
+ # Change warning formatting to a simpler one (no source code in a new line).
62
+ warnings.formatwarning = simple_warning_format
63
+ # Use logging module for warnings.
64
+ logging.captureWarnings(True)
65
+
66
+ logger.info(f"Patched logger for {config.LOG_FORMAT.value} format.")
67
+
68
+
69
+ def simple_warning_format(message, category, filename, lineno, line=None): # type: ignore[no-untyped-def] # Not typed in the standard library neither.
70
+ return f"{category.__name__}: {message}"
71
+
72
+
73
+ if not getattr(logger, "_patched", False):
74
+ patch_logger()
75
+ logger._patched = True # type: ignore[attr-defined] # Hacky way to store a flag on the logger object, to not patch it multiple times.
@@ -3,9 +3,9 @@ from datetime import datetime
3
3
 
4
4
  import requests
5
5
  import tenacity
6
- from loguru import logger
7
6
 
8
7
  from prediction_market_agent_tooling.gtypes import Mana, SecretStr
8
+ from prediction_market_agent_tooling.loggers import logger
9
9
  from prediction_market_agent_tooling.markets.data_models import (
10
10
  BetAmount,
11
11
  Currency,
@@ -2,7 +2,6 @@ import sys
2
2
  import typing as t
3
3
  from datetime import datetime
4
4
 
5
- from loguru import logger
6
5
  from web3 import Web3
7
6
  from web3.constants import HASH_ZERO
8
7
 
@@ -18,6 +17,7 @@ from prediction_market_agent_tooling.gtypes import (
18
17
  xDai,
19
18
  xdai_type,
20
19
  )
20
+ from prediction_market_agent_tooling.loggers import logger
21
21
  from prediction_market_agent_tooling.markets.agent_market import (
22
22
  AgentMarket,
23
23
  FilterBy,
@@ -1,4 +1,3 @@
1
- from loguru import logger
2
1
  from web3 import Web3
3
2
 
4
3
  from prediction_market_agent_tooling.config import PrivateCredentials
@@ -9,6 +8,7 @@ from prediction_market_agent_tooling.gtypes import (
9
8
  Wei,
10
9
  xDai,
11
10
  )
11
+ from prediction_market_agent_tooling.loggers import logger
12
12
  from prediction_market_agent_tooling.markets.data_models import Resolution
13
13
  from prediction_market_agent_tooling.markets.manifold.utils import (
14
14
  find_resolution_on_manifold,
@@ -4,10 +4,10 @@ from datetime import datetime
4
4
 
5
5
  import tenacity
6
6
  from eth_typing import ChecksumAddress
7
- from loguru import logger
8
7
  from subgrounds import FieldPath, Subgrounds
9
8
 
10
9
  from prediction_market_agent_tooling.gtypes import HexAddress, HexBytes, Wei, wei_type
10
+ from prediction_market_agent_tooling.loggers import logger
11
11
  from prediction_market_agent_tooling.markets.agent_market import FilterBy, SortBy
12
12
  from prediction_market_agent_tooling.markets.omen.data_models import (
13
13
  OMEN_FALSE_OUTCOME,
@@ -10,10 +10,10 @@ import typing as t
10
10
  from datetime import datetime
11
11
 
12
12
  import requests
13
- from loguru import logger
14
13
  from pydantic import BaseModel, field_validator
15
14
 
16
15
  from prediction_market_agent_tooling.gtypes import USDC, HexAddress
16
+ from prediction_market_agent_tooling.loggers import logger
17
17
  from prediction_market_agent_tooling.markets.data_models import Resolution
18
18
 
19
19
  POLYMARKET_BASE_URL = "https://polymarket.com"
@@ -8,7 +8,6 @@ import numpy as np
8
8
  import pandas as pd
9
9
  import streamlit as st
10
10
  from google.cloud.functions_v2.types.functions import Function
11
- from loguru import logger
12
11
  from pydantic import BaseModel, field_validator
13
12
 
14
13
  from prediction_market_agent_tooling.config import APIKeys
@@ -22,6 +21,7 @@ from prediction_market_agent_tooling.deploy.gcp.utils import (
22
21
  list_gcp_cronjobs,
23
22
  list_gcp_functions,
24
23
  )
24
+ from prediction_market_agent_tooling.loggers import logger
25
25
  from prediction_market_agent_tooling.markets.agent_market import AgentMarket
26
26
  from prediction_market_agent_tooling.markets.data_models import Resolution, ResolvedBet
27
27
  from prediction_market_agent_tooling.tools.parallelism import par_map
@@ -2,9 +2,9 @@ import typing as t
2
2
  from functools import reduce
3
3
 
4
4
  import numpy as np
5
- from loguru import logger
6
5
 
7
6
  from prediction_market_agent_tooling.gtypes import Probability, wei_type, xDai
7
+ from prediction_market_agent_tooling.loggers import logger
8
8
  from prediction_market_agent_tooling.markets.omen.data_models import OmenMarket
9
9
  from prediction_market_agent_tooling.markets.omen.omen import OmenAgentMarket
10
10
  from prediction_market_agent_tooling.tools.utils import check_not_none
@@ -2,9 +2,9 @@ import typing as t
2
2
 
3
3
  import tenacity
4
4
  from googleapiclient.discovery import build
5
- from loguru import logger
6
5
 
7
6
  from prediction_market_agent_tooling.config import APIKeys
7
+ from prediction_market_agent_tooling.loggers import logger
8
8
  from prediction_market_agent_tooling.tools.cache import persistent_inmemory_cache
9
9
 
10
10
 
@@ -5,7 +5,6 @@ from gnosis.eth.constants import NULL_ADDRESS
5
5
  from gnosis.eth.contracts import get_safe_V1_4_1_contract
6
6
  from gnosis.safe.proxy_factory import ProxyFactoryV141
7
7
  from gnosis.safe.safe import Safe
8
- from loguru import logger
9
8
  from safe_cli.safe_addresses import (
10
9
  get_default_fallback_handler_address,
11
10
  get_proxy_factory_address,
@@ -14,6 +13,7 @@ from safe_cli.safe_addresses import (
14
13
  )
15
14
  from web3.types import Wei
16
15
 
16
+ from prediction_market_agent_tooling.loggers import logger
17
17
  from prediction_market_agent_tooling.tools.hexbytes_custom import HexBytes
18
18
  from prediction_market_agent_tooling.tools.web3_utils import wei_to_xdai
19
19
 
@@ -6,7 +6,6 @@ from typing import Any, NoReturn, Optional, Type, TypeVar, cast
6
6
 
7
7
  import pytz
8
8
  import requests
9
- from loguru import logger
10
9
  from pydantic import BaseModel, ValidationError
11
10
  from scipy.stats import entropy
12
11
 
@@ -15,6 +14,7 @@ from prediction_market_agent_tooling.gtypes import (
15
14
  Probability,
16
15
  SecretStr,
17
16
  )
17
+ from prediction_market_agent_tooling.loggers import logger
18
18
 
19
19
  T = TypeVar("T")
20
20
 
@@ -5,7 +5,6 @@ from eth_account import Account
5
5
  from eth_typing import URI
6
6
  from gnosis.eth import EthereumClient
7
7
  from gnosis.safe.safe import Safe
8
- from loguru import logger
9
8
  from pydantic.types import SecretStr
10
9
  from web3 import Web3
11
10
  from web3.constants import HASH_ZERO
@@ -21,6 +20,7 @@ from prediction_market_agent_tooling.gtypes import (
21
20
  xDai,
22
21
  xdai_type,
23
22
  )
23
+ from prediction_market_agent_tooling.loggers import logger
24
24
 
25
25
  ONE_NONCE = Nonce(1)
26
26
  ONE_XDAI = xdai_type(1)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "prediction-market-agent-tooling"
3
- version = "0.21.1"
3
+ version = "0.23.0"
4
4
  description = "Tools to benchmark, deploy and monitor prediction market agents."
5
5
  authors = ["Gnosis"]
6
6
  readme = "README.md"