mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-17 00:50:16 +00:00
Formatter: Improve single-with item formatting for Python 3.8 or older (#10276)
## Summary This PR changes how we format `with` statements with a single with item for Python 3.8 or older. This change is not compatible with Black. This is how we format a single-item with statement today ```python def run(data_path, model_uri): with pyspark.sql.SparkSession.builder.config( key="spark.python.worker.reuse", value=True ).config(key="spark.ui.enabled", value=False).master( "local-cluster[2, 1, 1024]" ).getOrCreate(): # ignore spark log output spark.sparkContext.setLogLevel("OFF") print(score_model(spark, data_path, model_uri)) ``` This is different than how we would format the same expression if it is inside any other clause header (`while`, `if`, ...): ```python def run(data_path, model_uri): while ( pyspark.sql.SparkSession.builder.config( key="spark.python.worker.reuse", value=True ) .config(key="spark.ui.enabled", value=False) .master("local-cluster[2, 1, 1024]") .getOrCreate() ): # ignore spark log output spark.sparkContext.setLogLevel("OFF") print(score_model(spark, data_path, model_uri)) ``` Which seems inconsistent to me. This PR changes the formatting of the single-item with Python 3.8 or older to match that of other clause headers. ```python def run(data_path, model_uri): with ( pyspark.sql.SparkSession.builder.config( key="spark.python.worker.reuse", value=True ) .config(key="spark.ui.enabled", value=False) .master("local-cluster[2, 1, 1024]") .getOrCreate() ): # ignore spark log output spark.sparkContext.setLogLevel("OFF") print(score_model(spark, data_path, model_uri)) ``` According to our versioning policy, this style change is gated behind a preview flag. ## Test Plan See added tests. Added
This commit is contained in:
parent
4bce801065
commit
b64f2ea401
5 changed files with 167 additions and 4 deletions
|
@ -104,7 +104,9 @@ impl FormatNodeRule<StmtWith> for FormatStmtWith {
|
|||
WithItemsLayout::Python38OrOlder => f
|
||||
.join_with(format_args![token(","), space()])
|
||||
.entries(with_stmt.items.iter().map(|item| {
|
||||
item.format().with_options(WithItemLayout::Python38OrOlder)
|
||||
item.format().with_options(WithItemLayout::Python38OrOlder {
|
||||
single: with_stmt.items.len() == 1,
|
||||
})
|
||||
}))
|
||||
.finish(),
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue