Move flake8-quotes violations to rules module (#2475)

This commit is contained in:
Aarni Koskela 2023-02-02 17:08:12 +02:00 committed by GitHub
parent ebfa55cea3
commit 038e8cfba0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 100 additions and 102 deletions

View file

@ -170,10 +170,10 @@ ruff_macros::define_rule_mapping!(
T201 => violations::PrintFound,
T203 => violations::PPrintFound,
// flake8-quotes
Q000 => violations::BadQuotesInlineString,
Q001 => violations::BadQuotesMultilineString,
Q002 => violations::BadQuotesDocstring,
Q003 => violations::AvoidQuoteEscape,
Q000 => rules::flake8_quotes::rules::BadQuotesInlineString,
Q001 => rules::flake8_quotes::rules::BadQuotesMultilineString,
Q002 => rules::flake8_quotes::rules::BadQuotesDocstring,
Q003 => rules::flake8_quotes::rules::AvoidQuoteEscape,
// flake8-annotations
ANN001 => violations::MissingTypeFunctionArgument,
ANN002 => violations::MissingTypeArgs,

View file

@ -1,15 +1,102 @@
use rustpython_ast::Location;
use rustpython_parser::lexer::{LexResult, Tok};
use super::settings::Quote;
use crate::ast::types::Range;
use crate::define_violation;
use crate::fix::Fix;
use crate::lex::docstring_detection::StateMachine;
use crate::registry::{Diagnostic, Rule};
use crate::settings::{flags, Settings};
use crate::source_code::Locator;
use crate::violations;
use crate::violation::AlwaysAutofixableViolation;
use super::settings::Quote;
use ruff_macros::derive_message_formats;
use rustpython_ast::Location;
use rustpython_parser::lexer::{LexResult, Tok};
define_violation!(
pub struct BadQuotesInlineString {
pub quote: Quote,
}
);
impl AlwaysAutofixableViolation for BadQuotesInlineString {
#[derive_message_formats]
fn message(&self) -> String {
let BadQuotesInlineString { quote } = self;
match quote {
Quote::Single => format!("Double quotes found but single quotes preferred"),
Quote::Double => format!("Single quotes found but double quotes preferred"),
}
}
fn autofix_title(&self) -> String {
let BadQuotesInlineString { quote } = self;
match quote {
Quote::Single => "Replace double quotes with single quotes".to_string(),
Quote::Double => "Replace single quotes with double quotes".to_string(),
}
}
}
define_violation!(
pub struct BadQuotesMultilineString {
pub quote: Quote,
}
);
impl AlwaysAutofixableViolation for BadQuotesMultilineString {
#[derive_message_formats]
fn message(&self) -> String {
let BadQuotesMultilineString { quote } = self;
match quote {
Quote::Single => format!("Double quote multiline found but single quotes preferred"),
Quote::Double => format!("Single quote multiline found but double quotes preferred"),
}
}
fn autofix_title(&self) -> String {
let BadQuotesMultilineString { quote } = self;
match quote {
Quote::Single => "Replace double multiline quotes with single quotes".to_string(),
Quote::Double => "Replace single multiline quotes with double quotes".to_string(),
}
}
}
define_violation!(
pub struct BadQuotesDocstring {
pub quote: Quote,
}
);
impl AlwaysAutofixableViolation for BadQuotesDocstring {
#[derive_message_formats]
fn message(&self) -> String {
let BadQuotesDocstring { quote } = self;
match quote {
Quote::Single => format!("Double quote docstring found but single quotes preferred"),
Quote::Double => format!("Single quote docstring found but double quotes preferred"),
}
}
fn autofix_title(&self) -> String {
let BadQuotesDocstring { quote } = self;
match quote {
Quote::Single => "Replace double quotes docstring with single quotes".to_string(),
Quote::Double => "Replace single quotes docstring with double quotes".to_string(),
}
}
}
define_violation!(
pub struct AvoidQuoteEscape;
);
impl AlwaysAutofixableViolation for AvoidQuoteEscape {
#[derive_message_formats]
fn message(&self) -> String {
format!("Change outer quotes to avoid escaping inner quotes")
}
fn autofix_title(&self) -> String {
"Change outer quotes to avoid escaping inner quotes".to_string()
}
}
fn good_single(quote: &Quote) -> char {
match quote {
@ -102,7 +189,7 @@ fn docstring(
}
let mut diagnostic = Diagnostic::new(
violations::BadQuotesDocstring {
BadQuotesDocstring {
quote: quotes_settings.docstring_quotes.clone(),
},
Range::new(start, end),
@ -178,7 +265,7 @@ fn strings(
}
let mut diagnostic = Diagnostic::new(
violations::BadQuotesMultilineString {
BadQuotesMultilineString {
quote: quotes_settings.multiline_quotes.clone(),
},
Range::new(*start, *end),
@ -215,7 +302,7 @@ fn strings(
&& !string_contents.contains(bad_single(&quotes_settings.inline_quotes))
{
let mut diagnostic =
Diagnostic::new(violations::AvoidQuoteEscape, Range::new(*start, *end));
Diagnostic::new(AvoidQuoteEscape, Range::new(*start, *end));
if matches!(autofix, flags::Autofix::Enabled)
&& settings.rules.should_fix(&Rule::AvoidQuoteEscape)
{
@ -272,7 +359,7 @@ fn strings(
// If we're not using the preferred type, only allow use to avoid escapes.
if !relax_quote {
let mut diagnostic = Diagnostic::new(
violations::BadQuotesInlineString {
BadQuotesInlineString {
quote: quotes_settings.inline_quotes.clone(),
},
Range::new(*start, *end),

View file

@ -11,7 +11,6 @@ use crate::rules::flake8_debugger::types::DebuggerUsingType;
use crate::rules::flake8_pytest_style::types::{
ParametrizeNameType, ParametrizeValuesRowType, ParametrizeValuesType,
};
use crate::rules::flake8_quotes::settings::Quote;
use crate::rules::pyupgrade::types::Primitive;
use crate::violation::{AlwaysAutofixableViolation, AutofixKind, Availability, Violation};
@ -1181,94 +1180,6 @@ impl AlwaysAutofixableViolation for PPrintFound {
}
}
// flake8-quotes
define_violation!(
pub struct BadQuotesInlineString {
pub quote: Quote,
}
);
impl AlwaysAutofixableViolation for BadQuotesInlineString {
#[derive_message_formats]
fn message(&self) -> String {
let BadQuotesInlineString { quote } = self;
match quote {
Quote::Single => format!("Double quotes found but single quotes preferred"),
Quote::Double => format!("Single quotes found but double quotes preferred"),
}
}
fn autofix_title(&self) -> String {
let BadQuotesInlineString { quote } = self;
match quote {
Quote::Single => "Replace double quotes with single quotes".to_string(),
Quote::Double => "Replace single quotes with double quotes".to_string(),
}
}
}
define_violation!(
pub struct BadQuotesMultilineString {
pub quote: Quote,
}
);
impl AlwaysAutofixableViolation for BadQuotesMultilineString {
#[derive_message_formats]
fn message(&self) -> String {
let BadQuotesMultilineString { quote } = self;
match quote {
Quote::Single => format!("Double quote multiline found but single quotes preferred"),
Quote::Double => format!("Single quote multiline found but double quotes preferred"),
}
}
fn autofix_title(&self) -> String {
let BadQuotesMultilineString { quote } = self;
match quote {
Quote::Single => "Replace double multiline quotes with single quotes".to_string(),
Quote::Double => "Replace single multiline quotes with double quotes".to_string(),
}
}
}
define_violation!(
pub struct BadQuotesDocstring {
pub quote: Quote,
}
);
impl AlwaysAutofixableViolation for BadQuotesDocstring {
#[derive_message_formats]
fn message(&self) -> String {
let BadQuotesDocstring { quote } = self;
match quote {
Quote::Single => format!("Double quote docstring found but single quotes preferred"),
Quote::Double => format!("Single quote docstring found but double quotes preferred"),
}
}
fn autofix_title(&self) -> String {
let BadQuotesDocstring { quote } = self;
match quote {
Quote::Single => "Replace double quotes docstring with single quotes".to_string(),
Quote::Double => "Replace single quotes docstring with double quotes".to_string(),
}
}
}
define_violation!(
pub struct AvoidQuoteEscape;
);
impl AlwaysAutofixableViolation for AvoidQuoteEscape {
#[derive_message_formats]
fn message(&self) -> String {
format!("Change outer quotes to avoid escaping inner quotes")
}
fn autofix_title(&self) -> String {
"Change outer quotes to avoid escaping inner quotes".to_string()
}
}
// flake8-annotations
define_violation!(