fix: tolerate null labels/assignees/user in get_issue (#13)
docker / test (pull_request) Successful in 32s
docker / lint (pull_request) Successful in 39s
lint / lint (pull_request) Successful in 34s
test / test (pull_request) Successful in 32s
docker / docker-publish (pull_request) Has been skipped
test / test (push) Successful in 25s
lint / lint (push) Successful in 27s
docker / docker-test (pull_request) Successful in 11s

Gitea may return JSON null for an issue's `labels`, `assignees`, or
`user` fields. `dict.get(key, [])` returns None when the key is present
with a null value (the default is only used for missing keys), so the
list comprehensions raised `'NoneType' object is not iterable` for
otherwise-valid issues. Coalesce with `or []` / `or {}` so empty/null
collections normalize to empty results.

Adds a regression test covering all three null fields.
This commit is contained in:
2026-06-22 10:09:32 +02:00
parent 5f80fc2531
commit 478aee9bed
2 changed files with 31 additions and 3 deletions
+3 -3
View File
@@ -272,9 +272,9 @@ async def get_issue_tool(gitea: GiteaClient, arguments: dict[str, Any]) -> dict[
"title": limit_text(str(issue.get("title", ""))),
"body": limit_text(str(issue.get("body", ""))),
"state": issue.get("state", ""),
"author": issue.get("user", {}).get("login", ""),
"labels": [label.get("name", "") for label in issue.get("labels", [])],
"assignees": [assignee.get("login", "") for assignee in issue.get("assignees", [])],
"author": (issue.get("user") or {}).get("login", ""),
"labels": [label.get("name", "") for label in (issue.get("labels") or [])],
"assignees": [assignee.get("login", "") for assignee in (issue.get("assignees") or [])],
"created_at": issue.get("created_at", ""),
"updated_at": issue.get("updated_at", ""),
"url": issue.get("html_url", ""),