Artigo
· 3 hr atrás 3min de leitura

embeddedpy-bridge: Um kit de ferramentas para Embedded Python

Embeddedpy-bridge: Um kit de ferramentas para Embedded Python

Visão geral

Embedded Python é um divisor de águas para o InterSystems IRIS, oferecendo acesso ao vasto ecossistema Python diretamente dentro do banco de dados. No entanto, fazer a ponte entre ObjectScript e Python às vezes pode parecer como traduzir entre dois mundos diferentes.

Para tornar essa transição perfeitamente utilizável, embeddedpy-bridge.

Este pacote é um kit de utilidades focado em desenvolvedores, projetado para fornecer wrappers de alto nível em ObjectScript, sintaxe familiar e tratamento de erros robusto para o Python embarcado. Ele permite que os desenvolvedores interajam com estruturas de dados Python usando os padrões nativos do IRIS com os quais já estão acostumados.

O desafio

Embora a biblioteca %SYS.Python seja poderosa, os desenvolvedores frequentemente enfrentam alguns obstáculos:

  1. Tratamento de proxies: navegar por listas e dicionários Python usando proxies brutos não parece algo “nativo” do ObjectScript.
  2. Iteração: laçosWhile padrão do ObjectScript não “conversam” nativamente com iteradores Python.
  3. Gerenciamento de namespaces: garantir que utilitários Python estejam disponíveis em todo o sistema.

A Solução: embeddedpy-bridge

Meu objetivo foi criar uma “Ponte” que faça o Python se sentir como um cidadão de primeira classe dentro do ObjectScript.

Principais recursos:

  • Convenção de Prefixopy : Todos os métodos na classe %ZPython.Utils usam o prefixo py (por exemplo, pyDict(), pyList(), pyJSON()) para diferenciar claramente a lógica relacionada ao Python do código nativo do IRIS.
  • Wrappers Orientados a Objetos (OO): Classes de alto nível para ListDict que suportam métodos familiares como GetAt(), SetAt(), e Count().
  • Iteradores Inteligentes:ListIterator eDictIterator integrados permitem percorrer dados Python usando loops While padrão do ObjectScript.
  • Suporte a Macros: Um arquivo %ZPython.inc fornece atalhos como $$$pyDict$$$pyJSON para um desenvolvimento mais limpo e rápido.

Exempos de uso

1. Sintaxe Simples (Macros)

Chega de digitar ##class(...) toda vez. Use atalhos rápidos:

  • $$$pyDict — Cria um dicionário Python.
  • $$$pyList — Cria uma lista Python.
  • $$$pyJSON(dynObj) — Converte um objeto JSON em Python instantaneamente.

2. Manipulação Unificada de Dicionários

Em vez de lidar com proxies Python puros, use o dicionário encapsulado:

Exemplo 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. Conversão de Dados Sem Esforço

Converta objetos dinâmicos do IRIS em objetos Python e vice-versa com uma única linha:

Exemplo 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

O objetivo deste projeto é construir uma ponte entre dois mundos poderosos. Enquanto o InterSystems IRIS fornece o motor para o Python embutido, o embeddedpy-bridge fornece o volante.

Discussão (0)1
Entre ou crie uma conta para continuar