#Embedded Python

0 Abonnés · 84 Publications

Embedded Python fait référence à l'intégration du langage de programmation Python dans le noyau InterSystems IRIS, permettant aux développeurs d'opérer avec des données et de développer une logique d'entreprise pour les applications côté serveur en utilisant Python.

Documentation.

Article Sylvain Guilbaud · Jan 29, 2024 13m read

Nous avons un délicieux dataset avec des recettes écrites par plusieurs utilisateurs de Reddit, mais la plupart des informations sont du texte libre comme le titre ou la description d'un article. Voyons comment nous pouvons très facilement charger l'ensemble de données, extraire certaines fonctionnalités et l'analyser à l'aide des fonctionnalités du grand modèle de langage OpenAI contenu dans Embedded Python et le framework Langchain.

Chargement de l'ensemble de données

Tout d’abord, nous devons charger l’ensemble de données ou pouvons-nous simplement nous y connecter ?

Il existe différentes m

image

0
0 238
Article Pierre LaFay · Jan 20, 2024 9m read

Avec l'avènement d'Embedded Python, une myriade de cas d'utilisation sont désormais possibles depuis IRIS, directement en utilisant les librairies Python pour des opérations plus complexes. L'une de ces opérations consiste à utiliser des outils de traitement du langage naturel tels que la comparaison de similarités textuelles.

Configuration de Python intégré pour utiliser la librairie de transformateurs de phrases

Note: Pour cet article, j'utiliserai un système Linux sur lequel IRIS est installé. Certains processus d'utilisation d'Embedded Python avec Windows, tels que l'installation de l

0
0 186
Question Cyril Grosjean · Déc 27, 2023

Bonjour,

Je cherche à pouvoir accéder à mes données contenus dans une RecordMap depuis SQLAlchemy, et même à toute table déjà créée auparavant.

Voici une partie de code :

TestBase:

classTestBase(DeclarativeBase):
    CreatedAt: Mapped[int] = mapped_column(TIMESTAMP, default=func.now())
    UpdatedAt: Mapped[int] = mapped_column(TIMESTAMP, default=func.now(), onupdate=func.current_timestamp())

 

Création de l'engine et binding des entités:

bases = {
    "TEST": TestBase.metadata.create_all,
}

defcreate_engine_and_session(namespace: str) -> Session:
    engine: Engine = create_e
3
0 110
Annonce Irène Mykhailova · Déc 19, 2023

Embedded Python est sur le point de devenir beaucoup plus puissant et nous recherchons quelques volontaires pour l'essayer.

Qu'est-ce que le Flexible Python Runtime ?

L'option Flexible Python Runtime vous permet d'utiliser un runtime Python de votre choix avec Embedded Python. Auparavant, vous ne pouviez utiliser que le Python par défaut du système d'exploitation, ce qui était particulièrement limité pour les clients utilisant les derniers et meilleurs outils d'IA et de ML proches de leurs données.

Lorsqu'InterSystems a introduit Embedded Python dans InterSystems IRIS en 2021.2, il a été co

0
0 84
Question Cyril Grosjean · Déc 12, 2023

Bonjour,

Nous avons voulu mettre en pré-production un flux 100% python, cependant lorsqu'on a lancé la commande iop pour tester avec l'utilisateur qui va déployer via une CI/CD le code, voici ce qu'on obtient:

ssh.gitlab est notre utilisateur, nous sommes sur un serveur Windows 10 et ssh.gitlab est admin.

Y a-t-il des modifications à faire sur le portail d'IRIS ? (Un utilisateur est créé pour la CI/CD suite à ce post)

Merci d'avance !

Cordialement,

Cyril

2
0 69
Question Cyril Grosjean · Déc 12, 2023

Cette question est apparue à l'origine dans les commentaires du post : Problème avec le FTP OutboundAdapter sur IRIS PEX
 

