Skip to content

Commit 9627b3f

Browse files
committed
Add option to ignore methods with @override
1 parent 8f713ff commit 9627b3f

3 files changed

Lines changed: 34 additions & 0 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ This package adds the following warnings:
1010
Configuration options also exist:
1111
- `unused-arguments-ignore-abstract-functions` - don't show warnings for abstract functions.
1212
- `unused-arguments-ignore-overload-functions` - don't show warnings for overload functions.
13+
- `unused-arguments-ignore-override-functions` - don't show warnings for overridden functions.
1314
- `unused-arguments-ignore-stub-functions` - don't show warnings for empty functions.
1415
- `unused-arguments-ignore-variadic-names` - don't show warnings for unused *args and **kwargs.
1516
- `unused-arguments-ignore-lambdas` - don't show warnings for all lambdas.

flake8_unused_arguments.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class Plugin:
1616

1717
ignore_abstract = False
1818
ignore_overload = False
19+
ignore_override = False
1920
ignore_stubs = False
2021
ignore_variadic_names = False
2122
ignore_lambdas = False
@@ -45,6 +46,15 @@ def add_options(cls, option_manager: flake8.options.manager.OptionManager) -> No
4546
help="If provided, then unused arguments for functions decorated with overload will be ignored.",
4647
)
4748

49+
option_manager.add_option(
50+
"--unused-arguments-ignore-override-functions",
51+
action="store_true",
52+
parse_from_config=True,
53+
default=cls.ignore_override,
54+
dest="unused_arguments_ignore_override_functions",
55+
help="If provided, then unused arguments for functions decorated with override will be ignored.",
56+
)
57+
4858
option_manager.add_option(
4959
"--unused-arguments-ignore-stub-functions",
5060
action="store_true",
@@ -100,6 +110,7 @@ def add_options(cls, option_manager: flake8.options.manager.OptionManager) -> No
100110
def parse_options(cls, options: optparse.Values) -> None:
101111
cls.ignore_abstract = options.unused_arguments_ignore_abstract_functions
102112
cls.ignore_overload = options.unused_arguments_ignore_overload_functions
113+
cls.ignore_override = options.unused_arguments_ignore_override_functions
103114
cls.ignore_stubs = options.unused_arguments_ignore_stub_functions
104115
cls.ignore_variadic_names = options.unused_arguments_ignore_variadic_names
105116
cls.ignore_lambdas = options.unused_arguments_ignore_lambdas
@@ -117,6 +128,10 @@ def run(self) -> Iterable[LintResult]:
117128
if self.ignore_overload and "overload" in decorator_names:
118129
continue
119130

131+
# ignore overridden functions
132+
if self.ignore_override and "override" in decorator_names:
133+
continue
134+
120135
# ignore abstractmethods, it's not a surprise when they're empty
121136
if self.ignore_abstract and "abstractmethod" in decorator_names:
122137
continue

test_unused_arguments.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,24 @@ def foo(a):
196196
),
197197
(
198198
"""
199+
@override
200+
def foo(a):
201+
pass
202+
""",
203+
{"ignore_override": False},
204+
[(3, 8, "U100 Unused argument 'a'", "unused argument")],
205+
),
206+
(
207+
"""
208+
@override
209+
def foo(a):
210+
pass
211+
""",
212+
{"ignore_override": True},
213+
[],
214+
),
215+
(
216+
"""
199217
def foo(a):
200218
pass
201219
""",

0 commit comments

Comments
 (0)