Aller au contenu

Organisation des paquets

Depuis l'ADR-0001, mic-struct n'est pas un seul paquet mais 3 distributions PyPI indépendantes qui partagent le même espace de noms mic.* (namespace package PEP 420 — aucun __init__.py racine). On n'installe que ce dont le service a besoin ; les imports restent toujours import mic.<module>.

Versions indépendantes

mic-core, mic-datastore et mic-platform évoluent indépendamment avec les tags core-vX.Y.Z, datastore-vX.Y.Z et platform-vX.Y.Z. Le méta-paquet mic-struct conserve la compatibilité des installations historiques. Épinglez chaque paquet dans une plage compatible, par exemple >=0.1,<1, plutôt que de supposer des numéros identiques.

Les 3 paquets

Paquet PyPI Rôle Modules mic.*
mic-core Fondations transverses : contrats statiques ou gouvernés, portée d'organisation, HTTP, erreurs, auth inter-service, client, observabilité, santé, résilience, rejeu, CLI et gRPC mic.contracts · mic.tenancy · mic.model · mic.http · mic.fastapi · mic.litestar · mic.auth · mic.client · mic.observability · mic.healthcheck · mic.resilience · mic.event_replay · mic.cli · mic.grpc
mic-datastore Persistance et messagerie : stockages, cache, outbox, idempotence, verrous, bus, read-models, temps réel, tâches périodiques, response-cache et sharding mic.datastorage · mic.cache · mic.outbox · mic.idempotency · mic.locking · mic.eventbus · mic.queue · mic.read_models · mic.realtime · mic.scheduling · mic.response_cache · mic.shard
mic-platform Politiques plateforme : autorisation, fournisseurs d'identité et rate-limiting mic.authz · mic.identity · mic.ratelimit

Espace de noms partagé — import mic.contracts (mic-core) et import mic.outbox (mic-datastore) coexistent sans conflit : les trois distributions installent sous le même dossier mic/.

Quel paquet pour quel besoin ?

Besoin Paquet + extra
Service HTTP FastAPI mic-core[fastapi]
Service HTTP Litestar mic-core[litestar]
Auth JWT inter-service mic-core[auth]
Vérification OIDC / JWKS mic-core[oidc]
Contrats gouvernés / portée d'organisation mic-core
Client HTTP sortant signé mic-core[client]
Observabilité (Prometheus + OTel) mic-core[observability] (ou [full-observability] avec Sentry + tracing)
gRPC / CLI mic-core[grpc] · mic-core[cli]
Postgres / MySQL / Oracle mic-datastore[postgres] · [mysql] · [oracle]
Mongo / Neo4j mic-datastore[mongo] · [neo4j]
Redis (cache, locks, event bus, idempotence) mic-datastore[redis]
Tâches périodiques distribuées mic-datastore[redis]
Messaging durable (NATS / Kafka) mic-datastore[messaging] (ou [nats] / [kafka])
WebSocket temps réel mic-datastore[ws]
Rate-limiting mic-platform[redis]
Autorisation OPA / OpenFGA mic-platform[opa] · mic-platform[openfga]
Client Keycloak mic-platform[keycloak]

Exemple — un service API + Postgres + auth + observabilité :

pip install "mic-core[fastapi,auth,observability]" "mic-datastore[postgres]"

Le scaffold cookiecutter génère déjà ces dépendances dans le pyproject.toml du service.