in bugbot/rules/variant_expiration.py [0:0]
def handle_bug(self, bug, data):
bugid = str(bug["id"])
summary_match = VARIANT_BUG_PAT.match(bug["summary"])
assert summary_match, f"Bug {bugid} has invalid summary: {bug['summary']}"
variant_name, bug_expiration = summary_match.groups()
bug_expiration = lmdutils.get_date_ymd(bug_expiration)
has_patch = self.is_with_patch(bug)
action = self.get_followup_action(bug, variant_name, bug_expiration, has_patch)
if not action:
return None
data[bugid] = {
"action": action,
"variant_name": variant_name,
"expiration": bug_expiration.strftime("%Y-%m-%d"),
}
if action == ExpirationAction.CLOSE_DROPPED:
self.autofix_changes[bugid] = {
"status": "RESOLVED",
"resolution": "FIXED",
"comment": {
"body": f"The variant has been removed from the [variants.yml]({VARIANTS_SEARCHFOX_URL}) file."
},
"flags": [
{
"id": flag_id,
"status": "X",
}
for flag_id in self.get_needinfo_ids(bug)
],
}
elif action == ExpirationAction.CLOSE_EXTENDED:
new_date = self.variants[variant_name]["expiration"].strftime("%Y-%m-%d")
self.autofix_changes[bugid] = {
"status": "RESOLVED",
"resolution": "FIXED",
"comment": {
"body": f"The variant expiration date got extended to {new_date}",
},
"flags": [
{
"id": flag_id,
"status": "X",
}
for flag_id in self.get_needinfo_ids(bug)
],
}
elif action == ExpirationAction.NEEDINFO_TRIAGER:
self.ni_extra[bugid] = {
"has_patch": has_patch,
"expiration_str": self.get_english_expiration_delta(bug_expiration),
}
if not self.add_auto_ni(bugid, utils.get_mail_to_ni(bug)):
data[bugid]["action"] = ExpirationAction.SKIP
elif action == ExpirationAction.SEND_REMINDER:
# Escalate gradually
if not self.add(
bug["triage_owner"],
data[bugid],
expiration_date=bug_expiration,
):
data[bugid]["action"] = ExpirationAction.SKIP
if not self.has_expired_comment(bug):
self.autofix_changes[bugid] = {
"comment": {
"body": EXPIRED_VARIANT_COMMENT,
},
}
return bug