typedef sequence<octet> pickledArgs;
typedef sequence<string> 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
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: