From ad1f7147dbefe4d634ba93d9e71fec26cf7c365e Mon Sep 17 00:00:00 2001 From: Jacob Strieb Date: Thu, 17 Dec 2020 18:34:26 -0500 Subject: [PATCH] Add ability to exclude languages from images Address #9 --- generate_images.py | 11 ++++++++--- github_stats.py | 5 ++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/generate_images.py b/generate_images.py index 8be0c07bc6d..052e96d75bb 100644 --- a/generate_images.py +++ b/generate_images.py @@ -99,10 +99,15 @@ async def main() -> None: # access_token = os.getenv("GITHUB_TOKEN") raise Exception("A personal access token is required to proceed!") user = os.getenv("GITHUB_ACTOR") - excluded = os.getenv("EXCLUDED") - excluded = {x.strip() for x in excluded.split(",")} if excluded else None + exclude_repos = os.getenv("EXCLUDED") + exclude_repos = ({x.strip() for x in exclude_repos.split(",")} + if exclude_repos else None) + exclude_langs = os.getenv("EXCLUDED_LANGS") + exclude_langs = ({x.strip() for x in exclude_langs.split(",")} + if exclude_langs else None) async with aiohttp.ClientSession() as session: - s = Stats(user, access_token, session, exclude_repos=excluded) + s = Stats(user, access_token, session, exclude_repos=exclude_repos, + exclude_langs=exclude_langs) await asyncio.gather(generate_languages(s), generate_overview(s)) diff --git a/github_stats.py b/github_stats.py index 6d418fe1b7f..7744209ddc3 100644 --- a/github_stats.py +++ b/github_stats.py @@ -231,9 +231,11 @@ class Stats(object): """ def __init__(self, username: str, access_token: str, session: aiohttp.ClientSession, - exclude_repos: Optional[Set] = None): + exclude_repos: Optional[Set] = None, + exclude_langs: Optional[Set] = None): self.username = username self._exclude_repos = set() if exclude_repos is None else exclude_repos + self._exclude_langs = set() if exclude_langs is None else exclude_langs self.queries = Queries(username, access_token, session) self._name = None @@ -316,6 +318,7 @@ async def get_stats(self) -> None: for lang in repo.get("languages", {}).get("edges", []): name = lang.get("node", {}).get("name", "Other") languages = await self.languages + if name in self._exclude_langs: continue if name in languages: languages[name]["size"] += lang.get("size", 0) languages[name]["occurrences"] += 1