示例#1
0
def should_backport(labels=None, milestone=None):
    """return set of PRs marked for backport"""
    if labels is None and milestone is None:
        raise ValueError("Specify one of labels or milestone.")
    elif labels is not None and milestone is not None:
        raise ValueError("Specify only one of labels or milestone.")
    if labels is not None:
        issues = get_issues_list("statsmodels/statsmodels",
                labels=labels,
                state='closed',
                auth=True,
        )
    else:
        milestone_id = get_milestone_id("statsmodels/statsmodels", milestone,
                auth=True)
        issues = get_issues_list("statsmodels/statsmodels",
                milestone=milestone_id,
                state='closed',
                auth=True,
        )

    should_backport = []
    merged_dates = []
    for issue in issues:
        if not is_pull_request(issue):
            continue
        pr = get_pull_request("statsmodels/statsmodels", issue['number'],
                auth=True)
        if not pr['merged']:
            print ("Marked PR closed without merge: %i" % pr['number'])
            continue
        if pr['number'] not in should_backport:
            merged_dates.append(pr['merged_at'])
            should_backport.append(pr['number'])
    return Series(merged_dates, index=should_backport)
示例#2
0
def should_backport(labels=None, milestone=None):
    """return set of PRs marked for backport"""
    if labels is None and milestone is None:
        raise ValueError("Specify one of labels or milestone.")
    elif labels is not None and milestone is not None:
        raise ValueError("Specify only one of labels or milestone.")
    if labels is not None:
        issues = get_issues_list("ipython/ipython",
                labels=labels,
                state='closed',
                auth=True,
        )
    else:
        milestone_id = get_milestone_id("ipython/ipython", milestone,
                auth=True)
        issues = get_issues_list("ipython/ipython",
                milestone=milestone_id,
                state='closed',
                auth=True,
        )

    should_backport = set()
    for issue in issues:
        if not is_pull_request(issue):
            continue
        pr = get_pull_request("ipython/ipython", issue['number'],
                auth=True)
        if not pr['merged']:
            print ("Marked PR closed without merge: %i" % pr['number'])
            continue
        should_backport.add(pr['number'])
    return should_backport
示例#3
0
def should_backport(labels=None, milestone=None):
    """return set of PRs marked for backport"""
    if labels is None and milestone is None:
        raise ValueError("Specify one of labels or milestone.")
    elif labels is not None and milestone is not None:
        raise ValueError("Specify only one of labels or milestone.")
    if labels is not None:
        issues = get_issues_list("statsmodels/statsmodels",
                                 labels=labels,
                                 state='closed',
                                 auth=True)
    else:
        milestone_id = get_milestone_id("statsmodels/statsmodels",
                                        milestone,
                                        auth=True)
        issues = get_issues_list("statsmodels/statsmodels",
                                 milestone=milestone_id,
                                 state='closed',
                                 auth=True)

    should_backport = []
    merged_dates = []
    for issue in issues:
        if not is_pull_request(issue):
            continue
        pr = get_pull_request("statsmodels/statsmodels",
                              issue['number'],
                              auth=True)
        if not pr['merged']:
            print("Marked PR closed without merge: %i" % pr['number'])
            continue
        if pr['number'] not in should_backport:
            merged_dates.append(pr['merged_at'])
            should_backport.append(pr['number'])
    return Series(merged_dates, index=should_backport)
示例#4
0
def should_backport(labels=None, milestone=None, project="ipython/ipython"):
    """return set of PRs marked for backport"""
    if labels is None and milestone is None:
        raise ValueError("Specify one of labels or milestone.")
    elif labels is not None and milestone is not None:
        raise ValueError("Specify only one of labels or milestone.")
    if labels is not None:
        issues = get_issues_list(project,
                                 labels=labels,
                                 state="closed",
                                 auth=True)
    else:
        milestone_id = get_milestone_id(project, milestone, auth=True)
        issues = get_issues_list(project,
                                 milestone=milestone_id,
                                 state="closed",
                                 auth=True)

    should_backport = set()
    for issue in issues:
        if not is_pull_request(issue):
            continue
        pr = get_pull_request(project, issue["number"], auth=True)
        if not pr["merged"]:
            print("Marked PR closed without merge: %i" % pr["number"])
            continue
        if pr["base"]["ref"] != "master":
            continue
        should_backport.add(pr["number"])
    return should_backport
示例#5
0
        if tz[0] == '-':
            since += td
        else:
            since -= td

    since = round_hour(since)

    milestone = opts.milestone
    project = opts.project

    print("fetching GitHub stats since %s (tag: %s, milestone: %s)" %
          (since, tag, milestone),
          file=sys.stderr)
    if milestone:
        milestone_id = get_milestone_id(project=project,
                                        milestone=milestone,
                                        auth=True)
        issues_and_pulls = get_issues_list(
            project=project,
            milestone=milestone_id,
            state='closed',
            auth=True,
        )
        issues, pulls = split_pulls(issues_and_pulls, project=project)
    else:
        issues = issues_closed_since(since, project=project, pulls=False)
        pulls = issues_closed_since(since, project=project, pulls=True)

    # For regular reports, it's nice to show them in reverse chronological order
    issues = sorted_by_field(issues, reverse=True)
    pulls = sorted_by_field(pulls, reverse=True)
