Skip to main content

Utilidades corporativas para automatización RPA en Python

Project description

util-rpa

Librería de utilidades corporativas en Python orientada a automatización operativa (RPA), procesos batch y pipelines backend.

Incluye módulos para:

  • 📧 Envío de correos SMTP
  • 🗄️ Conexión a SQL Server
  • 📜 Configuración de logging centralizado

Diseñado para entornos productivos: scripts backend, ETLs, servicios batch y jobs automatizados.


✨ Objetivos

  • Simplificar tareas repetitivas en proyectos Python empresariales
  • Reducir boilerplate en envío de correos o ejecución SQL
  • Mantener estandarización y buenas prácticas
  • Facilitar adopción por equipos heterogéneos

🚀 Instalación

pip install util-rpa

Requiere Python >= 3.9 y < 3.13


📁 Estructura del paquete

util_rpa/
│
├── mail/
│   ├── models.py
│   ├── smtp.py
│   ├── template.py
│
├── sql/
│   ├── sqlserver.py
│
├── logging_utils.py
├── __init__.py
└── bin/
    └── mail.exe  (legacy)

✉️ Módulo Mail

Este módulo provee un cliente SMTP estándar y opcionalmente plantillas simples.

Ejemplo: envío básico

from util_rpa.mail.models import EmailMessage
from util_rpa.mail.smtp import SMTPClient

msg = EmailMessage(
    sender="noreply@empresa.com",
    to=["usuario@empresa.com"],
    subject="Proceso completado",
    body_html="<b>OK</b>"
)

client = SMTPClient(host="10.10.1.12", port=25)
client.send(msg)

Ejemplo: uso de plantilla

from util_rpa.mail.template import EmailTemplate

tpl = EmailTemplate(
    subject="Reporte ${fecha}",
    body="""
        <h3>Hola ${usuario}</h3>
        Resultado: ${estado}
    """
)

subject, body = tpl.render(
    fecha="2025-01-01",
    usuario="Jonathan",
    estado="OK"
)

msg = EmailMessage(
    sender="noreply@empresa.com",
    to=["usuario@empresa.com"],
    subject=subject,
    body_html=body
)

La plantilla sigue sintaxis estándar de string.Template.


🗄️ Módulo SQLServer

Cliente simple basado en pyodbc, ideal para consultas rápidas y pipelines.

Ejemplo: consulta

from util_rpa.sql.sqlserver import SQLServer

db = SQLServer(
    host="10.0.0.5",
    database="DATA",
    user="robot",
    password="***"
)

df = db.query("SELECT TOP 10 * FROM tabla")
print(df)

Ejecución de comandos

affected = db.execute(
    "UPDATE tabla SET estado = ? WHERE id = ?",
    ["OK", 1234]
)

print("Registros actualizados:", affected)

📝 Logging

Inicializa logger raíz reutilizable.

from util_rpa.logging_utils import init_logging

log = init_logging(
    level="INFO",
    log_file="process.log",
    max_bytes=10*1024*1024,
    backup_count=3
)

Ahora puedes usar:

log.info("Iniciando proceso")
log.error("Error crítico", exc_info=True)

Logging rotativo para procesos batch/cron grandes.


⚠️ Sobre mail.exe (legacy)

util_rpa/bin/mail.exe es un envío SMTP alternativo para entornos Windows sin relay o TLS.

  • Úsalo solo como fallback
  • No recomendado en Linux ni Docker
  • No recomendado en entornos CI/CD

📦 Requerimientos

Dependencias mínimas:

pandas>=2.0,<3.0
pyodbc>=5.1,<6.0
python-dateutil>=2.8,<3.0

🏛️ Versionamiento

El paquete sigue Semantic Versioning (SemVer).

  • 2.0.0 → Primera versión modular (breaking changes respecto a 1.x)
  • 2.1.x → Nuevas funcionalidades sin romper compatibilidad
  • 2.1.1 → Hotfix

🧪 Desarrollo

Instalar dependencias de desarrollo:

pip install .[dev]

Correr tests:

pytest -q

📌 Buenas prácticas recomendadas

  • Inicializa logging una sola vez en main.py
  • Gestiona conexiones SQL con with
  • Usa plantillas para correos en vez de concatenación manual
  • No expongas credenciales en código
  • No uses mail.exe si tienes SMTP normal

📜 Licencia

MIT — Uso libre con atribución.


✉️ Contacto / Autor

  • Jonathan Bolo
  • Especialista en ingeniería, Python, automatización corporativa
  • Perú

🚀 Roadmap

  • 🔐 Módulo SFTP basado en Paramiko (async/transferencias masivas/retry)
  • 📦 Zip/Tar inteligente (archivos grandes)
  • 🧯 Manejo de excepciones estandarizado
  • 📊 Integración de logging estructurado (JSON) para Splunk/ELK

📎 Ejemplos listos para copiar

Puedes crear un script main.py:

from util_rpa.logging_utils import init_logging
from util_rpa.mail.smtp import SMTPClient
from util_rpa.sql.sqlserver import SQLServer

log = init_logging()

# SQL
db = SQLServer("10.0.0.2", "PRD", "robot", "passwd")
df = db.query("SELECT COUNT(*) registros FROM ventas")
log.info(df)

# Notificación
smtp = SMTPClient("10.10.10.1", port=25)
smtp.send(...)

🛡️ Disclaimer

util-rpa es una librería técnica. No se recomienda para UI, web frameworks o interfaces HMI. Diseñada para backend operativo, batch y automatización con RPAs.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

util_rpa-2.0.2.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

util_rpa-2.0.2-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file util_rpa-2.0.2.tar.gz.

File metadata

  • Download URL: util_rpa-2.0.2.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.17

File hashes

Hashes for util_rpa-2.0.2.tar.gz
Algorithm Hash digest
SHA256 b38f9c09539a605fcc9289216861b1c2edd6897519b27c364a9ed0c7147b0cf2
MD5 8f6cd62da30757c9a8cc714d85d3c41a
BLAKE2b-256 c609af018d7909242ff9c77cf9c807d9b4c1afa77c2a72f5c6b67e4e0d60f6fd

See more details on using hashes here.

File details

Details for the file util_rpa-2.0.2-py3-none-any.whl.

File metadata

  • Download URL: util_rpa-2.0.2-py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.17

File hashes

Hashes for util_rpa-2.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 104f9e48bc904cb1609959a6acb314e3d6d962e347939546c3ee3b90c95b78dd
MD5 7b0a89fec45155b5736b397826769d3a
BLAKE2b-256 dd9c481ddbf7e5a9076438906819d68d059a1ed60414f17163186abc34a023b5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page