From f8742d7352ece18444a5e4ae5651e059ddfe0aed Mon Sep 17 00:00:00 2001 From: Carl Oscar Aaro Date: Sun, 24 Nov 2019 18:30:17 +0100 Subject: [PATCH] Added examples to README --- README.md | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 14f6bb1..f6729c7 100644 --- a/README.md +++ b/README.md @@ -9,18 +9,107 @@ An up to date human friendly and flexible approach for development with any kind At its bone a `Money` class for Python 3.x. This is a library to be used by backend and frontend API coders of fintech companies, web merchants and subscription services. A simple, yet powerful way of coding with money. +The `stockholm.Money` object has full arithmetic support together with `int`, `float`, `Decimal`, other `Money` objects as well as `string`. `stockholm.Money` object also supports complex string formatting functionality for easy debugging and a clean coding pattern. + ### Installation with `pip` -``` +``` $ pip install stockholm ``` ### Examples +Full arithmetic support with different types, backed by `Decimal` for dealing with rounding errors, while also keeping the monetary amount fully currency aware. ```python from stockholm import Money -# Example code in development +money = Money("4711.50", currency="SEK") +print(money) +# 4711.50 SEK + +output = (money + 100) * 3 + Money(50) +print(output) +# 14484.50 SEK + +print(output / 5) +# 2896.90 SEK + +print(round(output / 3, 4)) +# 4828.1667 SEK + +print(round(output / 3, 1)) +# 4828.20 SEK +``` + +Advanced string formatting functionality +```python +from stockholm import Money + +jpy_money = Money(1352953, "JPY") +exchange_rate = Money("0.08861326") +sek_money = Money(jpy_money * exchange_rate, "SEK") + +print(f"I have {jpy_money:,.0m} which equals around {sek_money:,.2m}") +print(f"The exchange rate is {exchange_rate} ({jpy_money:c} -> {sek_money:c})") +# I have 1,352,953 JPY which equals around 119,889.58 SEK +# The exchange rate is 0.08861326 (JPY -> SEK) + +print(f"{jpy_money:.0f}") +# 1352953 + +print(f"{sek_money:.2f}") +# 119889.58 + +print(f"{sek_money:.1f}") +# 119889.6 + +print(f"{sek_money:.0f}") +# 119890 +``` + +Flexible ways for assigning values to a monetary amount +```python +from decimal import Decimal +from stockholm import Money + +Money(100, currency="EUR") +# + +Money("1338 USD") +# + +Money("0.5") +# + +amount = Decimal(5000) / 3 +Money(amount, currency="XDR") +# + +money = Money("0.30285471") +Money(money, currency="BTC") +# + +cents_as_str = "471100" +Money(cents_as_str, currency="USD", is_cents=True) +# +``` + +Adding several monetary amounts from a list +```python +from stockholm import Money + +amounts = [ + Money(1), + Money("1.50"), + Money("1000"), +] + +# Use Money.sum to deal with complex values of different data types +Money.sum(amounts) +# + +# Built-in sum may also be used (if only working with monetary amounts) +sum(amounts) +# ``` - ### Acknowledgements Built with inspiration from https://github.com/carlospalol/money and https://github.com/vimeo/py-money