From 56fa5dce747a46f1dcba6eca003bb22fcc347247 Mon Sep 17 00:00:00 2001 From: Mark Byrne <31762852+mbyrnepr2@users.noreply.github.com> Date: Thu, 13 Apr 2023 08:46:51 +0200 Subject: Fix false positive for ``keyword-arg-before-vararg`` (#8571) * Fix false positive for ``keyword-arg-before-vararg`` when a positional-only parameter with a default value precedes ``*args``. Closes #8570 --- pylint/checkers/typecheck.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'pylint') diff --git a/pylint/checkers/typecheck.py b/pylint/checkers/typecheck.py index 7605d6b67..6dac7ede5 100644 --- a/pylint/checkers/typecheck.py +++ b/pylint/checkers/typecheck.py @@ -1001,8 +1001,14 @@ accessed. Python regular expressions are accepted.", @only_required_for_messages("keyword-arg-before-vararg") def visit_functiondef(self, node: nodes.FunctionDef) -> None: - # check for keyword arg before varargs + # check for keyword arg before varargs. + if node.args.vararg and node.args.defaults: + # When `positional-only` parameters are present then only + # `positional-or-keyword` parameters are checked. I.e: + # >>> def name(pos_only_params, /, pos_or_keyword_params, *args): ... + if node.args.posonlyargs and not node.args.args: + return self.add_message("keyword-arg-before-vararg", node=node, args=(node.name)) visit_asyncfunctiondef = visit_functiondef -- cgit v1.2.1