Parfait ça marche je te remercie, est-ce que c'est normal de devoir écrire chunk par chunk pour le stream ? J'avais essayé mais avec un StreamContainer et en écrivant normalement, donc pas par chunk ça ne me marchait pas.

1
0 83
Question Cyril Grosjean · Déc 11, 2023

Bonjour,

En souhaitant créer une production qui récupère un fichier provenant d'une API et qui envoie ce fichier sur un serveur SFTP, j'ai rencontré un problème avec la librairie de Guillaume Rongier.

Je reçois des bytes depuis une opération jusque là aucun problème, j'ai lié un SFTP à mon opération, les credentials sont les bons, l'adresse ip, le port, le dossier dans lequel déposer le fichier également. Cependant j'ai cette erreur:

ERROR <Ens>ErrException: <METHOD DOES NOT EXIST>PutStream+11^EnsLib.FTP.OutboundAdapter.1 *Rewind,%SYS.Python -- logged as '-'
number - @''

Voici mon code:

1
0 83
Question Cyril Grosjean · Déc 4, 2023

Bonjour,

Je suis toujours en train de préparer le terrain pour inclure la librairie de Guillaume Rongier pour utiliser InterSystems entièrement via Python. Cependant notre environnement local tourne sur Docker avec l'OS linux, jusque là nous n'avons aucun problème avec la librairie. Le problème arrive lorsque l'on passe sur la pré-production où iris est installé directement sur Windows. J'installe les librairies requises avec le package pip et un fichier requirements.txt contenant ceci:
 

dataclass_csv==1.4.0
geopy==2.2.0
chronyk==1.0.1
requests==2.28.1
psycopg2-binary==2.9.3
sqlalchemy=
5
0 99
Question Cyril Grosjean · Oct 31, 2023

Bonjour,

Je souhaiterais savoir s'il existe une version LTS d'InterSystems sur laquelle nous pourrions potentiellement migrer.

L'objectif c'est de pouvoir faire majoritairement de l'embeded python dans InterSystems plutôt que de l'ObjectScript. Actuellement nous sommes sur la version 2022.1 d'InterSystems en production. Afin d'avoir un environnement local pour développer, nous utilisons un docker qui tourne sur InterSystems Community 2023.3. Le problème étant que certaines méthodes en embeded python n'existaient pas en 2022.1 (la méthode execute de la lib iris par exemple). Cela nous pose

2
0 69
Article Sylvain Guilbaud · Oct 20, 2023 1m read

Quick Tips: Total Productive Maintenance

Les paramètres nommés peuvent être obtenus avec SQLAlchemy :  

from sqlalchemy import create_engine, text,types,engine

_engine = create_engine('iris+emb:///')
with _engine.connect() as conn:
    rs = conn.execute(text("select :some_private_name"), {"some_private_name": 1})
    print(rs.all())

ou avec une API native :

from sqlalchemy import create_engine, text,types,engine

# set URL for SQLAlchemy
url = engine.url.URL.create('iris', username='SuperUser', password='SYS', host='localhost', port=33782, database='FHIRSERVER')

_engine = create_engine(url)

