Improved type annotations
This commit is contained in:
parent
1903d55038
commit
15386f0b4d
|
@ -25,6 +25,8 @@ __all__ = [
|
||||||
'defi_kucoin',
|
'defi_kucoin',
|
||||||
'defi_partisia_blockchain',
|
'defi_partisia_blockchain',
|
||||||
'investbank_nordnet',
|
'investbank_nordnet',
|
||||||
|
'__version__',
|
||||||
]
|
]
|
||||||
|
|
||||||
from . import defi_kraken, defi_kucoin, defi_partisia_blockchain, investbank_nordnet
|
from . import defi_kraken, defi_kucoin, defi_partisia_blockchain, investbank_nordnet
|
||||||
|
from ._version import __version__
|
||||||
|
|
|
@ -10,7 +10,7 @@ from fin_defs import Asset
|
||||||
|
|
||||||
|
|
||||||
@enforce_typing.enforce_types
|
@enforce_typing.enforce_types
|
||||||
@dataclasses.dataclass
|
@dataclasses.dataclass(frozen=True)
|
||||||
class Depo(abc.ABC):
|
class Depo(abc.ABC):
|
||||||
"""A depository tracking some amount of assets.
|
"""A depository tracking some amount of assets.
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ class Depo(abc.ABC):
|
||||||
|
|
||||||
|
|
||||||
@enforce_typing.enforce_types
|
@enforce_typing.enforce_types
|
||||||
@dataclasses.dataclass
|
@dataclasses.dataclass(frozen=True)
|
||||||
class DepoSingle(Depo):
|
class DepoSingle(Depo):
|
||||||
"""Base level of depository."""
|
"""Base level of depository."""
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ class DepoSingle(Depo):
|
||||||
|
|
||||||
|
|
||||||
@enforce_typing.enforce_types
|
@enforce_typing.enforce_types
|
||||||
@dataclasses.dataclass
|
@dataclasses.dataclass(frozen=True)
|
||||||
class DepoGroup(Depo):
|
class DepoGroup(Depo):
|
||||||
"""Nested depository."""
|
"""Nested depository."""
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import json
|
||||||
import logging
|
import logging
|
||||||
from collections.abc import Mapping
|
from collections.abc import Mapping
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import fin_defs
|
import fin_defs
|
||||||
import requests
|
import requests
|
||||||
|
@ -55,9 +56,9 @@ class PbcClient:
|
||||||
def get_json(
|
def get_json(
|
||||||
self,
|
self,
|
||||||
url: str,
|
url: str,
|
||||||
data: Mapping[str, str] = frozendict(),
|
data: Mapping[str, Any] = frozendict(),
|
||||||
method='POST',
|
method='POST',
|
||||||
) -> tuple[dict, datetime.datetime]:
|
) -> tuple[Any, datetime.datetime]:
|
||||||
headers = {
|
headers = {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'Accept': 'application/json',
|
'Accept': 'application/json',
|
||||||
|
@ -80,10 +81,10 @@ class PbcClient:
|
||||||
raise Exception(msg)
|
raise Exception(msg)
|
||||||
return (json_data, date)
|
return (json_data, date)
|
||||||
|
|
||||||
def determine_coins(self) -> list[dict[str, str]]:
|
def determine_coins(self) -> list[dict[str, Any]]:
|
||||||
data: dict = {'path': []}
|
data: dict = {'path': []}
|
||||||
|
|
||||||
url = URL_ACCOUNT_PLUGIN_GLOBAL.format(
|
url: str = URL_ACCOUNT_PLUGIN_GLOBAL.format(
|
||||||
hostname=HOSTNAME,
|
hostname=HOSTNAME,
|
||||||
shard='',
|
shard='',
|
||||||
)
|
)
|
||||||
|
|
|
@ -11,7 +11,9 @@ I am grateful for his pioneering work.
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import logging
|
import logging
|
||||||
|
from collections.abc import Mapping
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
import fin_defs
|
import fin_defs
|
||||||
import requests
|
import requests
|
||||||
|
@ -41,7 +43,7 @@ def asset_from_instrument_json(json) -> fin_defs.Asset | None:
|
||||||
return fin_defs.Stock(symbol, fin_defs.EXCHANGES_BY_IDS[exchange_id])
|
return fin_defs.Stock(symbol, fin_defs.EXCHANGES_BY_IDS[exchange_id])
|
||||||
|
|
||||||
|
|
||||||
EMPTY_DICT: dict[str, str | int] = frozendict()
|
EMPTY_DICT: Mapping[str, str | int] = frozendict()
|
||||||
|
|
||||||
|
|
||||||
class NordnetDepoFetcher(DepoFetcher):
|
class NordnetDepoFetcher(DepoFetcher):
|
||||||
|
@ -66,7 +68,7 @@ class NordnetDepoFetcher(DepoFetcher):
|
||||||
self.password: str = self.assert_param('password', str, password)
|
self.password: str = self.assert_param('password', str, password)
|
||||||
self.is_logged_in = False
|
self.is_logged_in = False
|
||||||
|
|
||||||
def _get_json(self, url: str, params: dict[str, str | int] = EMPTY_DICT) -> dict:
|
def _get_json(self, url: str, params: Mapping[str, str | int] = EMPTY_DICT) -> Any:
|
||||||
if not url.startswith(API_ROOT):
|
if not url.startswith(API_ROOT):
|
||||||
msg = f'Given url must be located below API ROOT: {url}'
|
msg = f'Given url must be located below API ROOT: {url}'
|
||||||
raise ValueError(msg)
|
raise ValueError(msg)
|
||||||
|
@ -80,7 +82,7 @@ class NordnetDepoFetcher(DepoFetcher):
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
return json
|
return json
|
||||||
|
|
||||||
def login(self):
|
def login(self) -> None:
|
||||||
"""Performs authentication with the login server if not already logged
|
"""Performs authentication with the login server if not already logged
|
||||||
in. Does not need to be manually called; most methods that require this
|
in. Does not need to be manually called; most methods that require this
|
||||||
information will do it themselves.
|
information will do it themselves.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import pytest
|
import pytest
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from fin_depo import data, defi_kraken
|
from fin_depo import defi_kraken
|
||||||
|
|
||||||
from . import secrets
|
from . import secrets
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ needs_secrets = pytest.mark.skipif(
|
||||||
reason='Secret kraken_USERNAME required',
|
reason='Secret kraken_USERNAME required',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@needs_secrets
|
@needs_secrets
|
||||||
def test_get_depo():
|
def test_get_depo():
|
||||||
session = requests.Session()
|
session = requests.Session()
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import pytest
|
import pytest
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from fin_depo import data, defi_kucoin
|
from fin_depo import defi_kucoin
|
||||||
|
|
||||||
from . import secrets
|
from . import secrets
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ needs_secrets = pytest.mark.skipif(
|
||||||
reason='Secret kucoin_USERNAME required',
|
reason='Secret kucoin_USERNAME required',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@needs_secrets
|
@needs_secrets
|
||||||
def test_get_depo():
|
def test_get_depo():
|
||||||
session = requests.Session()
|
session = requests.Session()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user