From 9ab16fb417e7fd00cc09996152700cf374bc54eb Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Wed, 14 Jun 2023 20:12:32 -0400 Subject: [PATCH] Add `target-version` link to relevant rules (#5105) --- .../rules/future_rewritable_type_annotation.rs | 3 +++ .../src/rules/pylint/rules/bad_str_strip_call.rs | 16 +++++++++++++++- .../rules/pylint/rules/continue_in_finally.rs | 3 +++ .../pylint/rules/repeated_isinstance_calls.rs | 3 +++ .../rules/pyupgrade/rules/datetime_utc_alias.rs | 3 +++ .../rules/lru_cache_with_maxsize_none.rs | 3 +++ .../rules/lru_cache_without_parameters.rs | 3 +++ .../pyupgrade/rules/outdated_version_block.rs | 3 +++ .../pyupgrade/rules/unnecessary_future_import.rs | 3 +++ .../pyupgrade/rules/use_pep585_annotation.rs | 3 +++ .../pyupgrade/rules/use_pep604_annotation.rs | 3 +++ .../pyupgrade/rules/use_pep604_isinstance.rs | 3 +++ .../src/rules/ruff/rules/implicit_optional.rs | 3 +++ 13 files changed, 51 insertions(+), 1 deletion(-) diff --git a/crates/ruff/src/rules/flake8_future_annotations/rules/future_rewritable_type_annotation.rs b/crates/ruff/src/rules/flake8_future_annotations/rules/future_rewritable_type_annotation.rs index 6a93534241..33e604c821 100644 --- a/crates/ruff/src/rules/flake8_future_annotations/rules/future_rewritable_type_annotation.rs +++ b/crates/ruff/src/rules/flake8_future_annotations/rules/future_rewritable_type_annotation.rs @@ -49,6 +49,9 @@ use crate::checkers::ast::Checker; /// def func(obj: dict[str, int | None]) -> None: /// ... /// ``` +/// +/// ## Options +/// - `target-version` #[violation] pub struct FutureRewritableTypeAnnotation { name: String, diff --git a/crates/ruff/src/rules/pylint/rules/bad_str_strip_call.rs b/crates/ruff/src/rules/pylint/rules/bad_str_strip_call.rs index 4e961f434b..c670c7ff14 100644 --- a/crates/ruff/src/rules/pylint/rules/bad_str_strip_call.rs +++ b/crates/ruff/src/rules/pylint/rules/bad_str_strip_call.rs @@ -17,16 +17,30 @@ use crate::settings::types::PythonVersion; /// trailing ends of the string. Including duplicate characters in the call /// is redundant and often indicative of a mistake. /// +/// In Python 3.9 and later, you can use `str#removeprefix` and +/// `str#removesuffix` to remove an exact prefix or suffix from a string, +/// respectively, which should be preferred when possible. +/// /// ## Example /// ```python -/// "bar foo baz".strip("bar baz ") # "foo" +/// # Evaluates to "foo". +/// "bar foo baz".strip("bar baz ") /// ``` /// /// Use instead: /// ```python +/// # Evaluates to "foo". /// "bar foo baz".strip("abrz ") # "foo" /// ``` /// +/// Or: +/// ```python +/// # Evaluates to "foo". +/// "bar foo baz".removeprefix("bar ").removesuffix(" baz") +/// +/// ## Options +/// - `target-version` +/// /// ## References /// - [Python documentation](https://docs.python.org/3/library/stdtypes.html?highlight=strip#str.strip) #[violation] diff --git a/crates/ruff/src/rules/pylint/rules/continue_in_finally.rs b/crates/ruff/src/rules/pylint/rules/continue_in_finally.rs index 09e6c21793..600ee4306e 100644 --- a/crates/ruff/src/rules/pylint/rules/continue_in_finally.rs +++ b/crates/ruff/src/rules/pylint/rules/continue_in_finally.rs @@ -32,6 +32,9 @@ use crate::checkers::ast::Checker; /// else: /// continue /// ``` +/// +/// ## Options +/// - `target-version` #[violation] pub struct ContinueInFinally; diff --git a/crates/ruff/src/rules/pylint/rules/repeated_isinstance_calls.rs b/crates/ruff/src/rules/pylint/rules/repeated_isinstance_calls.rs index 0e578360af..4ddc1cbf55 100644 --- a/crates/ruff/src/rules/pylint/rules/repeated_isinstance_calls.rs +++ b/crates/ruff/src/rules/pylint/rules/repeated_isinstance_calls.rs @@ -36,6 +36,9 @@ use crate::settings::types::PythonVersion; /// return isinstance(x, int | float | complex) /// ``` /// +/// ## Options +/// - `target-version` +/// /// ## References /// - [Python documentation: `isinstance`](https://docs.python.org/3/library/functions.html#isinstance) #[violation] diff --git a/crates/ruff/src/rules/pyupgrade/rules/datetime_utc_alias.rs b/crates/ruff/src/rules/pyupgrade/rules/datetime_utc_alias.rs index b9750fe7ac..3f0e04cc29 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/datetime_utc_alias.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/datetime_utc_alias.rs @@ -28,6 +28,9 @@ use crate::registry::AsRule; /// datetime.UTC /// ``` /// +/// ## Options +/// - `target-version` +/// /// ## References /// - [Python documentation: `datetime.UTC`](https://docs.python.org/3/library/datetime.html#datetime.UTC) #[violation] diff --git a/crates/ruff/src/rules/pyupgrade/rules/lru_cache_with_maxsize_none.rs b/crates/ruff/src/rules/pyupgrade/rules/lru_cache_with_maxsize_none.rs index 497e1bdf6d..277d472f0c 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/lru_cache_with_maxsize_none.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/lru_cache_with_maxsize_none.rs @@ -36,6 +36,9 @@ use crate::registry::AsRule; /// ... /// ``` /// +/// ## Options +/// - `target-version` +/// /// ## References /// - [Python documentation: `@functools.cache`](https://docs.python.org/3/library/functools.html#functools.cache) #[violation] diff --git a/crates/ruff/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs b/crates/ruff/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs index 07cb2999b5..5e1a3c602f 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/lru_cache_without_parameters.rs @@ -34,6 +34,9 @@ use crate::registry::AsRule; /// ... /// ``` /// +/// ## Options +/// - `target-version` +/// /// ## References /// - [Python documentation: `@functools.lru_cache`](https://docs.python.org/3/library/functools.html#functools.lru_cache) /// - [Let lru_cache be used as a decorator with no arguments](https://github.com/python/cpython/issues/80953) diff --git a/crates/ruff/src/rules/pyupgrade/rules/outdated_version_block.rs b/crates/ruff/src/rules/pyupgrade/rules/outdated_version_block.rs index 6f40f2786c..ba35cd4d2a 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/outdated_version_block.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/outdated_version_block.rs @@ -42,6 +42,9 @@ use crate::settings::types::PythonVersion; /// print("py3") /// ``` /// +/// ## Options +/// - `target-version` +/// /// ## References /// - [Python documentation: `sys.version_info`](https://docs.python.org/3/library/sys.html#sys.version_info) #[violation] diff --git a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_future_import.rs b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_future_import.rs index 676a5ad928..97eb9e1269 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/unnecessary_future_import.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/unnecessary_future_import.rs @@ -30,6 +30,9 @@ use crate::registry::AsRule; /// print("Hello, world!") /// ``` /// +/// ## Options +/// - `target-version` +/// /// ## References /// - [Python documentation: `__future__` — Future statement definitions](https://docs.python.org/3/library/__future__.html) #[violation] diff --git a/crates/ruff/src/rules/pyupgrade/rules/use_pep585_annotation.rs b/crates/ruff/src/rules/pyupgrade/rules/use_pep585_annotation.rs index 42677e097b..b5ceee9e8a 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/use_pep585_annotation.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/use_pep585_annotation.rs @@ -35,6 +35,9 @@ use crate::registry::AsRule; /// foo: list[int] = [1, 2, 3] /// ``` /// +/// ## Options +/// - `target-version` +/// /// [PEP 585]: https://peps.python.org/pep-0585/ #[violation] pub struct NonPEP585Annotation { diff --git a/crates/ruff/src/rules/pyupgrade/rules/use_pep604_annotation.rs b/crates/ruff/src/rules/pyupgrade/rules/use_pep604_annotation.rs index f96ad905d7..ae9350e963 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/use_pep604_annotation.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/use_pep604_annotation.rs @@ -28,6 +28,9 @@ use crate::registry::AsRule; /// foo: int | str = 1 /// ``` /// +/// ## Options +/// - `target-version` +/// /// [PEP 604]: https://peps.python.org/pep-0604/ #[violation] pub struct NonPEP604Annotation; diff --git a/crates/ruff/src/rules/pyupgrade/rules/use_pep604_isinstance.rs b/crates/ruff/src/rules/pyupgrade/rules/use_pep604_isinstance.rs index aa7ce7c1a8..7ffa04286d 100644 --- a/crates/ruff/src/rules/pyupgrade/rules/use_pep604_isinstance.rs +++ b/crates/ruff/src/rules/pyupgrade/rules/use_pep604_isinstance.rs @@ -53,6 +53,9 @@ impl CallKind { /// isinstance(x, int | float) /// ``` /// +/// ## Options +/// - `target-version` +/// /// ## References /// - [Python documentation: `isinstance`](https://docs.python.org/3/library/functions.html#isinstance) /// - [Python documentation: `issubclass`](https://docs.python.org/3/library/functions.html#issubclass) diff --git a/crates/ruff/src/rules/ruff/rules/implicit_optional.rs b/crates/ruff/src/rules/ruff/rules/implicit_optional.rs index f032db7101..b95a9051bd 100644 --- a/crates/ruff/src/rules/ruff/rules/implicit_optional.rs +++ b/crates/ruff/src/rules/ruff/rules/implicit_optional.rs @@ -55,6 +55,9 @@ use crate::settings::types::PythonVersion; /// pass /// ``` /// +/// ## Options +/// - `target-version` +/// /// [PEP 484]: https://peps.python.org/pep-0484/#union-types #[violation] pub struct ImplicitOptional {