mm-eth 0.5.4__tar.gz → 0.5.6__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 (70) hide show
  1. {mm_eth-0.5.4 → mm_eth-0.5.6}/PKG-INFO +3 -2
  2. {mm_eth-0.5.4 → mm_eth-0.5.6}/pyproject.toml +5 -4
  3. mm_eth-0.5.6/src/mm_eth/ens.py +23 -0
  4. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/utils.py +1 -1
  5. mm_eth-0.5.6/tests/test_ens.py +13 -0
  6. {mm_eth-0.5.4 → mm_eth-0.5.6}/uv.lock +48 -31
  7. mm_eth-0.5.4/src/mm_eth/ens.py +0 -16
  8. {mm_eth-0.5.4 → mm_eth-0.5.6}/.gitignore +0 -0
  9. {mm_eth-0.5.4 → mm_eth-0.5.6}/README.md +0 -0
  10. {mm_eth-0.5.4 → mm_eth-0.5.6}/dict.dic +0 -0
  11. {mm_eth-0.5.4 → mm_eth-0.5.6}/justfile +0 -0
  12. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/__init__.py +0 -0
  13. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/abi.py +0 -0
  14. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/account.py +0 -0
  15. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/anvil.py +0 -0
  16. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/__init__.py +0 -0
  17. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/calcs.py +0 -0
  18. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cli.py +0 -0
  19. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cli_utils.py +0 -0
  20. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/__init__.py +0 -0
  21. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/balance_cmd.py +0 -0
  22. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/balances_cmd.py +0 -0
  23. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/call_contract_cmd.py +0 -0
  24. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/deploy_cmd.py +0 -0
  25. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/encode_input_data_cmd.py +0 -0
  26. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/example_cmd.py +0 -0
  27. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/node_cmd.py +0 -0
  28. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/rpc_cmd.py +0 -0
  29. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/solc_cmd.py +0 -0
  30. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/token_cmd.py +0 -0
  31. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/transfer_cmd.py +0 -0
  32. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/tx_cmd.py +0 -0
  33. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/vault_cmd.py +0 -0
  34. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/wallet/__init__.py +0 -0
  35. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/wallet/mnemonic_cmd.py +0 -0
  36. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/cmd/wallet/private_key_cmd.py +0 -0
  37. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/examples/balances.toml +0 -0
  38. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/examples/call_contract.toml +0 -0
  39. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/examples/transfer.toml +0 -0
  40. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/print_helpers.py +0 -0
  41. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/rpc_helpers.py +0 -0
  42. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/cli/validators.py +0 -0
  43. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/constants.py +0 -0
  44. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/deploy.py +0 -0
  45. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/erc20.py +0 -0
  46. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/ethernodes.py +0 -0
  47. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/json_encoder.py +0 -0
  48. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/py.typed +0 -0
  49. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/rpc.py +0 -0
  50. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/solc.py +0 -0
  51. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/tx.py +0 -0
  52. {mm_eth-0.5.4 → mm_eth-0.5.6}/src/mm_eth/vault.py +0 -0
  53. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/__init__.py +0 -0
  54. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/cli/__init__.py +0 -0
  55. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/cli/cmd/__init__.py +0 -0
  56. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/cli/cmd/test_balance_cmd.py +0 -0
  57. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/cli/cmd/test_mnemonic_cmd.py +0 -0
  58. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/cli/cmd/test_node_cmd.py +0 -0
  59. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/cli/cmd/test_private_key_cmd.py +0 -0
  60. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/cli/cmd/test_solc_cmd.py +0 -0
  61. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/cli/test_calcs.py +0 -0
  62. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/conftest.py +0 -0
  63. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/contracts/ERC20.sol +0 -0
  64. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/contracts/abi/ERC20.json +0 -0
  65. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/test_abi.py +0 -0
  66. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/test_account.py +0 -0
  67. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/test_ethernodes.py +0 -0
  68. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/test_rpc.py +0 -0
  69. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/test_tx.py +0 -0
  70. {mm_eth-0.5.4 → mm_eth-0.5.6}/tests/test_utils.py +0 -0
@@ -1,8 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mm-eth
3
- Version: 0.5.4
3
+ Version: 0.5.6
4
4
  Requires-Python: >=3.12
