mm-eth 0.5.0__tar.gz → 0.5.1__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.
- {mm_eth-0.5.0 → mm_eth-0.5.1}/PKG-INFO +1 -1
- {mm_eth-0.5.0 → mm_eth-0.5.1}/pyproject.toml +1 -1
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/transfer_cmd.py +7 -5
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/examples/transfer.toml +7 -4
- {mm_eth-0.5.0 → mm_eth-0.5.1}/uv.lock +1 -1
- {mm_eth-0.5.0 → mm_eth-0.5.1}/.gitignore +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/README.txt +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/dict.dic +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/justfile +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/__init__.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/abi.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/account.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/anvil.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/__init__.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/calcs.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cli.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cli_utils.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/__init__.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/balance_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/balances_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/call_contract_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/deploy_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/encode_input_data_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/example_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/node_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/rpc_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/solc_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/token_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/tx_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/vault_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/wallet/__init__.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/wallet/mnemonic_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/cmd/wallet/private_key_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/examples/balances.toml +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/examples/call_contract.toml +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/print_helpers.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/rpc_helpers.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/cli/validators.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/constants.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/deploy.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/ens.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/erc20.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/ethernodes.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/json_encoder.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/py.typed +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/rpc.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/solc.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/tx.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/utils.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/src/mm_eth/vault.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/__init__.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/cli/__init__.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/cli/cmd/__init__.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/cli/cmd/test_balance_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/cli/cmd/test_mnemonic_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/cli/cmd/test_node_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/cli/cmd/test_private_key_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/cli/cmd/test_solc_cmd.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/cli/test_calcs.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/conftest.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/contracts/ERC20.sol +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/contracts/abi/ERC20.json +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/test_abi.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/test_account.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/test_ethernodes.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/test_rpc.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/test_tx.py +0 -0
- {mm_eth-0.5.0 → mm_eth-0.5.1}/tests/test_utils.py +0 -0
|
@@ -31,7 +31,7 @@ class Config(BaseConfig):
|
|
|
31
31
|
max_fee: Annotated[str, AfterValidator(Validators.valid_eth_expression("base_fee"))]
|
|
32
32
|
priority_fee: Annotated[str, AfterValidator(Validators.valid_eth_expression())]
|
|
33
33
|
max_fee_limit: Annotated[str | None, AfterValidator(Validators.valid_eth_expression())] = None
|
|
34
|
-
|
|
34
|
+
default_value: Annotated[str | None, AfterValidator(Validators.valid_eth_or_token_expression("balance"))] = None
|
|
35
35
|
value_min_limit: Annotated[str | None, AfterValidator(Validators.valid_eth_or_token_expression())] = None
|
|
36
36
|
gas: Annotated[str, AfterValidator(Validators.valid_eth_expression("estimate"))]
|
|
37
37
|
delay: Annotated[str | None, AfterValidator(Validators.valid_calc_decimal_value())] = None # in seconds
|
|
@@ -51,18 +51,20 @@ class Config(BaseConfig):
|
|
|
51
51
|
raise ValueError("private keys are not set for all addresses")
|
|
52
52
|
|
|
53
53
|
for transfer in self.transfers: # If value is not set for a transfer, then set it to the global value of the config.
|
|
54
|
-
if not transfer.value:
|
|
55
|
-
transfer.value = self.
|
|
54
|
+
if not transfer.value and self.default_value:
|
|
55
|
+
transfer.value = self.default_value
|
|
56
56
|
for transfer in self.transfers: # Check all transfers have a value.
|
|
57
57
|
if not transfer.value:
|
|
58
58
|
raise ValueError(f"{transfer.log_prefix}: value is not set")
|
|
59
59
|
|
|
60
60
|
if self.token:
|
|
61
|
-
|
|
61
|
+
if self.default_value:
|
|
62
|
+
Validators.valid_token_expression("balance")(self.default_value)
|
|
62
63
|
if self.value_min_limit:
|
|
63
64
|
Validators.valid_token_expression()(self.value_min_limit)
|
|
64
65
|
else:
|
|
65
|
-
|
|
66
|
+
if self.default_value:
|
|
67
|
+
Validators.valid_eth_expression("balance")(self.default_value)
|
|
66
68
|
if self.value_min_limit:
|
|
67
69
|
Validators.valid_eth_expression()(self.value_min_limit)
|
|
68
70
|
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
# from_address to_address value -- is a format for each transfer, value is optional
|
|
2
|
+
# if value is not set, default_value will be used
|
|
3
|
+
# value is an expression that can contain variable 'balance' and 'random' function
|
|
1
4
|
transfers = """
|
|
2
|
-
# from_address to_address value
|
|
3
5
|
0x10fd602Bff689e64D4720D1DCCCD3494f1f16623 0x58487485c3858109f5A37e42546FE87473f79a4b 0.1t # comments are allowed here
|
|
4
6
|
0x97C77B548aE0d4925F5C201220fC6d8996424309 0x7EdF3b8579c21A8820b4C0B8352541c1CE04045f 0.2balance-random(0.1t,0.5t)
|
|
5
|
-
0x10ecB8d838746643E613f6B5218C8e342593225c 0xE19242B72a4833eD86F1b2015d4E59052A2b278b
|
|
7
|
+
0x10ecB8d838746643E613f6B5218C8e342593225c 0xE19242B72a4833eD86F1b2015d4E59052A2b278b
|
|
6
8
|
file: /path/to/other_transfers.txt # transfers from this file will be added
|
|
7
9
|
"""
|
|
8
10
|
|
|
@@ -22,9 +24,10 @@ priority_fee = "1gwei+random(1,12)"
|
|
|
22
24
|
|
|
23
25
|
gas = "estimate+random(100,200)-19" # supported var_name=estimate
|
|
24
26
|
|
|
25
|
-
|
|
27
|
+
# default_value is used if transfer.value is not set in transfers. It's optional.
|
|
28
|
+
default_value = "0.5balance-random(1.5t,3t)+11t" # supported var_name=balance. For ERC20 token use 't' suffix.
|
|
26
29
|
|
|
27
|
-
value_min_limit = "0.5t+random(1,2)-7"
|
|
30
|
+
value_min_limit = "0.5t+random(1,2)-7" # don't transfer if transfer.value is less than this
|
|
28
31
|
|
|
29
32
|
delay = "random(1.123,10)+1" # secs, optional
|
|
30
33
|
|
|
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
|