fix: resolve pylint/pyright issues in runner, sidecar, and test_runner
runner.py: use 'from bot_bottle import api' (satisfies R0402) with type: ignore and pylint disable for the cross-branch dependency on bot_bottle.api (added in PR #318, which merges before this one). sidecar.py: add pylint disable for intentional broad-exception-caught. test_runner.py: annotate _make_api_stub(**overrides: object) -> Any and type stub variable as Any to allow attribute assignment without type: ignore per-line. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -47,9 +47,10 @@ def slugify(label: str) -> str:
|
||||
class ProgrammaticBottleRunner:
|
||||
"""Calls into the bot_bottle Python API directly — no subprocess.
|
||||
|
||||
Imports are deferred to call time so this module can be imported
|
||||
before `bot_bottle.api` is available (e.g. in isolated test runs
|
||||
that mock the API surface)."""
|
||||
Imports are deferred to call time so tests can inject a mock into
|
||||
sys.modules['bot_bottle.api'] before calling runner methods.
|
||||
bot_bottle.api is added in the forge-native-integration PR (#318),
|
||||
which merges before this one."""
|
||||
|
||||
def start(
|
||||
self,
|
||||
@@ -60,7 +61,7 @@ class ProgrammaticBottleRunner:
|
||||
prompt: str,
|
||||
forge_env: dict[str, str],
|
||||
) -> str:
|
||||
import bot_bottle.api as api
|
||||
from bot_bottle import api # type: ignore[import-not-found] # pylint: disable=import-error,no-name-in-module
|
||||
return api.start_headless(
|
||||
agent,
|
||||
prompt=prompt,
|
||||
@@ -70,13 +71,13 @@ class ProgrammaticBottleRunner:
|
||||
)
|
||||
|
||||
def freeze(self, slug: str) -> None:
|
||||
import bot_bottle.api as api
|
||||
from bot_bottle import api # type: ignore[import-not-found] # pylint: disable=import-error,no-name-in-module
|
||||
api.freeze(slug)
|
||||
|
||||
def resume(self, slug: str, prompt: str) -> None:
|
||||
import bot_bottle.api as api
|
||||
from bot_bottle import api # type: ignore[import-not-found] # pylint: disable=import-error,no-name-in-module
|
||||
api.resume_headless(slug, prompt=prompt)
|
||||
|
||||
def destroy(self, slug: str) -> None:
|
||||
import bot_bottle.api as api
|
||||
from bot_bottle import api # type: ignore[import-not-found] # pylint: disable=import-error,no-name-in-module
|
||||
api.destroy(slug)
|
||||
|
||||
@@ -106,7 +106,7 @@ class ForgeSidecar:
|
||||
def dispatch(self, method: str, params: dict[str, Any]) -> dict[str, Any]:
|
||||
try:
|
||||
result = self._invoke(method, params)
|
||||
except Exception as exc: # noqa: BLE001 — surface as JSON-RPC error
|
||||
except Exception as exc: # noqa: BLE001 # pylint: disable=broad-exception-caught
|
||||
self._log.record(method, params.get("number"), f"error: {exc}")
|
||||
return {"ok": False, "error": str(exc)}
|
||||
return {"ok": True, "result": result}
|
||||
|
||||
Reference in New Issue
Block a user