Contexte et enjeux
Le standard EDIFACT (ISO 9735) structure les échanges électroniques entre entreprises, notamment dans les secteurs du transport et de la logistique. Sa syntaxe repose sur des segments, des composites et des éléments de données séparés par des caractères de contrôle. Convertir ces flux bruts en structures manipulables nécessite un parseur capable de respecter les règles de segmentation tout en offrant une représentation exploitable par du code Python. Le dépôt GitHub AmadeusITGroup/Edison se présente comme une solution dédiée, indiquant explicitement qu’il « parses EDIFACT in Python with syntax trees ». Cette orientation vers des arbres syntaxiques implique une phase de tokenisation suivie d’une construction d’AST (Abstract Syntax Tree) afin de faciliter l’analyse sémantique et la transformation ultérieure des messages.
Architecture d'Edison
Selon la description du projet, Edison expose une API Python où l’entrée est une chaîne de caractères EDIFACT et la sortie un arbre syntaxique. L’absence de documentation détaillée dans le dépôt empêche de confirmer le moteur de parsing utilisé (par exemple Lark, ANTLR ou un parseur maison). Néanmoins, la mention de « syntax trees » suggère la présence de deux couches : un lexer qui découpe le flux en tokens (segment‑separator, data‑element‑separator, etc.) et un parser qui applique la grammaire EDIFACT pour générer des nœuds d’arbre représentant chaque segment et ses sous‑structures. Le code source, disponible sous forme de modules Python, indique que le package s’installe via pip install edison, ce qui confirme son positionnement comme bibliothèque réutilisable dans des pipelines d’intégration de données.
Analyse technique du parseur
Le processus de tokenisation doit gérer les caractères de contrôle (apostrophe, plus, deux‑points) tout en préservant les données échappées. Une implémentation typique crée des objets Token contenant le type (segment, composite, data element) et la valeur brute. Le parser, quant à lui, construit un arbre où chaque nœud SegmentNode possède une liste de CompositeNode, eux‑mêmes composés de DataElementNode. Cette hiérarchie reflète fidèlement la spécification EDIFACT et permet aux développeurs d’accéder directement à des champs comme UNH.MessageReferenceNumber sans recourir à des expressions régulières. Le choix d’une représentation en arbre facilite également la validation : chaque nœud peut être comparé à la table de référence des segments (par ex. UNH, BGM) pour détecter les violations de longueur ou de type. Cependant, le dépôt ne fournit pas de benchmarks de performances, ce qui rend difficile d’évaluer le coût mémoire ou le temps de traitement pour des flux de plusieurs mégaoctets, un critère souvent décisif dans les environnements de traitement en temps réel.
Limites et perspectives
Le principal point d’incertitude réside dans le manque d’informations chiffrées : aucune version, aucun numéro de CVE, aucune métrique de vitesse n’est exposée dans le dépôt. Cette opacité complique la validation de la robustesse du parseur face à des messages malformés ou à des extensions propriétaires d’EDIFACT. De plus, l’absence de tests automatisés visibles empêche de vérifier la couverture fonctionnelle sur l’ensemble des segments standard. Pour les équipes envisageant d’intégrer Edison, il est recommandé de réaliser des tests de charge internes, de vérifier la conformité des nœuds AST aux spécifications ISO 9735 et d’envisager un wrapper de validation supplémentaire. En enrichissant le projet d’une suite de tests et de métriques de performance, la communauté pourrait transformer Edison en un composant fiable pour les pipelines d’échange de données EDI.