diff --git a/fin_defs/__init__.py b/fin_defs/__init__.py index 4b2a1c7..db93f0e 100644 --- a/fin_defs/__init__.py +++ b/fin_defs/__init__.py @@ -512,15 +512,26 @@ class AssetAmount: asset: Asset amount: Decimal + def __post_init__(self): + assert isinstance(self.asset, Asset), 'Incorrect value for self.asset' + assert isinstance(self.amount, Decimal), 'Incorrect value for self.amount' + def __str__(self) -> str: return self.human_readable_str() def human_readable_str(self) -> str: abs_amount = abs(self.amount) - specificity = '2' if abs_amount >= THREE_DECIMALS_UNDER_THIS_AMOUNT else '3' + + # Determine specificity + specificity = '3' + if abs_amount != abs_amount: + specificity = '0' + elif abs_amount >= THREE_DECIMALS_UNDER_THIS_AMOUNT: + specificity = '2' + prefix = ASSET_PREFIX.get(self.asset, '') return ('{sign}{prefix}{amount:.' + specificity + 'f} {name}').format( - sign='-' if self.amount < 0 else '', + sign='-' if (self.amount == self.amount and self.amount < 0) else '', prefix=prefix, amount=abs_amount, name=self.asset.raw_short_name(),