#! /usr/bin/env python
# -*- coding: iso-8859-1 -*-
-# Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# Module : SALOME
# $Header$
#
-import sys,traceback,string
+import sys,traceback
import linecache
-import cPickle
+import pickle
import Engines__POA
import SALOME__POA
import SALOME
self.poa.deactivate_object(oid)
def Destroy(self):
- print "WARNING SALOME::GenericObj::Destroy() function is obsolete! Use UnRegister() instead."
+ print("WARNING SALOME::GenericObj::Destroy() function is obsolete! Use UnRegister() instead.")
self.UnRegister()
class PyNode_i (Engines__POA.PyNode,Generic):
self.nodeName=nodeName
self.code=code
self.my_container=my_container._container
- linecache.cache[nodeName]=0,None,string.split(code,'\n'),nodeName
+ linecache.cache[nodeName]=0,None,code.split('\n'),nodeName
ccode=compile(code,nodeName,'exec')
self.context={}
self.context["my_container"] = self.my_container
- exec ccode in self.context
+ exec(ccode, self.context)
+
+ def defineNewCustomVar(self,varName,valueOfVar):
+ self.context[varName] = pickle.loads(valueOfVar)
+ pass
+
+ def executeAnotherPieceOfCode(self,code):
+ """Called for initialization of container lodging self."""
+ try:
+ ccode=compile(code,self.nodeName,'exec')
+ exec(ccode, 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:
- argsin,kws=cPickle.loads(argsin)
+ argsin,kws=pickle.loads(argsin)
func=self.context[funcName]
argsout=func(*argsin,**kws)
- argsout=cPickle.dumps(argsout,-1)
+ argsout=pickle.dumps(argsout,-1)
return argsout
except:
exc_typ,exc_val,exc_fr=sys.exc_info()
self.nodeName=nodeName
self.code=code
self.my_container=my_container._container
- linecache.cache[nodeName]=0,None,string.split(code,'\n'),nodeName
+ linecache.cache[nodeName]=0,None,code.split('\n'),nodeName
self.ccode=compile(code,nodeName,'exec')
self.context={}
self.context["my_container"] = self.my_container
+ def defineNewCustomVar(self,varName,valueOfVar):
+ self.context[varName] = pickle.loads(valueOfVar)
+ pass
+
def executeAnotherPieceOfCode(self,code):
"""Called for initialization of container lodging self."""
try:
ccode=compile(code,self.nodeName,'exec')
- exec ccode in self.context
+ exec(ccode, self.context)
except:
raise SALOME.SALOME_Exception(SALOME.ExceptionStruct(SALOME.BAD_PARAM,"","PyScriptNode (%s) : code to be executed \"%s\"" %(self.nodeName,code),0))
+ def assignNewCompiledCode(self,codeStr):
+ try:
+ self.code=codeStr
+ self.ccode=compile(codeStr,self.nodeName,'exec')
+ except:
+ raise SALOME.SALOME_Exception(SALOME.ExceptionStruct(SALOME.BAD_PARAM,"","PyScriptNode.assignNewCompiledCode (%s) : code to be executed \"%s\"" %(self.nodeName,codeStr),0))
+
def execute(self,outargsname,argsin):
"""Execute the script stored in attribute ccode with pickled args (argsin)"""
try:
- argsname,kws=cPickle.loads(argsin)
+ argsname,kws=pickle.loads(argsin)
self.context.update(kws)
- exec self.ccode in self.context
+ exec(self.ccode, self.context)
argsout=[]
for arg in outargsname:
- if not self.context.has_key(arg):
+ if arg not in self.context:
raise KeyError("There is no variable %s in context" % arg)
argsout.append(self.context[arg])
- argsout=cPickle.dumps(tuple(argsout),-1)
+ argsout=pickle.dumps(tuple(argsout),-1)
return argsout
except:
exc_typ,exc_val,exc_fr=sys.exc_info()