Variant of replace that generates expressions, instead of code blocks.
(template, **replacements)
| 276 | |
| 277 | |
| 278 | def replace_as_expression(template, **replacements): |
| 279 | """Variant of replace that generates expressions, instead of code blocks.""" |
| 280 | replacement = replace(template, **replacements) |
| 281 | if len(replacement) != 1: |
| 282 | raise ValueError( |
| 283 | 'single expression expected; for more general templates use replace') |
| 284 | node, = replacement |
| 285 | |
| 286 | if isinstance(node, gast.Expr): |
| 287 | return node.value |
| 288 | elif isinstance(node, gast.Name): |
| 289 | return node |
| 290 | |
| 291 | raise ValueError( |
| 292 | 'the template is expected to generate an expression or a name node;' |
| 293 | ' instead found %s' % node) |