(self, node)
| 1217 | raise ValueError(f"Unexpected node inside JoinedStr, {node!r}") |
| 1218 | |
| 1219 | def visit_FormattedValue(self, node): |
| 1220 | def unparse_inner(inner): |
| 1221 | unparser = type(self)(_avoid_backslashes=True) |
| 1222 | unparser.set_precedence(_Precedence.TEST.next(), inner) |
| 1223 | return unparser.visit(inner) |
| 1224 | |
| 1225 | with self.delimit("{", "}"): |
| 1226 | expr = unparse_inner(node.value) |
| 1227 | if "\\" in expr: |
| 1228 | raise ValueError( |
| 1229 | "Unable to avoid backslash in f-string expression part" |
| 1230 | ) |
| 1231 | if expr.startswith("{"): |
| 1232 | # Separate pair of opening brackets as "{ {" |
| 1233 | self.write(" ") |
| 1234 | self.write(expr) |
| 1235 | if node.conversion != -1: |
| 1236 | self.write(f"!{chr(node.conversion)}") |
| 1237 | if node.format_spec: |
| 1238 | self.write(":") |
| 1239 | self._write_fstring_inner(node.format_spec) |
| 1240 | |
| 1241 | def visit_Name(self, node): |
| 1242 | self.write(node.id) |
no test coverage detected