5
5
  Requires-Dist: mm-crypto-utils>=0.2.6
6
- Requires-Dist: typer>=0.15.1
6
+ Requires-Dist: requests[socks]>=2.32.0
7
+ Requires-Dist: typer>=0.15.2
7
8
  Requires-Dist: web3~=7.8.0
8
9
  Requires-Dist: websocket-client~=1.8.0
@@ -1,13 +1,14 @@
1
1
  [project]
2
2
  name = "mm-eth"
3
- version = "0.5.4"
3
+ version = "0.5.6"
4
4
  description = ""
5
5
  requires-python = ">=3.12"
6
6
  dependencies = [
7
7
  "mm-crypto-utils>=0.2.6",
8
8
  "websocket-client~=1.8.0",
9
9
  "web3~=7.8.0",
10
- "typer>=0.15.1",
10
+ "typer>=0.15.2",
11
+ "requests[socks]>=2.32.0",
11
12
  ]
12
13
  [project.scripts]
13
14
  mm-eth = "mm_eth.cli.cli:app"
@@ -20,9 +21,9 @@ build-backend = "hatchling.build"
20
21
  dev-dependencies = [
21
22
  "pytest~=8.3.4",
22
23
  "pytest-xdist~=3.6.1",
23
- "ruff~=0.9.6",
24
+ "ruff~=0.9.9",
24
25
  "pip-audit~=2.8.0",
25
- "bandit~=1.8.2",
26
+ "bandit~=1.8.3",
26
27
  "mypy~=1.15.0",
27
28
  "types-pyyaml>=6.0.12.20241230",
28
29
  ]
@@ -0,0 +1,23 @@
1
+ from mm_crypto_utils import Nodes, Proxies, random_node, random_proxy
2
+ from mm_std import Err, Ok, Result
3
+
4
+ from mm_eth.utils import get_w3
5
+
6
+
7
+ def get_name_with_retries(
8
+ rpc_urls: Nodes, address: str, retries: int, timeout: float = 5, proxies: Proxies = None
9
+ ) -> Result[str | None]:
10
+ res: Result[str | None] = Err("not started yet")
11
+ for _ in range(retries):
12
+ res = get_name(random_node(rpc_urls), address, timeout=timeout, proxy=random_proxy(proxies))
13
+ if res.is_ok():
14
+ return res
15
+ return res
16
+
17
+
18
+ def get_name(rpc_url: str, address: str, timeout: float = 5, proxy: str | None = None) -> Result[str | None]:
19
+ try:
20
+ w3 = get_w3(rpc_url, timeout=timeout, proxy=proxy)
21
+ return Ok(w3.ens.name(w3.to_checksum_address(address))) # type: ignore[union-attr]
22
+ except Exception as e:
23
+ return Err(e)
@@ -186,7 +186,7 @@ def log_topic_to_address(topic: HexBytes | str) -> str:
186
186
  return result
187
187
 
188
188
 
189
- def get_w3(rpc_url: str, timeout: int | None = None, proxy: str | None = None) -> Web3:
189
+ def get_w3(rpc_url: str, timeout: float | None = None, proxy: str | None = None) -> Web3:
190
190
  request_kwargs: dict[str, object] = {"timeout": timeout}
191
191
  if proxy:
192
192
  request_kwargs["proxies"] = {"http": proxy, "https": proxy}
@@ -0,0 +1,13 @@
1
+ from mm_std import Ok
2
+
3
+ from mm_eth import ens
4
+
5
+
6
+ def test_get_name_exists(infura):
7
+ address = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
8
+ assert ens.get_name(infura(), address) == Ok("vitalik.eth")
9
+
10
+
11
+ def test_get_name_non_exists(infura):
12
+ address = "0x743997F620846ab4CE946CBe3f5e5b5c51921D6E" # random empty address
13
+ assert ens.get_name(infura(), address) == Ok(None)
@@ -1,4 +1,5 @@
1
1
  version = 1
2
+ revision = 1
2
3
  requires-python = ">=3.12"
3
4
 
4
5
  [[package]]
