eth-portfolio-temp 0.0.39.dev0__cp312-cp312-musllinux_1_2_i686.whl → 0.1.1.dev0__cp312-cp312-musllinux_1_2_i686.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.

Potentially problematic release.


This version of eth-portfolio-temp might be problematic. Click here for more details.

@@ -190,7 +190,7 @@ def is_token(address) -> bool:
190
190
 
191
191
  async def _is_token(address) -> bool:
192
192
  # just breaking a weird lock, dont mind me
193
- if retval := await get_event_loop().run_in_executor(process, __is_token, address):
193
+ if retval := await get_event_loop().run_in_executor(process, __is_token, address): # type: ignore [name-defined]
194
194
  logger.debug("%s is token")
195
195
  else:
196
196
  logger.debug("%s is not token")
@@ -2,7 +2,7 @@ import asyncio
2
2
  import logging
3
3
  from collections import defaultdict
4
4
  from time import time
5
- from typing import ClassVar, DefaultDict, Dict, Final, Tuple, final
5
+ from typing import ClassVar, DefaultDict, Dict, Final, Optional, Tuple, final
6
6
 
7
7
  import a_sync
8
8
  import dank_mids
@@ -145,7 +145,7 @@ async def _get_area(
145
145
  return lo, hi
146
146
 
147
147
 
148
- def _update_nonces(address: ChecksumAddress, nonce: Nonce, block: BlockNumber):
148
+ def _update_nonces(address: ChecksumAddress, nonce: Nonce, block: BlockNumber) -> None:
149
149
  # if you are searching for `nonce` and you verified it occurs AT or ABOVE `block` call this fn.
150
150
  if block > nonces[address][nonce]:
151
151
  nonces[address][nonce] = block
@@ -178,13 +178,13 @@ def _get_num_chunks(range_size: int) -> int:
178
178
 
179
179
  @final
180
180
  class BlockCache:
181
- block: ClassVar = 0
181
+ block: ClassVar[BlockNumber] = 0
182
182
  updated_at: ClassVar = 0.0
183
183
  lock: Final = asyncio.Lock()
184
184
  ttl: Final = 5.0
185
185
 
186
186
 
187
- async def get_block_number():
187
+ async def get_block_number() -> BlockNumber:
188
188
  if now() - BlockCache.updated_at < BlockCache.ttl:
189
189
  return BlockCache.block
190
190
  async with BlockCache.lock:
@@ -56,7 +56,7 @@ class _TokenTransfers(ProcessedEvents["Task[TokenTransfer]"]):
56
56
  def _topics(self) -> List: ...
57
57
 
58
58
  @ASyncIterator.wrap # type: ignore [call-overload]
59
- async def yield_thru_block(self, block) -> AsyncIterator["Task[TokenTransfer]"]:
59
+ async def yield_thru_block(self, block: BlockNumber) -> AsyncIterator["Task[TokenTransfer]"]:
60
60
  if not _logger_is_enabled_for(DEBUG):
61
61
  async for task in self._objects_thru(block=block):
62
62
  yield task
@@ -137,14 +137,14 @@ class TokenTransfers(ASyncIterable[TokenTransfer]):
137
137
  address, from_block, load_prices=load_prices
138
138
  )
139
139
 
140
- async def __aiter__(self):
140
+ async def __aiter__(self) -> AsyncIterator["Task[TokenTransfer]"]:
141
141
  async for transfer in self.__yield_thru_block(await dank_mids.eth.block_number):
142
142
  yield transfer
143
143
 
144
- def yield_thru_block(self, block: int) -> ASyncIterator["Task[TokenTransfer]"]:
144
+ def yield_thru_block(self, block: BlockNumber) -> ASyncIterator["Task[TokenTransfer]"]:
145
145
  return ASyncIterator(self.__yield_thru_block(block))
146
146
 
147
- def __yield_thru_block(self, block: int) -> AsyncIterator["Task[TokenTransfer]"]:
147
+ def __yield_thru_block(self, block: BlockNumber) -> AsyncIterator["Task[TokenTransfer]"]:
148
148
  return as_yielded(
149
149
  self.transfers_in.yield_thru_block(block), self.transfers_out.yield_thru_block(block)
150
150
  )
eth_portfolio/address.py CHANGED
@@ -23,6 +23,7 @@ import dank_mids
23
23
  import eth_retry
24
24
  import y
25
25
  from a_sync.exceptions import MappingIsEmptyError
26
+ from eth_typing import BlockNumber
26
27
  from y import convert
