diff options
author | ahirnish <ahirnish@gmail.com> | 2017-09-15 21:15:32 +0530 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2017-09-15 17:45:32 +0200 |
commit | 3691a25bc5f4c6692508042656e0e936954034e5 (patch) | |
tree | 6c245dbe40a86e708e66924468c4d247edb5e508 /pylint/checkers/design_analysis.py | |
parent | a80810644b3533de5c2455f33ec63838bf731f62 (diff) | |
download | pylint-git-3691a25bc5f4c6692508042656e0e936954034e5.tar.gz |
Adding a warning about keyword argument appearing before variable args list in the function definition (#1636)
Diffstat (limited to 'pylint/checkers/design_analysis.py')
-rw-r--r-- | pylint/checkers/design_analysis.py | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/pylint/checkers/design_analysis.py b/pylint/checkers/design_analysis.py index c34ec4dce..899dd708e 100644 --- a/pylint/checkers/design_analysis.py +++ b/pylint/checkers/design_analysis.py @@ -57,6 +57,12 @@ MSGS = { 'too-many-boolean-expressions', 'Used when a if statement contains too many boolean ' 'expressions'), + 'W0917': ('Keyword argument before variable positional arguments list ' + 'in the definition of %s function', + 'keyword-arg-before-vararg', + 'When defining a keyword argument before variable positional arguments, one can ' + 'end up in having multiple values passed for the aforementioned parameter in ' + 'case the method is called with keyword arguments.'), } @@ -211,7 +217,7 @@ class MisdesignChecker(BaseChecker): @check_messages('too-many-return-statements', 'too-many-branches', 'too-many-arguments', 'too-many-locals', - 'too-many-statements') + 'too-many-statements', 'keyword-arg-before-vararg') def visit_functiondef(self, node): """check function name, docstring, arguments, redefinition, variable names, max locals @@ -237,6 +243,10 @@ class MisdesignChecker(BaseChecker): if locnum > self.config.max_locals: self.add_message('too-many-locals', node=node, args=(locnum, self.config.max_locals)) + # check for keyword arg before varargs + if node.args.vararg and node.args.defaults: + self.add_message('keyword-arg-before-vararg', node=node, + args=(node.name)) # init statements counter self._stmts = 1 |