ci/typecheck: cast JSON parses; drop mypy-style type ignores

Narrow chat tool JSON with typing.cast; remove obsolete type: ignore
comments that basedpyright does not treat as pyright suppresses.
This commit is contained in:
2026-07-15 11:54:26 +08:00
parent f77ac7eea8
commit e566da596b
3 changed files with 11 additions and 9 deletions
+1 -1
View File
@@ -55,7 +55,7 @@ def pause_task_cancel_for_prompt() -> Generator[None]:
yield yield
finally: finally:
with contextlib.suppress(ValueError): with contextlib.suppress(ValueError):
_ = signal.signal(signal.SIGINT, previous) # type: ignore[arg-type] _ = signal.signal(signal.SIGINT, previous)
reinstall = _reinstall_holder[0] reinstall = _reinstall_holder[0]
if loop_handler_removed and reinstall is not None: if loop_handler_removed and reinstall is not None:
with contextlib.suppress(RuntimeError, NotImplementedError, ValueError): with contextlib.suppress(RuntimeError, NotImplementedError, ValueError):
+6 -5
View File
@@ -1,6 +1,7 @@
from __future__ import annotations from __future__ import annotations
import json import json
from typing import cast
from plyngent.agent import tool from plyngent.agent import tool
from plyngent.prompting import ChoiceOption, NonInteractiveError, choose_async from plyngent.prompting import ChoiceOption, NonInteractiveError, choose_async
@@ -20,12 +21,12 @@ def parse_options(raw: str) -> list[ChoiceOption]:
msg = "options must be a JSON array" msg = "options must be a JSON array"
raise TypeError(msg) raise TypeError(msg)
out: list[ChoiceOption] = [] out: list[ChoiceOption] = []
for item in data: for item_obj in cast("list[object]", data):
if isinstance(item, str): if isinstance(item_obj, str):
out.append(ChoiceOption(label=item)) out.append(ChoiceOption(label=item_obj))
continue continue
if isinstance(item, dict): if isinstance(item_obj, dict):
raw_map: dict[str, object] = {str(k): v for k, v in item.items()} # type: ignore[misc] raw_map = {str(key): value for key, value in cast("dict[object, object]", item_obj).items()}
label_obj = raw_map.get("label") label_obj = raw_map.get("label")
if not isinstance(label_obj, str) or not label_obj: if not isinstance(label_obj, str) or not label_obj:
msg = "each option object needs a non-empty string label" msg = "each option object needs a non-empty string label"
+4 -3
View File
@@ -1,6 +1,7 @@
from __future__ import annotations from __future__ import annotations
import json import json
from typing import cast
from plyngent.agent import tool from plyngent.agent import tool
from plyngent.prompting import FormField, NonInteractiveError, form_async from plyngent.prompting import FormField, NonInteractiveError, form_async
@@ -21,11 +22,11 @@ def parse_fields(raw: str) -> list[FormField]:
msg = "fields must be a non-empty JSON array" msg = "fields must be a non-empty JSON array"
raise ValueError(msg) raise ValueError(msg)
out: list[FormField] = [] out: list[FormField] = []
for item in data: for item_obj in cast("list[object]", data):
if not isinstance(item, dict): if not isinstance(item_obj, dict):
msg = "each field must be a JSON object" msg = "each field must be a JSON object"
raise TypeError(msg) raise TypeError(msg)
raw_map: dict[str, object] = {str(k): v for k, v in item.items()} # type: ignore[misc] raw_map = {str(key): value for key, value in cast("dict[object, object]", item_obj).items()}
name = raw_map.get("name") name = raw_map.get("name")
prompt = raw_map.get("prompt") prompt = raw_map.get("prompt")
if not isinstance(name, str) or not name: if not isinstance(name, str) or not name: