Dinero is a library for working with monetary values in Python.
Project description
Dinero
A Dinero object is an immutable data structure representing a specific monetary value. It comes with methods for creating, parsing, manipulating, testing and formatting them.
Install
Dinero is a dependency free project.
pip install dinero
The problem
Using floats to do exact calculations in Python can be dangerous. When you try to find out how much 2.32 x 3 is, Python tells you it's 6.959999999999999. For some calculations, that’s fine. But if you are calculating a transaction involving money, that’s not what you want to see. Sure, you could round it off, but that's a little hacky.
>>> 2.32 * 3 == 6.96
False
>>> 2.32 * 3
6.959999999999999
You can read How to Count Money Exactly in Python to get a better idea.
Why Dinero?
Python Decimal
instances are enough for basic cases but when you face more complex use-cases they often show limitations and are not so intuitive to work with. Dinero provides a cleaner and more easy to use API while still relying on the standard library. So it's still Decimal
but easier.
>>> from dinero import Dinero
>>> from dinero.currencies import USD
>>>
>>> Dinero(2.32, USD) * 3 == 6.96
True
Dinero give you access to more than 100 different currencies:
>>> from dinero import Dinero
>>> from dinero.currencies import USD, EUR, GBP, INR, CLP
>>> Dinero(2.32, EUR)
Dinero(amount=2.32, currency={'code': 'EUR', 'base': 10, 'exponent': 2, 'symbol': '€'})
>>> Dinero(2.32, EUR).format(symbol=True, currency=True)
'€2.32 EUR'
>>> Dinero(2.32, EUR).raw_amount
Decimal('2.32')
You can perform operations:
>>> total = Dinero(456.343567, USD) + 345.32 * 3
>>> print(total)
# 1,492.30
>>> product = Dinero(345.32, USD).multiply(3)
>>> total = product.add(456.343567)
>>> print(total)
# 1,492.30
And comparisons:
>>> Dinero(100, EUR) == Dinero(100, EUR)
True
>>> Dinero(100, EUR) < Dinero(100, EUR)
False
>>> Dinero(100, EUR) <= Dinero(100, EUR)
True
>>> Dinero(100, EUR) > Dinero(100, EUR)
False
>>> Dinero(100, EUR) >= Dinero(100, EUR)
True
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file dinero-0.1.2.tar.gz
.
File metadata
- Download URL: dinero-0.1.2.tar.gz
- Upload date:
- Size: 15.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.8.10 Linux/5.10.16.3-microsoft-standard-WSL2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
9369ab3cb0d96ee96ea2b312b2840ec300df36e2af26a9eec9cf48708aba9180
|
|
MD5 |
46ea8d8fbd438cad093888675c4ccb74
|
|
BLAKE2b-256 |
b6579e78b87381a58e61ef2acf6c31d05791a2a961bbb6f9425efd5cd5964ac3
|
File details
Details for the file dinero-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: dinero-0.1.2-py3-none-any.whl
- Upload date:
- Size: 42.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.8.10 Linux/5.10.16.3-microsoft-standard-WSL2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
598374e23a2222d72e61452e2362c3b923761e01cde3c5e0eb4326d43644052c
|
|
MD5 |
10115872068a8c9f48452205b2f31107
|
|
BLAKE2b-256 |
52e9c81e737c48724db4ee57abe72a4421e11f18511ff16ecf075aa43d2a78f8
|