Metadata-Version: 2.4
Name: wsbuilder
Version: 0.20.0
Summary: Framework ligero HTTP + WebSocket.
Author: wsbuilder Authors
License-Expression: MIT
Keywords: websocket,http,framework,server,python
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# wsbuilder

`wsbuilder` es una libreria Python para construir servidores HTTP, WebSocket y utilidades de infraestructura en un unico paquete.

Se apoya en la biblioteca estandar y expone bloques pequenos y composables para:

- routing HTTP y respuestas tipadas.
- WebSocket de bajo nivel con control de frames.
- ORM ligero para SQLite.
- cache, seguridad, metricas y tareas en background.
- DNS local y replicas SQLite optimizadas.

## Mapa rapido

<div class="diagram">
<div class="diagram-title">Mapa rapido</div>
<div class="diagram-track">
<div class="diagram-node">Cliente</div>
<div class="diagram-arrow">→</div>
<div class="diagram-node">HTTPServer</div>
<div class="diagram-arrow">→</div>
<div class="diagram-node">App</div>
<div class="diagram-arrow">→</div>
<div class="diagram-node">Router</div>
<div class="diagram-arrow">→</div>
<div class="diagram-node">HTTP / WS</div>
</div>
<div class="diagram-note" style="margin-top: 0.85rem;">El servicio se organiza alrededor de `App` y sus capas transversales.</div>
</div>

## Por que destaca

- Menos superficie de dependencia en runtime.
- Flujo explicito: request, dispatch, respuesta y cierre.
- Modulos separados que puedes activar solo cuando los necesitas.
- API publica uniforme: `App`, `Response`, `Database`, `TaskManager`, `LocalDNSServer`.
- Adecuado para servicios pequenos, medianos y capas de borde en Microservicios.

## Instalacion

```bash
python -m pip install -e .
```

## Inicio rapido

```python
from wsbuilder import App, Response

app = App(cors_allow_origin="*")
app.enable_metrics()

@app.view("/")
def home(_request):
    return Response.html("<h1>wsbuilder</h1>")

@app.api("/api/health")
def health(_request):
    return {"ok": True}

app.run("0.0.0.0", 8765)
```

## Mapa de la libreria

<div class="diagram">
<div class="diagram-title">Mapa de la libreria</div>
<div class="diagram-track">
<div class="diagram-node">framework / App</div>
<div class="diagram-arrow">→</div>
<div class="diagram-node">http / ws / orm</div>
<div class="diagram-arrow">→</div>
<div class="diagram-node">cache / security</div>
<div class="diagram-arrow">→</div>
<div class="diagram-node">metrics / tasks</div>
<div class="diagram-arrow">→</div>
<div class="diagram-node">dns / replicas / utils</div>
</div>
</div>

- `wsbuilder.framework`: fachada publica con `App`, `Request`, `Response`, `HTTPServer`, `WebSocket` y helpers.
- `wsbuilder.http`: parseo HTTP, request/response y streaming.
- `wsbuilder.ws`: handshake, frames y errores WebSocket.
- `wsbuilder.orm`: modelos SQLite, `QuerySet`, transacciones y helpers SQL.
- `wsbuilder.cache` y `wsbuilder.caches`: cache en memoria y cache declarativa de respuestas.
- `wsbuilder.security`: ACL, rate limiting y decision engine.
- `wsbuilder.metrics`: snapshot y stream de observabilidad.
- `wsbuilder.tasks`: trabajo asincrono controlado por `TaskManager`.
- `wsbuilder.dns`: servidor DNS UDP local.
- `wsbuilder.db_replicas`: lectura optimizada y pool de replicas SQLite.
- `wsbuilder.cookies` y `wsbuilder.headers`: utilidades HTTP de bajo nivel.
- `wsbuilder.predicts`: utilidad matematica `Predictor`.

## Casos de uso

1. APIs REST pequenas con respuestas JSON y HTML.
2. Chat, notificaciones y telemetria sobre WebSocket.
3. Persistencia local con SQLite y modelo declarativo.
4. Cache de rutas o contenido calculado.
5. Control de acceso, bloqueo temporal y observabilidad interna.
6. Procesos de background y lectura optimizada sobre SQLite.

## Documentacion

- [Inicio](docs/index.md)
- [Arquitectura](docs/architecture.md)
- [Ayuda](docs/help/index.md)
- [Referencia](docs/reference/index.md)

## Contribucion y soporte

- Crea ramas desde `main` usando `feat/<nombre>` o `fix/<nombre>`.
- Mantiene los cambios enfocados en un solo tema por PR.
- Abre el pull request hacia `main` con una descripcion corta y notas de riesgo.
- Si encuentras un problema de seguridad, reportalo de forma privada.

### Soporte opcional

Si `wsbuilder` te resulta util y quieres apoyar el mantenimiento del proyecto, puedes donar en BTC:

`bc1q3lhxpr9yantvefmvhpd2h4lu0ykf3t45zvuve2`

Red: `BTC mainnet` (Native SegWit).
