Skip to main content

Herramienta open-source para auditar despilfarros financieros en clústeres PySpark (AWS Glue) y manipular S3.

Project description

🛸 Antigravity PySpark Framework

Enterprise framework para resolver problemas complejos de Big Data en AWS Glue y entornos PySpark puros sin esfuerzo. Este proyecto estandariza las mejores prácticas de la industria con un solo import.

📦 Empaquetado y Licenciamiento Comercial (SaaS B2B)

Si deseas vender y distribuir este framework a una empresa externa, es imperativo proteger tu Propiedad Intelectual (ofuscar el código fuente) y venderlo con una licencia temporal (para que te paguen la renovación).

1. Ofuscar el código y armar la "Bomba de Tiempo" (Expiración)

Antes de construir el paquete, encripta el código fuente y configúrale la fecha de vencimiento exacta del contrato del cliente (ej. 31 de Diciembre de 2027):

# 1. Asegúrate de estar en el entorno virtual
source .venv/bin/activate

# 2. Generar el binario comercial ofuscado (.whl) con Bomba de Tiempo (2027)
python build_commercial.py

Este script (que te escribí a la medida) automatizará por ti la encriptación con PyArmor y el empaquetado directo hacia la carpeta dist/. Cualquier ingeniero externo que intente abrir tus archivos allí dentro verá código basura indescifrable.

2. Construcción de uso interno / Open-Source (.whl)

Para el empaquetado inicial (sin ofuscación) para probar el framework dentro de tu propio AWS Glue, ejecuta el empaquetado estándar de Python:

# Construye el antigravity-0.1.0-py3-none-any.whl en la carpeta dist/
pip install build
python -m build

🚀 Guía de Uso Rápido para Ingenieros

Motor A: Optimizador Core (DataFrameChunker)

¿Cuándo usarlo? Cuando lidias con DataFrames anchos (Wide DataFrames) o realizas analítica que provoca errores de OutOfMemory (OOM), demoras extremas, o fallos de StackOverflowError. Funciona fluidamente con cualquier volumen de datos y columnas, auto-regulando la memoria del clúster para acelerar los cruces matemáticos pesados.

¿Cómo funciona? Particiona el DataFrame verticalmente e inyecta localCheckpoint() para aislar la memoria del Catalyst Optimizer.

from antigravity.core import DataFrameChunker

# 1. Instancias el chunker indicando la llave primaria y cuántas columnas procesar a la vez.
chunker = DataFrameChunker(df_masivo, id_cols=["id_cliente"], chunk_size=50)

# 2. Defines tú lógica matemática. Spark solo le pasará 50 variables por iteración.
def mi_logica(chunk_df, indice):
    # Calcula algo y retorna un DF más pequeño
    return chunk_df.select("id_cliente", ...)

# 3. El framework ejecuta el bucle de forma segura en el clúster
resultados_parciales = chunker.process_chunks(mi_logica)

Motor B: Generador Legacy (LegacyTextTransformer)

¿Cuándo usarlo? Cuando el negocio, banco, o gobierno te exige generar archivos .TXT planos, asimétricos o posicionales a partir de datos tabulares modernos.

¿Cómo funciona? Recibe el DataFrame y usa RDD.flatMap para aplicar lógica de python puro distribuidamente.

from antigravity.legacy import LegacyTextTransformer

# 1. Escribes las reglas del negocio (1 Fila de Spark = N líneas de texto)
def reglas_bancarias(fila):
    yield f"HEADER_{fila.id}"
    yield f"BODY_{fila.saldo}"

# 2. Invocas el framework
transformer = LegacyTextTransformer(df)

# 3. Generas la salida
transformer.save_as_text(reglas_bancarias, "s3://mi-bucket/banco_txt/")

Motor IO: Smart Exporter (S3Finalizer)

¿Cuándo usarlo? Cuando detestas que PySpark guarde tus archivos como part-0000X.csv y deje basura como los archivos _SUCCESS en tu S3.

¿Cómo funciona? Se conecta mediante boto3 para listar, ordenar, secuenciar y renombrar la salida de Spark.

from antigravity.io import S3Finalizer

# 1. Escribes tu DataFrame normal en Spark
df.write.parquet("s3://mi-bucket/salida_sucia/")

# 2. Invocas el framework para secuenciarlos inteligentemente e inyectar el formato
finalizador = S3Finalizer(bucket_name="mi-bucket")
finalizador.sequence_spark_outputs(
    s3_prefix="salida_sucia/",
    pattern="MI_EMPRESA_DATA_{seq:04d}.parquet" # Resultado: MI_EMPRESA_DATA_0001.parquet
)

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

antigravity_lite-0.1.1.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

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

antigravity_lite-0.1.1-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file antigravity_lite-0.1.1.tar.gz.

File metadata

  • Download URL: antigravity_lite-0.1.1.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for antigravity_lite-0.1.1.tar.gz
Algorithm Hash digest
SHA256 97eef943281ddf6c49b69f903a03af490db43a8498c09c44de507bdfd49f0f5a
MD5 f61e9a8aff5b17a5d3f0510beeec5dd0
BLAKE2b-256 d9ce2ac505b53260c5cde1e196357ff73625442bfdc6060c4dd3d2797949cffc

See more details on using hashes here.

Provenance

The following attestation bundles were made for antigravity_lite-0.1.1.tar.gz:

Publisher: publish-lite.yml on andresvega925/AntigravityFW

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file antigravity_lite-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for antigravity_lite-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6f7fb94fb0b7b0e6700f223a85b035443ca3e2f8cf2254fd78aa29e55984551e
MD5 2a4876267932628c639b8227dc6065e3
BLAKE2b-256 c1a0d9e83ec28e6e563982acc73edae230712ec1db01837228aa42d07c4bb925

See more details on using hashes here.

Provenance

The following attestation bundles were made for antigravity_lite-0.1.1-py3-none-any.whl:

Publisher: publish-lite.yml on andresvega925/AntigravityFW

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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