mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-30 22:01:18 +00:00
[pyupgrade
] Fix super(__class__, self)
detection in UP008 (super-call-with-parameters) (#18478)
This commit is contained in:
parent
ef4108af2a
commit
dbb0d60caa
3 changed files with 31 additions and 3 deletions
|
@ -79,3 +79,14 @@ class DataClass:
|
||||||
def normal(self):
|
def normal(self):
|
||||||
super(DataClass, self).f() # OK
|
super(DataClass, self).f() # OK
|
||||||
super().f() # OK (`TypeError` in practice)
|
super().f() # OK (`TypeError` in practice)
|
||||||
|
|
||||||
|
|
||||||
|
# see: https://github.com/astral-sh/ruff/issues/18477
|
||||||
|
class A:
|
||||||
|
def foo(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class B(A):
|
||||||
|
def bar(self):
|
||||||
|
super(__class__, self).foo()
|
|
@ -121,7 +121,9 @@ pub(crate) fn super_call_with_parameters(checker: &Checker, call: &ast::ExprCall
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
if !(first_arg_id == parent_name.as_str() && second_arg_id == parent_arg.name().as_str()) {
|
if !((first_arg_id == "__class__" || first_arg_id == parent_name.as_str())
|
||||||
|
&& second_arg_id == parent_arg.name().as_str())
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
|
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
UP008.py:17:23: UP008 [*] Use `super()` instead of `super(__class__, self)`
|
UP008.py:17:23: UP008 [*] Use `super()` instead of `super(__class__, self)`
|
||||||
|
|
|
|
||||||
|
@ -127,3 +126,19 @@ UP008.py:74:14: UP008 [*] Use `super()` instead of `super(__class__, self)`
|
||||||
75 75 | super().f() # OK
|
75 75 | super().f() # OK
|
||||||
76 76 |
|
76 76 |
|
||||||
77 77 |
|
77 77 |
|
||||||
|
|
||||||
|
UP008.py:92:14: UP008 [*] Use `super()` instead of `super(__class__, self)`
|
||||||
|
|
|
||||||
|
90 | class B(A):
|
||||||
|
91 | def bar(self):
|
||||||
|
92 | super(__class__, self).foo()
|
||||||
|
| ^^^^^^^^^^^^^^^^^ UP008
|
||||||
|
|
|
||||||
|
= help: Remove `__super__` parameters
|
||||||
|
|
||||||
|
ℹ Unsafe fix
|
||||||
|
89 89 |
|
||||||
|
90 90 | class B(A):
|
||||||
|
91 91 | def bar(self):
|
||||||
|
92 |- super(__class__, self).foo()
|
||||||
|
92 |+ super().foo()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue