Source code for bitshares.amount
# -*- coding: utf-8 -*-
from .asset import Asset
from .instance import BlockchainInstance
from graphenecommon.amount import Amount as GrapheneAmount
[docs]@BlockchainInstance.inject
class Amount(GrapheneAmount):
"""
This class deals with Amounts of any asset to simplify dealing with the
tuple::
(amount, asset)
:param list args: Allows to deal with different representations of an amount
:param float amount: Let's create an instance with a specific amount
:param str asset: Let's you create an instance with a specific asset (symbol)
:param bitshares.bitshares.BitShares blockchain_instance: BitShares instance
:returns: All data required to represent an Amount/Asset
:rtype: dict
:raises ValueError: if the data provided is not recognized
.. code-block:: python
from peerplays.amount import Amount
from peerplays.asset import Asset
a = Amount("1 USD")
b = Amount(1, "USD")
c = Amount("20", Asset("USD"))
a + b
a * 2
a += b
a /= 2.0
Way to obtain a proper instance:
* ``args`` can be a string, e.g.: "1 USD"
* ``args`` can be a dictionary containing ``amount`` and ``asset_id``
* ``args`` can be a dictionary containing ``amount`` and ``asset``
* ``args`` can be a list of a ``float`` and ``str`` (symbol)
* ``args`` can be a list of a ``float`` and a :class:`bitshares.asset.Asset`
* ``amount`` and ``asset`` are defined manually
An instance is a dictionary and comes with the following keys:
* ``amount`` (float)
* ``symbol`` (str)
* ``asset`` (instance of :class:`bitshares.asset.Asset`)
Instances of this class can be used in regular mathematical expressions
(``+-*/%``) such as:
.. code-block:: python
Amount("1 USD") * 2
Amount("15 GOLD") + Amount("0.5 GOLD")
"""
[docs] def define_classes(self):
from .price import Price
self.asset_class = Asset
self.price_class = Price