Skip to content

Commit

Permalink
Suppress useless-super-delegation if return type changed (pylint-…
Browse files Browse the repository at this point in the history
  • Loading branch information
timmartin committed Apr 3, 2022
1 parent bede612 commit daffa66
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 0 deletions.
7 changes: 7 additions & 0 deletions pylint/checkers/classes/class_checker.py
Original file line number Diff line number Diff line change
Expand Up @@ -1263,6 +1263,13 @@ def _check_useless_super_delegation(self, function):

if meth_node is not None:

if function.returns is not None and (
meth_node.returns is None
or meth_node.returns.as_string() != function.returns.as_string()
):
# Override adds typing information to the return type
return

def form_annotations(arguments):
annotations = chain(
(arguments.posonlyargs_annotations or []), arguments.annotations
Expand Down
34 changes: 34 additions & 0 deletions tests/functional/u/useless/useless_super_delegation_py35.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,37 @@ class UselessSuper(object):

def useless(self, first, *, second=None, **kwargs): # [useless-super-delegation]
return super().useless(first, second=second, **kwargs)

# pylint: disable=wrong-import-position
import random
from typing import Any

class ReturnTypeAny:
choices = ['a', 1, (2, 3)]

def draw(self) -> Any:
return random.choice(self.choices)

class ReturnTypeNarrowed(ReturnTypeAny):
choices = [1, 2, 3]

def draw(self) -> int:
return super().draw()

class NoReturnType:
choices = ['a', 1, (2, 3)]

def draw(self):
return random.choice(self.choices)

class ReturnTypeSpecified(NoReturnType):
choices = ['a', 'b']

def draw(self) -> str:
return super().draw()

class ReturnTypeSame(ReturnTypeAny):
choices = ['a', 'b']

def draw(self) -> Any: # [useless-super-delegation]
return super().draw()
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
useless-super-delegation:11:4:11:15:UselessSuper.useless:Useless super delegation in method 'useless':UNDEFINED
useless-super-delegation:45:4:45:12:ReturnTypeSame.draw:Useless super delegation in method 'draw':UNDEFINED

0 comments on commit daffa66

Please sign in to comment.