in bugbot/rules/inactive_reviewer.py [0:0]
def handle_bug(self, bug, data):
rev_ids = [
# To avoid loading the attachment content (which can be very large),
# we extract the revision id from the file name, which is in the
# format of "phabricator-D{revision_id}-url.txt".
# len("phabricator-D") == 13
# len("-url.txt") == 8
int(attachment["file_name"][13:-8])
for attachment in bug["attachments"]
if attachment["content_type"] == "text/x-phabricator-request"
and PHAB_FILE_NAME_PAT.match(attachment["file_name"])
and not attachment["is_obsolete"]
]
if not rev_ids:
return
# We should not comment about the same patch more than once.
rev_ids_with_ni = set()
for comment in bug["comments"]:
if comment["creator"] == History.BOT and comment["raw_text"].startswith(
"The following patch"
):
rev_ids_with_ni.update(
int(id) for id in PHAB_TABLE_PAT.findall(comment["raw_text"])
)
if rev_ids_with_ni:
rev_ids = [id for id in rev_ids if id not in rev_ids_with_ni]
if not rev_ids:
return
# It will be nicer to show a sorted list of patches
rev_ids.sort()
bugid = str(bug["id"])
data[bugid] = {
"rev_ids": rev_ids,
}
return bug