Beispiel #1
0
    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