Metadata-Version: 2.5
Name: iaos-sdk
Version: 0.1.0
Summary: SDK Python des produits pour le noyau iaos — connecteurs et notifier (ADR-078 §11 P2.16).
Author: Holding MAPFARM
License: Proprietary
Requires-Python: >=3.11
Requires-Dist: httpx<1,>=0.27
Provides-Extra: test
Requires-Dist: pytest>=8; extra == 'test'
Description-Content-Type: text/markdown

# iaos-sdk — SDK Python des produits pour le noyau iaos

ADR-078 §11 P2.16 (« SDK publiés sur la forge ») : une source au lieu de copies vendorées
produit par produit. Version 0.1.0 :

| Module | Ce qu'il fait | Remplace |
|---|---|---|
| `iaos_sdk.connecteurs` | appels de connecteurs par le noyau (`POST /api/connectors/<nom>/call` : DataForSEO, Keepa, Google Trends, Arctic Shift), run courant transmis, erreurs claires (`NoyauConnecteurError`) | `graphs/common/core/iaos_gateway.py` de harvest et fdm |
| `iaos_sdk.notifier` | courriel et Slack d'exploitation par la capacité « notifier » (`POST /api/iaos/v1/notifier`), une seule fois (`cle_idempotence`), `categorie` transactionnel / diffusion | `graphs/common/core/iaos_notifier.py` de harvest et fdm |

Pas encore dans le SDK : le client corpus (les copies de harvest, fdm et de la factory
divergent et dépendent de modules du produit — `entities`, `node_events_client`) ; le
client de lecture de la factory (`iaos_read_client.py`) ; les clients de mapbox et
d'iaos-apps. Ils rejoindront le SDK une fois leurs dépendances au produit rendues
injectables.

## Installation — référence directe, jamais par nom

Le registre PyPI de la forge publie le paquet (`.gitea/workflows/publish-iaos-sdk.yml`,
déclenchement manuel). On l'installe **par URL + empreinte**, jamais par nom avec
`--extra-index-url` (dependency confusion : un tiers pourrait publier `iaos-sdk` sur
pypi.org) :

```
iaos-sdk @ https://git.it.iaos.cc/api/packages/mapfarm/pypi/files/iaos-sdk/0.1.0/iaos_sdk-0.1.0-py3-none-any.whl#sha256=<empreinte de la page simple/iaos-sdk/>
```

Monter de version = changer l'URL ET l'empreinte (outil : `~/.cache/iaos-outils/epingler_forge.py`).

## Adoption dans un produit sans toucher aux appelants

L'ancien module devient un ALIAS du module du SDK ; les imports existants et les
`monkeypatch` des tests visent le même objet module :

```python
# graphs/common/core/iaos_gateway.py — désormais fourni par iaos-sdk
import sys

import iaos_sdk.connecteurs as _sdk

sys.modules[__name__] = _sdk
```

## Configuration (environnement)

`IAOS_API_URL` (défaut `http://iaos-api:8000`), `IAOS_PROJECT_KEY` (clé projet, `X-Iaos-Key`),
`IAOS_CONNECTOR_TENANT` (défaut historique `harvest`), `CONNECTEURS_VIA_NOYAU`,
`IAOS_NOTIFIER_COMPANY` (défaut `hold`), `MESSAGES_VIA_NOYAU` — voir l'en-tête de chaque module.

## Développement

```
pip install -e ".[test]" ruff
ruff check src tests && ruff format --check src tests && pytest -q
```
