Metadata-Version: 2.4
Name: bceaoapi
Version: 0.1.0
Summary: Python client for BCEAO/UEMOA macroeconomic data
License: MIT
Project-URL: Homepage, https://github.com/your-username/bceaoapi
Project-URL: Documentation, https://github.com/your-username/bceaoapi#readme
Project-URL: Repository, https://github.com/your-username/bceaoapi
Project-URL: Bug Tracker, https://github.com/your-username/bceaoapi/issues
Keywords: BCEAO,UEMOA,WAEMU,West Africa,economics,macroeconomics,finance,open data,time series
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Office/Business :: Financial
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: pandas>=1.5
Requires-Dist: requests>=2.28
Provides-Extra: etl
Requires-Dist: openpyxl>=3.1; extra == "etl"
Provides-Extra: api
Requires-Dist: fastapi>=0.110; extra == "api"
Requires-Dist: uvicorn[standard]>=0.27; extra == "api"
Provides-Extra: all
Requires-Dist: openpyxl>=3.1; extra == "all"
Requires-Dist: fastapi>=0.110; extra == "all"
Requires-Dist: uvicorn[standard]>=0.27; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=8; extra == "dev"
Requires-Dist: pytest-cov>=5; extra == "dev"
Requires-Dist: httpx>=0.27; extra == "dev"
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: twine>=5; extra == "dev"
Requires-Dist: ruff>=0.4; extra == "dev"
Requires-Dist: mypy>=1.10; extra == "dev"

# bceaoapi

Données macroéconomiques de la **BCEAO/UEMOA** en Python — accès direct, sans configuration.

```bash
pip install bceaoapi
```

```python
from bceaoapi import BCEAO

b = BCEAO()  # se connecte automatiquement à l'API publique

# PIB du Sénégal en 2022
b.get_value("IMECO", "PIB nominal", "SENEGAL", 2022)
# → 17330.12

# Série temporelle complète
gdp = b.get_series_by("IMECO", "PIB nominal", "SENEGAL", start="2000")
gdp.plot(title="PIB Sénégal (Mds FCFA)")

# Les 8 pays en un appel
inflation = b.get_cross_country("IHPC", "Ensemble", start="2015")
inflation.plot(title="Inflation UEMOA")
```

---

## Couverture

| | |
|--|--|
| **Datasets** | 39 (PIB, inflation, taux de change, banques, balance des paiements, dette publique…) |
| **Séries** | 9 500+ — une par pays/indicateur |
| **Observations** | 830 000+ — de 1960 à 2025 |
| **Pays** | BÉNIN · BURKINA FASO · CÔTE D'IVOIRE · GUINÉE BISSAU · MALI · NIGER · SÉNÉGAL · TOGO |

---

## Explorer les données disponibles

Pas besoin de connaître les codes de séries. On explore en 3 étapes :

```python
# 1. Quels datasets existent ?
b.list_datasets()

# 2. Quels indicateurs dans un dataset ?
b.list_indicators("IHPC")
# ['Alimentation', 'Ameublement', 'Ensemble', 'Transport', ...]

# 3. Récupérer
b.get_series_by("IHPC", "Ensemble", "BURKINA FASO", start="2010")
```

Ou par recherche libre :

```python
b.search("taux de change", frequency="MONTHLY")
b.search("PIB", country="MALI")
```

---

## Toutes les méthodes

| Méthode | Retourne | Description |
|---------|----------|-------------|
| `list_datasets()` | `DataFrame` | Tous les datasets disponibles |
| `list_countries(dataset?)` | `list` | Pays disponibles |
| `list_indicators(dataset)` | `list` | Indicateurs d'un dataset |
| `get_series_by(dataset, indicator, country)` | `Series` | Série temporelle par nom |
| `get_value(dataset, indicator, country, year)` | `float` | Une valeur précise |
| `get_cross_country(dataset, indicator)` | `DataFrame` | Les 8 pays côte à côte |
| `get_dataset(dataset, country?)` | `DataFrame` | Tous les indicateurs d'un dataset |
| `get_series(code)` | `Series` | Série par code (ex. `KKKSR1012A0BP`) |
| `search(query)` | `DataFrame` | Recherche libre |

Tous les paramètres `start` / `end` acceptent une année (`"2000"`) ou une date ISO (`"2000-01-31"`).

---

## Gestion des erreurs

```python
from bceaoapi import AmbiguousQueryError, SeriesNotFoundError

try:
    b.get_series_by("PIBN", "PIB", "SENEGAL")
except AmbiguousQueryError as e:
    print(e)
    # 2 séries correspondent. Soyez plus précis.
    # Trouvé : [KKKSR1012A0BP] PIB marchand, [KKKSR1013A0BP] PIB non marchand

try:
    b.get_series_by("IHPC", "xxx", "MALI")
except SeriesNotFoundError as e:
    print(e)
    # Conseil : utilisez b.list_indicators('IHPC') pour voir les libellés exacts.
```

---

## Source des données

Données publiées par la [BCEAO](https://www.bceao.int) sur [edenpub.bceao.int](https://www.edenpub.bceao.int/rapport.php).
Ce package est indépendant de la BCEAO et n'est pas affilié à celle-ci.

## Licence

MIT
