feat(governance): automate harness consistency checks (phase 3)
Harness governance / validate (push) Has been cancelled
Harness governance / validate (push) Has been cancelled
This commit is contained in:
@@ -171,16 +171,23 @@ class GiteaClient:
|
||||
|
||||
def list_labels(self) -> dict[str, dict[str, Any]]:
|
||||
result: dict[str, dict[str, Any]] = {}
|
||||
seen_pages: set[tuple[str, ...]] = set()
|
||||
page = 1
|
||||
while True:
|
||||
labels = self.request("GET", f"/labels?limit=50&page={page}")
|
||||
if not isinstance(labels, list):
|
||||
raise RuntimeError("Gitea labels 响应格式异常。")
|
||||
if not labels:
|
||||
return result
|
||||
if not all(isinstance(label, dict) for label in labels):
|
||||
raise RuntimeError("Gitea labels 响应包含非对象条目。")
|
||||
signature = tuple(str(label.get("id") or label.get("name")) for label in labels)
|
||||
if signature in seen_pages or page > 1000:
|
||||
raise RuntimeError("Gitea labels 分页重复,已停止以避免无限读取。")
|
||||
seen_pages.add(signature)
|
||||
for label in labels:
|
||||
if isinstance(label, dict) and isinstance(label.get("name"), str):
|
||||
result[label["name"]] = label
|
||||
if len(labels) < 50:
|
||||
return result
|
||||
page += 1
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user