43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
from collections.abc import Iterable
|
|
|
|
|
|
def merge_activity(
|
|
github: dict[str, int],
|
|
gitea: dict[str, int],
|
|
dates: Iterable[str] | None = None,
|
|
) -> dict[str, dict[str, int]]:
|
|
keys = set(github) | set(gitea)
|
|
if dates is not None:
|
|
keys |= set(dates)
|
|
|
|
merged: dict[str, dict[str, int]] = {}
|
|
for date_key in sorted(keys):
|
|
gh = int(github.get(date_key, 0))
|
|
gt = int(gitea.get(date_key, 0))
|
|
merged[date_key] = {
|
|
"github": gh,
|
|
"gitea": gt,
|
|
"total": gh + gt,
|
|
}
|
|
return merged
|
|
|
|
|
|
def filter_activity_source(
|
|
merged: dict[str, dict[str, int]],
|
|
source: str,
|
|
) -> dict[str, dict[str, int]]:
|
|
if source == "all":
|
|
return merged
|
|
|
|
filtered: dict[str, dict[str, int]] = {}
|
|
for day, counts in merged.items():
|
|
github = counts.get("github", 0)
|
|
gitea = counts.get("gitea", 0)
|
|
if source == "github":
|
|
filtered[day] = {"github": github, "gitea": 0, "total": github}
|
|
elif source == "gitea":
|
|
filtered[day] = {"github": 0, "gitea": gitea, "total": gitea}
|
|
else:
|
|
filtered[day] = counts
|
|
return filtered
|