Prices: Python price handling for humans

Money:
from prices import Money
a = Money(10, 'USD')
a += Money(20, 'USD')
a.value
a = a.quantize()
a.value
a = Money('5.00', 'JPY')
a.quantize()
a.value
Taxed money:
from prices import Money, TaxedMoney
p = TaxedMoney(net=Money(20, 'EUR'), gross=Money(30, 'EUR'))
p.net
p.gross
p.tax
p = p.quantize()
p.net
Taxed ranges:
from prices import Money, TaxedMoney, TaxedMoneyRange
price1 = TaxedMoney(Money(1, 'USD'), Money(1, 'USD'))
price2 = TaxedMoney(Money(10, 'USD'), Money(10, 'USD'))
pr = TaxedMoneyRange(price1, price2)
pr.min_price
pr.max_price
price3 = TaxedMoney(net=Money(5, 'USD'), gross=Money(5, 'USD'))
price3 in pr
pr = pr.quantize()
pr.min_price.net
Taxes:
from decimal import Decimal
from prices import Money, TaxedMoney, TaxedMoneyRange, flat_tax
p = TaxedMoney(Money('1.99', 'GBP'), Money('1.99', 'GBP'))
p = flat_tax(p, Decimal('0.23'))
p = p.quantize()
p.gross
While protecting you from all sorts of mistakes:
from prices import Money
Money(10, 'USD') < Money(15, 'GBP')
from prices import Money, TaxedMoney
price1 = TaxedMoney(Money(5, 'BTC'), Money(5, 'BTC'))
price2 = TaxedMoney(Money(7, 'INR'), Money(7, 'INR'))
price1 + price2