mirror of https://github.com/astral-sh/ruff
Avoid flagging starred elements in C402 (#7466)
## Summary Rewriting these is not valid syntax. Part of https://github.com/astral-sh/ruff/issues/7455.
This commit is contained in:
parent
12acd191e1
commit
28273eb00b
|
|
@ -19,3 +19,6 @@ print(f'Hello {dict((x,f(x)) for x in "abc")} World')
|
||||||
|
|
||||||
# Regression test for: https://github.com/astral-sh/ruff/issues/7086
|
# Regression test for: https://github.com/astral-sh/ruff/issues/7086
|
||||||
dict((k,v)for k,v in d.iteritems() if k in only_args)
|
dict((k,v)for k,v in d.iteritems() if k in only_args)
|
||||||
|
|
||||||
|
# Regression test for: https://github.com/astral-sh/ruff/issues/7455#issuecomment-1722458940
|
||||||
|
dict((*v, k) for k, v in enumerate(calendar.month_abbr))
|
||||||
|
|
|
||||||
|
|
@ -54,18 +54,23 @@ pub(crate) fn unnecessary_generator_dict(
|
||||||
else {
|
else {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
if let Expr::GeneratorExp(ast::ExprGeneratorExp { elt, .. }) = argument {
|
let Expr::GeneratorExp(ast::ExprGeneratorExp { elt, .. }) = argument else {
|
||||||
match elt.as_ref() {
|
return;
|
||||||
Expr::Tuple(ast::ExprTuple { elts, .. }) if elts.len() == 2 => {
|
};
|
||||||
let mut diagnostic = Diagnostic::new(UnnecessaryGeneratorDict, expr.range());
|
let Expr::Tuple(ast::ExprTuple { elts, .. }) = elt.as_ref() else {
|
||||||
if checker.patch(diagnostic.kind.rule()) {
|
return;
|
||||||
diagnostic.try_set_fix(|| {
|
};
|
||||||
fixes::fix_unnecessary_generator_dict(expr, checker).map(Fix::suggested)
|
if elts.len() != 2 {
|
||||||
});
|
return;
|
||||||
}
|
|
||||||
checker.diagnostics.push(diagnostic);
|
|
||||||
}
|
|
||||||
_ => {}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if elts.iter().any(Expr::is_starred_expr) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let mut diagnostic = Diagnostic::new(UnnecessaryGeneratorDict, expr.range());
|
||||||
|
if checker.patch(diagnostic.kind.rule()) {
|
||||||
|
diagnostic.try_set_fix(|| {
|
||||||
|
fixes::fix_unnecessary_generator_dict(expr, checker).map(Fix::suggested)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
checker.diagnostics.push(diagnostic);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -251,6 +251,8 @@ C402.py:21:1: C402 [*] Unnecessary generator (rewrite as a `dict` comprehension)
|
||||||
20 | # Regression test for: https://github.com/astral-sh/ruff/issues/7086
|
20 | # Regression test for: https://github.com/astral-sh/ruff/issues/7086
|
||||||
21 | dict((k,v)for k,v in d.iteritems() if k in only_args)
|
21 | dict((k,v)for k,v in d.iteritems() if k in only_args)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ C402
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ C402
|
||||||
|
22 |
|
||||||
|
23 | # Regression test for: https://github.com/astral-sh/ruff/issues/7455#issuecomment-1722458940
|
||||||
|
|
|
|
||||||
= help: Rewrite as a `dict` comprehension
|
= help: Rewrite as a `dict` comprehension
|
||||||
|
|
||||||
|
|
@ -260,5 +262,8 @@ C402.py:21:1: C402 [*] Unnecessary generator (rewrite as a `dict` comprehension)
|
||||||
20 20 | # Regression test for: https://github.com/astral-sh/ruff/issues/7086
|
20 20 | # Regression test for: https://github.com/astral-sh/ruff/issues/7086
|
||||||
21 |-dict((k,v)for k,v in d.iteritems() if k in only_args)
|
21 |-dict((k,v)for k,v in d.iteritems() if k in only_args)
|
||||||
21 |+{k: v for k,v in d.iteritems() if k in only_args}
|
21 |+{k: v for k,v in d.iteritems() if k in only_args}
|
||||||
|
22 22 |
|
||||||
|
23 23 | # Regression test for: https://github.com/astral-sh/ruff/issues/7455#issuecomment-1722458940
|
||||||
|
24 24 | dict((*v, k) for k, v in enumerate(calendar.month_abbr))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue