[pyupgrade]: new rule UP050 (useless-class-metaclass-type)#18334
[pyupgrade]: new rule UP050 (useless-class-metaclass-type)#18334MichaReiser merged 8 commits intoastral-sh:mainfrom
pyupgrade]: new rule UP050 (useless-class-metaclass-type)#18334Conversation
|
|
|
||
| for keyword in &arguments.keywords { | ||
| match (keyword.arg.as_deref(), &keyword.value) { | ||
| (Some("metaclass"), Expr::Name(ast::ExprName { id, .. })) if id == "type" => { |
There was a problem hiding this comment.
I think we need to be careful here because older Python versions allow type as identifier in which case it isn't guaranteed that type points to the builtin type "type".
Do you know if type is a reguler builtin or is it imported form typeshed?
There was a problem hiding this comment.
I think we need to be careful here because older Python versions allow
typeas identifier in which case it isn't guaranteed thattypepoints to the builtintype"type".Do you know if
typeis a reguler builtin or is it imported form typeshed?
type is builtin
There was a problem hiding this comment.
We should then use semantic.match_builtin_expr to ensure we only run this code when type indeed is a builtin, see
crates/ruff_linter/src/rules/pyupgrade/rules/useless_class_metaclass_type.rs
Show resolved
Hide resolved
3cbc2be to
e1b5094
Compare
* main: [ty] Support ephemeral uv virtual environments (#18335) Add a `ViolationMetadata::rule` method (#18234) Return `DiagnosticGuard` from `Checker::report_diagnostic` (#18232) [flake8_use_pathlib]: Replace os.symlink with Path.symlink_to (PTH211) (#18337) [ty] Support cancellation and retry in the server (#18273) [ty] Synthetic function-like callables (#18242) [ty] Support publishing diagnostics in the server (#18309) Add Autofix for ISC003 (#18256) [`pyupgrade`]: new rule UP050 (`useless-class-metaclass-type`) (#18334) [pycodestyle] Make `E712` suggestion not assume a context (#18328)
* main: (246 commits) [ty] Simplify signature types, use them in `CallableType` (astral-sh#18344) [ty] Support ephemeral uv virtual environments (astral-sh#18335) Add a `ViolationMetadata::rule` method (astral-sh#18234) Return `DiagnosticGuard` from `Checker::report_diagnostic` (astral-sh#18232) [flake8_use_pathlib]: Replace os.symlink with Path.symlink_to (PTH211) (astral-sh#18337) [ty] Support cancellation and retry in the server (astral-sh#18273) [ty] Synthetic function-like callables (astral-sh#18242) [ty] Support publishing diagnostics in the server (astral-sh#18309) Add Autofix for ISC003 (astral-sh#18256) [`pyupgrade`]: new rule UP050 (`useless-class-metaclass-type`) (astral-sh#18334) [pycodestyle] Make `E712` suggestion not assume a context (astral-sh#18328) put similar dunder-call tests next to each other (astral-sh#18343) [ty] Derive `PartialOrd, Ord` for `KnownInstanceType` (astral-sh#18340) [ty] Simplify `Type::try_bool()` (astral-sh#18342) [ty] Simplify `Type::normalized` slightly (astral-sh#18339) [ty] Move arviz off the list of selected primer projects (astral-sh#18336) [ty] Add --config-file CLI arg (astral-sh#18083) [ty] Tell the user why we inferred a certain Python version when reporting version-specific syntax errors (astral-sh#18295) [ty] Implement implicit inheritance from `Generic[]` for PEP-695 generic classes (astral-sh#18283) [ty] Add hint if async context manager is used in non-async with statement (astral-sh#18299) ...
Summary
/closes #18320
Add
pyupgraderuleUP050to flag metaclass=type usage, which is redundant in Python 3+. Includes safe auto-fix.Test Plan
add snapshot