From 5157f584ab2ed66f11fd1b721ade9661c08f393a Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Thu, 16 Feb 2023 15:17:32 -0500 Subject: [PATCH] Improve pow operator spacing (#2970) Ensure that we add spaces to expressions like `foo.bar() ** 2`. --- crates/ruff_python_formatter/src/format/expr.rs | 5 ++--- crates/ruff_python_formatter/src/format/helpers.rs | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/crates/ruff_python_formatter/src/format/expr.rs b/crates/ruff_python_formatter/src/format/expr.rs index bdb9de589f..744ad233d8 100644 --- a/crates/ruff_python_formatter/src/format/expr.rs +++ b/crates/ruff_python_formatter/src/format/expr.rs @@ -718,8 +718,7 @@ fn format_bin_op( right: &Expr, ) -> FormatResult<()> { // https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#line-breaks-binary-operators - let is_simple = - matches!(op, Operator::Pow) && (is_simple_power(left) && is_simple_power(right)); + let is_simple = matches!(op, Operator::Pow) && is_simple_power(left) && is_simple_power(right); write!(f, [left.format()])?; if !is_simple { @@ -788,7 +787,7 @@ fn format_lambda( body: &Expr, ) -> FormatResult<()> { write!(f, [text("lambda")])?; - if !args.args.is_empty() { + if !args.args.is_empty() || args.kwarg.is_some() || args.vararg.is_some() { write!(f, [space()])?; write!(f, [args.format()])?; } diff --git a/crates/ruff_python_formatter/src/format/helpers.rs b/crates/ruff_python_formatter/src/format/helpers.rs index 63f216a5fa..1c6f11d56a 100644 --- a/crates/ruff_python_formatter/src/format/helpers.rs +++ b/crates/ruff_python_formatter/src/format/helpers.rs @@ -81,7 +81,7 @@ pub fn is_simple_power(expr: &Expr) -> bool { } ExprKind::Constant { .. } => true, ExprKind::Name { .. } => true, - ExprKind::Attribute { .. } => true, + ExprKind::Attribute { value, .. } => is_simple_power(value), _ => false, } }