| 44 | |
| 45 | def optimizeconst(f: F) -> F: |
| 46 | def new_func( |
| 47 | self: class="st">"CodeGenerator", node: nodes.Expr, frame: class="st">"Frame", **kwargs: t.Any |
| 48 | ) -> t.Any: |
| 49 | class="cm"># Only optimize if the frame is not volatile |
| 50 | if self.optimizer is not None and not frame.eval_ctx.volatile: |
| 51 | new_node = self.optimizer.visit(node, frame.eval_ctx) |
| 52 | |
| 53 | if new_node != node: |
| 54 | return self.visit(new_node, frame) |
| 55 | |
| 56 | return f(self, node, frame, **kwargs) |
| 57 | |
| 58 | return update_wrapper(new_func, f) class="cm"># type: ignore[return-value] |
| 59 | |