File size: 1,500 Bytes
9ea491e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
"""Render README.md from card/README.template.md, release.json, benchmark results and demo transcripts.

Usage: python scripts/render_card.py
Numbers and demo outputs are always read from their result files, never typed into the card.
"""
import json
from pathlib import Path

ROOT = Path(__file__).resolve().parent.parent


def load(rel):
    return json.loads((ROOT / rel).read_text(encoding="utf-8"))


def donation_links(cfg):
    return [(name, url) for name, url in cfg["donations"].items() if url]


def main():
    cfg = load("release.json")
    bench = load("benchmarks/results.json")
    demos = {r["demo"]: r for r in load("examples/transcripts.json")["results"]}
    links = donation_links(cfg)

    values = {
        "NS": cfg["hf_namespace"],
        "REPO": cfg["repo_name"],
        "DONATE_TOP": " · ".join(f"[☕ {name}]({url})" for name, url in links),
        "DONATE_LIST": "\n".join(f"- **[{name}]({url})**" for name, url in links),
    }
    for key, value in bench.items():
        values[f"BENCH_{key}"] = str(value)
    for name, demo in demos.items():
        values[f"DEMO_{name}"] = demo["content"].strip()
        values[f"STATS_{name}"] = f"{demo['tokens']} tokens, {demo['seconds']} s"

    text = (ROOT / "card" / "README.template.md").read_text(encoding="utf-8")
    for key, value in values.items():
        text = text.replace(f"@@{key}@@", value)
    (ROOT / "README.md").write_text(text, encoding="utf-8", newline="\n")


if __name__ == "__main__":
    main()