eth-portfolio-temp 0.0.30.dev0__tar.gz → 0.0.32.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.
Files changed (113) hide show
  1. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/PKG-INFO +1 -1
  2. eth_portfolio_temp-0.0.32.dev0/eth_portfolio/_stableish.py +36 -0
  3. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/buckets.py +26 -22
  4. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/constants.py +1 -0
  5. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/docker/docker-compose.yaml +0 -4
  6. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_temp.egg-info/PKG-INFO +1 -1
  7. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_temp.egg-info/SOURCES.txt +1 -0
  8. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_temp.egg-info/top_level.txt +1 -1
  9. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/setup.py +1 -0
  10. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/.env.sample +0 -0
  11. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/.github/workflows/black.yaml +0 -0
  12. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/.github/workflows/compile.yaml +0 -0
  13. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/.github/workflows/deploy_docs.yaml +0 -0
  14. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/.github/workflows/mypy.yaml +0 -0
  15. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/.github/workflows/release.yaml +0 -0
  16. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/.gitignore +0 -0
  17. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/Makefile +0 -0
  18. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/README.md +0 -0
  19. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/brownie-config.yaml +0 -0
  20. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/Makefile +0 -0
  21. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/_build/html/_static/alabaster.css +0 -0
  22. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/_build/html/_static/basic.css +0 -0
  23. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/_build/html/_static/custom.css +0 -0
  24. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/_build/html/_static/doctools.js +0 -0
  25. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/_build/html/_static/documentation_options.js +0 -0
  26. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/_build/html/_static/file.png +0 -0
  27. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/_build/html/_static/language_data.js +0 -0
  28. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/_build/html/_static/minus.png +0 -0
  29. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/_build/html/_static/plus.png +0 -0
  30. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/_build/html/_static/pygments.css +0 -0
  31. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/_build/html/_static/searchtools.js +0 -0
  32. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/_build/html/_static/sphinx_highlight.js +0 -0
  33. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/caching.rst +0 -0
  34. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/conf.py +0 -0
  35. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/exporter.rst +0 -0
  36. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/index.rst +0 -0
  37. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/make.bat +0 -0
  38. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/docs/new-protocols.rst +0 -0
  39. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/__init__.py +0 -0
  40. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_argspec.py +0 -0
  41. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_cache.py +0 -0
  42. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_config.py +0 -0
  43. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_db/__init__.py +0 -0
  44. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_db/decorators.py +0 -0
  45. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_db/entities.py +0 -0
  46. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_db/utils.py +0 -0
  47. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_decimal.py +0 -0
  48. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_decorators.py +0 -0
  49. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_exceptions.py +0 -0
  50. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_ledgers/__init__.py +0 -0
  51. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_ledgers/address.py +0 -0
  52. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_ledgers/portfolio.py +0 -0
  53. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_loaders/__init__.py +0 -0
  54. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_loaders/_nonce.py +0 -0
  55. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_loaders/balances.py +0 -0
  56. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_loaders/token_transfer.py +0 -0
  57. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_loaders/transaction.py +0 -0
  58. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_loaders/utils.py +0 -0
  59. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_shitcoins.py +0 -0
  60. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_submodules.py +0 -0
  61. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_utils.py +0 -0
  62. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_ydb/__init__.py +0 -0
  63. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/_ydb/token_transfers.py +0 -0
  64. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/address.py +0 -0
  65. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/portfolio.py +0 -0
  66. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/protocols/__init__.py +0 -0
  67. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/protocols/_base.py +0 -0
  68. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/protocols/convex.py +0 -0
  69. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/protocols/dsr.py +0 -0
  70. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/protocols/lending/README.md +0 -0
  71. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/protocols/lending/__init__.py +0 -0
  72. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/protocols/lending/_base.py +0 -0
  73. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/protocols/lending/compound.py +0 -0
  74. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/protocols/lending/liquity.py +0 -0
  75. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/protocols/lending/maker.py +0 -0
  76. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/protocols/lending/unit.py +0 -0
  77. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/protocols/liquity.py +0 -0
  78. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/py.typed +0 -0
  79. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/structs/__init__.py +0 -0
  80. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/structs/modified.py +0 -0
  81. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/structs/structs.py +0 -0
  82. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/typing/__init__.py +0 -0
  83. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio/typing/balance/single.py +0 -0
  84. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/__init__.py +0 -0
  85. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/_args.py +0 -0
  86. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/_logging.py +0 -0
  87. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/_portfolio.py +0 -0
  88. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/_utils.py +0 -0
  89. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/balances.py +0 -0
  90. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/docker/.grafana/dashboards/Portfolio/Balances.json +0 -0
  91. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/docker/.grafana/dashboards/dashboards.yaml +0 -0
  92. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/docker/.grafana/datasources/datasources.yml +0 -0
  93. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/docker/__init__.py +0 -0
  94. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/docker/check.py +0 -0
  95. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/docker/docker_compose.py +0 -0
  96. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/main.py +0 -0
  97. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/py.typed +0 -0
  98. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/victoria/__init__.py +0 -0
  99. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_scripts/victoria/types.py +0 -0
  100. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_temp.egg-info/dependency_links.txt +0 -0
  101. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_temp.egg-info/entry_points.txt +0 -0
  102. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_temp.egg-info/not-zip-safe +0 -0
  103. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/eth_portfolio_temp.egg-info/requires.txt +0 -0
  104. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/pyproject.toml +0 -0
  105. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/requirements.txt +0 -0
  106. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/setup.cfg +0 -0
  107. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/tests/_test_completeness.py +0 -0
  108. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/tests/conftest.py +0 -0
  109. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/tests/fixtures.py +0 -0
  110. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/tests/protocols/test_external.py +0 -0
  111. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/tests/scripts/test_utils.py +0 -0
  112. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/tests/test_portfolio.py +0 -0
  113. {eth_portfolio_temp-0.0.30.dev0 → eth_portfolio_temp-0.0.32.dev0}/tests/test_typing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: eth_portfolio_temp
