mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-02 09:52:18 +00:00
Merge Availability and AutofixKind (#3629)
This commit is contained in:
parent
7c0f17279c
commit
fd39ec4bdd
26 changed files with 70 additions and 72 deletions
|
@ -22,7 +22,7 @@ use rustc_hash::FxHashMap;
|
||||||
use rustpython_parser::ast::{Expr, ExprKind, Stmt};
|
use rustpython_parser::ast::{Expr, ExprKind, Stmt};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::types::{Range, RefEquality};
|
use ruff_python_ast::types::{Range, RefEquality};
|
||||||
use ruff_python_ast::visitor::Visitor;
|
use ruff_python_ast::visitor::Visitor;
|
||||||
|
@ -52,7 +52,7 @@ pub struct UnusedLoopControlVariable {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for UnusedLoopControlVariable {
|
impl Violation for UnusedLoopControlVariable {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -2,7 +2,7 @@ use log::error;
|
||||||
use rustpython_parser::ast::{Expr, ExprKind};
|
use rustpython_parser::ast::{Expr, ExprKind};
|
||||||
|
|
||||||
use ruff_diagnostics::Diagnostic;
|
use ruff_diagnostics::Diagnostic;
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Violation};
|
use ruff_diagnostics::{AutofixKind, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::types::Range;
|
use ruff_python_ast::types::Range;
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ pub struct UnnecessaryMap {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for UnnecessaryMap {
|
impl Violation for UnnecessaryMap {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -10,7 +10,7 @@ use rustpython_parser::ast::{
|
||||||
Unaryop,
|
Unaryop,
|
||||||
};
|
};
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::helpers::{has_comments_in, unparse_stmt};
|
use ruff_python_ast::helpers::{has_comments_in, unparse_stmt};
|
||||||
use ruff_python_ast::source_code::{Locator, Stylist};
|
use ruff_python_ast::source_code::{Locator, Stylist};
|
||||||
|
@ -59,7 +59,7 @@ pub struct PytestCompositeAssertion {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for PytestCompositeAssertion {
|
impl Violation for PytestCompositeAssertion {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
@ -104,7 +104,7 @@ pub struct PytestUnittestAssertion {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for PytestUnittestAssertion {
|
impl Violation for PytestUnittestAssertion {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -2,7 +2,7 @@ use log::error;
|
||||||
use rustc_hash::FxHashSet;
|
use rustc_hash::FxHashSet;
|
||||||
use rustpython_parser::ast::{Cmpop, Constant, Expr, ExprContext, ExprKind, Stmt, StmtKind};
|
use rustpython_parser::ast::{Cmpop, Constant, Expr, ExprContext, ExprKind, Stmt, StmtKind};
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::comparable::{ComparableConstant, ComparableExpr, ComparableStmt};
|
use ruff_python_ast::comparable::{ComparableConstant, ComparableExpr, ComparableStmt};
|
||||||
use ruff_python_ast::helpers::{
|
use ruff_python_ast::helpers::{
|
||||||
|
@ -40,7 +40,7 @@ pub struct CollapsibleIf {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for CollapsibleIf {
|
impl Violation for CollapsibleIf {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
@ -60,7 +60,7 @@ pub struct NeedlessBool {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for NeedlessBool {
|
impl Violation for NeedlessBool {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
@ -112,7 +112,7 @@ pub struct IfElseBlockInsteadOfIfExp {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for IfElseBlockInsteadOfIfExp {
|
impl Violation for IfElseBlockInsteadOfIfExp {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
@ -165,7 +165,7 @@ pub struct IfElseBlockInsteadOfDictGet {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for IfElseBlockInsteadOfDictGet {
|
impl Violation for IfElseBlockInsteadOfDictGet {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -2,7 +2,7 @@ use log::error;
|
||||||
use rustpython_parser::ast::{Located, Stmt, StmtKind, Withitem};
|
use rustpython_parser::ast::{Located, Stmt, StmtKind, Withitem};
|
||||||
|
|
||||||
use ruff_diagnostics::Diagnostic;
|
use ruff_diagnostics::Diagnostic;
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Violation};
|
use ruff_diagnostics::{AutofixKind, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::helpers::{first_colon_range, has_comments_in};
|
use ruff_python_ast::helpers::{first_colon_range, has_comments_in};
|
||||||
use ruff_python_ast::newlines::StrExt;
|
use ruff_python_ast::newlines::StrExt;
|
||||||
|
@ -46,7 +46,7 @@ pub struct MultipleWithStatements {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for MultipleWithStatements {
|
impl Violation for MultipleWithStatements {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -2,7 +2,7 @@ use anyhow::Result;
|
||||||
use libcst_native::{Codegen, CodegenState, CompOp};
|
use libcst_native::{Codegen, CodegenState, CompOp};
|
||||||
use rustpython_parser::ast::{Cmpop, Expr, ExprKind, Unaryop};
|
use rustpython_parser::ast::{Cmpop, Expr, ExprKind, Unaryop};
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::source_code::{Locator, Stylist};
|
use ruff_python_ast::source_code::{Locator, Stylist};
|
||||||
use ruff_python_ast::types::Range;
|
use ruff_python_ast::types::Range;
|
||||||
|
@ -18,7 +18,7 @@ pub struct YodaConditions {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for YodaConditions {
|
impl Violation for YodaConditions {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -2,7 +2,7 @@ use rustpython_parser::ast::{Stmt, StmtKind};
|
||||||
use schemars::JsonSchema;
|
use schemars::JsonSchema;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation, CacheKey};
|
use ruff_macros::{derive_message_formats, violation, CacheKey};
|
||||||
use ruff_python_ast::helpers::{create_stmt, from_relative_import, unparse_stmt};
|
use ruff_python_ast::helpers::{create_stmt, from_relative_import, unparse_stmt};
|
||||||
use ruff_python_ast::source_code::Stylist;
|
use ruff_python_ast::source_code::Stylist;
|
||||||
|
@ -64,7 +64,7 @@ pub struct RelativeImports {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for RelativeImports {
|
impl Violation for RelativeImports {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use rustpython_parser::ast::{Arguments, Expr, ExprKind, Location, Stmt, StmtKind};
|
use rustpython_parser::ast::{Arguments, Expr, ExprKind, Location, Stmt, StmtKind};
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::helpers::{match_leading_content, match_trailing_content, unparse_stmt};
|
use ruff_python_ast::helpers::{match_leading_content, match_trailing_content, unparse_stmt};
|
||||||
use ruff_python_ast::newlines::StrExt;
|
use ruff_python_ast::newlines::StrExt;
|
||||||
|
@ -43,7 +43,7 @@ pub struct LambdaAssignment {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for LambdaAssignment {
|
impl Violation for LambdaAssignment {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::newlines::StrExt;
|
use ruff_python_ast::newlines::StrExt;
|
||||||
use ruff_python_ast::types::Range;
|
use ruff_python_ast::types::Range;
|
||||||
|
@ -17,7 +17,7 @@ fn fmt_blank_line_after_summary_autofix_msg(_: &BlankLineAfterSummary) -> String
|
||||||
"Insert single blank line".to_string()
|
"Insert single blank line".to_string()
|
||||||
}
|
}
|
||||||
impl Violation for BlankLineAfterSummary {
|
impl Violation for BlankLineAfterSummary {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -2,7 +2,7 @@ use itertools::Itertools;
|
||||||
use rustpython_parser::ast::Alias;
|
use rustpython_parser::ast::Alias;
|
||||||
|
|
||||||
use ruff_diagnostics::Diagnostic;
|
use ruff_diagnostics::Diagnostic;
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Violation};
|
use ruff_diagnostics::{AutofixKind, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::types::Range;
|
use ruff_python_ast::types::Range;
|
||||||
use ruff_python_stdlib::future::ALL_FEATURE_NAMES;
|
use ruff_python_stdlib::future::ALL_FEATURE_NAMES;
|
||||||
|
@ -25,7 +25,7 @@ fn fmt_unused_import_autofix_msg(unused_import: &UnusedImport) -> String {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl Violation for UnusedImport {
|
impl Violation for UnusedImport {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -3,7 +3,7 @@ use std::hash::{BuildHasherDefault, Hash};
|
||||||
use rustc_hash::{FxHashMap, FxHashSet};
|
use rustc_hash::{FxHashMap, FxHashSet};
|
||||||
use rustpython_parser::ast::{Expr, ExprKind};
|
use rustpython_parser::ast::{Expr, ExprKind};
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::comparable::{ComparableConstant, ComparableExpr};
|
use ruff_python_ast::comparable::{ComparableConstant, ComparableExpr};
|
||||||
use ruff_python_ast::helpers::unparse_expr;
|
use ruff_python_ast::helpers::unparse_expr;
|
||||||
|
@ -19,7 +19,7 @@ pub struct MultiValueRepeatedKeyLiteral {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for MultiValueRepeatedKeyLiteral {
|
impl Violation for MultiValueRepeatedKeyLiteral {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
@ -45,7 +45,7 @@ pub struct MultiValueRepeatedKeyVariable {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for MultiValueRepeatedKeyVariable {
|
impl Violation for MultiValueRepeatedKeyVariable {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use rustpython_parser::ast::{Alias, AliasData, Located, Stmt, StmtKind};
|
use rustpython_parser::ast::{Alias, AliasData, Located, Stmt, StmtKind};
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::helpers::{create_stmt, unparse_stmt};
|
use ruff_python_ast::helpers::{create_stmt, unparse_stmt};
|
||||||
use ruff_python_ast::types::Range;
|
use ruff_python_ast::types::Range;
|
||||||
|
@ -16,7 +16,7 @@ pub struct ManualFromImport {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for ManualFromImport {
|
impl Violation for ManualFromImport {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use rustpython_parser::ast::{Expr, ExprKind};
|
use rustpython_parser::ast::{Expr, ExprKind};
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::scope::BindingKind;
|
use ruff_python_ast::scope::BindingKind;
|
||||||
use ruff_python_ast::types::Range;
|
use ruff_python_ast::types::Range;
|
||||||
|
@ -14,7 +14,7 @@ pub struct SysExitAlias {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for SysExitAlias {
|
impl Violation for SysExitAlias {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -2,7 +2,7 @@ use anyhow::{bail, Result};
|
||||||
use log::debug;
|
use log::debug;
|
||||||
use rustpython_parser::ast::{Constant, Expr, ExprContext, ExprKind, Keyword, Stmt, StmtKind};
|
use rustpython_parser::ast::{Constant, Expr, ExprContext, ExprKind, Keyword, Stmt, StmtKind};
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::helpers::{create_expr, create_stmt, unparse_stmt};
|
use ruff_python_ast::helpers::{create_expr, create_stmt, unparse_stmt};
|
||||||
use ruff_python_ast::source_code::Stylist;
|
use ruff_python_ast::source_code::Stylist;
|
||||||
|
@ -20,7 +20,7 @@ pub struct ConvertNamedTupleFunctionalToClass {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for ConvertNamedTupleFunctionalToClass {
|
impl Violation for ConvertNamedTupleFunctionalToClass {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -2,7 +2,7 @@ use anyhow::{bail, Result};
|
||||||
use log::debug;
|
use log::debug;
|
||||||
use rustpython_parser::ast::{Constant, Expr, ExprContext, ExprKind, Keyword, Stmt, StmtKind};
|
use rustpython_parser::ast::{Constant, Expr, ExprContext, ExprKind, Keyword, Stmt, StmtKind};
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::helpers::{create_expr, create_stmt, unparse_stmt};
|
use ruff_python_ast::helpers::{create_expr, create_stmt, unparse_stmt};
|
||||||
use ruff_python_ast::source_code::Stylist;
|
use ruff_python_ast::source_code::Stylist;
|
||||||
|
@ -20,7 +20,7 @@ pub struct ConvertTypedDictFunctionalToClass {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for ConvertTypedDictFunctionalToClass {
|
impl Violation for ConvertTypedDictFunctionalToClass {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use rustpython_parser::ast::Expr;
|
use rustpython_parser::ast::Expr;
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::helpers::collect_call_path;
|
use ruff_python_ast::helpers::collect_call_path;
|
||||||
use ruff_python_ast::types::Range;
|
use ruff_python_ast::types::Range;
|
||||||
|
@ -14,7 +14,7 @@ pub struct DatetimeTimezoneUTC {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for DatetimeTimezoneUTC {
|
impl Violation for DatetimeTimezoneUTC {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use rustpython_parser::ast::{Alias, AliasData, Stmt};
|
use rustpython_parser::ast::{Alias, AliasData, Stmt};
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::source_code::{Locator, Stylist};
|
use ruff_python_ast::source_code::{Locator, Stylist};
|
||||||
use ruff_python_ast::types::Range;
|
use ruff_python_ast::types::Range;
|
||||||
|
@ -42,7 +42,7 @@ pub struct DeprecatedImport {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for DeprecatedImport {
|
impl Violation for DeprecatedImport {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use rustpython_parser::ast::Expr;
|
use rustpython_parser::ast::Expr;
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::types::Range;
|
use ruff_python_ast::types::Range;
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ pub struct NonPEP585Annotation {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for NonPEP585Annotation {
|
impl Violation for NonPEP585Annotation {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use rustpython_parser::ast::{Constant, Expr, ExprKind, Location, Operator};
|
use rustpython_parser::ast::{Constant, Expr, ExprKind, Location, Operator};
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::helpers::unparse_expr;
|
use ruff_python_ast::helpers::unparse_expr;
|
||||||
use ruff_python_ast::types::Range;
|
use ruff_python_ast::types::Range;
|
||||||
|
@ -14,7 +14,7 @@ pub struct NonPEP604Annotation {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for NonPEP604Annotation {
|
impl Violation for NonPEP604Annotation {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use rustpython_parser::ast::{Expr, ExprContext, ExprKind, Operator};
|
use rustpython_parser::ast::{Expr, ExprContext, ExprKind, Operator};
|
||||||
|
|
||||||
use ruff_diagnostics::{AutofixKind, Availability, Diagnostic, Fix, Violation};
|
use ruff_diagnostics::{AutofixKind, Diagnostic, Fix, Violation};
|
||||||
use ruff_macros::{derive_message_formats, violation};
|
use ruff_macros::{derive_message_formats, violation};
|
||||||
use ruff_python_ast::helpers::{create_expr, has_comments, unparse_expr};
|
use ruff_python_ast::helpers::{create_expr, has_comments, unparse_expr};
|
||||||
use ruff_python_ast::types::Range;
|
use ruff_python_ast::types::Range;
|
||||||
|
@ -15,7 +15,7 @@ pub struct CollectionLiteralConcatenation {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Violation for CollectionLiteralConcatenation {
|
impl Violation for CollectionLiteralConcatenation {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Sometimes));
|
const AUTOFIX: AutofixKind = AutofixKind::Sometimes;
|
||||||
|
|
||||||
#[derive_message_formats]
|
#[derive_message_formats]
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
|
|
|
@ -4,7 +4,7 @@ use anyhow::Result;
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
|
|
||||||
use ruff::registry::{Linter, Rule, RuleNamespace};
|
use ruff::registry::{Linter, Rule, RuleNamespace};
|
||||||
use ruff_diagnostics::Availability;
|
use ruff_diagnostics::AutofixKind;
|
||||||
|
|
||||||
use crate::args::HelpFormat;
|
use crate::args::HelpFormat;
|
||||||
|
|
||||||
|
@ -32,11 +32,9 @@ pub fn rule(rule: Rule, format: HelpFormat) -> Result<()> {
|
||||||
output.push('\n');
|
output.push('\n');
|
||||||
output.push('\n');
|
output.push('\n');
|
||||||
|
|
||||||
if let Some(autofix) = rule.autofixable() {
|
let autofix = rule.autofixable();
|
||||||
output.push_str(match autofix.available {
|
if matches!(autofix, AutofixKind::Always | AutofixKind::Sometimes) {
|
||||||
Availability::Sometimes => "Autofix is sometimes available.",
|
output.push_str(&autofix.to_string());
|
||||||
Availability::Always => "Autofix is always available.",
|
|
||||||
});
|
|
||||||
output.push('\n');
|
output.push('\n');
|
||||||
output.push('\n');
|
output.push('\n');
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ use strum::IntoEnumIterator;
|
||||||
|
|
||||||
use ruff::registry::{Linter, Rule, RuleNamespace};
|
use ruff::registry::{Linter, Rule, RuleNamespace};
|
||||||
use ruff::settings::options::Options;
|
use ruff::settings::options::Options;
|
||||||
use ruff_diagnostics::Availability;
|
use ruff_diagnostics::AutofixKind;
|
||||||
|
|
||||||
use crate::ROOT_DIR;
|
use crate::ROOT_DIR;
|
||||||
|
|
||||||
|
@ -36,11 +36,9 @@ pub fn main(args: &Args) -> Result<()> {
|
||||||
output.push('\n');
|
output.push('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(autofix) = rule.autofixable() {
|
let autofix = rule.autofixable();
|
||||||
output.push_str(match autofix.available {
|
if matches!(autofix, AutofixKind::Always | AutofixKind::Sometimes) {
|
||||||
Availability::Sometimes => "Autofix is sometimes available.",
|
output.push_str(&autofix.to_string());
|
||||||
Availability::Always => "Autofix is always available.",
|
|
||||||
});
|
|
||||||
output.push('\n');
|
output.push('\n');
|
||||||
output.push('\n');
|
output.push('\n');
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use ruff::registry::{Linter, Rule, RuleNamespace, UpstreamCategory};
|
use ruff::registry::{Linter, Rule, RuleNamespace, UpstreamCategory};
|
||||||
|
use ruff_diagnostics::AutofixKind;
|
||||||
use strum::IntoEnumIterator;
|
use strum::IntoEnumIterator;
|
||||||
|
|
||||||
const FIX_SYMBOL: &str = "🛠";
|
const FIX_SYMBOL: &str = "🛠";
|
||||||
|
@ -13,8 +14,8 @@ fn generate_table(table_out: &mut String, rules: impl IntoIterator<Item = Rule>,
|
||||||
table_out.push('\n');
|
table_out.push('\n');
|
||||||
for rule in rules {
|
for rule in rules {
|
||||||
let fix_token = match rule.autofixable() {
|
let fix_token = match rule.autofixable() {
|
||||||
None => "",
|
AutofixKind::None => "",
|
||||||
Some(_) => FIX_SYMBOL,
|
AutofixKind::Always | AutofixKind::Sometimes => FIX_SYMBOL,
|
||||||
};
|
};
|
||||||
|
|
||||||
let rule_name = rule.as_ref();
|
let rule_name = rule.as_ref();
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
pub use diagnostic::{Diagnostic, DiagnosticKind};
|
pub use diagnostic::{Diagnostic, DiagnosticKind};
|
||||||
pub use fix::Fix;
|
pub use fix::Fix;
|
||||||
pub use violation::{AlwaysAutofixableViolation, AutofixKind, Availability, Violation};
|
pub use violation::{AlwaysAutofixableViolation, AutofixKind, Violation};
|
||||||
|
|
||||||
mod diagnostic;
|
mod diagnostic;
|
||||||
mod fix;
|
mod fix;
|
||||||
|
|
|
@ -1,24 +1,25 @@
|
||||||
use std::fmt::Debug;
|
use std::fmt::{Debug, Display};
|
||||||
|
|
||||||
pub enum Availability {
|
pub enum AutofixKind {
|
||||||
Sometimes,
|
Sometimes,
|
||||||
Always,
|
Always,
|
||||||
|
None,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct AutofixKind {
|
impl Display for AutofixKind {
|
||||||
pub available: Availability,
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
}
|
match self {
|
||||||
|
AutofixKind::Sometimes => write!(f, "Autofix is sometimes available."),
|
||||||
impl AutofixKind {
|
AutofixKind::Always => write!(f, "Autofix is always available."),
|
||||||
pub const fn new(available: Availability) -> Self {
|
AutofixKind::None => write!(f, "Autofix is not available."),
|
||||||
Self { available }
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait Violation: Debug + PartialEq + Eq {
|
pub trait Violation: Debug + PartialEq + Eq {
|
||||||
/// `None` in the case an autofix is never available or otherwise Some
|
/// `None` in the case an autofix is never available or otherwise Some
|
||||||
/// [`AutofixKind`] describing the available autofix.
|
/// [`AutofixKind`] describing the available autofix.
|
||||||
const AUTOFIX: Option<AutofixKind> = None;
|
const AUTOFIX: AutofixKind = AutofixKind::None;
|
||||||
|
|
||||||
/// The message used to describe the violation.
|
/// The message used to describe the violation.
|
||||||
fn message(&self) -> String;
|
fn message(&self) -> String;
|
||||||
|
@ -60,7 +61,7 @@ pub trait AlwaysAutofixableViolation: Debug + PartialEq + Eq {
|
||||||
|
|
||||||
/// A blanket implementation.
|
/// A blanket implementation.
|
||||||
impl<VA: AlwaysAutofixableViolation> Violation for VA {
|
impl<VA: AlwaysAutofixableViolation> Violation for VA {
|
||||||
const AUTOFIX: Option<AutofixKind> = Some(AutofixKind::new(Availability::Always));
|
const AUTOFIX: AutofixKind = AutofixKind::Always;
|
||||||
|
|
||||||
fn message(&self) -> String {
|
fn message(&self) -> String {
|
||||||
<Self as AlwaysAutofixableViolation>::message(self)
|
<Self as AlwaysAutofixableViolation>::message(self)
|
||||||
|
|
|
@ -58,7 +58,7 @@ pub fn register_rules(input: &Input) -> proc_macro2::TokenStream {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the autofix status of this rule.
|
/// Returns the autofix status of this rule.
|
||||||
pub const fn autofixable(&self) -> Option<ruff_diagnostics::AutofixKind> {
|
pub const fn autofixable(&self) -> ruff_diagnostics::AutofixKind {
|
||||||
match self { #rule_autofixable_match_arms }
|
match self { #rule_autofixable_match_arms }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue