Skip to content

Commit 36fc7be

Browse files
authored
language and linting updates (#1015)
* language and linting updates - converted several format strings to f-strings - sorted and tidied imports (isort) - cleaned some whitespace - updated pylintrc to exclude examples - updated pylintrc to specify all currently failing cases, so any new ones could be part of pre-commit if so wished * Update config.py match pep8 for imports * Update pylintrc stylistic
1 parent 3260f13 commit 36fc7be

29 files changed

+79
-94
lines changed

bandit/cli/config_generator.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -158,11 +158,11 @@ def main():
158158

159159
for skip in skips:
160160
if not extension_loader.MANAGER.check_id(skip):
161-
raise RuntimeError("unknown ID in skips: %s" % skip)
161+
raise RuntimeError(f"unknown ID in skips: {skip}")
162162

163163
for test in tests:
164164
if not extension_loader.MANAGER.check_id(test):
165-
raise RuntimeError("unknown ID in tests: %s" % test)
165+
raise RuntimeError(f"unknown ID in tests: {test}")
166166

167167
tpl = "# {0} : {1}"
168168
test_list = [

bandit/cli/main.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -371,9 +371,8 @@ def main():
371371
parser.add_argument(
372372
"--version",
373373
action="version",
374-
version="%(prog)s {version}\n python version = {python}".format(
375-
version=bandit.__version__, python=python_ver
376-
),
374+
version=f"%(prog)s {bandit.__version__}\n"
375+
f" python version = {python_ver}",
377376
)
378377

379378
parser.set_defaults(debug=False)
@@ -387,7 +386,7 @@ def main():
387386
blacklist_info = []
388387
for a in extension_mgr.blacklist.items():
389388
for b in a[1]:
390-
blacklist_info.append("{}\t{}".format(b["id"], b["name"]))
389+
blacklist_info.append(f"{b['id']}\t{b['name']}")
391390

392391
plugin_list = "\n\t".join(sorted(set(plugin_info + blacklist_info)))
393392
dedent_text = textwrap.dedent(

bandit/core/config.py

-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from bandit.core import extension_loader
2020
from bandit.core import utils
2121

22-
2322
LOG = logging.getLogger(__name__)
2423

2524

bandit/core/context.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def __repr__(self):
3434
3535
:return: A string representation of the object
3636
"""
37-
return "<Context %s>" % self._context
37+
return f"<Context {self._context}>"
3838

3939
@property
4040
def call_args(self):

bandit/core/docs_utils.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,7 @@ def get_url(bid):
1616

1717
info = extension_loader.MANAGER.plugins_by_id.get(bid)
1818
if info is not None:
19-
return "{}plugins/{}_{}.html".format(
20-
base_url,
21-
bid.lower(),
22-
info.plugin.__name__,
23-
)
19+
return f"{base_url}plugins/{bid.lower()}_{info.plugin.__name__}.html"
2420

2521
info = extension_loader.MANAGER.blacklist_by_id.get(bid)
2622
if info is not None:

bandit/core/extension_loader.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def test_has_id(plugin):
4242
if not hasattr(plugin.plugin, "_test_id"):
4343
# logger not setup yet, so using print
4444
print(
45-
"WARNING: Test '%s' has no ID, skipping." % plugin.name,
45+
f"WARNING: Test '{plugin.name}' has no ID, skipping.",
4646
file=sys.stderr,
4747
)
4848
return False
@@ -82,16 +82,16 @@ def validate_profile(self, profile):
8282
"""Validate that everything in the configured profiles looks good."""
8383
for inc in profile["include"]:
8484
if not self.check_id(inc):
85-
raise ValueError("Unknown test found in profile: %s" % inc)
85+
raise ValueError(f"Unknown test found in profile: {inc}")
8686

8787
for exc in profile["exclude"]:
8888
if not self.check_id(exc):
89-
raise ValueError("Unknown test found in profile: %s" % exc)
89+
raise ValueError(f"Unknown test found in profile: {exc}")
9090

9191
union = set(profile["include"]) & set(profile["exclude"])
9292
if len(union) > 0:
9393
raise ValueError(
94-
"Non-exclusive include/exclude test sets: %s" % union
94+
f"Non-exclusive include/exclude test sets: {union}"
9595
)
9696

9797
def check_id(self, test):

bandit/core/manager.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
from bandit.core import node_visitor as b_node_visitor
2424
from bandit.core import test_set as b_test_set
2525

26-
2726
LOG = logging.getLogger(__name__)
2827
NOSEC_COMMENT = re.compile(r"#\s*nosec:?\s*(?P<tests>[^#]+)?#?")
2928
NOSEC_COMMENT_TESTS = re.compile(r"(?:(B\d+|[a-z_]+),?)+", re.IGNORECASE)
@@ -195,8 +194,8 @@ def output_results(
195194

196195
except Exception as e:
197196
raise RuntimeError(
198-
"Unable to output report using '%s' formatter: "
199-
"%s" % (output_format, str(e))
197+
f"Unable to output report using "
198+
f"'{output_format}' formatter: {str(e)}"
200199
)
201200

202201
def discover_files(self, targets, recursive=False, excluded_paths=""):

bandit/core/meta_ast.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import collections
66
import logging
77

8-
98
LOG = logging.getLogger(__name__)
109

1110

@@ -40,7 +39,7 @@ def __str__(self):
4039
"""
4140
tmpstr = ""
4241
for k, v in self.nodes.items():
43-
tmpstr += "Node: %s\n" % k
44-
tmpstr += "\t%s\n" % str(v)
45-
tmpstr += "Length: %s\n" % len(self.nodes)
42+
tmpstr += f"Node: {k}\n"
43+
tmpstr += f"\t{str(v)}\n"
44+
tmpstr += f"Length: {len(self.nodes)}\n"
4645
return tmpstr

bandit/core/node_visitor.py

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
from bandit.core import tester as b_tester
1111
from bandit.core import utils as b_utils
1212

13-
1413
LOG = logging.getLogger(__name__)
1514

1615

bandit/core/test_set.py

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
from bandit.core import blacklisting
99
from bandit.core import extension_loader
1010

11-
1211
LOG = logging.getLogger(__name__)
1312

1413

bandit/core/tester.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,9 @@ def run_tests(self, raw_context, checktype):
8484
LOG.debug("skipped, nosec without test number")
8585
self.metrics.note_nosec()
8686
continue
87-
elif result.test_id in nosec_tests_to_skip:
87+
if result.test_id in nosec_tests_to_skip:
8888
LOG.debug(
89-
"skipped, nosec for test %s" % result.test_id
89+
f"skipped, nosec for test {result.test_id}"
9090
)
9191
self.metrics.note_skipped_test()
9292
continue
@@ -152,7 +152,7 @@ def _get_nosecs_from_contexts(self, context, test_result=None):
152152
@staticmethod
153153
def report_error(test, context, error):
154154
what = "Bandit internal error running: "
155-
what += "%s " % test
155+
what += f"{test} "
156156
what += "on file %s at line %i: " % (
157157
context._context["filename"],
158158
context._context["lineno"],

bandit/core/utils.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,7 @@ def get_module_qualname_from_path(path):
140140
(head, tail) = os.path.split(path)
141141
if head == "" or tail == "":
142142
raise InvalidModulePath(
143-
'Invalid python file path: "%s"'
144-
" Missing path or file name" % (path)
143+
f'Invalid python file path: "{path}" Missing path or file name'
145144
)
146145

147146
qname = [os.path.splitext(tail)[0]]
@@ -369,7 +368,7 @@ def check_ast_node(name):
369368
except AttributeError: # nosec(tkelsey): catching expected exception
370369
pass
371370

372-
raise TypeError("Error: %s is not a valid node type in AST" % name)
371+
raise TypeError(f"Error: {name} is not a valid node type in AST")
373372

374373

375374
def get_nosec(nosec_lines, context):

bandit/formatters/custom.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333

3434
from bandit.core import test_properties
3535

36-
3736
LOG = logging.getLogger(__name__)
3837

3938

@@ -141,10 +140,7 @@ def get_similar_tag(tag):
141140
markers = ["", ":", "!"]
142141
msg_parsed_template_list.append(
143142
["{"]
144-
+ [
145-
"%s" % (m + p) if p else ""
146-
for m, p in zip(markers, params)
147-
]
143+
+ [f"{m + p}" if p else "" for m, p in zip(markers, params)]
148144
+ ["}"]
149145
)
150146

bandit/formatters/html.py

-1
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,6 @@
154154
from bandit.core import test_properties
155155
from bandit.formatters import utils
156156

157-
158157
LOG = logging.getLogger(__name__)
159158

160159

bandit/formatters/screen.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767

6868

6969
def header(text, *args):
70-
return "{}{}{}".format(COLOR["HEADER"], (text % args), COLOR["DEFAULT"])
70+
return f"{COLOR['HEADER']}{text % args}{COLOR['DEFAULT']}"
7171

7272

7373
def get_verbose_details(manager):
@@ -81,15 +81,15 @@ def get_verbose_details(manager):
8181
]
8282
)
8383
bits.append(header("Files excluded (%i):", len(manager.excluded_files)))
84-
bits.extend(["\t%s" % fname for fname in manager.excluded_files])
84+
bits.extend([f"\t{fname}" for fname in manager.excluded_files])
8585
return "\n".join([str(bit) for bit in bits])
8686

8787

8888
def get_metrics(manager):
8989
bits = []
9090
bits.append(header("\nRun metrics:"))
9191
for (criteria, _) in constants.CRITERIA:
92-
bits.append("\tTotal issues (by %s):" % (criteria.lower()))
92+
bits.append(f"\tTotal issues (by {criteria.lower()}):")
9393
for rank in constants.RANKING:
9494
bits.append(
9595
"\t\t%s: %s"

bandit/formatters/text.py

+7-8
Original file line numberDiff line numberDiff line change
@@ -46,24 +46,24 @@
4646

4747
def get_verbose_details(manager):
4848
bits = []
49-
bits.append("Files in scope (%i):" % len(manager.files_list))
49+
bits.append(f"Files in scope ({len(manager.files_list)}):")
5050
tpl = "\t%s (score: {SEVERITY: %i, CONFIDENCE: %i})"
5151
bits.extend(
5252
[
5353
tpl % (item, sum(score["SEVERITY"]), sum(score["CONFIDENCE"]))
5454
for (item, score) in zip(manager.files_list, manager.scores)
5555
]
5656
)
57-
bits.append("Files excluded (%i):" % len(manager.excluded_files))
58-
bits.extend(["\t%s" % fname for fname in manager.excluded_files])
57+
bits.append(f"Files excluded ({len(manager.excluded_files)}):")
58+
bits.extend([f"\t{fname}" for fname in manager.excluded_files])
5959
return "\n".join([bit for bit in bits])
6060

6161

6262
def get_metrics(manager):
6363
bits = []
6464
bits.append("\nRun metrics:")
6565
for (criteria, _) in constants.CRITERIA:
66-
bits.append("\tTotal issues (by %s):" % (criteria.lower()))
66+
bits.append(f"\tTotal issues (by {criteria.lower()}):")
6767
for rank in constants.RANKING:
6868
bits.append(
6969
"\t\t%s: %s"
@@ -81,8 +81,7 @@ def _output_issue_str(
8181
# returns a list of lines that should be added to the existing lines list
8282
bits = []
8383
bits.append(
84-
"%s>> Issue: [%s:%s] %s"
85-
% (indent, issue.test_id, issue.test, issue.text)
84+
f"{indent}>> Issue: [{issue.test_id}:{issue.test}] {issue.text}"
8685
)
8786

8887
bits.append(
@@ -162,7 +161,7 @@ def report(manager, fileobj, sev_level, conf_level, lines=-1):
162161
bits = []
163162

164163
if not manager.quiet or manager.results_count(sev_level, conf_level):
165-
bits.append("Run started:%s" % datetime.datetime.utcnow())
164+
bits.append(f"Run started:{datetime.datetime.utcnow()}")
166165

167166
if manager.verbose:
168167
bits.append(get_verbose_details(manager))
@@ -187,7 +186,7 @@ def report(manager, fileobj, sev_level, conf_level, lines=-1):
187186

188187
skipped = manager.get_skipped()
189188
bits.append(get_metrics(manager))
190-
bits.append("Files skipped (%i):" % len(skipped))
189+
bits.append(f"Files skipped ({len(skipped)}):")
191190
bits.extend(["\t%s (%s)" % skip for skip in skipped])
192191
result = "\n".join([bit for bit in bits]) + "\n"
193192

bandit/plugins/general_hardcoded_password.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from bandit.core import issue
1010
from bandit.core import test_properties as test
1111

12-
1312
RE_WORDS = "(pas+wo?r?d|pass(phrase)?|pwd|token|secrete?)"
1413
RE_CANDIDATES = re.compile(
1514
"(^{0}$|_{0}_|^{0}_|_{0}$)".format(RE_WORDS), re.IGNORECASE
@@ -21,7 +20,7 @@ def _report(value):
2120
severity=bandit.LOW,
2221
confidence=bandit.MEDIUM,
2322
cwe=issue.Cwe.HARD_CODED_PASSWORD,
24-
text=("Possible hardcoded password: '%s'" % value),
23+
text=f"Possible hardcoded password: '{value}'",
2524
)
2625

2726

bandit/plugins/hashlib_insecure_functions.py

-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
from bandit.core import issue
4848
from bandit.core import test_properties as test
4949

50-
5150
WEAK_HASHES = ("md4", "md5", "sha", "sha1")
5251

5352

bandit/plugins/injection_shell.py

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from bandit.core import issue
1010
from bandit.core import test_properties as test
1111

12-
1312
# yuck, regex: starts with a windows drive letter (eg C:)
1413
# or one of our path delimeter characters (/, \, .)
1514
full_path_match = re.compile(r"^(?:[A-Za-z](?=\:)|[\\\/\.])")

bandit/plugins/injection_wildcard.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def linux_commands_wildcard_injection(context, config):
124124
argument_string = ""
125125
if isinstance(call_argument, list):
126126
for li in call_argument:
127-
argument_string = argument_string + " %s" % li
127+
argument_string = argument_string + f" {li}"
128128
elif isinstance(call_argument, str):
129129
argument_string = call_argument
130130

doc/source/conf.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,16 @@
6565
html_theme_options = {}
6666

6767
# Output file base name for HTML help builder.
68-
htmlhelp_basename = "%sdoc" % project
68+
htmlhelp_basename = f"{project}doc"
6969

7070
# Grouping the document tree into LaTeX files. List of tuples
7171
# (source start file, target name, title, author, documentclass
7272
# [howto/manual]).
7373
latex_documents = [
7474
(
7575
"index",
76-
"%s.tex" % project,
77-
"%s Documentation" % project,
76+
f"{project}.tex",
77+
f"{project} Documentation",
7878
"PyCQA",
7979
"manual",
8080
),

0 commit comments

Comments
 (0)