diff options
author | Giampaolo Rodola <g.rodola@gmail.com> | 2020-11-17 10:56:21 +0100 |
---|---|---|
committer | Giampaolo Rodola <g.rodola@gmail.com> | 2020-11-17 10:56:21 +0100 |
commit | 2d62e923eddf1129c6a6defc259091a3ff6b1e9d (patch) | |
tree | 5b872a282c9326331ec190d101ddd3abbb703637 | |
parent | 65db24ec425e4a44fbd63c42529067d9772dabe2 (diff) | |
download | psutil-2d62e923eddf1129c6a6defc259091a3ff6b1e9d.tar.gz |
refact
-rw-r--r-- | .github/workflows/issue_labels.yml | 4 | ||||
-rwxr-xr-x | scripts/internal/github_issue_labeler.py | 37 |
2 files changed, 30 insertions, 11 deletions
diff --git a/.github/workflows/issue_labels.yml b/.github/workflows/issue_labels.yml index 1d3b2dc8..c1f0c3db 100644 --- a/.github/workflows/issue_labels.yml +++ b/.github/workflows/issue_labels.yml @@ -38,6 +38,6 @@ jobs: {"keywords": ["test", "tests", "travis", "coverage", "travis", "cirrus", "appveyor", "continuous integration", "dev guide", "devguide", "sphinx", "unittest", "pytest"], "labels": ["tests"], "assignees": [""]}, {"keywords": ["Makefile"], "labels": ["unix"], "assignees": [""]}, {"keywords": ["segfault", "segmentation fault", "core dumped", "RuntimeError", "WinError", "WindowsError", "MemoryError", "OverflowError", "ZeroDivisionError", "SystemError", "MemoryError"], "labels": ["priority-high"], "assignees": [""]}, - {"keywords": ["wheel", "wheels"], "labels": ["wheels"], "assignees": [""]} - {"keywords": ["can\'t execute", "can\'t install"], "labels": ["bug"], "assignees": [""]}, + {"keywords": ["can''t execute", "can''t install"], "labels": ["bug"], "assignees": [""]}, + {"keywords": ["wheel"], "labels": ["wheels"], "assignees": [""]} ]' diff --git a/scripts/internal/github_issue_labeler.py b/scripts/internal/github_issue_labeler.py index d07bc941..4eecbb0e 100755 --- a/scripts/internal/github_issue_labeler.py +++ b/scripts/internal/github_issue_labeler.py @@ -98,7 +98,7 @@ class Getter: def __init__(self, token): g = Github(token) - self.repo = g.get_repo("%s/%s" % (USER, PROJECT)) + self._repo = g.get_repo("%s/%s" % (USER, PROJECT)) def _paginate(self, issues): tot = issues.totalCount @@ -107,6 +107,10 @@ class Getter: print("%s/%s" % (i, tot)) yield issue + @property + def repo(self): + return self._repo + def get_issues(self, status): issues = self.repo.get_issues(state=status) print("start processing %s %r issues" % (issues.totalCount, status)) @@ -122,8 +126,10 @@ class Getter: class Setter: - def __init__(self, do_write): + def __init__(self, repo, do_write): + self.repo = repo self.do_write = do_write + self.avail_labels = sorted([x.name for x in self.repo.get_labels()]) # --- utils @@ -133,14 +139,16 @@ class Setter: print(msg) def add_label(self, issue, label): - assert label not in [x.name for x in issue.labels], label - self.log("adding label %r to '#%r: %s'" % ( - label, issue.number, issue.title)) - if self.do_write: - issue.add_to_labels(label) + assert label in self.avail_labels, (label, self.avail_labels) + if not self.has_label(issue, label): + self.log("add label %r to '#%r: %s'" % ( + label, issue.number, issue.title)) + if self.do_write: + issue.add_to_labels(label) def has_label(self, issue, label): - return label in [x.name for x in issue.labels] + assigned = [x.name for x in issue.labels] + return label in assigned def has_os_label(self, issue): labels = set([x.name for x in issue.labels]) @@ -149,6 +157,9 @@ class Setter: return True return False + def is_pr(self, issue): + return 'PullRequest' in issue.__module__ + # --- setters def guess_from_title(self, issue): @@ -210,6 +221,12 @@ class Setter: # else: # print(issue) + def adjust_pr(self, pr): + files = sorted([x.filename for x in pr.get_files()]) + # pure doc change + if files == ['docs/index.rst']: + self.add_label(pr, 'doc') + def main(): global WRITE @@ -235,7 +252,7 @@ def main(): # run getter = Getter(token) - setter = Setter(args.write) + setter = Setter(getter.repo, args.write) if args.pulls: issues = getter.get_pulls(args.status) else: @@ -243,6 +260,8 @@ def main(): for issue in issues: setter.guess_from_title(issue) setter.logical_adjust(issue) + # if setter.is_pr(issue): + # setter.adjust_pr(issue) if __name__ == '__main__': |