3
- Version: 0.0.30.dev0
3
+ Version: 0.0.32.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
@@ -0,0 +1,36 @@
1
+ from collections import defaultdict
2
+ from typing import DefaultDict, Final, Set
3
+
4
+ from eth_typing import ChecksumAddress
5
+ from y import Network, convert
6
+
7
+ stableish: Final = {
8
+ Network.Mainnet: [
9
+ "0x674C6Ad92Fd080e4004b2312b45f796a192D27a0", # USDN
10
+ "0x1456688345527bE1f37E9e627DA0837D6f08C925", # USDP
11
+ "0x865377367054516e17014CcdED1e7d814EDC9ce4", # DOLA
12
+ "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", # LUSD
13
+ "0x4Fabb145d64652a948d72533023f6E7A623C7C53", # BUSD
14
+ "0x853d955aCEf822Db058eb8505911ED77F175b99e", # FRAX
15
+ "0x5BC25f649fc4e26069dDF4cF4010F9f706c23831", # DUSD
16
+ "0x99D8a9C45b2ecA8864373A26D1459e3Dff1e17F3", # MIM
17
+ "0x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd", # GUSD
18
+ "0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919", # RAI
19
+ "0x2A8e1E676Ec238d8A992307B495b45B3fEAa5e86", # OUSD
20
+ "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51", # sUSD
21
+ "0xe2f2a5C287993345a840Db3B0845fbC70f5935a5", # mUSD
22
+ "0x5B3b5DF2BF2B6543f78e053bD91C4Bdd820929f1", # USDM
23
+ "0xdF574c24545E5FfEcb9a659c229253D4111d87e1", # HUSD
24
+ "0xa47c8bf37f92aBed4A126BDA807A7b7498661acD", # UST
25
+ ],
26
+ }
27
+
28
+ STABLEISH_COINS: DefaultDict[int, Set[ChecksumAddress]] = defaultdict(set)
29
+ """
30
+ A dictionary that contains, for each chain, a set of 'stable-ish' coins that are considered stable by the wider market but not by ypriceamgic.
31
+
32
+ These coins, and wrapper tokens that contain them, will be considered stablecoins on all dashboards.
33
+ """
34
+
35
+ for chain, tokens in stableish.items():
36
+ STABLEISH_COINS[chain].update(convert.to_address(token) for token in tokens)
@@ -3,19 +3,23 @@ from typing import Optional, Set
3
3
 
