Remove Comprehension priority (#6947)

This commit is contained in:
Micha Reiser 2023-08-29 08:30:15 +02:00 committed by GitHub
parent adb48692d6
commit 715d86dae9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 7 deletions

View file

@ -94,3 +94,11 @@ if not (
isinstance(aaaaaaaaaaaaaaaaaaaaaaa, bbbbbbbbb) and (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy) or isinstance(ccccccccccc, dddddd) isinstance(aaaaaaaaaaaaaaaaaaaaaaa, bbbbbbbbb) and (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy) or isinstance(ccccccccccc, dddddd)
): ):
pass pass
def test():
return (
isinstance(other, Mapping)
and {k.lower(): v for k, v in self.items()}
== {k.lower(): v for k, v in other.items()}
)

View file

@ -434,16 +434,17 @@ impl<'input> CanOmitOptionalParenthesesVisitor<'input> {
// Visits a subexpression, ignoring whether it is parenthesized or not // Visits a subexpression, ignoring whether it is parenthesized or not
fn visit_subexpression(&mut self, expr: &'input Expr) { fn visit_subexpression(&mut self, expr: &'input Expr) {
match expr { match expr {
Expr::Dict(_) | Expr::List(_) | Expr::Tuple(_) | Expr::Set(_) => { Expr::Dict(_)
| Expr::List(_)
| Expr::Tuple(_)
| Expr::Set(_)
| Expr::ListComp(_)
| Expr::SetComp(_)
| Expr::DictComp(_) => {
self.any_parenthesized_expressions = true; self.any_parenthesized_expressions = true;
// The values are always parenthesized, don't visit. // The values are always parenthesized, don't visit.
return; return;
} }
Expr::ListComp(_) | Expr::SetComp(_) | Expr::DictComp(_) => {
self.any_parenthesized_expressions = true;
self.update_max_priority(OperatorPriority::Comprehension);
return;
}
// It's impossible for a file smaller or equal to 4GB to contain more than 2^32 comparisons // It's impossible for a file smaller or equal to 4GB to contain more than 2^32 comparisons
// because each comparison requires a left operand, and `n` `operands` and right sides. // because each comparison requires a left operand, and `n` `operands` and right sides.
#[allow(clippy::cast_possible_truncation)] #[allow(clippy::cast_possible_truncation)]
@ -789,7 +790,6 @@ enum OperatorPriority {
String, String,
BooleanOperation, BooleanOperation,
Conditional, Conditional,
Comprehension,
} }
impl From<ast::Operator> for OperatorPriority { impl From<ast::Operator> for OperatorPriority {

View file

@ -100,6 +100,14 @@ if not (
isinstance(aaaaaaaaaaaaaaaaaaaaaaa, bbbbbbbbb) and (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy) or isinstance(ccccccccccc, dddddd) isinstance(aaaaaaaaaaaaaaaaaaaaaaa, bbbbbbbbb) and (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy) or isinstance(ccccccccccc, dddddd)
): ):
pass pass
def test():
return (
isinstance(other, Mapping)
and {k.lower(): v for k, v in self.items()}
== {k.lower(): v for k, v in other.items()}
)
``` ```
## Output ## Output
@ -220,6 +228,12 @@ if not (
or isinstance(ccccccccccc, dddddd) or isinstance(ccccccccccc, dddddd)
): ):
pass pass
def test():
return isinstance(other, Mapping) and {k.lower(): v for k, v in self.items()} == {
k.lower(): v for k, v in other.items()
}
``` ```