diff --git a/build.py b/build.py index 7854a8d..9db178e 100755 --- a/build.py +++ b/build.py @@ -7,6 +7,7 @@ import json import os import sys import typing +from collections import Counter from datetime import date, datetime, timedelta import pytz @@ -26,18 +27,18 @@ url = f"https://{hostname}/api/v1/repos/issues/search" def download_bugs(state: str) -> list[Bug]: """Get all bugs from forgejo.""" - # params: dict[str, str | int] = {} - all_bugs: list[Bug] = [] page = 0 + headers = {"Authorization": "token " + token} while bugs := requests.get( url, - headers={"Authorization": "token " + token}, + headers=headers, params=typing.cast(CallParams, {"state": state, "page": page}), ).json(): if isinstance(bugs, dict): print(bugs) sys.exit(1) + assert isinstance(bugs, list) all_bugs += bugs page += 1 @@ -70,8 +71,8 @@ def parse_date(date_str: str | None) -> date | None: def count_open_bugs(bug_reports: list[Bug]) -> list[tuple[str, int]]: """Count the number of open bugs for each date based on a list of bug reports.""" - open_dates: dict[date, int] = {} - close_dates: dict[date, int] = {} + open_dates: Counter[date] = Counter() + close_dates: Counter[date] = Counter() # Process each bug report seen: set[int] = set() @@ -80,12 +81,12 @@ def count_open_bugs(bug_reports: list[Bug]) -> list[tuple[str, int]]: continue seen.add(report["id"]) open_date = parse_date(report["created_at"]) - if open_date: - open_dates[open_date] = open_dates.get(open_date, 0) + 1 + assert open_date + open_dates[open_date] += 1 close_date = parse_date(report["closed_at"]) if close_date: - close_dates[close_date] = close_dates.get(close_date, 0) + 1 + close_dates[close_date] += 1 # Create a date range from the earliest open date to the latest close date start_date = min(open_dates.keys()) @@ -112,7 +113,8 @@ def main() -> None: json_data = json.dumps(open_bugs_over_time) template_html = open("template.html").read() - with open("chart.html", "w") as out: + dest = config.get("output", "dest") + with open(dest, "w") as out: out.write(template_html.replace("jsonData = []", "jsonData = " + json_data))