@@ -102,7 +103,7 @@ wheels = [
102
103
 
103
104
  [[package]]
104
105
  name = "bandit"
105
- version = "1.8.2"
106
+ version = "1.8.3"
106
107
  source = { registry = "https://pypi.org/simple" }
107
108
  dependencies = [
108
109
  { name = "colorama", marker = "sys_platform == 'win32'" },
@@ -110,9 +111,9 @@ dependencies = [
110
111
  { name = "rich" },
111
112
  { name = "stevedore" },
112
113
  ]
113
- sdist = { url = "https://files.pythonhosted.org/packages/9b/e2/c229cdb4eefc124e5b77ac2557eb0a3cb5b9fc89bc465dd2b8dc1033dbb8/bandit-1.8.2.tar.gz", hash = "sha256:e00ad5a6bc676c0954669fe13818024d66b70e42cf5adb971480cf3b671e835f", size = 4228832 }
114
+ sdist = { url = "https://files.pythonhosted.org/packages/1a/a5/144a45f8e67df9d66c3bc3f7e69a39537db8bff1189ab7cff4e9459215da/bandit-1.8.3.tar.gz", hash = "sha256:f5847beb654d309422985c36644649924e0ea4425c76dec2e89110b87506193a", size = 4232005 }
114
115
  wheels = [
115
- { url = "https://files.pythonhosted.org/packages/1c/c1/991a7a1404626558cc7db0cc34243e13e5e336eba053bf6979e9fd6006f7/bandit-1.8.2-py3-none-any.whl", hash = "sha256:df6146ad73dd30e8cbda4e29689ddda48364e36ff655dbfc86998401fcf1721f", size = 127049 },
116
+ { url = "https://files.pythonhosted.org/packages/88/85/db74b9233e0aa27ec96891045c5e920a64dd5cbccd50f8e64e9460f48d35/bandit-1.8.3-py3-none-any.whl", hash = "sha256:28f04dc0d258e1dd0f99dee8eefa13d1cb5e3fde1a5ab0c523971f97b289bcd8", size = 129078 },
116
117
  ]
117
118
 
118
119
  [[package]]
@@ -729,10 +730,11 @@ wheels = [
729
730
 
730
731
  [[package]]
731
732
  name = "mm-eth"
732
- version = "0.5.4"
733
+ version = "0.5.6"
733
734
  source = { editable = "." }
734
735
  dependencies = [
735
736
  { name = "mm-crypto-utils" },
737
+ { name = "requests", extra = ["socks"] },
736
738
  { name = "typer" },
737
739
  { name = "web3" },
738
740
  { name = "websocket-client" },
@@ -752,19 +754,20 @@ dev = [
752
754
  [package.metadata]
753
755
  requires-dist = [
754
756
  { name = "mm-crypto-utils", specifier = ">=0.2.6" },
755
- { name = "typer", specifier = ">=0.15.1" },
757
+ { name = "requests", extras = ["socks"], specifier = ">=2.32.0" },
758
+ { name = "typer", specifier = ">=0.15.2" },
756
759
  { name = "web3", specifier = "~=7.8.0" },
757
760
  { name = "websocket-client", specifier = "~=1.8.0" },
758
761
  ]
759
762
 
760
763
  [package.metadata.requires-dev]
761
764
  dev = [
762
- { name = "bandit", specifier = "~=1.8.2" },
765
+ { name = "bandit", specifier = "~=1.8.3" },
763
766
  { name = "mypy", specifier = "~=1.15.0" },
764
767
  { name = "pip-audit", specifier = "~=2.8.0" },
765
768
  { name = "pytest", specifier = "~=8.3.4" },
766
769
  { name = "pytest-xdist", specifier = "~=3.6.1" },
767
- { name = "ruff", specifier = "~=0.9.6" },
770
+ { name = "ruff", specifier = "~=0.9.9" },
768
771
  { name = "types-pyyaml", specifier = ">=6.0.12.20241230" },
769
772
  ]
770
773
 
@@ -1162,6 +1165,15 @@ wheels = [
1162
1165
  { url = "https://files.pythonhosted.org/packages/be/ec/2eb3cd785efd67806c46c13a17339708ddc346cbb684eade7a6e6f79536a/pyparsing-3.2.0-py3-none-any.whl", hash = "sha256:93d9577b88da0bbea8cc8334ee8b918ed014968fd2ec383e868fb8afb1ccef84", size = 106921 },
1163
1166
  ]
1164
1167
 
1168
+ [[package]]
1169
+ name = "pysocks"
1170
+ version = "1.7.1"
1171
+ source = { registry = "https://pypi.org/simple" }
1172
+ sdist = { url = "https://files.pythonhosted.org/packages/bd/11/293dd436aea955d45fc4e8a35b6ae7270f5b8e00b53cf6c024c83b657a11/PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0", size = 284429 }
1173
+ wheels = [
1174
+ { url = "https://files.pythonhosted.org/packages/8d/59/b4572118e098ac8e46e399a1dd0f2d85403ce8bbaad9ec79373ed6badaf9/PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5", size = 16725 },
1175
+ ]
1176
+
1165
1177
  [[package]]
1166
1178
  name = "pytest"
1167
1179
  version = "8.3.4"
@@ -1300,6 +1312,11 @@ wheels = [
1300
1312
  { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 },
1301
1313
  ]
1302
1314
 
1315
+ [package.optional-dependencies]
1316
+ socks = [
1317
+ { name = "pysocks" },
1318
+ ]
1319
+
1303
1320
  [[package]]
1304
1321
  name = "rich"
1305
1322
  version = "13.9.4"
@@ -1327,27 +1344,27 @@ wheels = [
1327
1344
 
1328
1345
  [[package]]
1329
1346
  name = "ruff"
1330
- version = "0.9.6"
1331
- source = { registry = "https://pypi.org/simple" }
1332
- sdist = { url = "https://files.pythonhosted.org/packages/2a/e1/e265aba384343dd8ddd3083f5e33536cd17e1566c41453a5517b5dd443be/ruff-0.9.6.tar.gz", hash = "sha256:81761592f72b620ec8fa1068a6fd00e98a5ebee342a3642efd84454f3031dca9", size = 3639454 }
1333
- wheels = [
1334
- { url = "https://files.pythonhosted.org/packages/76/e3/3d2c022e687e18cf5d93d6bfa2722d46afc64eaa438c7fbbdd603b3597be/ruff-0.9.6-py3-none-linux_armv6l.whl", hash = "sha256:2f218f356dd2d995839f1941322ff021c72a492c470f0b26a34f844c29cdf5ba", size = 11714128 },
1335
- { url = "https://files.pythonhosted.org/packages/e1/22/aff073b70f95c052e5c58153cba735748c9e70107a77d03420d7850710a0/ruff-0.9.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b908ff4df65dad7b251c9968a2e4560836d8f5487c2f0cc238321ed951ea0504", size = 11682539 },
1336
- { url = "https://files.pythonhosted.org/packages/75/a7/f5b7390afd98a7918582a3d256cd3e78ba0a26165a467c1820084587cbf9/ruff-0.9.6-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b109c0ad2ececf42e75fa99dc4043ff72a357436bb171900714a9ea581ddef83", size = 11132512 },
1337
- { url = "https://files.pythonhosted.org/packages/a6/e3/45de13ef65047fea2e33f7e573d848206e15c715e5cd56095589a7733d04/ruff-0.9.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1de4367cca3dac99bcbd15c161404e849bb0bfd543664db39232648dc00112dc", size = 11929275 },
1338
- { url = "https://files.pythonhosted.org/packages/7d/f2/23d04cd6c43b2e641ab961ade8d0b5edb212ecebd112506188c91f2a6e6c/ruff-0.9.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac3ee4d7c2c92ddfdaedf0bf31b2b176fa7aa8950efc454628d477394d35638b", size = 11466502 },
1339
- { url = "https://files.pythonhosted.org/packages/b5/6f/3a8cf166f2d7f1627dd2201e6cbc4cb81f8b7d58099348f0c1ff7b733792/ruff-0.9.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5dc1edd1775270e6aa2386119aea692039781429f0be1e0949ea5884e011aa8e", size = 12676364 },
1340
- { url = "https://files.pythonhosted.org/packages/f5/c4/db52e2189983c70114ff2b7e3997e48c8318af44fe83e1ce9517570a50c6/ruff-0.9.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:4a091729086dffa4bd070aa5dab7e39cc6b9d62eb2bef8f3d91172d30d599666", size = 13335518 },
1341
- { url = "https://files.pythonhosted.org/packages/66/44/545f8a4d136830f08f4d24324e7db957c5374bf3a3f7a6c0bc7be4623a37/ruff-0.9.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1bbc6808bf7b15796cef0815e1dfb796fbd383e7dbd4334709642649625e7c5", size = 12823287 },
1342
- { url = "https://files.pythonhosted.org/packages/c5/26/8208ef9ee7431032c143649a9967c3ae1aae4257d95e6f8519f07309aa66/ruff-0.9.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:589d1d9f25b5754ff230dce914a174a7c951a85a4e9270613a2b74231fdac2f5", size = 14592374 },
1343
- { url = "https://files.pythonhosted.org/packages/31/70/e917781e55ff39c5b5208bda384fd397ffd76605e68544d71a7e40944945/ruff-0.9.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc61dd5131742e21103fbbdcad683a8813be0e3c204472d520d9a5021ca8b217", size = 12500173 },
1344
- { url = "https://files.pythonhosted.org/packages/84/f5/e4ddee07660f5a9622a9c2b639afd8f3104988dc4f6ba0b73ffacffa9a8c/ruff-0.9.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:5e2d9126161d0357e5c8f30b0bd6168d2c3872372f14481136d13de9937f79b6", size = 11906555 },
1345
- { url = "https://files.pythonhosted.org/packages/f1/2b/6ff2fe383667075eef8656b9892e73dd9b119b5e3add51298628b87f6429/ruff-0.9.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:68660eab1a8e65babb5229a1f97b46e3120923757a68b5413d8561f8a85d4897", size = 11538958 },
1346
- { url = "https://files.pythonhosted.org/packages/3c/db/98e59e90de45d1eb46649151c10a062d5707b5b7f76f64eb1e29edf6ebb1/ruff-0.9.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c4cae6c4cc7b9b4017c71114115db0445b00a16de3bcde0946273e8392856f08", size = 12117247 },
1347
- { url = "https://files.pythonhosted.org/packages/ec/bc/54e38f6d219013a9204a5a2015c09e7a8c36cedcd50a4b01ac69a550b9d9/ruff-0.9.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:19f505b643228b417c1111a2a536424ddde0db4ef9023b9e04a46ed8a1cb4656", size = 12554647 },
1348
- { url = "https://files.pythonhosted.org/packages/a5/7d/7b461ab0e2404293c0627125bb70ac642c2e8d55bf590f6fce85f508f1b2/ruff-0.9.6-py3-none-win32.whl", hash = "sha256:194d8402bceef1b31164909540a597e0d913c0e4952015a5b40e28c146121b5d", size = 9949214 },
1349
- { url = "https://files.pythonhosted.org/packages/ee/30/c3cee10f915ed75a5c29c1e57311282d1a15855551a64795c1b2bbe5cf37/ruff-0.9.6-py3-none-win_amd64.whl", hash = "sha256:03482d5c09d90d4ee3f40d97578423698ad895c87314c4de39ed2af945633caa", size = 10999914 },
1350
- { url = "https://files.pythonhosted.org/packages/e8/a8/d71f44b93e3aa86ae232af1f2126ca7b95c0f515ec135462b3e1f351441c/ruff-0.9.6-py3-none-win_arm64.whl", hash = "sha256:0e2bb706a2be7ddfea4a4af918562fdc1bcb16df255e5fa595bbd800ce322a5a", size = 10177499 },
1347
+ version = "0.9.9"
1348
+ source = { registry = "https://pypi.org/simple" }
1349
+ sdist = { url = "https://files.pythonhosted.org/packages/6f/c3/418441a8170e8d53d05c0b9dad69760dbc7b8a12c10dbe6db1e1205d2377/ruff-0.9.9.tar.gz", hash = "sha256:0062ed13f22173e85f8f7056f9a24016e692efeea8704d1a5e8011b8aa850933", size = 3717448 }
1350
+ wheels = [
1351
+ { url = "https://files.pythonhosted.org/packages/bc/c3/2c4afa9ba467555d074b146d9aed0633a56ccdb900839fb008295d037b89/ruff-0.9.9-py3-none-linux_armv6l.whl", hash = "sha256:628abb5ea10345e53dff55b167595a159d3e174d6720bf19761f5e467e68d367", size = 10027252 },
1352
+ { url = "https://files.pythonhosted.org/packages/33/d1/439e58487cf9eac26378332e25e7d5ade4b800ce1eec7dc2cfc9b0d7ca96/ruff-0.9.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b6cd1428e834b35d7493354723543b28cc11dc14d1ce19b685f6e68e07c05ec7", size = 10840721 },
1353
+ { url = "https://files.pythonhosted.org/packages/50/44/fead822c38281ba0122f1b76b460488a175a9bd48b130650a6fb6dbcbcf9/ruff-0.9.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5ee162652869120ad260670706f3cd36cd3f32b0c651f02b6da142652c54941d", size = 10161439 },
1354
+ { url = "https://files.pythonhosted.org/packages/11/ae/d404a2ab8e61ddf6342e09cc6b7f7846cce6b243e45c2007dbe0ca928a5d/ruff-0.9.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3aa0f6b75082c9be1ec5a1db78c6d4b02e2375c3068438241dc19c7c306cc61a", size = 10336264 },
1355
+ { url = "https://files.pythonhosted.org/packages/6a/4e/7c268aa7d84cd709fb6f046b8972313142cffb40dfff1d2515c5e6288d54/ruff-0.9.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:584cc66e89fb5f80f84b05133dd677a17cdd86901d6479712c96597a3f28e7fe", size = 9908774 },
1356
+ { url = "https://files.pythonhosted.org/packages/cc/26/c618a878367ef1b76270fd027ca93692657d3f6122b84ba48911ef5f2edc/ruff-0.9.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf3369325761a35aba75cd5c55ba1b5eb17d772f12ab168fbfac54be85cf18c", size = 11428127 },
1357
+ { url = "https://files.pythonhosted.org/packages/d7/9a/c5588a93d9bfed29f565baf193fe802fa676a0c837938137ea6cf0576d8c/ruff-0.9.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3403a53a32a90ce929aa2f758542aca9234befa133e29f4933dcef28a24317be", size = 12133187 },
1358
+ { url = "https://files.pythonhosted.org/packages/3e/ff/e7980a7704a60905ed7e156a8d73f604c846d9bd87deda9cabfa6cba073a/ruff-0.9.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:18454e7fa4e4d72cffe28a37cf6a73cb2594f81ec9f4eca31a0aaa9ccdfb1590", size = 11602937 },
1359
+ { url = "https://files.pythonhosted.org/packages/24/78/3690444ad9e3cab5c11abe56554c35f005b51d1d118b429765249095269f/ruff-0.9.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fadfe2c88724c9617339f62319ed40dcdadadf2888d5afb88bf3adee7b35bfb", size = 13771698 },
1360
+ { url = "https://files.pythonhosted.org/packages/6e/bf/e477c2faf86abe3988e0b5fd22a7f3520e820b2ee335131aca2e16120038/ruff-0.9.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6df104d08c442a1aabcfd254279b8cc1e2cbf41a605aa3e26610ba1ec4acf0b0", size = 11249026 },
1361
+ { url = "https://files.pythonhosted.org/packages/f7/82/cdaffd59e5a8cb5b14c408c73d7a555a577cf6645faaf83e52fe99521715/ruff-0.9.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d7c62939daf5b2a15af48abbd23bea1efdd38c312d6e7c4cedf5a24e03207e17", size = 10220432 },
1362
+ { url = "https://files.pythonhosted.org/packages/fe/a4/2507d0026225efa5d4412b6e294dfe54725a78652a5c7e29e6bd0fc492f3/ruff-0.9.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:9494ba82a37a4b81b6a798076e4a3251c13243fc37967e998efe4cce58c8a8d1", size = 9874602 },
1363
+ { url = "https://files.pythonhosted.org/packages/d5/be/f3aab1813846b476c4bcffe052d232244979c3cd99d751c17afb530ca8e4/ruff-0.9.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:4efd7a96ed6d36ef011ae798bf794c5501a514be369296c672dab7921087fa57", size = 10851212 },
1364
+ { url = "https://files.pythonhosted.org/packages/8b/45/8e5fd559bea0d2f57c4e12bf197a2fade2fac465aa518284f157dfbca92b/ruff-0.9.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:ab90a7944c5a1296f3ecb08d1cbf8c2da34c7e68114b1271a431a3ad30cb660e", size = 11327490 },
1365
+ { url = "https://files.pythonhosted.org/packages/42/55/e6c90f13880aeef327746052907e7e930681f26a164fe130ddac28b08269/ruff-0.9.9-py3-none-win32.whl", hash = "sha256:6b4c376d929c25ecd6d87e182a230fa4377b8e5125a4ff52d506ee8c087153c1", size = 10227912 },
1366
+ { url = "https://files.pythonhosted.org/packages/35/b2/da925693cb82a1208aa34966c0f36cb222baca94e729dd22a587bc22d0f3/ruff-0.9.9-py3-none-win_amd64.whl", hash = "sha256:837982ea24091d4c1700ddb2f63b7070e5baec508e43b01de013dc7eff974ff1", size = 11355632 },
1367
+ { url = "https://files.pythonhosted.org/packages/31/d8/de873d1c1b020d668d8ec9855d390764cb90cf8f6486c0983da52be8b7b7/ruff-0.9.9-py3-none-win_arm64.whl", hash = "sha256:3ac78f127517209fe6d96ab00f3ba97cafe38718b23b1db3e96d8b2d39e37ddf", size = 10435860 },
1351
1368
  ]
1352
1369
 
1353
1370
  [[package]]
@@ -1418,7 +1435,7 @@ wheels = [
1418
1435
 
1419
1436
  [[package]]
1420
1437
  name = "typer"
1421
- version = "0.15.1"
1438
+ version = "0.15.2"
1422
1439
  source = { registry = "https://pypi.org/simple" }
1423
1440
  dependencies = [
1424
1441
  { name = "click" },
@@ -1426,9 +1443,9 @@ dependencies = [
1426
1443
  { name = "shellingham" },
1427
1444
  { name = "typing-extensions" },
1428
1445
  ]
1429
- sdist = { url = "https://files.pythonhosted.org/packages/cb/ce/dca7b219718afd37a0068f4f2530a727c2b74a8b6e8e0c0080a4c0de4fcd/typer-0.15.1.tar.gz", hash = "sha256:a0588c0a7fa68a1978a069818657778f86abe6ff5ea6abf472f940a08bfe4f0a", size = 99789 }
1446
+ sdist = { url = "https://files.pythonhosted.org/packages/8b/6f/3991f0f1c7fcb2df31aef28e0594d8d54b05393a0e4e34c65e475c2a5d41/typer-0.15.2.tar.gz", hash = "sha256:ab2fab47533a813c49fe1f16b1a370fd5819099c00b119e0633df65f22144ba5", size = 100711 }
1430
1447
  wheels = [
1431
- { url = "https://files.pythonhosted.org/packages/d0/cc/0a838ba5ca64dc832aa43f727bd586309846b0ffb2ce52422543e6075e8a/typer-0.15.1-py3-none-any.whl", hash = "sha256:7994fb7b8155b64d3402518560648446072864beefd44aa2dc36972a5972e847", size = 44908 },
1448
+ { url = "https://files.pythonhosted.org/packages/7f/fc/5b29fea8cee020515ca82cc68e3b8e1e34bb19a3535ad854cac9257b414c/typer-0.15.2-py3-none-any.whl", hash = "sha256:46a499c6107d645a9c13f7ee46c5d5096cae6f5fc57dd11eccbbb9ae3e44ddfc", size = 45061 },
1432
1449
  ]
1433
1450
 
1434
1451
  [[package]]
@@ -1,16 +0,0 @@
1
- from mm_crypto_utils import Nodes, Proxies, random_node, random_proxy
2
- from mm_std import Err, Ok, Result
3
-
4
- from mm_eth.utils import get_w3
5
-
6
-
7
- def get_name(nodes: Nodes, address: str, timeout: int = 10, proxies: Proxies = None, attempts: int = 3) -> Result[str]:
8
- result = Err("not_started")
9
- for _ in range(attempts):
10
- try:
11
- w3 = get_w3(random_node(nodes), timeout=timeout, proxy=random_proxy(proxies))
12
- res = w3.ens.name(w3.to_checksum_address(address)) # type: ignore[union-attr]
13
- return Ok(res or "")
14
- except Exception as e:
15
- result = Err(e)
16
- return result
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