From 9c441ded2223c27be191fd8ae6e0e5ad4c5bb8e5 Mon Sep 17 00:00:00 2001 From: Junya Morioka Date: Thu, 4 Dec 2025 23:11:07 +0900 Subject: [PATCH] feat: Add graph of download history --- .github/workflows/update-download-stats.yml | 39 ++++ README.md | 28 +++ docs/data/download_graph.png | Bin 0 -> 93545 bytes docs/data/download_history.json | 30 +++ update_download_stats.py | 193 ++++++++++++++++++++ 5 files changed, 290 insertions(+) create mode 100644 .github/workflows/update-download-stats.yml create mode 100644 docs/data/download_graph.png create mode 100644 docs/data/download_history.json create mode 100644 update_download_stats.py diff --git a/.github/workflows/update-download-stats.yml b/.github/workflows/update-download-stats.yml new file mode 100644 index 0000000..5e6cfa6 --- /dev/null +++ b/.github/workflows/update-download-stats.yml @@ -0,0 +1,39 @@ +name: Update Download Statistics + +on: + schedule: + # Run daily at 00:00 UTC + - cron: "0 0 * * *" + workflow_dispatch: + +jobs: + update-stats: + name: Update download statistics and graph + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + + - name: Install dependencies + run: | + pip install requests matplotlib + + - name: Update download statistics + run: | + python update_download_stats.py + + - name: Commit and push changes + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add docs/data/download_history.json docs/data/download_graph.png + git diff --staged --quiet || git commit -m "chore: update download statistics + + Update download statistics and graph for $(date -u +%Y-%m-%d)" + git push diff --git a/README.md b/README.md index fa865e1..d1ff186 100644 --- a/README.md +++ b/README.md @@ -136,6 +136,34 @@ If you use this repository in your research and find it helpful, please cite the } ``` +## Star History and Download Statistics + +
+ + + + + Star History Chart + + + Download Statistics +
+ ## Original Repository [repo](https://github.com/Dao-AILab/flash-attention) + +```bibtex +@inproceedings{dao2022flashattention, + title={Flash{A}ttention: Fast and Memory-Efficient Exact Attention with {IO}-Awareness}, + author={Dao, Tri and Fu, Daniel Y. and Ermon, Stefano and Rudra, Atri and R{\'e}, Christopher}, + booktitle={Advances in Neural Information Processing Systems (NeurIPS)}, + year={2022} +} +@inproceedings{dao2023flashattention2, + title={Flash{A}ttention-2: Faster Attention with Better Parallelism and Work Partitioning}, + author={Dao, Tri}, + booktitle={International Conference on Learning Representations (ICLR)}, + year={2024} +} +``` diff --git a/docs/data/download_graph.png b/docs/data/download_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c6dc3ef40b407634a2cd4710e885c55132bf6870 GIT binary patch literal 93545 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 literal 0 HcmV?d00001 diff --git a/docs/data/download_history.json b/docs/data/download_history.json new file mode 100644 index 0000000..7c30495 --- /dev/null +++ b/docs/data/download_history.json @@ -0,0 +1,30 @@ +[ + { + "timestamp": "2024-10-27T00:00:00+00:00", + "total_downloads": 0 + }, + { + "timestamp": "2025-12-04T13:25:33.785415+00:00", + "total_downloads": 906514 + }, + { + "timestamp": "2025-12-04T13:26:09.117076+00:00", + "total_downloads": 906524 + }, + { + "timestamp": "2025-12-04T13:46:48.639327+00:00", + "total_downloads": 906741 + }, + { + "timestamp": "2025-12-04T13:53:02.674280+00:00", + "total_downloads": 906828 + }, + { + "timestamp": "2025-12-04T13:53:35.050423+00:00", + "total_downloads": 906834 + }, + { + "timestamp": "2025-12-04T13:56:13.655744+00:00", + "total_downloads": 906837 + } +] \ No newline at end of file diff --git a/update_download_stats.py b/update_download_stats.py new file mode 100644 index 0000000..c48e47f --- /dev/null +++ b/update_download_stats.py @@ -0,0 +1,193 @@ +#!/usr/bin/env python3 +""" +Fetch GitHub release download statistics and generate a graph. + +This script fetches download counts from GitHub API, stores historical data, +and generates a graph showing download trends over time. +""" + +import json +from datetime import datetime, timezone +from pathlib import Path + +import matplotlib.pyplot as plt +import requests + + +def fetch_download_stats(owner: str, repo: str) -> dict: + """ + Fetch download statistics from GitHub API. + + Args: + owner: Repository owner + repo: Repository name + + Returns: + dict: Dictionary containing total downloads and timestamp + """ + url = f"https://api.github.com/repos/{owner}/{repo}/releases" + headers = {} + + # Fetch all releases with pagination + all_releases = [] + page = 1 + per_page = 100 # Maximum per page allowed by GitHub API + + while True: + params = {"page": page, "per_page": per_page} + response = requests.get(url, headers=headers, params=params) + response.raise_for_status() + + releases = response.json() + if not releases: + break + + all_releases.extend(releases) + page += 1 + + # Check if there are more pages + if len(releases) < per_page: + break + + print(f"Fetched {len(all_releases)} releases") + + total_downloads = 0 + release_data = [] + + for release in all_releases: + release_downloads = 0 + for asset in release.get("assets", []): + release_downloads += asset.get("download_count", 0) + + total_downloads += release_downloads + release_data.append( + { + "tag": release["tag_name"], + "name": release["name"], + "downloads": release_downloads, + "created_at": release["created_at"], + } + ) + + return { + "total_downloads": total_downloads, + "releases": release_data, + } + + +def load_history(filepath: Path) -> list: + """ + Load historical download statistics from JSON file. + + Args: + filepath: Path to the history JSON file + + Returns: + list: List of historical data points + """ + if not filepath.exists(): + return [] + + with open(filepath, "r") as f: + return json.load(f) + + +def save_history(filepath: Path, history: list) -> None: + """ + Save historical download statistics to JSON file. + + Args: + filepath: Path to the history JSON file + history: List of historical data points + """ + filepath.parent.mkdir(parents=True, exist_ok=True) + with open(filepath, "w") as f: + json.dump(history, f, indent=2) + + +def generate_graph(history: list, output_path: Path, label: str = "") -> None: + """ + Generate a download statistics graph in Star History (XKCD) style. + """ + if len(history) < 2: + print("Not enough data to generate a graph (need at least 2 data points)") + return + + dates = [datetime.fromisoformat(entry["timestamp"]) for entry in history] + downloads = [entry["total_downloads"] for entry in history] + + # --- XKCD Style Context --- + # これにより手書き風のエフェクト(歪んだ線、手書きフォント)が適用されます + with plt.xkcd(): + fig, ax = plt.subplots(figsize=(8, 6)) + + # Star History風の色(オレンジ/赤系) + line_color = "#f05133" + + # プロット + ax.plot( + dates, + downloads, + color=line_color, + linewidth=3, + label=label if label else "Downloads", + ) + + if label: + legend = ax.legend(loc="upper left", frameon=True, fontsize=10) + legend.get_frame().set_edgecolor("black") + legend.get_frame().set_linewidth(1.5) + + ax.spines["right"].set_color("none") + ax.spines["top"].set_color("none") + + ax.spines["bottom"].set_linewidth(1.5) + ax.spines["left"].set_linewidth(1.5) + + plt.title("Download History", fontsize=16, y=1.05) + plt.xlabel("Date", fontsize=12) + plt.ylabel("Total Downloads", fontsize=12) + + ax.set_ylim(bottom=0) + + ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, p: f"{int(x):,}")) + + fig.autofmt_xdate(rotation=0, ha="center") + + plt.tight_layout() + + output_path.parent.mkdir(parents=True, exist_ok=True) + plt.savefig(output_path, dpi=150, bbox_inches="tight", facecolor="white") + print(f"Graph saved to {output_path}") + + +def main(): + """Main function to update download statistics and generate graph.""" + owner = "mjun0812" + repo = "flash-attention-prebuild-wheels" + history_file = Path("docs/data/download_history.json") + graph_output = Path("docs/data/download_graph.png") + + # Fetch current stats + print("Fetching download statistics from GitHub API...") + current_stats = fetch_download_stats(owner, repo) + print(f"Total downloads: {current_stats['total_downloads']}") + + # Load and update history + history = load_history(history_file) + history.append( + { + "timestamp": datetime.now(timezone.utc).isoformat(), + "total_downloads": current_stats["total_downloads"], + } + ) + + # Save updated history + save_history(history_file, history) + print(f"History saved to {history_file}") + + generate_graph(history, graph_output, f"{owner}/{repo}") + + +if __name__ == "__main__": + main()