Source code for valuta.shortcuts

from decimal import Decimal
from typing import Union, Optional

from .base import Registry, BaseCurrency
from .constants import DEFAULT_DISPLAY_FORMAT
from .exceptions import InvalidCurrency

__author__ = "Artur Barseghyan"
__copyright__ = "2021 Artur Barseghyan"
__license__ = "GPL-2.0-only OR LGPL-2.1-or-later"
__all__ = (
    "convert_to_currency_units",
    "display_in_currency_units",
)


[docs]def convert_to_currency_units( currency_code: str, value: int, fail_silently: bool = True, ) -> Union[int, float, Decimal, None]: """Convert value represented in minor currency to major currency units.""" cls: Optional[BaseCurrency] = Registry.get(currency_code) if cls: return cls.convert_to_currency_units(value) elif not fail_silently: raise InvalidCurrency( f"Invalid or empty currency code: {currency_code}" )
[docs]def display_in_currency_units( currency_code: str, value: int, format: Optional[str] = DEFAULT_DISPLAY_FORMAT, locale: Optional[str] = None, decimal_quantization: bool = True, fail_silently: bool = True, ) -> Union[str, None]: """Convert value represented in minor currency to major currency units.""" cls: Optional[BaseCurrency] = Registry.get(currency_code) if cls: return cls.display_in_currency_units( value, format, locale, decimal_quantization ) elif not fail_silently: raise InvalidCurrency( f"Invalid or empty currency code: {currency_code}" )