<#3559 bug: `simpleeval==1.0.5` breaks for `stream...
# meltano-repo-activity
g
#3559 bug: `simpleeval==1.0.5` breaks for `stream_maps` expressions referencing modules Issue created by ReubenFrankel Singer SDK Version 0.53.5 Is this a regression? • Yes Python Version 3.9 Bug scope Mapping (stream maps, flattening, etc.) Operating System No response Description https://github.com/danthedeckie/simpleeval/releases/tag/1.0.5
Breaking Change:
• Modules & Submodules now are not directly usable as names or as attributes of other items, if you still need this functionality, then use the new ModuleWrapper, or subclass SimpleEval to bypass it.
Copy code
Traceback (most recent call last):
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/singer_sdk/mapper.py", line 366, in _eval
    result: str | int | float = self.expr_evaluator.eval(
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 932, in eval
    return super(EvalWithCompoundTypes, self).eval(expr, previously_parsed)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 658, in eval
    return self._eval(previously_parsed or self.parse(expr))
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 670, in _eval
    result = handler(node)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 675, in _eval_expr
    return self._eval(node.value)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 670, in _eval
    result = handler(node)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 773, in _eval_call
    return func(
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 774, in <genexpr>
    *(self._eval(a) for a in node.args), **dict(self._eval(k) for k in node.keywords)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 670, in _eval
    result = handler(node)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 761, in _eval_call
    func = self._eval(node.func)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 670, in _eval
    result = handler(node)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 832, in _eval_attribute
    node_evaluated = self._eval(node.value)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 670, in _eval
    result = handler(node)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 761, in _eval_call
    func = self._eval(node.func)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 670, in _eval
    result = handler(node)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 832, in _eval_attribute
    node_evaluated = self._eval(node.value)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 670, in _eval
    result = handler(node)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 832, in _eval_attribute
    node_evaluated = self._eval(node.value)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 671, in _eval
    self._check_disallowed_items(result)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/simpleeval.py", line 625, in _check_disallowed_items
    raise FeatureNotAvailable("Sorry, modules are not allowed")
simpleeval.FeatureNotAvailable: Sorry, modules are not allowed

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/bin/meltano-map-transform", line 10, in <module>
    sys.exit(StreamTransform.cli())
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/click/core.py", line 1161, in __call__
    return self.main(*args, **kwargs)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/click/core.py", line 1082, in main
    rv = self.invoke(ctx)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/singer_sdk/plugin_base.py", line 98, in invoke
    return super().invoke(ctx)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/click/core.py", line 1443, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/click/core.py", line 788, in invoke
    return __callback(*args, **kwargs)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/singer_sdk/mapper_base.py", line 158, in invoke
    mapper.listen(file_input)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/singer_sdk/plugin_base.py", line 775, in listen
    counter = self.process_lines(file_input)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/singer_sdk/plugin_base.py", line 801, in process_lines
    return self.message_reader.process_lines(
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/singer_sdk/singerlib/encoding/base.py", line 70, in process_lines
    callback(line_dict)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/singer_sdk/mapper_base.py", line 64, in _process_record_message
    self._write_messages(self.map_record_message(message_dict))
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/singer_sdk/mapper_base.py", line 57, in _write_messages
    for message in messages:
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/meltano_map_transform/mapper.py", line 134, in map_record_message
    mapped_record = stream_map.transform(message_dict["record"])
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/singer_sdk/mapper.py", line 299, in transform
    transformed_record = self._transform_fn(record)
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/singer_sdk/mapper.py", line 637, in transform_fn
    result[prop_key] = self._eval(
  File "/tmp/p/.meltano/mappers/meltano-map-transformer/venv/lib/python3.9/site-packages/singer_sdk/mapper.py", line 372, in _eval
    raise MapExpressionError(msg) from ex
singer_sdk.exceptions.MapExpressionError: Failed to evaluate simpleeval expressions str(datetime.datetime.strptime(start, "%H:%M:%S").strftime("%H:%M:%S")).
Link to Slack/Linen No response meltano/sdk