mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-30 13:51:16 +00:00
[flake8-pyi
] Stabilize: include all python file types for PYI006
(#15340)
This commit is contained in:
parent
8e8a07144d
commit
3ea4c63d2c
7 changed files with 101 additions and 185 deletions
|
@ -1199,7 +1199,6 @@ pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if checker.any_enabled(&[Rule::BadVersionInfoComparison, Rule::BadVersionInfoOrder]) {
|
if checker.any_enabled(&[Rule::BadVersionInfoComparison, Rule::BadVersionInfoOrder]) {
|
||||||
if checker.source_type.is_stub() || checker.settings.preview.is_enabled() {
|
|
||||||
fn bad_version_info_comparison(
|
fn bad_version_info_comparison(
|
||||||
checker: &mut Checker,
|
checker: &mut Checker,
|
||||||
test: &Expr,
|
test: &Expr,
|
||||||
|
@ -1222,8 +1221,7 @@ pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let has_else_clause =
|
let has_else_clause = elif_else_clauses.iter().any(|clause| clause.test.is_none());
|
||||||
elif_else_clauses.iter().any(|clause| clause.test.is_none());
|
|
||||||
|
|
||||||
bad_version_info_comparison(checker, test.as_ref(), has_else_clause);
|
bad_version_info_comparison(checker, test.as_ref(), has_else_clause);
|
||||||
for clause in elif_else_clauses {
|
for clause in elif_else_clauses {
|
||||||
|
@ -1232,7 +1230,7 @@ pub(crate) fn statement(stmt: &Stmt, checker: &mut Checker) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if checker.enabled(Rule::IfKeyInDictDel) {
|
if checker.enabled(Rule::IfKeyInDictDel) {
|
||||||
ruff::rules::if_key_in_dict_del(checker, if_);
|
ruff::rules::if_key_in_dict_del(checker, if_);
|
||||||
}
|
}
|
||||||
|
|
|
@ -187,8 +187,6 @@ mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test_case(Rule::FutureAnnotationsInStub, Path::new("PYI044.pyi"))]
|
#[test_case(Rule::FutureAnnotationsInStub, Path::new("PYI044.pyi"))]
|
||||||
#[test_case(Rule::BadVersionInfoComparison, Path::new("PYI006.py"))]
|
|
||||||
#[test_case(Rule::BadVersionInfoComparison, Path::new("PYI006.pyi"))]
|
|
||||||
fn preview_rules(rule_code: Rule, path: &Path) -> Result<()> {
|
fn preview_rules(rule_code: Rule, path: &Path) -> Result<()> {
|
||||||
let snapshot = format!(
|
let snapshot = format!(
|
||||||
"preview__{}_{}",
|
"preview__{}_{}",
|
||||||
|
|
|
@ -9,7 +9,7 @@ use crate::registry::Rule;
|
||||||
|
|
||||||
/// ## What it does
|
/// ## What it does
|
||||||
/// Checks for uses of comparators other than `<` and `>=` for
|
/// Checks for uses of comparators other than `<` and `>=` for
|
||||||
/// `sys.version_info` checks in `.pyi` files. All other comparators, such
|
/// `sys.version_info` checks. All other comparators, such
|
||||||
/// as `>`, `<=`, and `==`, are banned.
|
/// as `>`, `<=`, and `==`, are banned.
|
||||||
///
|
///
|
||||||
/// ## Why is this bad?
|
/// ## Why is this bad?
|
||||||
|
@ -34,17 +34,15 @@ use crate::registry::Rule;
|
||||||
/// False
|
/// False
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// In [preview], this rule will also flag non-stub files.
|
|
||||||
///
|
|
||||||
/// ## Example
|
/// ## Example
|
||||||
/// ```pyi
|
/// ```py
|
||||||
/// import sys
|
/// import sys
|
||||||
///
|
///
|
||||||
/// if sys.version_info > (3, 8): ...
|
/// if sys.version_info > (3, 8): ...
|
||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// Use instead:
|
/// Use instead:
|
||||||
/// ```pyi
|
/// ```py
|
||||||
/// import sys
|
/// import sys
|
||||||
///
|
///
|
||||||
/// if sys.version_info >= (3, 9): ...
|
/// if sys.version_info >= (3, 9): ...
|
||||||
|
@ -144,7 +142,10 @@ pub(crate) fn bad_version_info_comparison(
|
||||||
}
|
}
|
||||||
|
|
||||||
if matches!(op, CmpOp::Lt) {
|
if matches!(op, CmpOp::Lt) {
|
||||||
if checker.enabled(Rule::BadVersionInfoOrder) {
|
if checker.enabled(Rule::BadVersionInfoOrder)
|
||||||
|
// See https://github.com/astral-sh/ruff/issues/15347
|
||||||
|
&& (checker.source_type.is_stub() || checker.settings.preview.is_enabled())
|
||||||
|
{
|
||||||
if has_else_clause {
|
if has_else_clause {
|
||||||
checker
|
checker
|
||||||
.diagnostics
|
.diagnostics
|
||||||
|
|
|
@ -2,4 +2,76 @@
|
||||||
source: crates/ruff_linter/src/rules/flake8_pyi/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pyi/mod.rs
|
||||||
snapshot_kind: text
|
snapshot_kind: text
|
||||||
---
|
---
|
||||||
|
PYI006.py:8:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
||||||
|
|
|
||||||
|
6 | if sys.version_info >= (3, 9): ... # OK
|
||||||
|
7 |
|
||||||
|
8 | if sys.version_info == (3, 9): ... # OK
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
||||||
|
9 |
|
||||||
|
10 | if sys.version_info == (3, 9): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
|
|
||||||
|
|
||||||
|
PYI006.py:10:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
||||||
|
|
|
||||||
|
8 | if sys.version_info == (3, 9): ... # OK
|
||||||
|
9 |
|
||||||
|
10 | if sys.version_info == (3, 9): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
||||||
|
11 |
|
||||||
|
12 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
|
|
||||||
|
|
||||||
|
PYI006.py:12:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
||||||
|
|
|
||||||
|
10 | if sys.version_info == (3, 9): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
11 |
|
||||||
|
12 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
||||||
|
13 |
|
||||||
|
14 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
|
|
||||||
|
|
||||||
|
PYI006.py:14:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
||||||
|
|
|
||||||
|
12 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
13 |
|
||||||
|
14 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
||||||
|
15 |
|
||||||
|
16 | if sys.version_info > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
|
|
||||||
|
|
||||||
|
PYI006.py:16:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
||||||
|
|
|
||||||
|
14 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
15 |
|
||||||
|
16 | if sys.version_info > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
||||||
|
17 | elif sys.version_info > (3, 11): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
|
|
||||||
|
|
||||||
|
PYI006.py:17:6: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
||||||
|
|
|
||||||
|
16 | if sys.version_info > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
17 | elif sys.version_info > (3, 11): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
||||||
|
18 |
|
||||||
|
19 | if python_version > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
|
|
||||||
|
|
||||||
|
PYI006.py:19:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
||||||
|
|
|
||||||
|
17 | elif sys.version_info > (3, 11): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
18 |
|
||||||
|
19 | if python_version > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
||||||
|
20 | elif python_version == (3, 11): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
|
|
||||||
|
|
||||||
|
PYI006.py:20:6: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
||||||
|
|
|
||||||
|
19 | if python_version > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
20 | elif python_version == (3, 11): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
||||||
|
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pyi/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pyi/mod.rs
|
||||||
|
snapshot_kind: text
|
||||||
---
|
---
|
||||||
PYI066.pyi:3:4: PYI066 Put branches for newer Python versions first when branching on `sys.version_info` comparisons
|
PYI066.pyi:3:4: PYI066 Put branches for newer Python versions first when branching on `sys.version_info` comparisons
|
||||||
|
|
|
|
||||||
|
|
|
@ -1,77 +0,0 @@
|
||||||
---
|
|
||||||
source: crates/ruff_linter/src/rules/flake8_pyi/mod.rs
|
|
||||||
snapshot_kind: text
|
|
||||||
---
|
|
||||||
PYI006.py:8:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
6 | if sys.version_info >= (3, 9): ... # OK
|
|
||||||
7 |
|
|
||||||
8 | if sys.version_info == (3, 9): ... # OK
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
9 |
|
|
||||||
10 | if sys.version_info == (3, 9): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
|
|
|
||||||
|
|
||||||
PYI006.py:10:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
8 | if sys.version_info == (3, 9): ... # OK
|
|
||||||
9 |
|
|
||||||
10 | if sys.version_info == (3, 9): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
11 |
|
|
||||||
12 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
|
|
|
||||||
|
|
||||||
PYI006.py:12:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
10 | if sys.version_info == (3, 9): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
11 |
|
|
||||||
12 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
13 |
|
|
||||||
14 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
|
|
|
||||||
|
|
||||||
PYI006.py:14:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
12 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
13 |
|
|
||||||
14 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
15 |
|
|
||||||
16 | if sys.version_info > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
|
|
|
||||||
|
|
||||||
PYI006.py:16:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
14 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
15 |
|
|
||||||
16 | if sys.version_info > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
17 | elif sys.version_info > (3, 11): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
|
|
|
||||||
|
|
||||||
PYI006.py:17:6: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
16 | if sys.version_info > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
17 | elif sys.version_info > (3, 11): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
18 |
|
|
||||||
19 | if python_version > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
|
|
|
||||||
|
|
||||||
PYI006.py:19:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
17 | elif sys.version_info > (3, 11): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
18 |
|
|
||||||
19 | if python_version > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
20 | elif python_version == (3, 11): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
|
|
|
||||||
|
|
||||||
PYI006.py:20:6: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
19 | if python_version > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
20 | elif python_version == (3, 11): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
|
|
|
|
@ -1,77 +0,0 @@
|
||||||
---
|
|
||||||
source: crates/ruff_linter/src/rules/flake8_pyi/mod.rs
|
|
||||||
snapshot_kind: text
|
|
||||||
---
|
|
||||||
PYI006.pyi:8:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
6 | if sys.version_info >= (3, 9): ... # OK
|
|
||||||
7 |
|
|
||||||
8 | if sys.version_info == (3, 9): ... # OK
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
9 |
|
|
||||||
10 | if sys.version_info == (3, 9): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
|
|
|
||||||
|
|
||||||
PYI006.pyi:10:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
8 | if sys.version_info == (3, 9): ... # OK
|
|
||||||
9 |
|
|
||||||
10 | if sys.version_info == (3, 9): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
11 |
|
|
||||||
12 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
|
|
|
||||||
|
|
||||||
PYI006.pyi:12:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
10 | if sys.version_info == (3, 9): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
11 |
|
|
||||||
12 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
13 |
|
|
||||||
14 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
|
|
|
||||||
|
|
||||||
PYI006.pyi:14:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
12 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
13 |
|
|
||||||
14 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
15 |
|
|
||||||
16 | if sys.version_info > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
|
|
|
||||||
|
|
||||||
PYI006.pyi:16:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
14 | if sys.version_info <= (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
15 |
|
|
||||||
16 | if sys.version_info > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
17 | elif sys.version_info > (3, 11): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
|
|
|
||||||
|
|
||||||
PYI006.pyi:17:6: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
16 | if sys.version_info > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
17 | elif sys.version_info > (3, 11): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
18 |
|
|
||||||
19 | if python_version > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
|
|
|
||||||
|
|
||||||
PYI006.pyi:19:4: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
17 | elif sys.version_info > (3, 11): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
18 |
|
|
||||||
19 | if python_version > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
20 | elif python_version == (3, 11): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
|
|
|
||||||
|
|
||||||
PYI006.pyi:20:6: PYI006 Use `<` or `>=` for `sys.version_info` comparisons
|
|
||||||
|
|
|
||||||
19 | if python_version > (3, 10): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
20 | elif python_version == (3, 11): ... # Error: PYI006 Use only `<` and `>=` for version info comparisons
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ PYI006
|
|
||||||
|
|
|
Loading…
Add table
Add a link
Reference in a new issue