ITADN

bug: `simpleeval==1.0.5` breaks for `stream_maps` expressions referencing modules

#3559ClosedReubenFrankel 创建于 2026-03-13
kind/BugDependencies
R
ReubenFrankelcommented
### Singer SDK Version 0.53.5 ### Is this a regression? - [x] 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. ``` 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_
关闭于 2026-03-13 0 条评论