Metadata-Version: 2.4
Name: settleup-calculator
Version: 1.0.1
Summary: A custom library for calculating expense splits and settlements
Home-page: https://github.com/settleup/calculator
Author: SettleUp Team
Author-email: team@settleup.com
Project-URL: Bug Reports, https://github.com/settleup/calculator/issues
Project-URL: Source, https://github.com/settleup/calculator
Keywords: expense calculator split settlement finance
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license-file
Dynamic: project-url
Dynamic: requires-python
Dynamic: summary

# SettleUp Calculator Library

A custom Python library for calculating expense splits and settlements.

## Features

- Calculate expense splits using multiple methods:
  - Equal split
  - Percentage-based split
  - Exact amount split
- Calculate net balances for users
- Generate minimum settlement transactions

## Installation

```bash
pip install settleup-calculator
```

Or install from source:

```bash
python setup.py install
```

## Usage

### Basic Expense Split

```python
from settleup_calculator import ExpenseCalculator, SplitMethod
from decimal import Decimal

# Equal split
splits = ExpenseCalculator.calculate_split(
    total_amount=Decimal("100.00"),
    participants=["user1", "user2", "user3"],
    split_method=SplitMethod.EQUAL
)
# Result: {"user1": Decimal("33.33"), "user2": Decimal("33.33"), "user3": Decimal("33.34")}

# Percentage split
splits = ExpenseCalculator.calculate_split(
    total_amount=Decimal("100.00"),
    participants=["user1", "user2"],
    split_method=SplitMethod.PERCENTAGE,
    participant_data={
        "user1": {"percentage": 60},
        "user2": {"percentage": 40}
    }
)
# Result: {"user1": Decimal("60.00"), "user2": Decimal("40.00")}

# Exact split
splits = ExpenseCalculator.calculate_split(
    total_amount=Decimal("100.00"),
    participants=["user1", "user2", "user3"],
    split_method=SplitMethod.EXACT,
    participant_data={
        "user1": {"amount": 50},
        "user2": {"amount": 30},
        "user3": {"amount": 20}
    }
)
# Result: {"user1": Decimal("50.00"), "user2": Decimal("30.00"), "user3": Decimal("20.00")}
```

### Calculate Settlements

```python
from settleup_calculator import SplitCalculator

expenses = [
    {
        "paid_by": "user1",
        "amount": Decimal("100.00"),
        "participants": ["user1", "user2"],
        "split_method": "equal"
    },
    {
        "paid_by": "user2",
        "amount": Decimal("50.00"),
        "participants": ["user1", "user2"],
        "split_method": "equal"
    }
]

balances = SplitCalculator.calculate_balances(expenses)
settlements = SplitCalculator.calculate_settlements(balances)
```

## License

MIT License

