-
Notifications
You must be signed in to change notification settings - Fork 1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* reset top ranking issues * flake8 fixes * Create top-ranked-issues.yml * Update f-string formatting * Change Cron job to every 10 minutes * Add quotes to cron schedule * excluding the overview card from the ranked list and changing token name to GITHUB_TOKEN * changed back to GITHUB_ACCESS_TOKEN * Update scripts/update_top_ranking_issues.py Co-authored-by: Echedey Luis <[email protected]> * added break condnition on generator --------- Co-authored-by: Adam R. Jensen <[email protected]> Co-authored-by: Echedey Luis <[email protected]>
- Loading branch information
1 parent
f200e24
commit 2c61a64
Showing
2 changed files
with
83 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,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() |