This commit is contained in:
@@ -57,7 +57,9 @@ def _req(method, path, data=None):
|
|||||||
|
|
||||||
|
|
||||||
def _req_safe(method, path, data=None):
|
def _req_safe(method, path, data=None):
|
||||||
"""Like _req but returns None on HTTPError. Safe for probing existence."""
|
"""Like _req but returns None on HTTPError instead of crashing.
|
||||||
|
Used for probing issue/PR existence where the caller can handle absence.
|
||||||
|
"""
|
||||||
url = f"{BASE}{path}"
|
url = f"{BASE}{path}"
|
||||||
payload = json.dumps(data).encode("utf-8") if data else None
|
payload = json.dumps(data).encode("utf-8") if data else None
|
||||||
req = urllib.request.Request(url, data=payload, method=method)
|
req = urllib.request.Request(url, data=payload, method=method)
|
||||||
@@ -103,7 +105,7 @@ def _get_blocking_refs(issue_num: int) -> set[int]:
|
|||||||
# Body
|
# Body
|
||||||
issue = _req_safe("GET", f"/issues/{issue_num}")
|
issue = _req_safe("GET", f"/issues/{issue_num}")
|
||||||
if issue is None:
|
if issue is None:
|
||||||
return refs
|
return refs # API error → return empty set, keep blocked
|
||||||
body = issue.get("body", "") or ""
|
body = issue.get("body", "") or ""
|
||||||
refs.update(int(m.group(1)) for m in re.finditer(r'#(\d+)', body))
|
refs.update(int(m.group(1)) for m in re.finditer(r'#(\d+)', body))
|
||||||
# Comments
|
# Comments
|
||||||
@@ -135,7 +137,7 @@ def blocked_check():
|
|||||||
for blk in blocking_nums:
|
for blk in blocking_nums:
|
||||||
blk_issue = _req_safe("GET", f"/issues/{blk}")
|
blk_issue = _req_safe("GET", f"/issues/{blk}")
|
||||||
if blk_issue is None:
|
if blk_issue is None:
|
||||||
all_resolved = False
|
all_resolved = False # API error → keep blocked
|
||||||
break
|
break
|
||||||
if blk_issue.get("state") != "closed":
|
if blk_issue.get("state") != "closed":
|
||||||
all_resolved = False
|
all_resolved = False
|
||||||
@@ -209,7 +211,7 @@ def _unblock_issues_blocked_by(closed_num):
|
|||||||
continue
|
continue
|
||||||
blk_issue = _req_safe("GET", f"/issues/{blk}")
|
blk_issue = _req_safe("GET", f"/issues/{blk}")
|
||||||
if blk_issue is None:
|
if blk_issue is None:
|
||||||
all_resolved = False
|
all_resolved = False # API error → keep blocked
|
||||||
break
|
break
|
||||||
if blk_issue.get("state") != "closed":
|
if blk_issue.get("state") != "closed":
|
||||||
all_resolved = False
|
all_resolved = False
|
||||||
|
|||||||
Reference in New Issue
Block a user