{"library":"py-money","title":"py-money","description":"py-money is a Python 3 library that provides `Money` and `Currency` classes for precise monetary calculations. It enforces correct decimal places for currencies, leverages Python's `Decimal` type to prevent floating-point errors, and supports basic arithmetic and logical operations for immutable money objects. The current version is 0.5.0, with releases historically focused on bug fixes and minor feature enhancements.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install py-money"],"cli":null},"imports":["from money.money import Money","from money.currency import Currency","from money.currency import USD"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from money.money import Money\nfrom money.currency import USD, EUR\n\n# Create Money objects\nprice_usd = Money('100.50', USD)\nprice_eur = Money('50.25', EUR)\n\n# Accessing amount and currency\nprint(f\"USD Price: {price_usd.amount} {price_usd.currency.code}\") # Expected: USD Price: 100.50 USD\n\n# Basic arithmetic (same currency)\ntotal_usd = price_usd + Money('9.50', USD)\nprint(f\"Total USD: {total_usd}\") # Expected: Total USD: 110.00 USD\n\n# Subtraction\nremaining_usd = price_usd - Money('20.00', USD)\nprint(f\"Remaining USD: {remaining_usd}\") # Expected: Remaining USD: 80.50 USD\n\n# Multiplication\ntaxed_price = price_usd * 1.05\nprint(f\"Taxed USD: {taxed_price}\") # Expected: Taxed USD: 105.53 USD (due to rounding)\n\n# Division\nsplit_price = price_usd / 2\nprint(f\"Split USD: {split_price}\") # Expected: Split USD: 50.25 USD\n\n# Create from subunits (v0.3.0+)\n# e.g., 12345 cents for USD\nsub_unit_money = Money.from_sub_units(12345, USD)\nprint(f\"From subunits USD: {sub_unit_money}\") # Expected: From subunits USD: 123.45 USD\nprint(f\"To subunits USD: {sub_unit_money.sub_units}\") # Expected: To subunits USD: 12345","lang":"python","description":"This quickstart demonstrates how to create `Money` objects, perform basic arithmetic operations, and work with currency subunits. It highlights the importance of using the correct import paths and shows how to access the amount and currency code.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"0.5.0","pypi_latest":"0.5.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.1,"avg_import_s":0.04,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"py-money","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":1.7,"disk_size":"50.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"py-money","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.2,"import_time_s":0.02,"mem_mb":1.7,"disk_size":"51M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"py-money","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.07,"mem_mb":1.9,"disk_size":"52.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"py-money","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2,"import_time_s":0.06,"mem_mb":1.9,"disk_size":"53M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"py-money","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":1.4,"disk_size":"44.7M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"py-money","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2,"import_time_s":0.04,"mem_mb":1.4,"disk_size":"45M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"py-money","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":1.6,"disk_size":"44.4M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"py-money","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2,"import_time_s":0.04,"mem_mb":1.4,"disk_size":"45M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"py-money","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.03,"mem_mb":1.7,"disk_size":"50.3M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"py-money","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0.02,"mem_mb":1.7,"disk_size":"51M"}]}}