summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcpopa <devnull@localhost>2013-09-25 23:02:24 +0300
committercpopa <devnull@localhost>2013-09-25 23:02:24 +0300
commite191027464f9800fca4e525773a68daf536d372d (patch)
treed372ade5e4f4d65f0a3730c15fc5665b0de2b4b2
parent09832b4a8bdebb30d7b3c29466b7fd6dd4212a6a (diff)
downloadpylint-e191027464f9800fca4e525773a68daf536d372d.tar.gz
Proper handling of manual field specifiers.
-rw-r--r--checkers/strings.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/checkers/strings.py b/checkers/strings.py
index 13112cb..dd1de2c 100644
--- a/checkers/strings.py
+++ b/checkers/strings.py
@@ -261,7 +261,7 @@ class StringMethodsChecker(BaseChecker):
manual_keys = set([key for key in required_keys
if key.isdigit()])
- if required_keys - manual_keys:
+ if manual_keys and required_keys - manual_keys:
self.add_message('format-combined-specifiers',
node=node)
return
@@ -276,7 +276,7 @@ class StringMethodsChecker(BaseChecker):
self.add_message('mixed-format-string', node=node)
elif required_keys:
for key in required_keys:
- if key not in named:
+ if key not in named and not key.isdigit():
self.add_message('missing-format-argument-key',
node=node,
args=(key, ))
@@ -289,8 +289,10 @@ class StringMethodsChecker(BaseChecker):
if positional > required_num_args:
self.add_message('too-many-format-args', node=node)
elif positional < required_num_args:
- self.add_message('too-few-format-args', node=node)
-
+ self.add_message('too-few-format-args', node=node)
+
+ if manual_keys and positional < len(manual_keys):
+ self.add_message('too-few-format-args', node=node)
class StringConstantChecker(BaseTokenChecker):
"""Check string literals"""