Skip to main content

TerminaTodo v2.0

Framework unificado de gestión de almacenamiento para Deep Learning

PyPI version Python 3.9+ License: MIT GitHub


¿Qué es TerminaTodo?

TerminaTodo conecta todos tus almacenamientos en una sola interfaz y los hace disponibles para entrenar modelos con TenMiNaTor:

Tipo Soportado
Local (SSD, HDD, USB, RAM)
Google Drive
Microsoft OneDrive
Dropbox
SFTP
FTP
HTTP/S (Apache/Nginx dir listing)
S3-compatible (MinIO, Wasabi, etc.)

Instalación

# Instalación básica (API + almacenamiento local)
pip install terminatodo

# Con soporte completo de nube
pip install terminatodo[cloud]

# Con SFTP
pip install terminatodo[sftp]

# Con S3
pip install terminatodo[s3]

# Todo incluido
pip install terminatodo[all]

Inicio rápido

Como librería Python

from terminatodo import TerminaTodo

tt = TerminaTodo()

# Ver todos los almacenamientos
print(tt.list_all())

# Sincronizar datos locales → Google Drive
tt.sync("local:/home/user/datasets", "gdrive:/ML_Datasets")

# Iniciar entrenamiento con TenMiNaTor
from terminatodo.training.training_bridge import TrainingBridge
bridge = TrainingBridge(unified_manager=tt.unified)
session_id = bridge.start_training(
    data_source_uri="local:/data/train.csv",
    model_config={"epochs": 50, "learning_rate": 0.001},
    output_uri="local:/models/",
)

Como API REST

# Iniciar servidor
terminatodo start --port 8765

# Documentación interactiva en: http://localhost:8765/docs

Como CLI

# Listar almacenamientos
terminatodo list

# Sincronizar
terminatodo sync local:/data gdrive:/backup

# Entrenamiento
terminatodo training start local:/data/train.csv --epochs 20 --lr 0.001

# Ver sesiones
terminatodo training list

Configuración de nube

Google Drive

import json
tt.cloud.authenticate_google_drive(json.dumps({
    "type": "service_account",
    "project_id": "mi-proyecto",
    "private_key_id": "...",
    "private_key": "-----BEGIN PRIVATE KEY-----\n...",
    "client_email": "mi-cuenta@mi-proyecto.iam.gserviceaccount.com",
    # ... resto del JSON de cuenta de servicio
}))

Dropbox

tt.cloud.authenticate_dropbox("sl.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")

OneDrive

tt.cloud.authenticate_onedrive(
    client_id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    client_secret="tu_secreto",
    tenant_id="common",  # o tu tenant ID
)

Servidores remotos

# SFTP
tt.remote.add_server({
    "server_id": "mi_servidor",
    "name": "Servidor ML",
    "host": "192.168.1.100",
    "port": 22,
    "protocol": "sftp",
    "username": "ubuntu",
    "password": "mi_password",
})

# S3-compatible (MinIO)
tt.remote.add_server({
    "server_id": "minio_local",
    "name": "MinIO Local",
    "host": "localhost",
    "port": 9000,
    "protocol": "s3",
    "username": "minioadmin",      # access_key
    "password": "minioadmin",      # secret_key
    "api_key": "http://localhost:9000",  # endpoint URL
})

# Listar archivos
files = tt.remote.list_files("mi_servidor", "/datasets/")

API REST — Endpoints principales

Método Endpoint Descripción
POST /auth/login Obtener JWT
GET /storage/all Ver todos los almacenamientos
GET /storage/local/devices Dispositivos locales
GET /storage/local/files?path=/data Archivos locales
GET /storage/cloud/services Servicios en nube
POST /storage/cloud/auth/google Autenticar Google Drive
POST /storage/cloud/auth/dropbox Autenticar Dropbox
GET /storage/cloud/{service}/files Listar archivos en nube
GET /storage/remote/servers Servidores remotos
POST /storage/remote/servers Añadir servidor
GET /storage/remote/{id}/files Archivos en servidor
POST /sync Sincronizar
GET /sync/history Historial de sync
POST /training/start Iniciar entrenamiento
GET /training/sessions Ver sesiones

Variables de entorno

Variable Descripción Default
TERMINATODO_SECRET Clave secreta JWT change-me-in-production-32chars!!
TERMINATODO_USER Usuario admin API admin
TERMINATODO_PASS Contraseña admin API terminatodo2024

⚠️ Cambiar en producción:

export TERMINATODO_SECRET="$(python3 -c 'import secrets; print(secrets.token_hex(32))')"
export TERMINATODO_USER="mi_usuario"
export TERMINATODO_PASS="mi_contraseña_segura"

Tests

pip install terminatodo[dev]
pytest tests/ -v

Integración con TenMiNaTor Web App

TerminaTodo se integra directamente con la app web de TenMiNaTor. El endpoint /training/start acepta cualquier URI de almacenamiento como fuente de datos.

# Desde la app web (tenminator-web)
curl -X POST http://localhost:8765/training/start \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "data_source_uri": "gdrive:/datasets/train.csv",
    "model_config": {"epochs": 50, "learning_rate": 0.001, "batch_size": 32},
    "output_uri": "local:/models/"
  }'

Estructura del proyecto

terminatodo/
├── __init__.py          # Exports principales
├── core.py              # Clase TerminaTodo principal
├── cli.py               # CLI (terminatodo start/list/sync/training)
├── api/
│   └── app.py           # FastAPI con todos los endpoints
├── auth/
│   └── jwt_auth.py      # JWT HS256 + hash de contraseñas
├── db/
│   └── database.py      # SQLite persistencia
├── storage/
│   ├── local_storage.py # SSD/HDD/USB/RAM
│   └── unified_manager.py # Vista unificada
├── cloud/
│   └── cloud_manager.py # Google Drive, Dropbox, OneDrive
├── hosting/
│   └── remote_manager.py # SFTP, FTP, HTTP/S, S3
├── sync/
│   └── sync_manager.py  # Sincronización bidireccional
└── training/
    └── training_bridge.py # Integración TenMiNaTor
tests/
    └── test_terminatodo.py # 25+ tests

Licencia

MIT © 2024 Cristian / yoqer

Release files for terminatodo 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for terminatodo 2.0.0
File Size Uploaded
terminatodo-2.0.0.tar.gz 30.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for terminatodo 2.0.0
File Interpreter ABI Platform
terminatodo-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 61.5 kB

Release files / terminatodo-2.0.0.tar.gz

Download URL terminatodo-2.0.0.tar.gz
Size 30.6 kB
Tags Source
SHA-256 checksum
How to use checksums
47a29af2d400228bb8c79fd90c2a1e1a54d979ecf168ec4c7bc13b781bedaa8f
BLAKE2b-256 checksum
How to use checksums
abb269def649f3f77b2e9204c35a96e7ccc6bfd4b21e1791d7b4ec6f3c11a114
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.5

Release files / terminatodo-2.0.0-py3-none-any.whl

Download URL terminatodo-2.0.0-py3-none-any.whl
Size 30.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c2cc5e8b157a44ac787b582845019d7e5a1311cb0b600a9c2e2b3d7e225dcd5d
BLAKE2b-256 checksum
How to use checksums
1106a69d46cc57a5a38fd8e3be75924a38835a55327ee04630e1711b6b584947
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.5

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page