Exemple #1
0
class PythonMapTransform(BaseTransform):
    """Transform implementation that maps items using Python expressions
    """

    supported_options = {"map": {"type": six.string_types}}

    def __init__(self, *args, **kwargs):
        super(PythonMapTransform, self).__init__(*args, **kwargs)
        self.map_expression = self.read_option("map")
        self.interpreter = Interpreter()
        self.interpreter.check(self.map_expression)

    def _map_item(self, it):
        context = create_context(item=it)
        return self.interpreter.eval(expression=self.map_expression, context=context)

    def transform_batch(self, batch):
        return (self._map_item(it) for it in batch)
class PythonInterpreterTest(unittest.TestCase):
    def setUp(self):
        self.interpreter = Interpreter()

    def test_check(self):
        with self.assertRaises(InvalidExpression):
            self.interpreter.check(5)
        with self.assertRaises(InvalidExpression):
            self.interpreter.check('')
        with self.assertRaises(SyntaxError):
            self.interpreter.check('This is not a valid expression')
        with self.assertRaises(InvalidExpression):
            self.interpreter.check('2+2; 5+6')
Exemple #3
0
class PythonInterpreterTest(unittest.TestCase):
    def setUp(self):
        self.interpreter = Interpreter()

    def test_check(self):
        with self.assertRaises(InvalidExpression):
            self.interpreter.check(5)
        with self.assertRaises(InvalidExpression):
            self.interpreter.check('')
        with self.assertRaises(SyntaxError):
            self.interpreter.check('This is not a valid expression')
        with self.assertRaises(InvalidExpression):
            self.interpreter.check('2+2; 5+6')
Exemple #4
0
class PythonMapTransform(BaseTransform):
    """Transform implementation that maps items using Python expressions
    """
    supported_options = {
        "map": {
            'type': six.string_types
        },
    }

    def __init__(self, *args, **kwargs):
        super(PythonMapTransform, self).__init__(*args, **kwargs)
        self.map_expression = self.read_option('map')
        self.interpreter = Interpreter()
        self.interpreter.check(self.map_expression)

    def _map_item(self, it):
        context = create_context(item=it)
        return self.interpreter.eval(expression=self.map_expression,
                                     context=context)

    def transform_batch(self, batch):
        return (self._map_item(it) for it in batch)