4
4
  from a_sync import igather
5
5
  from async_lru import alru_cache
6
- from brownie import chain
7
- from y.constants import STABLECOINS, WRAPPED_GAS_COIN
6
+ from eth_typing import ChecksumAddress
7
+ from y.constants import CHAINID, STABLECOINS, WRAPPED_GAS_COIN
8
+ from y.convert import to_address
8
9
  from y.datatypes import Address, AnyAddressType
10
+ from y.exceptions import ContractNotVerified
9
11
  from y.prices.lending.aave import aave
10
12
  from y.prices.lending.compound import CToken, compound
11
13
  from y.prices.stable_swap.curve import curve
12
14
  from y.prices.yearn import YearnInspiredVault, is_yearn_vault
13
15
 
14
16
  from eth_portfolio.constants import BTC_LIKE, ETH_LIKE, INTL_STABLECOINS
17
+ from eth_portfolio._stableish import STABLEISH_COINS
15
18
 
16
19
  logger = logging.getLogger(__name__)
17
20
 
18
- OTHER_LONG_TERM_ASSETS: Set[Address] = {}.get(chain.id, set())
21
+ SORT_AS_STABLES = STABLECOINS.keys() | STABLEISH_COINS[CHAINID]
22
+ OTHER_LONG_TERM_ASSETS: Set[Address] = {}.get(CHAINID, set())
19
23
 
20
24
 
21
25
  async def get_token_bucket(token: AnyAddressType) -> str:
@@ -53,27 +57,25 @@ async def get_token_bucket(token: AnyAddressType) -> str:
53
57
  - :func:`_unwrap_token`
54
58
  - :func:`_is_stable`
55
59
  """
56
- token = str(token)
60
+ token_address = to_address(token)
57
61
  try:
58
- token = str(await _unwrap_token(token))
59
- except ValueError as e:
60
- if str(e).startswith("Source for") and str(e).endswith("has not been verified"):
61
- return "Other short term assets"
62
- raise
62
+ token_address = await _unwrap_token(token_address)
63
+ except ContractNotVerified as e:
64
+ return "Other short term assets"
63
65
 
64
- if _is_stable(token):
66
+ if _is_stable(token_address):
65
67
  return "Cash & cash equivalents"
66
- if token in ETH_LIKE:
68
+ if token_address in ETH_LIKE:
67
69
  return "ETH"
68
- if token in BTC_LIKE:
70
+ if token_address in BTC_LIKE:
69
71
  return "BTC"
70
- if token in OTHER_LONG_TERM_ASSETS:
72
+ if token_address in OTHER_LONG_TERM_ASSETS:
71
73
  return "Other long term assets"
72
74
  return "Other short term assets"
73
75
 
74
76
 
75
77
  @alru_cache(maxsize=None)
76
- async def _unwrap_token(token) -> str:
78
+ async def _unwrap_token(token) -> ChecksumAddress:
77
79
  """
78
80
  Recursively unwrap a token to its underlying asset.
79
81
 
@@ -153,23 +155,24 @@ def _pool_bucket(pool_tokens: set) -> Optional[str]:
153
155
  return list(BTC_LIKE)[0]
154
156
  if pool_tokens < ETH_LIKE:
155
157
  return list(ETH_LIKE)[0]
156
- if pool_tokens < STABLECOINS.keys():
157
- return list(STABLECOINS.keys())[0]
158
+ if pool_tokens < SORT_AS_STABLES:
159
+ return list(SORT_AS_STABLES)[0]
158
160
  return list(INTL_STABLECOINS)[0] if pool_tokens < INTL_STABLECOINS else None
159
161
 
160
162
 
