eth-portfolio-temp 0.0.39.dev0__tar.gz → 0.1.2.dev0__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.

Potentially problematic release.


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

Files changed (113) hide show
  1. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/.github/workflows/mypy.yaml +1 -1
  2. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/.github/workflows/release.yaml +0 -16
  3. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/PKG-INFO +2 -2
  4. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_db/utils.py +1 -1
  5. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_loaders/_nonce.py +4 -4
  6. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_ydb/token_transfers.py +4 -4
  7. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/address.py +2 -1
  8. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/buckets.py +2 -2
  9. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/typing/__init__.py +2 -2
  10. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/_portfolio.py +3 -3
  11. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/victoria/__init__.py +3 -0
  12. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_temp.egg-info/PKG-INFO +2 -2
  13. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_temp.egg-info/requires.txt +1 -1
  14. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/pyproject.toml +2 -1
  15. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/requirements.txt +1 -1
  16. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/setup.py +1 -2
  17. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/.env.sample +0 -0
  18. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/.github/workflows/black.yaml +0 -0
  19. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/.github/workflows/compile.yaml +0 -0
  20. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/.github/workflows/deploy_docs.yaml +0 -0
  21. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/.gitignore +0 -0
  22. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/Makefile +0 -0
  23. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/README.md +0 -0
  24. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/brownie-config.yaml +0 -0
  25. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/Makefile +0 -0
  26. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/_build/html/_static/alabaster.css +0 -0
  27. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/_build/html/_static/basic.css +0 -0
  28. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/_build/html/_static/custom.css +0 -0
  29. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/_build/html/_static/doctools.js +0 -0
  30. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/_build/html/_static/documentation_options.js +0 -0
  31. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/_build/html/_static/file.png +0 -0
  32. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/_build/html/_static/language_data.js +0 -0
  33. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/_build/html/_static/minus.png +0 -0
  34. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/_build/html/_static/plus.png +0 -0
  35. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/_build/html/_static/pygments.css +0 -0
  36. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/_build/html/_static/searchtools.js +0 -0
  37. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/_build/html/_static/sphinx_highlight.js +0 -0
  38. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/caching.rst +0 -0
  39. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/conf.py +0 -0
  40. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/exporter.rst +0 -0
  41. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/index.rst +0 -0
  42. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/make.bat +0 -0
  43. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/docs/new-protocols.rst +0 -0
  44. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/__init__.py +0 -0
  45. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_argspec.py +0 -0
  46. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_cache.py +0 -0
  47. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_config.py +0 -0
  48. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_db/__init__.py +0 -0
  49. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_db/decorators.py +0 -0
  50. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_db/entities.py +0 -0
  51. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_decimal.py +0 -0
  52. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_decorators.py +0 -0
  53. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_exceptions.py +0 -0
  54. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_ledgers/__init__.py +0 -0
  55. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_ledgers/address.py +0 -0
  56. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_ledgers/portfolio.py +0 -0
  57. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_loaders/__init__.py +0 -0
  58. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_loaders/balances.py +0 -0
  59. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_loaders/token_transfer.py +0 -0
  60. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_loaders/transaction.py +0 -0
  61. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_loaders/utils.py +0 -0
  62. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_shitcoins.py +0 -0
  63. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_stableish.py +0 -0
  64. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_submodules.py +0 -0
  65. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_utils.py +0 -0
  66. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/_ydb/__init__.py +0 -0
  67. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/constants.py +0 -0
  68. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/portfolio.py +0 -0
  69. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/protocols/__init__.py +0 -0
  70. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/protocols/_base.py +0 -0
  71. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/protocols/convex.py +0 -0
  72. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/protocols/dsr.py +0 -0
  73. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/protocols/lending/README.md +0 -0
  74. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/protocols/lending/__init__.py +0 -0
  75. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/protocols/lending/_base.py +0 -0
  76. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/protocols/lending/compound.py +0 -0
  77. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/protocols/lending/liquity.py +0 -0
  78. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/protocols/lending/maker.py +0 -0
  79. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/protocols/lending/unit.py +0 -0
  80. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/protocols/liquity.py +0 -0
  81. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/py.typed +0 -0
  82. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/structs/__init__.py +0 -0
  83. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/structs/modified.py +0 -0
  84. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/structs/structs.py +0 -0
  85. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio/typing/balance/single.py +0 -0
  86. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/__init__.py +0 -0
  87. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/_args.py +0 -0
  88. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/_logging.py +0 -0
  89. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/_utils.py +0 -0
  90. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/balances.py +0 -0
  91. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/docker/.grafana/dashboards/Portfolio/Balances.json +0 -0
  92. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/docker/.grafana/dashboards/dashboards.yaml +0 -0
  93. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/docker/.grafana/datasources/datasources.yml +0 -0
  94. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/docker/__init__.py +0 -0
  95. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/docker/check.py +0 -0
  96. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/docker/docker-compose.yaml +0 -0
  97. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/docker/docker_compose.py +0 -0
  98. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/main.py +0 -0
  99. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/py.typed +0 -0
  100. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_scripts/victoria/types.py +0 -0
  101. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_temp.egg-info/SOURCES.txt +0 -0
  102. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_temp.egg-info/dependency_links.txt +0 -0
  103. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_temp.egg-info/entry_points.txt +0 -0
  104. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_temp.egg-info/not-zip-safe +0 -0
  105. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/eth_portfolio_temp.egg-info/top_level.txt +0 -0
  106. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/setup.cfg +0 -0
  107. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/tests/_test_completeness.py +0 -0
  108. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/tests/conftest.py +0 -0
  109. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/tests/fixtures.py +0 -0
  110. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/tests/protocols/test_external.py +0 -0
  111. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/tests/scripts/test_utils.py +0 -0
  112. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/tests/test_portfolio.py +0 -0
  113. {eth_portfolio_temp-0.0.39.dev0 → eth_portfolio_temp-0.1.2.dev0}/tests/test_typing.py +0 -0
