nordnet_client is now gated behind soft import
This commit is contained in:
parent
3eead4bd35
commit
e5ba8f371f
|
@ -55,20 +55,31 @@ __all__ = [
|
||||||
'static',
|
'static',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
import importlib
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from . import (
|
from . import (
|
||||||
data,
|
data,
|
||||||
defi_kraken,
|
|
||||||
defi_kucoin,
|
|
||||||
defi_partisia_blockchain,
|
|
||||||
static,
|
static,
|
||||||
)
|
)
|
||||||
from ._version import __version__
|
from ._version import __version__
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def load_backend(name: str) -> object | None:
|
||||||
try:
|
try:
|
||||||
from . import investbank_nordnet
|
return importlib.import_module(f'{__name__}.{name}')
|
||||||
except ImportError:
|
except Exception:
|
||||||
logger.exception('Could not import %s. Are module requirements installed?', 'fin_depo.investbank_nordnet')
|
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')
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,11 @@ def asset_from_instrument(instrument: Instrument) -> fin_defs.Asset | None:
|
||||||
return None
|
return None
|
||||||
symbol = instrument.symbol
|
symbol = instrument.symbol
|
||||||
exchange_id = instrument.tradables[0].mic
|
exchange_id = instrument.tradables[0].mic
|
||||||
return fin_defs.Stock(symbol, fin_defs.EXCHANGES_BY_IDS[exchange_id], nordnet_id = instrument.instrument_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