[Python-Dev] ast changes for "debug" f-strings

Eric V. Smith eric at trueblade.com
Mon May 20 13:20:12 EDT 2019

On 5/20/2019 10:32 AM, Batuhan Taskaya wrote:
>  > This strictly speaking isn't necessary. I could have added another
> Constant node for "x=" and left FormattedValue alone. I didn't for three
> reasons: it was expedient; it didn't require a lot of surgery to
> f-string parsing, which the extra Constant node would require; and it
> allowed the Python/ast_unparse.c code to produce a string that was more
> consistent with input string.
> Agreed.
>  > Does anyone care that f'{x=}' would become f'x={x!r}' if I removed
> expr_text from the FormattedValue node?
> Yes, when i was implementing f-string debugging support to Berker's 
> astor project
> the roundtrip tests i wrote is failing because of it adds an extra `!r` 
> to end. Then
> i realized you added a new field (expr_text) for that.
>  > I'm not sure how much we care about all of this, but let me know if you
> have a strong feeling about it.
> I don't think we should complicate this. The current version is very 
> simple and understandable.

I think the salient question is: does the lack of expr_text make 
anything more difficult for anyone? As Serhiy said in the other email, 
lots of things are lost while round-tripping, this would just be another 
one. Anyone really interested in high-fidelity round trips already can't 
use the ast module to unparse from.


More information about the Python-Dev mailing list