From 3c03e2cb2eca7d784ed5c2fbfaf7676a29275f9d Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Mon, 13 Feb 2023 10:30:04 -0500 Subject: [PATCH] Rename flake8-django rules to match convention (#2861) --- README.md | 6 ++--- crates/ruff/src/checkers/ast.rs | 16 ++++++++----- crates/ruff/src/registry.rs | 6 ++--- crates/ruff/src/rules/flake8_django/mod.rs | 6 ++--- .../ruff/src/rules/flake8_django/rules/mod.rs | 16 +++++++------ ...der_str.rs => model_without_dunder_str.rs} | 8 +++---- ...r.rs => non_leading_receiver_decorator.rs} | 8 +++---- ...able.rs => nullable_model_string_field.rs} | 10 ++++---- ..._flake8_django__tests__DJ001_DJ001.py.snap | 24 +++++++++---------- ..._flake8_django__tests__DJ008_DJ008.py.snap | 6 ++--- ..._flake8_django__tests__DJ013_DJ013.py.snap | 4 ++-- ...der-str.md => model-without-dunder-str.md} | 2 +- ...r.md => non-leading-receiver-decorator.md} | 2 +- ...able.md => nullable-model-string-field.md} | 2 +- 14 files changed, 61 insertions(+), 55 deletions(-) rename crates/ruff/src/rules/flake8_django/rules/{model_dunder_str.rs => model_without_dunder_str.rs} (95%) rename crates/ruff/src/rules/flake8_django/rules/{receiver_decorator_checker.rs => non_leading_receiver_decorator.rs} (92%) rename crates/ruff/src/rules/flake8_django/rules/{model_string_field_nullable.rs => nullable_model_string_field.rs} (93%) rename docs/rules/{model-dunder-str.md => model-without-dunder-str.md} (95%) rename docs/rules/{receiver-decorator-checker.md => non-leading-receiver-decorator.md} (95%) rename docs/rules/{model-string-field-nullable.md => nullable-model-string-field.md} (95%) diff --git a/README.md b/README.md index ee22dfa702..3f7296a30b 100644 --- a/README.md +++ b/README.md @@ -1111,9 +1111,9 @@ For more, see [flake8-django](https://pypi.org/project/flake8-django/) on PyPI. | Code | Name | Message | Fix | | ---- | ---- | ------- | --- | -| DJ001 | [model-string-field-nullable](https://github.com/charliermarsh/ruff/blob/main/docs/rules/model-string-field-nullable.md) | Avoid using `null=True` on string-based fields such as {field_name} | | -| DJ008 | [model-dunder-str](https://github.com/charliermarsh/ruff/blob/main/docs/rules/model-dunder-str.md) | Model does not define `__str__` method | | -| DJ013 | [receiver-decorator-checker](https://github.com/charliermarsh/ruff/blob/main/docs/rules/receiver-decorator-checker.md) | `@receiver` decorator must be on top of all the other decorators | | +| DJ001 | [nullable-model-string-field](https://github.com/charliermarsh/ruff/blob/main/docs/rules/nullable-model-string-field.md) | Avoid using `null=True` on string-based fields such as {field_name} | | +| DJ008 | [model-without-dunder-str](https://github.com/charliermarsh/ruff/blob/main/docs/rules/model-without-dunder-str.md) | Model does not define `__str__` method | | +| DJ013 | [non-leading-receiver-decorator](https://github.com/charliermarsh/ruff/blob/main/docs/rules/non-leading-receiver-decorator.md) | `@receiver` decorator must be on top of all the other decorators | | ### flake8-errmsg (EM) diff --git a/crates/ruff/src/checkers/ast.rs b/crates/ruff/src/checkers/ast.rs index 9873444318..c2bf8dd1d7 100644 --- a/crates/ruff/src/checkers/ast.rs +++ b/crates/ruff/src/checkers/ast.rs @@ -465,9 +465,13 @@ where body, .. } => { - if self.settings.rules.enabled(&Rule::ReceiverDecoratorChecker) { + if self + .settings + .rules + .enabled(&Rule::NonLeadingReceiverDecorator) + { self.diagnostics - .extend(flake8_django::rules::receiver_decorator_checker( + .extend(flake8_django::rules::non_leading_receiver_decorator( decorator_list, |expr| self.resolve_call_path(expr), )); @@ -779,15 +783,15 @@ where decorator_list, body, } => { - if self.settings.rules.enabled(&Rule::ModelStringFieldNullable) { + if self.settings.rules.enabled(&Rule::NullableModelStringField) { self.diagnostics - .extend(flake8_django::rules::model_string_field_nullable( + .extend(flake8_django::rules::nullable_model_string_field( self, bases, body, )); } - if self.settings.rules.enabled(&Rule::ModelDunderStr) { + if self.settings.rules.enabled(&Rule::ModelWithoutDunderStr) { if let Some(diagnostic) = - flake8_django::rules::model_dunder_str(self, bases, body, stmt) + flake8_django::rules::model_without_dunder_str(self, bases, body, stmt) { self.diagnostics.push(diagnostic); } diff --git a/crates/ruff/src/registry.rs b/crates/ruff/src/registry.rs index 9f84f44152..9379d89c2a 100644 --- a/crates/ruff/src/registry.rs +++ b/crates/ruff/src/registry.rs @@ -557,9 +557,9 @@ ruff_macros::define_rule_mapping!( RUF005 => rules::ruff::rules::UnpackInsteadOfConcatenatingToCollectionLiteral, RUF100 => rules::ruff::rules::UnusedNOQA, // flake8-django - DJ001 => rules::flake8_django::rules::ModelStringFieldNullable, - DJ008 => rules::flake8_django::rules::ModelDunderStr, - DJ013 => rules::flake8_django::rules::ReceiverDecoratorChecker, + DJ001 => rules::flake8_django::rules::NullableModelStringField, + DJ008 => rules::flake8_django::rules::ModelWithoutDunderStr, + DJ013 => rules::flake8_django::rules::NonLeadingReceiverDecorator, ); #[derive(EnumIter, Debug, PartialEq, Eq, RuleNamespace)] diff --git a/crates/ruff/src/rules/flake8_django/mod.rs b/crates/ruff/src/rules/flake8_django/mod.rs index 203de41b22..a5138595ba 100644 --- a/crates/ruff/src/rules/flake8_django/mod.rs +++ b/crates/ruff/src/rules/flake8_django/mod.rs @@ -12,9 +12,9 @@ mod tests { use crate::test::test_path; use crate::{assert_yaml_snapshot, settings}; - #[test_case(Rule::ModelStringFieldNullable, Path::new("DJ001.py"); "DJ001")] - #[test_case(Rule::ModelDunderStr, Path::new("DJ008.py"); "DJ008")] - #[test_case(Rule::ReceiverDecoratorChecker, Path::new("DJ013.py"); "DJ013")] + #[test_case(Rule::NullableModelStringField, Path::new("DJ001.py"); "DJ001")] + #[test_case(Rule::ModelWithoutDunderStr, Path::new("DJ008.py"); "DJ008")] + #[test_case(Rule::NonLeadingReceiverDecorator, Path::new("DJ013.py"); "DJ013")] fn rules(rule_code: Rule, path: &Path) -> Result<()> { let snapshot = format!("{}_{}", rule_code.code(), path.to_string_lossy()); let diagnostics = test_path( diff --git a/crates/ruff/src/rules/flake8_django/rules/mod.rs b/crates/ruff/src/rules/flake8_django/rules/mod.rs index 5a95bcb1b7..239086dc1f 100644 --- a/crates/ruff/src/rules/flake8_django/rules/mod.rs +++ b/crates/ruff/src/rules/flake8_django/rules/mod.rs @@ -1,8 +1,10 @@ -mod helpers; -mod model_dunder_str; -mod model_string_field_nullable; -mod receiver_decorator_checker; +pub use model_without_dunder_str::{model_without_dunder_str, ModelWithoutDunderStr}; +pub use non_leading_receiver_decorator::{ + non_leading_receiver_decorator, NonLeadingReceiverDecorator, +}; +pub use nullable_model_string_field::{nullable_model_string_field, NullableModelStringField}; -pub use model_dunder_str::{model_dunder_str, ModelDunderStr}; -pub use model_string_field_nullable::{model_string_field_nullable, ModelStringFieldNullable}; -pub use receiver_decorator_checker::{receiver_decorator_checker, ReceiverDecoratorChecker}; +mod helpers; +mod model_without_dunder_str; +mod non_leading_receiver_decorator; +mod nullable_model_string_field; diff --git a/crates/ruff/src/rules/flake8_django/rules/model_dunder_str.rs b/crates/ruff/src/rules/flake8_django/rules/model_without_dunder_str.rs similarity index 95% rename from crates/ruff/src/rules/flake8_django/rules/model_dunder_str.rs rename to crates/ruff/src/rules/flake8_django/rules/model_without_dunder_str.rs index ab2a045d6e..165f668f8e 100644 --- a/crates/ruff/src/rules/flake8_django/rules/model_dunder_str.rs +++ b/crates/ruff/src/rules/flake8_django/rules/model_without_dunder_str.rs @@ -40,9 +40,9 @@ define_violation!( /// def __str__(self): /// return f"{self.field}" /// ``` - pub struct ModelDunderStr; + pub struct ModelWithoutDunderStr; ); -impl Violation for ModelDunderStr { +impl Violation for ModelWithoutDunderStr { #[derive_message_formats] fn message(&self) -> String { format!("Model does not define `__str__` method") @@ -50,7 +50,7 @@ impl Violation for ModelDunderStr { } /// DJ008 -pub fn model_dunder_str( +pub fn model_without_dunder_str( checker: &Checker, bases: &[Expr], body: &[Stmt], @@ -61,7 +61,7 @@ pub fn model_dunder_str( } if !has_dunder_method(body) { return Some(Diagnostic::new( - ModelDunderStr, + ModelWithoutDunderStr, Range::from_located(class_location), )); } diff --git a/crates/ruff/src/rules/flake8_django/rules/receiver_decorator_checker.rs b/crates/ruff/src/rules/flake8_django/rules/non_leading_receiver_decorator.rs similarity index 92% rename from crates/ruff/src/rules/flake8_django/rules/receiver_decorator_checker.rs rename to crates/ruff/src/rules/flake8_django/rules/non_leading_receiver_decorator.rs index 14a83e7f50..1c1831581c 100644 --- a/crates/ruff/src/rules/flake8_django/rules/receiver_decorator_checker.rs +++ b/crates/ruff/src/rules/flake8_django/rules/non_leading_receiver_decorator.rs @@ -38,9 +38,9 @@ define_violation!( /// def my_handler(sender, instance, created, **kwargs): /// pass /// ``` - pub struct ReceiverDecoratorChecker; + pub struct NonLeadingReceiverDecorator; ); -impl Violation for ReceiverDecoratorChecker { +impl Violation for NonLeadingReceiverDecorator { #[derive_message_formats] fn message(&self) -> String { format!("`@receiver` decorator must be on top of all the other decorators") @@ -48,7 +48,7 @@ impl Violation for ReceiverDecoratorChecker { } /// DJ013 -pub fn receiver_decorator_checker<'a, F>( +pub fn non_leading_receiver_decorator<'a, F>( decorator_list: &'a [Expr], resolve_call_path: F, ) -> Vec @@ -66,7 +66,7 @@ where }; if i > 0 && is_receiver && !seen_receiver { diagnostics.push(Diagnostic::new( - ReceiverDecoratorChecker, + NonLeadingReceiverDecorator, Range::from_located(decorator), )); } diff --git a/crates/ruff/src/rules/flake8_django/rules/model_string_field_nullable.rs b/crates/ruff/src/rules/flake8_django/rules/nullable_model_string_field.rs similarity index 93% rename from crates/ruff/src/rules/flake8_django/rules/model_string_field_nullable.rs rename to crates/ruff/src/rules/flake8_django/rules/nullable_model_string_field.rs index 91fd882c6c..1f65b5b8ff 100644 --- a/crates/ruff/src/rules/flake8_django/rules/model_string_field_nullable.rs +++ b/crates/ruff/src/rules/flake8_django/rules/nullable_model_string_field.rs @@ -36,14 +36,14 @@ define_violation!( /// class MyModel(models.Model): /// field = models.CharField(max_length=255, default="") /// ``` - pub struct ModelStringFieldNullable { + pub struct NullableModelStringField { pub field_name: String, } ); -impl Violation for ModelStringFieldNullable { +impl Violation for NullableModelStringField { #[derive_message_formats] fn message(&self) -> String { - let ModelStringFieldNullable { field_name } = self; + let NullableModelStringField { field_name } = self; format!("Avoid using `null=True` on string-based fields such as {field_name}") } } @@ -58,7 +58,7 @@ const NOT_NULL_TRUE_FIELDS: [&str; 6] = [ ]; /// DJ001 -pub fn model_string_field_nullable( +pub fn nullable_model_string_field( checker: &Checker, bases: &[Expr], body: &[Stmt], @@ -74,7 +74,7 @@ pub fn model_string_field_nullable( }; if let Some(field_name) = check_nullable_field(checker, value) { errors.push(Diagnostic::new( - ModelStringFieldNullable { + NullableModelStringField { field_name: field_name.to_string(), }, Range::from_located(value), diff --git a/crates/ruff/src/rules/flake8_django/snapshots/ruff__rules__flake8_django__tests__DJ001_DJ001.py.snap b/crates/ruff/src/rules/flake8_django/snapshots/ruff__rules__flake8_django__tests__DJ001_DJ001.py.snap index e1a05d01f3..156d4e7682 100644 --- a/crates/ruff/src/rules/flake8_django/snapshots/ruff__rules__flake8_django__tests__DJ001_DJ001.py.snap +++ b/crates/ruff/src/rules/flake8_django/snapshots/ruff__rules__flake8_django__tests__DJ001_DJ001.py.snap @@ -3,7 +3,7 @@ source: crates/ruff/src/rules/flake8_django/mod.rs expression: diagnostics --- - kind: - ModelStringFieldNullable: + NullableModelStringField: field_name: CharField location: row: 7 @@ -14,7 +14,7 @@ expression: diagnostics fix: ~ parent: ~ - kind: - ModelStringFieldNullable: + NullableModelStringField: field_name: TextField location: row: 8 @@ -25,7 +25,7 @@ expression: diagnostics fix: ~ parent: ~ - kind: - ModelStringFieldNullable: + NullableModelStringField: field_name: SlugField location: row: 9 @@ -36,7 +36,7 @@ expression: diagnostics fix: ~ parent: ~ - kind: - ModelStringFieldNullable: + NullableModelStringField: field_name: EmailField location: row: 10 @@ -47,7 +47,7 @@ expression: diagnostics fix: ~ parent: ~ - kind: - ModelStringFieldNullable: + NullableModelStringField: field_name: FilePathField location: row: 11 @@ -58,7 +58,7 @@ expression: diagnostics fix: ~ parent: ~ - kind: - ModelStringFieldNullable: + NullableModelStringField: field_name: URLField location: row: 12 @@ -69,7 +69,7 @@ expression: diagnostics fix: ~ parent: ~ - kind: - ModelStringFieldNullable: + NullableModelStringField: field_name: CharField location: row: 16 @@ -80,7 +80,7 @@ expression: diagnostics fix: ~ parent: ~ - kind: - ModelStringFieldNullable: + NullableModelStringField: field_name: CharField location: row: 17 @@ -91,7 +91,7 @@ expression: diagnostics fix: ~ parent: ~ - kind: - ModelStringFieldNullable: + NullableModelStringField: field_name: SlugField location: row: 18 @@ -102,7 +102,7 @@ expression: diagnostics fix: ~ parent: ~ - kind: - ModelStringFieldNullable: + NullableModelStringField: field_name: EmailField location: row: 19 @@ -113,7 +113,7 @@ expression: diagnostics fix: ~ parent: ~ - kind: - ModelStringFieldNullable: + NullableModelStringField: field_name: FilePathField location: row: 20 @@ -124,7 +124,7 @@ expression: diagnostics fix: ~ parent: ~ - kind: - ModelStringFieldNullable: + NullableModelStringField: field_name: URLField location: row: 21 diff --git a/crates/ruff/src/rules/flake8_django/snapshots/ruff__rules__flake8_django__tests__DJ008_DJ008.py.snap b/crates/ruff/src/rules/flake8_django/snapshots/ruff__rules__flake8_django__tests__DJ008_DJ008.py.snap index b5f93d3239..245d4b612c 100644 --- a/crates/ruff/src/rules/flake8_django/snapshots/ruff__rules__flake8_django__tests__DJ008_DJ008.py.snap +++ b/crates/ruff/src/rules/flake8_django/snapshots/ruff__rules__flake8_django__tests__DJ008_DJ008.py.snap @@ -3,7 +3,7 @@ source: crates/ruff/src/rules/flake8_django/mod.rs expression: diagnostics --- - kind: - ModelDunderStr: ~ + ModelWithoutDunderStr: ~ location: row: 6 column: 0 @@ -13,7 +13,7 @@ expression: diagnostics fix: ~ parent: ~ - kind: - ModelDunderStr: ~ + ModelWithoutDunderStr: ~ location: row: 21 column: 0 @@ -23,7 +23,7 @@ expression: diagnostics fix: ~ parent: ~ - kind: - ModelDunderStr: ~ + ModelWithoutDunderStr: ~ location: row: 36 column: 0 diff --git a/crates/ruff/src/rules/flake8_django/snapshots/ruff__rules__flake8_django__tests__DJ013_DJ013.py.snap b/crates/ruff/src/rules/flake8_django/snapshots/ruff__rules__flake8_django__tests__DJ013_DJ013.py.snap index f20f7ff342..ef8712d036 100644 --- a/crates/ruff/src/rules/flake8_django/snapshots/ruff__rules__flake8_django__tests__DJ013_DJ013.py.snap +++ b/crates/ruff/src/rules/flake8_django/snapshots/ruff__rules__flake8_django__tests__DJ013_DJ013.py.snap @@ -3,7 +3,7 @@ source: crates/ruff/src/rules/flake8_django/mod.rs expression: diagnostics --- - kind: - ReceiverDecoratorChecker: ~ + NonLeadingReceiverDecorator: ~ location: row: 15 column: 1 @@ -13,7 +13,7 @@ expression: diagnostics fix: ~ parent: ~ - kind: - ReceiverDecoratorChecker: ~ + NonLeadingReceiverDecorator: ~ location: row: 35 column: 1 diff --git a/docs/rules/model-dunder-str.md b/docs/rules/model-without-dunder-str.md similarity index 95% rename from docs/rules/model-dunder-str.md rename to docs/rules/model-without-dunder-str.md index cc09bc825c..69b638dfe4 100644 --- a/docs/rules/model-dunder-str.md +++ b/docs/rules/model-without-dunder-str.md @@ -1,4 +1,4 @@ -# model-dunder-str (DJ008) +# model-without-dunder-str (DJ008) Derived from the **flake8-django** linter. diff --git a/docs/rules/receiver-decorator-checker.md b/docs/rules/non-leading-receiver-decorator.md similarity index 95% rename from docs/rules/receiver-decorator-checker.md rename to docs/rules/non-leading-receiver-decorator.md index 206443a35d..e9c9edea91 100644 --- a/docs/rules/receiver-decorator-checker.md +++ b/docs/rules/non-leading-receiver-decorator.md @@ -1,4 +1,4 @@ -# receiver-decorator-checker (DJ013) +# non-leading-receiver-decorator (DJ013) Derived from the **flake8-django** linter. diff --git a/docs/rules/model-string-field-nullable.md b/docs/rules/nullable-model-string-field.md similarity index 95% rename from docs/rules/model-string-field-nullable.md rename to docs/rules/nullable-model-string-field.md index 00cc4529b2..1e5ee11765 100644 --- a/docs/rules/model-string-field-nullable.md +++ b/docs/rules/nullable-model-string-field.md @@ -1,4 +1,4 @@ -# model-string-field-nullable (DJ001) +# nullable-model-string-field (DJ001) Derived from the **flake8-django** linter.