@@ -16,7 +16,7 @@ jobs:
16
16
  fail-fast: false
17
17
  matrix:
18
18
  os: [ ubuntu-latest, macos-latest, windows-latest ]
19
- pyversion: [ "3.9", "3.10", "3.11", "3.12" ]
19
+ pyversion: [ "3.10", "3.11", "3.12" ]
20
20
 
21
21
  steps:
22
22
  - name: Checkout
@@ -41,15 +41,6 @@ jobs:
41
41
  cibw_archs_linux: x86_64
42
42
  artifact_name: "wheels-ubuntu-latest-musllinux-x64"
43
43
 
44
- # ----------------------------------------------------
45
- # musllinux 32-bit
46
- # ----------------------------------------------------
47
- - os: ubuntu-latest
48
- build_type: musllinux-x86
49
- cibw_build: "*musllinux*"
50
- cibw_archs_linux: i686
51
- artifact_name: "wheels-ubuntu-latest-musllinux-x86"
52
-
53
44
  # ----------------------------------------------------
54
45
  # macOS (64-bit only)
55
46
  # ----------------------------------------------------
@@ -160,12 +151,6 @@ jobs:
160
151
  name: "wheels-ubuntu-latest-musllinux-x64"
161
152
  path: wheelhouse/linux-musl-x64
162
153
 
163
- - name: Download musllinux 32-bit wheels
164
- uses: actions/download-artifact@v4
165
- with:
166
- name: "wheels-ubuntu-latest-musllinux-x86"
167
- path: wheelhouse/linux-musl-x86
168
-
169
154
  - name: Download macOS wheels
170
155
  uses: actions/download-artifact@v4
171
156
  with:
@@ -197,7 +182,6 @@ jobs:
197
182
  wheelhouse/linux-many-x64/*.whl \
198
183
  wheelhouse/linux-many-x86/*.whl \
199
184
  wheelhouse/linux-musl-x64/*.whl \
200
- wheelhouse/linux-musl-x86/*.whl \
201
185
  wheelhouse/macos/*.whl \
202
186
  wheelhouse/windows-x64/*.whl \
203
187
  wheelhouse/windows-x86/*.whl
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: eth_portfolio_temp
3
- Version: 0.0.39.dev0
3
+ Version: 0.1.2.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
@@ -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
  )
@@ -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
 
@@ -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,8 +1,8 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: eth-portfolio-temp
3
- Version: 0.0.39.dev0
3
+ Version: 0.1.2.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
@@ -6,6 +6,6 @@ evmspec>=0.4.1
6
6
  ez-a-sync>=0.32.7
7
7
  faster-eth-utils
8
8
  numpy<2
9
- pandas<1.6,>=1.4.3
9
+ pandas<3,>=1.4.3
10
10
  typed-envs>=0.0.9
11
11
  ypricemagic<5,>=4.6.21.dev0
@@ -4,8 +4,9 @@ requires = [
4
4
  "wheel",
5
5
  "mypy[mypyc]>=1.14.1,<1.17.1",
6
6
  "types-aiofiles",
7
- "ez-a-sync>=0.32.7,<0.33",
7
+ "eth-brownie==1.21.0; sys_platform=='linux'",
8
8
  "eth-typing==4.4.0",
9
+ "ez-a-sync>=0.32.7,<0.33",
9
10
  ]
10
11
 
11
12
  [tool.mypy]
@@ -6,6 +6,6 @@ evmspec>=0.4.1
6
6
  ez-a-sync>=0.32.7
7
7
  faster-eth-utils
8
8
  numpy<2
9
- pandas>=1.4.3,<1.6
9
+ pandas>=1.4.3,<3
10
10
  typed-envs>=0.0.9
11
11
  ypricemagic>=4.6.21.dev0,<5
@@ -77,7 +77,6 @@ try:
77
77
  "--disable-error-code=misc",
78
78
  "--disable-error-code=type-arg",
79
79
  "--disable-error-code=attr-defined",
80
- "--disable-error-code=name-defined",
81
80
  "--disable-error-code=no-any-return",
82
81
  "--disable-error-code=arg-type",
83
82
  "--disable-error-code=no-untyped-call",
@@ -105,7 +104,7 @@ except Exception as e: # fallback in case build fails
105
104
  setup(
106
105
  # NOTE: somebody stole our name on pypi, we have this placeholder until we steal it back
107
106
  name="eth_portfolio_temp",
108
- python_requires=">=3.9,<3.13",
107
+ python_requires=">=3.10,<3.13",
109
108
  # name="eth-portfolio",
110
109
  packages=find_packages(),
111
110
  use_scm_version={