mirror of
https://github.com/astral-sh/ruff.git
synced 2025-11-03 13:14:34 +00:00
Make D410/D411 autofixes mutually exclusive (#4110)
This commit is contained in:
parent
ee6d8f7467
commit
b34804ceb5
1 changed files with 45 additions and 29 deletions
|
|
@ -580,7 +580,12 @@ fn blanks_and_section_underline(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn common_section(checker: &mut Checker, docstring: &Docstring, context: &SectionContext) {
|
fn common_section(
|
||||||
|
checker: &mut Checker,
|
||||||
|
docstring: &Docstring,
|
||||||
|
context: &SectionContext,
|
||||||
|
next: Option<&SectionContext>,
|
||||||
|
) {
|
||||||
if checker.settings.rules.enabled(Rule::CapitalizeSectionName) {
|
if checker.settings.rules.enabled(Rule::CapitalizeSectionName) {
|
||||||
let capitalized_section_name = context.kind().as_str();
|
let capitalized_section_name = context.kind().as_str();
|
||||||
if context.section_name() != capitalized_section_name {
|
if context.section_name() != capitalized_section_name {
|
||||||
|
|
@ -626,7 +631,25 @@ fn common_section(checker: &mut Checker, docstring: &Docstring, context: &Sectio
|
||||||
let line_end = checker.stylist.line_ending().as_str();
|
let line_end = checker.stylist.line_ending().as_str();
|
||||||
let last_line = context.following_lines().last();
|
let last_line = context.following_lines().last();
|
||||||
if last_line.map_or(true, |line| !line.trim().is_empty()) {
|
if last_line.map_or(true, |line| !line.trim().is_empty()) {
|
||||||
if context.is_last() {
|
if let Some(next) = next {
|
||||||
|
if checker
|
||||||
|
.settings
|
||||||
|
.rules
|
||||||
|
.enabled(Rule::NoBlankLineAfterSection)
|
||||||
|
{
|
||||||
|
let mut diagnostic = Diagnostic::new(
|
||||||
|
NoBlankLineAfterSection {
|
||||||
|
name: context.section_name().to_string(),
|
||||||
|
},
|
||||||
|
docstring.range(),
|
||||||
|
);
|
||||||
|
if checker.patch(diagnostic.kind.rule()) {
|
||||||
|
// Add a newline at the beginning of the next section.
|
||||||
|
diagnostic.set_fix(Edit::insertion(line_end.to_string(), next.range().start()));
|
||||||
|
}
|
||||||
|
checker.diagnostics.push(diagnostic);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if checker
|
if checker
|
||||||
.settings
|
.settings
|
||||||
.rules
|
.rules
|
||||||
|
|
@ -647,25 +670,6 @@ fn common_section(checker: &mut Checker, docstring: &Docstring, context: &Sectio
|
||||||
}
|
}
|
||||||
checker.diagnostics.push(diagnostic);
|
checker.diagnostics.push(diagnostic);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if checker
|
|
||||||
.settings
|
|
||||||
.rules
|
|
||||||
.enabled(Rule::NoBlankLineAfterSection)
|
|
||||||
{
|
|
||||||
let mut diagnostic = Diagnostic::new(
|
|
||||||
NoBlankLineAfterSection {
|
|
||||||
name: context.section_name().to_string(),
|
|
||||||
},
|
|
||||||
docstring.range(),
|
|
||||||
);
|
|
||||||
if checker.patch(diagnostic.kind.rule()) {
|
|
||||||
// Add a newline after the section.
|
|
||||||
diagnostic
|
|
||||||
.set_fix(Edit::insertion(line_end.to_string(), context.range().end()));
|
|
||||||
}
|
|
||||||
checker.diagnostics.push(diagnostic);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -861,8 +865,13 @@ fn parameters_section(checker: &mut Checker, docstring: &Docstring, context: &Se
|
||||||
missing_args(checker, docstring, &docstring_args);
|
missing_args(checker, docstring, &docstring_args);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn numpy_section(checker: &mut Checker, docstring: &Docstring, context: &SectionContext) {
|
fn numpy_section(
|
||||||
common_section(checker, docstring, context);
|
checker: &mut Checker,
|
||||||
|
docstring: &Docstring,
|
||||||
|
context: &SectionContext,
|
||||||
|
next: Option<&SectionContext>,
|
||||||
|
) {
|
||||||
|
common_section(checker, docstring, context, next);
|
||||||
|
|
||||||
if checker
|
if checker
|
||||||
.settings
|
.settings
|
||||||
|
|
@ -897,8 +906,13 @@ fn numpy_section(checker: &mut Checker, docstring: &Docstring, context: &Section
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn google_section(checker: &mut Checker, docstring: &Docstring, context: &SectionContext) {
|
fn google_section(
|
||||||
common_section(checker, docstring, context);
|
checker: &mut Checker,
|
||||||
|
docstring: &Docstring,
|
||||||
|
context: &SectionContext,
|
||||||
|
next: Option<&SectionContext>,
|
||||||
|
) {
|
||||||
|
common_section(checker, docstring, context, next);
|
||||||
|
|
||||||
if checker.settings.rules.enabled(Rule::SectionNameEndsInColon) {
|
if checker.settings.rules.enabled(Rule::SectionNameEndsInColon) {
|
||||||
let suffix = context.summary_after_section_name();
|
let suffix = context.summary_after_section_name();
|
||||||
|
|
@ -927,8 +941,9 @@ fn parse_numpy_sections(
|
||||||
docstring: &Docstring,
|
docstring: &Docstring,
|
||||||
section_contexts: &SectionContexts,
|
section_contexts: &SectionContexts,
|
||||||
) {
|
) {
|
||||||
for section_context in section_contexts {
|
let mut iterator = section_contexts.iter().peekable();
|
||||||
numpy_section(checker, docstring, §ion_context);
|
while let Some(context) = iterator.next() {
|
||||||
|
numpy_section(checker, docstring, &context, iterator.peek());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -937,8 +952,9 @@ fn parse_google_sections(
|
||||||
docstring: &Docstring,
|
docstring: &Docstring,
|
||||||
section_contexts: &SectionContexts,
|
section_contexts: &SectionContexts,
|
||||||
) {
|
) {
|
||||||
for section_context in section_contexts {
|
let mut iterator = section_contexts.iter().peekable();
|
||||||
google_section(checker, docstring, §ion_context);
|
while let Some(context) = iterator.next() {
|
||||||
|
google_section(checker, docstring, &context, iterator.peek());
|
||||||
}
|
}
|
||||||
|
|
||||||
if checker.settings.rules.enabled(Rule::UndocumentedParam) {
|
if checker.settings.rules.enabled(Rule::UndocumentedParam) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue