Skip to main content

SDK para plugins de SIGES

Project description

SIGES SDK

SDK para simplificar la comunicación con el core de SIGES para plugins y el manejo de colas de mensajes.

Instalación

pip install siges-sdk

Uso básico

Registro de plugins

import asyncio
from siges_sdk.core import PluginRegisterRequest, Dependencies, Table, get_core_gateway

# Crear tablas de dependencias
tables = [
    Table(name="usuarios", version="1.0.0")
]

# Crear dependencias
dependencies = Dependencies(tables=tables)

# Crear solicitud de registro
request = PluginRegisterRequest(
    name="mi-plugin",
    version="1.0.0",
    port=8080,
    frontend_url="http://localhost:8080/plugin/component/mi-plugin.es.js",
    dependencies=dependencies
)

# Obtener el gateway del core
core_gateway = get_core_gateway()

# Registrar el plugin
async def register_plugin():
    await core_gateway.register_plugin(request)

# Ejecutar la función asíncrona
asyncio.run(register_plugin())

Sistema de colas de mensajes

import asyncio
import json
from siges_sdk.queues import get_message_producer
from siges_sdk.queues.redis_message_consumer import RedisQueueMessageConsumer

# Enviar un mensaje
producer = get_message_producer()
queue_name = "mi-cola"
message = {
    "tipo": "notificacion",
    "contenido": "Este es un mensaje de ejemplo"
}
producer.send_message(queue_name, message)

# Recibir mensajes
async def process_message(message_data):
    print(f"Mensaje recibido: {json.dumps(message_data, indent=2)}")
    return True

# Crear un consumidor
consumer = RedisQueueMessageConsumer(
    queue_name=queue_name,
    callback=process_message,
    consumer_group="mi-grupo",
    max_stream_length=100
)

# Iniciar el consumidor
consumer.start()

# Para detener el consumidor
# consumer.stop()

Características

  • Abstracción de la comunicación con el core
  • Manejo de dependencias
  • Soporte para componentes frontend
  • Sistema de colas de mensajes con Redis

Componentes

Gateway del Core

El SDK proporciona una interfaz para comunicarse con el core de SIGES:

  • CoreGateway: Interfaz abstracta para la comunicación con el core
  • get_core_gateway(): Función para obtener una instancia del gateway

Modelos de datos

  • PluginRegisterRequest: Modelo para la solicitud de registro de un plugin
  • Dependencies: Modelo para las dependencias de un plugin
  • Table: Modelo para una tabla de dependencia

Sistema de colas

  • QueueMessageProducer: Interfaz abstracta para enviar mensajes a una cola
  • QueueMessageConsumer: Interfaz abstracta para consumir mensajes de una cola
  • get_message_producer(): Función para obtener una instancia del productor de mensajes
  • RedisQueueMessageConsumer: Implementación de consumidor de mensajes con Redis

Desarrollo

Requisitos

  • Python 3.9+
  • Docker (para desarrollo y pruebas)

Configuración del entorno de desarrollo

# Clonar el repositorio
git clone https://github.com/yourusername/siges-sdk.git
cd siges-sdk

# Ejecutar el entorno de desarrollo con Docker
docker-compose up sdk

Ejecutar pruebas

# Usando docker-compose directamente
docker-compose up test

# O usando el comando forge
./forge sdk test

# Para reconstruir las imágenes Docker antes de ejecutar las pruebas
./forge sdk test -b

Ejecutar el ejemplo

docker-compose up example

Construcción y distribución

Construir el paquete

Para construir el paquete SDK, puedes usar el comando forge:

# Construir el paquete SDK
./forge sdk build

Esto generará los archivos de distribución en el directorio dist/.

Actualizar la versión

Para actualizar la versión del SDK, puedes usar el comando forge:

# Actualizar la versión del SDK
./forge sdk upgrade 0.1.1

Instalación del paquete generado

# Instalar el paquete generado
pip install dist/siges_sdk-*.whl

Publicación como Release de GitHub

La publicación del paquete se realiza a través de un workflow de GitHub Actions. Para publicar una nueva versión:

  1. Ve a la pestaña "Actions" en el repositorio de GitHub.
  2. Selecciona el workflow "Publish SDK Package" en la lista de workflows.
  3. Haz clic en el botón "Run workflow".
  4. Ingresa la versión que deseas publicar (en formato X.Y.Z, por ejemplo, 0.1.1).
  5. Opcionalmente, marca la casilla "Publicar también en PyPI" si deseas publicar el paquete en PyPI.
  6. Haz clic en el botón "Run workflow" para iniciar el proceso de publicación.

El workflow actualizará la versión, construirá el paquete, creará un commit con los cambios de versión, creará una nueva release en GitHub con los archivos del paquete y, si se seleccionó la opción, publicará el paquete en PyPI.

Licencia

MIT

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

siges_sdk-0.1.1.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

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

siges_sdk-0.1.1-py3-none-any.whl (3.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: siges_sdk-0.1.1.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for siges_sdk-0.1.1.tar.gz
Algorithm Hash digest
SHA256 cce539b71d33b7d26377a811f156b053720f4cb11e6984ec4d35e9db994f65c9
MD5 90edd63f952019afec289981cbf28f43
BLAKE2b-256 c8a533e6fbc09fdc8b35d802a98ed186e86d730e1b0c76d2c3485caadfa0b316

See more details on using hashes here.

File details

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

File metadata

  • Download URL: siges_sdk-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 3.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for siges_sdk-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a0dd9246884c2e5a7dd5beb4a6325c5a29c9dceb14aad61f77c56696725e30f1
MD5 812bf73cf8bfa5f3ccc264652c8b3f8b
BLAKE2b-256 305ad530ec260396310f88a56ded2deef7ec88731a50b2530efff9b0640cb158

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