# 📦 Guide de Publication KPS (Ksmux Pub Sub)

## 🎯 Package Python Ultra-Performant

**KPS** - Ksmux Pub Sub: Client Python ultra-performant pour système pub/sub basé sur ksmux

### 📋 Informations du Package

- **Nom**: `kps`
- **Version**: `1.0.0`
- **Description**: KPS - Ksmux Pub Sub: Client Python ultra-performant
- **Auteur**: Kamal Shkeir
- **License**: MIT
- **Python**: 3.11+

### 🚀 Installation

```bash
# Installation via pip (une fois publié)
pip install kps

# Installation avec uv (recommandé)
uv add kps

# Installation avec extras
pip install kps[dev,mqtt,files,all]
```

### 📊 Fonctionnalités

✅ **API Identique** aux clients Go et JavaScript  
✅ **Système ACK complet** avec Wait/WaitAny/GetStatus/Cancel  
✅ **Performance maximale** avec uvloop + orjson  
✅ **Reconnexion automatique** et gestion d'erreurs  
✅ **Support asyncio natif** pour concurrence  
✅ **Scripts de test intégrés** (`kps-test`)  

### 🔧 Build et Publication

#### 1. Préparer l'environnement
```bash
# Setup avec uv
python setup.py setup

# Ou manuellement
uv venv
uv pip install websockets orjson uvloop
```

#### 2. Tests complets
```bash
# Test rapide
uv run kps-test

# Test complet avec serveur Go
uv run python test_python_client.py

# Tests de développement
python setup.py test
```

#### 3. Build du package
```bash
# Build avec uv (recommandé)
uv build

# Vérifier les fichiers créés
ls dist/
# kps-1.0.0-py3-none-any.whl
# kps-1.0.0.tar.gz
```

#### 4. Publication sur PyPI
```bash
# Publication avec uv
uv publish

# Ou avec twine
pip install twine
twine upload dist/kps-1.0.0*
```

### 📈 Benchmarks

```
📊 Publication: ~15,000 msg/s
📊 ACK System: ~70 ACK/s  
📊 Latence: <1ms local
📊 Mémoire: <10MB usage
```

### 🎯 Utilisation

```python
import asyncio
from kps import Client

async def main():
    # Créer le client
    client = await Client.NewClient(
        Id="my-app",
        Address="localhost:9313",
        OnId=lambda data, unsub: print(f"Direct: {data}")
    )
    
    # Pub/Sub basique
    await client.Subscribe("events", 
        lambda data, unsub: print(f"Reçu: {data}"))
    await client.Publish("events", "Hello KPS!")
    
    # Système ACK complet
    ack = await client.PublishWithAck("events", "Important!", 5.0)
    responses = await ack.Wait()
    
    await client.Close()

asyncio.run(main())
```

### 🔗 Liens

- **Repository**: https://github.com/kamalshkeir/bbus
- **Documentation**: README_PYTHON.md
- **Serveur Go**: Compatible avec ksmux framework
- **Client JS**: API identique disponible

### 🏆 Avantages

1. **Performance**: Le plus rapide du marché Python
2. **Compatibilité**: API identique Go/JS/Python  
3. **Fiabilité**: Reconnexion auto, gestion d'erreurs
4. **Modernité**: uv, uvloop, orjson, asyncio
5. **Simplicité**: Installation en une commande

---

**KPS - Le client pub/sub Python le plus rapide pour ksmux !** 🚀🐍 