161
- def _is_stable(token: Address) -> bool:
163
+ def _is_stable(token: ChecksumAddress) -> bool:
162
164
  """
163
- Check if a token is a stablecoin.
165
+ Check if a token is a stablecoin or stable-ish coin.
164
166
 
165
- This function checks if a given token is present in the :data:`STABLECOINS` or
166
- :data:`INTL_STABLECOINS` sets, indicating that it is a stablecoin.
167
+ This function checks if a given token is present in the :data:`STABLECOINS`,
168
+ :data:`INTL_STABLECOINS`, or :data:`STABLEISH_COINS` sets, indicating that it is
169
+ a stablecoin or considered stable by the wider market.
167
170
 
168
171
  Args:
169
172
  token: The address of the token to check.
170
173
 
171
174
  Example:
172
- Check if a token is a stablecoin:
175
+ Check if a token is a stablecoin or stable-ish coin:
173
176
 
174
177
  >>> _is_stable("0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48")
175
178
  True
@@ -177,5 +180,6 @@ def _is_stable(token: Address) -> bool:
177
180
  See Also:
178
181
  - :data:`STABLECOINS`
179
182
  - :data:`INTL_STABLECOINS`
183
+ - :data:`STABLEISH_COINS`
180
184
  """
181
- return token in STABLECOINS or token in INTL_STABLECOINS
185
+ return token in STABLECOINS or token in INTL_STABLECOINS or token in STABLEISH
@@ -52,6 +52,7 @@ INTL_STABLECOINS: Final = {
52
52
  "0xC581b735A1688071A1746c968e0798D642EDE491", # EURT
53
53
  "0xdB25f211AB05b1c97D595516F45794528a807ad8", # EURS
54
54
  "0x96E61422b6A9bA0e068B6c5ADd4fFaBC6a4aae27", # ibEUR
55
+ "0x9fcf418B971134625CdF38448B949C8640971671", # EURN
55
56
  "0x269895a3dF4D73b077Fc823dD6dA1B95f72Aaf9B", # sKRW
56
57
  "0x3F1B0278A9ee595635B61817630cC19DE792f506", # sAUD
57
58
  "0x97fe22E7341a0Cd8Db6F6C021A24Dc8f4DAD855F", # sGBP
@@ -1,9 +1,6 @@
1
1
  networks:
2
2
  eth_portfolio:
3
3
 
4
- volumes:
5
- grafana_data: {}
6
-
7
4
  services:
8
5
  grafana:
9
6
  image: grafana/grafana:10.2.0
@@ -22,7 +19,6 @@ services:
22
19
  #command: >
23
20
  # sh -c "grafana-cli plugins install frser-sqlite-datasource && /run.sh"
24
21
  volumes:
25
- - grafana_data:/var/lib/grafana
26
22
  - ./.grafana/:/etc/grafana/provisioning/
27
23
  networks:
28
24
  - eth_portfolio
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: eth-portfolio-temp
3
- Version: 0.0.30.dev0
3
+ Version: 0.0.32.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
@@ -38,6 +38,7 @@ eth_portfolio/_decimal.py
38
38
  eth_portfolio/_decorators.py
39
39
  eth_portfolio/_exceptions.py
40
40
  eth_portfolio/_shitcoins.py
41
+ eth_portfolio/_stableish.py
41
42
  eth_portfolio/_submodules.py
42
43
  eth_portfolio/_utils.py
43
44
  eth_portfolio/address.py
@@ -1,3 +1,3 @@
1
- bb56d21cd75f4f6de8f2__mypyc
1
+ 295eace8438df6ec133b__mypyc
2
2
  eth_portfolio
3
3
  eth_portfolio_scripts
@@ -59,6 +59,7 @@ try:
59
59
  "eth_portfolio/_argspec.py",
60
60
  "eth_portfolio/_config.py",
61
61
  "eth_portfolio/_shitcoins.py",
62
+ "eth_portfolio/_stableish.py",
62
63
  # "eth_portfolio/_submodules.py",
63
64
  "eth_portfolio/constants.py",
64
65
  "eth_portfolio_scripts/docker",