mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-04 10:48:32 +00:00
[pyupgrade
]: Deprecate non-pep604-isinstance
(UP038
) (#16681)
## Summary This PR deprecates UP038. Using PEP 604 syntax in `isinstance` and `issubclass` calls isn't a recommended pattern (or community agreed best practice) and it negatively impacts performance. Resolves https://github.com/astral-sh/ruff/issues/7871 ## Test Plan I tested that selecting `UP038` results in a warning in no-preview mode and an error in preview mode
This commit is contained in:
parent
776a401703
commit
e740286bbd
2 changed files with 8 additions and 1 deletions
|
@ -532,7 +532,7 @@ pub fn code_to_rule(linter: Linter, code: &str) -> Option<(RuleGroup, Rule)> {
|
|||
(Pyupgrade, "035") => (RuleGroup::Stable, rules::pyupgrade::rules::DeprecatedImport),
|
||||
(Pyupgrade, "036") => (RuleGroup::Stable, rules::pyupgrade::rules::OutdatedVersionBlock),
|
||||
(Pyupgrade, "037") => (RuleGroup::Stable, rules::pyupgrade::rules::QuotedAnnotation),
|
||||
(Pyupgrade, "038") => (RuleGroup::Stable, rules::pyupgrade::rules::NonPEP604Isinstance),
|
||||
(Pyupgrade, "038") => (RuleGroup::Deprecated, rules::pyupgrade::rules::NonPEP604Isinstance),
|
||||
(Pyupgrade, "039") => (RuleGroup::Stable, rules::pyupgrade::rules::UnnecessaryClassParentheses),
|
||||
(Pyupgrade, "040") => (RuleGroup::Stable, rules::pyupgrade::rules::NonPEP695TypeAlias),
|
||||
(Pyupgrade, "041") => (RuleGroup::Stable, rules::pyupgrade::rules::TimeoutErrorAlias),
|
||||
|
|
|
@ -33,6 +33,12 @@ impl CallKind {
|
|||
}
|
||||
}
|
||||
|
||||
/// ## Deprecation
|
||||
/// This rule was deprecated as using [PEP 604] syntax in `isinstance` and `issubclass` calls
|
||||
/// isn't recommended practice, and it incorrectly suggests that other typing syntaxes like [PEP 695]
|
||||
/// would be supported by `isinstance` and `issubclass`. Using the [PEP 604] syntax
|
||||
/// is also slightly slower.
|
||||
///
|
||||
/// ## What it does
|
||||
/// Checks for uses of `isinstance` and `issubclass` that take a tuple
|
||||
/// of types for comparison.
|
||||
|
@ -64,6 +70,7 @@ impl CallKind {
|
|||
/// - [Python documentation: `issubclass`](https://docs.python.org/3/library/functions.html#issubclass)
|
||||
///
|
||||
/// [PEP 604]: https://peps.python.org/pep-0604/
|
||||
/// [PEP 695]: https://peps.python.org/pep-0695/
|
||||
#[derive(ViolationMetadata)]
|
||||
pub(crate) struct NonPEP604Isinstance {
|
||||
kind: CallKind,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue