diff --git a/src/cryptocom/exchange/coins.py b/src/cryptocom/exchange/coins.py index 0cb50d6..5406f3f 100644 --- a/src/cryptocom/exchange/coins.py +++ b/src/cryptocom/exchange/coins.py @@ -160,6 +160,7 @@ PERP = Coin("PERP") PLA = Coin("PLA") POLS = Coin("POLS") POLY = Coin("POLY") +POND = Coin("POND") POWR = Coin("POWR") PRQ = Coin("PRQ") PYR = Coin("PYR") @@ -211,6 +212,7 @@ TRIBE = Coin("TRIBE") TRU = Coin("TRU") TUSD = Coin("TUSD") UMA = Coin("UMA") +UNFI = Coin("UNFI") UNI = Coin("UNI") USDC = Coin("USDC") USDP = Coin("USDP") diff --git a/src/cryptocom/exchange/market.py b/src/cryptocom/exchange/market.py index a5d257d..7da1f34 100644 --- a/src/cryptocom/exchange/market.py +++ b/src/cryptocom/exchange/market.py @@ -4,6 +4,7 @@ from . import pairs from .api import ApiProvider from .structs import ( Candle, + DefaultPairDict, MarketTicker, MarketTrade, OrderBook, @@ -19,12 +20,16 @@ class Exchange: def __init__(self, api: ApiProvider = None): self.api = api or ApiProvider(auth_required=False) - self.pairs = {pair.name: pair for pair in pairs.all()} + self.pairs = DefaultPairDict( + **{pair.name: pair for pair in pairs.all()} + ) async def sync_pairs(self): """Use this method to sync pairs if you have issues with missing pairs in library side.""" - self.pairs = {pair.name: pair for pair in (await self.get_pairs())} + self.pairs = DefaultPairDict( + **{pair.name: pair for pair in (await self.get_pairs())} + ) async def get_pairs(self) -> List[Pair]: """List all available market pairs and store to provide pairs info.""" diff --git a/src/cryptocom/exchange/pairs.py b/src/cryptocom/exchange/pairs.py index 4659b29..5b40253 100644 --- a/src/cryptocom/exchange/pairs.py +++ b/src/cryptocom/exchange/pairs.py @@ -207,7 +207,6 @@ KSM_USDT = Pair("KSM_USDT", price_precision=3, quantity_precision=3) LDO_BTC = Pair("LDO_BTC", price_precision=9, quantity_precision=2) LDO_USDT = Pair("LDO_USDT", price_precision=4, quantity_precision=2) LINK_BTC = Pair("LINK_BTC", price_precision=7, quantity_precision=2) -LINK_CRO = Pair("LINK_CRO", price_precision=2, quantity_precision=2) LINK_USDC = Pair("LINK_USDC", price_precision=3, quantity_precision=3) LINK_USDT = Pair("LINK_USDT", price_precision=3, quantity_precision=2) LPT_USDC = Pair("LPT_USDC", price_precision=3, quantity_precision=3) diff --git a/src/cryptocom/exchange/structs.py b/src/cryptocom/exchange/structs.py index a18be0b..db702d7 100644 --- a/src/cryptocom/exchange/structs.py +++ b/src/cryptocom/exchange/structs.py @@ -49,6 +49,16 @@ class Pair: return self.name.__hash__() +class DefaultPairDict(dict): + """Use default precision for old missing pairs.""" + + def __getitem__(self, name: str) -> Pair: + try: + return super().__getitem__(name) + except KeyError: + return Pair(name, 8, 8) + + @dataclass class MarketTicker: pair: Pair diff --git a/tests/test_private.py b/tests/test_private.py index e68d197..98da00e 100644 --- a/tests/test_private.py +++ b/tests/test_private.py @@ -55,6 +55,13 @@ async def test_account_get_balance(account: cro.Account): assert coin in local_coins +@pytest.mark.asyncio +async def test_missing_old_pairs(account: cro.Account): + missing_pair = account.pairs["LINK_CRO"] + assert missing_pair.price_precision == 8 + assert missing_pair.quantity_precision == 8 + + @pytest.mark.asyncio async def test_deposit_withdrawal_history( account: cro.Account, exchange: cro.Exchange