Skip to content

Commit 5df292c

Browse files
committed
MaD generator: apply black formatting to all sources
1 parent 1a36374 commit 5df292c

File tree

3 files changed

+63
-24
lines changed

3 files changed

+63
-24
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ repos:
1818
rev: 25.1.0
1919
hooks:
2020
- id: black
21-
files: ^(misc/codegen/.*|misc/scripts/models-as-data/bulk_generate_mad)\.py$
21+
files: ^(misc/codegen/.*|misc/scripts/models-as-data/.*)\.py$
2222

2323
- repo: local
2424
hooks:

misc/scripts/models-as-data/convert_extensions.py

Lines changed: 41 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,65 +7,86 @@
77
import sys
88
import tempfile
99

10+
1011
def quote_if_needed(v):
1112
# string columns
1213
if type(v) is str:
13-
return "\"" + v + "\""
14+
return '"' + v + '"'
1415
# bool column
1516
return str(v)
1617

18+
1719
def parseData(data):
18-
rows = [{ }, { }]
20+
rows = [{}, {}]
1921
for row in data:
2022
d = map(quote_if_needed, row)
2123
provenance = row[-1]
2224
targetRows = rows[1] if provenance.endswith("generated") else rows[0]
23-
helpers.insert_update(targetRows, row[0], " - [" + ', '.join(d) + ']\n')
25+
helpers.insert_update(targetRows, row[0], " - [" + ", ".join(d) + "]\n")
2426

2527
return rows
2628

29+
2730
class Converter:
2831
def __init__(self, language, dbDir):
2932
self.language = language
3033
self.dbDir = dbDir
31-
self.codeQlRoot = subprocess.check_output(["git", "rev-parse", "--show-toplevel"]).decode("utf-8").strip()
34+
self.codeQlRoot = (
35+
subprocess.check_output(["git", "rev-parse", "--show-toplevel"])
36+
.decode("utf-8")
37+
.strip()
38+
)
3239
self.extDir = os.path.join(self.codeQlRoot, f"{self.language}/ql/lib/ext/")
3340
self.dirname = "modelconverter"
3441
self.modelFileExtension = ".model.yml"
3542
self.workDir = tempfile.mkdtemp()
3643

37-
3844
def runQuery(self, query):
39-
print('########## Querying: ', query)
40-
queryFile = os.path.join(self.codeQlRoot, f"{self.language}/ql/src/utils/{self.dirname}", query)
45+
print("########## Querying: ", query)
46+
queryFile = os.path.join(
47+
self.codeQlRoot, f"{self.language}/ql/src/utils/{self.dirname}", query
48+
)
4149
resultBqrs = os.path.join(self.workDir, "out.bqrs")
4250

43-
helpers.run_cmd(['codeql', 'query', 'run', queryFile, '--database', self.dbDir, '--output', resultBqrs], "Failed to generate " + query)
51+
helpers.run_cmd(
52+
[
53+
"codeql",
54+
"query",
55+
"run",
56+
queryFile,
57+
"--database",
58+
self.dbDir,
59+
"--output",
60+
resultBqrs,
61+
],
62+
"Failed to generate " + query,
63+
)
4464
return helpers.readData(self.workDir, resultBqrs)
4565

46-
4766
def asAddsTo(self, rows, predicate):
48-
extensions = [{ }, { }]
67+
extensions = [{}, {}]
4968
for i in range(2):
5069
for key in rows[i]:
51-
extensions[i][key] = helpers.addsToTemplate.format(f"codeql/{self.language}-all", predicate, rows[i][key])
52-
53-
return extensions
70+
extensions[i][key] = helpers.addsToTemplate.format(
71+
f"codeql/{self.language}-all", predicate, rows[i][key]
72+
)
5473

74+
return extensions
5575

5676
def getAddsTo(self, query, predicate):
5777
data = self.runQuery(query)
5878
rows = parseData(data)
5979
return self.asAddsTo(rows, predicate)
6080

61-
6281
def makeContent(self):
6382
summaries = self.getAddsTo("ExtractSummaries.ql", helpers.summaryModelPredicate)
6483
sources = self.getAddsTo("ExtractSources.ql", helpers.sourceModelPredicate)
6584
sinks = self.getAddsTo("ExtractSinks.ql", helpers.sinkModelPredicate)
6685
neutrals = self.getAddsTo("ExtractNeutrals.ql", helpers.neutralModelPredicate)
67-
return [helpers.merge(sources[0], sinks[0], summaries[0], neutrals[0]), helpers.merge(sources[1], sinks[1], summaries[1], neutrals[1])]
68-
86+
return [
87+
helpers.merge(sources[0], sinks[0], summaries[0], neutrals[0]),
88+
helpers.merge(sources[1], sinks[1], summaries[1], neutrals[1]),
89+
]
6990

7091
def save(self, extensions):
7192
# Create directory if it doesn't exist
@@ -77,9 +98,11 @@ def save(self, extensions):
7798
for entry in extensions[0]:
7899
with open(self.extDir + "/" + entry + self.modelFileExtension, "w") as f:
79100
f.write(extensionTemplate.format(extensions[0][entry]))
80-
101+
81102
for entry in extensions[1]:
82-
with open(self.extDir + "/generated/" + entry + self.modelFileExtension, "w") as f:
103+
with open(
104+
self.extDir + "/generated/" + entry + self.modelFileExtension, "w"
105+
) as f:
83106
f.write(extensionTemplate.format(extensions[1][entry]))
84107

85108
def run(self):

misc/scripts/models-as-data/helpers.py

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,37 +14,53 @@
1414
data:
1515
{2}"""
1616

17+
1718
def remove_dir(dirName):
1819
if os.path.isdir(dirName):
1920
shutil.rmtree(dirName)
2021
print("Removed directory:", dirName)
2122

23+
2224
def run_cmd(cmd, msg="Failed to run command"):
23-
print('Running ' + ' '.join(cmd))
25+
print("Running " + " ".join(cmd))
2426
if subprocess.check_call(cmd):
2527
print(msg)
2628
exit(1)
2729

30+
2831
def readData(workDir, bqrsFile):
2932
generatedJson = os.path.join(workDir, "out.json")
30-
print('Decoding BQRS to JSON.')
31-
run_cmd(['codeql', 'bqrs', 'decode', bqrsFile, '--output', generatedJson, '--format=json'], "Failed to decode BQRS.")
33+
print("Decoding BQRS to JSON.")
34+
run_cmd(
35+
[
36+
"codeql",
37+
"bqrs",
38+
"decode",
39+
bqrsFile,
40+
"--output",
41+
generatedJson,
42+
"--format=json",
43+
],
44+
"Failed to decode BQRS.",
45+
)
3246

3347
with open(generatedJson) as f:
3448
results = json.load(f)
3549

3650
try:
37-
return results['#select']['tuples']
51+
return results["#select"]["tuples"]
3852
except KeyError:
39-
print('Unexpected JSON output - no tuples found')
53+
print("Unexpected JSON output - no tuples found")
4054
exit(1)
4155

56+
4257
def insert_update(rows, key, value):
4358
if key in rows:
4459
rows[key] += value
4560
else:
4661
rows[key] = value
4762

63+
4864
def merge(*dicts):
4965
merged = {}
5066
for d in dicts:

0 commit comments

Comments
 (0)