eth-portfolio-temp 0.2.1.dev0__cp310-cp310-macosx_11_0_arm64.whl → 0.2.3.dev0__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.
- 295eace8438df6ec133b__mypyc.cpython-310-darwin.so +0 -0
- 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/_stableish.cpython-310-darwin.so +0 -0
- eth_portfolio/_utils.py +5 -4
- eth_portfolio/constants.cpython-310-darwin.so +0 -0
- eth_portfolio_scripts/_portfolio.py +29 -26
- eth_portfolio_scripts/balances.cpython-310-darwin.so +0 -0
- eth_portfolio_scripts/balances.py +7 -4
- 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/docker_compose.cpython-310-darwin.so +0 -0
- eth_portfolio_scripts/main.py +6 -0
- {eth_portfolio_temp-0.2.1.dev0.dist-info → eth_portfolio_temp-0.2.3.dev0.dist-info}/METADATA +1 -1
- {eth_portfolio_temp-0.2.1.dev0.dist-info → eth_portfolio_temp-0.2.3.dev0.dist-info}/RECORD +22 -22
- {eth_portfolio_temp-0.2.1.dev0.dist-info → eth_portfolio_temp-0.2.3.dev0.dist-info}/WHEEL +0 -0
- {eth_portfolio_temp-0.2.1.dev0.dist-info → eth_portfolio_temp-0.2.3.dev0.dist-info}/entry_points.txt +0 -0
- {eth_portfolio_temp-0.2.1.dev0.dist-info → eth_portfolio_temp-0.2.3.dev0.dist-info}/top_level.txt +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
eth_portfolio/_utils.py
CHANGED
|
@@ -136,10 +136,11 @@ async def _get_price(token: AddressOrContract, block: Optional[int] = None) -> _
|
|
|
136
136
|
elif isinstance(e.exception, NonStandardERC20):
|
|
137
137
|
# Can't get symbol for handling like other excs
|
|
138
138
|
logger.warning(f"NonStandardERC20 while fetching price for {token}")
|
|
139
|
-
elif isinstance(e.exception, PriceError)
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
139
|
+
elif isinstance(e.exception, PriceError):
|
|
140
|
+
if token not in SUPPRESS_ERROR_LOGS:
|
|
141
|
+
logger.warning(
|
|
142
|
+
f"PriceError while fetching price for {await _describe_err(token, block)}"
|
|
143
|
+
)
|
|
143
144
|
else:
|
|
144
145
|
logger.warning(f"{e} while fetching price for {await _describe_err(token, block)}")
|
|
145
146
|
logger.warning(e, exc_info=True)
|
|
Binary file
|
|
@@ -40,8 +40,10 @@ class ExportablePortfolio(Portfolio):
|
|
|
40
40
|
def __init__(
|
|
41
41
|
self,
|
|
42
42
|
addresses: Addresses,
|
|
43
|
+
*,
|
|
43
44
|
start_block: int = 0,
|
|
44
45
|
label: str = _DEFAULT_LABEL,
|
|
46
|
+
concurrency: int = 60,
|
|
45
47
|
load_prices: bool = True,
|
|
46
48
|
get_bucket: Callable[[ChecksumAddress], Awaitable[str]] = get_token_bucket,
|
|
47
49
|
num_workers_transactions: int = 1000,
|
|
@@ -51,6 +53,7 @@ class ExportablePortfolio(Portfolio):
|
|
|
51
53
|
addresses, start_block, label, load_prices, num_workers_transactions, asynchronous
|
|
52
54
|
)
|
|
53
55
|
self.get_bucket = get_bucket
|
|
56
|
+
self._semaphore = a_sync.Semaphore(concurrency)
|
|
54
57
|
|
|
55
58
|
@cached_property
|
|
56
59
|
def _data_queries(self) -> Tuple[str, str]:
|
|
@@ -88,36 +91,36 @@ class ExportablePortfolio(Portfolio):
|
|
|
88
91
|
except Exception as e:
|
|
89
92
|
log_error("Error processing %s:", dt, exc_info=True)
|
|
90
93
|
|
|
91
|
-
@a_sync.Semaphore(60)
|
|
92
94
|
async def get_data_for_export(self, block: BlockNumber, ts: datetime) -> List[victoria.Metric]:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
for
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
await self.__process_token(ts, section, wallet, token, bals)
|
|
105
|
-
)
|
|
106
|
-
elif isinstance(section_data, RemoteTokenBalances):
|
|
107
|
-
if section == "external":
|
|
108
|
-
section = "assets"
|
|
109
|
-
for protocol, token_bals in section_data.items():
|
|
110
|
-
for token, bals in dict.items(token_bals):
|
|
95
|
+
async with self._semaphore:
|
|
96
|
+
print(f"exporting {ts} for {self.label}")
|
|
97
|
+
start = datetime.now(tz=timezone.utc)
|
|
98
|
+
|
|
99
|
+
metrics_to_export = []
|
|
100
|
+
data: PortfolioBalances = await self.describe(block, sync=False)
|
|
101
|
+
|
|
102
|
+
for wallet, wallet_data in dict.items(data):
|
|
103
|
+
for section, section_data in wallet_data.items():
|
|
104
|
+
if isinstance(section_data, TokenBalances):
|
|
105
|
+
for token, bals in dict.items(section_data):
|
|
111
106
|
metrics_to_export.extend(
|
|
112
|
-
await self.__process_token(
|
|
113
|
-
ts, section, wallet, token, bals, protocol=protocol
|
|
114
|
-
)
|
|
107
|
+
await self.__process_token(ts, section, wallet, token, bals)
|
|
115
108
|
)
|
|
116
|
-
|
|
117
|
-
|
|
109
|
+
elif isinstance(section_data, RemoteTokenBalances):
|
|
110
|
+
if section == "external":
|
|
111
|
+
section = "assets"
|
|
112
|
+
for protocol, token_bals in section_data.items():
|
|
113
|
+
for token, bals in dict.items(token_bals):
|
|
114
|
+
metrics_to_export.extend(
|
|
115
|
+
await self.__process_token(
|
|
116
|
+
ts, section, wallet, token, bals, protocol=protocol
|
|
117
|
+
)
|
|
118
|
+
)
|
|
119
|
+
else:
|
|
120
|
+
raise NotImplementedError()
|
|
118
121
|
|
|
119
|
-
|
|
120
|
-
|
|
122
|
+
print(f"got data for {ts} in {datetime.now(tz=timezone.utc) - start}")
|
|
123
|
+
return metrics_to_export
|
|
121
124
|
|
|
122
125
|
def __get_data_exists_coros(self, dt: datetime) -> Iterator[str]:
|
|
123
126
|
for query in self._data_queries:
|
|
Binary file
|
|
@@ -26,13 +26,16 @@ async def export_balances(args: Namespace) -> None:
|
|
|
26
26
|
|
|
27
27
|
interval = parse_timedelta(args.interval)
|
|
28
28
|
portfolio = ExportablePortfolio(
|
|
29
|
-
args.wallet,
|
|
29
|
+
args.wallet,
|
|
30
|
+
label=args.label,
|
|
31
|
+
start_block=args.first_tx_block,
|
|
32
|
+
concurrency=args.concurrency,
|
|
33
|
+
load_prices=False,
|
|
30
34
|
)
|
|
31
35
|
|
|
32
36
|
if export_start_block := args.export_start_block or args.first_tx_block:
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
)
|
|
37
|
+
start_ts = await dank_mids.eth.get_block_timestamp(export_start_block)
|
|
38
|
+
start = datetime.fromtimestamp(start_ts, tz=timezone.utc)
|
|
36
39
|
else:
|
|
37
40
|
start = None
|
|
38
41
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
eth_portfolio_scripts/main.py
CHANGED
|
@@ -54,6 +54,12 @@ export_parser.add_argument(
|
|
|
54
54
|
help="The time interval between datapoints. default: 6h",
|
|
55
55
|
default="6h",
|
|
56
56
|
)
|
|
57
|
+
export_parser.add_argument(
|
|
58
|
+
"--concurrency",
|
|
59
|
+
type=int,
|
|
60
|
+
help="The max number of historical blocks to export concurrently. default: 60",
|
|
61
|
+
default=60,
|
|
62
|
+
)
|
|
57
63
|
export_parser.add_argument(
|
|
58
64
|
"--first-tx-block",
|
|
59
65
|
type=int,
|
|
@@ -1,34 +1,39 @@
|
|
|
1
|
-
295eace8438df6ec133b__mypyc.cpython-310-darwin.so,sha256=
|
|
1
|
+
295eace8438df6ec133b__mypyc.cpython-310-darwin.so,sha256=lS3hdPVgjh2LJyOK7vd9__IkswkUiXMGrqNvaVuNyMk,669536
|
|
2
|
+
eth_portfolio_temp-0.2.3.dev0.dist-info/RECORD,,
|
|
3
|
+
eth_portfolio_temp-0.2.3.dev0.dist-info/WHEEL,sha256=11kMdE9gzbsaQG30fRcsAYxBLEVRsqJo098Y5iL60Xo,136
|
|
4
|
+
eth_portfolio_temp-0.2.3.dev0.dist-info/entry_points.txt,sha256=yqoC6X3LU1NA_-oJ6mloEYEPNmS-0hPS9OtEwgIeDGU,66
|
|
5
|
+
eth_portfolio_temp-0.2.3.dev0.dist-info/top_level.txt,sha256=CmTLi8Lvs3RulV5ZNdziaDVvF_WRsgRpM17GSMECxrg,64
|
|
6
|
+
eth_portfolio_temp-0.2.3.dev0.dist-info/METADATA,sha256=orjcH7HsKx696s8BFy30bkvhBHUkC9YgS4H3t20BC6U,779
|
|
2
7
|
eth_portfolio/address.py,sha256=LvBh4Vp2DBC3gQ0WD-TZ6jfe9s6FZbET1krYG9_KMAA,14139
|
|
3
8
|
eth_portfolio/_cache.py,sha256=PYkR-yExjuwd_t7swv4euxL2daJ-VFwh3EMb3MciRJE,4745
|
|
4
|
-
eth_portfolio/_stableish.cpython-310-darwin.so,sha256=
|
|
9
|
+
eth_portfolio/_stableish.cpython-310-darwin.so,sha256=B0bMKE_y6UWqYzUHYuhnzG69wg4yIyi5hndFOUubHro,50656
|
|
5
10
|
eth_portfolio/_argspec.py,sha256=VzUZkbDkmOSgNUZBGbGblqtxBfDcmBAB89dY2OX0j-U,1595
|
|
6
11
|
eth_portfolio/_submodules.py,sha256=J8ht9bAAvblUXqwOGN7UIOXUPxrTiq7m1RWiB0-ObaE,2190
|
|
7
12
|
eth_portfolio/constants.py,sha256=LS9H2P_Qfcreb6z6NknErxvq6OAtIHbHykXy0spol9E,3659
|
|
8
13
|
eth_portfolio/__init__.py,sha256=0sO4cSJaLYwJfnfVOJRFw7p5_Lzhsr95YuJ1aNQM83A,500
|
|
9
|
-
eth_portfolio/_argspec.cpython-310-darwin.so,sha256=
|
|
14
|
+
eth_portfolio/_argspec.cpython-310-darwin.so,sha256=Lt-AT6ihWTtexbY7oy6B3xpJooQ1nkV8aN3V4TuqDNE,50640
|
|
10
15
|
eth_portfolio/_decimal.py,sha256=nuUl6DZHCtrbBN7snwvs4LLaoJ5k7mn3dt4qmlFCkTU,4731
|
|
11
|
-
eth_portfolio/_config.cpython-310-darwin.so,sha256=
|
|
16
|
+
eth_portfolio/_config.cpython-310-darwin.so,sha256=6vEeyU2QpAx2XmtYXu9pYDfpmB2p7rSlb2_sXYYGhlE,50640
|
|
12
17
|
eth_portfolio/buckets.py,sha256=QwdqWzW9iWBmRcJ2aktRtL-obvtBnND179krY5ISbhY,6695
|
|
13
|
-
eth_portfolio/_shitcoins.cpython-310-darwin.so,sha256=
|
|
18
|
+
eth_portfolio/_shitcoins.cpython-310-darwin.so,sha256=YUuKqzKzLD0X_seAMVRcar2ck9Yr_K24gJyHi9ZIG3M,50656
|
|
14
19
|
eth_portfolio/_decorators.py,sha256=_ZSurUFEIwZRiMFMhLcIXkD-Ey1CqfBqGaE24hLzOuA,2815
|
|
15
20
|
eth_portfolio/_stableish.py,sha256=VTv69Q91AHxbNbbY0LB4PFwKEseHdkE4_6fLPKH1uW0,2021
|
|
16
21
|
eth_portfolio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
22
|
eth_portfolio/_shitcoins.py,sha256=FrqttZzQdheTAabdIK0oVHayqHF0UkLQLEiMz8njQe0,15563
|
|
18
|
-
eth_portfolio/constants.cpython-310-darwin.so,sha256=
|
|
23
|
+
eth_portfolio/constants.cpython-310-darwin.so,sha256=R-9RjzQVbC-iICRGQoN4X1lk459ydSSjo1XMmfEZ6pg,50656
|
|
19
24
|
eth_portfolio/_config.py,sha256=mw-OA3M8rUA2hqy5wNt30AZRHkWFgR8K2sJg0o5Baxg,98
|
|
20
25
|
eth_portfolio/_exceptions.py,sha256=bw3IdXhqrWxeFqYLm7pJZqRHKZas_cCg8A5Ih1WQEqQ,2433
|
|
21
26
|
eth_portfolio/portfolio.py,sha256=KljK3FZQMtRQLs1D-HHgCN-DVoZ6ZzEdmclmF3__oz0,24243
|
|
22
|
-
eth_portfolio/_utils.py,sha256=
|
|
23
|
-
eth_portfolio/_loaders/_nonce.cpython-310-darwin.so,sha256=
|
|
27
|
+
eth_portfolio/_utils.py,sha256=Ab3m6i79U-tnTrc_b_kTmOO4xKjbsX9slf6l0sXzf4c,7770
|
|
28
|
+
eth_portfolio/_loaders/_nonce.cpython-310-darwin.so,sha256=NeMoSkEAMa69B28s7EsO_uua77l875Fm0J1bkadWJrY,50656
|
|
24
29
|
eth_portfolio/_loaders/transaction.py,sha256=FEYdoNDCgD6-mqZT9MuyYIEkdhG3iUwyNeMmqjpMGJw,9146
|
|
25
30
|
eth_portfolio/_loaders/__init__.py,sha256=lb45_0ak32Z7N3-Nx1CAoRKiZ1_w-_YGbmSCNuunro8,1702
|
|
26
31
|
eth_portfolio/_loaders/_nonce.py,sha256=cx0EjTAhVU2EudMKSO-7-t1jl3y4dYn6as4XiY6KyS8,6285
|
|
27
32
|
eth_portfolio/_loaders/utils.py,sha256=my3Wg2Ip5gSWuzAWcoLQQEmVmAPhIHbBzQQc0iP1iCA,2258
|
|
28
|
-
eth_portfolio/_loaders/balances.cpython-310-darwin.so,sha256=
|
|
33
|
+
eth_portfolio/_loaders/balances.cpython-310-darwin.so,sha256=88iLjjef3fDPPv-BIWUvoEhsLUN-6ZlAi4blZIV4k5w,50656
|
|
29
34
|
eth_portfolio/_loaders/balances.py,sha256=BTWfkJIoSraUMe94Wuj8NPyg5EO0OByIjbXu7j6PZEo,3132
|
|
30
35
|
eth_portfolio/_loaders/token_transfer.py,sha256=MEw95D2iKBYa_9vIatCHJGe7zEJuYUEC8P1mTjjRXlo,8524
|
|
31
|
-
eth_portfolio/_loaders/utils.cpython-310-darwin.so,sha256=
|
|
36
|
+
eth_portfolio/_loaders/utils.cpython-310-darwin.so,sha256=eiesB53yn8st0A8WtajuZzrmxHAk07VGXfNnymg5D0Q,50648
|
|
32
37
|
eth_portfolio/_ydb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
38
|
eth_portfolio/_ydb/token_transfers.py,sha256=aKaYSDnJehEcDb_c6YTmcKZxSfZ1jwHMXMOAmE8XH30,5152
|
|
34
39
|
eth_portfolio/_db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -55,27 +60,22 @@ eth_portfolio/protocols/lending/__init__.py,sha256=BZtCOglz6R12wqETlECbCEITdtIT9
|
|
|
55
60
|
eth_portfolio/protocols/lending/README.md,sha256=OhZfsW8e-aD-q02g0maG9QGgW0IietkDRZc7PBakBvc,493
|
|
56
61
|
eth_portfolio/protocols/lending/compound.py,sha256=bqnIevm7NWhk6nMfkMZUKlQuVWr-tXnuntX-4De1YZM,7252
|
|
57
62
|
eth_portfolio/protocols/lending/unit.py,sha256=7oRvIkoKUm8IOnDv59pILSSJWFNNjwr4CR1gg2psW9M,1965
|
|
58
|
-
eth_portfolio_temp-0.2.1.dev0.dist-info/RECORD,,
|
|
59
|
-
eth_portfolio_temp-0.2.1.dev0.dist-info/WHEEL,sha256=11kMdE9gzbsaQG30fRcsAYxBLEVRsqJo098Y5iL60Xo,136
|
|
60
|
-
eth_portfolio_temp-0.2.1.dev0.dist-info/entry_points.txt,sha256=yqoC6X3LU1NA_-oJ6mloEYEPNmS-0hPS9OtEwgIeDGU,66
|
|
61
|
-
eth_portfolio_temp-0.2.1.dev0.dist-info/top_level.txt,sha256=CmTLi8Lvs3RulV5ZNdziaDVvF_WRsgRpM17GSMECxrg,64
|
|
62
|
-
eth_portfolio_temp-0.2.1.dev0.dist-info/METADATA,sha256=5GTbcM4x4Qh82t2ZCdoMIFyvWiUmozo54sjQJxdp4QA,779
|
|
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=
|
|
67
|
-
eth_portfolio_scripts/_portfolio.py,sha256=
|
|
66
|
+
eth_portfolio_scripts/balances.cpython-310-darwin.so,sha256=D3Oh_m_Ej19rcEH259GsbkoJCunZ4Whpa147fUqP1I4,50656
|
|
67
|
+
eth_portfolio_scripts/_portfolio.py,sha256=36n8DE9OfHvdF0ez12yzWpxI7at6_eo3eno7V_YYu3A,6932
|
|
68
68
|
eth_portfolio_scripts/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
69
|
-
eth_portfolio_scripts/balances.py,sha256=
|
|
70
|
-
eth_portfolio_scripts/main.py,sha256=
|
|
69
|
+
eth_portfolio_scripts/balances.py,sha256=QvpOdXnH1V-tOuEmAOPxH3MrincDExlIP1eEJ2IG2Lk,1588
|
|
70
|
+
eth_portfolio_scripts/main.py,sha256=vafXy4JvNWrP203AgCRcSKHMsOSCC7VVj9zBd_BFYZU,3685
|
|
71
71
|
eth_portfolio_scripts/_utils.py,sha256=qyct1Mwf2-1DYj7BUWt2bocUfGKMap1l9sxUfHAjER0,2538
|
|
72
|
-
eth_portfolio_scripts/docker/docker_compose.cpython-310-darwin.so,sha256=
|
|
72
|
+
eth_portfolio_scripts/docker/docker_compose.cpython-310-darwin.so,sha256=9UIARu6T4k0fvB66IKx-Y921LWZKAM4MVa6Ps5Wftws,50712
|
|
73
73
|
eth_portfolio_scripts/docker/docker-compose.yaml,sha256=pQ4eesSfMtcb9muDFT5TFDqZty15BoC2Rrd8HY0LS04,1809
|
|
74
74
|
eth_portfolio_scripts/docker/docker_compose.py,sha256=K7_Y_8NeN5s0pb9WUamgfi9OppjpaU0Mlz2nDzewcRA,2226
|
|
75
|
-
eth_portfolio_scripts/docker/check.cpython-310-darwin.so,sha256=
|
|
75
|
+
eth_portfolio_scripts/docker/check.cpython-310-darwin.so,sha256=fKasSAtAH8sPH7bKNLTFhx6civu_QaQInWd5DpFg4BI,50664
|
|
76
76
|
eth_portfolio_scripts/docker/check.py,sha256=E6_Ar4dr6HfVAgpwoDPcObIolikHKQr8VFkH01sOuIM,1745
|
|
77
77
|
eth_portfolio_scripts/docker/__init__.py,sha256=ZXSIYcjp94c0O9o39BDGWju3YrCMLl4gtov7YChc9Ig,393
|
|
78
|
-
eth_portfolio_scripts/docker/__init__.cpython-310-darwin.so,sha256=
|
|
78
|
+
eth_portfolio_scripts/docker/__init__.cpython-310-darwin.so,sha256=q3TSnxSkyGsBGkL7QQ7DARlDzXX26rtowKpjJkRjhkE,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
|
|
File without changes
|
{eth_portfolio_temp-0.2.1.dev0.dist-info → eth_portfolio_temp-0.2.3.dev0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{eth_portfolio_temp-0.2.1.dev0.dist-info → eth_portfolio_temp-0.2.3.dev0.dist-info}/top_level.txt
RENAMED
|
File without changes
|