Compare commits
4 Commits
bcae3d4e29
...
88717fbb8e
Author | SHA1 | Date | |
---|---|---|---|
88717fbb8e | |||
e5ba8f371f | |||
3eead4bd35 | |||
de619e2548 |
|
@ -55,12 +55,31 @@ __all__ = [
|
||||||
'static',
|
'static',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
import importlib
|
||||||
|
import logging
|
||||||
|
|
||||||
from . import (
|
from . import (
|
||||||
data,
|
data,
|
||||||
defi_kraken,
|
|
||||||
defi_kucoin,
|
|
||||||
defi_partisia_blockchain,
|
|
||||||
investbank_nordnet,
|
|
||||||
static,
|
static,
|
||||||
)
|
)
|
||||||
from ._version import __version__
|
from ._version import __version__
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def load_backend(name: str) -> object | None:
|
||||||
|
try:
|
||||||
|
return importlib.import_module(f'{__name__}.{name}')
|
||||||
|
except Exception:
|
||||||
|
logger.exception(
|
||||||
|
'Backend %s could not be imported? Are all module dependencies installed?',
|
||||||
|
name,
|
||||||
|
)
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Import modules
|
||||||
|
|
||||||
|
defi_kraken = load_backend('defi_kraken')
|
||||||
|
defi_kucoin = load_backend('defi_kucoin')
|
||||||
|
investbank_nordnet = load_backend('investbank_nordnet')
|
||||||
|
defi_partisia_blockchain = load_backend('defi_partisia_blockchain')
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
__version__ = '0.1.28'
|
__version__ = '0.1.29'
|
||||||
|
|
|
@ -139,7 +139,10 @@ class KucoinDepoFetcher(DepoFetcher):
|
||||||
return self._get_order_details(response['orderId'], input_asset, output_asset)
|
return self._get_order_details(response['orderId'], input_asset, output_asset)
|
||||||
|
|
||||||
def _get_order_details(
|
def _get_order_details(
|
||||||
self, order_id: str, input_asset: fin_defs.Asset, output_asset: fin_defs.Asset,
|
self,
|
||||||
|
order_id: str,
|
||||||
|
input_asset: fin_defs.Asset,
|
||||||
|
output_asset: fin_defs.Asset,
|
||||||
) -> TradeOrderDetails:
|
) -> TradeOrderDetails:
|
||||||
"""Determine the order details for the order with the given id.
|
"""Determine the order details for the order with the given id.
|
||||||
|
|
||||||
|
@ -164,14 +167,19 @@ class KucoinDepoFetcher(DepoFetcher):
|
||||||
fee_asset=fin_defs.WELL_KNOWN_SYMBOLS[order_details['feeCurrency']],
|
fee_asset=fin_defs.WELL_KNOWN_SYMBOLS[order_details['feeCurrency']],
|
||||||
fee_amount=Decimal(order_details['fee']),
|
fee_amount=Decimal(order_details['fee']),
|
||||||
executed_time=datetime.datetime.fromtimestamp(
|
executed_time=datetime.datetime.fromtimestamp(
|
||||||
order_details['createdAt'] / 1000, tz=datetime.UTC,
|
order_details['createdAt'] / 1000,
|
||||||
|
tz=datetime.UTC,
|
||||||
),
|
),
|
||||||
order_id=order_id,
|
order_id=order_id,
|
||||||
raw_order_details=order_details,
|
raw_order_details=order_details,
|
||||||
)
|
)
|
||||||
|
|
||||||
def _get_order_with_retries(
|
def _get_order_with_retries(
|
||||||
self, order_id: str, *, num_retries: int, sleep_between_tries: float = 1.0,
|
self,
|
||||||
|
order_id: str,
|
||||||
|
*,
|
||||||
|
num_retries: int,
|
||||||
|
sleep_between_tries: float = 1.0,
|
||||||
) -> dict:
|
) -> dict:
|
||||||
"""Get the order details from KuCoin backend.
|
"""Get the order details from KuCoin backend.
|
||||||
|
|
||||||
|
|
|
@ -18,18 +18,23 @@ import fin_defs
|
||||||
import requests
|
import requests
|
||||||
from frozendict import frozendict
|
from frozendict import frozendict
|
||||||
from nordnet_api_client import NordnetClient
|
from nordnet_api_client import NordnetClient
|
||||||
|
from nordnet_api_client.data import Instrument
|
||||||
|
|
||||||
from .data import Depo, DepoFetcher, DepoGroup, DepoSingle
|
from .data import Depo, DepoFetcher, DepoGroup, DepoSingle
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def asset_from_instrument(intrument) -> fin_defs.Asset | None:
|
def asset_from_instrument(instrument: Instrument) -> fin_defs.Asset | None:
|
||||||
if intrument.instrument_group_type == 'FND':
|
if instrument.instrument_group_type == 'FND':
|
||||||
return None
|
return None
|
||||||
symbol = intrument.symbol
|
symbol = instrument.symbol
|
||||||
exchange_id = intrument.tradables[0].mic
|
exchange_id = instrument.tradables[0].mic
|
||||||
return fin_defs.Stock(symbol, fin_defs.EXCHANGES_BY_IDS[exchange_id])
|
return fin_defs.Stock(
|
||||||
|
symbol,
|
||||||
|
fin_defs.EXCHANGES_BY_IDS[exchange_id],
|
||||||
|
nordnet_id=instrument.instrument_id,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
EMPTY_DICT: Mapping[str, str | int] = frozendict()
|
EMPTY_DICT: Mapping[str, str | int] = frozendict()
|
||||||
|
|
|
@ -7,7 +7,8 @@ import fin_depo
|
||||||
|
|
||||||
def test_get_depo():
|
def test_get_depo():
|
||||||
fetcher = fin_depo.static.StaticDepoFetcher(
|
fetcher = fin_depo.static.StaticDepoFetcher(
|
||||||
'Test', {fin_defs.BTC: Decimal(1000), fin_defs.USD: Decimal(2000)},
|
'Test',
|
||||||
|
{fin_defs.BTC: Decimal(1000), fin_defs.USD: Decimal(2000)},
|
||||||
)
|
)
|
||||||
|
|
||||||
depo = fetcher.get_depo()
|
depo = fetcher.get_depo()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user