enaml icon indicating copy to clipboard operation
enaml copied to clipboard

On python 3.12 fstrings with \n are being escaped

Open frmdstryr opened this issue 1 year ago • 2 comments

The newline is here is being escaped and output as \n instead of a newline for some reason in 3.12.

x = 1
print(f"{x}\n{x}")    

It prints

1\n1

But it should be

1
1

Edit: Simplify example

frmdstryr avatar Apr 13 '24 21:04 frmdstryr

The fact that the current parser produces the same AST as the Python parser but the output differs leaves me perplex. I will try to look into it.

MatthieuDartiailh avatar Apr 15 '24 15:04 MatthieuDartiailh

Python is playing some funny games here:

>>> ast.unparse(ast.parse(r"""'a\n'"""))  
'"""a\n"""'
>>> eval(ast.unparse(ast.parse(r"""'a\n'""")))  
'a\n'
>>> ast.unparse(ast.parse(r"""f'a\n'"""))        
"f'a\\n'"
>>> eval(ast.unparse(ast.parse(r"""f'a\n'""")))  
'a\n'

MatthieuDartiailh avatar Apr 15 '24 16:04 MatthieuDartiailh