def relabel_issue()

in dev/release/label_issues.py [0:0]


def relabel_issue(arrow_repo, issue_number):
    #print(issue_number, 'fetching issue')
    issue = arrow_repo.get_issue(issue_number)
    print('considering issue', issue.html_url)
    linked_issues = get_cross_referenced_issues(issue)
    #print('  ', 'cross referenced issues:', linked_issues)

    # Figure out what labels need to be added, if any
    existing_labels = set()
    for label in issue.labels:
        existing_labels.add(label.name)

    # find all labels to add
    for linked_issue in linked_issues:
        if linked_issue.pull_request is None:
            print('  ', 'not pull request, skipping', linked_issue.html_url)
            continue

        if linked_issue.repository.name != 'arrow-rs':
            print('  ', 'not in arrow-rs, skipping', linked_issue.html_url)
            continue

        print('  ', 'finding labels for linked pr', linked_issue.html_url)
        linked_labels = set()
        for label in linked_issue.labels:
            linked_labels.add(label.name)
            #print('  ', 'existing labels:', existing_labels)

            labels_to_add = linked_labels.difference(existing_labels)

            # remove any blacklist labels, if any
            for l in BLACKLIST_LABELS:
                labels_to_add.discard(l)

            if len(labels_to_add) > 0:
                print('  ', 'adding labels: ', labels_to_add, 'to', issue.number)
                for label in labels_to_add:
                    issue.add_to_labels(label)
                    print('    ', 'added', label)
                    existing_labels.add(label)

                # leave a note about what updated these labels
                issue.create_comment('`label_issue.py` automatically added labels {} from #{}'.format(labels_to_add, linked_issue.number))