with _engine.connect(
0
2 110
Article Sylvain Guilbaud · Oct 19, 2023 6m read

Cet article a été écrit en réponse à un message de la communauté qui demandait si Python pouvait créer des messages HL7 de manière dynamique.

Conditions préalables et configuration

Utilisez un espace de noms compatible avec l'intégration.
Remarque : l'espace de noms USER n'est pas activé pour l'interopérabilité par défaut.
Si nécessaire, créez un nouvel espace de noms interopérable afin d'explorer les fonctionnalités.

# Passage à
ZN "[Espace de nom pour l'interopérabilité]"

# Lancement d'un shell interactif Python :
Exécuter $SYSTEM.Python.Shell()

Début du script

#Chargement des dépendances

i

0
1 132
Article Guillaume Rongier · Oct 16, 2023 8m read

Aujourd'hui, il y a beaucoup de bruit autour du LLM, de l'IA, etc. Les bases de données vectorielles en font partie, et il existe déjà de nombreuses réalisations différentes pour le support en dehors d'IRIS. 

Pourquoi Vector?

  • Recherche de similarité : Les vecteurs assurent une recherche de similarité efficace, par exemple en trouvant les éléments ou les documents les plus similaires dans un ensemble de données. Les bases de données relationnelles classiques sont conçues pour des recherches de correspondances exactes, qui ne sont pas adaptées à des tâches telles que la recherche de similitudes d'images ou de textes.
  • Flexibilité : Les représentations vectorielles sont polyvalentes et peuvent être obtenues à partir de différents types de données, tels que du texte (via des embeddings comme Word2Vec, BERT), des images (via des modèles d'apprentissage profond), et autres.
    • Recherches multimodales** : Les vecteurs permettent d'effectuer des recherches dans différentes modalités de données. Par exemple, avec une représentation vectorielle d'une image, on peut rechercher des images similaires ou des textes connexes dans une base de données multimodale.

Et pour bien d'autres raisons encore.

Donc, pour ce concours python, j'ai décidé de mettre en place ce support. Et malheureusement, je n'ai pas réussi à le terminer à temps, je vais vous expliquer pourquoi.

0
0 115
Question Cyril Grosjean · Oct 11, 2023

Bonjour,

J'ai un soucis depuis quelques jours que je n'arrive pas à régler après pas mal de recherche sur le forum communautaire français et anglais, ainsi que la documentation InterSystems. J'ai deux namespaces : "TEST" et "SUPPLY_CHAIN" ainsi qu'une fonction en python identique compilée dans les deux namespaces :

ClassMethod testPython() As%Status [ Language = python ]

{

    print("Ok")

}

Lorsque j'appelle depuis le terminal iris cette fonction comme ceci:

do##class(TEST.maclasse).testPython()


Cela me retourne bien "ok"

Cependant depuis le namespace SUPPLY_CHAIN, en fa

7
0 178
Article Iryna Mykhailova · Oct 11, 2023 2m read

Nous poursuivons notre série d'articles basés sur l'application QuinielaML.

Dans cet article, je décrirai comment travailler avec la fonctionnalité Embedded Python disponible dans les produits InterSystems.

Embedded Python nous permet d'utiliser Python comme langage de programmation dans nos productions, en profitant de toutes les fonctionnalités qu'offre Python. Ici vous pouvez trouver plus d'informations à ce sujet.

Tout d'abord, rappelons la nature du concepteur de l'architecture de notre projet :

Problème à résoudre

Dans notre cas, il nous faut obtenir les résultats historiques des match



0
0 66
Article Iryna Mykhailova · Oct 6, 2023 5m read

Bienvenue chers membres de la Communauté à la présentation et au premier article d'un petit projet qui présentera les capacités d'InterSystems IRIS à fournir une fonctionnalité de sauvegarde complète pour une application web développée en Angular. Dans cet article, nous nous contenterons de présenter le concept ainsi que les fonctionnalités d'InterSystems IRIS utilisées de manière générale, en allant plus en détail dans les articles suivants.

Bienvenue à QuinielaML !

Introduction

Peut-être avez-vous déjà entendu parler des fonctionnalités d'InterSystems IRIS comme Embedded Python et Integrate

2
0 204
Article Sylvain Guilbaud · Sept 14, 2023 8m read

Aperçu

La documentation en ligne contient une référence expliquant comment définir et utiliser les requêtes de classes.

La personnalisation des procédures stockées en ObjectScript s'est avérée utile pour accéder au stockage NoSQL et à la messagerie externe via l'intégration, afin de présenter la sortie sous forme de tableau.

Par exemple : une application qui utilise déjà 90 % d'interaction SQL depuis un frontal peut alors également étendre cet accès aux 10 % restants des fonctionnalités requises de la plate-forme, via le même accès SQL.

Le but de cet article est d'explorer comment obtenir





0
0 117
Annonce Sylvain Guilbaud · Sept 6, 2023

Salut les développeurs !

Voici les bonus technologiques pour le Concours Python InterSystems 2023 qui vous donneront des points supplémentaires lors du vote :

  • Embedded Python - 3
  • Python Native API  - 3
  • interopérabilité via Python Pex - 4
  • Bibliothèques Python: sqlalchemy et dbt - 2
  • utilisation de LLM AI ou LangChain: Chat GPT, Bard et autres - 4
  • NoObjectScriptLine - 5
  • Questionnaire - 2
  • utilisation de Docker container - 2 
  • déploiement via IPM (ZPM) - 2
  • démo en ligne - 2
  • implémente une des idées proposées sur le Portail des Idées InterSystems - 4
  • trouver un bug dans Embedded Python

<--break->

0
0 62
Article Sylvain Guilbaud · Sept 4, 2023 6m read

Lorsque nous démarrons le développement avec IRIS, nous disposons d'un kit de distribution ou, dans le cas de Docker, nous extrayons l'image Docker, puis nous devons souvent l'initialiser et configurer l'environnement de développement. Nous devrons peut-être créer des bases de données, des espaces de noms, activer/désactiver certains services, créer des ressources. Nous devons souvent importer du code et des données dans l'instance IRIS et exécuter du code personnalisé pour lancer la solution.

Il existe de nombreux modèles sur Open Exchange dans lesquels nous suggérons comment initialiser REST, l'interopérabilité, l'analytics, le développement Fullstack et bien d'autres modèles utilisant ObjectScript. Mais qu'en est-il si nous souhaitons utiliser uniquement Python pour configurer l'environnement de développement d'un projet Embedded Python avec IRIS ?

De fait, la récente sortie de Embedded Python template est devenu le passe-partout du pur Python qui pourrait être un point de départ pour les développeurs qui créent des projets Python sans avoir besoin d'utiliser et d'apprendre ObjectScript. Cet article explique comment ce modèle pourrait être utilisé pour initialiser IRIS. C'est parti!

0
0 85
Question Ephraim Malane · Août 29, 2023

Salut Developer Community,

Je télécharge un fichier Excel xlsx à partir du Web à l'aide de la méthode ci-dessous et je l'enregistre au format xlsx. Comment puis-je convertir et enregistrer un format xlsx au format csv ?

ClassMethod DownloadFileUrl()
{
        
        Set httprequest = ##class(%Net.HttpRequest).%New()
        Set httprequest.Server = "www.health.gov.za"Set httprequest.SSLConfiguration = "SSL_OAUTH_Client"Do httprequest.Get("/wp-content/uploads/2021/04/ICD-10_MIT_2021_Excel_16-March_2021.xlsx")
        write httprequest.HttpResponse.StatusLine        
1
0 120
Article Iryna Mykhailova · Août 7, 2023 3m read
   _________ ___ ____  
  |__  /  _ \_ _|  _ \
    / /| |_) | || |_) |
   / /_|  __/| ||  __/
  /____|_|  |___|_|    

À partir de la version 2021.1, InterSystems IRIS a commencé à fonctionner avec l'exécution python dans le noyau du moteur. Cependant, il n'y avait aucun moyen d'installer des paquets à partir de l'instance. Le principal attrait de Python est son énorme écosystème de paquets. C'est dans cette optique que je vous présente mon projet secondaire zpip, un wrapper pip qui peut être appelé depuis le terminal iris.

Qu'est-ce que zpip ?

zpip est un wrapper pour python pip qui permet

0
0 75
Article Guillaume Rongier · Juil 24, 2023 7m read

Je suis fier d'annoncer la nouvelle version du logiciel iris-pex-embedded-python (v2.3.1) avec une nouvelle interface en ligne de commande.

Cette ligne de commande est appelée iop et signifie Interoperability On Python (interopérabilité sur Python).

Tout d'abord, j'aimerais présenter en quelques mots le projet et les principaux changements depuis la version 1.

Un bref historique du projet

La version 1.0 était une preuve de concept visant à montrer comment le cadre d'interopérabilité d'IRIS peut être utilisé avec une approche python first (priorité à Python) tout en restant compatible avec n'importe quel code ObjectScript existant.

Qu'est-ce que cela signifie ? Cela signifie que tout développeur python peut utiliser le cadre d'interopérabilité d'IRIS sans aucune connaissance d'ObjectScript.

Exemple :

from grongier.pex import BusinessOperation

class MyBusinessOperation(BusinessOperation):

    def on_message(self, request):
        self.log.info("Demande reçue")

Formidable, n'est-ce pas ?

0
0 81
Article Iryna Mykhailova · Juil 7, 2023 2m read

Excusez si cela est évident pour les programmeurs Python, mais pour ceux qui viennent d'ObjectScript, cela peut être une astuce utile.

Lorsqu'on développe avec des commandes python.

Le test des fonctionnalités sont en cours via le shell :

$SYSTEM.Python.Shell()
 
Python 3.9.5 (default, Mar 14 2023, 06:58:44) [MSC v.1927 64 bit (AMD64)] on win32
Type quit() or Ctrl-D to exit this shell.
>>>

Lorsque Python évalue une expression dans le shell, il imprime le résultat de l'expression sur le terminal.

>>> 1 + 2

3

Il est assez facile d'évaluer et d'afficher accidentellement des valeurs

0
0 91
Article Guillaume Rongier · Juil 3, 2023 5m read

Les méthodes écrites en ObjectScript peuvent utiliser des arguments de type " passage par référence " pour renvoyer des informations à l'appelant. Python ne supporte pas les arguments de type " passage par référence ", donc Python intégré dans IRIS ne les supporte pas non plus. Voilà, c'est la fin de cet article, j'espère qu'il vous a plu 😉 Mais attendez, et le Rock & Roll Classic ?

En fait, puisque les valeurs retournées dans les arguments de méthode peuvent être utiles, cet article montre plusieurs façons de procéder, entre ObjectScript et Python intégré. Commençons donc par l'exemple le plu

0
0 61
Article Guillaume Rongier · Mai 29, 2023 10m read

Introduction

L'analyse des données est un aspect crucial de la prise de décision commerciale dans le monde moderne où tout va très vite. Les organisations s'appuient fortement sur l'analyse des données pour prendre des décisions éclairées et garder une longueur d'avance sur la concurrence. Dans cet article, nous allons explorer comment l'analyse de données peut être réalisée en utilisant Pandas et Intersystems Embedded Python. Nous discuterons des bases de Pandas, des avantages de l'utilisation d'Intersystems Embedded Python et de la façon dont ils peuvent être utilisés ensemble pour réaliser des analyses de données efficaces.

0
0 521
Article Iryna Mykhailova · Mai 22, 2023 12m read

###          

Bonjour à la communauté,
Dans cet article, je vais démontrer l'utilisation d'Embedded Python, nous allons couvrir les sujets suivants :

  • 1-Aperçu d'Embedded Python
  • 2-Utilisation d'Embedded Python
    • 2.1- Utilisation d'une bibliothèque Python à partir d'ObjectScript
    • 2.2- Appel des API d'InterSystems à partir de Python
    • 2.3- Utilisation conjointe d'ObjectScript et de Python
  • 3-Utilisation des fonctions intégrées de python
  • 4-Modules et bibliothèques Python 
  • 5-Les cas d'utilisation d'Embedded Python
    • 5.1- Impression d'un PDF en utilisant la bibliothèque Python Reportlab
    • 5.2- Création d









0
0 159