Skip to content

Commit

Permalink
Improvement documentation around ignore-names globbing (#7674)
Browse files Browse the repository at this point in the history
## Summary

Improves the documentation on the setting itself, along with that on the
relevant rules.

Closes #7660.
  • Loading branch information
charliermarsh committed Sep 27, 2023
1 parent 0a8cad2 commit 15f3d8c
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ use crate::checkers::ast::Checker;
/// > append a single trailing underscore rather than use an abbreviation or spelling corruption.
/// > Thus `class_` is better than `clss`. (Perhaps better is to avoid such clashes by using a synonym.)
///
/// Names can be excluded from this rule using the [`pep8-naming.ignore-names`]
/// or [`pep8-naming.extend-ignore-names`] configuration options. For example,
/// to allow the use of `klass` as the first argument to class methods, set
/// the [`pep8-naming.extend-ignore-names`] option to `["klass"]`.
///
/// ## Example
/// ```python
/// class Example:
Expand All @@ -42,6 +47,7 @@ use crate::checkers::ast::Checker;
/// - `pep8-naming.classmethod-decorators`
/// - `pep8-naming.staticmethod-decorators`
/// - `pep8-naming.ignore-names`
/// - `pep8-naming.extend-ignore-names`
///
/// [PEP 8]: https://peps.python.org/pep-0008/#function-and-method-arguments
#[violation]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ use crate::checkers::ast::Checker;
/// > append a single trailing underscore rather than use an abbreviation or spelling corruption.
/// > Thus `class_` is better than `clss`. (Perhaps better is to avoid such clashes by using a synonym.)
///
/// Names can be excluded from this rule using the [`pep8-naming.ignore-names`]
/// or [`pep8-naming.extend-ignore-names`] configuration options. For example,
/// to allow the use of `this` as the first argument to instance methods, set
/// the [`pep8-naming.extend-ignore-names`] option to `["this"]`.
///
/// ## Example
/// ```python
/// class Example:
Expand All @@ -40,6 +45,7 @@ use crate::checkers::ast::Checker;
/// - `pep8-naming.classmethod-decorators`
/// - `pep8-naming.staticmethod-decorators`
/// - `pep8-naming.ignore-names`
/// - `pep8-naming.extend-ignore-names`
///
/// [PEP 8]: https://peps.python.org/pep-0008/#function-and-method-arguments
#[violation]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ use crate::settings::types::IdentifierPattern;
/// > improve readability. mixedCase is allowed only in contexts where that’s already the
/// > prevailing style (e.g. threading.py), to retain backwards compatibility.
///
/// Names can be excluded from this rule using the [`pep8-naming.ignore-names`]
/// or [`pep8-naming.extend-ignore-names`] configuration options. For example,
/// to ignore all functions starting with `test_` from this rule, set the
/// [`pep8-naming.extend-ignore-names`] option to `["test_*"]`.
///
/// ## Example
/// ```python
/// def myFunction():
Expand All @@ -34,6 +39,7 @@ use crate::settings::types::IdentifierPattern;
///
/// ## Options
/// - `pep8-naming.ignore-names`
/// - `pep8-naming.extend-ignore-names`
///
/// [PEP 8]: https://peps.python.org/pep-0008/#function-and-variable-names
#[violation]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ use crate::rules::pep8_naming::helpers;
///
/// ## Options
/// - `pep8-naming.ignore-names`
/// - `pep8-naming.extend-ignore-names`
///
/// [PEP 8]: https://peps.python.org/pep-0008/#function-and-variable-names
#[violation]
Expand Down
20 changes: 17 additions & 3 deletions crates/ruff_workspace/src/options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2050,6 +2050,10 @@ impl McCabeOptions {
#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
pub struct Pep8NamingOptions {
/// A list of names (or patterns) to ignore when considering `pep8-naming` violations.
///
/// Supports glob patterns. For example, to ignore all names starting with
/// or ending with `_test`, you could use `ignore-names = ["test_*", "*_test"]`.
/// For more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).
#[option(
default = r#"["setUp", "tearDown", "setUpClass", "tearDownClass", "setUpModule", "tearDownModule", "asyncSetUp", "asyncTearDown", "setUpTestData", "failureException", "longMessage", "maxDiff"]"#,
value_type = "list[str]",
Expand All @@ -2060,7 +2064,11 @@ pub struct Pep8NamingOptions {
pub ignore_names: Option<Vec<String>>,

/// Additional names (or patterns) to ignore when considering `pep8-naming` violations,
/// in addition to those included in `ignore-names`.
/// in addition to those included in `ignore-names`
///
/// Supports glob patterns. For example, to ignore all names starting with
/// or ending with `_test`, you could use `ignore-names = ["test_*", "*_test"]`.
/// For more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax)..
#[option(
default = r#"[]"#,
value_type = "list[str]",
Expand All @@ -2074,6 +2082,9 @@ pub struct Pep8NamingOptions {
///
/// For example, Ruff will expect that any method decorated by a decorator
/// in this list takes a `cls` argument as its first argument.
///
/// Expects to receive a list of fully-qualified names (e.g., `pydantic.validator`,
/// rather than `validator`).
#[option(
default = r#"[]"#,
value_type = "list[str]",
Expand All @@ -2090,12 +2101,15 @@ pub struct Pep8NamingOptions {
///
/// For example, Ruff will expect that any method decorated by a decorator
/// in this list has no `self` or `cls` argument.
///
/// Expects to receive a list of fully-qualified names (e.g., `belay.Device.teardown`,
/// rather than `teardown`).
#[option(
default = r#"[]"#,
value_type = "list[str]",
example = r#"
# Allow a shorthand alias, `@stcmthd`, to trigger static method treatment.
staticmethod-decorators = ["stcmthd"]
# Allow Belay's `@Device.teardown` decorator to trigger static method treatment.
staticmethod-decorators = ["belay.Device.teardown"]
"#
)]
pub staticmethod_decorators: Option<Vec<String>>,
Expand Down
8 changes: 4 additions & 4 deletions ruff.schema.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 15f3d8c

Please sign in to comment.