27
28
  from y._decorators import stuck_coro_debugger
28
29
  from y.datatypes import Address, Block
@@ -312,7 +313,7 @@ class PortfolioAddress(_LedgeredBase[AddressLedgerBase]):
312
313
  return Balance(token=y.EEE_ADDRESS, block=block)
313
314
 
314
315
  @stuck_coro_debugger
315
- async def token_balances(self, block) -> TokenBalances:
316
+ async def token_balances(self, block: BlockNumber) -> TokenBalances:
316
317
  """
317
318
  Retrieves the balances for all tokens in the wallet at a given block.
318
319
 
eth_portfolio/buckets.py CHANGED
@@ -1,5 +1,5 @@
1
1
  import logging
2
- from typing import Final, Optional, Set
2
+ from typing import Any, Final, Optional, Set
3
3
 
4
4
  from a_sync import igather
5
5
  from async_lru import alru_cache
@@ -76,7 +76,7 @@ async def get_token_bucket(token: AnyAddressType) -> str:
76
76
 
77
77
 
78
78
  @alru_cache(maxsize=None)
79
- async def _unwrap_token(token) -> ChecksumAddress:
79
+ async def _unwrap_token(token: Any) -> ChecksumAddress:
80
80
  """
81
81
  Recursively unwrap a token to its underlying asset.
82
82
 
@@ -46,7 +46,7 @@ from checksum_dict import DefaultChecksumDict
46
46
  from eth_typing import BlockNumber
47
47
  from pandas import DataFrame, concat
48
48
  from typing_extensions import ParamSpec, Self
49
- from y import ERC20
49
+ from y import Contract, ERC20
50
50
  from y.datatypes import Address
51
51
 
52
52
  from eth_portfolio._decimal import Decimal
@@ -393,7 +393,7 @@ class RemoteTokenBalances(DefaultDict[ProtocolLabel, TokenBalances], _SummableNo
393
393
  )
394
394
  self[remote] += token_balances # type: ignore [has-type]
395
395
 
