mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Update scripts/bootstrap_history.py for python 3 / pygithub
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user