summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2020-11-17 10:56:21 +0100
committerGiampaolo Rodola <g.rodola@gmail.com>2020-11-17 10:56:21 +0100
commit2d62e923eddf1129c6a6defc259091a3ff6b1e9d (patch)
tree5b872a282c9326331ec190d101ddd3abbb703637
parent65db24ec425e4a44fbd63c42529067d9772dabe2 (diff)
downloadpsutil-2d62e923eddf1129c6a6defc259091a3ff6b1e9d.tar.gz
refact
-rw-r--r--.github/workflows/issue_labels.yml4
-rwxr-xr-xscripts/internal/github_issue_labeler.py37
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__':