396
- def __setitem__(self, protocol: str, value: TokenBalances):
396
+ def __setitem__(self, protocol: str, value: TokenBalances) -> None:
397
397
  """
398
398
  Sets the token balances for a given protocol.
399
399
 
@@ -71,7 +71,7 @@ class ExportablePortfolio(Portfolio):
71
71
  return True
72
72
  return False
73
73
 
74
- async def export_snapshot(self, dt: datetime):
74
+ async def export_snapshot(self, dt: datetime) -> None:
75
75
  log_debug("checking data at %s for %s", dt, self.label)
76
76
  try:
77
77
  if not await self.data_exists(dt, sync=False):
@@ -131,7 +131,7 @@ class ExportablePortfolio(Portfolio):
131
131
  token: ChecksumAddress,
132
132
  bal: Balance,
133
133
  protocol: Optional[str] = None,
134
- ):
134
+ ) -> Tuple[victoria.types.PrometheusItem, victoria.types.PrometheusItem]:
135
135
  # TODO wallet nicknames in grafana
136
136
  # wallet = KNOWN_ADDRESSES[wallet] if wallet in KNOWN_ADDRESSES else wallet
137
137
  if protocol is not None:
@@ -172,7 +172,7 @@ class ExportablePortfolio(Portfolio):
172
172
  )
173
173
 
174
174
 
175
- async def _get_symbol(token) -> str:
175
+ async def _get_symbol(token: str) -> str:
176
176
  if token == "ETH":
177
177
  return "ETH"
178
178
  try:
@@ -68,3 +68,6 @@ async def post_data(metrics_to_export: List["Metric"]) -> None:
68
68
  def __set_session(sesh: ClientSession) -> None:
69
69
  global session
70
70
  session = sesh
71
+
72
+
73
+ __all__ = ["Metric", "get", "post_data"]
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eth_portfolio_temp
3
- Version: 0.0.39.dev0
3
+ Version: 0.1.1.dev0
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
7
7
  Author-email: bobthebuidlerdefi@gmail.com
8
- Requires-Python: >=3.9,<3.13
8
+ Requires-Python: >=3.10,<3.13
9
9
  Requires-Dist: checksum_dict>=2.1.7
10
10
  Requires-Dist: dank_mids>=4.20.154
11
11
  Requires-Dist: eth-brownie<1.23,>=1.21.0
@@ -14,7 +14,7 @@ Requires-Dist: evmspec>=0.4.1
14
14
  Requires-Dist: ez-a-sync>=0.32.7
15
15
  Requires-Dist: faster-eth-utils
16
16
  Requires-Dist: numpy<2
17
- Requires-Dist: pandas<1.6,>=1.4.3
17
+ Requires-Dist: pandas<3,>=1.4.3
18
18
  Requires-Dist: typed-envs>=0.0.9
19
19
  Requires-Dist: ypricemagic<5,>=4.6.21.dev0
20
20
  Dynamic: author
@@ -1,4 +1,4 @@
1
- 295eace8438df6ec133b__mypyc.cpython-312-i386-linux-musl.so,sha256=n0IEUX6ihBaX0tYZf4CZiOAF_62cAvb-1OCTLpHs-X8,855004
1
+ 295eace8438df6ec133b__mypyc.cpython-312-i386-linux-musl.so,sha256=qtgLJnWgtGjUAwfSu3axgnu9kuDFHHMEM8Szbme1KNw,856456
2
2
  eth_portfolio/__init__.py,sha256=0sO4cSJaLYwJfnfVOJRFw7p5_Lzhsr95YuJ1aNQM83A,500
3
3
  eth_portfolio/_argspec.cpython-312-i386-linux-musl.so,sha256=x91lYrybGeUMPv6-SIHMGj-e3ONemxZXRpGnyFu6xWE,16712
4
4
  eth_portfolio/_argspec.py,sha256=VzUZkbDkmOSgNUZBGbGblqtxBfDcmBAB89dY2OX0j-U,1595
@@ -14,8 +14,8 @@ eth_portfolio/_stableish.cpython-312-i386-linux-musl.so,sha256=KEQeO5HJ973EKsrDK
14
14
  eth_portfolio/_stableish.py,sha256=VTv69Q91AHxbNbbY0LB4PFwKEseHdkE4_6fLPKH1uW0,2021
15
15
  eth_portfolio/_submodules.py,sha256=J8ht9bAAvblUXqwOGN7UIOXUPxrTiq7m1RWiB0-ObaE,2190
16
16
  eth_portfolio/_utils.py,sha256=j1LncNsKQWAC3mnnXtGIr-A7PXUEOPKB7zS995YW0yo,7360
17
- eth_portfolio/address.py,sha256=HQICTWIesTZgEbLTH7bQlehBIX5m_ZbppA5bAlnONhI,14091
18
- eth_portfolio/buckets.py,sha256=O1bggX_T364emRtUp1ek64Pv2j53kJjqNvOhY1tEdAI,6685
17
+ eth_portfolio/address.py,sha256=LvBh4Vp2DBC3gQ0WD-TZ6jfe9s6FZbET1krYG9_KMAA,14139
18
+ eth_portfolio/buckets.py,sha256=QwdqWzW9iWBmRcJ2aktRtL-obvtBnND179krY5ISbhY,6695
19
19
  eth_portfolio/constants.cpython-312-i386-linux-musl.so,sha256=2-rtTP8X23kaoK5Bo6XMXDofbBE0xnkmfueejFgo6JE,16716
20
20
  eth_portfolio/constants.py,sha256=LS9H2P_Qfcreb6z6NknErxvq6OAtIHbHykXy0spol9E,3659
21
21
  eth_portfolio/portfolio.py,sha256=KljK3FZQMtRQLs1D-HHgCN-DVoZ6ZzEdmclmF3__oz0,24243
@@ -23,13 +23,13 @@ eth_portfolio/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
23
  eth_portfolio/_db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
24
  eth_portfolio/_db/decorators.py,sha256=GXL6kqnARl0W1roITfrSZkPKoIi9jxJHEvaj9WH86RQ,5161
25
25
  eth_portfolio/_db/entities.py,sha256=wZcOa079gznsm7wl7CvRgPdiCBKBsfCeJgc-dH3PYJA,10034
26
- eth_portfolio/_db/utils.py,sha256=rC8Kyt8CPc3sYtGY9Fp-8HDdEtrmzk3fGbRINOdMiuc,20930
26
+ eth_portfolio/_db/utils.py,sha256=DxwFiuqL6yihPgu1HOPeaFVFydbQT7YmXrv93QAGdQY,20961
27
27
  eth_portfolio/_ledgers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
28
  eth_portfolio/_ledgers/address.py,sha256=1GsIiI6kv0xQwzmceP3B8ZTQ2rN8gFdQg0KCGCbfv8w,32885
29
29
  eth_portfolio/_ledgers/portfolio.py,sha256=4qk0tJsD9n6uDwSgF9JJnDuA-osjxeE5b7pTo7ovv6k,13100
30
30
  eth_portfolio/_loaders/__init__.py,sha256=lb45_0ak32Z7N3-Nx1CAoRKiZ1_w-_YGbmSCNuunro8,1702
31
31
  eth_portfolio/_loaders/_nonce.cpython-312-i386-linux-musl.so,sha256=3vHNjmPq9MPKRokKEvWbUnQ66ZgldyYoD1Qof4SinNs,16720
32
- eth_portfolio/_loaders/_nonce.py,sha256=RQlsfycYxKe26Fjh_H7p-WHUJxScMgXU7a2FesfTD9s,6239
32
+ eth_portfolio/_loaders/_nonce.py,sha256=cx0EjTAhVU2EudMKSO-7-t1jl3y4dYn6as4XiY6KyS8,6285
33
33
  eth_portfolio/_loaders/balances.cpython-312-i386-linux-musl.so,sha256=zvtTAi3exFTM0qcfZi4HFfQrnnGblMIEC7COoVsPnN8,16728
34
34
  eth_portfolio/_loaders/balances.py,sha256=BTWfkJIoSraUMe94Wuj8NPyg5EO0OByIjbXu7j6PZEo,3132
35
35
  eth_portfolio/_loaders/token_transfer.py,sha256=MEw95D2iKBYa_9vIatCHJGe7zEJuYUEC8P1mTjjRXlo,8524
@@ -37,7 +37,7 @@ eth_portfolio/_loaders/transaction.py,sha256=FEYdoNDCgD6-mqZT9MuyYIEkdhG3iUwyNeM
37
37
  eth_portfolio/_loaders/utils.cpython-312-i386-linux-musl.so,sha256=s6KXVjI-LXtfHKb17T0Bkm0MXbHyZSjv1oucHZ8Ggck,16720
38
38
  eth_portfolio/_loaders/utils.py,sha256=my3Wg2Ip5gSWuzAWcoLQQEmVmAPhIHbBzQQc0iP1iCA,2258
39
39
  eth_portfolio/_ydb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- eth_portfolio/_ydb/token_transfers.py,sha256=ypbSJMREdeh8lpTF5reuGG0f-Zb4SXjRrh3CWml9SO8,5249
40
+ eth_portfolio/_ydb/token_transfers.py,sha256=WwrTaAYCGbMAjONDf5mQon5YgG1U6dzV0nnve5_zHmU,5318
41
41
  eth_portfolio/protocols/__init__.py,sha256=2qpUnGdTbC4tLUbylFvy1AE32XbsCFuFNbvqz91s0W8,2556
42
42
  eth_portfolio/protocols/_base.py,sha256=XS4wJZur6Fwl_8E_vFMXx7JSaCQmPn7QbN863TYFSZE,3685
43
43
  eth_portfolio/protocols/convex.py,sha256=uNbXxEmhcpXulNkbxoqWl9eAJTZjPJlzXFtrBGvRXLo,518
@@ -53,12 +53,12 @@ eth_portfolio/protocols/lending/unit.py,sha256=7oRvIkoKUm8IOnDv59pILSSJWFNNjwr4C
53
53
  eth_portfolio/structs/__init__.py,sha256=3EmfKoJGszobO7fCkERLXSN50V6dX3nfhvbiKIvJUZI,1443
54
54
  eth_portfolio/structs/modified.py,sha256=z75XDNXOfm3hDr7pj0PbmUvfPeQSFH9BJ9m0L2V_LFw,1784
55
55
  eth_portfolio/structs/structs.py,sha256=UYBVPcar3uIid77p0sFzhlCHi7_Ftv-L8_CGBbhCnF0,19800
56
- eth_portfolio/typing/__init__.py,sha256=JIPOYQE17s8ThJIMt1bHNVMotgvvNValBEKveq5ZnoI,57209
56
+ eth_portfolio/typing/__init__.py,sha256=w3cAQWmSeN5uvUaxJAqxrSFQNUDUhKdSD4wEHfsv3_I,57227
57
57
  eth_portfolio/typing/balance/single.py,sha256=_HhJL21jOs4IPjRsYbjZVficsNWCS0fcpBryr3JFt7s,6325
58
58
  eth_portfolio_scripts/__init__.py,sha256=TC5c4WZdzSHhTIBYuwzrAyzFuGzBmHiDX_g6ghO09jQ,261
59
59
  eth_portfolio_scripts/_args.py,sha256=k6J6XkRe1VuN1DiyGuXLCR7NBSvzH5jnVChfzodKuB8,656
60
60
  eth_portfolio_scripts/_logging.py,sha256=B_rQMYt_1PhpwCOLBRpkKK6M1ljcF0wAIgqfPIsFUGU,354
61
- eth_portfolio_scripts/_portfolio.py,sha256=fDodXRCUo9EoGWEFBKMfWHCxo8ItAqqsWqD9X0jZYR0,6640
61
+ eth_portfolio_scripts/_portfolio.py,sha256=cv4Qpb3EdwhO2sZEOnHYFWOHaoFo6wwt3nddyfDBYv0,6724
62
62
  eth_portfolio_scripts/_utils.py,sha256=qyct1Mwf2-1DYj7BUWt2bocUfGKMap1l9sxUfHAjER0,2538
63
63
  eth_portfolio_scripts/balances.cpython-312-i386-linux-musl.so,sha256=JtqNR2y-9CbsO2IBw2fL9W3PCCieLPDYcX7anedSpRY,16728
64
64
  eth_portfolio_scripts/balances.py,sha256=o94uA4FVgPE-chbaoQgQazfXQ0O8k6W_yk9JY2bgRpQ,1524
@@ -74,10 +74,10 @@ eth_portfolio_scripts/docker/docker_compose.py,sha256=K7_Y_8NeN5s0pb9WUamgfi9Opp
74
74
  eth_portfolio_scripts/docker/.grafana/dashboards/dashboards.yaml,sha256=MynNDOk69IihoYdd2bL7j8CnRb2Co4gdqW7T4m6AaEU,202
75
75
  eth_portfolio_scripts/docker/.grafana/dashboards/Portfolio/Balances.json,sha256=dBmjogLJRuixCHWSs4ROE0_FXb-PUbqWBHEdLoP-1MU,68788
76
76
  eth_portfolio_scripts/docker/.grafana/datasources/datasources.yml,sha256=pBE_0Nh_J7d9Fiy3Xu6vuac_HWCBcFsJJSV-ryjQR1Y,188
77
- eth_portfolio_scripts/victoria/__init__.py,sha256=IUBwX_CRYWFchMf_S-IaLOKP2Vh6sxNIIhhy7YEOmeA,1922
77
+ eth_portfolio_scripts/victoria/__init__.py,sha256=hHVexpiVFJdBrdztihYBKC5hCdYDopo6aSaErI0mmOo,1965
78
78
  eth_portfolio_scripts/victoria/types.py,sha256=FJossvAvwNGkufmEk3JD_I10EEaCsOb-m6aeX_vGsUg,707
79
- eth_portfolio_temp-0.0.39.dev0.dist-info/METADATA,sha256=A-APBTI8JYiJnkG_oqFODR-Nd178jkf0OagI74_kVjk,780
80
- eth_portfolio_temp-0.0.39.dev0.dist-info/WHEEL,sha256=Vuwis_LWaa45QUuJ2qqSgABfO0elv3qQohyjTF3DnPc,110
81
- eth_portfolio_temp-0.0.39.dev0.dist-info/entry_points.txt,sha256=yqoC6X3LU1NA_-oJ6mloEYEPNmS-0hPS9OtEwgIeDGU,66
82
- eth_portfolio_temp-0.0.39.dev0.dist-info/top_level.txt,sha256=CmTLi8Lvs3RulV5ZNdziaDVvF_WRsgRpM17GSMECxrg,64
83
- eth_portfolio_temp-0.0.39.dev0.dist-info/RECORD,,
79
+ eth_portfolio_temp-0.1.1.dev0.dist-info/METADATA,sha256=V1XfOzZ9cJmXOtNVYUTZXDsAnDukLfRkzsqzYda6HxI,778
80
+ eth_portfolio_temp-0.1.1.dev0.dist-info/WHEEL,sha256=Vuwis_LWaa45QUuJ2qqSgABfO0elv3qQohyjTF3DnPc,110
81
+ eth_portfolio_temp-0.1.1.dev0.dist-info/entry_points.txt,sha256=yqoC6X3LU1NA_-oJ6mloEYEPNmS-0hPS9OtEwgIeDGU,66
82
+ eth_portfolio_temp-0.1.1.dev0.dist-info/top_level.txt,sha256=CmTLi8Lvs3RulV5ZNdziaDVvF_WRsgRpM17GSMECxrg,64
83
+ eth_portfolio_temp-0.1.1.dev0.dist-info/RECORD,,