mm-btc 0.2.1__tar.gz → 0.3.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.
- {mm_btc-0.2.1 → mm_btc-0.3.0}/PKG-INFO +2 -2
- mm_btc-0.3.0/dict.dic +6 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/pyproject.toml +6 -3
- {mm_btc-0.2.1 → mm_btc-0.3.0}/src/mm_btc/blockstream.py +6 -8
- {mm_btc-0.2.1 → mm_btc-0.3.0}/src/mm_btc/cli/cli.py +2 -2
- {mm_btc-0.2.1 → mm_btc-0.3.0}/src/mm_btc/cli/cmd/create_tx_cmd.py +1 -2
- {mm_btc-0.2.1 → mm_btc-0.3.0}/tests/test_blockstream.py +2 -2
- {mm_btc-0.2.1 → mm_btc-0.3.0}/uv.lock +64 -30
- mm_btc-0.2.1/src/mm_btc/cli/cli_utils.py +0 -19
- {mm_btc-0.2.1 → mm_btc-0.3.0}/.env.example +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/.gitignore +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/README.txt +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/justfile +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/src/mm_btc/__init__.py +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/src/mm_btc/cli/__init__.py +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/src/mm_btc/cli/cmd/__init__.py +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/src/mm_btc/cli/cmd/address_cmd.py +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/src/mm_btc/cli/cmd/decode_tx_cmd.py +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/src/mm_btc/cli/cmd/mnemonic_cmd.py +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/src/mm_btc/cli/cmd/utxo_cmd.py +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/src/mm_btc/py.typed +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/src/mm_btc/tx.py +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/src/mm_btc/wallet.py +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/tests/__init__.py +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/tests/cmd/__init__.py +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/tests/cmd/test_mnemonic_cmd.py +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/tests/conftest.py +0 -0
- {mm_btc-0.2.1 → mm_btc-0.3.0}/tests/test_wallet.py +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mm-btc
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Requires-Python: >=3.12
|
|
5
5
|
Requires-Dist: bitcoinlib~=0.7.1
|
|
6
6
|
Requires-Dist: bit~=0.8.0
|
|
7
7
|
Requires-Dist: hdwallet~=3.2.3
|
|
8
|
-
Requires-Dist: mm-
|
|
8
|
+
Requires-Dist: mm-crypto-utils>=0.1.3
|
|
9
9
|
Requires-Dist: mnemonic~=0.21
|
|
10
10
|
Requires-Dist: typer~=0.15.1
|
mm_btc-0.3.0/dict.dic
ADDED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mm-btc"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.3.0"
|
|
4
4
|
description = ""
|
|
5
5
|
requires-python = ">=3.12"
|
|
6
6
|
dependencies = [
|
|
7
|
-
"mm-
|
|
7
|
+
"mm-crypto-utils>=0.1.3",
|
|
8
8
|
"hdwallet~=3.2.3",
|
|
9
9
|
"bit~=0.8.0",
|
|
10
10
|
"bitcoinlib~=0.7.1",
|
|
@@ -24,7 +24,7 @@ dev-dependencies = [
|
|
|
24
24
|
"pytest~=8.3.4",
|
|
25
25
|
"pytest-xdist~=3.6.1",
|
|
26
26
|
"pytest-httpserver~=1.1.0",
|
|
27
|
-
"ruff~=0.9.
|
|
27
|
+
"ruff~=0.9.4",
|
|
28
28
|
"pip-audit~=2.7.3",
|
|
29
29
|
"bandit~=1.8.2",
|
|
30
30
|
"mypy~=1.14.1",
|
|
@@ -47,6 +47,7 @@ target-version = "py313"
|
|
|
47
47
|
[tool.ruff.lint]
|
|
48
48
|
select = ["ALL"]
|
|
49
49
|
ignore = [
|
|
50
|
+
"TC", # flake8-type-checking, TYPE_CHECKING is dangerous, for example it doesn't work with pydantic
|
|
50
51
|
"A005", # flake8-builtins: stdlib-module-shadowing
|
|
51
52
|
"ERA001", # eradicate: commented-out-code
|
|
52
53
|
"PT", # flake8-pytest-style
|
|
@@ -68,6 +69,8 @@ ignore = [
|
|
|
68
69
|
"RET503", # flake8-return: implicit-return
|
|
69
70
|
"COM812", # it's used in ruff formatter
|
|
70
71
|
]
|
|
72
|
+
[tool.ruff.lint.pep8-naming]
|
|
73
|
+
classmethod-decorators = ["field_validator"]
|
|
71
74
|
[tool.ruff.lint.per-file-ignores]
|
|
72
75
|
"tests/*.py" = ["ANN", "S"]
|
|
73
76
|
[tool.ruff.format]
|
|
@@ -7,8 +7,10 @@ from pydantic import BaseModel
|
|
|
7
7
|
MAINNET_BASE_URL = "https://blockstream.info/api"
|
|
8
8
|
TESTNET_BASE_URL = "https://blockstream.info/testnet/api"
|
|
9
9
|
|
|
10
|
-
ERROR_INVALID_ADDRESS = "INVALID_ADDRESS"
|
|
11
|
-
ERROR_INVALID_NETWORK = "INVALID_NETWORK"
|
|
10
|
+
# ERROR_INVALID_ADDRESS = "INVALID_ADDRESS"
|
|
11
|
+
# ERROR_INVALID_NETWORK = "INVALID_NETWORK"
|
|
12
|
+
|
|
13
|
+
ERROR_400_BAD_REQUEST = "400 Bad Request"
|
|
12
14
|
|
|
13
15
|
type Proxy = str | Sequence[str] | None
|
|
14
16
|
|
|
@@ -67,12 +69,8 @@ class BlockstreamClient:
|
|
|
67
69
|
try:
|
|
68
70
|
res = self._request(f"/address/{address}")
|
|
69
71
|
data = res.to_dict()
|
|
70
|
-
if res.code == 400
|
|
71
|
-
|
|
72
|
-
):
|
|
73
|
-
return Err(ERROR_INVALID_ADDRESS, data=data)
|
|
74
|
-
if res.code == 400 and "invalid network" in res.body.lower():
|
|
75
|
-
return Err(ERROR_INVALID_NETWORK, data=data)
|
|
72
|
+
if res.code == 400:
|
|
73
|
+
return Err("400 Bad Request", data=data)
|
|
76
74
|
return Ok(Address(**res.json), data=data)
|
|
77
75
|
except Exception as err:
|
|
78
76
|
result = Err(err, data=data)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import importlib.metadata
|
|
1
2
|
from pathlib import Path
|
|
2
3
|
from typing import Annotated
|
|
3
4
|
|
|
@@ -7,7 +8,6 @@ from mm_std import print_plain
|
|
|
7
8
|
|
|
8
9
|
from mm_btc.wallet import AddressType
|
|
9
10
|
|
|
10
|
-
from . import cli_utils
|
|
11
11
|
from .cmd import address_cmd, create_tx_cmd, decode_tx_cmd, mnemonic_cmd, utxo_cmd
|
|
12
12
|
|
|
13
13
|
app = typer.Typer(no_args_is_help=True, pretty_exceptions_enable=False, add_completion=False)
|
|
@@ -67,7 +67,7 @@ def utxo_command(address: str) -> None:
|
|
|
67
67
|
|
|
68
68
|
def version_callback(value: bool) -> None:
|
|
69
69
|
if value:
|
|
70
|
-
print_plain(f"mm-btc: v{
|
|
70
|
+
print_plain(f"mm-btc: v{importlib.metadata.version('mm-btc')}")
|
|
71
71
|
raise typer.Exit
|
|
72
72
|
|
|
73
73
|
|
|
@@ -3,7 +3,6 @@ from pathlib import Path
|
|
|
3
3
|
from bit import PrivateKey, PrivateKeyTestnet
|
|
4
4
|
from mm_std import BaseConfig, print_console
|
|
5
5
|
|
|
6
|
-
from mm_btc.cli.cli_utils import read_config
|
|
7
6
|
from mm_btc.wallet import is_testnet_address
|
|
8
7
|
|
|
9
8
|
|
|
@@ -18,7 +17,7 @@ class Config(BaseConfig):
|
|
|
18
17
|
|
|
19
18
|
|
|
20
19
|
def run(config_path: Path) -> None:
|
|
21
|
-
config =
|
|
20
|
+
config = Config.read_toml_config_or_exit(config_path)
|
|
22
21
|
testnet = is_testnet_address(config.from_address)
|
|
23
22
|
key = PrivateKeyTestnet(config.private) if testnet else PrivateKey(config.private)
|
|
24
23
|
|
|
@@ -15,11 +15,11 @@ def test_get_address(binance_address, proxies):
|
|
|
15
15
|
|
|
16
16
|
# invalid address
|
|
17
17
|
res = client.get_address("bc1pa48c294qk7yd7sc8y0wxydc3a2frv5j83e65rvm48v3ej098s5zs8kvh5d")
|
|
18
|
-
assert res.unwrap_err() == blockstream.
|
|
18
|
+
assert res.unwrap_err() == blockstream.ERROR_400_BAD_REQUEST
|
|
19
19
|
|
|
20
20
|
# invalid network
|
|
21
21
|
res = client.get_address("mqkwWDWdgXhYunfoKvQfYyydwB5vdma3cK")
|
|
22
|
-
assert res.unwrap_err() == blockstream.
|
|
22
|
+
assert res.unwrap_err() == blockstream.ERROR_400_BAD_REQUEST
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
def test_get_confirmed_balance(binance_address, proxies):
|
|
@@ -541,6 +541,19 @@ wheels = [
|
|
|
541
541
|
{ url = "https://files.pythonhosted.org/packages/fc/f8/5699e6d6ea5156d53059ff07464b5d64389b084f67cb08ec97c711e587fc/license_expression-30.4.0-py3-none-any.whl", hash = "sha256:7c8f240c6e20d759cb8455e49cb44a923d9e25c436bf48d7e5b8eea660782c04", size = 110571 },
|
|
542
542
|
]
|
|
543
543
|
|
|
544
|
+
[[package]]
|
|
545
|
+
name = "loguru"
|
|
546
|
+
version = "0.7.3"
|
|
547
|
+
source = { registry = "https://pypi.org/simple" }
|
|
548
|
+
dependencies = [
|
|
549
|
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
550
|
+
{ name = "win32-setctime", marker = "sys_platform == 'win32'" },
|
|
551
|
+
]
|
|
552
|
+
sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559 }
|
|
553
|
+
wheels = [
|
|
554
|
+
{ url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595 },
|
|
555
|
+
]
|
|
556
|
+
|
|
544
557
|
[[package]]
|
|
545
558
|
name = "markdown-it-py"
|
|
546
559
|
version = "3.0.0"
|
|
@@ -602,13 +615,13 @@ wheels = [
|
|
|
602
615
|
|
|
603
616
|
[[package]]
|
|
604
617
|
name = "mm-btc"
|
|
605
|
-
version = "0.
|
|
618
|
+
version = "0.3.0"
|
|
606
619
|
source = { editable = "." }
|
|
607
620
|
dependencies = [
|
|
608
621
|
{ name = "bit" },
|
|
609
622
|
{ name = "bitcoinlib" },
|
|
610
623
|
{ name = "hdwallet" },
|
|
611
|
-
{ name = "mm-
|
|
624
|
+
{ name = "mm-crypto-utils" },
|
|
612
625
|
{ name = "mnemonic" },
|
|
613
626
|
{ name = "typer" },
|
|
614
627
|
]
|
|
@@ -630,7 +643,7 @@ requires-dist = [
|
|
|
630
643
|
{ name = "bit", specifier = "~=0.8.0" },
|
|
631
644
|
{ name = "bitcoinlib", specifier = "~=0.7.1" },
|
|
632
645
|
{ name = "hdwallet", specifier = "~=3.2.3" },
|
|
633
|
-
{ name = "mm-
|
|
646
|
+
{ name = "mm-crypto-utils", specifier = ">=0.1.3" },
|
|
634
647
|
{ name = "mnemonic", specifier = "~=0.21" },
|
|
635
648
|
{ name = "typer", specifier = "~=0.15.1" },
|
|
636
649
|
]
|
|
@@ -643,13 +656,25 @@ dev = [
|
|
|
643
656
|
{ name = "pytest", specifier = "~=8.3.4" },
|
|
644
657
|
{ name = "pytest-httpserver", specifier = "~=1.1.0" },
|
|
645
658
|
{ name = "pytest-xdist", specifier = "~=3.6.1" },
|
|
646
|
-
{ name = "ruff", specifier = "~=0.9.
|
|
659
|
+
{ name = "ruff", specifier = "~=0.9.4" },
|
|
647
660
|
{ name = "types-pyyaml", specifier = "~=6.0.12.20241230" },
|
|
648
661
|
]
|
|
649
662
|
|
|
663
|
+
[[package]]
|
|
664
|
+
name = "mm-crypto-utils"
|
|
665
|
+
version = "0.1.3"
|
|
666
|
+
source = { registry = "https://pypi.org/simple" }
|
|
667
|
+
dependencies = [
|
|
668
|
+
{ name = "loguru" },
|
|
669
|
+
{ name = "mm-std" },
|
|
670
|
+
]
|
|
671
|
+
wheels = [
|
|
672
|
+
{ url = "https://files.pythonhosted.org/packages/67/a5/b6ff50a8b70b76c14c62b5cf7eebc8b9b9ba3422a4cb8cd895570ce4a1fc/mm_crypto_utils-0.1.3-py3-none-any.whl", hash = "sha256:ef6dd7639f4a298c29b5e5e7b11d0fc74cf66405f96c91daf1343695728bdeb7", size = 7847 },
|
|
673
|
+
]
|
|
674
|
+
|
|
650
675
|
[[package]]
|
|
651
676
|
name = "mm-std"
|
|
652
|
-
version = "0.1
|
|
677
|
+
version = "0.2.1"
|
|
653
678
|
source = { registry = "https://pypi.org/simple" }
|
|
654
679
|
dependencies = [
|
|
655
680
|
{ name = "cryptography" },
|
|
@@ -661,7 +686,7 @@ dependencies = [
|
|
|
661
686
|
{ name = "rich" },
|
|
662
687
|
]
|
|
663
688
|
wheels = [
|
|
664
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
689
|
+
{ url = "https://files.pythonhosted.org/packages/f3/ef/cb423cc357cc116313fcd97e9d0ff673234f5f1725f4a73929ced27b1d00/mm_std-0.2.1-py3-none-any.whl", hash = "sha256:71fa84f2fa897901c925614327123e8d0bc6ae61ff7873479dc9a53889442237", size = 14620 },
|
|
665
690
|
]
|
|
666
691
|
|
|
667
692
|
[[package]]
|
|
@@ -906,16 +931,16 @@ wheels = [
|
|
|
906
931
|
|
|
907
932
|
[[package]]
|
|
908
933
|
name = "pydantic"
|
|
909
|
-
version = "2.10.
|
|
934
|
+
version = "2.10.6"
|
|
910
935
|
source = { registry = "https://pypi.org/simple" }
|
|
911
936
|
dependencies = [
|
|
912
937
|
{ name = "annotated-types" },
|
|
913
938
|
{ name = "pydantic-core" },
|
|
914
939
|
{ name = "typing-extensions" },
|
|
915
940
|
]
|
|
916
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
941
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b7/ae/d5220c5c52b158b1de7ca89fc5edb72f304a70a4c540c84c8844bf4008de/pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236", size = 761681 }
|
|
917
942
|
wheels = [
|
|
918
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
943
|
+
{ url = "https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", size = 431696 },
|
|
919
944
|
]
|
|
920
945
|
|
|
921
946
|
[[package]]
|
|
@@ -1112,27 +1137,27 @@ wheels = [
|
|
|
1112
1137
|
|
|
1113
1138
|
[[package]]
|
|
1114
1139
|
name = "ruff"
|
|
1115
|
-
version = "0.9.
|
|
1116
|
-
source = { registry = "https://pypi.org/simple" }
|
|
1117
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1118
|
-
wheels = [
|
|
1119
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1120
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1121
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1122
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1123
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1124
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1125
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1126
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1127
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1128
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1129
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1130
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1131
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1132
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1133
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1134
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1135
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1140
|
+
version = "0.9.4"
|
|
1141
|
+
source = { registry = "https://pypi.org/simple" }
|
|
1142
|
+
sdist = { url = "https://files.pythonhosted.org/packages/c0/17/529e78f49fc6f8076f50d985edd9a2cf011d1dbadb1cdeacc1d12afc1d26/ruff-0.9.4.tar.gz", hash = "sha256:6907ee3529244bb0ed066683e075f09285b38dd5b4039370df6ff06041ca19e7", size = 3599458 }
|
|
1143
|
+
wheels = [
|
|
1144
|
+
{ url = "https://files.pythonhosted.org/packages/b6/f8/3fafb7804d82e0699a122101b5bee5f0d6e17c3a806dcbc527bb7d3f5b7a/ruff-0.9.4-py3-none-linux_armv6l.whl", hash = "sha256:64e73d25b954f71ff100bb70f39f1ee09e880728efb4250c632ceed4e4cdf706", size = 11668400 },
|
|
1145
|
+
{ url = "https://files.pythonhosted.org/packages/2e/a6/2efa772d335da48a70ab2c6bb41a096c8517ca43c086ea672d51079e3d1f/ruff-0.9.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6ce6743ed64d9afab4fafeaea70d3631b4d4b28b592db21a5c2d1f0ef52934bf", size = 11628395 },
|
|
1146
|
+
{ url = "https://files.pythonhosted.org/packages/dc/d7/cd822437561082f1c9d7225cc0d0fbb4bad117ad7ac3c41cd5d7f0fa948c/ruff-0.9.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:54499fb08408e32b57360f6f9de7157a5fec24ad79cb3f42ef2c3f3f728dfe2b", size = 11090052 },
|
|
1147
|
+
{ url = "https://files.pythonhosted.org/packages/9e/67/3660d58e893d470abb9a13f679223368ff1684a4ef40f254a0157f51b448/ruff-0.9.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37c892540108314a6f01f105040b5106aeb829fa5fb0561d2dcaf71485021137", size = 11882221 },
|
|
1148
|
+
{ url = "https://files.pythonhosted.org/packages/79/d1/757559995c8ba5f14dfec4459ef2dd3fcea82ac43bc4e7c7bf47484180c0/ruff-0.9.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de9edf2ce4b9ddf43fd93e20ef635a900e25f622f87ed6e3047a664d0e8f810e", size = 11424862 },
|
|
1149
|
+
{ url = "https://files.pythonhosted.org/packages/c0/96/7915a7c6877bb734caa6a2af424045baf6419f685632469643dbd8eb2958/ruff-0.9.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87c90c32357c74f11deb7fbb065126d91771b207bf9bfaaee01277ca59b574ec", size = 12626735 },
|
|
1150
|
+
{ url = "https://files.pythonhosted.org/packages/0e/cc/dadb9b35473d7cb17c7ffe4737b4377aeec519a446ee8514123ff4a26091/ruff-0.9.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:56acd6c694da3695a7461cc55775f3a409c3815ac467279dfa126061d84b314b", size = 13255976 },
|
|
1151
|
+
{ url = "https://files.pythonhosted.org/packages/5f/c3/ad2dd59d3cabbc12df308cced780f9c14367f0321e7800ca0fe52849da4c/ruff-0.9.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0c93e7d47ed951b9394cf352d6695b31498e68fd5782d6cbc282425655f687a", size = 12752262 },
|
|
1152
|
+
{ url = "https://files.pythonhosted.org/packages/c7/17/5f1971e54bd71604da6788efd84d66d789362b1105e17e5ccc53bba0289b/ruff-0.9.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d4c8772670aecf037d1bf7a07c39106574d143b26cfe5ed1787d2f31e800214", size = 14401648 },
|
|
1153
|
+
{ url = "https://files.pythonhosted.org/packages/30/24/6200b13ea611b83260501b6955b764bb320e23b2b75884c60ee7d3f0b68e/ruff-0.9.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfc5f1d7afeda8d5d37660eeca6d389b142d7f2b5a1ab659d9214ebd0e025231", size = 12414702 },
|
|
1154
|
+
{ url = "https://files.pythonhosted.org/packages/34/cb/f5d50d0c4ecdcc7670e348bd0b11878154bc4617f3fdd1e8ad5297c0d0ba/ruff-0.9.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:faa935fc00ae854d8b638c16a5f1ce881bc3f67446957dd6f2af440a5fc8526b", size = 11859608 },
|
|
1155
|
+
{ url = "https://files.pythonhosted.org/packages/d6/f4/9c8499ae8426da48363bbb78d081b817b0f64a9305f9b7f87eab2a8fb2c1/ruff-0.9.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a6c634fc6f5a0ceae1ab3e13c58183978185d131a29c425e4eaa9f40afe1e6d6", size = 11485702 },
|
|
1156
|
+
{ url = "https://files.pythonhosted.org/packages/18/59/30490e483e804ccaa8147dd78c52e44ff96e1c30b5a95d69a63163cdb15b/ruff-0.9.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:433dedf6ddfdec7f1ac7575ec1eb9844fa60c4c8c2f8887a070672b8d353d34c", size = 12067782 },
|
|
1157
|
+
{ url = "https://files.pythonhosted.org/packages/3d/8c/893fa9551760b2f8eb2a351b603e96f15af167ceaf27e27ad873570bc04c/ruff-0.9.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d612dbd0f3a919a8cc1d12037168bfa536862066808960e0cc901404b77968f0", size = 12483087 },
|
|
1158
|
+
{ url = "https://files.pythonhosted.org/packages/23/15/f6751c07c21ca10e3f4a51ea495ca975ad936d780c347d9808bcedbd7182/ruff-0.9.4-py3-none-win32.whl", hash = "sha256:db1192ddda2200671f9ef61d9597fcef89d934f5d1705e571a93a67fb13a4402", size = 9852302 },
|
|
1159
|
+
{ url = "https://files.pythonhosted.org/packages/12/41/2d2d2c6a72e62566f730e49254f602dfed23019c33b5b21ea8f8917315a1/ruff-0.9.4-py3-none-win_amd64.whl", hash = "sha256:05bebf4cdbe3ef75430d26c375773978950bbf4ee3c95ccb5448940dc092408e", size = 10850051 },
|
|
1160
|
+
{ url = "https://files.pythonhosted.org/packages/c6/e6/3d6ec3bc3d254e7f005c543a661a41c3e788976d0e52a1ada195bd664344/ruff-0.9.4-py3-none-win_arm64.whl", hash = "sha256:585792f1e81509e38ac5123492f8875fbc36f3ede8185af0a26df348e5154f41", size = 10078251 },
|
|
1136
1161
|
]
|
|
1137
1162
|
|
|
1138
1163
|
[[package]]
|
|
@@ -1292,3 +1317,12 @@ sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2
|
|
|
1292
1317
|
wheels = [
|
|
1293
1318
|
{ url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498 },
|
|
1294
1319
|
]
|
|
1320
|
+
|
|
1321
|
+
[[package]]
|
|
1322
|
+
name = "win32-setctime"
|
|
1323
|
+
version = "1.2.0"
|
|
1324
|
+
source = { registry = "https://pypi.org/simple" }
|
|
1325
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867 }
|
|
1326
|
+
wheels = [
|
|
1327
|
+
{ url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083 },
|
|
1328
|
+
]
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import importlib.metadata
|
|
2
|
-
import sys
|
|
3
|
-
from pathlib import Path
|
|
4
|
-
|
|
5
|
-
from mm_std import BaseConfig
|
|
6
|
-
from rich import print_json
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def get_version() -> str:
|
|
10
|
-
return importlib.metadata.version("mm-btc")
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def read_config[T: BaseConfig](config_type: type[T], config_path: Path) -> T:
|
|
14
|
-
res = config_type.read_config(config_path)
|
|
15
|
-
if res.is_ok():
|
|
16
|
-
return res.unwrap()
|
|
17
|
-
|
|
18
|
-
print_json(res.err)
|
|
19
|
-
sys.exit(1)
|
|
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
|