fix: missing pairs available with default precision

api-breakage
Morty Space 4 years ago
parent 279939f919
commit 7cb325b591
  1. 2
      src/cryptocom/exchange/coins.py
  2. 9
      src/cryptocom/exchange/market.py
  3. 1
      src/cryptocom/exchange/pairs.py
  4. 10
      src/cryptocom/exchange/structs.py
  5. 7
      tests/test_private.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")

@ -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."""

@ -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)

@ -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

@ -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

Loading…
Cancel
Save