Skip to content

Commit 73f9522

Browse files
committed
Fix max_positional_arguments, fix tests
1 parent 8bab5b2 commit 73f9522

File tree

3 files changed

+13
-11
lines changed

3 files changed

+13
-11
lines changed

pylint/checkers/design_analysis.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -563,8 +563,10 @@ def visit_functiondef(self, node: nodes.FunctionDef) -> None:
563563
argnum = len(args) - ignored_args_num
564564
if node.type in {"function", "staticmethod"}:
565565
max_args = self.linter.config.max_args
566+
max_positional_arguments = self.linter.config.max_positional_arguments
566567
elif node.type in {"method", "classmethod"}:
567568
max_args = self.linter.config.max_args + 1
569+
max_positional_arguments = self.linter.config.max_positional_arguments + 1
568570
if argnum > max_args:
569571
self.add_message(
570572
"too-many-arguments",
@@ -574,11 +576,11 @@ def visit_functiondef(self, node: nodes.FunctionDef) -> None:
574576
pos_args_count = (
575577
len(args) - len(node.args.kwonlyargs) - ignored_pos_args_num
576578
)
577-
if pos_args_count > self.linter.config.max_positional_arguments:
579+
if pos_args_count > max_positional_arguments:
578580
self.add_message(
579581
"too-many-positional-arguments",
580582
node=node,
581-
args=(pos_args_count, self.linter.config.max_positional_arguments),
583+
args=(pos_args_count, max_positional_arguments),
582584
confidence=HIGH,
583585
)
584586
else:
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# pylint: disable=missing-function-docstring, missing-module-docstring
22
class FiveArgumentMethods:
3-
"""The max positional arguments default is 5."""
4-
def fail1(self, a, b, c, d, e): # [too-many-arguments, too-many-positional-arguments]
3+
"""The max positional arguments default is 5, so 6 for a method because of self."""
4+
def fail1(self, a, b, c, d, e, f): # [too-many-arguments, too-many-positional-arguments]
55
pass
6-
def fail2(self, a, b, c, d, /, e): # [too-many-arguments, too-many-positional-arguments]
6+
def fail2(self, a, b, c, d, e, /, f): # [too-many-arguments, too-many-positional-arguments]
77
pass
8-
def okay1(self, a, b, c, d, *, e=True): # [too-many-arguments]
8+
def okay1(self, a, b, c, d, e, *, f=True): # [too-many-arguments]
99
pass
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
too-many-arguments:4:4:4:13:FiveArgumentMethods.fail1:Too many arguments (6/5):UNDEFINED
2-
too-many-positional-arguments:4:4:4:13:FiveArgumentMethods.fail1:Too many positional arguments (6/5):HIGH
3-
too-many-arguments:6:4:6:13:FiveArgumentMethods.fail2:Too many arguments (6/5):UNDEFINED
4-
too-many-positional-arguments:6:4:6:13:FiveArgumentMethods.fail2:Too many positional arguments (6/5):HIGH
5-
too-many-arguments:8:4:8:13:FiveArgumentMethods.okay1:Too many arguments (6/5):UNDEFINED
1+
too-many-arguments:4:4:4:13:FiveArgumentMethods.fail1:Too many arguments (7/6):UNDEFINED
2+
too-many-positional-arguments:4:4:4:13:FiveArgumentMethods.fail1:Too many positional arguments (7/6):HIGH
3+
too-many-arguments:6:4:6:13:FiveArgumentMethods.fail2:Too many arguments (7/6):UNDEFINED
4+
too-many-positional-arguments:6:4:6:13:FiveArgumentMethods.fail2:Too many positional arguments (7/6):HIGH
5+
too-many-arguments:8:4:8:13:FiveArgumentMethods.okay1:Too many arguments (7/6):UNDEFINED

0 commit comments

Comments
 (0)