Metadata-Version: 2.4
Name: ecb-rate
Version: 0.6.3
Summary: A small CLI tool for fetching EUR exchange rates from the European Central Bank JSON API.
Author: PythBuster
License: MIT
Project-URL: Repository, https://github.com/PythBuster/ecb-rate
Project-URL: Issues, https://github.com/PythBuster/ecb-rate/issues
Project-URL: Changelog, https://github.com/PythBuster/ecb-rate/blob/main/CHANGELOG.md
Keywords: ecb,exchange-rates,currency,cli,finance
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Office/Business :: Financial
Classifier: Topic :: Utilities
Classifier: Typing :: Typed
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: aiohttp>=3.13.5
Requires-Dist: pydantic>=2.12.5

# ecb-rate

Simple CLI tool to fetch EUR-based exchange rates from the European Central Bank (ECB) API.

Requires Python 3.11 or newer.

---

## Installation

Using `uv` (recommended):

    uv sync

Or with pip:

    pip install .

---

## Usage

### Basic

    ecb_rate TRY

Output:

    51.2795

---

### Version

    ecb_rate --version

Output:

    ecb_rate 0.6.3

---

### With specific date

    ecb_rate TRY --specificDate 2025-06-06

---

### Pretty output

    ecb_rate TRY --pretty

Output:

    Base currency:   EUR
    Target currency: TRY

    2025-06-06: 1 EUR = 43.1234 TRY

---

### List supported currencies

    ecb_rate --list

Output:

    Supported currency codes:
      AUD  Australian dollar (Australia)
      ...
      USD  US dollar (United States of America)
      ZAR  South African rand (South Africa)

---

### Invalid input

Missing target currency:

    ecb_rate

Output:

    Error: A target currency code is required. Example: ecb_rate USD. Use --help for usage.

Unsupported target currency:

    ecb_rate US

Output:

    Error: Unsupported currency code: US. Use --list to see all supported currency codes.

---

## Supported currencies

The CLI supports all currencies defined by the ECB reference exchange rate dataset (EXR).

Run `ecb_rate --list` to print all supported currency codes.

- AUD – Australian dollar (Australia)
- BRL – Brazilian real (Brazil)
- CAD – Canadian dollar (Canada)
- CHF – Swiss franc (Switzerland)
- CNY – Chinese yuan (China)
- CZK – Czech koruna (Czechia)
- DKK – Danish krone (Denmark)
- EUR – Euro (euro area)
- GBP – Pound sterling (United Kingdom)
- HKD – Hong Kong dollar (China, Hong Kong SAR)
- HUF – Hungarian forint (Hungary)
- IDR – Indonesian rupiah (Indonesia)
- ILS – Israeli shekel (Israel)
- INR – Indian rupee (India)
- ISK – Icelandic krona (Iceland)
- JPY – Japanese yen (Japan)
- KRW – South Korean won (Republic of Korea)
- MXN – Mexican peso (Mexico)
- MYR – Malaysian ringgit (Malaysia)
- NOK – Norwegian krone (Norway)
- NZD – New Zealand dollar (New Zealand)
- PHP – Philippine peso (Philippines)
- PLN – Polish zloty (Poland)
- RON – Romanian leu (Romania)
- SEK – Swedish krona (Sweden)
- SGD – Singapore dollar (Singapore)
- THB – Thai baht (Thailand)
- TRY – Turkish lira (Türkiye)
- USD – US dollar (United States of America)
- ZAR – South African rand (South Africa)

Source: https://data-api.ecb.europa.eu/service/data/EXR

Currency support in this tool is defined via the `CurrencyType` enum.

---

## API

Uses the official ECB Data Portal:

    https://data-api.ecb.europa.eu/service/data/EXR

Format:

- jsondata (SDMX JSON)

---

## Project structure

    ecb_rate/
    ├─ cli.py
    ├─ client.py
    ├─ custom_types.py
    ├─ models.py
    ├─ service.py

---

## Development

Install dev dependencies:

    uv sync --dev

Run tests:

    uv run pytest
