Update scripts/bootstrap_history.py for python 3 / pygithub

This commit is contained in:
mvdbeek
2020-02-26 10:15:33 +01:00
parent d5c3f93824
commit 2dc072609f
+30 -25
View File
@@ -6,6 +6,7 @@ from __future__ import print_function
import calendar
import datetime
import json
import logging
import os
import re
import string
@@ -18,12 +19,14 @@ try:
except ImportError:
requests = None
try:
from pygithub3 import Github
from github import Github
except ImportError:
Github = None
from six import string_types
from six.moves.urllib.parse import urljoin
log = logging.getLogger(__name__)
PROJECT_DIRECTORY = os.path.join(os.path.dirname(__file__), os.pardir)
GALAXY_VERSION_FILE = os.path.join(PROJECT_DIRECTORY, "lib", "galaxy", "version.py")
PROJECT_OWNER = "galaxyproject"
@@ -40,7 +43,7 @@ DEVTEAM = [
"tnabtaf", "natefoo", "jgoecks",
"guerler", "jennaj", "nekrut", "jxtx",
"VJalili", "WilliamHolden", "Nerdinacan",
"ic4f",
"ic4f", "mvdbeek"
]
TEMPLATE = """
@@ -350,7 +353,7 @@ def do_release(argv):
template = template.replace(".. enhancement", "%s\n\n.. enhancement" % enhancement_targets)
template = template.replace(".. bug", "%s\n\n.. bug" % bug_targets)
release_info = string.Template(template).safe_substitute(release=release_name)
open(release_file, "w").write(release_info.encode("utf-8"))
open(release_file, "w").write(release_info)
month = int(release_name.split(".")[1])
month_name = calendar.month_name[month]
year = release_name.split(".")[0]
@@ -379,7 +382,7 @@ def do_release(argv):
next_release_file = _release_file(next_version + "_announce.rst")
next_announce = NEXT_TEMPLATE.substitute(**next_version_params)
open(next_release_file, "w").write(next_announce.encode("utf-8"))
open(next_release_file, "w").write(next_announce)
releases_index = _release_file("index.rst")
releases_index_contents = _read_file(releases_index)
releases_index_contents = releases_index_contents.replace(".. announcements\n", ".. announcements\n " + next_version + "_announce\n")
@@ -471,29 +474,30 @@ def _release_dates(version):
return freeze_date, release_date
def _get_prs(release_name, state="closed"):
def _get_prs(release_name, state="closed", pr_cache=[]):
github = _github_client()
pull_requests = github.pull_requests.list(
repo = github.get_repo("%s/%s" % (PROJECT_OWNER, PROJECT_NAME))
add_to_cache = not pr_cache
pull_requests = pr_cache or repo.get_pulls(
state=state,
user=PROJECT_OWNER,
repo=PROJECT_NAME,
)
reached_old_prs = False
for page in pull_requests:
for pr in pull_requests:
if reached_old_prs:
break
for pr in page:
if pr.created_at < datetime.datetime(2016, 11, 1, 0, 0):
reached_old_prs = True
pass
merged_at = pr.merged_at
milestone = pr.milestone
proper_state = state != "closed" or merged_at
if not proper_state or not milestone or milestone['title'] != release_name:
continue
yield pr
if pr.created_at < datetime.datetime(2018, 11, 1, 0, 0):
reached_old_prs = True
pass
merged_at = pr.merged_at
milestone = pr.milestone
proper_state = state != "closed" or merged_at
if not proper_state or not milestone or milestone.title != release_name:
continue
if add_to_cache:
pr_cache.append(pr)
yield pr
def main(argv):
@@ -585,8 +589,8 @@ def main(argv):
owner = None
if ident.startswith("pr"):
pull_request = ident[len("pr"):]
user = req["head"]["user"]
owner = user["login"]
user = req["head"].user
owner = user.login
if owner in DEVTEAM:
owner = None
text = ".. _Pull Request {0}: {1}/pull/{0}".format(pull_request, PROJECT_URL)
@@ -615,7 +619,7 @@ def main(argv):
to_doc = wrap(to_doc)
if text_target is not None:
history = extend_target(text_target, to_doc, history)
if req and 'labels' in req:
if req and req['labels']:
labels = req['labels']
if 'area/datatypes' in labels:
user_announce = extend_target("datatypes", to_doc, user_announce)
@@ -630,12 +634,12 @@ def main(argv):
def _read_file(path):
with open(path, "r") as f:
return f.read().decode("utf-8")
return f.read()
def _write_file(path, contents):
with open(path, "w") as f:
f.write(contents.encode("utf-8"))
f.write(contents)
def _text_target(github, pull_request, labels=None):
@@ -713,7 +717,7 @@ def _text_target(github, pull_request, labels=None):
def _pr_to_labels(pr):
labels = [l["name"].lower() for l in pr.labels]
labels = [l.name.lower() for l in pr.labels]
return labels
@@ -740,6 +744,7 @@ def _github_client():
github_json = os.path.expanduser("~/.github.json")
github = Github(**json.load(open(github_json, "r")))
except Exception:
log.exception()
github = None
return github