Source code for tradingstrategy.token

"""Token presentation."""
from typing import Optional
from dataclasses import dataclass
from dataclasses_json import dataclass_json

from .chain import ChainId


[docs]@dataclass_json @dataclass class Token: """Token presentation. Capture token essentials. """ chain_id: ChainId symbol: Optional[str] #: Ethereum address of this token. #: Always lowercase - no checksum. address: str decimals: int def __eq__(self, other): """Implemented for set()""" assert isinstance(other, Token) return self.address == other.address def __hash__(self) -> int: """Implemented for set()""" return int(self.address, 16) def __repr__(self): return f"<Token {self.symbol} at {self.address} on {self.chain_id.name} with {self.decimals} decimals>" def __post_init__(self): assert type(self.address) == str, f"Got address {self.address} as {type(self.address)}" assert self.address.startswith("0x") assert self.address.lower() == self.address assert type(self.chain_id) == ChainId assert self.decimals is not None, f"Cannot create tradeable token without decimals set"