Skip to main content

A Pythonic currency calculator with real-time exchange rates

Project description

Currex

currex version - PyPI PyPI status MIT license - PyPI Python version - PyPI GitHub Actions: Build GitHub Actions: Linting Twitter @pmigdal

A Pythonic currency calculator that makes working with currencies and exchange rates simple and smooth - by Piotr Migdał. See it in action in Colab - no need to install anything.

I often use Python as a command-line calculator. However, I frequently found myself going back to Google Search to convert between currencies. So, I created this library to make it easy to add, multiply, and convert between currencies. One of its core features is autocasting - when working with multiple currencies, it automatically converts them to match the first currency used.

This library is designed for use in interactive Python sessions (such as Jupyter Notebook, Jupyter Lab, or IPython) to quickly get ballpark price estimates - perfect for travel planning or online shopping. I personally use it through IPython on the command line.

Right now it uses HexaRate for exchange rates.

It is a new package, so I'm open to suggestions.

Disclaimer

It is NOT intended to be used in production code. Every API design decision was made to optimize for interactive sessions. Some decisions consciously go against best practices for production libraries. For example, the main namespace defines all currencies as constants, and the example code uses from currex import * - practices I believe are appropriate for interactive sessions only.

EVEN MORE IMPORTANT: Never use it for any important decisions - taxes, investments, etc. There is no guarantee that the exchange rates are up-to-date and correct. Note that even major players make mistakes, e.g. Google Glitch Undervalues Poland's Zloty By A Fifth. Always use the official exchange rates.

Installation

pip install currex

Usage

from currex import *

# use currencies as if they were numbers
100 * USD  # USD(100.00)
12 * USD(100)  # USD(1200.00)

# convert currencies to other currencies
USD(100).to(EUR)  # EUR(85.30)
USD(100).to(PLN)  # PLN(430.50)

# this syntax is also supported
PLN(EUR(12))  # PLN(51.33)

# add different currencies
USD(100) + EUR(100)  # USD(203.42)
EUR(100) - USD(100)  # EUR(3.22)

# divide currencies
USD(2) / JPY(14)  # 22.531428526365715

# configure decimal digits (default is 2)
currex_config.set_decimal_digits(3)  # show 3 decimal places
USD(123.456789)  # USD(123.457)
currex_config.set_decimal_digits(None)  # show full precision
USD(123.456789)  # USD(123.456789)

For a slightly more advanced use, there is a general Currency class:

from currex import Currency

USD = Currency("USD")  # one dollar

money = Currency("USD", 100)  # USD(100.00)
money.to("EUR")  # EUR(95.30)

Features

  • Arithmetic operations with currencies
  • Currency conversion
  • Autocasting - when using a few currencies, automatically convert them to the first one
  • Configurable decimal places for currency representation

Requirements

  • Python 3.9 or higher
  • Internet connection for real-time exchange rates

Development

To set up the development environment:

git clone git@github.com:stared/currex.git
cd currex
pip install -e .[dev]

TODO

  • Mock API for testing
  • More backends for exchange rates, see e.g. this list
  • Support for cryptocurrencies

License

MIT License by Piotr Migdał

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

currex-0.1.3.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

currex-0.1.3-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file currex-0.1.3.tar.gz.

File metadata

  • Download URL: currex-0.1.3.tar.gz
  • Upload date:
  • Size: 12.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for currex-0.1.3.tar.gz
Algorithm Hash digest
SHA256 ec72510faa0514165bfeaf2b346b082f5180d5a76b608c3786df982a374104fc
MD5 3091b4bdbec9e7db0fd3f23830012c98
BLAKE2b-256 855dd95728aa12c92d287a36ea1c1b4af98379b9afa2ae8335ada853fc20b207

See more details on using hashes here.

Provenance

The following attestation bundles were made for currex-0.1.3.tar.gz:

Publisher: publish.yml on stared/currex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file currex-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: currex-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for currex-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 084c8a653b6abb99e926a46284e91a22d32131e5a90ce8af3c389c86cc60adc0
MD5 095db2df75369985d24d8d5c392a0872
BLAKE2b-256 c223b73a66e58430b306a176a107e025d620e01f3d1b1d48740da176f94afea1

See more details on using hashes here.

Provenance

The following attestation bundles were made for currex-0.1.3-py3-none-any.whl:

Publisher: publish.yml on stared/currex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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