Artículo
· 11 hr atrás Lectura de 3 min

embeddedpy-bridge: Un kit de herramientas para Python incrustado

Embeddedpy-bridge: Un kit de herramientas para Python incrustado

Visión general

Embedded Python es un cambio radical para InterSystems IRIS, ya que ofrece acceso al vasto ecosistema de Python directamente dentro de la base de datos. Sin embargo, salvar la brecha entre ObjectScript y Python a veces puede parecer bastante complicado.

Para hacer que esta transición sea fluida, podéis usar embeddedpy-bridge

Este paquete es un kit de utilidades orientado al desarrollador, diseñado para proporcionar wrappers de ObjectScript de alto nivel, sintaxis familiar y manejo robusto de errores para Python incrustado. Permite a los desarrolladores interactuar con estructuras de datos de Python usando los patrones nativos de IRIS con los que ya estáis familiarizados.

El reto

Aunque la biblioteca %SYS.Python  es poderosa, los desarrolladores a menudo se enfrentan a algunos obstáculos:

  1. Manejo de proxies: Navegar por listas y diccionarios de Python usando proxies sin procesar no se siente "nativo" en ObjectScript.
  2. Iteración: Los bucles While estándar de ObjectScript no "hablan" de forma nativa con los iteradores de Python.
  3. Gestión de espacios de nombres: Asegurar que las utilidades de Python estén disponibles en todo el sistema.

La solución:embeddedpy-bridge

Mi objetivo fue crear un "puente" que haga que Python se sienta como un ciudadano de primera clase dentro de ObjectScript.

Características clave:

  • Convención de prefijo py: Todos los métodos de la clase %ZPython.Utils usan el prefijo py   (por ejemplo, pyDict(), pyList() , pyJSON()) para distinguir claramente la lógica relacionada con Python del código nativo de IRIS.
  • Wrappers orientados a objetos: Clases de alto nivel para Listy Dict que soportan métodos familiares como GetAt(), SetAt() y Count().
  • Iteradores inteligentes: Los iteradores integrados ListIterator  y DictIteratorpermiten recorrer datos de Python usando bucles While estándar de ObjectScript.
  • Soporte de macros: Un archivo %ZPython.inc proporciona atajos como $$$pyDict y $$$pyJSON para un desarrollo más limpio y rápido.

Ejemplos de uso

1. Sintaxis simple (Macros)

Ya no tendréis que escribir ##class(...)  cada vez. Usad atajos:

  • $$$pyDict — Crear un diccionario de Python.
  • $$$pyList — Crear una lista de Python.
  • $$$pyJSON(dynObj) — Convertir un objeto JSON en Python al instante.

2. Manejo unificado de diccionarios

En lugar de gestionar proxies de Python sin procesar, usad el diccionario envuelto:

Fragmento de código

Include %ZPython
Set pyDict = $$$pyDict
Do pyDict.SetAt("Status", "Active")
Do pyDict.SetAt("Version", 1.0)

// Standard IRIS iteration
Set iter = pyDict.%GetIterator()
While iter.%GetNext(.key, .val) {
    Write "Key: ", key, " Val: ", val, !
}

 

Set pyList = $$$zpyList()

Do pyList.Append("First Item")
Do pyList.Append("Second Item")

Write "Total items: ", pyList.Count(), !

// Access by index
Write "Item 1: ", pyList.GetAt(0), !

2. Conversión de datos sin interrupciones

Convertid objetos dinámicos de IRIS en objetos de Python y viceversa con una sola línea:

Fragmento de código:

Set dynObj = {"name": "John", "roles": ["Admin", "User"]}
Set pyObj = $$$pyJSON(dynObj)

// Verify Python type
Write ##class(%ZPython.Utils).IsType(pyObj, "dict") // 1

El objetivo de este proyecto es salvar la brecha entre dos mundos poderosos. Mientras que InterSystems IRIS proporciona el motor para Python incrustado, embeddedpy-bridge proporciona el volante.

Comentarios (0)1
Inicie sesión o regístrese para continuar