From 894f6b6d1d2b685ebca91ab6ef2684c2906b1b16 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 20 Mar 2025 14:15:08 -0700 Subject: [PATCH] feat: Add function to generate markdown badges with formatted stats --- scripts/badges.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/scripts/badges.py b/scripts/badges.py index 663423362..966b66f7e 100755 --- a/scripts/badges.py +++ b/scripts/badges.py @@ -99,6 +99,47 @@ def get_latest_release_aider_percentage(): return 0, "unknown" +def format_number(number): + """ + Format a large number with K, M, B suffixes with 1 decimal place + """ + if number is None: + return "0" + + if number >= 1_000_000_000: + return f"{number/1_000_000_000:.1f}B" + elif number >= 1_000_000: + return f"{number/1_000_000:.1f}M" + elif number >= 1_000: + return f"{number/1_000:.1f}K" + else: + return str(number) + + +def generate_badges_md(downloads, stars, aider_percentage): + """ + Generate markdown for badges with updated values + """ + # Format downloads to 1 decimal place with M suffix + downloads_formatted = format_number(downloads) + + # Round aider percentage to whole number + aider_percent_rounded = round(aider_percentage) + + markdown = f""" GitHub Stars + PyPI Downloads + Tokens per week + OpenRouter Ranking + Singularity""" + + return markdown + + def main(): # Load environment variables from .env file load_dotenv() @@ -119,6 +160,9 @@ def main(): default="paul-gauthier/aider", help="GitHub repository (default: paul-gauthier/aider)", ) + parser.add_argument( + "--markdown", action="store_true", help="Generate markdown badges block" + ) args = parser.parse_args() # Get API key from args or environment variable (which may be loaded from .env) @@ -142,6 +186,11 @@ def main(): # Get Aider contribution percentage in latest release percentage, version = get_latest_release_aider_percentage() print(f"Aider wrote {percentage:.2f}% of code in the LATEST release ({version})") + + # Generate and print badges markdown + badges_md = generate_badges_md(total_downloads, stars, percentage) + print("\nBadges markdown:\n") + print(badges_md) if __name__ == "__main__":