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
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
python -m pip install -e .
Inicio rapido
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
wsbuilder.framework: fachada publica conApp,Request,Response,HTTPServer,WebSockety 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.cacheywsbuilder.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 porTaskManager.wsbuilder.dns: servidor DNS UDP local.wsbuilder.db_replicas: lectura optimizada y pool de replicas SQLite.wsbuilder.cookiesywsbuilder.headers: utilidades HTTP de bajo nivel.wsbuilder.ia: redes neuronales basicas desde cero, con clasificacion, prediccion y estadistica.wsbuilder.predicts: utilidad matematicaPredictor.
Casos de uso
- APIs REST pequenas con respuestas JSON y HTML.
- Chat, notificaciones y telemetria sobre WebSocket.
- Persistencia local con SQLite y modelo declarativo.
- Cache de rutas o contenido calculado.
- Control de acceso, bloqueo temporal y observabilidad interna.
- Procesos de background y lectura optimizada sobre SQLite.
IA desde cero
wsbuilder.ia incluye tres bloques:
DataSetpara manejar datos, dividir conjuntos, mezclar y calcular estadistica por columna.NeuralNetworkyDenseLayerpara regresion y clasificacion.describe_datayevaluate_errorspara desviacion, incertidumbre y error maximo permisible.
Regresion
from wsbuilder import NeuralNetwork
X = [[0.0], [1.0], [2.0], [3.0]]
Y = [[0.0], [1.0], [2.0], [3.0]]
net = NeuralNetwork(seed=7, learning_rate=0.1, loss="mse")
net.add_dense(4, input_size=1, activation="tanh")
net.add_dense(1, activation="linear")
net.fit(X, Y, epochs=2000, batch_size=4)
prediction = net.predict([1.5])
report = net.predict_with_metrics([1.5], expected=[1.5], permissible_error=0.25)
Clasificacion
from wsbuilder import NeuralNetwork
X = [[0, 0], [0, 1], [1, 0], [1, 1]]
labels = ["no", "yes", "yes", "yes"]
clf = NeuralNetwork(seed=3, learning_rate=0.3, loss="binary_cross_entropy", task="classification")
clf.add_dense(6, input_size=2, activation="tanh")
clf.add_dense(1, activation="sigmoid")
clf.fit_classification(X, labels, epochs=3000, batch_size=4)
label = clf.predict_class([1, 0])
probability = clf.predict_proba([1, 0])
accuracy = clf.accuracy(X, labels)
Manejo de datos
from wsbuilder.ia import DataSet, describe_data, evaluate_errors
dataset = DataSet([[1, 2], [2, 3], [3, 4]], [[0], [1], [1]])
train, test = dataset.split(train_ratio=0.67, shuffle=True, seed=42)
stats = dataset.describe_features()
errors = evaluate_errors([10.0, 11.0], [9.8, 11.4], permissible_error=0.5)
summary = describe_data([1.0, 1.2, 0.9, 1.1])
Entrenamiento en background con Tasks
from wsbuilder import NeuralNetwork, TaskManager, submit_training_task
X = [[0, 0], [0, 1], [1, 0], [1, 1]]
labels = ["no", "yes", "yes", "yes"]
clf = NeuralNetwork(seed=3, learning_rate=0.3, loss="binary_cross_entropy", task="classification")
clf.add_dense(6, input_size=2, activation="tanh")
clf.add_dense(1, activation="sigmoid")
tasks = TaskManager(max_concurrent=1)
task = submit_training_task(
tasks,
clf,
X,
labels,
classification=True,
epochs=3000,
batch_size=4,
shuffle=False,
)
history = task.get()
label = clf.predict_class([1, 0])
Documentacion
Contribucion y soporte
- Crea ramas desde
mainusandofeat/<nombre>ofix/<nombre>. - Mantiene los cambios enfocados en un solo tema por PR.
- Abre el pull request hacia
maincon 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).
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wsbuilder-0.25.1.tar.gz.
File metadata
- Download URL: wsbuilder-0.25.1.tar.gz
- Upload date:
- Size: 122.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f4333621d6aa8f9099b2e9e7dacfc6dfcbef37c860c34095badc55d7d222ec9
|
|
| MD5 |
dff3a89ec56ff748b8043d6e67389124
|
|
| BLAKE2b-256 |
69e05610356d42194f1c3e94b1223eaaf1cdb664d58be753019aa8dcf3a5fe89
|
File details
Details for the file wsbuilder-0.25.1-py3-none-any.whl.
File metadata
- Download URL: wsbuilder-0.25.1-py3-none-any.whl
- Upload date:
- Size: 112.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f341d620eef9b1e4063f8c820ad3b4671b65dfdda7b19d341cd4bab338741e9
|
|
| MD5 |
03cd91a2a57285111635f8ba9e3b2aa5
|
|
| BLAKE2b-256 |
3a6237322cb5b84c22400b3d9f987fe3990fd437c1c22ea18cd65cc2c5eba038
|