Skip to content

Commit 8e0d820

Browse files
committed
repositories contributed to will count forked repositories even if IGNORE_FORKED_REPOSITORIES flag is set
1 parent fd37a98 commit 8e0d820

File tree

2 files changed

+30
-11
lines changed

2 files changed

+30
-11
lines changed

generate_images.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,11 @@ async def main() -> None:
109109
exclude_langs = os.getenv("EXCLUDED_LANGS")
110110
exclude_langs = ({x.strip() for x in exclude_langs.split(",")}
111111
if exclude_langs else None)
112+
ignore_forked_repos = len(os.getenv("IGNORE_FORKED_REPOSITORIES")) != 0
112113
async with aiohttp.ClientSession() as session:
113114
s = Stats(user, access_token, session, exclude_repos=exclude_repos,
114-
exclude_langs=exclude_langs)
115+
exclude_langs=exclude_langs,
116+
ignore_forked_repos=ignore_forked_repos)
115117
await asyncio.gather(generate_languages(s), generate_overview(s))
116118

117119

github_stats.py

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -232,10 +232,12 @@ class Stats(object):
232232
def __init__(self, username: str, access_token: str,
233233
session: aiohttp.ClientSession,
234234
exclude_repos: Optional[Set] = None,
235-
exclude_langs: Optional[Set] = None):
235+
exclude_langs: Optional[Set] = None,
236+
ignore_forked_repos: bool = False):
236237
self.username = username
237238
self._exclude_repos = set() if exclude_repos is None else exclude_repos
238239
self._exclude_langs = set() if exclude_langs is None else exclude_langs
240+
self._ignore_forked_repos = ignore_forked_repos
239241
self.queries = Queries(username, access_token, session)
240242

241243
self._name = None
@@ -245,11 +247,7 @@ def __init__(self, username: str, access_token: str,
245247
self._languages = None
246248
self._repos = None
247249
self._lines_changed = None
248-
self._views = None
249-
250-
self._ignore_forked_repositories = False
251-
if len(os.getenv("IGNORE_FORKED_REPOSITORIES")) != 0:
252-
self._ignore_forked_repositories = True
250+
self._views = None
253251

254252
async def to_str(self) -> str:
255253
"""
@@ -264,7 +262,7 @@ async def to_str(self) -> str:
264262
Stargazers: {await self.stargazers:,}
265263
Forks: {await self.forks:,}
266264
All-time contributions: {await self.total_contributions:,}
267-
Repositories with contributions: {len(await self.repos)}
265+
Repositories with contributions: {len(await self.all_repos)}
268266
Lines of code added: {lines_changed[0]:,}
269267
Lines of code deleted: {lines_changed[1]:,}
270268
Lines of code changed: {lines_changed[0] + lines_changed[1]:,}
@@ -280,7 +278,8 @@ async def get_stats(self) -> None:
280278
self._forks = 0
281279
self._languages = dict()
282280
self._repos = set()
283-
281+
self._ignored_repos = set()
282+
284283
next_owned = None
285284
next_contrib = None
286285
while True:
@@ -310,9 +309,14 @@ async def get_stats(self) -> None:
310309
.get("repositories", {}))
311310

312311
repos = owned_repos.get("nodes", [])
313-
if not self._ignore_forked_repositories:
312+
if not self._ignore_forked_repos:
314313
repos += contrib_repos.get("nodes", [])
315-
314+
else:
315+
for repo in contrib_repos.get("nodes", []):
316+
name = repo.get("nameWithOwner")
317+
if name in self._ignored_repos or name in self._exclude_repos:
318+
continue
319+
self._ignored_repos.add(name)
316320

317321
for repo in repos:
318322
name = repo.get("nameWithOwner")
@@ -418,6 +422,19 @@ async def repos(self) -> List[str]:
418422
await self.get_stats()
419423
assert(self._repos is not None)
420424
return self._repos
425+
426+
@property
427+
async def all_repos(self) -> List[str]:
428+
"""
429+
:return: list of names of user's repos with contributed repos included
430+
irrespective of whether the ignore flag is set or not
431+
"""
432+
if self._repos is not None and self._ignored_repos is not None:
433+
return self._repos | self._ignored_repos
434+
await self.get_stats()
435+
assert(self._repos is not None)
436+
assert(self._ignored_repos is not None)
437+
return self._repos | self._ignored_repos
421438

422439
@property
423440
async def total_contributions(self) -> int:

0 commit comments

Comments
 (0)