mm-balance 0.2.1__py3-none-any.whl → 0.2.3__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.
- mm_balance/cli.py +12 -2
- mm_balance/config/example.toml +5 -5
- mm_balance/config.py +6 -0
- {mm_balance-0.2.1.dist-info → mm_balance-0.2.3.dist-info}/METADATA +3 -3
- {mm_balance-0.2.1.dist-info → mm_balance-0.2.3.dist-info}/RECORD +7 -7
- {mm_balance-0.2.1.dist-info → mm_balance-0.2.3.dist-info}/WHEEL +0 -0
- {mm_balance-0.2.1.dist-info → mm_balance-0.2.3.dist-info}/entry_points.txt +0 -0
mm_balance/cli.py
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import getpass
|
|
2
|
+
import importlib.metadata
|
|
2
3
|
import pathlib
|
|
3
4
|
import pkgutil
|
|
4
5
|
from typing import Annotated
|
|
5
6
|
|
|
6
7
|
import typer
|
|
7
|
-
from mm_std import PrintFormat, fatal
|
|
8
|
+
from mm_std import PrintFormat, fatal, pretty_print_toml
|
|
8
9
|
|
|
9
10
|
from mm_balance.config import Config
|
|
10
11
|
from mm_balance.constants import NETWORKS
|
|
@@ -17,10 +18,18 @@ from mm_balance.workers import Workers
|
|
|
17
18
|
app = typer.Typer(no_args_is_help=True, pretty_exceptions_enable=False, add_completion=False)
|
|
18
19
|
|
|
19
20
|
|
|
21
|
+
def version_callback(value: bool) -> None:
|
|
22
|
+
if value:
|
|
23
|
+
typer.echo(f"mm-balance: v{importlib.metadata.version('mm-balance')}")
|
|
24
|
+
raise typer.Exit
|
|
25
|
+
|
|
26
|
+
|
|
20
27
|
def example_callback(value: bool) -> None:
|
|
21
28
|
if value:
|
|
22
29
|
data = pkgutil.get_data(__name__, "config/example.toml")
|
|
23
|
-
|
|
30
|
+
if data is None:
|
|
31
|
+
fatal("Example config not found")
|
|
32
|
+
pretty_print_toml(data.decode("utf-8"))
|
|
24
33
|
raise typer.Exit
|
|
25
34
|
|
|
26
35
|
|
|
@@ -43,6 +52,7 @@ def cli(
|
|
|
43
52
|
_networks: Annotated[
|
|
44
53
|
bool | None, typer.Option("--networks", callback=networks_callback, help="Print supported networks.")
|
|
45
54
|
] = None,
|
|
55
|
+
_version: bool = typer.Option(None, "--version", callback=version_callback, is_eager=True),
|
|
46
56
|
) -> None:
|
|
47
57
|
zip_password = "" # nosec
|
|
48
58
|
if config_path.name.endswith(".zip"):
|
mm_balance/config/example.toml
CHANGED
|
@@ -23,25 +23,25 @@ share = 0.1
|
|
|
23
23
|
ticker = "ETH"
|
|
24
24
|
network = "ethereum"
|
|
25
25
|
comment = "okx"
|
|
26
|
-
addresses = "okx_eth"
|
|
26
|
+
addresses = "group: okx_eth"
|
|
27
27
|
|
|
28
28
|
[[coins]]
|
|
29
29
|
ticker = "USDT"
|
|
30
30
|
network = "ethereum"
|
|
31
31
|
comment = "okx"
|
|
32
|
-
addresses = "okx_eth"
|
|
32
|
+
addresses = "group: okx_eth"
|
|
33
33
|
|
|
34
34
|
[[coins]]
|
|
35
35
|
ticker = "ETH"
|
|
36
36
|
network = "ethereum"
|
|
37
37
|
comment = "binance"
|
|
38
|
-
addresses = "binance_eth"
|
|
38
|
+
addresses = "group: binance_eth"
|
|
39
39
|
|
|
40
40
|
[[coins]]
|
|
41
41
|
ticker = "USDT"
|
|
42
42
|
network = "ethereum"
|
|
43
43
|
comment = "binance"
|
|
44
|
-
addresses = "binance_eth"
|
|
44
|
+
addresses = "group: binance_eth"
|
|
45
45
|
|
|
46
46
|
[[coins]]
|
|
47
47
|
ticker = "USDC"
|
|
@@ -51,6 +51,7 @@ token_address = "0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b1
|
|
|
51
51
|
token_decimals = 6
|
|
52
52
|
addresses = "0x48271d39d0b05bd6efca2278f22277d6fcc375504f9839fd73f74ace240861af"
|
|
53
53
|
|
|
54
|
+
|
|
54
55
|
[[addresses]]
|
|
55
56
|
name = "okx_eth"
|
|
56
57
|
addresses = """
|
|
@@ -80,4 +81,3 @@ proxies = """
|
|
|
80
81
|
# socks5://usr:pass@site.com:1234
|
|
81
82
|
# http://site.com:1234
|
|
82
83
|
"""
|
|
83
|
-
|
mm_balance/config.py
CHANGED
|
@@ -93,6 +93,12 @@ class Config(BaseConfig):
|
|
|
93
93
|
|
|
94
94
|
@model_validator(mode="after")
|
|
95
95
|
def final_validator(self) -> Self:
|
|
96
|
+
# check all addresses has uniq name
|
|
97
|
+
address_group_names = [ag.name for ag in self.addresses]
|
|
98
|
+
non_uniq_names = [name for name in address_group_names if address_group_names.count(name) > 1]
|
|
99
|
+
if non_uniq_names:
|
|
100
|
+
raise ValueError("There are non-unique address group names: " + ", ".join(non_uniq_names))
|
|
101
|
+
|
|
96
102
|
# load addresses from address_group
|
|
97
103
|
for group in self.groups:
|
|
98
104
|
group.process_addresses(self.addresses)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mm-balance
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Requires-Python: >=3.12
|
|
5
5
|
Requires-Dist: mm-aptos==0.2.0
|
|
6
6
|
Requires-Dist: mm-btc==0.3.0
|
|
7
|
-
Requires-Dist: mm-eth==0.
|
|
8
|
-
Requires-Dist: mm-sol==0.
|
|
7
|
+
Requires-Dist: mm-eth==0.5.2
|
|
8
|
+
Requires-Dist: mm-sol==0.5.1
|
|
9
9
|
Requires-Dist: typer>=0.15.1
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
mm_balance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
mm_balance/cli.py,sha256=
|
|
3
|
-
mm_balance/config.py,sha256=
|
|
2
|
+
mm_balance/cli.py,sha256=AHaD6w97H8ru8nnQv2dcqh9v-d9BVirnlsClbLyHf6M,3796
|
|
3
|
+
mm_balance/config.py,sha256=3qEg9xGCoH6WX91dlmjXVVhkCjJf8KFOmfqE8NgSc64,4603
|
|
4
4
|
mm_balance/constants.py,sha256=kqG2zuwv0l-PzDHIrMJVQpfQWiXjr2DsqGPcKmqNJLo,2334
|
|
5
5
|
mm_balance/price.py,sha256=DzvcQngS6wgi_4YWoXxGvOuOkwJvUbN0KI8DeIxbB5A,1494
|
|
6
6
|
mm_balance/result.py,sha256=WsVLbf54cCJ76rIM2zHaOCQXMfZZMczdg8rlC2tDGWY,4533
|
|
7
7
|
mm_balance/token_decimals.py,sha256=7XL_x_1ZIhp_cr1TvXwnqLqINUWFGo0j5_5lWuxmwpE,2277
|
|
8
8
|
mm_balance/utils.py,sha256=bngYS2WFIakGZO31_ey4MPsllvDhgOxkAnGiXqom3J4,286
|
|
9
9
|
mm_balance/workers.py,sha256=vEmmUI-ioMOv1C_Jcz0rnzI3vn7BaVWFnyXddteJkoA,3766
|
|
10
|
-
mm_balance/config/example.toml,sha256=
|
|
10
|
+
mm_balance/config/example.toml,sha256=15Bjk_zkbhx9CqFgx1kbb2cRSBY9-kPKrej7N_8ulTk,1816
|
|
11
11
|
mm_balance/output/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
12
|
mm_balance/output/utils.py,sha256=WUFwshFMKZKdcwRtO21nhxqW78JeLAatDyHPZhdV96A,716
|
|
13
13
|
mm_balance/output/formats/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -18,7 +18,7 @@ mm_balance/rpc/aptos.py,sha256=1JCYCqDim4tk1axXscaAJRXPd4J6vV1ABFbwMbPgrL0,641
|
|
|
18
18
|
mm_balance/rpc/btc.py,sha256=iGDoO7HXP6reLI0bWm0UhEl7-UFZTo5xCWNzFngbITw,458
|
|
19
19
|
mm_balance/rpc/evm.py,sha256=ewlMmRrcXKlky3DPNbnUBTVwnvyw7N9iCZLsCX2V14w,1007
|
|
20
20
|
mm_balance/rpc/solana.py,sha256=c756415rlhQkHsVsqxHcA7wIaSM64IqyxMohjz8IGhY,1031
|
|
21
|
-
mm_balance-0.2.
|
|
22
|
-
mm_balance-0.2.
|
|
23
|
-
mm_balance-0.2.
|
|
24
|
-
mm_balance-0.2.
|
|
21
|
+
mm_balance-0.2.3.dist-info/METADATA,sha256=5FAngHypNiHnXLneqRH9E3n1jX45TIdJekZ4uAIKs4M,225
|
|
22
|
+
mm_balance-0.2.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
23
|
+
mm_balance-0.2.3.dist-info/entry_points.txt,sha256=rSnP0ZW1a3ACNwTWM7T53CmOycKbzhG43m2_wseENng,50
|
|
24
|
+
mm_balance-0.2.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|