diff --git a/blockapi/test/v2/api/debank/conftest.py b/blockapi/test/v2/api/debank/conftest.py index 52e5c40..b54e65b 100644 --- a/blockapi/test/v2/api/debank/conftest.py +++ b/blockapi/test/v2/api/debank/conftest.py @@ -566,7 +566,7 @@ def yflink_protocol_response_raw(): def protocol_yflink(): return Protocol.from_api( protocol_id="yflink", - chain=Blockchain.ETHEREUM, + chain='eth', name="YFLink", user_deposit=1234.5, site_url="https://linkswap.app", @@ -578,7 +578,7 @@ def protocol_yflink(): def protocol_trader_joe(): return Protocol.from_api( protocol_id="avax_traderjoexyz_lending", - chain=Blockchain.AVALANCHE, + chain='avax', name="Trader Joe Lending", user_deposit='162476998.75607753', site_url="https://www.traderjoexyz.com", @@ -612,7 +612,7 @@ def debank_chain_eth_response_raw(): @pytest.fixture def debank_chain_eth(): return DebankChain( - chain=Blockchain.ETHEREUM, + chain='eth', community_id=1, name='Ethereum', logo_url="https://static.debank.com/image/chain/logo_url/eth/" diff --git a/blockapi/test/v2/api/debank/test_debank_balance_parser.py b/blockapi/test/v2/api/debank/test_debank_balance_parser.py index 7a900c4..03b0332 100644 --- a/blockapi/test/v2/api/debank/test_debank_balance_parser.py +++ b/blockapi/test/v2/api/debank/test_debank_balance_parser.py @@ -71,7 +71,7 @@ def test_balance_parser_parses_protocol( item = balance_parser.parse([coin_with_protocol_response])[0] assert item.protocol.protocol_id == "yflink" assert item.protocol.name == "YFLink" - assert item.protocol.chain == Blockchain.ETHEREUM + assert item.protocol.chain == 'eth' assert item.protocol.user_deposit == Decimal(1234.5) assert item.coin.protocol_id == "yflink" @@ -82,7 +82,7 @@ def test_debank_parses_coin(balance_parser, coin_response): assert item.coin.symbol == "PYRO" assert item.coin.name == "PYRO Network" assert item.coin.decimals == 18 - assert item.coin.blockchain == Blockchain.ETHEREUM + assert item.coin.blockchain == 'eth' assert item.coin.address == '0x14409B0Fc5C7f87b5DAd20754fE22d29A3dE8217' @@ -127,7 +127,9 @@ def test_get_coin_returns_defined_coin(balance_parser): ) coin = balance_parser.get_coin(balance) - assert coin is COIN_ETH + assert coin.symbol == 'ETH' + assert coin.blockchain == 'eth' + assert coin.info.coingecko_id == CoingeckoId.ETHEREUM def test_get_coin_preserves_protocol_id(balance_parser): @@ -159,7 +161,7 @@ def test_get_coin_creates_know_coin_allowed_blockchains(balance_parser): coin = balance_parser.get_coin(balance) assert coin.symbol == 'ETH' - assert coin.blockchain == Blockchain.OPTIMISM + assert coin.blockchain == 'op' assert coin.info.coingecko_id == CoingeckoId.ETHEREUM assert coin.protocol_id == 'optimism' assert coin.address == 'op' @@ -178,7 +180,7 @@ def test_get_coin_creates_unknown_coin(balance_parser): coin = balance_parser.get_coin(balance) assert coin.symbol == 'WAVAX' - assert coin.blockchain == Blockchain.AVALANCHE + assert coin.blockchain == 'avax' assert not coin.info.coingecko_id assert coin.protocol_id == 'avax_gmx' assert coin.address == '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7' @@ -229,7 +231,9 @@ def test_all_mapping(contract, symbol, coin, balance_parser): amount=Decimal(1), ) - assert coin == balance_parser.get_coin(balance) + parsed = balance_parser.get_coin(balance) + assert parsed.blockchain == contract + assert parsed.info.coingecko_id == coin.info.coingecko_id def test_balance_with_unknown_chain_is_returned(balance_parser): diff --git a/blockapi/test/v2/api/debank/test_debank_protocol_parser.py b/blockapi/test/v2/api/debank/test_debank_protocol_parser.py index d91c389..b36f271 100644 --- a/blockapi/test/v2/api/debank/test_debank_protocol_parser.py +++ b/blockapi/test/v2/api/debank/test_debank_protocol_parser.py @@ -1,12 +1,10 @@ from decimal import Decimal -from blockapi.v2.models import Blockchain - def test_can_parse_protocol(protocol_parser, yflink_protocol_response): parsed = protocol_parser.parse(yflink_protocol_response) assert parsed['yflink'].protocol_id == 'yflink' - assert parsed['yflink'].chain == Blockchain.ETHEREUM + assert parsed['yflink'].chain == 'eth' assert parsed['yflink'].name == 'YFLink' assert parsed['yflink'].site_url == 'https://linkswap.app' assert ( diff --git a/blockapi/test/v2/test_blockchain_mapping.py b/blockapi/test/v2/test_blockchain_mapping.py index 14f6b75..e8a4149 100644 --- a/blockapi/test/v2/test_blockchain_mapping.py +++ b/blockapi/test/v2/test_blockchain_mapping.py @@ -3,7 +3,6 @@ from blockapi.v2.blockchain_mapping import ( get_blockchain_from_chain_id, get_blockchain_from_coingecko_chain, - get_blockchain_from_debank_chain, get_blockchain_from_rango_chain, ) from blockapi.v2.models import Blockchain @@ -150,86 +149,3 @@ def test_map_coingecko(chain: str, expected: Blockchain): def test_map_by_id(): assert get_blockchain_from_chain_id(1) == Blockchain.ETHEREUM - - -@pytest.mark.parametrize( - 'chain,expected', - [ - ('a8', Blockchain.ANCIENT8), - ('ace', Blockchain.ENDURANCE), - ('ailayer', Blockchain.AI_LAYER), - ('alienx', Blockchain.ALIEN_X), - ('alot', Blockchain.DEX_ALOT), - ('ape', Blockchain.APE), - ('apex', Blockchain.PROOF_OF_PLAY_APEX), - ('aura', Blockchain.AURA), - ('aze', Blockchain.ASTAR_ZKEVM), - ('b2', Blockchain.B2), - ('bb', Blockchain.BOUNCE_BIT), - ('bevm', Blockchain.BEVM), - ('bfc', Blockchain.BIFROST), - ('bob', Blockchain.BOB), - ('brise', Blockchain.BITGERT), - ('btr', Blockchain.BIT_LAYER), - ('cfx', Blockchain.CONFLUX), - ('ckb', Blockchain.GODWOKEN), - ('combo', Blockchain.COMBO), - ('croze', Blockchain.CRONOS_ZKEVM), - ('cyber', Blockchain.CYBER), - ('dbk', Blockchain.DBK), - ('degen', Blockchain.DEGEN), - ('doge', Blockchain.DOGECHAIN), - ('dym', Blockchain.DYMENSION), - ('ela', Blockchain.ELASTOS), - ('eon', Blockchain.HORIZEN_EON), - ('era', Blockchain.ZKSYNC_ERA), - ('ethlink', Blockchain.ETHERLINK), - ('fon', Blockchain.FON_CHAIN), - ('frax', Blockchain.FRAXTAL), - ('fx', Blockchain.FUNCTION_X), - ('iota', Blockchain.IOTA_EVM), - ('itze', Blockchain.IMMUTABLE), - ('karak', Blockchain.KARAK), - ('kroma', Blockchain.KROMA), - ('lumio', Blockchain.SUPER_LUMIO), - ('lyra', Blockchain.DERIVE), - ('mada', Blockchain.MILKOMEDA_C1), - ('manta', Blockchain.MANTA_PACIFIC), - ('map', Blockchain.MAP_PROTOCOL), - ('merlin', Blockchain.MERLIN_CHAIN), - ('mint', Blockchain.MINT), - ('molten', Blockchain.MOLTEN), - ('morph', Blockchain.MORPH), - ('neon', Blockchain.NEON_EVM), - ('nova', Blockchain.ARBITRUM_NOVA), - ('orderly', Blockchain.ORDERLY), - ('platon', Blockchain.PLAT_ON), - ('pze', Blockchain.POLYGON_ZK_EVM), - ('reya', Blockchain.REYA), - ('rsk', Blockchain.RSK), - ('savm', Blockchain.SATOSHI_VM_ALPHA), - ('scrl', Blockchain.SCROLL), - ('sei', Blockchain.SEI), - ('shape', Blockchain.SHAPE), - ('shib', Blockchain.SHIBARIUM), - ('smr', Blockchain.SHIMMER_EVM), - ('sonic', Blockchain.SONIC), - ('step', Blockchain.STEP_NETWORK), - ('strax', Blockchain.STRATIS), - ('swell', Blockchain.SWELL), - ('sx', Blockchain.SX_NETWORK), - ('taiko', Blockchain.TAIKO), - ('tomb', Blockchain.TOMBCHAIN), - ('ulx', Blockchain.ULTRON), - ('world', Blockchain.WORLD_CHAIN), - ('wyzth', Blockchain.WYZTH), - ('xlayer', Blockchain.X_LAYER), - ('zero', Blockchain.ZERO), - ('zeta', Blockchain.ZETA_CHAIN), - ('zircuit', Blockchain.ZIRCUIT), - ('zklink', Blockchain.ZKLINK_NOVA), - ('gravity', Blockchain.GRAVITY), - ], -) -def test_map_debank(chain: str, expected: Blockchain): - assert get_blockchain_from_debank_chain(chain) == expected diff --git a/blockapi/v2/api/debank.py b/blockapi/v2/api/debank.py index abf8a60..795fbc2 100644 --- a/blockapi/v2/api/debank.py +++ b/blockapi/v2/api/debank.py @@ -24,7 +24,6 @@ IPortfolio, ISleepProvider, ) -from blockapi.v2.blockchain_mapping import get_blockchain_from_debank_chain from blockapi.v2.coin_mapping import symbol_to_coin_map from blockapi.v2.models import ( AssetType, @@ -161,7 +160,7 @@ class DebankModelChain(BaseModel): class DebankChain(BaseModel): - chain: Union[Blockchain, str] + chain: str community_id: int name: str logo_url: str @@ -180,11 +179,9 @@ def parse(self, response: List) -> Dict[str, Protocol]: @staticmethod def parse_item(item: DebankModelProtocol) -> Optional[Protocol]: - blockchain = get_blockchain_from_debank_chain(item.chain) or item.chain - return Protocol.from_api( protocol_id=item.id, - chain=blockchain, + chain=item.chain, name=item.name, user_deposit=item.tvl, site_url=item.site_url, @@ -205,10 +202,8 @@ def parse(self, response: List) -> list[DebankChain]: @staticmethod def parse_item(item: DebankModelChain) -> DebankChain: - blockchain = get_blockchain_from_debank_chain(item.id) or item.id - return DebankChain( - chain=blockchain, + chain=item.id, community_id=item.community_id, name=item.name, logo_url=item.logo_url, @@ -349,9 +344,7 @@ def parse_item( def get_coin(self, balance_item: DebankModelBalanceItem) -> Coin: contract = balance_item.id - blockchain = ( - get_blockchain_from_debank_chain(balance_item.chain) or balance_item.chain - ) + blockchain = balance_item.chain symbol = self.get_symbol(balance_item) coingecko_id = get_coingecko_id(contract, symbol) @@ -603,7 +596,6 @@ def _get_reward_asset_type(asset_type): class DebankAppParser: - def parse(self, response: list) -> list[DebankApp]: if not response: return [] diff --git a/blockapi/v2/blockchain_mapping.py b/blockapi/v2/blockchain_mapping.py index dd4e5e1..d357d4f 100644 --- a/blockapi/v2/blockchain_mapping.py +++ b/blockapi/v2/blockchain_mapping.py @@ -5,97 +5,6 @@ logger = logging.getLogger(__name__) -DEBANK_BLOCKCHAINS_MAP = { - 'a8': Blockchain.ANCIENT8, - 'abs': Blockchain.ABSTRACT, - 'ace': Blockchain.ENDURANCE, - 'ailayer': Blockchain.AI_LAYER, - 'alot': Blockchain.DEX_ALOT, - 'apex': Blockchain.PROOF_OF_PLAY_APEX, - 'arb': Blockchain.ARBITRUM, - 'avax': Blockchain.AVALANCHE, - 'aze': Blockchain.ASTAR_ZKEVM, - 'bb': Blockchain.BOUNCE_BIT, - 'bera': Blockchain.BERACHAIN, - 'bfc': Blockchain.BIFROST, - 'boba': Blockchain.BOBA, - 'brise': Blockchain.BITGERT, - 'bsc': Blockchain.BINANCE_SMART_CHAIN, - 'btr': Blockchain.BIT_LAYER, - 'btt': Blockchain.BIT_TORRENT, - 'cfx': Blockchain.CONFLUX, - 'ckb': Blockchain.GODWOKEN, - 'core': Blockchain.CORE_CHAIN, - 'cro': Blockchain.CRONOS, - 'croze': Blockchain.CRONOS_ZKEVM, - 'dfk': Blockchain.DEFI_KINGDOMS, - 'doge': Blockchain.DOGECHAIN, - 'dym': Blockchain.DYMENSION, - 'ela': Blockchain.ELASTOS, - 'eon': Blockchain.HORIZEN_EON, - 'era': Blockchain.ZKSYNC_ERA, - 'etc': Blockchain.ETHEREUM_CLASSIC, - 'eth': Blockchain.ETHEREUM, - 'ethlink': Blockchain.ETHERLINK, - 'evmos': Blockchain.COSMOS, - 'hyper': Blockchain.HYPEREVM, - 'flr': Blockchain.FLARE, - 'fon': Blockchain.FON_CHAIN, - 'frax': Blockchain.FRAXTAL, - 'fsn': Blockchain.FUSION_NETWORK, - 'ftm': Blockchain.FANTOM, - 'fx': Blockchain.FUNCTION_X, - 'hmy': Blockchain.HARMONY, - 'iota': Blockchain.IOTA_EVM, - 'iotx': Blockchain.IOTEX, - 'itze': Blockchain.IMMUTABLE, - 'kcc': Blockchain.KUCOIN, - 'klay': Blockchain.KLAY_TOKEN, - 'lumio': Blockchain.SUPER_LUMIO, - 'lyra': Blockchain.DERIVE, - 'lyx': Blockchain.LUKSO, - 'mada': Blockchain.MILKOMEDA_C1, - 'manta': Blockchain.MANTA_PACIFIC, - 'map': Blockchain.MAP_PROTOCOL, - 'matic': Blockchain.POLYGON, - 'merlin': Blockchain.MERLIN_CHAIN, - 'metis': Blockchain.METIS_ANDROMEDA, - 'mnt': Blockchain.MANTLE, - 'mobm': Blockchain.MOONBEAM, - 'movr': Blockchain.MOONRIVER, - 'mtr': Blockchain.METER, - 'neon': Blockchain.NEON_EVM, - 'nova': Blockchain.ARBITRUM_NOVA, - 'oas': Blockchain.OASYS, - 'op': Blockchain.OPTIMISM, - 'opbnb': Blockchain.OPTIMISTIC_BNB, - 'platon': Blockchain.PLAT_ON, - 'pls': Blockchain.PULSE, - 'pze': Blockchain.POLYGON_ZK_EVM, - 'ron': Blockchain.RONIN, - 'rose': Blockchain.OASIS_EMERALD, - 'savm': Blockchain.SATOSHI_VM_ALPHA, - 'sbch': Blockchain.SMART_BITCOIN_CASH, - 'scrl': Blockchain.SCROLL, - 'sdn': Blockchain.SHIDEN_NETWORK, - 'sgb': Blockchain.SONGBIRD, - 'shib': Blockchain.SHIBARIUM, - 'smr': Blockchain.SHIMMER_EVM, - 'step': Blockchain.STEP_NETWORK, - 'strax': Blockchain.STRATIS, - 'sx': Blockchain.SX_NETWORK, - 'tlos': Blockchain.TELOS, - 'tomb': Blockchain.TOMBCHAIN, - 'ulx': Blockchain.ULTRON, - 'uni': Blockchain.UNICHAIN, - 'wan': Blockchain.WANCHAIN, - 'wemix': Blockchain.WEMIX_NETWORK, - 'world': Blockchain.WORLD_CHAIN, - 'xlayer': Blockchain.X_LAYER, - 'zeta': Blockchain.ZETA_CHAIN, - 'zklink': Blockchain.ZKLINK_NOVA, -} - COINGECKO_BLOCKCHAINS_MAP = { 'areon-network': Blockchain.AREON, 'astar-zkevm': Blockchain.ASTAR_ZKEVM, @@ -265,10 +174,6 @@ def _get_chain_mapping( return None -def get_blockchain_from_debank_chain(chain: Optional[str]) -> Optional[Blockchain]: - return _get_chain_mapping(chain, 'DeBank', DEBANK_BLOCKCHAINS_MAP) - - def get_blockchain_from_coingecko_chain(chain: Optional[str]) -> Optional[Blockchain]: return _get_chain_mapping(chain, 'CoinGecko', COINGECKO_BLOCKCHAINS_MAP) diff --git a/setup.py b/setup.py index ca13d69..7713b6e 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ PACKAGES = find_packages(where='.') -__version__ = "2.10.6" +__version__ = "2.10.7" setuptools.setup( name='blockapi',