ruff/crates
Dhruv Manilawala f3dac27e9a
Fix f-string formatting in assignment statement (#14454)
## Summary

fixes: #13813

This PR fixes a bug in the formatting assignment statement when the
value is an f-string.

This is resolved by using custom best fit layouts if the f-string is (a)
not already a flat f-string (thus, cannot be multiline) and (b) is not a
multiline string (thus, cannot be flattened). So, it is used in cases
like the following:
```py
aaaaaaaaaaaaaaaaaa = f"testeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee{
    expression}moreeeeeeeeeeeeeeeee"
```
Which is (a) `FStringLayout::Multiline` and (b) not a multiline.

There are various other examples in the PR diff along with additional
explanation and context as code comments.

## Test Plan

Add multiple test cases for various scenarios.
2024-11-26 15:07:18 +05:30
..
red_knot Enable logging for directory-renamed test (#14533) 2024-11-22 16:41:46 +00:00
red_knot_python_semantic Support `typing.NoReturn` and `typing.Never` (#14559) 2024-11-25 21:37:55 +00:00
red_knot_server Workspace discovery (#14308) 2024-11-15 19:20:15 +01:00
red_knot_test [red-knot] Improve mdtest output (#14213) 2024-11-11 11:03:41 +00:00
red_knot_vendored Sync vendored typeshed stubs (#14350) 2024-11-14 22:29:29 -08:00
red_knot_wasm Add tests for python version compatibility (#14430) 2024-11-18 12:26:55 +00:00
red_knot_workspace [red-knot] Semantic index: handle invalid `break`s (#14522) 2024-11-22 13:13:55 +01:00
ruff Ruff 0.8 release (#14486) 2024-11-22 08:45:19 +01:00
ruff_benchmark Fix Red Knot benchmarks on Windows (#14400) 2024-11-17 16:21:09 +00:00
ruff_cache Fix cache key collisions for paths with separators (#12159) 2024-07-03 07:36:46 -05:00
ruff_db Update insta snapshots (#14366) 2024-11-15 19:31:15 +01:00
ruff_dev Alternate quotes for strings inside f-strings in preview (#13860) 2024-10-23 07:57:53 +02:00
ruff_diagnostics Document comment policy around fix safety (#14300) 2024-11-13 08:03:58 -05:00
ruff_formatter Fix unnecessary space around power op in overlong f-string expressions (#14489) 2024-11-22 13:01:22 +01:00
ruff_graph Bump MSRV to Rust 1.80 (#13826) 2024-10-20 10:55:36 +02:00
ruff_index [red-knot] small efficiency improvements and bugfixes to use-def map building (#12373) 2024-07-18 09:24:58 -07:00
ruff_linter Extend test cases for `flake8-pyi` (#14280) 2024-11-26 09:10:38 +01:00
ruff_macros [ruff 0.8] [`flake8-pytest-style`] Remove deprecated rules PT004 and PT005 (#14385) 2024-11-20 13:11:51 +01:00
ruff_notebook Bump MSRV to Rust 1.80 (#13826) 2024-10-20 10:55:36 +02:00
ruff_python_ast Fix f-string formatting in assignment statement (#14454) 2024-11-26 15:07:18 +05:30
ruff_python_ast_integration_tests Update insta snapshots (#14366) 2024-11-15 19:31:15 +01:00
ruff_python_codegen Extract `LineIndex` independent methods from `Locator` (#13938) 2024-10-28 07:53:41 +00:00
ruff_python_formatter Fix f-string formatting in assignment statement (#14454) 2024-11-26 15:07:18 +05:30
ruff_python_index Extract `LineIndex` independent methods from `Locator` (#13938) 2024-10-28 07:53:41 +00:00
ruff_python_literal Use bitshift consistently for bitflag definitions (#14265) 2024-11-11 10:20:17 +00:00
ruff_python_parser Update insta snapshots (#14366) 2024-11-15 19:31:15 +01:00
ruff_python_resolver Update insta snapshots (#14366) 2024-11-15 19:31:15 +01:00
ruff_python_semantic [`flake8-bugbear`] Fix `mutable-contextvar-default (B039)` to resolve annotated function calls properly (#14532) 2024-11-23 21:29:25 -05:00
ruff_python_stdlib Use bitshift consistently for bitflag definitions (#14265) 2024-11-11 10:20:17 +00:00
ruff_python_trivia Extract `LineIndex` independent methods from `Locator` (#13938) 2024-10-28 07:53:41 +00:00
ruff_python_trivia_integration_tests Update insta snapshots (#14366) 2024-11-15 19:31:15 +01:00
ruff_server Use `Result` for failed text document retrieval in LSP requests (#14579) 2024-11-25 15:14:30 +05:30
ruff_source_file Extract `LineIndex` independent methods from `Locator` (#13938) 2024-10-28 07:53:41 +00:00
ruff_text_size Extract `LineIndex` independent methods from `Locator` (#13938) 2024-10-28 07:53:41 +00:00
ruff_wasm Ruff 0.8 release (#14486) 2024-11-22 08:45:19 +01:00
ruff_workspace [`flake8-import-conventions`] Syntax check aliases supplied in configuration for `unconventional-import-alias (ICN001)` (#14477) 2024-11-21 15:54:49 +00:00