in utils/generate-examples.py [0:0]
def main():
for filepath in asciidocs_dir.iterdir():
if filepath.name.endswith(".asciidoc"):
filepath.unlink()
if not flight_recorder_dir.exists() or not report_path.exists():
raise RuntimeError(
f"clients-flight-recorder repository not checked out at {flight_recorder_dir}"
)
with report_path.open() as f:
report = json.loads(f.read())
t = jinja_env.get_template("example")
for exm in report:
if exm["lang"] != "console":
continue
if exm["source_location"]["file"] not in files_to_generate:
continue
parsed_sources = []
for src in exm["parsed_source"]:
params = (src.get("params") or {}).copy()
params.update(src.get("query") or {})
params = {
k: (list(v.split(",")) if isinstance(v, str) and "," in v else v)
for k, v in params.items()
}
parsed_sources.append(
ParsedSource(
api=src["api"],
params={
substitutions.get(k, k): repr(v) for k, v in params.items()
},
body=src.get("body", None) or None,
)
)
tmp_path = Path(tempfile.mktemp())
with tmp_path.open(mode="w") as f:
f.write(t.render(parsed_sources=parsed_sources))
blacken(tmp_path)
with tmp_path.open(mode="r") as f:
data = f.read()
data = data.rstrip().replace(",)", ")")
tmp_path.unlink()
with (asciidocs_dir / f"{exm['digest']}.asciidoc").open(mode="w") as f:
f.truncate()
f.write(
f"""// {exm['source_location']['file']}:{exm['source_location']['line']}
[source, python]
----
{data}
----"""
)