示例#6
0
        since = datetime.strptime(tagday, "%Y-%m-%d %H:%M:%S")
        h = int(tz[1:3])
        m = int(tz[3:])
        td = timedelta(hours=h, minutes=m)
        if tz[0] == '-':
            since += td
        else:
            since -= td
    
    since = round_hour(since)
    
    milestone = opts.milestone

    print("fetching GitHub stats since %s (tag: %s, milestone: %s)" % (since, tag, milestone), file=sys.stderr)
    if milestone:
        milestone_id = get_milestone_id("ipython/ipython", milestone,
                auth=True)
        issues = get_issues_list("ipython/ipython",
                milestone=milestone_id,
                state='closed',
                auth=True,
        )
    else:
        issues = issues_closed_since(since, pulls=False)
    pulls = issues_closed_since(since, pulls=True)
    
    # For regular reports, it's nice to show them in reverse chronological order
    issues = sorted_by_field(issues, reverse=True)
    pulls = sorted_by_field(pulls, reverse=True)
    
    n_issues, n_pulls = map(len, (issues, pulls))
    n_total = n_issues + n_pulls
示例#7
0
        h = int(tz[1:3])
        m = int(tz[3:])
        td = timedelta(hours=h, minutes=m)
        if tz[0] == '-':
            since += td
        else:
            since -= td
    
    since = round_hour(since)
    
    milestone = opts.milestone
    project = opts.project

    print("fetching GitHub stats since %s (tag: %s, milestone: %s)" % (since, tag, milestone), file=sys.stderr)
    if milestone:
        milestone_id = get_milestone_id(project=project, milestone=milestone,
                auth=True)
        issues_and_pulls = get_issues_list(project=project,
                milestone=milestone_id,
                state='closed',
                auth=True,
        )
        issues, pulls = split_pulls(issues_and_pulls, project=project)
    else:
        issues = issues_closed_since(since, project=project, pulls=False)
        pulls = issues_closed_since(since, project=project, pulls=True)
    
    # For regular reports, it's nice to show them in reverse chronological order
    issues = sorted_by_field(issues, reverse=True)
    pulls = sorted_by_field(pulls, reverse=True)
    
    n_issues, n_pulls = map(len, (issues, pulls))
        td = timedelta(hours=h, minutes=m)
        if tz[0] == '-':
            since += td
        else:
            since -= td

    since = round_hour(since)

    milestone = opts.milestone

    print("fetching GitHub stats since %s (tag: %s, milestone: %s)" %
          (since, tag, milestone),
          file=sys.stderr)
    if milestone:
        milestone_id = get_milestone_id("ipython/ipython",
                                        milestone,
                                        auth=True)
        issues_and_pulls = get_issues_list(
            "ipython/ipython",
            milestone=milestone_id,
            state='closed',
            auth=True,
        )
        issues, pulls = split_pulls(issues_and_pulls)
    else:
        issues = issues_closed_since(since, pulls=False)
        pulls = issues_closed_since(since, pulls=True)

    # For regular reports, it's nice to show them in reverse chronological order
    issues = sorted_by_field(issues, reverse=True)
    pulls = sorted_by_field(pulls, reverse=True)
示例#9
0
import sys
from gh_api import (
    get_milestone_id,
    get_pulls_list,
    get_issues_list,
)

if __name__ == "__main__":

    if len(sys.argv) != 2:
        print(__doc__)
        sys.exit(1)

    milestone = sys.argv[1]

    milestone_id = get_milestone_id("jupyter/nbgrader", milestone)

    issues = get_issues_list("jupyter/nbgrader",
                             state='all',
                             milestone=milestone_id)

    pulls = get_pulls_list("jupyter/nbgrader",
                           state='merged',
                           milestone=milestone_id)

    users = set()
    for issue in issues:
        users.add(issue['user']['login'])
    for pull in pulls:
        users.add(pull['user']['login'])
from gh_api import (
    get_milestone_id,
    get_pulls_list,
    get_issues_list,
)

if __name__ == "__main__":

    if len(sys.argv) != 2:
        print(__doc__)
        sys.exit(1)

    milestone = sys.argv[1]

    milestone_id = get_milestone_id(
        "jupyter/nbgrader",
        milestone)

    issues = get_issues_list(
        "jupyter/nbgrader",
        state='all',
        milestone=milestone_id)

    pulls = get_pulls_list(
        "jupyter/nbgrader",
        state='merged',
        milestone=milestone_id)

    users = set()
    for issue in issues:
        users.add(issue['user']['login'])
示例#11
0
import sys
from gh_api import (
    get_milestone_id,
    get_issues_list,
)

if __name__ == "__main__":

    if len(sys.argv) != 2:
        print(__doc__)
        sys.exit(1)

    milestone = sys.argv[1]

    milestone_id = get_milestone_id(
        "jupyter/nbgrader",
        milestone,
        auth=True)

    # this returns both issues and PRs
    issues = get_issues_list(
        "jupyter/nbgrader",
        state='closed',
        milestone=milestone_id,
        auth=True)

    users = set()
    for issue in issues:
        users.add(issue['user']['login'])

    users = {user.lower(): user for user in users}
    print()