Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions blockapi/test/v2/api/debank/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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",
Expand Down Expand Up @@ -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/"
Expand Down
16 changes: 10 additions & 6 deletions blockapi/test/v2/api/debank/test_debank_balance_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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'


Expand Down Expand Up @@ -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):
Expand Down Expand Up @@ -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'
Expand All @@ -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'
Expand Down Expand Up @@ -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):
Expand Down
4 changes: 1 addition & 3 deletions blockapi/test/v2/api/debank/test_debank_protocol_parser.py
Original file line number Diff line number Diff line change
@@ -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 (
Expand Down
84 changes: 0 additions & 84 deletions blockapi/test/v2/test_blockchain_mapping.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
16 changes: 4 additions & 12 deletions blockapi/v2/api/debank.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -161,7 +160,7 @@ class DebankModelChain(BaseModel):


class DebankChain(BaseModel):
chain: Union[Blockchain, str]
chain: str
community_id: int
name: str
logo_url: str
Expand All @@ -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,
Expand All @@ -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,
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -603,7 +596,6 @@ def _get_reward_asset_type(asset_type):


class DebankAppParser:

def parse(self, response: list) -> list[DebankApp]:
if not response:
return []
Expand Down
95 changes: 0 additions & 95 deletions blockapi/v2/blockchain_mapping.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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)

Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

PACKAGES = find_packages(where='.')

__version__ = "2.10.6"
__version__ = "2.10.7"

setuptools.setup(
name='blockapi',
Expand Down
Loading