r"""Replace cell magic with token. Note that 'src' will already have been processed by IPython's TransformerManager().transform_cell. Example, get_ipython().run_cell_magic('t', '-n1', 'ls =!ls\n') becomes "a794." ls =!ls The replacement, along with t
(src: str)
| 231 | |
| 232 | |
| 233 | def replace_cell_magics(src: str) -> tuple[str, list[Replacement]]: |
| 234 | r"""Replace cell magic with token. |
| 235 | |
| 236 | Note that 'src' will already have been processed by IPython's |
| 237 | TransformerManager().transform_cell. |
| 238 | |
| 239 | Example, |
| 240 | |
| 241 | get_ipython().run_cell_magic('t', '-n1', 'ls =!ls\n') |
| 242 | |
| 243 | becomes |
| 244 | |
| 245 | "a794." |
| 246 | ls =!ls |
| 247 | |
| 248 | The replacement, along with the transformed code, is returned. |
| 249 | """ |
| 250 | replacements: list[Replacement] = [] |
| 251 | |
| 252 | tree = ast.parse(src) |
| 253 | |
| 254 | cell_magic_finder = CellMagicFinder() |
| 255 | cell_magic_finder.visit(tree) |
| 256 | if cell_magic_finder.cell_magic is None: |
| 257 | return src, replacements |
| 258 | header = cell_magic_finder.cell_magic.header |
| 259 | mask = get_token(src, header) |
| 260 | replacements.append(Replacement(mask=mask, src=header)) |
| 261 | return f"{mask}\n{cell_magic_finder.cell_magic.body}", replacements |
| 262 | |
| 263 | |
| 264 | def replace_magics(src: str) -> tuple[str, list[Replacement]]: |
no test coverage detected