From 2c6dd1b623c085806990445c6becaec466b1f2e0 Mon Sep 17 00:00:00 2001 From: Anthony Geay Date: Wed, 13 Aug 2014 15:09:05 +0200 Subject: [PATCH] Makes the remote interpretor or Salome accessible for both PyScriptNode and PyNode. --- idl/SALOME_PyNode.idl | 20 +++++++++++--------- src/Container/SALOME_PyNode.py | 8 ++++++++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/idl/SALOME_PyNode.idl b/idl/SALOME_PyNode.idl index 401b3b0e9..ba3bfaadb 100644 --- a/idl/SALOME_PyNode.idl +++ b/idl/SALOME_PyNode.idl @@ -38,27 +38,29 @@ module Engines typedef sequence pickledArgs; typedef sequence listofstring; - interface PyNode : SALOME::GenericObj + interface PyNodeBase : SALOME::GenericObj { + /*! + This methode executes the python code in \a codeStr and can append/remove symboles in context to make them available or not for future call of execute on this. + \param [in] codeStr - the python code (without statement) to be executed, that can modify the context initialized at initialization. + */ + void executeAnotherPieceOfCode(in string codeStr) raises (SALOME::SALOME_Exception); + }; + interface PyNode : PyNodeBase + { /*! \brief execute a python function defined in the node \param functionName the python function defined in the node to execute \param inargs input argument values (tuple,dict) provided as a python pickle \return output argument values (tuple) as a python pickle */ - pickledArgs execute(in string functionName,in pickledArgs inargs) raises (SALOME::SALOME_Exception); + pickledArgs execute(in string functionName, in pickledArgs inargs) raises (SALOME::SALOME_Exception); } ; - interface PyScriptNode : SALOME::GenericObj + interface PyScriptNode : PyNodeBase { - /*! - This methode executes the python code in \a codeStr and can append/remove symboles in context to make them available or not for future call of execute on this. - \param [in] codeStr - the python code (without statement) to be executed, that can modify the context initialized at initialization. - */ - void executeAnotherPieceOfCode(in string codeStr) raises (SALOME::SALOME_Exception); - /*! \brief execute a python script defined in the node \param outargsname output argument names diff --git a/src/Container/SALOME_PyNode.py b/src/Container/SALOME_PyNode.py index 2f8418fab..9cbc8a615 100644 --- a/src/Container/SALOME_PyNode.py +++ b/src/Container/SALOME_PyNode.py @@ -64,6 +64,14 @@ class PyNode_i (Engines__POA.PyNode,Generic): self.context["my_container"] = self.my_container exec ccode in self.context + def executeAnotherPieceOfCode(self,code): + """Called for initialization of container lodging self.""" + try: + ccode=compile(code,self.nodeName,'exec') + exec ccode in self.context + except: + raise SALOME.SALOME_Exception(SALOME.ExceptionStruct(SALOME.BAD_PARAM,"","PyScriptNode (%s) : code to be executed \"%s\"" %(self.nodeName,code),0)) + def execute(self,funcName,argsin): """Execute the function funcName found in local context with pickled args (argsin)""" try: -- 2.39.2