Metadata-Version: 2.4
Name: evenmoney
Version: 1.0.1
Summary: Simple, ergonomic library for money arithmetic, currency conversion and tax calculations
Author: evenmoney contributors
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Office/Business :: Financial
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Provides-Extra: requests
Requires-Dist: requests>=2.28; extra == "requests"
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: provides-extra
Dynamic: requires-python
Dynamic: summary

# evenmoney

Простая, удобная библиотека для работы с деньгами на Python.

- **Нет зависимостей** — только стандартная библиотека
- **Конвертация валют** — 4 бесплатных API, автоматический fallback + офлайн-кеш
- **Налоги** — UA, PL, DE, CZ, US, GB
- **Точная арифметика** — `Decimal` под капотом, без ошибок float

## Установка

```bash
pip install evenmoney

```

## Быстрый старт

```python
from evenmoney import Money, tax

# Создание
price = Money(990, "UAH")
price = Money("990.50", "UAH")   # строка — без ошибок float

# Конвертация по актуальному курсу
usd = price.convert("USD")       # → Money(26.xx, "USD")
eur = price.convert("EUR")       # → Money(23.xx, "EUR")

# Форматирование
price.format()                    # → "990,00 ₴"
usd.format()                      # → "$26.13"
price.format(symbol=False)        # → "990,00"
price.format(decimals=0)          # → "990 ₴"

# Курс
price.rate("USD")                 # → Decimal("0.027...")
```

## Арифметика

```python
a = Money(1000, "UAH")
b = Money(500,  "UAH")

a + b          # → Money(1500, "UAH")
a - b          # → Money(500,  "UAH")
a * 1.2        # → Money(1200, "UAH")
a / 4          # → Money(250,  "UAH")
a.ratio(b)     # → Decimal("2.0000")
-a             # → Money(-1000, "UAH")
abs(-a)        # → Money(1000,  "UAH")

# Сравнение
a > b          # → True
a == Money(1000, "UAH")  # → True

# Разбивка на части
a.split(70, 30)  # → [Money(700, "UAH"), Money(300, "UAH")]
a.split(1, 1)    # → [Money(500, "UAH"), Money(500, "UAH")]

# Авто-конвертация разных валют
Money(100, "USD") + Money(100, "EUR")  # конвертирует EUR → USD автоматически
```

## НДС

```python
from evenmoney import tax

tax.vat(1000, rate=20)                       # → 200.0  (сумма НДС)
tax.vat(1200, rate=20, inclusive=True)       # → 200.0  (НДС включён в цену)

tax.add_vat(1000, rate=20)                   # → 1200.0 (цена + НДС)
tax.remove_vat(1200, rate=20)                # → 1000.0 (цена без НДС)
tax.reverse_vat(200, rate=20)                # → 1000.0 (база по сумме НДС)

# Полный расклад
r = tax.vat_full(1000, rate=20)
r.base   # 1000.0
r.vat    # 200.0
r.total  # 1200.0
```

## Подоходный налог

```python
# Украина (ежемесячная зарплата)
r = tax.income(50_000, country="UA")
print(r)
# IncomeResult [Ukraine]
#   Gross:              50 000,00 UAH
#   Income tax:          9 000,00 UAH
#   Military levy:         750,00 UAH
#   ─────────────────────────────────────
#   Net:                40 250,00 UAH
#   Effective rate:          19.5%
#   Employer cost:          61 000,00 UAH

# Польша
tax.income(8_000, country="PL")

# Германия
tax.income(5_000, country="DE")

# США (федеральный)
tax.income(7_000, country="US")

# Годовая зарплата
tax.income(600_000, country="UA", annual=True)

# Доступные страны
tax.supported_countries()   # ['UA', 'PL', 'DE', 'CZ', 'US', 'GB']
```

## Прочие утилиты

```python
tax.margin(1200, 1000)          # → 16.67  (маржа %)
tax.markup(1000, margin_pct=20) # → 1250.0 (цена при марже 20%)
tax.discount(1000, 15)          # → 850.0  (цена со скидкой 15%)
```

## Offline / кеш

Курсы валют автоматически кешируются в `~/.evenmoney_rates.json` на 4 часа.
При отсутствии интернета используются последние сохранённые курсы.

## Источники курсов

Автоматический перебор при ошибке:

1. **fawazahmed0/currency-api** — CDN GitHub, ~170 валют, обновляется ежедневно
2. **Frankfurter** (ЕЦБ) — официальные курсы, ~33 валюты
3. **open.er-api.com** — бесплатный, без ключа, ~160 валют
4. **bank.gov.ua** (НБУ) — официальные курсы гривны

## Лицензия

MIT
