Passée inaperçue sur le repository Nuget, une nouvelle version 1.8.4 du PythonProxy a été publié en début d’année.
Cette mise à jour de version accompagne désormais le SDK Visual Studio ainsi que les templates du Constellation Package Tools CLI depuis la semaine dernière.
Au programme de cette nouvelle version : la description des arguments des MessageCallbacks et des types de StateObjects.
En effet, comme vous le savez déjà, pour déclarer un MessageCallback en Python il suffit d’ajouter le décorateur Constellation.MessageCallback() :
1 2 3 4 5 6 7 8 |
@Constellation.MessageCallback() def MultipleParameterCallback(a, b, c): ''' MessageCallback with 3 parameters ''' Constellation.WriteInfo("a = %s - type: %s" % (a, type(a))) Constellation.WriteInfo("b = %s - type: %s" % (b, type(b))) Constellation.WriteInfo("c = %s - type: %s" % (c, type(c))) |
Dans l’exemple ci-dessus, une méthode Python avec 3 paramètres, le simple fait d’ajouter le décorateur Constellation.MessageCallback() permet d’invoquer cette méthode depuis n’importe quel client (package ou consommateur) connecté dans notre Constellation.
D’ailleurs, ce MC est également référencé dans Constellation. Nous pouvons le découvrir sur le ControlHub ou via le MessageCallbacks Explorer de la Console Constellation :
Seulement à l’inverse de l’API .NET, les parametres d’une méthode Python (et les variables de manière globale) ne sont pas fortement typés comme en .NET. Autrement dit, il n’y a rien qui indique le type des arguments de notre MessageCallback. Côté MessageCallbacks Explorer les arguments sont alors reconnus comme « Objects ».
Cette mise à jour 1.8.4 permet la description des arguments en utilisant une syntaxe empruntée à Sphinx dans les commentaires.
Pour cela utilisez la syntaxe suivante dans la description du MC :
1 |
:param <type> <name> : <description> |
Par exemple pour décrire les 3 arguments de notre exemple :
1 2 3 4 5 6 7 8 9 10 11 12 |
@Constellation.MessageCallback() def Demo(a, b, c): ''' Ceci est un exemple de MC avec 3 parametres :param int a: My int value :param bool b: My boolean value :param string c: My string value ''' Constellation.WriteInfo("a = %s - type: %s" % (a, type(a))) Constellation.WriteInfo("b = %s - type: %s" % (b, type(b))) Constellation.WriteInfo("c = %s - type: %s" % (c, type(c))) |
Ainsi en retournant sur le MC Explorer, chaque argument est correctement typé dans Constellation :
Notez que vous pouvez également décrire des types complexes utilisés comme type de paramètre d’entrée, définir les paramètres qui sont optionnels, ou encore décrire les types de retour.
Egalement compris dans cette mise à jour la description des types complexe utilisés comme modèle de données de vos StateObjects.
Pour en profiter il suffit de mettre à jour le package Nuget depuis Visual Studio ou de taper la commande « ctln update » si vous utilisez la CLI.
Démarrez la discussion sur le forum Constellation