Framework de generación de reportes LaTeX científicos vía Cloud
Project description
CloudMatchPDF: Scientific Reporting Framework
CloudMatchPDF es un motor de automatización en Python diseñado para la generación de documentos $\LaTeX$ técnicos y académicos de alta precisión. El sistema integra el poder de SymPy para cálculo simbólico y Matplotlib para visualización vectorial, todo procesado mediante una infraestructura de compilación distribuida en la nube.
Características Principales
- LatexBuilder (The Architect): Arquitecto de documentos con API fluida. Permite inyectar ecuaciones de SymPy, bloques de código y gráficas vectoriales sin tocar una sola línea de código $\LaTeX$.
- Integración Gráfica (Cloud-Safe): Renderizado de funciones matemáticas y figuras de Matplotlib mediante primitivas vectoriales de $\LaTeX$, garantizando compatibilidad total con compiladores en la nube.
- LatexValidator (The Shield): Sistema de autocuración sintáctica que sanitiza caracteres reservados y asegura la integridad de los entornos matemáticos antes de la compilación.
- CloudCompiler (The Bridge): Motor de compilación asíncrona que utiliza mirrors distribuidos, eliminando la necesidad de instalaciones locales de TeX Live (+20GB).
Estructura del Proyecto
CloudMatchPDF/
├── src/ # El contenedor de código fuente (obligatorio para el setup.py actual)
│ └── cloudmatchpdf/ # El paquete real (lo que se importa)
│ ├── __init__.py # ¡FUNDAMENTAL! Expone las clases para importaciones limpias
│ ├── latex_builder.py # Arquitecto de documentos
│ ├── latex_validator.py # Sanitización y validación
│ └── cloud_compiler.py # Gestión de mirrors y peticiones API
├── tests/ # Suite de Pruebas Unitarias
├── outputs/ # Directorio de salida (ignorado en el empaquetado)
├── setup.py # El mapa que apunta a src/
├── pyproject.toml # Estándar de construcción moderno
└── README.md # Documentación técnica
Referencia Detallada de la API
Clase LatexBuilder
Es el núcleo de la construcción lógica del documento. Soporta encadenamiento de métodos (Fluent API).
Configuración Estructural
set_title(title)/set_author(author): Define los metadatos del documento.add_package(name, options): Registra nuevos paquetes en el preámbulo (ej.geometry,physics).add_section(name, numbered=True): Crea secciones o secciones de tipo asterisco.
Inyección de Contenido
add_text(text): Añade párrafos con sanitización automática de caracteres reservados.add_equation(obj, subtitle): Convierte automáticamente objetos SymPy o strings en ecuaciones centradas.add_math_block(latex_str, numbered): Inyecta bloques matemáticos puros con control de numeración.add_plot(obj, caption, x_range):- Funcionalidad: Renderiza funciones matemáticas (como strings) o figuras de Matplotlib directamente en el PDF.
- Mecánica: Traduce los datos a lenguaje
picturede $\LaTeX$ para un acabado vectorial perfecto.
Utilidades y Generación
import_file(path): Importa contenido de archivos externos (.txt, .tex) directamente al cuerpo del reporte.build(): Ejecuta el pipeline de construcción y activa elLatexValidatorpara devolver un código fuente seguro.save_tex(filename): Exporta el código generado a un archivo local para depuración.
Ejemplo Avanzado: Reporte Científico
from cloudmatchpdf.latex_builder import LatexBuilder
from cloudmatchpdf.cloud_compiler import CloudCompiler
import sympy as sp
# Inicializar constructor con metadatos
doc = LatexBuilder(title="Análisis de Osciladores", author="Jose Jimenez")
# Construcción fluida
(doc.add_section("Cinemática del Sistema")
.add_text("Se analiza la ecuación de movimiento para un sistema masa-resorte:")
.add_equation(sp.Function('x')(sp.Symbol('t')), subtitle="Posición temporal")
.add_plot(obj="sin(x) * exp(-0.1*x)", caption="Decaimiento de Amplitud", x_range="0:10")
)
# Compilación en la nube
compiler = CloudCompiler()
compiler.compile(doc.build(), output="Reporte_Cientifico.pdf")
Calidad y Rigor (QA)
El sistema mantiene integridad mediante pruebas automatizadas con Pytest:
pytest tests/
| Componente | Validación |
|---|---|
| Builder | Renderizado SymPy, Fluent API y manejo de metadatos. |
| Validator | Escape de guiones bajos (_), porcentajes (%) y cierre de entornos. |
| Plotter | Normalización de datos y generación de entorno picture. |
| Compiler | Disponibilidad de mirrors y manejo de errores HTTP. |
Reconocimientos
Este proyecto fue desarrollado como parte de un proceso de aprendizaje continuo y búsqueda de la excelencia técnica. Un agradecimiento especial a:
- Harvard CS50P: Por sentar las bases de la programación robusta en Python.
- David J. Malan: Por la inspiración y la metodología de enseñanza que impulsaron la creación de este framework.
Licencia y Créditos
Desarrollado por Jose V. Jimenez. Proyecto enfocado en la excelencia académica y la automatización científica para investigadores y estudiantes de ingeniería.
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
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 cloudmatchpdf-1.0.3.tar.gz.
File metadata
- Download URL: cloudmatchpdf-1.0.3.tar.gz
- Upload date:
- Size: 11.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc83f7cd0ddfa0fc42f797a66594fe77f4a65a89d1dd98ea59ee78aaa968d8c7
|
|
| MD5 |
3e54f13d2f615884c141d4860adfa6ff
|
|
| BLAKE2b-256 |
18cb5a0ec4adc1f61a4c6573cfcf13ca8534998fd80c6f736dabd202242f6a1c
|
File details
Details for the file cloudmatchpdf-1.0.3-py3-none-any.whl.
File metadata
- Download URL: cloudmatchpdf-1.0.3-py3-none-any.whl
- Upload date:
- Size: 11.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0232b14b66d243769473e0ee0a6110e86a3ee2340857312858c5b24173820143
|
|
| MD5 |
9b7db154f7beb0e30c80930f27b7832b
|
|
| BLAKE2b-256 |
9a872c018e10552a7fe24e3b70d2c711a769f499b0eeb8c840b82ec5a67606cc
|