prediction-market-agent-tooling 0.14.0__py3-none-any.whl → 0.15.0__py3-none-any.whl
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/abis/erc20.abi.json +315 -0
- prediction_market_agent_tooling/benchmark/agents.py +7 -1
- prediction_market_agent_tooling/benchmark/benchmark.py +22 -24
- prediction_market_agent_tooling/config.py +27 -4
- prediction_market_agent_tooling/deploy/agent.py +3 -3
- prediction_market_agent_tooling/markets/agent_market.py +22 -10
- prediction_market_agent_tooling/markets/manifold/manifold.py +9 -1
- prediction_market_agent_tooling/markets/omen/data_models.py +42 -11
- prediction_market_agent_tooling/markets/omen/omen.py +135 -52
- prediction_market_agent_tooling/markets/omen/omen_contracts.py +36 -34
- prediction_market_agent_tooling/markets/omen/omen_replicate.py +11 -16
- prediction_market_agent_tooling/markets/omen/omen_resolve_replicated.py +32 -25
- prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py +46 -13
- prediction_market_agent_tooling/markets/polymarket/polymarket.py +1 -1
- prediction_market_agent_tooling/monitor/markets/omen.py +5 -3
- prediction_market_agent_tooling/monitor/markets/polymarket.py +3 -2
- prediction_market_agent_tooling/monitor/monitor.py +26 -20
- prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py +1 -1
- prediction_market_agent_tooling/tools/contract.py +32 -17
- prediction_market_agent_tooling/tools/costs.py +31 -0
- prediction_market_agent_tooling/tools/parallelism.py +16 -1
- prediction_market_agent_tooling/tools/safe.py +130 -0
- prediction_market_agent_tooling/tools/web3_utils.py +100 -15
- {prediction_market_agent_tooling-0.14.0.dist-info → prediction_market_agent_tooling-0.15.0.dist-info}/METADATA +13 -1
- {prediction_market_agent_tooling-0.14.0.dist-info → prediction_market_agent_tooling-0.15.0.dist-info}/RECORD +28 -25
- {prediction_market_agent_tooling-0.14.0.dist-info → prediction_market_agent_tooling-0.15.0.dist-info}/LICENSE +0 -0
- {prediction_market_agent_tooling-0.14.0.dist-info → prediction_market_agent_tooling-0.15.0.dist-info}/WHEEL +0 -0
- {prediction_market_agent_tooling-0.14.0.dist-info → prediction_market_agent_tooling-0.15.0.dist-info}/entry_points.txt +0 -0
@@ -2,6 +2,9 @@ from typing import Any, Optional, TypeVar
|
|
2
2
|
|
3
3
|
import tenacity
|
4
4
|
from eth_account import Account
|
5
|
+
from eth_typing import URI
|
6
|
+
from gnosis.eth import EthereumClient
|
7
|
+
from gnosis.safe.safe import Safe
|
5
8
|
from loguru import logger
|
6
9
|
from pydantic.types import SecretStr
|
7
10
|
from web3 import Web3
|
@@ -104,6 +107,42 @@ def call_function_on_contract(
|
|
104
107
|
return output
|
105
108
|
|
106
109
|
|
110
|
+
def prepare_tx(
|
111
|
+
web3: Web3,
|
112
|
+
contract_address: ChecksumAddress,
|
113
|
+
contract_abi: ABI,
|
114
|
+
from_address: ChecksumAddress | None,
|
115
|
+
function_name: str,
|
116
|
+
function_params: Optional[list[Any] | dict[str, Any]] = None,
|
117
|
+
tx_params: Optional[TxParams] = None,
|
118
|
+
) -> TxParams:
|
119
|
+
contract = web3.eth.contract(address=contract_address, abi=contract_abi)
|
120
|
+
|
121
|
+
# Fill in required defaults, if not provided.
|
122
|
+
tx_params_new = TxParams()
|
123
|
+
if tx_params:
|
124
|
+
tx_params_new.update(tx_params)
|
125
|
+
|
126
|
+
if not tx_params_new.get("from") and not from_address:
|
127
|
+
raise ValueError(
|
128
|
+
"Cannot have both tx_params[`from`] and from_address not defined."
|
129
|
+
)
|
130
|
+
|
131
|
+
if not tx_params_new.get("from") and from_address:
|
132
|
+
tx_params_new["from"] = from_address
|
133
|
+
|
134
|
+
if not tx_params_new.get("nonce"):
|
135
|
+
from_checksummed = Web3.to_checksum_address(tx_params_new["from"])
|
136
|
+
tx_params_new["nonce"] = web3.eth.get_transaction_count(from_checksummed)
|
137
|
+
|
138
|
+
# Build the transaction.
|
139
|
+
function_call = contract.functions[function_name](*parse_function_params(function_params)) # type: ignore # TODO: Fix Mypy, as this works just OK.
|
140
|
+
tx_params_new = function_call.build_transaction(tx_params_new)
|
141
|
+
gas = web3.eth.estimate_gas(tx_params_new)
|
142
|
+
tx_params_new["gas"] = gas
|
143
|
+
return tx_params_new
|
144
|
+
|
145
|
+
|
107
146
|
@tenacity.retry(
|
108
147
|
# Retry only for the transaction errors that match the given patterns,
|
109
148
|
# add other retrieable errors gradually to be safe.
|
@@ -118,7 +157,6 @@ def call_function_on_contract(
|
|
118
157
|
)
|
119
158
|
def send_function_on_contract_tx(
|
120
159
|
web3: Web3,
|
121
|
-
*,
|
122
160
|
contract_address: ChecksumAddress,
|
123
161
|
contract_abi: ABI,
|
124
162
|
from_private_key: PrivateKey,
|
@@ -127,23 +165,20 @@ def send_function_on_contract_tx(
|
|
127
165
|
tx_params: Optional[TxParams] = None,
|
128
166
|
timeout: int = 180,
|
129
167
|
) -> TxReceipt:
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
168
|
+
public_key = private_key_to_public_key(from_private_key)
|
169
|
+
|
170
|
+
tx_params = prepare_tx(
|
171
|
+
web3=web3,
|
172
|
+
contract_address=contract_address,
|
173
|
+
contract_abi=contract_abi,
|
174
|
+
from_address=public_key,
|
175
|
+
function_name=function_name,
|
176
|
+
function_params=function_params,
|
177
|
+
tx_params=tx_params,
|
138
178
|
)
|
139
|
-
tx_params["from"] = tx_params.get("from", from_address)
|
140
|
-
|
141
|
-
# Build the transaction.
|
142
|
-
function_call = contract.functions[function_name](*parse_function_params(function_params)) # type: ignore # TODO: Fix Mypy, as this works just OK.
|
143
|
-
tx = function_call.build_transaction(tx_params)
|
144
179
|
# Sign with the private key.
|
145
180
|
signed_tx = web3.eth.account.sign_transaction(
|
146
|
-
|
181
|
+
tx_params, private_key=from_private_key.get_secret_value()
|
147
182
|
)
|
148
183
|
# Send the signed transaction.
|
149
184
|
send_tx = web3.eth.send_raw_transaction(signed_tx.rawTransaction)
|
@@ -152,3 +187,53 @@ def send_function_on_contract_tx(
|
|
152
187
|
# Verify it didn't fail.
|
153
188
|
check_tx_receipt(receipt_tx)
|
154
189
|
return receipt_tx
|
190
|
+
|
191
|
+
|
192
|
+
@tenacity.retry(
|
193
|
+
# Retry only for the transaction errors that match the given patterns,
|
194
|
+
# add other retrieable errors gradually to be safe.
|
195
|
+
retry=tenacity.retry_if_exception_message(
|
196
|
+
match="(.*wrong transaction nonce.*)|(.*Invalid.*)|(.*OldNonce.*)"
|
197
|
+
),
|
198
|
+
wait=tenacity.wait_chain(*[tenacity.wait_fixed(n) for n in range(1, 10)]),
|
199
|
+
stop=tenacity.stop_after_attempt(9),
|
200
|
+
after=lambda x: logger.debug(
|
201
|
+
f"send_function_on_contract_tx_using_safe failed, {x.attempt_number=}."
|
202
|
+
),
|
203
|
+
)
|
204
|
+
def send_function_on_contract_tx_using_safe(
|
205
|
+
web3: Web3,
|
206
|
+
contract_address: ChecksumAddress,
|
207
|
+
contract_abi: ABI,
|
208
|
+
from_private_key: PrivateKey,
|
209
|
+
safe_address: ChecksumAddress,
|
210
|
+
function_name: str,
|
211
|
+
function_params: Optional[list[Any] | dict[str, Any]] = None,
|
212
|
+
tx_params: Optional[TxParams] = None,
|
213
|
+
timeout: int = 180,
|
214
|
+
) -> TxReceipt:
|
215
|
+
tx_params = prepare_tx(
|
216
|
+
web3=web3,
|
217
|
+
contract_address=contract_address,
|
218
|
+
contract_abi=contract_abi,
|
219
|
+
from_address=safe_address,
|
220
|
+
function_name=function_name,
|
221
|
+
function_params=function_params,
|
222
|
+
tx_params=tx_params,
|
223
|
+
)
|
224
|
+
|
225
|
+
if not web3.provider.endpoint_uri: # type: ignore
|
226
|
+
raise EnvironmentError(f"RPC_URL not available in web3 object.")
|
227
|
+
ethereum_client = EthereumClient(ethereum_node_url=URI(web3.provider.endpoint_uri)) # type: ignore
|
228
|
+
s = Safe(safe_address, ethereum_client) # type: ignore
|
229
|
+
safe_tx = s.build_multisig_tx(
|
230
|
+
to=Web3.to_checksum_address(tx_params["to"]),
|
231
|
+
data=HexBytes(tx_params["data"]),
|
232
|
+
value=tx_params["value"],
|
233
|
+
)
|
234
|
+
safe_tx.sign(from_private_key.get_secret_value())
|
235
|
+
safe_tx.call() # simulate call
|
236
|
+
tx_hash, tx = safe_tx.execute(from_private_key.get_secret_value())
|
237
|
+
receipt_tx = web3.eth.wait_for_transaction_receipt(tx_hash, timeout=timeout)
|
238
|
+
check_tx_receipt(receipt_tx)
|
239
|
+
return receipt_tx
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: prediction-market-agent-tooling
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.15.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
|
@@ -11,6 +11,7 @@ Provides-Extra: google
|
|
11
11
|
Provides-Extra: langchain
|
12
12
|
Requires-Dist: autoflake (>=2.2.1,<3.0.0)
|
13
13
|
Requires-Dist: cron-validator (>=1.0.8,<2.0.0)
|
14
|
+
Requires-Dist: eth-account (>=0.8.0,<0.9.0)
|
14
15
|
Requires-Dist: eth-typing (>=3.0.0,<4.0.0)
|
15
16
|
Requires-Dist: functions-framework (>=3.5.0,<4.0.0)
|
16
17
|
Requires-Dist: google-api-python-client (==2.95.0) ; extra == "google"
|
@@ -24,8 +25,11 @@ Requires-Dist: langchain-openai (>=0.0.5,<0.0.6) ; extra == "langchain"
|
|
24
25
|
Requires-Dist: loguru (>=0.7.2,<0.8.0)
|
25
26
|
Requires-Dist: mech-client (>=0.2.13,<0.3.0)
|
26
27
|
Requires-Dist: numpy (>=1.26.4,<2.0.0)
|
28
|
+
Requires-Dist: prompt-toolkit (>=3.0.43,<4.0.0)
|
27
29
|
Requires-Dist: pydantic (>=2.6.1,<3.0.0)
|
28
30
|
Requires-Dist: pydantic-settings (>=2.1.0,<3.0.0)
|
31
|
+
Requires-Dist: safe-cli (>=1.0.0,<2.0.0)
|
32
|
+
Requires-Dist: safe-eth-py (>=6.0.0b14,<7.0.0)
|
29
33
|
Requires-Dist: scikit-learn (>=1.4.0,<2.0.0)
|
30
34
|
Requires-Dist: streamlit (>=1.31.0,<2.0.0)
|
31
35
|
Requires-Dist: subgrounds (>=1.8.1,<2.0.0)
|
@@ -104,6 +108,14 @@ class DeployableCoinFlipAgent(DeployableAgent):
|
|
104
108
|
DeployableCoinFlipAgent().deploy_gcp(...)
|
105
109
|
```
|
106
110
|
|
111
|
+
For deploying a Safe manually for a given agent, run the script below:
|
112
|
+
|
113
|
+
```commandline
|
114
|
+
poetry run python scripts/create_safe_for_agent.py --from-private-key <YOUR_AGENT_PRIVATE_KEY> --salt-nonce 42
|
115
|
+
```
|
116
|
+
This will output the newly created Safe in the terminal, and it can then be copied over to the deployment part (e.g. Terraform).
|
117
|
+
Note that `salt_nonce` can be passed so that the created safe is deterministically created for each agent, so that, if the same `salt_nonce` is used, the script will not create a new Safe for the agent, instead it will output the previously existent Safe.
|
118
|
+
|
107
119
|
## Monitoring
|
108
120
|
|
109
121
|
Monitor the performance of the agents deployed to GCP, as well as meta-metrics of the prediction market platforms they are deployed to.
|
@@ -1,3 +1,4 @@
|
|
1
|
+
prediction_market_agent_tooling/abis/erc20.abi.json,sha256=jdWxiSALAJEwvIWE8VLNs82hnxl9UGWNyw80CNeS8ic,5461
|
1
2
|
prediction_market_agent_tooling/abis/omen_dxdao.abi.json,sha256=Z1kD1QfgYfGwsZEI2UFDNEGZ4hMOix3HGICk8xlO4Ds,9578
|
2
3
|
prediction_market_agent_tooling/abis/omen_fpmm.abi.json,sha256=CDib_b5PVj4m0JBVCB20cTshiVx8st1Be-7E460qFoY,11406
|
3
4
|
prediction_market_agent_tooling/abis/omen_fpmm_conditionaltokens.abi.json,sha256=ux30hTxtZiOZ86FsTEK8Xnm910iyjB1CFnkXrCbhfm8,9841
|
@@ -7,62 +8,64 @@ prediction_market_agent_tooling/abis/omen_oracle.abi.json,sha256=YPZ-FLvd4PA9pYd
|
|
7
8
|
prediction_market_agent_tooling/abis/omen_realitio.abi.json,sha256=7HmFkBF_rq83UTaH2kRRsEfc_WZuf4n-qvkB4nhvweo,15953
|
8
9
|
prediction_market_agent_tooling/abis/wxdai.abi.json,sha256=m3qC06Yug-pToI0lSFe1f8e6gKMIulnV3MA2K0X51hI,6055
|
9
10
|
prediction_market_agent_tooling/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
|
-
prediction_market_agent_tooling/benchmark/agents.py,sha256=
|
11
|
-
prediction_market_agent_tooling/benchmark/benchmark.py,sha256=
|
11
|
+
prediction_market_agent_tooling/benchmark/agents.py,sha256=HtZGjY0En7lmUaLyynZSNO_YjsCg-hlRi6YQ4ZGQyHc,3829
|
12
|
+
prediction_market_agent_tooling/benchmark/benchmark.py,sha256=xiHKzZx5GHSsDerFHMZ9j_LXAXnSaITSvv67iPe3MEU,21095
|
12
13
|
prediction_market_agent_tooling/benchmark/utils.py,sha256=tV9eN71aFQnNU7jXsBDSbuz6VoYyvHqJL1ezyXViyHM,2754
|
13
|
-
prediction_market_agent_tooling/config.py,sha256=
|
14
|
-
prediction_market_agent_tooling/deploy/agent.py,sha256=
|
14
|
+
prediction_market_agent_tooling/config.py,sha256=Cvl9RWlOEPRzdSE7-ChTyKSMNTgNoOYmtJ0lT5yDqpE,3570
|
15
|
+
prediction_market_agent_tooling/deploy/agent.py,sha256=ju-BDe8Ek1mTLWMoIyp_LLcNt2KhxgITa0O8OtgW_ko,7788
|
15
16
|
prediction_market_agent_tooling/deploy/agent_example.py,sha256=vwswPCOutCG9vIqJT5lBcI1FZy3QRkNyVbNIJdn6wvk,652
|
16
17
|
prediction_market_agent_tooling/deploy/constants.py,sha256=M5ty8URipYMGe_G-RzxRydK3AFL6CyvmqCraJUrLBnE,82
|
17
18
|
prediction_market_agent_tooling/deploy/gcp/deploy.py,sha256=CYUgnfy-9XVk04kkxA_5yp0GE9Mw5caYqlFUZQ2j3ks,3739
|
18
19
|
prediction_market_agent_tooling/deploy/gcp/kubernetes_models.py,sha256=qYIHRxQLac3yxtZ8ChikiPG9O1aUQucHW0muTSm1nto,2627
|
19
20
|
prediction_market_agent_tooling/deploy/gcp/utils.py,sha256=oyW0jgrUT2Tr49c7GlpcMsYNQjoCSOcWis3q-MmVAhU,6089
|
20
21
|
prediction_market_agent_tooling/gtypes.py,sha256=xGSJXw12hzp8LwvQ956l01GiZMWd07MZTYqo8CXVeLY,2417
|
21
|
-
prediction_market_agent_tooling/markets/agent_market.py,sha256=
|
22
|
+
prediction_market_agent_tooling/markets/agent_market.py,sha256=qeuIXEujziDu_gQPvMiHsGSejhkPQtHhO_E7l16NOL0,5997
|
22
23
|
prediction_market_agent_tooling/markets/categorize.py,sha256=yTd-lDMPW4ESDSzmxeLLBuzLX0FggOF7Vbswh7295o0,941
|
23
24
|
prediction_market_agent_tooling/markets/data_models.py,sha256=uODY3aoFp8YYeLAUcrzMk1yU8pIKsTLobB9xIEGTmKs,1170
|
24
25
|
prediction_market_agent_tooling/markets/manifold/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
26
|
prediction_market_agent_tooling/markets/manifold/api.py,sha256=K79zWSqBs3rpkZwpp6moKkPBB81p5jWn1wFuk-rLVi4,7274
|
26
27
|
prediction_market_agent_tooling/markets/manifold/data_models.py,sha256=2DZIxwtDp-PH0UWTGiktMFIGAAQoVutI07UsxjNyTyE,5296
|
27
|
-
prediction_market_agent_tooling/markets/manifold/manifold.py,sha256=
|
28
|
+
prediction_market_agent_tooling/markets/manifold/manifold.py,sha256=DJZ88r5BGtAugUw5SIyDfzK1S70titba_fwT7OYXuAY,3896
|
28
29
|
prediction_market_agent_tooling/markets/manifold/utils.py,sha256=cPPFWXm3vCYH1jy7_ctJZuQH9ZDaPL4_AgAYzGWkoow,513
|
29
30
|
prediction_market_agent_tooling/markets/markets.py,sha256=pIYIlTAvXGrGh1XxNlHJQPEGi36_DHQ-WN2m0TCjEn0,1575
|
30
31
|
prediction_market_agent_tooling/markets/omen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
31
|
-
prediction_market_agent_tooling/markets/omen/data_models.py,sha256=
|
32
|
-
prediction_market_agent_tooling/markets/omen/omen.py,sha256=
|
33
|
-
prediction_market_agent_tooling/markets/omen/omen_contracts.py,sha256=
|
34
|
-
prediction_market_agent_tooling/markets/omen/omen_replicate.py,sha256=
|
35
|
-
prediction_market_agent_tooling/markets/omen/omen_resolve_replicated.py,sha256=
|
36
|
-
prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py,sha256=
|
32
|
+
prediction_market_agent_tooling/markets/omen/data_models.py,sha256=g6A_DQ54m-_3XQO02AM4NliDycsgYvg8hgpt8Dri5cg,14111
|
33
|
+
prediction_market_agent_tooling/markets/omen/omen.py,sha256=aZhz2dRFYuAP2h1TlrPWN4lIuOrSvvCjXV-3WcP3TG4,31392
|
34
|
+
prediction_market_agent_tooling/markets/omen/omen_contracts.py,sha256=vblZAS_aWTSB6I5LDx_E7hg5gyvocs1I9qxSfxM8YfM,19733
|
35
|
+
prediction_market_agent_tooling/markets/omen/omen_replicate.py,sha256=1Yp8vpuZS15kIMPKqMxH0vrvXOsStI4KVA2DrS4V134,7409
|
36
|
+
prediction_market_agent_tooling/markets/omen/omen_resolve_replicated.py,sha256=v6fRGv3Loy5PARoRyyAiCNY2TvKGE-Jxr27-1i-D40A,11356
|
37
|
+
prediction_market_agent_tooling/markets/omen/omen_subgraph_handler.py,sha256=F2JyAYqCR4REOnFB2cngbngh7ib7SMt0VtFw7mGt2Yc,22266
|
37
38
|
prediction_market_agent_tooling/markets/polymarket/api.py,sha256=p1JkqL9kF8C04qbmqFzF0hgtzD5kN3yup2hYOjxazQ4,4188
|
38
39
|
prediction_market_agent_tooling/markets/polymarket/data_models.py,sha256=srTl8-0FM76AGLRDWzjLpf46ikWloaBCgkn0XqZoKCI,4248
|
39
40
|
prediction_market_agent_tooling/markets/polymarket/data_models_web.py,sha256=ueL_sNYZO5vC8fTsqp7xfjNa7eJQVYkm_kM50HSoQbY,10854
|
40
|
-
prediction_market_agent_tooling/markets/polymarket/polymarket.py,sha256=
|
41
|
+
prediction_market_agent_tooling/markets/polymarket/polymarket.py,sha256=zqGfiUOH9f7jmDcQAt30wrHyfmqLMNwCYtotsxFoJmA,2678
|
41
42
|
prediction_market_agent_tooling/markets/polymarket/utils.py,sha256=Gwd2kOK_DrsjtyqgO6ob8oK7tjsB1Yo-Hf7IS5UGnio,1960
|
42
43
|
prediction_market_agent_tooling/monitor/markets/manifold.py,sha256=GdYpgRX1GahDi-75Mr53jgtEg6nWcs_rHDUkg4o_7dQ,3352
|
43
|
-
prediction_market_agent_tooling/monitor/markets/omen.py,sha256=
|
44
|
-
prediction_market_agent_tooling/monitor/markets/polymarket.py,sha256=
|
45
|
-
prediction_market_agent_tooling/monitor/monitor.py,sha256=
|
44
|
+
prediction_market_agent_tooling/monitor/markets/omen.py,sha256=cYyKdX4qhGo-VqsboOyWHmMyFsdcX899RrHH5oMEwRI,3503
|
45
|
+
prediction_market_agent_tooling/monitor/markets/polymarket.py,sha256=j_CHY03LAhg84p-TpwbkuzzIdd5YUWapW3hk7U79Phs,1879
|
46
|
+
prediction_market_agent_tooling/monitor/monitor.py,sha256=ZTk1sUmkTN2vK7xRfw1M1ooUYJleIjddVK1OfHS5gSg,13174
|
46
47
|
prediction_market_agent_tooling/monitor/monitor_app.py,sha256=rDxgdDJqSK0ARx0TJFMkS76npkHZJz0__Rp0xTpiRok,4611
|
47
48
|
prediction_market_agent_tooling/monitor/monitor_settings.py,sha256=Xiozs3AsufuJ04JOe1vjUri-IAMWHjjmc2ugGGiHNH4,947
|
48
49
|
prediction_market_agent_tooling/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
49
50
|
prediction_market_agent_tooling/tools/balances.py,sha256=R4oNr2l5wRkQVX-YoQXw5Iw_aLHT-RYxEg3AoxuEwa4,625
|
50
51
|
prediction_market_agent_tooling/tools/betting_strategies/kelly_criterion.py,sha256=IbhQPoKsQnjnag_n_wAL12n8QdCe7tAMRNV2QS8yYxY,3520
|
51
52
|
prediction_market_agent_tooling/tools/betting_strategies/market_moving.py,sha256=0qPFA0hNzgUKt49xovwwFaSYrunFgpWZ0Di1Lo3g5qw,4367
|
52
|
-
prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py,sha256
|
53
|
+
prediction_market_agent_tooling/tools/betting_strategies/minimum_bet_to_win.py,sha256=-FUSuQQgjcWSSnoFxnlAyTeilY6raJABJVM2QKkFqAY,438
|
53
54
|
prediction_market_agent_tooling/tools/betting_strategies/stretch_bet_between.py,sha256=THMXwFlskvzbjnX_OiYtDSzI8XVFyULWfP2525_9UGc,429
|
54
55
|
prediction_market_agent_tooling/tools/cache.py,sha256=tGHHd9HCiE_hCCtPtloHZQdDfBuiow9YsqJNYi2Tx_0,499
|
55
|
-
prediction_market_agent_tooling/tools/contract.py,sha256=
|
56
|
+
prediction_market_agent_tooling/tools/contract.py,sha256=xtkhQ2fLtFcrUUsD0TWjILloP2RdrpU5fZ0l9KJAg5s,6760
|
57
|
+
prediction_market_agent_tooling/tools/costs.py,sha256=EaAJ7v9laD4VEV3d8B44M4u3_oEO_H16jRVCdoZ93Uw,954
|
56
58
|
prediction_market_agent_tooling/tools/gnosis_rpc.py,sha256=fVHe_7qw5vejx03ThM8p3XMviWND8gs-DHz0IaLywpI,685
|
57
59
|
prediction_market_agent_tooling/tools/google.py,sha256=P-ifiMk7bxQdU1ceON9apcZlw4rLHeOcYwxdeE4Of6Q,1761
|
58
60
|
prediction_market_agent_tooling/tools/hexbytes_custom.py,sha256=Bp94qgPjvjWf1Vb4lNzGFDXRdThw1rJ91vL6r2PWq5E,2096
|
59
61
|
prediction_market_agent_tooling/tools/is_predictable.py,sha256=MkElDkQRd2K3ZoAbqwk9WZluhqGDgx4vdt5cq_DoAz8,2618
|
60
|
-
prediction_market_agent_tooling/tools/parallelism.py,sha256=
|
62
|
+
prediction_market_agent_tooling/tools/parallelism.py,sha256=8mgkF5sBwFGS5GMvlpzam82Y3p2swPYuNsywpQuy-a4,1508
|
63
|
+
prediction_market_agent_tooling/tools/safe.py,sha256=gNgcY6ugckx3DbupR8VBezDgh1dZXpc8oZlPerZ3Atg,5162
|
61
64
|
prediction_market_agent_tooling/tools/singleton.py,sha256=CiIELUiI-OeS7U7eeHEt0rnVhtQGzwoUdAgn_7u_GBM,729
|
62
65
|
prediction_market_agent_tooling/tools/utils.py,sha256=6MRfLr5xGPEQGobLz_eCsE_p-XaAeOCcmygwgNCIvqE,5044
|
63
|
-
prediction_market_agent_tooling/tools/web3_utils.py,sha256=
|
64
|
-
prediction_market_agent_tooling-0.
|
65
|
-
prediction_market_agent_tooling-0.
|
66
|
-
prediction_market_agent_tooling-0.
|
67
|
-
prediction_market_agent_tooling-0.
|
68
|
-
prediction_market_agent_tooling-0.
|
66
|
+
prediction_market_agent_tooling/tools/web3_utils.py,sha256=tl_uN-SpKK4nXpqlSozefzMXpbAe9rFzaCB9IQ0QJxY,8335
|
67
|
+
prediction_market_agent_tooling-0.15.0.dist-info/LICENSE,sha256=6or154nLLU6bELzjh0mCreFjt0m2v72zLi3yHE0QbeE,7650
|
68
|
+
prediction_market_agent_tooling-0.15.0.dist-info/METADATA,sha256=Ei0er6jj362sgd3C_fXOrBhXLpxbqah55n_RKgjaLW8,5468
|
69
|
+
prediction_market_agent_tooling-0.15.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
70
|
+
prediction_market_agent_tooling-0.15.0.dist-info/entry_points.txt,sha256=m8PukHbeH5g0IAAmOf_1Ahm-sGAMdhSSRQmwtpmi2s8,81
|
71
|
+
prediction_market_agent_tooling-0.15.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|