Metadata-Version: 2.4
Name: electricore-client
Version: 0.1.0
Summary: Client Python léger (httpx + pydantic) vers l'API facturiste electricore — sans polars/duckdb/fastapi
Project-URL: Homepage, https://github.com/Energie-De-Nantes/electricore
Project-URL: Repository, https://github.com/Energie-De-Nantes/electricore
Project-URL: Issues, https://github.com/Energie-De-Nantes/electricore/issues
Author: Virgile
License: AGPL-3.0
Keywords: api-client,electricore,enedis,energy,facturation
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27.0
Requires-Dist: pydantic>=2.0.0
Provides-Extra: arrow
Requires-Dist: polars<2.0.0,>=1.0.0; extra == 'arrow'
Description-Content-Type: text/markdown

# electricore-client

Client Python **léger** vers l'API facturiste [electricore](https://github.com/Energie-De-Nantes/electricore).

Dépendances de base : **httpx + pydantic uniquement** — pas de polars, duckdb ni
fastapi. Pensé pour être consommé par `souscriptions_odoo` (Odoo 19) et tout
intégrateur qui n'a pas besoin de tirer le moteur entier.

Lecture seule sur electricore (« Odoo tire d'electricore », ADR-0027/0012).

## Installation

```bash
pip install electricore-client            # base : httpx + pydantic
pip install "electricore-client[arrow]"   # + client Arrow (DataFrames polars)
```

## Usage

```python
from electricore_client import ElectricoreClient

client = ElectricoreClient(url="https://electricore.example", api_key="…")

# Méta-périodes mensuelles (flux JSONL typé, sans pagination)
with client.meta_periodes(mois="2026-05-01") as stream:
    print(stream.contract_version)        # version de contrat (en-tête)
    for periode in stream:                # itère des PeriodeMeta typés
        ...

# Chronologie d'un point ou d'un contrat (union discriminée)
with client.chronologie(pdl="12345678901234") as stream:
    lignes = stream.collect()

# Calculateur TURPE variable (POST RPC, pas un stream)
resultats = client.turpe_variable([...])  # résultats indexés par id opaque
```

Le client Arrow historique (`flux/releves/facturation/accise/cta` → `pl.DataFrame`)
vit dans `electricore_client.arrow`, derrière l'extra `[arrow]`.

## Conception

Voir [ADR-0043](https://github.com/Energie-De-Nantes/electricore/blob/main/docs/adr/0043-electricore-client-paquet-separe.md).
