eth-portfolio-temp 0.2.11__cp310-cp310-macosx_11_0_arm64.whl → 0.2.16__cp310-cp310-macosx_11_0_arm64.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.
Binary file
@@ -97,6 +97,7 @@ shitcoins: Final = {
97
97
  "0x0e1CD6d2715432e4DBedFE969b0Eb2867FF61d5b",
98
98
  "0x9aE357521153FB07bE6F5792CE7a49752638fbb7",
99
99
  # Generally looks like shit
100
+ "0x5e43e50A3cB43Fb71eD2500bC847E8d25b8335f9",
100
101
  "0xE8ED1fca5af1c7dd46A3D5bbDFf7e99749D9e0aa",
101
102
  "0x00d0F0250364C431376cC64AADd3aa13c6A8998D",
102
103
  "0x256099A072ea5fd35eC134758440413095967109",
Binary file
@@ -1,5 +1,6 @@
1
1
  from functools import lru_cache
2
2
  from subprocess import CalledProcessError, check_output
3
+ from typing import List
3
4
 
4
5
 
5
6
  def check_docker() -> None:
@@ -9,48 +10,58 @@ def check_docker() -> None:
9
10
  Raises:
10
11
  RuntimeError: If docker is not installed.
11
12
  """
13
+ print(" 🔍 checking your computer for docker")
12
14
  try:
13
15
  check_output(["docker", "--version"])
14
- print("docker found!")
15
16
  except (CalledProcessError, FileNotFoundError):
16
- print("checking your computer for docker")
17
17
  raise RuntimeError(
18
18
  "Docker is not installed. You must install Docker before using dao-treasury."
19
19
  ) from None
20
+ else:
21
+ print(" ✔️ eth-portfolio found docker!")
20
22
 
21
23
 
22
- def check_docker_compose() -> None:
24
+ def check_docker_compose() -> List[str]:
23
25
  """
24
- Check that docker-compose is installed on the user's system.
26
+ Check that either `docker-compose` or `docker compose` is installed on the user's system.
27
+
28
+ Returns:
29
+ A valid compose command.
25
30
 
26
31
  Raises:
27
32
  RuntimeError: If docker-compose is not installed.
28
33
  """
29
- try:
30
- check_output(["docker-compose", "--version"])
31
- print("docker-compose found!")
32
- except (CalledProcessError, FileNotFoundError):
33
- print("checking your computer for docker-compose")
34
+ for cmd in ["docker-compose", "docker compose"]:
35
+ print(f" 🔍 checking your computer for {cmd}")
36
+
34
37
  try:
35
- check_output(["docker", "compose", "--version"])
36
- print("docker compose found!")
38
+ check_output([*cmd.split(" "), "--version"])
37
39
  except (CalledProcessError, FileNotFoundError):
38
- print("docker-compose not found, checking your computer for docker compose")
39
- raise RuntimeError(
40
- "Docker Compose is not installed. You must install Docker Compose before using dao-treasury."
41
- ) from None
40
+ print(f" ❌ {cmd} not found")
41
+ continue
42
+ else:
43
+ print(f" ✔️ eth-portfolio found {cmd}!")
44
+ return cmd.split(" ")
45
+
46
+ raise RuntimeError(
47
+ "Docker Compose is not installed. You must install Docker Compose before using dao-treasury."
48
+ ) from None
42
49
 
43
50
 
44
51
  @lru_cache(maxsize=None)
45
- def check_system() -> None:
52
+ def check_system() -> List[str]:
46
53
  """
47
54
  Check that docker and docker-compose is installed on the user's system.
48
55
 
56
+ Returns:
57
+ A valid compose command.
58
+
49
59
  Raises:
50
60
  RuntimeError: If docker-compose is not installed.
51
61
  """
62
+ print("eth-portfolio is checking for the required docker dependencies...")
52
63
  check_docker()
53
- check_docker_compose()
64
+ return check_docker_compose()
54
65
 
55
66
 
56
67
  __all__ = ["check_docker", "check_docker_compose", "check_system"]
@@ -3,7 +3,7 @@ networks:
3
3
 
4
4
  services:
5
5
  grafana:
6
- image: grafana/grafana:12.2.0
6
+ image: grafana/grafana:12.2.1
7
7
  ports:
8
8
  - 127.0.0.1:${GRAFANA_PORT:-3000}:3000
9
9
  environment:
@@ -47,7 +47,7 @@ services:
47
47
  restart: always
48
48
 
49
49
  victoria-metrics:
50
- image: victoriametrics/victoria-metrics:v1.127.0
50
+ image: victoriametrics/victoria-metrics:v1.129.1
51
51
  volumes:
52
52
  - ~/.eth-portfolio/data/victoria/:/victoria-metrics-data
53
53
  command:
@@ -3,7 +3,7 @@ from functools import wraps
3
3
  from importlib import resources
4
4
  from os import path
5
5
  from subprocess import CalledProcessError, check_output
6
- from typing import Callable, Final, Iterable, List, Tuple, TypeVar
6
+ from typing import Callable, Final, Iterable, List, Literal, Tuple, TypeVar
7
7
 
8
8
  from typing_extensions import ParamSpec
9
9
 
@@ -12,33 +12,33 @@ from eth_portfolio_scripts.docker.check import check_system
12
12
 
13
13
  logger: Final = logging.getLogger(__name__)
14
14
 
15
- compose_file: Final = str(
15
+ COMPOSE_FILE: Final = str(
16
16
  resources.files("eth_portfolio_scripts").joinpath("docker/docker-compose.yaml")
17
17
  )
18
18
 
19
19
 
20
20
  def up(*services: str) -> None:
21
+ """Build and start the specified docker-compose services."""
21
22
  build(*services)
22
- print("starting the infra containers...")
23
+ _print_notice("starting", services)
23
24
  _exec_command(["up", "-d", *services])
24
25
 
25
26
 
26
27
  def down() -> None:
28
+ """Stop all of eth-portfolio's docker-compose services."""
27
29
  _exec_command(["down"])
28
30
 
29
31
 
30
32
  def build(*services: str) -> None:
31
- print("building the grafana containers")
33
+ """Build the specified docker-compose services."""
34
+ _print_notice("building", services)
32
35
  _exec_command(["build", *services])
33
36
 
34
37
 
35
- def stop(container_name: str) -> None:
36
- """
37
- Stop the specified container if it is running.
38
- Defaults to stopping the 'renderer' container.
39
- """
40
- print(f"stopping the {container_name} container...")
41
- _exec_command(["stop", container_name])
38
+ def stop(*services: str) -> None:
39
+ """Stop the specified docker-compose services, if running."""
40
+ _print_notice("stopping", services)
41
+ _exec_command(["stop", *services])
42
42
 
43
43
 
44
44
  _P = ParamSpec("_P")
@@ -67,12 +67,30 @@ def ensure_containers(fn: Callable[_P, _T]) -> Callable[_P, _T]:
67
67
  return compose_wrap
68
68
 
69
69
 
70
- def _exec_command(command: List[str], *, compose_options: Tuple[str, ...] = ()) -> None:
71
- check_system()
70
+ def _print_notice(
71
+ doing: Literal["building", "starting", "stopping"],
72
+ services: Tuple[str, ...],
73
+ ) -> None:
74
+ if len(services) == 1:
75
+ container = services[0]
76
+ print(f"{doing} the {container} container")
77
+ elif len(services) == 2:
78
+ first, second = services
79
+ print(f"{doing} the {first} and {second} containers")
80
+ else:
81
+ *all_but_last, last = services
82
+ print(f"{doing} the {', '.join(all_but_last)}, and {last} containers")
83
+
84
+
85
+ def _exec_command(
86
+ command: List[str],
87
+ *,
88
+ compose_file: str = COMPOSE_FILE,
89
+ compose_options: Tuple[str, ...] = (),
90
+ ) -> None:
91
+ compose = check_system()
92
+ full_command = [*compose, *compose_options, "-f", compose_file, *command]
72
93
  try:
73
- check_output(["docker", "compose", *compose_options, "-f", compose_file, *command])
94
+ check_output(full_command)
74
95
  except (CalledProcessError, FileNotFoundError) as e:
75
- try:
76
- check_output(["docker-compose", *compose_options, "-f", compose_file, *command])
77
- except (CalledProcessError, FileNotFoundError) as _e:
78
- raise RuntimeError(f"Error occurred while running {' '.join(command)}: {_e}") from _e
96
+ raise RuntimeError(f"Error occurred while running `{' '.join(full_command)}`: {e}") from e
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eth_portfolio_temp
3
- Version: 0.2.11
3
+ Version: 0.2.16
4
4
  Summary: eth-portfolio makes it easy to analyze your portfolio.
5
5
  Home-page: https://github.com/BobTheBuidler/eth-portfolio
6
6
  Author: BobTheBuidler
@@ -12,6 +12,7 @@ Requires-Dist: eth-brownie<1.23,>=1.22.0.dev0
12
12
  Requires-Dist: eth_retry<1,>=0.3.4
13
13
  Requires-Dist: evmspec>=0.4.1
14
14
  Requires-Dist: ez-a-sync>=0.32.27
15
+ Requires-Dist: faster-async-lru==2.0.5
15
16
  Requires-Dist: faster-eth-utils
16
17
  Requires-Dist: numpy<3
17
18
  Requires-Dist: pandas<3,>=1.4.3
@@ -1,39 +1,39 @@
1
- eth_portfolio__mypyc.cpython-310-darwin.so,sha256=E_anZe0Vmnv5CdqCM3TYGflucSBtA2wjE8Fcx3JkrT8,693032
2
- eth_portfolio_temp-0.2.11.dist-info/RECORD,,
3
- eth_portfolio_temp-0.2.11.dist-info/WHEEL,sha256=11kMdE9gzbsaQG30fRcsAYxBLEVRsqJo098Y5iL60Xo,136
4
- eth_portfolio_temp-0.2.11.dist-info/entry_points.txt,sha256=yqoC6X3LU1NA_-oJ6mloEYEPNmS-0hPS9OtEwgIeDGU,66
5
- eth_portfolio_temp-0.2.11.dist-info/top_level.txt,sha256=4MlbY-Yj8oGBGL8piXiO4SOpk2gZFF9ZXVTObTZOzqM,57
6
- eth_portfolio_temp-0.2.11.dist-info/METADATA,sha256=5yX676JOgUY-l57B5Yj_4z6CjuxzoSFrbsR_IJ177wY,775
1
+ eth_portfolio__mypyc.cpython-310-darwin.so,sha256=sHzVbvmjD1W5GialEDK34jAmo1FQVlAFoJ55NULUriM,694568
2
+ eth_portfolio_temp-0.2.16.dist-info/RECORD,,
3
+ eth_portfolio_temp-0.2.16.dist-info/WHEEL,sha256=11kMdE9gzbsaQG30fRcsAYxBLEVRsqJo098Y5iL60Xo,136
4
+ eth_portfolio_temp-0.2.16.dist-info/entry_points.txt,sha256=yqoC6X3LU1NA_-oJ6mloEYEPNmS-0hPS9OtEwgIeDGU,66
5
+ eth_portfolio_temp-0.2.16.dist-info/top_level.txt,sha256=4MlbY-Yj8oGBGL8piXiO4SOpk2gZFF9ZXVTObTZOzqM,57
6
+ eth_portfolio_temp-0.2.16.dist-info/METADATA,sha256=X95Jf9P3LsjGll4sD_H9ibkF4HtBzr7OzBD0_-zoF1Q,814
7
7
  eth_portfolio/address.py,sha256=LvBh4Vp2DBC3gQ0WD-TZ6jfe9s6FZbET1krYG9_KMAA,14139
8
8
  eth_portfolio/_cache.py,sha256=IOeMXvMgOlEEk01yHP0RARRZXyonuKXUNZbNLFM_KBU,4805
9
- eth_portfolio/_stableish.cpython-310-darwin.so,sha256=LHz-7Jl9JWLKut7o6RF18wx301AMnf4eU0pFfBv3pl0,50656
9
+ eth_portfolio/_stableish.cpython-310-darwin.so,sha256=xArw1kQHaYwl7c7LaFYZvR1k1Ob1T720RmgqcHBMfvY,50656
10
10
  eth_portfolio/_argspec.py,sha256=VzUZkbDkmOSgNUZBGbGblqtxBfDcmBAB89dY2OX0j-U,1595
11
11
  eth_portfolio/_submodules.py,sha256=J8ht9bAAvblUXqwOGN7UIOXUPxrTiq7m1RWiB0-ObaE,2190
12
12
  eth_portfolio/constants.py,sha256=LS9H2P_Qfcreb6z6NknErxvq6OAtIHbHykXy0spol9E,3659
13
13
  eth_portfolio/__init__.py,sha256=0sO4cSJaLYwJfnfVOJRFw7p5_Lzhsr95YuJ1aNQM83A,500
14
- eth_portfolio/_argspec.cpython-310-darwin.so,sha256=3sbwJ064mcjgrK5v5c-kzydWePM0kyhHUHi0VrXe6iA,50640
14
+ eth_portfolio/_argspec.cpython-310-darwin.so,sha256=D76B2sV6youNM7wPUZKuTisbfgkHQRCQtZIKVzicCwg,50640
15
15
  eth_portfolio/_decimal.py,sha256=tYS0miNoQYZguy0yd1bb3bf49l9F3YICyN8ov6r7VBs,4846
16
- eth_portfolio/_config.cpython-310-darwin.so,sha256=F4OtYmadRd3eozC833oY5T3woihF32v30Vd9Yo_JIW4,50640
16
+ eth_portfolio/_config.cpython-310-darwin.so,sha256=-9kB79WuafiIOyyb8HJ2UC8fNZWT8sIoYD4m7fJ9FjU,50640
17
17
  eth_portfolio/buckets.py,sha256=30Tv5Tq-IL6NsACKbxp7hge84Q-upWsiWGdDTKkXeqE,6702
18
- eth_portfolio/_shitcoins.cpython-310-darwin.so,sha256=Qx--L02CqjnNkT8vZrVaK3fP6R1MsYP8RR1BwyIMPEo,50656
18
+ eth_portfolio/_shitcoins.cpython-310-darwin.so,sha256=n3kuiPgQMNigY3-SNlSjaI7diC3-JS28preWfLuAp24,50656
19
19
  eth_portfolio/_decorators.py,sha256=_ZSurUFEIwZRiMFMhLcIXkD-Ey1CqfBqGaE24hLzOuA,2815
20
20
  eth_portfolio/_stableish.py,sha256=VTv69Q91AHxbNbbY0LB4PFwKEseHdkE4_6fLPKH1uW0,2021
21
21
  eth_portfolio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- eth_portfolio/_shitcoins.py,sha256=Sd9HKq7yC5GR0lcjO-gwiIEOrXqBMQwMgKyjNL6CHpU,16967
23
- eth_portfolio/constants.cpython-310-darwin.so,sha256=nfHrRvqj2U4gZfSwqJyLsEmG8bLZrlPo9nANAFh2OV0,50656
22
+ eth_portfolio/_shitcoins.py,sha256=5OsOC6dYXG6MA2V1hajdiHRfXAX4eG94Wzmh9Dh_5IM,17021
23
+ eth_portfolio/constants.cpython-310-darwin.so,sha256=zeYMepS-mhZ5Y0pOoGsL6w-1-fAz79ZFixAUbf3tsUU,50656
24
24
  eth_portfolio/_config.py,sha256=mw-OA3M8rUA2hqy5wNt30AZRHkWFgR8K2sJg0o5Baxg,98
25
25
  eth_portfolio/_exceptions.py,sha256=bw3IdXhqrWxeFqYLm7pJZqRHKZas_cCg8A5Ih1WQEqQ,2433
26
26
  eth_portfolio/portfolio.py,sha256=MP_0Y6fXw8TNoyoFCPiu-MUA44jnMm0L_33gec6MjKU,24248
27
27
  eth_portfolio/_utils.py,sha256=8403ioVA6VX4XaF56CDI9IA4ilTZUf_TrdlQ78chXbQ,7661
28
- eth_portfolio/_loaders/_nonce.cpython-310-darwin.so,sha256=5s2CZxgQT6qthyK3vEGxfzVXsXOzJlD0ZhUf90E_XNs,50656
28
+ eth_portfolio/_loaders/_nonce.cpython-310-darwin.so,sha256=a0H7n8YDoo52eOddx_qH7SXcyrjvNYAuazz_ZBIe0mY,50656
29
29
  eth_portfolio/_loaders/transaction.py,sha256=XLIziLy3YnBPP0E639tQcZfT2Xy4I5VCz6jnfn_C4mE,9153
30
30
  eth_portfolio/_loaders/__init__.py,sha256=lb45_0ak32Z7N3-Nx1CAoRKiZ1_w-_YGbmSCNuunro8,1702
31
31
  eth_portfolio/_loaders/_nonce.py,sha256=cx0EjTAhVU2EudMKSO-7-t1jl3y4dYn6as4XiY6KyS8,6285
32
32
  eth_portfolio/_loaders/utils.py,sha256=aoGgWl9ra9F-qb0wA-sX3qelUNGI-fGvM90297L7xWM,2265
33
- eth_portfolio/_loaders/balances.cpython-310-darwin.so,sha256=nvtMwlpI4XHMtGNiThC5lT_IfDa9prUniO5KYJ8roPg,50656
33
+ eth_portfolio/_loaders/balances.cpython-310-darwin.so,sha256=DOCIRzl7JjLQaKKJPiGjoTKe_ezjt_ewqRHTsKHp6_A,50656
34
34
  eth_portfolio/_loaders/balances.py,sha256=BTWfkJIoSraUMe94Wuj8NPyg5EO0OByIjbXu7j6PZEo,3132
35
35
  eth_portfolio/_loaders/token_transfer.py,sha256=JupdQRdTPPsnqFhyRv7vt7IhoC2oEtypjxhEfpzTy9E,8531
36
- eth_portfolio/_loaders/utils.cpython-310-darwin.so,sha256=2ayUQww1avMkVrPR1cFSBvpcz3gg8Ol1k36IcLOFvBg,50648
36
+ eth_portfolio/_loaders/utils.cpython-310-darwin.so,sha256=5R3y35chu5XF2UJ84ZeT7zeN5SZhdEdzrpMoIqUp4n0,50648
37
37
  eth_portfolio/_ydb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  eth_portfolio/_ydb/token_transfers.py,sha256=aKaYSDnJehEcDb_c6YTmcKZxSfZ1jwHMXMOAmE8XH30,5152
39
39
  eth_portfolio/_db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -63,19 +63,19 @@ eth_portfolio/protocols/lending/unit.py,sha256=7oRvIkoKUm8IOnDv59pILSSJWFNNjwr4C
63
63
  eth_portfolio_scripts/_logging.py,sha256=B_rQMYt_1PhpwCOLBRpkKK6M1ljcF0wAIgqfPIsFUGU,354
64
64
  eth_portfolio_scripts/_args.py,sha256=k6J6XkRe1VuN1DiyGuXLCR7NBSvzH5jnVChfzodKuB8,656
65
65
  eth_portfolio_scripts/__init__.py,sha256=TC5c4WZdzSHhTIBYuwzrAyzFuGzBmHiDX_g6ghO09jQ,261
66
- eth_portfolio_scripts/balances.cpython-310-darwin.so,sha256=iS1ADXQCkspScU12QuV-qExwBk6dtv4apK15HF1U16Y,50656
66
+ eth_portfolio_scripts/balances.cpython-310-darwin.so,sha256=buMa_aNmSa_Vmszhc9kb2pkXuvZgoh0gLm6NoMa2_nE,50656
67
67
  eth_portfolio_scripts/_portfolio.py,sha256=umA-70yv2PGdHgoQVycknkSKk6QurB86FOXlIqBVY38,7139
68
68
  eth_portfolio_scripts/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
69
69
  eth_portfolio_scripts/balances.py,sha256=QvpOdXnH1V-tOuEmAOPxH3MrincDExlIP1eEJ2IG2Lk,1588
70
70
  eth_portfolio_scripts/main.py,sha256=crhObJ5P0B45zTBE2QOIOPYCxtJ8zhsciarcSZN1HHE,3685
71
71
  eth_portfolio_scripts/_utils.py,sha256=-JiZLpSa8P2_ZFXw1AfpVmTO6X65yPeVVdnrDpNFzNQ,3057
72
- eth_portfolio_scripts/docker/docker_compose.cpython-310-darwin.so,sha256=JGkZ6Ym6OpeXl8rN5JIEddpfzJQLhMTCwPB2vPdAH3E,50712
73
- eth_portfolio_scripts/docker/docker-compose.yaml,sha256=EWaPAppR1TzyMOucsMoGGh2uu9fXyzYTeO0IIU12fvc,1809
74
- eth_portfolio_scripts/docker/docker_compose.py,sha256=K7_Y_8NeN5s0pb9WUamgfi9OppjpaU0Mlz2nDzewcRA,2226
75
- eth_portfolio_scripts/docker/check.cpython-310-darwin.so,sha256=Z44NEmhLaklVJ0NL7koDzfBZr7KiRtln7u0GaoOYHRc,50664
76
- eth_portfolio_scripts/docker/check.py,sha256=E6_Ar4dr6HfVAgpwoDPcObIolikHKQr8VFkH01sOuIM,1745
72
+ eth_portfolio_scripts/docker/docker_compose.cpython-310-darwin.so,sha256=pH8zCeIqhRvyeQjP5ef9_lCKDIcRgyxvY_3iYYf0jXk,50712
73
+ eth_portfolio_scripts/docker/docker-compose.yaml,sha256=ZZo_aOYw-Wm2XDpqJpXjUKbtyqbOE5BWa1gR3h-8fUw,1809
74
+ eth_portfolio_scripts/docker/docker_compose.py,sha256=kVsx2FlRBAsYm8xyax3jvrk-IHKgiZvDqPdpQR8yHKI,2727
75
+ eth_portfolio_scripts/docker/check.cpython-310-darwin.so,sha256=gxscyc-lV-yq00qnKknVpPJCVBsZvEqeHo2jWNO4_jw,50664
76
+ eth_portfolio_scripts/docker/check.py,sha256=80fRi6WvxSQM1NxIhtM6vg6fLOjGuqq5F2mGCf4VSvc,1930
77
77
  eth_portfolio_scripts/docker/__init__.py,sha256=ZXSIYcjp94c0O9o39BDGWju3YrCMLl4gtov7YChc9Ig,393
78
- eth_portfolio_scripts/docker/__init__.cpython-310-darwin.so,sha256=7C56y2X-EjADo3LKrD0bcXHFGk8SvKHdu4agnQH2Kps,50656
78
+ eth_portfolio_scripts/docker/__init__.cpython-310-darwin.so,sha256=ueaBPNx0tefebQJ4qGZNS4unM80tWuBFk4NKCbbB5kU,50656
79
79
  eth_portfolio_scripts/docker/.grafana/datasources/datasources.yml,sha256=pBE_0Nh_J7d9Fiy3Xu6vuac_HWCBcFsJJSV-ryjQR1Y,188
80
80
  eth_portfolio_scripts/docker/.grafana/dashboards/dashboards.yaml,sha256=MynNDOk69IihoYdd2bL7j8CnRb2Co4gdqW7T4m6AaEU,202
81
81
  eth_portfolio_scripts/docker/.grafana/dashboards/Portfolio/Balances.json,sha256=dBmjogLJRuixCHWSs4ROE0_FXb-PUbqWBHEdLoP-1MU,68788