diff --git a/src/plyngent/cli/interrupt.py b/src/plyngent/cli/interrupt.py index 30c0291..52eb3cd 100644 --- a/src/plyngent/cli/interrupt.py +++ b/src/plyngent/cli/interrupt.py @@ -55,7 +55,7 @@ def pause_task_cancel_for_prompt() -> Generator[None]: yield finally: with contextlib.suppress(ValueError): - _ = signal.signal(signal.SIGINT, previous) # type: ignore[arg-type] + _ = signal.signal(signal.SIGINT, previous) reinstall = _reinstall_holder[0] if loop_handler_removed and reinstall is not None: with contextlib.suppress(RuntimeError, NotImplementedError, ValueError): diff --git a/src/plyngent/tools/chat/choose.py b/src/plyngent/tools/chat/choose.py index a17425c..70b7c74 100644 --- a/src/plyngent/tools/chat/choose.py +++ b/src/plyngent/tools/chat/choose.py @@ -1,6 +1,7 @@ from __future__ import annotations import json +from typing import cast from plyngent.agent import tool 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" raise TypeError(msg) out: list[ChoiceOption] = [] - for item in data: - if isinstance(item, str): - out.append(ChoiceOption(label=item)) + for item_obj in cast("list[object]", data): + if isinstance(item_obj, str): + out.append(ChoiceOption(label=item_obj)) continue - if isinstance(item, dict): - raw_map: dict[str, object] = {str(k): v for k, v in item.items()} # type: ignore[misc] + if isinstance(item_obj, dict): + raw_map = {str(key): value for key, value in cast("dict[object, object]", item_obj).items()} label_obj = raw_map.get("label") if not isinstance(label_obj, str) or not label_obj: msg = "each option object needs a non-empty string label" diff --git a/src/plyngent/tools/chat/form.py b/src/plyngent/tools/chat/form.py index f972d4a..02aae37 100644 --- a/src/plyngent/tools/chat/form.py +++ b/src/plyngent/tools/chat/form.py @@ -1,6 +1,7 @@ from __future__ import annotations import json +from typing import cast from plyngent.agent import tool 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" raise ValueError(msg) out: list[FormField] = [] - for item in data: - if not isinstance(item, dict): + for item_obj in cast("list[object]", data): + if not isinstance(item_obj, dict): msg = "each field must be a JSON object" 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") prompt = raw_map.get("prompt") if not isinstance(name, str) or not name: