Français | English
Traitement, analyse et modélisation des données agricoles et économiques
KadiPy : le "pandas" de l'agriculture africaine
KadiPy est une bibliothèque Python open source conçue pour les agronomes, chercheurs et développeurs travaillant sur l'agriculture au Bénin et en Afrique de l'Ouest. Elle offre une interface unifiée pour ingérer, nettoyer, analyser et modéliser des données météorologiques, des prix de marchés agricoles, des coûts logistiques et des séries de récoltes, avec un fonctionnement conçu en priorité pour le mode hors ligne (offline-first).
Fonctionnalités principales
-
Ingestion et E/S unifiées (
kadi.io) : fonctions expressivesread_csv,read_excel,read_json,read_netcdf,read_apiavec détection automatique du format, et leurs équivalents en écriture (write_csv,write_excel, etc.). Les fonctionswrite,infoetpingfonctionnent avec n'importe quel format. -
Météorologie agronomique (
kadi.weather) : façadeWeatherpour les données météo historiques et prévisionnelles (CHIRPS + Open-Meteo), détection des saisons des pluies (Sivakumar, Walter-Anyadike), bilan hydrique des sols (FAO-56), évapotranspiration (ET0 Hargreaves-Samani) et indices de sécheresse (SPI, Markov, Hurst). -
Économie agricole et marchés (
kadi.market) : façadeMarketpour le suivi des prix réels (WFP/HAPI HumData), prévisions de prix (Forecasting), calculs de coûts logistiques routiers (Logistics) et aide à la décision (Advisor) pour l'arbitrage spatial et le stockage stratégique. -
Pipeline et standardisation (
kadi.kidas) : nettoyage des données brutes (Cleaner), validation de schémas (Validator), normalisation des noms de cultures et coordonnées GPS (Normalizer), persistance SQLite locale (Cache) et chaîne de traitement complète (Pipeline).
Installation
Via PyPI
pip install kadipy
Depuis les sources
git clone https://github.com/delsDin/kadipy.git
cd kadipy
pip install -e ".[dev]"
Dépendances optionnelles
# Support des anciens fichiers Excel (.xls, antérieurs à 2003)
pip install "kadipy[xls]"
# Traitements géospatiaux (découpage de rasters CHIRPS)
pip install "kadipy[geospatial]"
Configuration de l'environnement
Créez un fichier .env à la racine du projet pour activer les sources de données
réelles :
# Clé API WFP DataBridges (facultatif : des données publiques HAPI HumData
# sont utilisées sans elle)
WFP_API_Token=votre_cle_ici
# Prix du carburant manuel en XOF/litre (facultatif)
BENIN_FUEL_PRICE=680
Vue d'ensemble des modules
| Module | Façade / Composants | Description |
|---|---|---|
kadi.io |
read_csv, read_excel, read_json, read_netcdf, read_api, write, info, ping |
Entrées et sorties avec détection automatique du format |
kadi.weather |
Weather, Location, Phenology, Hydrology, Risk |
Météo, prévisions, historique et indicateurs agronomiques |
kadi.market |
Market, Pricing, Forecasting, Logistics, Advisor |
Analyse économique, prix, logistique et aide à la décision |
kadi.kidas |
Cleaner, Validator, Normalizer, Pipeline, Cache |
Traitement, contrôle qualité et persistance SQLite |
Structure du projet
kadipy/
├── kadi/
│ ├── io/ # Entrées et sorties unifiées
│ ├── market/ # Économie agricole et marchés
│ ├── weather/ # Météorologie agronomique
│ ├── kidas/ # Pipeline de traitement et standardisation
│ ├── _sources/ # Clients externes (WFP, CHIRPS, SoilGrids)
│ ├── cache.py # Cache SQLite partagé
│ ├── config.py # Configuration centralisée
│ └── exceptions.py # Exceptions personnalisées
├── tests/ # Suite de tests (pytest)
├── docs/ # Documentation MkDocs
├── examples/ # Notebooks d'exemples Jupyter
├── config/ # Fichiers de configuration
└── pyproject.toml # Dépendances et métadonnées du package
Lancer les tests
# Exécution simple
pytest tests/ -q
# Avec rapport de couverture de code
pytest tests/ --cov=kadi --cov-report=term-missing
Les tests couvrent l'ensemble des modules (io, market, weather, kidas),
y compris les connecteurs distants sans dépendance réseau et les composants
d'infrastructure (kadi.cache, kadi.config). Aucune clé API n'est nécessaire
pour les exécuter. La CI GitHub Actions contrôle que la couverture globale reste
supérieure à 70 %.
Rétrocompatibilité
Les anciens noms de classes issus des versions antérieures à v1.2.0 émettent un DeprecationWarning et seront supprimés dans KadiPy v2.0 :
| Ancien nom (avant v1.2.0) | Nouveau nom |
|---|---|
WeatherSession |
Weather |
DataCleaner |
Cleaner |
DataValidator |
Validator |
DataNormalizer |
Normalizer |
DataCache |
Cache |
DataPipeline |
Pipeline |
CSVDataSource |
CSVSource |
Zone géographique (v1.x)
KadiPy v1.x est conçu exclusivement pour le Bénin. La validation des coordonnées GPS, les algorithmes phénologiques, les facteurs logistiques et les données de prix sont calibrés pour le contexte béninois.
Le support d'autres pays d'Afrique de l'Ouest est prévu dans les versions futures.
Documentation
La documentation complète (guides d'API, exemples) est disponible sur : https://delsDin.github.io/kadipy/
Licence et contribution
- Licence : MIT
- Dépôt GitHub : https://github.com/delsDin/kadipy
- Compatibilité Python : >= 3.9
- Version courante : 1.2.0
Metadata
Release files for kadipy 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kadipy-1.2.0.tar.gz | 166.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kadipy-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 359.5 kB
Release files / kadipy-1.2.0.tar.gz
| Download URL | kadipy-1.2.0.tar.gz |
|---|---|
| Size | 166.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
feccca22cd67c8c8ff54f3de67408267444eb85d5a7fb49e887050301a07cbc4
|
|
BLAKE2b-256 checksum How to use checksums |
34d5efb4ff7c0bdf37fac891dd04290cca696ff050728fdaefe9c72d0a289158
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency logRelease files / kadipy-1.2.0-py3-none-any.whl
| Download URL | kadipy-1.2.0-py3-none-any.whl |
|---|---|
| Size | 192.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c6832dc8d0ef3b215e06f9449a9baa535db6f77d839a10372aa9350e36626eb3
|
|
BLAKE2b-256 checksum How to use checksums |
c8ca5d801b19f3da2b591cb587441f60a3ee5140d0e87f509ba6db4f70e8acf9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency log