Provides Currency and Money classes for use in your Python code.
Fetching latest commit…
Cannot retrieve the latest commit at this time
Overview ============================================================ The need to represent instances of money frequently arises in software development, particularly any financial/economics software. The py-moneyed package provides the classes of Money and Currency to help with that need, at a level more useful than just Python's Decimal class, or ($DEITY forbid) the float primitive. The package is meant to be stand-alone and easy to either use directly, or subclass further. py-moneyed is BSD-licensed. Some of the py-moneyed code was first derived from python-money available via this URL: http://code.google.com/p/python-money/ Because the Google Code version has been inactive since May 2008, I forked it and modified it for my needs in 2010. Compared to python-money, major changes in py-moneyed include separating it from Django usage, tightening types handling in operators, a complete suite of unit tests, PEP8 adherence, and providing a setup.py. Usage ----- On to the code: the Money class is instantiated with: - An amount which can be of type string, float, or Decimal. - A currency, which usually is specified by the three-capital-letters ISO currency code,e.g. USD. For example, :: from moneyed.classes import Money sale_price_today = Money(amount='99.99', currency='USD') The Money class also provides operators with type checking, matching currency checking, and sensible dimensional behavior, e.g. you cannot multiply two Money instances, nor can you add a Money instance to a non-Money number; dividing a Money instance by another results in a Decimal value, etc. The Currency class is provided with a complete dictionary of ISO 4217 currencies data, each key (e.g. 'USD') mapping to a Currency instance with ISO numeric code, canonical name in English, and countries using the currency. Thanks to the python-money developers for their (possibly tedious) data-entry of the ISO codes! Testing -------- Unit-tests have been provided, and can be run with tox_ (recommended) or just py.test. If you don't have tox installed on your system, it's a new tool to automate running tests and deployment; install it to your global Python environment with: :: sudo pip install tox Then you can activate a virtualenv (any will do - by design tox will not run from your globally-installed python), cd to the py-moneyed source directory then run the tests at the shell: :: cd where/py-moneyed-source/is tox The py-moneyed package has been tested with Python 2.6; it should work with Python 2.x but I haven't tried other versions yet. Should you use py-moneyed with other Python versions, please let me know if you are successful or not. .. _tox: http://codespeak.net/tox/ Future ------ Future versions of py-moneyed may provide currency conversions, or other capabilities, dependent on feedback and usage.