eth-portfolio-temp 0.2.11__cp310-cp310-macosx_11_0_arm64.whl → 0.3.1__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.
- eth_portfolio/_argspec.cpython-310-darwin.so +0 -0
- eth_portfolio/_config.cpython-310-darwin.so +0 -0
- eth_portfolio/_loaders/_nonce.cpython-310-darwin.so +0 -0
- eth_portfolio/_loaders/balances.cpython-310-darwin.so +0 -0
- eth_portfolio/_loaders/utils.cpython-310-darwin.so +0 -0
- eth_portfolio/_shitcoins.cpython-310-darwin.so +0 -0
- eth_portfolio/_shitcoins.py +8 -0
- eth_portfolio/_stableish.cpython-310-darwin.so +0 -0
- eth_portfolio/buckets.py +20 -2
- eth_portfolio/constants.cpython-310-darwin.so +0 -0
- eth_portfolio/constants.py +5 -0
- eth_portfolio__mypyc.cpython-310-darwin.so +0 -0
- eth_portfolio_scripts/_portfolio.py +18 -3
- eth_portfolio_scripts/balances.cpython-310-darwin.so +0 -0
- eth_portfolio_scripts/docker/__init__.cpython-310-darwin.so +0 -0
- eth_portfolio_scripts/docker/check.cpython-310-darwin.so +0 -0
- eth_portfolio_scripts/docker/check.py +28 -17
- eth_portfolio_scripts/docker/docker-compose.yaml +2 -2
- eth_portfolio_scripts/docker/docker_compose.cpython-310-darwin.so +0 -0
- eth_portfolio_scripts/docker/docker_compose.py +38 -18
- {eth_portfolio_temp-0.2.11.dist-info → eth_portfolio_temp-0.3.1.dist-info}/METADATA +2 -1
- {eth_portfolio_temp-0.2.11.dist-info → eth_portfolio_temp-0.3.1.dist-info}/RECORD +25 -25
- {eth_portfolio_temp-0.2.11.dist-info → eth_portfolio_temp-0.3.1.dist-info}/WHEEL +0 -0
- {eth_portfolio_temp-0.2.11.dist-info → eth_portfolio_temp-0.3.1.dist-info}/entry_points.txt +0 -0
- {eth_portfolio_temp-0.2.11.dist-info → eth_portfolio_temp-0.3.1.dist-info}/top_level.txt +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
eth_portfolio/_shitcoins.py
CHANGED
|
@@ -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",
|
|
@@ -185,6 +186,13 @@ shitcoins: Final = {
|
|
|
185
186
|
"0xc6a76f7ad66d0e6Ccd1AaAd6e7568c9bd55Dce62",
|
|
186
187
|
"0xB4d4334eB5a251cbE5cC7Afb0Ba26119aCE62281",
|
|
187
188
|
"0xE5c5AE39B98eFd9D3c9E0F2a5457D98fFA4b0b46",
|
|
189
|
+
"0x912033c6644008DD8438A5C07738a513f38Ded5D",
|
|
190
|
+
"0xffE49E3BB3725d499223611e571215029877A6Cf",
|
|
191
|
+
"0x7d593cC8E0b8ceBF645342AaFf5631e689FB5249",
|
|
192
|
+
"0x3E67A4D218061263202c1480ddB479080C59dd0E",
|
|
193
|
+
"0xac4607A2D8a2bfA721955a23D3F290B0E176612E",
|
|
194
|
+
"0x27ed436e67515C1dD33633537EEBd59207c51806",
|
|
195
|
+
"0x92b48cf18a947c66557CE4aC829D6DB012D11Aa5",
|
|
188
196
|
# Generally looks like shit (symbol ERC20)
|
|
189
197
|
"0x2adA6e459089292264133d8D7c85f6907423E444",
|
|
190
198
|
"0x356F680eE21c8CeFfA460c38D20A137F3D07D9af",
|
|
Binary file
|
eth_portfolio/buckets.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Any, Final, Optional, Set
|
|
2
|
+
from typing import Any, Final, Optional, Set, Dict
|
|
3
3
|
|
|
4
4
|
from a_sync import igather
|
|
5
5
|
from eth_typing import ChecksumAddress
|
|
@@ -23,7 +23,9 @@ SORT_AS_STABLES: Final = STABLECOINS.keys() | STABLEISH_COINS[CHAINID]
|
|
|
23
23
|
OTHER_LONG_TERM_ASSETS: Final[Set[ChecksumAddress]] = {}.get(CHAINID, set()) # type: ignore [call-overload]
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
async def get_token_bucket(
|
|
26
|
+
async def get_token_bucket(
|
|
27
|
+
token: AnyAddressType, custom_buckets: Optional[Dict[str, str]] = None
|
|
28
|
+
) -> str:
|
|
27
29
|
"""
|
|
28
30
|
Categorize a token into a specific bucket based on its type.
|
|
29
31
|
|
|
@@ -35,6 +37,10 @@ async def get_token_bucket(token: AnyAddressType) -> str:
|
|
|
35
37
|
|
|
36
38
|
Args:
|
|
37
39
|
token: The address of the token to categorize.
|
|
40
|
+
custom_buckets: Optional mapping of token_address (lowercase) to bucket name.
|
|
41
|
+
If provided, after unwrapping the token, the function will check if the
|
|
42
|
+
unwrapped token address (lowercased) is present in this mapping and, if so,
|
|
43
|
+
return the mapped bucket name instead of using the default categorization logic.
|
|
38
44
|
|
|
39
45
|
Returns:
|
|
40
46
|
A string representing the bucket category of the token.
|
|
@@ -54,6 +60,12 @@ async def get_token_bucket(token: AnyAddressType) -> str:
|
|
|
54
60
|
>>> await get_token_bucket("0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE")
|
|
55
61
|
'ETH'
|
|
56
62
|
|
|
63
|
+
Use a custom mapping:
|
|
64
|
+
|
|
65
|
+
>>> custom_buckets = {"0xA0b86991c6218b36c1d19d4a2e9eb0ce3606eb48": "My Stablecoin Bucket"}
|
|
66
|
+
>>> await get_token_bucket("0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", custom_buckets=custom_buckets)
|
|
67
|
+
'My Stablecoin Bucket'
|
|
68
|
+
|
|
57
69
|
See Also:
|
|
58
70
|
- :func:`_unwrap_token`
|
|
59
71
|
- :func:`_is_stable`
|
|
@@ -64,6 +76,12 @@ async def get_token_bucket(token: AnyAddressType) -> str:
|
|
|
64
76
|
except ContractNotVerified as e:
|
|
65
77
|
return "Other short term assets"
|
|
66
78
|
|
|
79
|
+
# Check custom mapping AFTER unwrapping
|
|
80
|
+
if custom_buckets:
|
|
81
|
+
custom_bucket = custom_buckets.get(str(token_address).lower())
|
|
82
|
+
if custom_bucket is not None:
|
|
83
|
+
return custom_bucket
|
|
84
|
+
|
|
67
85
|
if _is_stable(token_address):
|
|
68
86
|
return "Cash & cash equivalents"
|
|
69
87
|
if token_address in ETH_LIKE:
|
|
Binary file
|
eth_portfolio/constants.py
CHANGED
|
@@ -41,6 +41,10 @@ ETH_LIKE: Final = {
|
|
|
41
41
|
"0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", # cbETH
|
|
42
42
|
"0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee", # weETH
|
|
43
43
|
"0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84", # icETH
|
|
44
|
+
"0xAa6E8127831c9DE45ae56bB1b0d4D4Da6e5665BD", # ETH2x-FLI
|
|
45
|
+
"0xE72B141DF173b999AE7c1aDcbF60Cc9833Ce56a8", # ETH+
|
|
46
|
+
"0x3d1E5Cf16077F349e999d6b21A4f646e83Cd90c5", # dETH
|
|
47
|
+
"0x005F893EcD7bF9667195642f7649DA8163e23658", # dgnETH
|
|
44
48
|
},
|
|
45
49
|
}.get(chain.id, set())
|
|
46
50
|
|
|
@@ -78,5 +82,6 @@ INTL_STABLECOINS: Final = {
|
|
|
78
82
|
"0x1CC481cE2BD2EC7Bf67d1Be64d4878b16078F309", # ibCHF
|
|
79
83
|
"0x269895a3dF4D73b077Fc823dD6dA1B95f72Aaf9B", # sKRW
|
|
80
84
|
"0x95dFDC8161832e4fF7816aC4B6367CE201538253", # ibKRW
|
|
85
|
+
"0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8", # EURA
|
|
81
86
|
},
|
|
82
87
|
}.get(chain.id, set())
|
|
Binary file
|
|
@@ -2,7 +2,7 @@ import asyncio
|
|
|
2
2
|
from datetime import datetime, timezone
|
|
3
3
|
from logging import getLogger
|
|
4
4
|
from math import floor
|
|
5
|
-
from typing import Awaitable, Callable, Final, Iterator, List, Optional, Tuple
|
|
5
|
+
from typing import Awaitable, Callable, Final, Iterator, List, Optional, Tuple, Dict
|
|
6
6
|
|
|
7
7
|
import a_sync
|
|
8
8
|
import eth_retry
|
|
@@ -60,16 +60,31 @@ class ExportablePortfolio(Portfolio):
|
|
|
60
60
|
label: str = _DEFAULT_LABEL,
|
|
61
61
|
concurrency: int = 40,
|
|
62
62
|
load_prices: bool = True,
|
|
63
|
-
get_bucket: Callable[[ChecksumAddress], Awaitable[str]] =
|
|
63
|
+
get_bucket: Callable[[ChecksumAddress], Awaitable[str]] = None,
|
|
64
64
|
num_workers_transactions: int = 1000,
|
|
65
65
|
asynchronous: bool = False,
|
|
66
|
+
custom_buckets: Optional[Dict[str, str]] = None,
|
|
66
67
|
):
|
|
67
68
|
super().__init__(
|
|
68
69
|
addresses, start_block, label, load_prices, num_workers_transactions, asynchronous
|
|
69
70
|
)
|
|
70
|
-
self.get_bucket = get_bucket
|
|
71
71
|
self._semaphore = a_sync.Semaphore(concurrency)
|
|
72
72
|
|
|
73
|
+
# Lowercase all keys in custom_buckets if provided
|
|
74
|
+
self.custom_buckets = (
|
|
75
|
+
{k.lower(): v for k, v in custom_buckets.items()} if custom_buckets else None
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
# If get_bucket is not provided, use get_token_bucket with the lowercased mapping
|
|
79
|
+
if get_bucket is None:
|
|
80
|
+
self.get_bucket = lambda token: get_token_bucket(token, self.custom_buckets)
|
|
81
|
+
elif custom_buckets:
|
|
82
|
+
raise RuntimeError(
|
|
83
|
+
"You cannot pass in a custom get_bucket function AND a custom_buckets mapping, choose one."
|
|
84
|
+
)
|
|
85
|
+
else:
|
|
86
|
+
self.get_bucket = get_bucket
|
|
87
|
+
|
|
73
88
|
@cached_property
|
|
74
89
|
def _data_queries(self) -> Tuple[str, str]:
|
|
75
90
|
label = self.label.lower().replace(" ", "_")
|
|
Binary file
|
|
Binary file
|
|
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() ->
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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(["
|
|
36
|
-
print("docker compose found!")
|
|
38
|
+
check_output([*cmd.split(" "), "--version"])
|
|
37
39
|
except (CalledProcessError, FileNotFoundError):
|
|
38
|
-
print("
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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() ->
|
|
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.
|
|
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.
|
|
50
|
+
image: victoriametrics/victoria-metrics:v1.129.1
|
|
51
51
|
volumes:
|
|
52
52
|
- ~/.eth-portfolio/data/victoria/:/victoria-metrics-data
|
|
53
53
|
command:
|
|
Binary file
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
36
|
-
"""
|
|
37
|
-
|
|
38
|
-
|
|
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,32 @@ def ensure_containers(fn: Callable[_P, _T]) -> Callable[_P, _T]:
|
|
|
67
67
|
return compose_wrap
|
|
68
68
|
|
|
69
69
|
|
|
70
|
-
def
|
|
71
|
-
|
|
70
|
+
def _print_notice(
|
|
71
|
+
doing: Literal["building", "starting", "stopping"],
|
|
72
|
+
services: Tuple[str, ...],
|
|
73
|
+
) -> None:
|
|
74
|
+
if len(services) == 0:
|
|
75
|
+
print(f"{doing} the backend containers")
|
|
76
|
+
elif len(services) == 1:
|
|
77
|
+
container = services[0]
|
|
78
|
+
print(f"{doing} the {container} container")
|
|
79
|
+
elif len(services) == 2:
|
|
80
|
+
first, second = services
|
|
81
|
+
print(f"{doing} the {first} and {second} containers")
|
|
82
|
+
else:
|
|
83
|
+
*all_but_last, last = services
|
|
84
|
+
print(f"{doing} the {', '.join(all_but_last)}, and {last} containers")
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def _exec_command(
|
|
88
|
+
command: List[str],
|
|
89
|
+
*,
|
|
90
|
+
compose_file: str = COMPOSE_FILE,
|
|
91
|
+
compose_options: Tuple[str, ...] = (),
|
|
92
|
+
) -> None:
|
|
93
|
+
compose = check_system()
|
|
94
|
+
full_command = [*compose, *compose_options, "-f", compose_file, *command]
|
|
72
95
|
try:
|
|
73
|
-
check_output(
|
|
96
|
+
check_output(full_command)
|
|
74
97
|
except (CalledProcessError, FileNotFoundError) as e:
|
|
75
|
-
|
|
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
|
|
98
|
+
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.
|
|
3
|
+
Version: 0.3.1
|
|
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,34 @@
|
|
|
1
|
-
eth_portfolio__mypyc.cpython-310-darwin.so,sha256=
|
|
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=PChEqRMl1MO4ikUnxMlDshCb5KZPSeFzU9DfsPHfQrw,694856
|
|
7
2
|
eth_portfolio/address.py,sha256=LvBh4Vp2DBC3gQ0WD-TZ6jfe9s6FZbET1krYG9_KMAA,14139
|
|
8
3
|
eth_portfolio/_cache.py,sha256=IOeMXvMgOlEEk01yHP0RARRZXyonuKXUNZbNLFM_KBU,4805
|
|
9
|
-
eth_portfolio/_stableish.cpython-310-darwin.so,sha256=
|
|
4
|
+
eth_portfolio/_stableish.cpython-310-darwin.so,sha256=4UOgMvRG2YEiVCYqibHqMQuzrVzCTA2o6OA0Lq2hKQQ,50656
|
|
10
5
|
eth_portfolio/_argspec.py,sha256=VzUZkbDkmOSgNUZBGbGblqtxBfDcmBAB89dY2OX0j-U,1595
|
|
11
6
|
eth_portfolio/_submodules.py,sha256=J8ht9bAAvblUXqwOGN7UIOXUPxrTiq7m1RWiB0-ObaE,2190
|
|
12
|
-
eth_portfolio/constants.py,sha256=
|
|
7
|
+
eth_portfolio/constants.py,sha256=tR2QKapbutcGYjXdxwB23FICQlwyDPvgua-dhltYyDc,3976
|
|
13
8
|
eth_portfolio/__init__.py,sha256=0sO4cSJaLYwJfnfVOJRFw7p5_Lzhsr95YuJ1aNQM83A,500
|
|
14
|
-
eth_portfolio/_argspec.cpython-310-darwin.so,sha256=
|
|
9
|
+
eth_portfolio/_argspec.cpython-310-darwin.so,sha256=kKZwatKS6lUupN6q-UaU_L3MNZfxoDMPuhFL-JEnoDM,50640
|
|
15
10
|
eth_portfolio/_decimal.py,sha256=tYS0miNoQYZguy0yd1bb3bf49l9F3YICyN8ov6r7VBs,4846
|
|
16
|
-
eth_portfolio/_config.cpython-310-darwin.so,sha256=
|
|
17
|
-
eth_portfolio/buckets.py,sha256
|
|
18
|
-
eth_portfolio/_shitcoins.cpython-310-darwin.so,sha256=
|
|
11
|
+
eth_portfolio/_config.cpython-310-darwin.so,sha256=0q7ZITV-HIXENJRtG9tIt9a32UmvKNPvHVVfeDvVkV4,50640
|
|
12
|
+
eth_portfolio/buckets.py,sha256=-eG-F_Ke0meR_pdA8uYQQuO0lkVgbizTUG3Xhe8o5dE,7599
|
|
13
|
+
eth_portfolio/_shitcoins.cpython-310-darwin.so,sha256=_d1Pr6YuAzwT9nW7U4Ng2HfQ_z3HDWC_bbMqE-xvkm4,50656
|
|
19
14
|
eth_portfolio/_decorators.py,sha256=_ZSurUFEIwZRiMFMhLcIXkD-Ey1CqfBqGaE24hLzOuA,2815
|
|
20
15
|
eth_portfolio/_stableish.py,sha256=VTv69Q91AHxbNbbY0LB4PFwKEseHdkE4_6fLPKH1uW0,2021
|
|
21
16
|
eth_portfolio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
-
eth_portfolio/_shitcoins.py,sha256=
|
|
23
|
-
eth_portfolio/constants.cpython-310-darwin.so,sha256=
|
|
17
|
+
eth_portfolio/_shitcoins.py,sha256=KkadSZieAMu35OoWyDAk5y_E1npcPCy94rb34xVXJB8,17399
|
|
18
|
+
eth_portfolio/constants.cpython-310-darwin.so,sha256=_S90qBAf5RFRsLS2vg6BLbmG8tyF8t2aarV6oGGn5wg,50656
|
|
24
19
|
eth_portfolio/_config.py,sha256=mw-OA3M8rUA2hqy5wNt30AZRHkWFgR8K2sJg0o5Baxg,98
|
|
25
20
|
eth_portfolio/_exceptions.py,sha256=bw3IdXhqrWxeFqYLm7pJZqRHKZas_cCg8A5Ih1WQEqQ,2433
|
|
26
21
|
eth_portfolio/portfolio.py,sha256=MP_0Y6fXw8TNoyoFCPiu-MUA44jnMm0L_33gec6MjKU,24248
|
|
27
22
|
eth_portfolio/_utils.py,sha256=8403ioVA6VX4XaF56CDI9IA4ilTZUf_TrdlQ78chXbQ,7661
|
|
28
|
-
eth_portfolio/_loaders/_nonce.cpython-310-darwin.so,sha256=
|
|
23
|
+
eth_portfolio/_loaders/_nonce.cpython-310-darwin.so,sha256=GMPLAdMekHZFSZUdrpK0-42M5354A3g0tXCRONzkFVs,50656
|
|
29
24
|
eth_portfolio/_loaders/transaction.py,sha256=XLIziLy3YnBPP0E639tQcZfT2Xy4I5VCz6jnfn_C4mE,9153
|
|
30
25
|
eth_portfolio/_loaders/__init__.py,sha256=lb45_0ak32Z7N3-Nx1CAoRKiZ1_w-_YGbmSCNuunro8,1702
|
|
31
26
|
eth_portfolio/_loaders/_nonce.py,sha256=cx0EjTAhVU2EudMKSO-7-t1jl3y4dYn6as4XiY6KyS8,6285
|
|
32
27
|
eth_portfolio/_loaders/utils.py,sha256=aoGgWl9ra9F-qb0wA-sX3qelUNGI-fGvM90297L7xWM,2265
|
|
33
|
-
eth_portfolio/_loaders/balances.cpython-310-darwin.so,sha256
|
|
28
|
+
eth_portfolio/_loaders/balances.cpython-310-darwin.so,sha256=-s5BDhW7Hc_27f8Avxo-Oj5_c0C28652UnX6_OQQ2B0,50656
|
|
34
29
|
eth_portfolio/_loaders/balances.py,sha256=BTWfkJIoSraUMe94Wuj8NPyg5EO0OByIjbXu7j6PZEo,3132
|
|
35
30
|
eth_portfolio/_loaders/token_transfer.py,sha256=JupdQRdTPPsnqFhyRv7vt7IhoC2oEtypjxhEfpzTy9E,8531
|
|
36
|
-
eth_portfolio/_loaders/utils.cpython-310-darwin.so,sha256=
|
|
31
|
+
eth_portfolio/_loaders/utils.cpython-310-darwin.so,sha256=7RlIGOwYWWcNe6sjoME4B13dpnIA2fNaaIpELfVYzdU,50648
|
|
37
32
|
eth_portfolio/_ydb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
33
|
eth_portfolio/_ydb/token_transfers.py,sha256=aKaYSDnJehEcDb_c6YTmcKZxSfZ1jwHMXMOAmE8XH30,5152
|
|
39
34
|
eth_portfolio/_db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -63,21 +58,26 @@ eth_portfolio/protocols/lending/unit.py,sha256=7oRvIkoKUm8IOnDv59pILSSJWFNNjwr4C
|
|
|
63
58
|
eth_portfolio_scripts/_logging.py,sha256=B_rQMYt_1PhpwCOLBRpkKK6M1ljcF0wAIgqfPIsFUGU,354
|
|
64
59
|
eth_portfolio_scripts/_args.py,sha256=k6J6XkRe1VuN1DiyGuXLCR7NBSvzH5jnVChfzodKuB8,656
|
|
65
60
|
eth_portfolio_scripts/__init__.py,sha256=TC5c4WZdzSHhTIBYuwzrAyzFuGzBmHiDX_g6ghO09jQ,261
|
|
66
|
-
eth_portfolio_scripts/balances.cpython-310-darwin.so,sha256=
|
|
67
|
-
eth_portfolio_scripts/_portfolio.py,sha256=
|
|
61
|
+
eth_portfolio_scripts/balances.cpython-310-darwin.so,sha256=Oy3RLZsRR9V_rXKE4bFZJ6RxdC5ffmHhvMSempGSfrs,50656
|
|
62
|
+
eth_portfolio_scripts/_portfolio.py,sha256=HE2wASsPKc4fORD6QSiUapNdzxurWVo_06ImJFTluKQ,7794
|
|
68
63
|
eth_portfolio_scripts/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
69
64
|
eth_portfolio_scripts/balances.py,sha256=QvpOdXnH1V-tOuEmAOPxH3MrincDExlIP1eEJ2IG2Lk,1588
|
|
70
65
|
eth_portfolio_scripts/main.py,sha256=crhObJ5P0B45zTBE2QOIOPYCxtJ8zhsciarcSZN1HHE,3685
|
|
71
66
|
eth_portfolio_scripts/_utils.py,sha256=-JiZLpSa8P2_ZFXw1AfpVmTO6X65yPeVVdnrDpNFzNQ,3057
|
|
72
|
-
eth_portfolio_scripts/docker/docker_compose.cpython-310-darwin.so,sha256=
|
|
73
|
-
eth_portfolio_scripts/docker/docker-compose.yaml,sha256=
|
|
74
|
-
eth_portfolio_scripts/docker/docker_compose.py,sha256=
|
|
75
|
-
eth_portfolio_scripts/docker/check.cpython-310-darwin.so,sha256=
|
|
76
|
-
eth_portfolio_scripts/docker/check.py,sha256=
|
|
67
|
+
eth_portfolio_scripts/docker/docker_compose.cpython-310-darwin.so,sha256=xUNfuo9PD61rRm3FaS7d-hkZ9JGiubfbVAIiPqNiLj4,50712
|
|
68
|
+
eth_portfolio_scripts/docker/docker-compose.yaml,sha256=ZZo_aOYw-Wm2XDpqJpXjUKbtyqbOE5BWa1gR3h-8fUw,1809
|
|
69
|
+
eth_portfolio_scripts/docker/docker_compose.py,sha256=xlrC2cOJ7IJB-z4ntY0H6WcmwGBK3RS6OeBiBF9QmZM,2805
|
|
70
|
+
eth_portfolio_scripts/docker/check.cpython-310-darwin.so,sha256=SCm3evTBP9q8H9fGp9VAJ1Dx1eLqrCExp0Yj-CmLsOQ,50664
|
|
71
|
+
eth_portfolio_scripts/docker/check.py,sha256=80fRi6WvxSQM1NxIhtM6vg6fLOjGuqq5F2mGCf4VSvc,1930
|
|
77
72
|
eth_portfolio_scripts/docker/__init__.py,sha256=ZXSIYcjp94c0O9o39BDGWju3YrCMLl4gtov7YChc9Ig,393
|
|
78
|
-
eth_portfolio_scripts/docker/__init__.cpython-310-darwin.so,sha256=
|
|
73
|
+
eth_portfolio_scripts/docker/__init__.cpython-310-darwin.so,sha256=iw7ue5t4ZSwvI6pzvFPuEUpLlbVWLWe4BaFLMh8cSSo,50656
|
|
79
74
|
eth_portfolio_scripts/docker/.grafana/datasources/datasources.yml,sha256=pBE_0Nh_J7d9Fiy3Xu6vuac_HWCBcFsJJSV-ryjQR1Y,188
|
|
80
75
|
eth_portfolio_scripts/docker/.grafana/dashboards/dashboards.yaml,sha256=MynNDOk69IihoYdd2bL7j8CnRb2Co4gdqW7T4m6AaEU,202
|
|
81
76
|
eth_portfolio_scripts/docker/.grafana/dashboards/Portfolio/Balances.json,sha256=dBmjogLJRuixCHWSs4ROE0_FXb-PUbqWBHEdLoP-1MU,68788
|
|
82
77
|
eth_portfolio_scripts/victoria/__init__.py,sha256=hHVexpiVFJdBrdztihYBKC5hCdYDopo6aSaErI0mmOo,1965
|
|
83
78
|
eth_portfolio_scripts/victoria/types.py,sha256=FJossvAvwNGkufmEk3JD_I10EEaCsOb-m6aeX_vGsUg,707
|
|
79
|
+
eth_portfolio_temp-0.3.1.dist-info/RECORD,,
|
|
80
|
+
eth_portfolio_temp-0.3.1.dist-info/WHEEL,sha256=11kMdE9gzbsaQG30fRcsAYxBLEVRsqJo098Y5iL60Xo,136
|
|
81
|
+
eth_portfolio_temp-0.3.1.dist-info/entry_points.txt,sha256=yqoC6X3LU1NA_-oJ6mloEYEPNmS-0hPS9OtEwgIeDGU,66
|
|
82
|
+
eth_portfolio_temp-0.3.1.dist-info/top_level.txt,sha256=4MlbY-Yj8oGBGL8piXiO4SOpk2gZFF9ZXVTObTZOzqM,57
|
|
83
|
+
eth_portfolio_temp-0.3.1.dist-info/METADATA,sha256=nlPooM8Gu0oWzHNMWfJn4GONPOFqCUbsDLBsqN7_CL0,813
|
|
File without changes
|
|
File without changes
|
|
File without changes
|