forked from pvlib/pvlib-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathupdate_top_ranking_issues.py
More file actions
81 lines (64 loc) · 2.23 KB
/
Copy pathupdate_top_ranking_issues.py
File metadata and controls
81 lines (64 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import os
import itertools
from datetime import datetime, timedelta
from github import Github
from github.Issue import Issue
from github.Repository import Repository
def main():
start_time: datetime = datetime.now()
# --- Initialization ---
# GitHub Workflow will pass in the token as an environment variable,
# but we can place it in our env when running the script locally,
# for convenience
local_github_token: str | None = None
github_token: str | None = (
local_github_token or os.getenv("GITHUB_ACCESS_TOKEN")
)
github = Github(github_token)
# repository name
repo_name: str = "pvlib/pvlib-python"
repository: Repository = github.get_repo(repo_name)
# Number of top issues to list
MAX_ISSUES = 19
TOP_ISSUES_CARD_NUMBER = 2196
# Rate limiting
remaining_requests_before: int = github.rate_limiting[0]
print(f"Remaining requests before: {remaining_requests_before}")
# --- Actions ---
# Get sorted issues
query: str = (
f'repo:{repository.full_name} is:open is:issue sort:reactions-+1-desc'
)
issues = github.search_issues(query)
# Format
ranked_issues = []
# Continuous number generator for the numbered list, starts at 1
index_generator = itertools.count(1)
for issue in issues:
# Don't include the overview card (skip to next iteration)
if issue.number == TOP_ISSUES_CARD_NUMBER:
continue
# Get numbered list item index from generator
i = next(index_generator)
if i >= MAX_ISSUES:
break
markdown_bullet_point: str = (
f"{issue.html_url} " +
f"({issue._rawData['reactions']['+1']} :thumbsup:)"
)
markdown_bullet_point = f"{i}. {markdown_bullet_point}"
ranked_issues.append(markdown_bullet_point)
# edit top issues
top_issues_card: Issue = repository.get_issue(
number=TOP_ISSUES_CARD_NUMBER
)
header = "Top Ranking Issues"
new_body = header + "\n" + "\n".join(ranked_issues)
top_issues_card.edit(
body=new_body
)
print(top_issues_card.body)
run_duration: timedelta = datetime.now() - start_time
print(run_duration)
if __name__ == "__main__":
main()