You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When using unstable, f-string quotes get incorrectly changed if the expression contains a conversion. This changes program behavior. As an example, "" f'{""=!r}' currently formats to f"{''=!r}".
The second part is fairly easy to fix, the regex just needs to be updated.
The first part is what's giving me trouble. Based on the fact that all the f-string formatting code is commented out, I assume there has been some sort of mismatch in intent, since part of that is normalize_fstring_quotes. To me, this looks like a source of code duplication, since normalize_fstring_quotes will need to handle all these same edge cases. That leads to the easiest way to solve this, which is to disallow merges that change an f-string's quote. As for anything past that, I'm not sure what the best way is to prevent the code in merging and normalizing from desyncing.
The text was updated successfully, but these errors were encountered:
Describe the bug
When using unstable, f-string quotes get incorrectly changed if the expression contains a conversion. This changes program behavior. As an example,
"" f'{""=!r}'
currently formats tof"{''=!r}"
.To Reproduce
Format this code
Playground link
Expected behavior
The program behavior should be unchanged.
Additional context
I found this while investigating how to fix #4493/#4494. The issue comes in two parts:
.*[\'\"].*(?<![!:=])={1}(?!=)(?![^\s:])
!s
,!r
,!a
)The second part is fairly easy to fix, the regex just needs to be updated.
The first part is what's giving me trouble. Based on the fact that all the f-string formatting code is commented out, I assume there has been some sort of mismatch in intent, since part of that is
normalize_fstring_quotes
. To me, this looks like a source of code duplication, sincenormalize_fstring_quotes
will need to handle all these same edge cases. That leads to the easiest way to solve this, which is to disallow merges that change an f-string's quote. As for anything past that, I'm not sure what the best way is to prevent the code in merging and normalizing from desyncing.The text was updated successfully, but these errors were encountered: