Skip to main content

Advanced Python 3.10 Dataclass for handling monetary values, keeping amount and currency together

Project description

Money dataclass

Advanced Python 3.10 Dataclass for handling monetary values, keeping amount and currency together

This Money class provides a simple and efficient way to manage amounts of money and perform arithmetic operations and comparisons on them. It supports different currencies and ensures that the operations are only performed on matching currencies to avoid inconsistencies.

Features

  • Initialize a Money object with a specific amount and currency.
  • Perform arithmetic operations between Money objects with the same currency.
  • Compare and sort Money objects.
  • Convert a Money object to another currency.
  • Round a Money object to a specified number of decimal places.
  • Serialize and deserialize Money objects to/from JSON.

Usage

from t_money import Money

Creating a Money object

usd = Money(Decimal("10.50"), "USD")

Create a Money object from string

usd_from_str = Money.from_str("USD 5.25")

Arithmetic operations

usd1 = Money(Decimal("10.50"), "USD")
usd2 = Money(Decimal("5.50"), "USD")

usd_sum = usd1 + usd2
usd_difference = usd1 - usd2
usd_product = usd1 * Decimal("2")

Comparisons

print(usd1 == usd2)
print(usd1 < usd2)

Rounding

rounded_usd = usd1.round_to(1)

Currency conversion

eur = usd.convert("EUR", Decimal("0.85"))

Money is hashable

money_set = {usd1, usd2}

Serialization and deserialization

import json

# Serialize data containing Money object
data = {'money': usd}
json_str = json.dumps(data, default=money_serializer)

# Deserialize JSON data to Money object
loaded_data = json.loads(json_str, object_hook=money_deserializer)

Error Handling

When performing operations on Money objects with different currencies, a DifferentCurrencyError will be raised. Make sure to handle this error if necessary when dealing with multiple currencies.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

t_money-0.1.1.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

t_money-0.1.1-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file t_money-0.1.1.tar.gz.

File metadata

  • Download URL: t_money-0.1.1.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.14 CPython/3.10.7 Linux/5.19.0-38-generic

File hashes

Hashes for t_money-0.1.1.tar.gz
Algorithm Hash digest
SHA256 91e789c9627420f4f980be95aa886d493eb7b7066a36644503ebc8a89f77fcd0
MD5 1c8a3820fb9749ebfbbd16c7484be74d
BLAKE2b-256 22c3f90b7d1f846042bbf1ea4d75cb5ac3a4f96d6e72db2766a3050e677ff34a

See more details on using hashes here.

File details

Details for the file t_money-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: t_money-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.14 CPython/3.10.7 Linux/5.19.0-38-generic

File hashes

Hashes for t_money-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 67c3ff2200331e0d00fbfe77a4f310f4c82c95dabb82efd5a788c47782815391
MD5 7f298463147b3d6623ffbc1c4ef18c16
BLAKE2b-256 845cc50eb36426ed30cc4718437ebe0fe4776cffc38164c27b96ef075e237526

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page