mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-29 13:25:17 +00:00
Change default for PT001 and PT023 (#12838)
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
This commit is contained in:
parent
9fd8aaaf29
commit
2e211c5c22
15 changed files with 351 additions and 390 deletions
|
@ -264,7 +264,7 @@ linter.flake8_import_conventions.aliases = {
|
||||||
}
|
}
|
||||||
linter.flake8_import_conventions.banned_aliases = {}
|
linter.flake8_import_conventions.banned_aliases = {}
|
||||||
linter.flake8_import_conventions.banned_from = []
|
linter.flake8_import_conventions.banned_from = []
|
||||||
linter.flake8_pytest_style.fixture_parentheses = true
|
linter.flake8_pytest_style.fixture_parentheses = false
|
||||||
linter.flake8_pytest_style.parametrize_names_type = tuple
|
linter.flake8_pytest_style.parametrize_names_type = tuple
|
||||||
linter.flake8_pytest_style.parametrize_values_type = list
|
linter.flake8_pytest_style.parametrize_values_type = list
|
||||||
linter.flake8_pytest_style.parametrize_values_row_type = tuple
|
linter.flake8_pytest_style.parametrize_values_row_type = tuple
|
||||||
|
@ -278,7 +278,7 @@ linter.flake8_pytest_style.raises_require_match_for = [
|
||||||
socket.error,
|
socket.error,
|
||||||
]
|
]
|
||||||
linter.flake8_pytest_style.raises_extend_require_match_for = []
|
linter.flake8_pytest_style.raises_extend_require_match_for = []
|
||||||
linter.flake8_pytest_style.mark_parentheses = true
|
linter.flake8_pytest_style.mark_parentheses = false
|
||||||
linter.flake8_quotes.inline_quotes = double
|
linter.flake8_quotes.inline_quotes = double
|
||||||
linter.flake8_quotes.multiline_quotes = double
|
linter.flake8_quotes.multiline_quotes = double
|
||||||
linter.flake8_quotes.docstring_quotes = double
|
linter.flake8_quotes.docstring_quotes = double
|
||||||
|
|
|
@ -28,10 +28,10 @@ mod tests {
|
||||||
Rule::PytestFixtureIncorrectParenthesesStyle,
|
Rule::PytestFixtureIncorrectParenthesesStyle,
|
||||||
Path::new("PT001.py"),
|
Path::new("PT001.py"),
|
||||||
Settings {
|
Settings {
|
||||||
fixture_parentheses: false,
|
fixture_parentheses: true,
|
||||||
..Settings::default()
|
..Settings::default()
|
||||||
},
|
},
|
||||||
"PT001_no_parentheses"
|
"PT001_parentheses"
|
||||||
)]
|
)]
|
||||||
#[test_case(
|
#[test_case(
|
||||||
Rule::PytestFixturePositionalArgs,
|
Rule::PytestFixturePositionalArgs,
|
||||||
|
@ -252,10 +252,10 @@ mod tests {
|
||||||
Rule::PytestIncorrectMarkParenthesesStyle,
|
Rule::PytestIncorrectMarkParenthesesStyle,
|
||||||
Path::new("PT023.py"),
|
Path::new("PT023.py"),
|
||||||
Settings {
|
Settings {
|
||||||
mark_parentheses: false,
|
mark_parentheses: true,
|
||||||
..Settings::default()
|
..Settings::default()
|
||||||
},
|
},
|
||||||
"PT023_no_parentheses"
|
"PT023_parentheses"
|
||||||
)]
|
)]
|
||||||
#[test_case(
|
#[test_case(
|
||||||
Rule::PytestUnnecessaryAsyncioMarkOnFixture,
|
Rule::PytestUnnecessaryAsyncioMarkOnFixture,
|
||||||
|
|
|
@ -32,10 +32,9 @@ use super::helpers::{
|
||||||
/// optional.
|
/// optional.
|
||||||
///
|
///
|
||||||
/// Either removing those unnecessary parentheses _or_ requiring them for all
|
/// Either removing those unnecessary parentheses _or_ requiring them for all
|
||||||
/// fixtures is fine, but it's best to be consistent.
|
/// fixtures is fine, but it's best to be consistent. The rule defaults to
|
||||||
///
|
/// removing unnecessary parentheses, to match the documentation of the
|
||||||
/// In [preview], this rule defaults to removing unnecessary parentheses, to match
|
/// official pytest projects.
|
||||||
/// the behavior of official pytest projects.
|
|
||||||
///
|
///
|
||||||
/// ## Example
|
/// ## Example
|
||||||
///
|
///
|
||||||
|
@ -62,8 +61,6 @@ use super::helpers::{
|
||||||
///
|
///
|
||||||
/// ## References
|
/// ## References
|
||||||
/// - [`pytest` documentation: API Reference: Fixtures](https://docs.pytest.org/en/latest/reference/reference.html#fixtures-api)
|
/// - [`pytest` documentation: API Reference: Fixtures](https://docs.pytest.org/en/latest/reference/reference.html#fixtures-api)
|
||||||
///
|
|
||||||
/// [preview]: https://docs.astral.sh/ruff/preview/
|
|
||||||
#[violation]
|
#[violation]
|
||||||
pub struct PytestFixtureIncorrectParenthesesStyle {
|
pub struct PytestFixtureIncorrectParenthesesStyle {
|
||||||
expected: Parentheses,
|
expected: Parentheses,
|
||||||
|
@ -938,9 +935,7 @@ pub(crate) fn fixture(
|
||||||
check_fixture_decorator(checker, name, decorator);
|
check_fixture_decorator(checker, name, decorator);
|
||||||
}
|
}
|
||||||
|
|
||||||
if checker.enabled(Rule::PytestDeprecatedYieldFixture)
|
if checker.enabled(Rule::PytestDeprecatedYieldFixture) {
|
||||||
&& checker.settings.flake8_pytest_style.fixture_parentheses
|
|
||||||
{
|
|
||||||
check_fixture_decorator_name(checker, decorator);
|
check_fixture_decorator_name(checker, decorator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,8 @@ use super::helpers::get_mark_decorators;
|
||||||
/// without parentheses, depending on the [`lint.flake8-pytest-style.mark-parentheses`]
|
/// without parentheses, depending on the [`lint.flake8-pytest-style.mark-parentheses`]
|
||||||
/// setting.
|
/// setting.
|
||||||
///
|
///
|
||||||
/// In [preview], this rule defaults to removing unnecessary parentheses, to match
|
/// The rule defaults to removing unnecessary parentheses,
|
||||||
/// the behavior of official pytest projects.
|
/// to match the documentation of the official pytest projects.
|
||||||
///
|
///
|
||||||
/// ## Why is this bad?
|
/// ## Why is this bad?
|
||||||
/// If a `@pytest.mark.<marker>()` doesn't take any arguments, the parentheses are
|
/// If a `@pytest.mark.<marker>()` doesn't take any arguments, the parentheses are
|
||||||
|
@ -49,8 +49,6 @@ use super::helpers::get_mark_decorators;
|
||||||
///
|
///
|
||||||
/// ## References
|
/// ## References
|
||||||
/// - [`pytest` documentation: Marks](https://docs.pytest.org/en/latest/reference/reference.html#marks)
|
/// - [`pytest` documentation: Marks](https://docs.pytest.org/en/latest/reference/reference.html#marks)
|
||||||
///
|
|
||||||
/// [preview]: https://docs.astral.sh/ruff/preview/
|
|
||||||
#[violation]
|
#[violation]
|
||||||
pub struct PytestIncorrectMarkParenthesesStyle {
|
pub struct PytestIncorrectMarkParenthesesStyle {
|
||||||
mark_name: String,
|
mark_name: String,
|
||||||
|
|
|
@ -6,7 +6,7 @@ use std::fmt::Formatter;
|
||||||
use crate::display_settings;
|
use crate::display_settings;
|
||||||
use ruff_macros::CacheKey;
|
use ruff_macros::CacheKey;
|
||||||
|
|
||||||
use crate::settings::types::{IdentifierPattern, PreviewMode};
|
use crate::settings::types::IdentifierPattern;
|
||||||
|
|
||||||
use super::types;
|
use super::types;
|
||||||
|
|
||||||
|
@ -38,27 +38,13 @@ pub struct Settings {
|
||||||
impl Default for Settings {
|
impl Default for Settings {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self {
|
Self {
|
||||||
fixture_parentheses: true,
|
fixture_parentheses: false,
|
||||||
parametrize_names_type: types::ParametrizeNameType::default(),
|
parametrize_names_type: types::ParametrizeNameType::default(),
|
||||||
parametrize_values_type: types::ParametrizeValuesType::default(),
|
parametrize_values_type: types::ParametrizeValuesType::default(),
|
||||||
parametrize_values_row_type: types::ParametrizeValuesRowType::default(),
|
parametrize_values_row_type: types::ParametrizeValuesRowType::default(),
|
||||||
raises_require_match_for: default_broad_exceptions(),
|
raises_require_match_for: default_broad_exceptions(),
|
||||||
raises_extend_require_match_for: vec![],
|
raises_extend_require_match_for: vec![],
|
||||||
mark_parentheses: true,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Settings {
|
|
||||||
pub fn resolve_default(preview: PreviewMode) -> Self {
|
|
||||||
if preview.is_enabled() {
|
|
||||||
Self {
|
|
||||||
fixture_parentheses: false,
|
|
||||||
mark_parentheses: false,
|
mark_parentheses: false,
|
||||||
..Default::default()
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Self::default()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,61 +1,127 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
---
|
---
|
||||||
PT001.py:9:1: PT001 [*] Use `@pytest.fixture()` over `@pytest.fixture`
|
PT001.py:14:1: PT001 [*] Use `@pytest.fixture` over `@pytest.fixture()`
|
||||||
|
|
|
|
||||||
9 | @pytest.fixture
|
14 | @pytest.fixture()
|
||||||
| ^^^^^^^^^^^^^^^ PT001
|
| ^^^^^^^^^^^^^^^^^ PT001
|
||||||
10 | def no_parentheses():
|
15 | def parentheses_no_params():
|
||||||
11 | return 42
|
16 | return 42
|
||||||
|
|
|
|
||||||
= help: Add parentheses
|
= help: Remove parentheses
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
6 6 | # `import pytest`
|
|
||||||
7 7 |
|
|
||||||
8 8 |
|
|
||||||
9 |-@pytest.fixture
|
|
||||||
9 |+@pytest.fixture()
|
|
||||||
10 10 | def no_parentheses():
|
|
||||||
11 11 | return 42
|
11 11 | return 42
|
||||||
12 12 |
|
12 12 |
|
||||||
|
13 13 |
|
||||||
|
14 |-@pytest.fixture()
|
||||||
|
14 |+@pytest.fixture
|
||||||
|
15 15 | def parentheses_no_params():
|
||||||
|
16 16 | return 42
|
||||||
|
17 17 |
|
||||||
|
|
||||||
PT001.py:34:1: PT001 [*] Use `@pytest.fixture()` over `@pytest.fixture`
|
PT001.py:24:1: PT001 [*] Use `@pytest.fixture` over `@pytest.fixture()`
|
||||||
|
|
|
|
||||||
34 | @fixture
|
24 | / @pytest.fixture(
|
||||||
| ^^^^^^^^ PT001
|
25 | |
|
||||||
35 | def imported_from_no_parentheses():
|
26 | | )
|
||||||
36 | return 42
|
| |_^ PT001
|
||||||
|
27 | def parentheses_no_params_multiline():
|
||||||
|
28 | return 42
|
||||||
|
|
|
|
||||||
= help: Add parentheses
|
= help: Remove parentheses
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
21 21 | return 42
|
||||||
|
22 22 |
|
||||||
|
23 23 |
|
||||||
|
24 |-@pytest.fixture(
|
||||||
|
25 |-
|
||||||
|
26 |-)
|
||||||
|
24 |+@pytest.fixture
|
||||||
|
27 25 | def parentheses_no_params_multiline():
|
||||||
|
28 26 | return 42
|
||||||
|
29 27 |
|
||||||
|
|
||||||
|
PT001.py:39:1: PT001 [*] Use `@pytest.fixture` over `@pytest.fixture()`
|
||||||
|
|
|
||||||
|
39 | @fixture()
|
||||||
|
| ^^^^^^^^^^ PT001
|
||||||
|
40 | def imported_from_parentheses_no_params():
|
||||||
|
41 | return 42
|
||||||
|
|
|
||||||
|
= help: Remove parentheses
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
31 31 | # `from pytest import fixture`
|
|
||||||
32 32 |
|
|
||||||
33 33 |
|
|
||||||
34 |-@fixture
|
|
||||||
34 |+@fixture()
|
|
||||||
35 35 | def imported_from_no_parentheses():
|
|
||||||
36 36 | return 42
|
36 36 | return 42
|
||||||
37 37 |
|
37 37 |
|
||||||
|
38 38 |
|
||||||
|
39 |-@fixture()
|
||||||
|
39 |+@fixture
|
||||||
|
40 40 | def imported_from_parentheses_no_params():
|
||||||
|
41 41 | return 42
|
||||||
|
42 42 |
|
||||||
|
|
||||||
PT001.py:59:1: PT001 [*] Use `@pytest.fixture()` over `@pytest.fixture`
|
PT001.py:49:1: PT001 [*] Use `@pytest.fixture` over `@pytest.fixture()`
|
||||||
|
|
|
|
||||||
59 | @aliased
|
49 | / @fixture(
|
||||||
| ^^^^^^^^ PT001
|
50 | |
|
||||||
60 | def aliased_no_parentheses():
|
51 | | )
|
||||||
61 | return 42
|
| |_^ PT001
|
||||||
|
52 | def imported_from_parentheses_no_params_multiline():
|
||||||
|
53 | return 42
|
||||||
|
|
|
|
||||||
= help: Add parentheses
|
= help: Remove parentheses
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
46 46 | return 42
|
||||||
|
47 47 |
|
||||||
|
48 48 |
|
||||||
|
49 |-@fixture(
|
||||||
|
50 |-
|
||||||
|
51 |-)
|
||||||
|
49 |+@fixture
|
||||||
|
52 50 | def imported_from_parentheses_no_params_multiline():
|
||||||
|
53 51 | return 42
|
||||||
|
54 52 |
|
||||||
|
|
||||||
|
PT001.py:64:1: PT001 [*] Use `@pytest.fixture` over `@pytest.fixture()`
|
||||||
|
|
|
||||||
|
64 | @aliased()
|
||||||
|
| ^^^^^^^^^^ PT001
|
||||||
|
65 | def aliased_parentheses_no_params():
|
||||||
|
66 | return 42
|
||||||
|
|
|
||||||
|
= help: Remove parentheses
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
56 56 | # `from pytest import fixture as aliased`
|
|
||||||
57 57 |
|
|
||||||
58 58 |
|
|
||||||
59 |-@aliased
|
|
||||||
59 |+@aliased()
|
|
||||||
60 60 | def aliased_no_parentheses():
|
|
||||||
61 61 | return 42
|
61 61 | return 42
|
||||||
62 62 |
|
62 62 |
|
||||||
|
63 63 |
|
||||||
|
64 |-@aliased()
|
||||||
|
64 |+@aliased
|
||||||
|
65 65 | def aliased_parentheses_no_params():
|
||||||
|
66 66 | return 42
|
||||||
|
67 67 |
|
||||||
|
|
||||||
|
PT001.py:74:1: PT001 [*] Use `@pytest.fixture` over `@pytest.fixture()`
|
||||||
|
|
|
||||||
|
74 | / @aliased(
|
||||||
|
75 | |
|
||||||
|
76 | | )
|
||||||
|
| |_^ PT001
|
||||||
|
77 | def aliased_parentheses_no_params_multiline():
|
||||||
|
78 | return 42
|
||||||
|
|
|
||||||
|
= help: Remove parentheses
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
71 71 | return 42
|
||||||
|
72 72 |
|
||||||
|
73 73 |
|
||||||
|
74 |-@aliased(
|
||||||
|
75 |-
|
||||||
|
76 |-)
|
||||||
|
74 |+@aliased
|
||||||
|
77 75 | def aliased_parentheses_no_params_multiline():
|
||||||
|
78 76 | return 42
|
||||||
|
|
|
@ -1,129 +0,0 @@
|
||||||
---
|
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
|
||||||
---
|
|
||||||
PT001.py:14:1: PT001 [*] Use `@pytest.fixture` over `@pytest.fixture()`
|
|
||||||
|
|
|
||||||
14 | @pytest.fixture()
|
|
||||||
| ^^^^^^^^^^^^^^^^^ PT001
|
|
||||||
15 | def parentheses_no_params():
|
|
||||||
16 | return 42
|
|
||||||
|
|
|
||||||
= help: Remove parentheses
|
|
||||||
|
|
||||||
ℹ Safe fix
|
|
||||||
11 11 | return 42
|
|
||||||
12 12 |
|
|
||||||
13 13 |
|
|
||||||
14 |-@pytest.fixture()
|
|
||||||
14 |+@pytest.fixture
|
|
||||||
15 15 | def parentheses_no_params():
|
|
||||||
16 16 | return 42
|
|
||||||
17 17 |
|
|
||||||
|
|
||||||
PT001.py:24:1: PT001 [*] Use `@pytest.fixture` over `@pytest.fixture()`
|
|
||||||
|
|
|
||||||
24 | / @pytest.fixture(
|
|
||||||
25 | |
|
|
||||||
26 | | )
|
|
||||||
| |_^ PT001
|
|
||||||
27 | def parentheses_no_params_multiline():
|
|
||||||
28 | return 42
|
|
||||||
|
|
|
||||||
= help: Remove parentheses
|
|
||||||
|
|
||||||
ℹ Safe fix
|
|
||||||
21 21 | return 42
|
|
||||||
22 22 |
|
|
||||||
23 23 |
|
|
||||||
24 |-@pytest.fixture(
|
|
||||||
25 |-
|
|
||||||
26 |-)
|
|
||||||
24 |+@pytest.fixture
|
|
||||||
27 25 | def parentheses_no_params_multiline():
|
|
||||||
28 26 | return 42
|
|
||||||
29 27 |
|
|
||||||
|
|
||||||
PT001.py:39:1: PT001 [*] Use `@pytest.fixture` over `@pytest.fixture()`
|
|
||||||
|
|
|
||||||
39 | @fixture()
|
|
||||||
| ^^^^^^^^^^ PT001
|
|
||||||
40 | def imported_from_parentheses_no_params():
|
|
||||||
41 | return 42
|
|
||||||
|
|
|
||||||
= help: Remove parentheses
|
|
||||||
|
|
||||||
ℹ Safe fix
|
|
||||||
36 36 | return 42
|
|
||||||
37 37 |
|
|
||||||
38 38 |
|
|
||||||
39 |-@fixture()
|
|
||||||
39 |+@fixture
|
|
||||||
40 40 | def imported_from_parentheses_no_params():
|
|
||||||
41 41 | return 42
|
|
||||||
42 42 |
|
|
||||||
|
|
||||||
PT001.py:49:1: PT001 [*] Use `@pytest.fixture` over `@pytest.fixture()`
|
|
||||||
|
|
|
||||||
49 | / @fixture(
|
|
||||||
50 | |
|
|
||||||
51 | | )
|
|
||||||
| |_^ PT001
|
|
||||||
52 | def imported_from_parentheses_no_params_multiline():
|
|
||||||
53 | return 42
|
|
||||||
|
|
|
||||||
= help: Remove parentheses
|
|
||||||
|
|
||||||
ℹ Safe fix
|
|
||||||
46 46 | return 42
|
|
||||||
47 47 |
|
|
||||||
48 48 |
|
|
||||||
49 |-@fixture(
|
|
||||||
50 |-
|
|
||||||
51 |-)
|
|
||||||
49 |+@fixture
|
|
||||||
52 50 | def imported_from_parentheses_no_params_multiline():
|
|
||||||
53 51 | return 42
|
|
||||||
54 52 |
|
|
||||||
|
|
||||||
PT001.py:64:1: PT001 [*] Use `@pytest.fixture` over `@pytest.fixture()`
|
|
||||||
|
|
|
||||||
64 | @aliased()
|
|
||||||
| ^^^^^^^^^^ PT001
|
|
||||||
65 | def aliased_parentheses_no_params():
|
|
||||||
66 | return 42
|
|
||||||
|
|
|
||||||
= help: Remove parentheses
|
|
||||||
|
|
||||||
ℹ Safe fix
|
|
||||||
61 61 | return 42
|
|
||||||
62 62 |
|
|
||||||
63 63 |
|
|
||||||
64 |-@aliased()
|
|
||||||
64 |+@aliased
|
|
||||||
65 65 | def aliased_parentheses_no_params():
|
|
||||||
66 66 | return 42
|
|
||||||
67 67 |
|
|
||||||
|
|
||||||
PT001.py:74:1: PT001 [*] Use `@pytest.fixture` over `@pytest.fixture()`
|
|
||||||
|
|
|
||||||
74 | / @aliased(
|
|
||||||
75 | |
|
|
||||||
76 | | )
|
|
||||||
| |_^ PT001
|
|
||||||
77 | def aliased_parentheses_no_params_multiline():
|
|
||||||
78 | return 42
|
|
||||||
|
|
|
||||||
= help: Remove parentheses
|
|
||||||
|
|
||||||
ℹ Safe fix
|
|
||||||
71 71 | return 42
|
|
||||||
72 72 |
|
|
||||||
73 73 |
|
|
||||||
74 |-@aliased(
|
|
||||||
75 |-
|
|
||||||
76 |-)
|
|
||||||
74 |+@aliased
|
|
||||||
77 75 | def aliased_parentheses_no_params_multiline():
|
|
||||||
78 76 | return 42
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
---
|
||||||
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
|
---
|
||||||
|
PT001.py:9:1: PT001 [*] Use `@pytest.fixture()` over `@pytest.fixture`
|
||||||
|
|
|
||||||
|
9 | @pytest.fixture
|
||||||
|
| ^^^^^^^^^^^^^^^ PT001
|
||||||
|
10 | def no_parentheses():
|
||||||
|
11 | return 42
|
||||||
|
|
|
||||||
|
= help: Add parentheses
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
6 6 | # `import pytest`
|
||||||
|
7 7 |
|
||||||
|
8 8 |
|
||||||
|
9 |-@pytest.fixture
|
||||||
|
9 |+@pytest.fixture()
|
||||||
|
10 10 | def no_parentheses():
|
||||||
|
11 11 | return 42
|
||||||
|
12 12 |
|
||||||
|
|
||||||
|
PT001.py:34:1: PT001 [*] Use `@pytest.fixture()` over `@pytest.fixture`
|
||||||
|
|
|
||||||
|
34 | @fixture
|
||||||
|
| ^^^^^^^^ PT001
|
||||||
|
35 | def imported_from_no_parentheses():
|
||||||
|
36 | return 42
|
||||||
|
|
|
||||||
|
= help: Add parentheses
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
31 31 | # `from pytest import fixture`
|
||||||
|
32 32 |
|
||||||
|
33 33 |
|
||||||
|
34 |-@fixture
|
||||||
|
34 |+@fixture()
|
||||||
|
35 35 | def imported_from_no_parentheses():
|
||||||
|
36 36 | return 42
|
||||||
|
37 37 |
|
||||||
|
|
||||||
|
PT001.py:59:1: PT001 [*] Use `@pytest.fixture()` over `@pytest.fixture`
|
||||||
|
|
|
||||||
|
59 | @aliased
|
||||||
|
| ^^^^^^^^ PT001
|
||||||
|
60 | def aliased_no_parentheses():
|
||||||
|
61 | return 42
|
||||||
|
|
|
||||||
|
= help: Add parentheses
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
56 56 | # `from pytest import fixture as aliased`
|
||||||
|
57 57 |
|
||||||
|
58 58 |
|
||||||
|
59 |-@aliased
|
||||||
|
59 |+@aliased()
|
||||||
|
60 60 | def aliased_no_parentheses():
|
||||||
|
61 61 | return 42
|
||||||
|
62 62 |
|
|
@ -16,5 +16,3 @@ PT020.py:19:1: PT020 `@pytest.yield_fixture` is deprecated, use `@pytest.fixture
|
||||||
20 | def error_with_parens():
|
20 | def error_with_parens():
|
||||||
21 | return 0
|
21 | return 0
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,103 +1,100 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
---
|
---
|
||||||
PT023.py:12:1: PT023 [*] Use `@pytest.mark.foo()` over `@pytest.mark.foo`
|
PT023.py:46:1: PT023 [*] Use `@pytest.mark.foo` over `@pytest.mark.foo()`
|
||||||
|
|
|
|
||||||
12 | @pytest.mark.foo
|
46 | @pytest.mark.foo()
|
||||||
| ^^^^^^^^^^^^^^^^ PT023
|
| ^^^^^^^^^^^^^^^^^^ PT023
|
||||||
13 | def test_something():
|
47 | def test_something():
|
||||||
14 | pass
|
48 | pass
|
||||||
|
|
|
|
||||||
= help: Add/remove parentheses
|
= help: Add/remove parentheses
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
9 9 | # Without parentheses
|
43 43 | # With parentheses
|
||||||
10 10 |
|
44 44 |
|
||||||
11 11 |
|
45 45 |
|
||||||
12 |-@pytest.mark.foo
|
46 |-@pytest.mark.foo()
|
||||||
12 |+@pytest.mark.foo()
|
46 |+@pytest.mark.foo
|
||||||
13 13 | def test_something():
|
47 47 | def test_something():
|
||||||
14 14 | pass
|
48 48 | pass
|
||||||
15 15 |
|
49 49 |
|
||||||
|
|
||||||
PT023.py:17:1: PT023 [*] Use `@pytest.mark.foo()` over `@pytest.mark.foo`
|
PT023.py:51:1: PT023 [*] Use `@pytest.mark.foo` over `@pytest.mark.foo()`
|
||||||
|
|
|
|
||||||
17 | @pytest.mark.foo
|
51 | @pytest.mark.foo()
|
||||||
| ^^^^^^^^^^^^^^^^ PT023
|
| ^^^^^^^^^^^^^^^^^^ PT023
|
||||||
18 | class TestClass:
|
52 | class TestClass:
|
||||||
19 | def test_something():
|
53 | def test_something():
|
||||||
|
|
|
|
||||||
= help: Add/remove parentheses
|
= help: Add/remove parentheses
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
14 14 | pass
|
48 48 | pass
|
||||||
15 15 |
|
49 49 |
|
||||||
16 16 |
|
50 50 |
|
||||||
17 |-@pytest.mark.foo
|
51 |-@pytest.mark.foo()
|
||||||
17 |+@pytest.mark.foo()
|
51 |+@pytest.mark.foo
|
||||||
18 18 | class TestClass:
|
52 52 | class TestClass:
|
||||||
19 19 | def test_something():
|
53 53 | def test_something():
|
||||||
20 20 | pass
|
54 54 | pass
|
||||||
|
|
||||||
PT023.py:24:5: PT023 [*] Use `@pytest.mark.foo()` over `@pytest.mark.foo`
|
PT023.py:58:5: PT023 [*] Use `@pytest.mark.foo` over `@pytest.mark.foo()`
|
||||||
|
|
|
|
||||||
23 | class TestClass:
|
57 | class TestClass:
|
||||||
24 | @pytest.mark.foo
|
58 | @pytest.mark.foo()
|
||||||
| ^^^^^^^^^^^^^^^^ PT023
|
| ^^^^^^^^^^^^^^^^^^ PT023
|
||||||
25 | def test_something():
|
59 | def test_something():
|
||||||
26 | pass
|
60 | pass
|
||||||
|
|
|
|
||||||
= help: Add/remove parentheses
|
= help: Add/remove parentheses
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
21 21 |
|
55 55 |
|
||||||
22 22 |
|
56 56 |
|
||||||
23 23 | class TestClass:
|
57 57 | class TestClass:
|
||||||
24 |- @pytest.mark.foo
|
58 |- @pytest.mark.foo()
|
||||||
24 |+ @pytest.mark.foo()
|
58 |+ @pytest.mark.foo
|
||||||
25 25 | def test_something():
|
59 59 | def test_something():
|
||||||
26 26 | pass
|
60 60 | pass
|
||||||
27 27 |
|
61 61 |
|
||||||
|
|
||||||
PT023.py:30:5: PT023 [*] Use `@pytest.mark.foo()` over `@pytest.mark.foo`
|
PT023.py:64:5: PT023 [*] Use `@pytest.mark.foo` over `@pytest.mark.foo()`
|
||||||
|
|
|
|
||||||
29 | class TestClass:
|
63 | class TestClass:
|
||||||
30 | @pytest.mark.foo
|
64 | @pytest.mark.foo()
|
||||||
| ^^^^^^^^^^^^^^^^ PT023
|
| ^^^^^^^^^^^^^^^^^^ PT023
|
||||||
31 | class TestNestedClass:
|
65 | class TestNestedClass:
|
||||||
32 | def test_something():
|
66 | def test_something():
|
||||||
|
|
|
|
||||||
= help: Add/remove parentheses
|
= help: Add/remove parentheses
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
27 27 |
|
61 61 |
|
||||||
28 28 |
|
62 62 |
|
||||||
29 29 | class TestClass:
|
63 63 | class TestClass:
|
||||||
30 |- @pytest.mark.foo
|
64 |- @pytest.mark.foo()
|
||||||
30 |+ @pytest.mark.foo()
|
64 |+ @pytest.mark.foo
|
||||||
31 31 | class TestNestedClass:
|
65 65 | class TestNestedClass:
|
||||||
32 32 | def test_something():
|
66 66 | def test_something():
|
||||||
33 33 | pass
|
67 67 | pass
|
||||||
|
|
||||||
PT023.py:38:9: PT023 [*] Use `@pytest.mark.foo()` over `@pytest.mark.foo`
|
PT023.py:72:9: PT023 [*] Use `@pytest.mark.foo` over `@pytest.mark.foo()`
|
||||||
|
|
|
|
||||||
36 | class TestClass:
|
70 | class TestClass:
|
||||||
37 | class TestNestedClass:
|
71 | class TestNestedClass:
|
||||||
38 | @pytest.mark.foo
|
72 | @pytest.mark.foo()
|
||||||
| ^^^^^^^^^^^^^^^^ PT023
|
| ^^^^^^^^^^^^^^^^^^ PT023
|
||||||
39 | def test_something():
|
73 | def test_something():
|
||||||
40 | pass
|
74 | pass
|
||||||
|
|
|
|
||||||
= help: Add/remove parentheses
|
= help: Add/remove parentheses
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
35 35 |
|
69 69 |
|
||||||
36 36 | class TestClass:
|
70 70 | class TestClass:
|
||||||
37 37 | class TestNestedClass:
|
71 71 | class TestNestedClass:
|
||||||
38 |- @pytest.mark.foo
|
72 |- @pytest.mark.foo()
|
||||||
38 |+ @pytest.mark.foo()
|
72 |+ @pytest.mark.foo
|
||||||
39 39 | def test_something():
|
73 73 | def test_something():
|
||||||
40 40 | pass
|
74 74 | pass
|
||||||
41 41 |
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,102 +0,0 @@
|
||||||
---
|
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
|
||||||
---
|
|
||||||
PT023.py:46:1: PT023 [*] Use `@pytest.mark.foo` over `@pytest.mark.foo()`
|
|
||||||
|
|
|
||||||
46 | @pytest.mark.foo()
|
|
||||||
| ^^^^^^^^^^^^^^^^^^ PT023
|
|
||||||
47 | def test_something():
|
|
||||||
48 | pass
|
|
||||||
|
|
|
||||||
= help: Add/remove parentheses
|
|
||||||
|
|
||||||
ℹ Safe fix
|
|
||||||
43 43 | # With parentheses
|
|
||||||
44 44 |
|
|
||||||
45 45 |
|
|
||||||
46 |-@pytest.mark.foo()
|
|
||||||
46 |+@pytest.mark.foo
|
|
||||||
47 47 | def test_something():
|
|
||||||
48 48 | pass
|
|
||||||
49 49 |
|
|
||||||
|
|
||||||
PT023.py:51:1: PT023 [*] Use `@pytest.mark.foo` over `@pytest.mark.foo()`
|
|
||||||
|
|
|
||||||
51 | @pytest.mark.foo()
|
|
||||||
| ^^^^^^^^^^^^^^^^^^ PT023
|
|
||||||
52 | class TestClass:
|
|
||||||
53 | def test_something():
|
|
||||||
|
|
|
||||||
= help: Add/remove parentheses
|
|
||||||
|
|
||||||
ℹ Safe fix
|
|
||||||
48 48 | pass
|
|
||||||
49 49 |
|
|
||||||
50 50 |
|
|
||||||
51 |-@pytest.mark.foo()
|
|
||||||
51 |+@pytest.mark.foo
|
|
||||||
52 52 | class TestClass:
|
|
||||||
53 53 | def test_something():
|
|
||||||
54 54 | pass
|
|
||||||
|
|
||||||
PT023.py:58:5: PT023 [*] Use `@pytest.mark.foo` over `@pytest.mark.foo()`
|
|
||||||
|
|
|
||||||
57 | class TestClass:
|
|
||||||
58 | @pytest.mark.foo()
|
|
||||||
| ^^^^^^^^^^^^^^^^^^ PT023
|
|
||||||
59 | def test_something():
|
|
||||||
60 | pass
|
|
||||||
|
|
|
||||||
= help: Add/remove parentheses
|
|
||||||
|
|
||||||
ℹ Safe fix
|
|
||||||
55 55 |
|
|
||||||
56 56 |
|
|
||||||
57 57 | class TestClass:
|
|
||||||
58 |- @pytest.mark.foo()
|
|
||||||
58 |+ @pytest.mark.foo
|
|
||||||
59 59 | def test_something():
|
|
||||||
60 60 | pass
|
|
||||||
61 61 |
|
|
||||||
|
|
||||||
PT023.py:64:5: PT023 [*] Use `@pytest.mark.foo` over `@pytest.mark.foo()`
|
|
||||||
|
|
|
||||||
63 | class TestClass:
|
|
||||||
64 | @pytest.mark.foo()
|
|
||||||
| ^^^^^^^^^^^^^^^^^^ PT023
|
|
||||||
65 | class TestNestedClass:
|
|
||||||
66 | def test_something():
|
|
||||||
|
|
|
||||||
= help: Add/remove parentheses
|
|
||||||
|
|
||||||
ℹ Safe fix
|
|
||||||
61 61 |
|
|
||||||
62 62 |
|
|
||||||
63 63 | class TestClass:
|
|
||||||
64 |- @pytest.mark.foo()
|
|
||||||
64 |+ @pytest.mark.foo
|
|
||||||
65 65 | class TestNestedClass:
|
|
||||||
66 66 | def test_something():
|
|
||||||
67 67 | pass
|
|
||||||
|
|
||||||
PT023.py:72:9: PT023 [*] Use `@pytest.mark.foo` over `@pytest.mark.foo()`
|
|
||||||
|
|
|
||||||
70 | class TestClass:
|
|
||||||
71 | class TestNestedClass:
|
|
||||||
72 | @pytest.mark.foo()
|
|
||||||
| ^^^^^^^^^^^^^^^^^^ PT023
|
|
||||||
73 | def test_something():
|
|
||||||
74 | pass
|
|
||||||
|
|
|
||||||
= help: Add/remove parentheses
|
|
||||||
|
|
||||||
ℹ Safe fix
|
|
||||||
69 69 |
|
|
||||||
70 70 | class TestClass:
|
|
||||||
71 71 | class TestNestedClass:
|
|
||||||
72 |- @pytest.mark.foo()
|
|
||||||
72 |+ @pytest.mark.foo
|
|
||||||
73 73 | def test_something():
|
|
||||||
74 74 | pass
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,101 @@
|
||||||
|
---
|
||||||
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
|
---
|
||||||
|
PT023.py:12:1: PT023 [*] Use `@pytest.mark.foo()` over `@pytest.mark.foo`
|
||||||
|
|
|
||||||
|
12 | @pytest.mark.foo
|
||||||
|
| ^^^^^^^^^^^^^^^^ PT023
|
||||||
|
13 | def test_something():
|
||||||
|
14 | pass
|
||||||
|
|
|
||||||
|
= help: Add/remove parentheses
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
9 9 | # Without parentheses
|
||||||
|
10 10 |
|
||||||
|
11 11 |
|
||||||
|
12 |-@pytest.mark.foo
|
||||||
|
12 |+@pytest.mark.foo()
|
||||||
|
13 13 | def test_something():
|
||||||
|
14 14 | pass
|
||||||
|
15 15 |
|
||||||
|
|
||||||
|
PT023.py:17:1: PT023 [*] Use `@pytest.mark.foo()` over `@pytest.mark.foo`
|
||||||
|
|
|
||||||
|
17 | @pytest.mark.foo
|
||||||
|
| ^^^^^^^^^^^^^^^^ PT023
|
||||||
|
18 | class TestClass:
|
||||||
|
19 | def test_something():
|
||||||
|
|
|
||||||
|
= help: Add/remove parentheses
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
14 14 | pass
|
||||||
|
15 15 |
|
||||||
|
16 16 |
|
||||||
|
17 |-@pytest.mark.foo
|
||||||
|
17 |+@pytest.mark.foo()
|
||||||
|
18 18 | class TestClass:
|
||||||
|
19 19 | def test_something():
|
||||||
|
20 20 | pass
|
||||||
|
|
||||||
|
PT023.py:24:5: PT023 [*] Use `@pytest.mark.foo()` over `@pytest.mark.foo`
|
||||||
|
|
|
||||||
|
23 | class TestClass:
|
||||||
|
24 | @pytest.mark.foo
|
||||||
|
| ^^^^^^^^^^^^^^^^ PT023
|
||||||
|
25 | def test_something():
|
||||||
|
26 | pass
|
||||||
|
|
|
||||||
|
= help: Add/remove parentheses
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
21 21 |
|
||||||
|
22 22 |
|
||||||
|
23 23 | class TestClass:
|
||||||
|
24 |- @pytest.mark.foo
|
||||||
|
24 |+ @pytest.mark.foo()
|
||||||
|
25 25 | def test_something():
|
||||||
|
26 26 | pass
|
||||||
|
27 27 |
|
||||||
|
|
||||||
|
PT023.py:30:5: PT023 [*] Use `@pytest.mark.foo()` over `@pytest.mark.foo`
|
||||||
|
|
|
||||||
|
29 | class TestClass:
|
||||||
|
30 | @pytest.mark.foo
|
||||||
|
| ^^^^^^^^^^^^^^^^ PT023
|
||||||
|
31 | class TestNestedClass:
|
||||||
|
32 | def test_something():
|
||||||
|
|
|
||||||
|
= help: Add/remove parentheses
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
27 27 |
|
||||||
|
28 28 |
|
||||||
|
29 29 | class TestClass:
|
||||||
|
30 |- @pytest.mark.foo
|
||||||
|
30 |+ @pytest.mark.foo()
|
||||||
|
31 31 | class TestNestedClass:
|
||||||
|
32 32 | def test_something():
|
||||||
|
33 33 | pass
|
||||||
|
|
||||||
|
PT023.py:38:9: PT023 [*] Use `@pytest.mark.foo()` over `@pytest.mark.foo`
|
||||||
|
|
|
||||||
|
36 | class TestClass:
|
||||||
|
37 | class TestNestedClass:
|
||||||
|
38 | @pytest.mark.foo
|
||||||
|
| ^^^^^^^^^^^^^^^^ PT023
|
||||||
|
39 | def test_something():
|
||||||
|
40 | pass
|
||||||
|
|
|
||||||
|
= help: Add/remove parentheses
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
35 35 |
|
||||||
|
36 36 | class TestClass:
|
||||||
|
37 37 | class TestNestedClass:
|
||||||
|
38 |- @pytest.mark.foo
|
||||||
|
38 |+ @pytest.mark.foo()
|
||||||
|
39 39 | def test_something():
|
||||||
|
40 40 | pass
|
||||||
|
41 41 |
|
|
@ -23,7 +23,7 @@ use ruff_linter::line_width::{IndentWidth, LineLength};
|
||||||
use ruff_linter::registry::RuleNamespace;
|
use ruff_linter::registry::RuleNamespace;
|
||||||
use ruff_linter::registry::{Rule, RuleSet, INCOMPATIBLE_CODES};
|
use ruff_linter::registry::{Rule, RuleSet, INCOMPATIBLE_CODES};
|
||||||
use ruff_linter::rule_selector::{PreviewOptions, Specificity};
|
use ruff_linter::rule_selector::{PreviewOptions, Specificity};
|
||||||
use ruff_linter::rules::{flake8_pytest_style, pycodestyle};
|
use ruff_linter::rules::pycodestyle;
|
||||||
use ruff_linter::settings::fix_safety_table::FixSafetyTable;
|
use ruff_linter::settings::fix_safety_table::FixSafetyTable;
|
||||||
use ruff_linter::settings::rule_table::RuleTable;
|
use ruff_linter::settings::rule_table::RuleTable;
|
||||||
use ruff_linter::settings::types::{
|
use ruff_linter::settings::types::{
|
||||||
|
@ -337,9 +337,7 @@ impl Configuration {
|
||||||
Flake8PytestStyleOptions::try_into_settings(options, lint_preview)
|
Flake8PytestStyleOptions::try_into_settings(options, lint_preview)
|
||||||
})
|
})
|
||||||
.transpose()?
|
.transpose()?
|
||||||
.unwrap_or_else(|| {
|
.unwrap_or_default(),
|
||||||
flake8_pytest_style::settings::Settings::resolve_default(lint_preview)
|
|
||||||
}),
|
|
||||||
flake8_quotes: lint
|
flake8_quotes: lint
|
||||||
.flake8_quotes
|
.flake8_quotes
|
||||||
.map(Flake8QuotesOptions::into_settings)
|
.map(Flake8QuotesOptions::into_settings)
|
||||||
|
|
|
@ -1390,11 +1390,8 @@ pub struct Flake8PytestStyleOptions {
|
||||||
/// default), `@pytest.fixture()` is valid and `@pytest.fixture` is
|
/// default), `@pytest.fixture()` is valid and `@pytest.fixture` is
|
||||||
/// invalid. If set to `false`, `@pytest.fixture` is valid and
|
/// invalid. If set to `false`, `@pytest.fixture` is valid and
|
||||||
/// `@pytest.fixture()` is invalid.
|
/// `@pytest.fixture()` is invalid.
|
||||||
///
|
|
||||||
/// If [preview](https://docs.astral.sh/ruff/preview/) is enabled, defaults to
|
|
||||||
/// `false`.
|
|
||||||
#[option(
|
#[option(
|
||||||
default = "true",
|
default = "false",
|
||||||
value_type = "bool",
|
value_type = "bool",
|
||||||
example = "fixture-parentheses = true"
|
example = "fixture-parentheses = true"
|
||||||
)]
|
)]
|
||||||
|
@ -1476,11 +1473,8 @@ pub struct Flake8PytestStyleOptions {
|
||||||
/// default), `@pytest.mark.foo()` is valid and `@pytest.mark.foo` is
|
/// default), `@pytest.mark.foo()` is valid and `@pytest.mark.foo` is
|
||||||
/// invalid. If set to `false`, `@pytest.mark.foo` is valid and
|
/// invalid. If set to `false`, `@pytest.mark.foo` is valid and
|
||||||
/// `@pytest.mark.foo()` is invalid.
|
/// `@pytest.mark.foo()` is invalid.
|
||||||
///
|
|
||||||
/// If [preview](https://docs.astral.sh/ruff/preview/) is enabled, defaults to
|
|
||||||
/// `false`.
|
|
||||||
#[option(
|
#[option(
|
||||||
default = "true",
|
default = "false",
|
||||||
value_type = "bool",
|
value_type = "bool",
|
||||||
example = "mark-parentheses = true"
|
example = "mark-parentheses = true"
|
||||||
)]
|
)]
|
||||||
|
|
4
ruff.schema.json
generated
4
ruff.schema.json
generated
|
@ -1103,14 +1103,14 @@
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"fixture-parentheses": {
|
"fixture-parentheses": {
|
||||||
"description": "Boolean flag specifying whether `@pytest.fixture()` without parameters should have parentheses. If the option is set to `true` (the default), `@pytest.fixture()` is valid and `@pytest.fixture` is invalid. If set to `false`, `@pytest.fixture` is valid and `@pytest.fixture()` is invalid.\n\nIf [preview](https://docs.astral.sh/ruff/preview/) is enabled, defaults to `false`.",
|
"description": "Boolean flag specifying whether `@pytest.fixture()` without parameters should have parentheses. If the option is set to `true` (the default), `@pytest.fixture()` is valid and `@pytest.fixture` is invalid. If set to `false`, `@pytest.fixture` is valid and `@pytest.fixture()` is invalid.",
|
||||||
"type": [
|
"type": [
|
||||||
"boolean",
|
"boolean",
|
||||||
"null"
|
"null"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"mark-parentheses": {
|
"mark-parentheses": {
|
||||||
"description": "Boolean flag specifying whether `@pytest.mark.foo()` without parameters should have parentheses. If the option is set to `true` (the default), `@pytest.mark.foo()` is valid and `@pytest.mark.foo` is invalid. If set to `false`, `@pytest.mark.foo` is valid and `@pytest.mark.foo()` is invalid.\n\nIf [preview](https://docs.astral.sh/ruff/preview/) is enabled, defaults to `false`.",
|
"description": "Boolean flag specifying whether `@pytest.mark.foo()` without parameters should have parentheses. If the option is set to `true` (the default), `@pytest.mark.foo()` is valid and `@pytest.mark.foo` is invalid. If set to `false`, `@pytest.mark.foo` is valid and `@pytest.mark.foo()` is invalid.",
|
||||||
"type": [
|
"type": [
|
||||||
"boolean",
|
"boolean",
|
||||||
"null"
|
"null"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue