def _getUserSource(self, pExpr): # Wrap psource factory functions def createWrapper(clsName): def wrapper(*args): parameterClass = ParameterSource.getClass(clsName) try: return parameterClass.create(self._paramConfig, self._repository, *args) except Exception: raise ParameterError( 'Error while creating %r with arguments %r' % (parameterClass.__name__, args)) return wrapper userFun = {} for clsInfo in ParameterSource.getClassList(): for clsName in ifilter(lambda name: name != 'depth', clsInfo.keys()): userFun[clsName] = createWrapper(clsName) try: return eval(pExpr, dict(userFun)) # pylint:disable=eval-used except Exception: self._log.warning('Available functions: %s', sorted(userFun.keys())) raise
def _getUserSource(self, pExpr): # Wrap psource factory functions def createWrapper(clsName): def wrapper(*args): try: parameterClass = ParameterSource.getClass(clsName) except Exception: raise ParameterError('Unable to create parameter source "%r"!' % clsName) try: return parameterClass.create(self._paramConfig, *args) except Exception: raise ParameterError('Error while creating "%r" with arguments "%r"' % (parameterClass.__name__, args)) return wrapper userFun = {} for clsInfo in ParameterSource.getClassList(): for clsName in clsInfo.keys(): if clsName != clsInfo[clsName] and (clsName != 'depth'): userFun[clsName] = createWrapper(clsInfo[clsName]) try: return eval(pExpr, userFun) # pylint:disable=eval-used except Exception: logging.getLogger('user').warning('Available functions: %s', userFun.keys()) raise