mirror of
https://github.com/rookiestar28/ComfyUI-OpenClaw.git
synced 2026-08-14 08:52:45 +00:00
10351 lines
276 KiB
JSON
10351 lines
276 KiB
JSON
{
|
||
"schema_version": 1,
|
||
"review": {
|
||
"owner": "maintainers",
|
||
"reviewed_at": "2026-07-11",
|
||
"next_review_by": "2026-10-11"
|
||
},
|
||
"tools": {
|
||
"ruff": {
|
||
"version": "0.15.20"
|
||
},
|
||
"mypy": {
|
||
"version": "2.2.0"
|
||
}
|
||
},
|
||
"production_roots": [
|
||
"__init__.py",
|
||
"config.py",
|
||
"api",
|
||
"connector",
|
||
"models",
|
||
"nodes",
|
||
"services",
|
||
"scripts"
|
||
],
|
||
"excluded_paths": [],
|
||
"strict_paths": [
|
||
"scripts/verify_static_analysis_policy.py"
|
||
],
|
||
"baseline": [
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/approvals.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Application\" is not defined",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/approvals.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Request\" is not defined",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/approvals.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Response\" is not defined",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/approvals.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/assist.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Request\" is not defined",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/assist.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Response\" is not defined",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/assist.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.StreamResponse\" is not defined",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/assist.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[str, Any]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/bridge.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"str\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/bridge.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/capabilities.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Request\" is not defined",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/capabilities.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Response\" is not defined",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/checkpoints_handler.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/config.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/connector_contracts.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/events.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"dict[Never, Never]\", variable has type \"MappingProxyType[str, Parameter]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/events.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/model_manager.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Request\" is not defined",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/model_manager.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Response\" is not defined",
|
||
"count": 9
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/model_manager.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/packs.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"None\", variable has type \"type[CleanupFileResponse]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/packs.py",
|
||
"code": "misc",
|
||
"message": "Cannot assign to a type",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/packs.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"bool\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/pnginfo.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Request\" is not defined",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/pnginfo.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Response\" is not defined",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/pnginfo.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/preflight_handler.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/presets.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Application\" is not defined",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/presets.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Request\" is not defined",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/presets.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Response\" is not defined",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/presets.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/remote_admin.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Request\" is not defined",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/remote_admin.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Response\" is not defined",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/remote_admin.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/rewrite_recipes.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Request\" is not defined",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/rewrite_recipes.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Response\" is not defined",
|
||
"count": 9
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/rewrite_recipes.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/routes.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 32
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/schedules.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Application\" is not defined",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/schedules.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Request\" is not defined",
|
||
"count": 10
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/schedules.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Response\" is not defined",
|
||
"count": 10
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/schedules.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/secrets.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Request\" is not defined",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/secrets.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Response\" is not defined",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/secrets.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 13
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/security_doctor.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/templates.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 9
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/tools.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Request\" is not defined",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/tools.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Response\" is not defined",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/tools.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/triggers.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Application\" is not defined",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/triggers.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Request\" is not defined",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/triggers.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Response\" is not defined",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/triggers.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/webhook.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Request\" is not defined",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/webhook.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Response\" is not defined",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/webhook.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/webhook_submit.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Request\" is not defined",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/webhook_submit.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Response\" is not defined",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/webhook_submit.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 13
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "api/webhook_validate.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "config.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/__main__.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"DiscordGateway\", target has type \"TelegramPolling\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/__main__.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"FeishuWebhookServer\", target has type \"TelegramPolling\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/__main__.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"KakaoWebhookServer\", target has type \"TelegramPolling\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/__main__.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"LINEWebhookServer\", target has type \"TelegramPolling\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/__main__.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"SlackSocketModeClient\", target has type \"TelegramPolling\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/__main__.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"SlackWebhookServer\", variable has type \"SlackSocketModeClient | None\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/__main__.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"WeChatWebhookServer\", target has type \"TelegramPolling\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/__main__.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"WhatsAppWebhookServer\", target has type \"TelegramPolling\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/__main__.py",
|
||
"code": "var-annotated",
|
||
"message": "Need type annotation for \"platforms\" (hint: \"platforms: dict[<type>, <type>] = ...\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/channels/kakaotalk.py",
|
||
"code": "index",
|
||
"message": "Unsupported target for indexed assignment (\"Collection[str]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/llm_client.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"float\", variable has type \"int\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/llm_client.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"bool\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/llm_client.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[Any, Any]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/llm_client.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"str\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/openclaw_client.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible default for parameter \"json_data\" (default has type \"None\", parameter has type \"dict[Any, Any]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/openclaw_client.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"bytes | None\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/openclaw_client.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/discord_gateway.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"_send_response\" of \"DiscordGateway\" has incompatible type \"Any | None\"; expected \"str\"",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/discord_gateway.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"post\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/discord_gateway.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"send_json\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/discord_gateway.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/feishu_installation_manager.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"_secrets_for_installation\" of \"FeishuInstallationManager\" has incompatible type \"ConnectorInstallation | None\"; expected \"ConnectorInstallation\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/feishu_installation_manager.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/feishu_long_connection.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"create_task\" has incompatible type \"Awaitable[Any]\"; expected \"Generator[Any, None, Any] | Coroutine[Any, Any, Any]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/feishu_long_connection.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/feishu_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"router\"",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/feishu_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"setup\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/feishu_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"start\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/feishu_webhook.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/kakao_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"router\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/kakao_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"setup\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/kakao_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"start\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/line_webhook.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"_reply_message\" of \"LINEWebhookServer\" has incompatible type \"Any | None\"; expected \"str\"",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/line_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"post\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/line_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"router\"",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/line_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"setup\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/line_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"start\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/line_webhook.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/slack_installation_manager.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/slack_socket_mode.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"str | None\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/slack_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"router\"",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/slack_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"setup\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/slack_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"start\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/telegram_polling.py",
|
||
"code": "arg-type",
|
||
"message": "Argument \"path\" to \"ConnectorState\" has incompatible type \"str | None\"; expected \"str\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/telegram_polling.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"get\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/telegram_polling.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"post\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/telegram_polling.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/wechat_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"router\"",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/wechat_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"setup\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/wechat_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"start\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/wechat_webhook.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"bytes\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/wechat_webhook.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/whatsapp_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"router\"",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/whatsapp_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"setup\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/whatsapp_webhook.py",
|
||
"code": "attr-defined",
|
||
"message": "\"None\" has no attribute \"start\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/platforms/whatsapp_webhook.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/results_poller.py",
|
||
"code": "misc",
|
||
"message": "Cannot infer type of lambda",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/results_poller.py",
|
||
"code": "var-annotated",
|
||
"message": "Need type annotation for \"active_approval_polls\" (hint: \"active_approval_polls: dict[<type>, <type>] = ...\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/results_poller.py",
|
||
"code": "var-annotated",
|
||
"message": "Need type annotation for \"active_polls\" (hint: \"active_polls: dict[<type>, <type>] = ...\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/results_poller.py",
|
||
"code": "var-annotated",
|
||
"message": "Need type annotation for \"approval_queue\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/results_poller.py",
|
||
"code": "var-annotated",
|
||
"message": "Need type annotation for \"queue\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/router.py",
|
||
"code": "arg-type",
|
||
"message": "Argument \"path\" to \"ConnectorState\" has incompatible type \"str | None\"; expected \"str\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/router.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible default for parameter \"poller\" (default has type \"None\", parameter has type \"ResultsPoller\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/state.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible default for parameter \"path\" (default has type \"None\", parameter has type \"str\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/state.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"int\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "connector/transport_contract.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"int\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "models/schemas.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "scripts/openclaw_smoke_import.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"__import__\" has incompatible type \"str | None\"; expected \"str\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "scripts/openclaw_smoke_import.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"join\" of \"str\" has incompatible type \"list[str | None]\"; expected \"Iterable[str]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "scripts/openclaw_smoke_import.py",
|
||
"code": "var-annotated",
|
||
"message": "Need type annotation for \"results\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "scripts/quality_governance_common.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[str, Any] | None\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "scripts/report_coverage_governance.py",
|
||
"code": "attr-defined",
|
||
"message": "\"object\" has no attribute \"items\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "scripts/report_coverage_governance.py",
|
||
"code": "index",
|
||
"message": "Value of type \"object\" is not indexable",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "scripts/run_adversarial_gate.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "attr-defined",
|
||
"message": "\"object\" has no attribute \"append\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "func-returns-value",
|
||
"message": "\"setattr\" does not return a value (it only ever returns None)",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "operator",
|
||
"message": "Unsupported left operand type for / (\"object\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "operator",
|
||
"message": "Unsupported operand types for + (\"object\" and \"int\")",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "operator",
|
||
"message": "Unsupported operand types for < (\"int\" and \"object\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "scripts/verify_exception_boundary_policy.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"visit_FunctionDef\" of \"_BroadCatchVisitor\" has incompatible type \"AsyncFunctionDef\"; expected \"FunctionDef\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "scripts/verify_exception_boundary_policy.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[str, Any]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/access_control.py",
|
||
"code": "misc",
|
||
"message": "All conditional function variants must have identical signatures",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/access_control.py",
|
||
"code": "no-redef",
|
||
"message": "Name \"AuthTier\" already defined (possibly by an import)",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/aiohttp_compat.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/approvals/storage.py",
|
||
"code": "var-annotated",
|
||
"message": "Need type annotation for \"to_remove\" (hint: \"to_remove: list[<type>] = ...\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/audit.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"None\", variable has type \"Callable[[], str]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/audit.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"dict[str, Any]\", target has type \"str\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/audit.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"str\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/audit.py",
|
||
"code": "truthy-function",
|
||
"message": "Function \"get_state_dir\" could always be true in boolean context",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/audit.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/bridge_token_lifecycle.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/capabilities.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"dict[Any, Any]\", target has type \"list[str] | str\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/capabilities.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"dict[str, bool]\", target has type \"list[str] | str\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/capabilities.py",
|
||
"code": "dict-item",
|
||
"message": "Dict entry 2 has incompatible type \"str\": \"str\"; expected \"str\": \"bool\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/capabilities.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/chatops/network_errors.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"BaseException\", variable has type \"Exception\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/chatops/retry.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"Random | Module\", variable has type \"Random | None\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/chatops/retry.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"float\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/chatops/retry.py",
|
||
"code": "union-attr",
|
||
"message": "Item \"None\" of \"Random | None\" has no attribute \"uniform\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/comfyui_history.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[str, Any] | None\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/connector_callback_contract.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/connector_extraction_contract.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/connector_installation_registry.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/constrained_transforms.py",
|
||
"code": "return-value",
|
||
"message": "Incompatible return value type (got \"TransformExecutor | None\", expected \"TransformExecutor\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/constrained_transforms.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/crypto_lifecycle_drills.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/csrf_protection.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/deployment_profile.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/idempotency_store.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"None\", variable has type \"DurableBackend\")",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/idempotency_store.py",
|
||
"code": "attr-defined",
|
||
"message": "\"IdempotencyStore\" has no attribute \"_store\"",
|
||
"count": 16
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/idempotency_store.py",
|
||
"code": "attr-defined",
|
||
"message": "\"IdempotencyStore\" has no attribute \"_store_lock\"",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/idempotency_store.py",
|
||
"code": "has-type",
|
||
"message": "Cannot determine type of \"_last_cleanup\"",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/idempotency_store.py",
|
||
"code": "misc",
|
||
"message": "Type cannot be declared in assignment to non-self attribute",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/idempotency_store.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/image_utils.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/integrity.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[str, Any]\"",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/jobs_read_model.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"Callable[..., Any]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/legacy_compat.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"None\", variable has type \"Metrics\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/llm_client.py",
|
||
"code": "arg-type",
|
||
"message": "Argument \"api_key\" to \"make_request\" has incompatible type \"str | None\"; expected \"str\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/llm_client.py",
|
||
"code": "arg-type",
|
||
"message": "Argument \"base_url\" to \"make_request\" has incompatible type \"str | Any | None\"; expected \"str\"",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/llm_client.py",
|
||
"code": "arg-type",
|
||
"message": "Argument \"base_url\" to \"make_request_stream\" has incompatible type \"str | Any | None\"; expected \"str\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/llm_client.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"Any | None\", variable has type \"str\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/llm_client.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"None\", variable has type \"str\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/llm_client.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"float | int\", variable has type \"int\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/llm_client.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[str, Any]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/llm_client.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/llm_model_list.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/metrics.py",
|
||
"code": "attr-defined",
|
||
"message": "\"Metrics\" has no attribute \"_counter_lock\"",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/metrics.py",
|
||
"code": "attr-defined",
|
||
"message": "\"Metrics\" has no attribute \"_counters\"",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/metrics.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[str, int]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/model_manager.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/model_manager_tasks.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[str, Any]\"",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/model_manager_transfer.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[str, Any]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/model_manager_transfer.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"str\"",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/operator_guidance.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"dict[str, str]\", target has type \"int | str\")",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/packs/pack_manifest.py",
|
||
"code": "arg-type",
|
||
"message": "Argument \"key\" to \"sort\" of \"list\" has incompatible type \"Callable[[dict[str, object]], object]\"; expected \"Callable[[dict[str, object]], SupportsDunderLT[Any] | SupportsDunderGT[Any]]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/packs/pack_manifest.py",
|
||
"code": "return-value",
|
||
"message": "Incompatible return value type (got \"object\", expected \"SupportsDunderLT[Any] | SupportsDunderGT[Any]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/parameter_lab.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/planner.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"validate_planner_output\" has incompatible type \"dict[str, Any] | None\"; expected \"dict[str, Any]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/planner.py",
|
||
"code": "index",
|
||
"message": "Value of type \"dict[str, Any] | None\" is not indexable",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/planner.py",
|
||
"code": "union-attr",
|
||
"message": "Item \"None\" of \"dict[str, Any] | None\" has no attribute \"get\"",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/planner_registry.py",
|
||
"code": "misc",
|
||
"message": "Need more than 3 values to unpack (4 expected)",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/planner_registry.py",
|
||
"code": "return-value",
|
||
"message": "Incompatible return value type (got \"tuple[dict[str, Any], str, str, None]\", expected \"tuple[dict[str, Any], str, str | None]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/planner_registry.py",
|
||
"code": "return-value",
|
||
"message": "Incompatible return value type (got \"tuple[dict[str, Any], str, str, str | None]\", expected \"tuple[dict[str, Any], str, str | None]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/planner_registry.py",
|
||
"code": "return-value",
|
||
"message": "Incompatible return value type (got \"tuple[dict[str, Any], str, str, str]\", expected \"tuple[dict[str, Any], str, str | None]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/planner_registry.py",
|
||
"code": "union-attr",
|
||
"message": "Item \"None\" of \"Any | None\" has no attribute \"strip\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/plugins/contract.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"str\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/plugins/manager.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"T\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/pnginfo.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"str\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/pnginfo.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/preflight.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"len\" has incompatible type \"object\"; expected \"Sized\"",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/preflight.py",
|
||
"code": "attr-defined",
|
||
"message": "\"object\" has no attribute \"__iter__\"; maybe \"__dir__\" or \"__str__\"? (not iterable)",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/preflight.py",
|
||
"code": "attr-defined",
|
||
"message": "\"object\" has no attribute \"append\"",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/preflight.py",
|
||
"code": "index",
|
||
"message": "Unsupported target for indexed assignment (\"object\")",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/preflight.py",
|
||
"code": "index",
|
||
"message": "Value of type \"object\" is not indexable",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/preflight.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"OperatorBanner\" is not defined",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/preflight.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[str, Any]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/preflight.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[str, list[str]]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/preflight.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/preflight.py",
|
||
"code": "var-annotated",
|
||
"message": "Need type annotation for \"_CACHE\" (hint: \"_CACHE: dict[<type>, <type>] = ...\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/preflight.py",
|
||
"code": "var-annotated",
|
||
"message": "Need type annotation for \"banners\" (hint: \"banners: list[<type>] = ...\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/presets/models.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible default for parameter \"tags\" (default has type \"None\", parameter has type \"list[str]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/providers/keys.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"mask_api_key\" has incompatible type \"str | None\"; expected \"str\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/queue_submit.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[str, Any]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/queue_submit.py",
|
||
"code": "no-redef",
|
||
"message": "Name \"APIError\" already defined (possibly by an import)",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/queue_submit.py",
|
||
"code": "no-redef",
|
||
"message": "Name \"ErrorCode\" already defined (possibly by an import)",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/queue_submit.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/rate_limit.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/refiner.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"validate_refiner_output\" has incompatible type \"dict[str, Any] | None\"; expected \"dict[str, Any]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/refiner.py",
|
||
"code": "union-attr",
|
||
"message": "Item \"None\" of \"dict[str, Any] | None\" has no attribute \"get\"",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/registry_quarantine.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"None\", variable has type \"type[PackArchive]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/registry_quarantine.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"None\", variable has type \"type[PackError]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/registry_quarantine.py",
|
||
"code": "misc",
|
||
"message": "Cannot assign to a type",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/registry_quarantine.py",
|
||
"code": "truthy-function",
|
||
"message": "Function \"PackArchive\" could always be true in boolean context",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/registry_quarantine.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/registry_quarantine.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore[assignment, misc]\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/request_ip.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"str\"",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/request_ip.py",
|
||
"code": "return-value",
|
||
"message": "Incompatible return value type (got \"list[IPv4Network | IPv6Network]\", expected \"list[IPv4Network]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/retry_partition.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"float\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/retry_partition.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/rewrite_recipes.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/runtime_config.py",
|
||
"code": "attr-defined",
|
||
"message": "\"Callable[[str], str | None]\" has no attribute \"_warned_legacy\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/runtime_config.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/runtime_config_policy.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"int\", target has type \"bool\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/runtime_config_policy.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"object\", target has type \"bool\")",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/runtime_config_policy.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"str\", target has type \"bool\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/runtime_config_policy.py",
|
||
"code": "no-redef",
|
||
"message": "Name \"SSRFError\" already defined (possibly by an import)",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/runtime_config_policy.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/runtime_config_store.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/runtime_guardrails.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/runtime_lifecycle.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/safe_io.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"is_private_ip\" has incompatible type \"str | int\"; expected \"str\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/safe_io.py",
|
||
"code": "attr-defined",
|
||
"message": "\"Exception\" has no attribute \"read\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/safe_io.py",
|
||
"code": "attr-defined",
|
||
"message": "\"PinnedHTTPConnection\" has no attribute \"source_address\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/safe_io.py",
|
||
"code": "attr-defined",
|
||
"message": "\"PinnedHTTPSConnection\" has no attribute \"_context\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/safe_io.py",
|
||
"code": "attr-defined",
|
||
"message": "\"PinnedHTTPSConnection\" has no attribute \"source_address\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/safe_io.py",
|
||
"code": "attr-defined",
|
||
"message": "\"PinnedHTTPSHandler\" has no attribute \"_check_hostname\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/safe_io.py",
|
||
"code": "attr-defined",
|
||
"message": "\"PinnedHTTPSHandler\" has no attribute \"_context\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/safe_io.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"bytes\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/safe_io.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[Any, Any]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/safe_io.py",
|
||
"code": "return-value",
|
||
"message": "Incompatible return value type (got \"tuple[str, str, int, list[str | int]]\", expected \"tuple[str, str, int, list[str]]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/safe_io.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/scheduler/runner.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"is_cron_due\" has incompatible type \"str | None\"; expected \"str\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/scheduler/runner.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"is_interval_due\" has incompatible type \"int | None\"; expected \"int\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/scheduler/runner.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"bool\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/schema_sanitizer.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"bool\", target has type \"str\")",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/schema_sanitizer.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"dict[Any, dict[str, Any]]\", target has type \"str\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/schema_sanitizer.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"dict[str, Any]\", target has type \"str\")",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/schema_sanitizer.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"dict[str, str]\", target has type \"str\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/schema_sanitizer.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"list[Any]\", target has type \"str\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/schema_sanitizer.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"list[dict[str, Any]]\", target has type \"str\")",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/schema_sanitizer.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"list[str]\", target has type \"str\")",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/schema_sanitizer.py",
|
||
"code": "index",
|
||
"message": "Invalid index type \"str\" for \"str\"; expected type \"SupportsIndex | slice[SupportsIndex | None, SupportsIndex | None, SupportsIndex | None]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/schema_sanitizer.py",
|
||
"code": "index",
|
||
"message": "Unsupported target for indexed assignment (\"str\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/secret_providers.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/secret_store.py",
|
||
"code": "no-redef",
|
||
"message": "Name \"get_state_dir\" already defined (possibly by an import)",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/secret_store.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/secrets_encryption.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"bytes\"",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/secrets_encryption.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[str, str]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/secrets_encryption.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/secrets_encryption.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore[assignment, misc]\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/security_doctor_connector_checks.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/security_doctor_endpoint_checks.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/security_doctor_runner.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"SecurityCheckResult\", variable has type \"Callable[[SecurityReport], None]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/security_doctor_runner.py",
|
||
"code": "attr-defined",
|
||
"message": "\"Callable[[SecurityReport], None]\" has no attribute \"message\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/security_doctor_runner.py",
|
||
"code": "attr-defined",
|
||
"message": "\"Callable[[SecurityReport], None]\" has no attribute \"name\"",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/security_doctor_runner.py",
|
||
"code": "attr-defined",
|
||
"message": "\"Callable[[SecurityReport], None]\" has no attribute \"severity\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/security_doctor_runtime_checks.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/security_gate.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/settings_schema.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"float\", variable has type \"int\")",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/sidecar/auth.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/sidecar/bridge_client.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible default for parameter \"details\" (default has type \"None\", parameter has type \"dict[Any, Any]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/sidecar/bridge_client.py",
|
||
"code": "index",
|
||
"message": "Value of type \"object\" is not indexable",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/sidecar/bridge_client.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"bool\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/sidecar/bridge_client.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"list[Any]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/sidecar/bridge_client.py",
|
||
"code": "union-attr",
|
||
"message": "Item \"None\" of \"Any | None\" has no attribute \"get\"",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/sidecar/bridge_client.py",
|
||
"code": "union-attr",
|
||
"message": "Item \"None\" of \"Any | None\" has no attribute \"post\"",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/sidecar/runtime.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"submit_job\" of \"OpenClawClient\" has incompatible type \"Any | None\"; expected \"str\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/sidecar/runtime.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"submit_result\" of \"BridgeClient\" has incompatible type \"Any | None\"; expected \"str\"",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/sidecar/runtime.py",
|
||
"code": "attr-defined",
|
||
"message": "\"OpenClawClient\" has no attribute \"stop\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/surface_guard.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Request\" is not defined",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/surface_guard.py",
|
||
"code": "name-defined",
|
||
"message": "Name \"web.Response\" is not defined",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/surface_guard.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/templates.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"TemplateService\", variable has type \"None\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/templates.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"dict[str, Any]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/templates.py",
|
||
"code": "return-value",
|
||
"message": "Incompatible return value type (got \"None\", expected \"TemplateService\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/threat_intel_gate.py",
|
||
"code": "no-any-return",
|
||
"message": "Returning Any from function declared to return \"ScanResult\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/tool_runner.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"exists\" has incompatible type \"str | None\"; expected \"int | str | bytes | PathLike[str] | PathLike[bytes]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/tool_runner.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"open\" has incompatible type \"str | None\"; expected \"int | str | bytes | PathLike[str] | PathLike[bytes]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/tool_runner.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"None\", variable has type \"Callable[[], str]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/tool_runner.py",
|
||
"code": "truthy-function",
|
||
"message": "Function \"get_state_dir\" could always be true in boolean context",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/tool_runner.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/transform_worker.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible types in assignment (expression has type \"def _deny_network(*args: Any, **kwargs: Any) -> Any\", variable has type \"type[socket]\")",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/transform_worker.py",
|
||
"code": "misc",
|
||
"message": "Cannot assign to a type",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/webhook_auth.py",
|
||
"code": "assignment",
|
||
"message": "Incompatible import of \"IdempotencyStore\" (imported name has type \"type[IdempotencyStore]\", local name has type \"object\")",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/workflow_portability.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"add\" of \"set\" has incompatible type \"tuple[str | None, str]\"; expected \"tuple[str, str]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/workflow_portability.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"get\" of \"dict\" has incompatible type \"str | None\"; expected \"str\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/workflow_portability.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"int\" has incompatible type \"Any | None\"; expected \"str | Buffer | SupportsInt | SupportsIndex | SupportsTrunc\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/workflow_portability.py",
|
||
"code": "arg-type",
|
||
"message": "Argument 1 to \"walk\" has incompatible type \"Any | list[Any] | None\"; expected \"list[Any]\"",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "mypy",
|
||
"path": "services/workflow_portability.py",
|
||
"code": "unused-ignore",
|
||
"message": "Unused \"type: ignore\" comment",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/approvals.py",
|
||
"code": "F401",
|
||
"message": "`typing.Callable` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/approvals.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(RuntimeError)` instead of `try`-`except`-`pass`",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/approvals.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/approvals.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/assist.py",
|
||
"code": "F841",
|
||
"message": "Local variable `e` is assigned to but never used",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/assist.py",
|
||
"code": "RUF059",
|
||
"message": "Unpacked variable `err_msg` is never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/assist.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(RuntimeError)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/assist.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/assist.py",
|
||
"code": "UP012",
|
||
"message": "Unnecessary UTF-8 `encoding` argument to `encode`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/assist.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/assist.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/bridge.py",
|
||
"code": "F401",
|
||
"message": "`asyncio` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/bridge.py",
|
||
"code": "RUF059",
|
||
"message": "Unpacked variable `device_id` is never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/bridge.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/bridge.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/bridge.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/checkpoints_handler.py",
|
||
"code": "F401",
|
||
"message": "`json` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/checkpoints_handler.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/checkpoints_handler.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/connector_contracts.py",
|
||
"code": "I001",
|
||
"message": "Import block is un-sorted or un-formatted",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/connector_contracts.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/errors.py",
|
||
"code": "F401",
|
||
"message": "`json` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/errors.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/errors.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/errors.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/events.py",
|
||
"code": "F401",
|
||
"message": "`json` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/events.py",
|
||
"code": "F401",
|
||
"message": "`typing.Dict` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/events.py",
|
||
"code": "F841",
|
||
"message": "Local variable `store` is assigned to but never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/events.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(ValueError)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/events.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/model_manager.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/model_manager.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/model_manager.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/packs.py",
|
||
"code": "F401",
|
||
"message": "`shutil` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/packs.py",
|
||
"code": "F841",
|
||
"message": "Local variable `filename` is assigned to but never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/packs.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(Exception)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/packs.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/pnginfo.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/preflight_handler.py",
|
||
"code": "C414",
|
||
"message": "Unnecessary `list()` call within `sorted()`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/preflight_handler.py",
|
||
"code": "F401",
|
||
"message": "`typing.Any` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/preflight_handler.py",
|
||
"code": "F401",
|
||
"message": "`typing.Dict` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/preflight_handler.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/presets.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/presets.py",
|
||
"code": "RUF010",
|
||
"message": "Use explicit conversion flag",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/presets.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(RuntimeError)` instead of `try`-`except`-`pass`",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/rewrite_recipes.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/rewrite_recipes.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/route_registrars.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/schedules.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/schedules.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(RuntimeError)` instead of `try`-`except`-`pass`",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/secrets.py",
|
||
"code": "I001",
|
||
"message": "Import block is un-sorted or un-formatted",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/secrets.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/triggers.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(RuntimeError)` instead of `try`-`except`-`pass`",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/triggers.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/webhook.py",
|
||
"code": "F401",
|
||
"message": "`logging` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/webhook.py",
|
||
"code": "F541",
|
||
"message": "f-string without any placeholders",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/webhook.py",
|
||
"code": "F841",
|
||
"message": "Local variable `e` is assigned to but never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/webhook_submit.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(Exception)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/webhook_validate.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/webhook_validate.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/webhook_validate.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "api/webhook_validate.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "config.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "config.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/__main__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/__main__.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(KeyboardInterrupt)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/channels/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/channels/kakaotalk.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/channels/kakaotalk.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/channels/kakaotalk.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/channels/kakaotalk.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/channels/kakaotalk.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/command_firewall.py",
|
||
"code": "RUF010",
|
||
"message": "Use explicit conversion flag",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/command_firewall.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/command_firewall.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/command_firewall.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/command_firewall.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/config.py",
|
||
"code": "F401",
|
||
"message": "`sys` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/config.py",
|
||
"code": "SIM102",
|
||
"message": "Use a single `if` statement instead of nested `if` statements",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/config.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/config.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 15
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/config.py",
|
||
"code": "UP006",
|
||
"message": "Use `set` instead of `Set` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/config.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/config.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/config.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/config.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 32
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/contract.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/contract.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/contract.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/contract.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/contract.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/llm_client.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/llm_client.py",
|
||
"code": "SIM102",
|
||
"message": "Use a single `if` statement instead of nested `if` statements",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/llm_client.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/llm_client.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/llm_client.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/llm_client.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/media_store.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/media_store.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/media_store.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/openclaw_client.py",
|
||
"code": "E722",
|
||
"message": "Do not use bare `except`",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/openclaw_client.py",
|
||
"code": "F401",
|
||
"message": "`json` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/openclaw_client.py",
|
||
"code": "F541",
|
||
"message": "f-string without any placeholders",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/openclaw_client.py",
|
||
"code": "RUF013",
|
||
"message": "PEP 484 prohibits implicit `Optional`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/openclaw_client.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/discord_gateway.py",
|
||
"code": "E722",
|
||
"message": "Do not use bare `except`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/discord_gateway.py",
|
||
"code": "F401",
|
||
"message": "`aiohttp` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/discord_gateway.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/feishu_installation_manager.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/feishu_installation_manager.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/feishu_installation_manager.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/feishu_installation_manager.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/feishu_installation_manager.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/feishu_installation_manager.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/feishu_installation_manager.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/feishu_long_connection.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(asyncio.CancelledError)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/feishu_long_connection.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/feishu_webhook.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 12
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/feishu_webhook.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/feishu_webhook.py",
|
||
"code": "UP012",
|
||
"message": "Unnecessary UTF-8 `encoding` argument to `encode`",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/feishu_webhook.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/feishu_webhook.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/feishu_webhook.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/kakao_webhook.py",
|
||
"code": "F401",
|
||
"message": "`..contract.CommandResponse` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/kakao_webhook.py",
|
||
"code": "F841",
|
||
"message": "Local variable `files` is assigned to but never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/kakao_webhook.py",
|
||
"code": "F841",
|
||
"message": "Local variable `image_url` is assigned to but never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/kakao_webhook.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/line_webhook.py",
|
||
"code": "F401",
|
||
"message": "`..contract.CommandResponse` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/line_webhook.py",
|
||
"code": "RUF059",
|
||
"message": "Unpacked variable `aiohttp` is never used",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/line_webhook.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/slack_installation_manager.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 12
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/slack_installation_manager.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/slack_installation_manager.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/slack_installation_manager.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/slack_installation_manager.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/slack_socket_mode.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(asyncio.CancelledError)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/slack_socket_mode.py",
|
||
"code": "SIM117",
|
||
"message": "Use a single `with` statement with multiple contexts instead of nested `with` statements",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/slack_socket_mode.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/slack_webhook.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/slack_webhook.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/slack_webhook.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/telegram_polling.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/wechat_webhook.py",
|
||
"code": "F401",
|
||
"message": "`..contract.CommandResponse` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/wechat_webhook.py",
|
||
"code": "F401",
|
||
"message": "`json` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/wechat_webhook.py",
|
||
"code": "N818",
|
||
"message": "Exception name `XMLBudgetExceeded` should be named with an Error suffix",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/wechat_webhook.py",
|
||
"code": "RUF006",
|
||
"message": "Store a reference to the return value of `asyncio.create_task`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/wechat_webhook.py",
|
||
"code": "SIM102",
|
||
"message": "Use a single `if` statement instead of nested `if` statements",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/wechat_webhook.py",
|
||
"code": "SIM108",
|
||
"message": "Use ternary operator `clean_ver = ver_str[6:] if ver_str.lower().startswith(\"expat_\") else ver_str` instead of `if`-`else`-block",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/wechat_webhook.py",
|
||
"code": "SIM113",
|
||
"message": "Use `enumerate()` for index variable `field_count` in `for` loop",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/wechat_webhook.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/whatsapp_webhook.py",
|
||
"code": "F401",
|
||
"message": "`..contract.CommandResponse` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/whatsapp_webhook.py",
|
||
"code": "F841",
|
||
"message": "Local variable `phone_number_id` is assigned to but never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/platforms/whatsapp_webhook.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/rate_limiter.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/rate_limiter.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/reply_visibility.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/reply_visibility.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/reply_visibility.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/results_poller.py",
|
||
"code": "B007",
|
||
"message": "Loop control variable `node_id` not used within loop body",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/results_poller.py",
|
||
"code": "RUF006",
|
||
"message": "Store a reference to the return value of `asyncio.create_task`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/results_poller.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/results_poller.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/results_poller.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/security_profile.py",
|
||
"code": "F401",
|
||
"message": "`.transport_contract.CallbackError` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/security_profile.py",
|
||
"code": "F401",
|
||
"message": "`.transport_contract.CallbackRecord` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/security_profile.py",
|
||
"code": "F401",
|
||
"message": "`.transport_contract.TokenError` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/security_profile.py",
|
||
"code": "F401",
|
||
"message": "`.transport_contract.TokenResult` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/security_profile.py",
|
||
"code": "F401",
|
||
"message": "`.transport_contract.TokenSource` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/security_profile.py",
|
||
"code": "F401",
|
||
"message": "`typing.Set` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/security_profile.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/security_profile.py",
|
||
"code": "UP006",
|
||
"message": "Use `frozenset` instead of `FrozenSet` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/security_profile.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/security_profile.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/security_profile.py",
|
||
"code": "UP035",
|
||
"message": "`typing.FrozenSet` is deprecated, use `frozenset` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/security_profile.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/security_profile.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/security_profile.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 14
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/semantic_guard.py",
|
||
"code": "RUF012",
|
||
"message": "Mutable default value for class attribute",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/semantic_guard.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/semantic_guard.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/semantic_guard.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/semantic_guard.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/semantic_guard.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/semantic_guard.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/state.py",
|
||
"code": "F401",
|
||
"message": "`typing.List` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/state.py",
|
||
"code": "RUF013",
|
||
"message": "PEP 484 prohibits implicit `Optional`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/state.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/state.py",
|
||
"code": "UP006",
|
||
"message": "Use `set` instead of `Set` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/state.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/state.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/state.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/state.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/transport_contract.py",
|
||
"code": "F541",
|
||
"message": "f-string without any placeholders",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/transport_contract.py",
|
||
"code": "SIM102",
|
||
"message": "Use a single `if` statement instead of nested `if` statements",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/transport_contract.py",
|
||
"code": "SIM103",
|
||
"message": "Return the negated condition directly",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/transport_contract.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 20
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/transport_contract.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/transport_contract.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Sequence`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/transport_contract.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/transport_contract.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/transport_contract.py",
|
||
"code": "UP037",
|
||
"message": "Remove quotes from type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "connector/transport_contract.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 20
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "models/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "models/schemas.py",
|
||
"code": "F401",
|
||
"message": "`services.request_contracts.MAX_BODY_SIZE` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "models/schemas.py",
|
||
"code": "F401",
|
||
"message": "`typing.List` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "models/schemas.py",
|
||
"code": "F401",
|
||
"message": "`typing.Union` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "models/schemas.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 10
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "models/schemas.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "models/schemas.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "models/schemas.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/batch_variants.py",
|
||
"code": "F401",
|
||
"message": "`typing.Any` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/batch_variants.py",
|
||
"code": "F401",
|
||
"message": "`typing.Dict` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/batch_variants.py",
|
||
"code": "N802",
|
||
"message": "Function name `INPUT_TYPES` should be lowercase",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/batch_variants.py",
|
||
"code": "RUF046",
|
||
"message": "Value being cast to `int` is already an integer",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/batch_variants.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/batch_variants.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/batch_variants.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/batch_variants.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/batch_variants.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/image_to_prompt.py",
|
||
"code": "N802",
|
||
"message": "Function name `INPUT_TYPES` should be lowercase",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/image_to_prompt.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/image_to_prompt.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/portability_contract.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/portability_contract.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/prompt_planner.py",
|
||
"code": "N802",
|
||
"message": "Function name `INPUT_TYPES` should be lowercase",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/prompt_planner.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/prompt_planner.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/prompt_refiner.py",
|
||
"code": "N802",
|
||
"message": "Function name `INPUT_TYPES` should be lowercase",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/prompt_refiner.py",
|
||
"code": "RUF010",
|
||
"message": "Use explicit conversion flag",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/prompt_refiner.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "nodes/prompt_refiner.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/check_deployment_profile.py",
|
||
"code": "E402",
|
||
"message": "Module level import not at top of file",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/check_openapi_sync.py",
|
||
"code": "UP022",
|
||
"message": "Prefer `capture_output` over sending `stdout` and `stderr` to `PIPE`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/check_openapi_sync.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`, `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/check_supply_chain_hardening.py",
|
||
"code": "F401",
|
||
"message": "`sys` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/check_supply_chain_hardening.py",
|
||
"code": "SIM102",
|
||
"message": "Use a single `if` statement instead of nested `if` statements",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/check_supply_chain_hardening.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/devtools/debug_s35_import.py",
|
||
"code": "E402",
|
||
"message": "Module level import not at top of file",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/devtools/verify_s30_doctor.py",
|
||
"code": "E402",
|
||
"message": "Module level import not at top of file",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/generate_provenance.py",
|
||
"code": "F401",
|
||
"message": "`typing.Dict` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/generate_provenance.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/lint_implementation_record.py",
|
||
"code": "F401",
|
||
"message": "`typing.Iterable` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/lint_implementation_record.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/lint_implementation_record.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/lint_implementation_record.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterable`, `Sequence`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/lint_implementation_record.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/lint_implementation_record.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/openclaw_smoke_import.py",
|
||
"code": "F541",
|
||
"message": "f-string without any placeholders",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/operator_doctor.py",
|
||
"code": "E402",
|
||
"message": "Module level import not at top of file",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/precommit_block_sensitive_files.py",
|
||
"code": "UP022",
|
||
"message": "Prefer `capture_output` over sending `stdout` and `stderr` to `PIPE`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/quality_governance_common.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/registry_publish_guard.py",
|
||
"code": "F401",
|
||
"message": "`sys` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_adversarial_gate.py",
|
||
"code": "F401",
|
||
"message": "`test_r111_fuzz_harness._deterministic_getaddrinfo` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_adversarial_gate.py",
|
||
"code": "F401",
|
||
"message": "`unittest.mock.patch` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_adversarial_gate.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(PathTraversalError, ValueError)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_adversarial_gate.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 9
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_adversarial_gate.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 16
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_adversarial_gate.py",
|
||
"code": "UP006",
|
||
"message": "Use `set` instead of `Set` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_adversarial_gate.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_adversarial_gate.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_adversarial_gate.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_adversarial_gate.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_adversarial_gate.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_adversarial_gate.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_adversarial_gate.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 10
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "F401",
|
||
"message": "`typing.Any` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "F401",
|
||
"message": "`typing.Dict` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "F401",
|
||
"message": "`typing.List` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "F401",
|
||
"message": "`typing.Tuple` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "F401",
|
||
"message": "`typing.Union` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(OSError)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_mutation_test.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_unittests.py",
|
||
"code": "B007",
|
||
"message": "Loop control variable `test` not used within loop body",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_unittests.py",
|
||
"code": "F401",
|
||
"message": "`os` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_unittests.py",
|
||
"code": "SIM108",
|
||
"message": "Use ternary operator `test_id = test_case.id() if hasattr(test_case, \"id\") else str(test_case)` instead of `if`-`else`-block",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_unittests.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_unittests.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 9
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_unittests.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_unittests.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_unittests.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_unittests.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/run_unittests.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/start_sidecar.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(KeyboardInterrupt)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_exception_boundary_policy.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_provenance.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_quality_governance.py",
|
||
"code": "F401",
|
||
"message": "`sys` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_quality_governance.py",
|
||
"code": "SIM102",
|
||
"message": "Use a single `if` statement instead of nested `if` statements",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_quality_governance.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_quality_governance.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_quality_governance.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_test_debt_governance.py",
|
||
"code": "F401",
|
||
"message": "`typing.Iterable` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_test_debt_governance.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_test_debt_governance.py",
|
||
"code": "SIM118",
|
||
"message": "Use `key in dict` instead of `key in dict.keys()`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_test_debt_governance.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_test_debt_governance.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 9
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_test_debt_governance.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_test_debt_governance.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_test_debt_governance.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_test_debt_governance.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "scripts/verify_test_debt_governance.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/access_control.py",
|
||
"code": "RUF012",
|
||
"message": "Mutable default value for class attribute",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/access_control.py",
|
||
"code": "SIM102",
|
||
"message": "Use a single `if` statement instead of nested `if` statements",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/access_control.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/access_control.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/access_control.py",
|
||
"code": "UP006",
|
||
"message": "Use `set` instead of `Set` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/access_control.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/access_control.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/access_control.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/access_control.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/access_control.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/access_control.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/__init__.py",
|
||
"code": "RUF022",
|
||
"message": "`__all__` is not sorted",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/models.py",
|
||
"code": "SIM102",
|
||
"message": "Use a single `if` statement instead of nested `if` statements",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/models.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/models.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/models.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 10
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/service.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/service.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/service.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/service.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/service.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 20
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/storage.py",
|
||
"code": "E402",
|
||
"message": "Module level import not at top of file",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/storage.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/storage.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/storage.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/storage.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/approvals/storage.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/async_utils.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/async_utils.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`, `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/async_utils.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(Exception)` instead of `try`-`except`-`pass`",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 11
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit.py",
|
||
"code": "UP012",
|
||
"message": "Unnecessary UTF-8 `encoding` argument to `encode`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 14
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit_events.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit_events.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit_events.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit_pipeline.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(Exception)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit_pipeline.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit_pipeline.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit_pipeline.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit_pipeline.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit_pipeline.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit_pipeline.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/audit_pipeline.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/automation_composer.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 16
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/automation_composer.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/automation_composer.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/automation_composer.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/automation_composer.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 11
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/bootstrap/registration.py",
|
||
"code": "N806",
|
||
"message": "Variable `BridgeHandlers` in function should be lowercase",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/bridge_handshake.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/bridge_handshake.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/bridge_handshake.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/bridge_handshake.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/bridge_token_lifecycle.py",
|
||
"code": "SIM114",
|
||
"message": "Combine `if` branches using logical `or` operator",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/bridge_token_lifecycle.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/bridge_token_lifecycle.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/bridge_token_lifecycle.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/bridge_token_lifecycle.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/bridge_token_lifecycle.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/bridge_token_lifecycle.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/bridge_token_lifecycle.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/bridge_token_lifecycle.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 12
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/cache/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/cache/ttl_cache.py",
|
||
"code": "F401",
|
||
"message": "`typing.Any` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/cache/ttl_cache.py",
|
||
"code": "F401",
|
||
"message": "`typing.Dict` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/cache/ttl_cache.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/cache/ttl_cache.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/cache/ttl_cache.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/cache/ttl_cache.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/callback_delivery.py",
|
||
"code": "F401",
|
||
"message": "`.retry_partition.RetryDecision` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/callback_delivery.py",
|
||
"code": "RUF006",
|
||
"message": "Store a reference to the return value of `asyncio.create_task`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/callback_delivery.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(Exception)` instead of `try`-`except`-`pass`",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/callback_delivery.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/callback_delivery.py",
|
||
"code": "UP006",
|
||
"message": "Use `set` instead of `Set` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/callback_delivery.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/callback_delivery.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/callback_delivery.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/capabilities.py",
|
||
"code": "F401",
|
||
"message": "`os` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/__init__.py",
|
||
"code": "RUF022",
|
||
"message": "`__all__` is not sorted",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/network_errors.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/network_errors.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/network_errors.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/retry.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Awaitable`, `Callable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/retry.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/session_scope.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/targets.py",
|
||
"code": "F401",
|
||
"message": "`dataclasses.dataclass` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/targets.py",
|
||
"code": "F401",
|
||
"message": "`typing.Tuple` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/targets.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/targets.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/transport_contract.py",
|
||
"code": "F401",
|
||
"message": "`hashlib` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/transport_contract.py",
|
||
"code": "F401",
|
||
"message": "`typing.Protocol` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/transport_contract.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/transport_contract.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/transport_contract.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/transport_contract.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/transport_contract.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/webhook_adapter.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/webhook_adapter.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/chatops/webhook_adapter.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/checkpoints.py",
|
||
"code": "E402",
|
||
"message": "Module level import not at top of file",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/checkpoints.py",
|
||
"code": "F401",
|
||
"message": "`shutil` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/checkpoints.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/checkpoints.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/checkpoints.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/checkpoints.py",
|
||
"code": "UP024",
|
||
"message": "Replace aliased errors with `OSError`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/checkpoints.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/checkpoints.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/checkpoints.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/checkpoints.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/comfyui_history.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 14
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/comfyui_history.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/comfyui_history.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/comfyui_history.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/comfyui_history.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/compatibility_matrix_governance.py",
|
||
"code": "C420",
|
||
"message": "Unnecessary dict comprehension for iterable; use `dict.fromkeys` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/compatibility_matrix_governance.py",
|
||
"code": "RUF005",
|
||
"message": "Consider `[*lines[:idx + 1], \"\\n\", block, *lines[idx + 1:]]` instead of concatenation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/compatibility_matrix_governance.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 20
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/compatibility_matrix_governance.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/compatibility_matrix_governance.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/compatibility_matrix_governance.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/compatibility_matrix_governance.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/compatibility_matrix_governance.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/compatibility_matrix_governance.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 21
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/config_layers.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 9
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/config_layers.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/config_layers.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`, `Iterable`, `Mapping`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/config_layers.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/config_layers.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/config_layers.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 10
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_allowlist_posture.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_allowlist_posture.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Mapping`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_allowlist_posture.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_allowlist_posture.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_callback_contract.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_callback_contract.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_callback_contract.py",
|
||
"code": "UP037",
|
||
"message": "Remove quotes from type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_callback_contract.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 9
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_extraction_contract.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_extraction_contract.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_installation_registry.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 21
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_installation_registry.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_installation_registry.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_installation_registry.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_installation_registry.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 20
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_replay_lifecycle.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_replay_lifecycle.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/connector_replay_lifecycle.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 13
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/constrained_transforms.py",
|
||
"code": "F401",
|
||
"message": "`os` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/constrained_transforms.py",
|
||
"code": "N818",
|
||
"message": "Exception name `TransformExecutorUnavailable` should be named with an Error suffix",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/constrained_transforms.py",
|
||
"code": "RUF022",
|
||
"message": "`__all__` is not sorted",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/constrained_transforms.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/constrained_transforms.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/constrained_transforms.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/constrained_transforms.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/constrained_transforms.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/control_plane.py",
|
||
"code": "F401",
|
||
"message": "`.deployment_profile.evaluate_deployment_profile` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/control_plane.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/control_plane.py",
|
||
"code": "UP006",
|
||
"message": "Use `frozenset` instead of `FrozenSet` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/control_plane.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/control_plane.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/control_plane.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/control_plane.py",
|
||
"code": "UP035",
|
||
"message": "`typing.FrozenSet` is deprecated, use `frozenset` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/control_plane.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/control_plane.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/control_plane.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/control_plane_adapter.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/control_plane_adapter.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/control_plane_adapter.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/crypto_lifecycle_drills.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 13
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/crypto_lifecycle_drills.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 9
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/crypto_lifecycle_drills.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/crypto_lifecycle_drills.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/crypto_lifecycle_drills.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/crypto_lifecycle_drills.py",
|
||
"code": "UP037",
|
||
"message": "Remove quotes from type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/crypto_lifecycle_drills.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/csrf_protection.py",
|
||
"code": "E402",
|
||
"message": "Module level import not at top of file",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/csrf_protection.py",
|
||
"code": "F841",
|
||
"message": "Local variable `origin_base` is assigned to but never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/csrf_protection.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/delivery/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/delivery/__init__.py",
|
||
"code": "RUF022",
|
||
"message": "`__all__` is not sorted",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/delivery/http_callback.py",
|
||
"code": "C401",
|
||
"message": "Unnecessary generator (rewrite as a set comprehension)",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/delivery/http_callback.py",
|
||
"code": "F401",
|
||
"message": "`asyncio` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/delivery/http_callback.py",
|
||
"code": "UP006",
|
||
"message": "Use `set` instead of `Set` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/delivery/http_callback.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/delivery/http_callback.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/delivery/router.py",
|
||
"code": "F401",
|
||
"message": "`typing.Any` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/delivery/router.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/delivery/router.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/delivery/router.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/deployment_profile.py",
|
||
"code": "F401",
|
||
"message": "`typing.Dict` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/deployment_profile.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterable`, `Mapping`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/deployment_profile.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/deployment_profile.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/diagnostics_flags.py",
|
||
"code": "F401",
|
||
"message": "`.redaction.redact_text` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/diagnostics_flags.py",
|
||
"code": "UP006",
|
||
"message": "Use `set` instead of `Set` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/diagnostics_flags.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/endpoint_manifest.py",
|
||
"code": "B010",
|
||
"message": "Do not call `setattr` with a constant attribute value. It is not any safer than normal property access.",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/endpoint_manifest.py",
|
||
"code": "E402",
|
||
"message": "Module level import not at top of file",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/endpoint_manifest.py",
|
||
"code": "F401",
|
||
"message": "`typing.Set` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/endpoint_manifest.py",
|
||
"code": "SIM102",
|
||
"message": "Use a single `if` statement instead of nested `if` statements",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/endpoint_manifest.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/endpoint_manifest.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/endpoint_manifest.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/endpoint_manifest.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/endpoint_manifest.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/endpoint_manifest.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/endpoint_manifest.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/endpoint_manifest.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/endpoint_manifest.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/execution_budgets.py",
|
||
"code": "F841",
|
||
"message": "Local variable `global_acquired` is assigned to but never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/execution_budgets.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/execution_budgets.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/execution_budgets.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/failover.py",
|
||
"code": "F401",
|
||
"message": "`pathlib.Path` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/failover.py",
|
||
"code": "F401",
|
||
"message": "`typing.Any` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/failover.py",
|
||
"code": "SIM103",
|
||
"message": "Return the condition `category == ErrorCategory.UNKNOWN` directly",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/failover.py",
|
||
"code": "SIM103",
|
||
"message": "Return the condition directly",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/failover.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/failover.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/failover.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/failover.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/failover.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/failover.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/failover.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/failover.py",
|
||
"code": "UP037",
|
||
"message": "Remove quotes from type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/failover.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 26
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/idempotency_store.py",
|
||
"code": "SIM102",
|
||
"message": "Use a single `if` statement instead of nested `if` statements",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/idempotency_store.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(Exception)` instead of `try`-`except`-`pass`",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/idempotency_store.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/idempotency_store.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/idempotency_store.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/idempotency_store.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/idempotency_store.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 10
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/import_fallback.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/import_fallback.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/import_fallback.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/integrity.py",
|
||
"code": "F401",
|
||
"message": "`shutil` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/integrity.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/integrity.py",
|
||
"code": "UP007",
|
||
"message": "Use `X | Y` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/integrity.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/integrity.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/integrity.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/job_events.py",
|
||
"code": "F401",
|
||
"message": "`dataclasses.asdict` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/job_events.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/job_events.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/job_events.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/job_events.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/job_events.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/jobs_read_model.py",
|
||
"code": "N818",
|
||
"message": "Exception name `JobsBackendUnavailable` should be named with an Error suffix",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/jobs_read_model.py",
|
||
"code": "N818",
|
||
"message": "Exception name `JobsHostContractUnsupported` should be named with an Error suffix",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/jobs_security.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterator`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/legacy_compat.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/legacy_compat.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/legacy_compat.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Mapping`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/legacy_compat.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/legacy_compat.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/legacy_compat.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "E402",
|
||
"message": "Module level import not at top of file",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "F401",
|
||
"message": "`.providers.catalog.DEFAULT_MODEL_BY_PROVIDER` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "F401",
|
||
"message": "`asyncio` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "F401",
|
||
"message": "`concurrent.futures` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "N806",
|
||
"message": "Variable `ErrorCategory` in function should be lowercase",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "N806",
|
||
"message": "Variable `SAFE_BOUNDS` in function should be lowercase",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "RUF012",
|
||
"message": "Mutable default value for class attribute",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "SIM102",
|
||
"message": "Use a single `if` statement instead of nested `if` statements",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 13
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 9
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_client.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 36
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_model_list.py",
|
||
"code": "RUF059",
|
||
"message": "Unpacked variable `models` is never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_output.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_output.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/llm_output.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/log_tail.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/log_tail.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/log_tail.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/management_query.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/management_query.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/management_query.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`, `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/management_query.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/management_query.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/management_query.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/metrics.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/metrics.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager.py",
|
||
"code": "N818",
|
||
"message": "Exception name `DownloadCancelled` should be named with an Error suffix",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(OSError)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 24
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager.py",
|
||
"code": "UP037",
|
||
"message": "Remove quotes from type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 22
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_catalog.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_catalog.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_catalog.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_catalog.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_catalog.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_catalog.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_tasks.py",
|
||
"code": "SIM103",
|
||
"message": "Return the negated condition directly",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_tasks.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_tasks.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_tasks.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_tasks.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_transfer.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(Exception)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_transfer.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_transfer.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_transfer.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_transfer.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/model_manager_transfer.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/modules.py",
|
||
"code": "F401",
|
||
"message": "`typing.Dict` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/modules.py",
|
||
"code": "RUF012",
|
||
"message": "Mutable default value for class attribute",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/modules.py",
|
||
"code": "UP006",
|
||
"message": "Use `set` instead of `Set` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/modules.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/modules.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/observability/backpressure.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/observability/backpressure.py",
|
||
"code": "UP006",
|
||
"message": "Use `collections.deque` instead of `Deque` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/observability/backpressure.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/observability/backpressure.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Deque` is deprecated, use `collections.deque` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/observability/backpressure.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/openapi_generation.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/openapi_generation.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/openapi_generation.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/openapi_generation.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/openapi_generation.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/openapi_generation.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/operator_doctor.py",
|
||
"code": "F401",
|
||
"message": "`.permission_posture.evaluate_startup_permissions` imported but unused; consider using `importlib.util.find_spec` to test for availability",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/operator_doctor.py",
|
||
"code": "F541",
|
||
"message": "f-string without any placeholders",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/operator_doctor.py",
|
||
"code": "F841",
|
||
"message": "Local variable `long_path` is assigned to but never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/operator_doctor.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/operator_doctor.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/operator_doctor.py",
|
||
"code": "UP034",
|
||
"message": "Avoid extraneous parentheses",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/operator_doctor.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/operator_doctor.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/operator_doctor.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/operator_guidance.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/operator_guidance.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/operator_guidance.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/package_hygiene.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/package_hygiene.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_archive.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_archive.py",
|
||
"code": "N806",
|
||
"message": "Variable `DANGEROUS_PATTERNS` in function should be lowercase",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_archive.py",
|
||
"code": "RUF003",
|
||
"message": "Comment contains ambiguous `.` (FULLWIDTH FULL STOP). Did you mean `.` (FULL STOP)?",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_archive.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_manifest.py",
|
||
"code": "F401",
|
||
"message": "`typing.Tuple` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_manifest.py",
|
||
"code": "RUF010",
|
||
"message": "Use explicit conversion flag",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_manifest.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_manifest.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_manifest.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_manifest.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_manifest.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_registry.py",
|
||
"code": "F401",
|
||
"message": "`typing.Dict` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_registry.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_registry.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_registry.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_registry.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_registry.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_types.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_types.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/packs/pack_types.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/parameter_lab.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/parameter_lab.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 15
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/parameter_lab.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/parameter_lab.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/parameter_lab.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/parameter_lab.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/paths.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(OSError)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/permission_posture.py",
|
||
"code": "F401",
|
||
"message": "`typing.Dict` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/permission_posture.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/permission_posture.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/permission_posture.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/permission_posture.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/permission_posture.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/permission_posture.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/planner.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/planner.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/planner.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/planner.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/planner.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/planner.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/planner_registry.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 9
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/planner_registry.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/planner_registry.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 11
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/__init__.py",
|
||
"code": "RUF022",
|
||
"message": "`__all__` is not sorted",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/async_bridge.py",
|
||
"code": "F401",
|
||
"message": "`typing.Callable` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/async_bridge.py",
|
||
"code": "F841",
|
||
"message": "Local variable `loop` is assigned to but never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/async_bridge.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/builtin/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/builtin/audit_log.py",
|
||
"code": "F401",
|
||
"message": "`..contract.Plugin` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/builtin/model_alias.py",
|
||
"code": "F401",
|
||
"message": "`..contract.Plugin` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/builtin/model_alias.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/builtin/params_clamp.py",
|
||
"code": "F401",
|
||
"message": "`..contract.Plugin` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/builtin/params_clamp.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/builtin/params_clamp.py",
|
||
"code": "RUF012",
|
||
"message": "Mutable default value for class attribute",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/builtin/params_clamp.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/builtin/params_clamp.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/contract.py",
|
||
"code": "F401",
|
||
"message": "`typing.Generic` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/contract.py",
|
||
"code": "F401",
|
||
"message": "`typing.List` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/contract.py",
|
||
"code": "F401",
|
||
"message": "`typing.Union` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/contract.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/contract.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/contract.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/contract.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/manager.py",
|
||
"code": "F401",
|
||
"message": "`.contract.HookType` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/manager.py",
|
||
"code": "F401",
|
||
"message": "`inspect` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/manager.py",
|
||
"code": "F401",
|
||
"message": "`typing.Any` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/manager.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/manager.py",
|
||
"code": "F401",
|
||
"message": "`typing.Tuple` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/manager.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/manager.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/manager.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/manager.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/manager.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/plugins/manager.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/policy_posture.py",
|
||
"code": "F401",
|
||
"message": "`cryptography.hazmat.primitives.serialization` imported but unused; consider using `importlib.util.find_spec` to test for availability",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/policy_posture.py",
|
||
"code": "F401",
|
||
"message": "`os` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/policy_posture.py",
|
||
"code": "F401",
|
||
"message": "`time` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/policy_posture.py",
|
||
"code": "F401",
|
||
"message": "`typing.Union` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/policy_posture.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 11
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/policy_posture.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/policy_posture.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/policy_posture.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/policy_posture.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/policy_posture.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/preflight.py",
|
||
"code": "B007",
|
||
"message": "Loop control variable `key` not used within loop body",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/preflight.py",
|
||
"code": "F401",
|
||
"message": "`typing.Set` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/preflight.py",
|
||
"code": "F401",
|
||
"message": "`typing.Tuple` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/preflight.py",
|
||
"code": "F821",
|
||
"message": "Undefined name `OperatorBanner`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/preflight.py",
|
||
"code": "SIM118",
|
||
"message": "Use `key in dict` instead of `key in dict.keys()`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/preflight.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 19
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/preflight.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 10
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/preflight.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/preflight.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/preflight.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/preflight.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/presets/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/presets/models.py",
|
||
"code": "F401",
|
||
"message": "`json` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/presets/models.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/presets/models.py",
|
||
"code": "RUF013",
|
||
"message": "PEP 484 prohibits implicit `Optional`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/presets/models.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/presets/models.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/presets/models.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/presets/models.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/presets/storage.py",
|
||
"code": "F401",
|
||
"message": "`typing.Dict` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/presets/storage.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/presets/storage.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/presets/storage.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/presets/storage.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/presets/storage.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 11
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/product_boundary.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/product_boundary.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/provider_errors.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/provider_errors.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/provider_errors.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/__init__.py",
|
||
"code": "RUF022",
|
||
"message": "`__all__` is not sorted",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/anthropic.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/anthropic.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/anthropic.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/anthropic.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/anthropic.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/catalog.py",
|
||
"code": "F401",
|
||
"message": "`dataclasses.field` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/catalog.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/catalog.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/catalog.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/catalog.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/catalog.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/catalog.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/catalog.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/keys.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/openai_compat.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 11
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/openai_compat.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/openai_compat.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/openai_compat.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/openai_compat.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/providers/openai_compat.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 15
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/queue_submit.py",
|
||
"code": "E402",
|
||
"message": "Module level import not at top of file",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/queue_submit.py",
|
||
"code": "E722",
|
||
"message": "Do not use bare `except`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/queue_submit.py",
|
||
"code": "F401",
|
||
"message": "`api.errors.create_error_response` imported but unused; consider using `importlib.util.find_spec` to test for availability",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/queue_submit.py",
|
||
"code": "RUF010",
|
||
"message": "Use explicit conversion flag",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/queue_submit.py",
|
||
"code": "SIM117",
|
||
"message": "Use a single `with` statement with multiple contexts instead of nested `with` statements",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/queue_submit.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/queue_submit.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/queue_submit.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/rate_limit.py",
|
||
"code": "B009",
|
||
"message": "Do not call `getattr` with a constant attribute value. It is not any safer than normal property access.",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/rate_limit.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/rate_limit.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/rate_limit.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Mapping`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/rate_limit.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/rate_limit.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/rate_limit.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 11
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/reasoning_redaction.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/reasoning_redaction.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/reasoning_redaction.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/redaction.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/redaction.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/redaction.py",
|
||
"code": "UP006",
|
||
"message": "Use `set` instead of `Set` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/redaction.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/redaction.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/redaction.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/redaction.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/redaction.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/redaction.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/refiner.py",
|
||
"code": "SIM118",
|
||
"message": "Use `key in dict` instead of `key in dict.keys()`",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/refiner.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/refiner.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/refiner.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/refiner.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/refiner.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/refiner.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/registry.py",
|
||
"code": "F401",
|
||
"message": "`typing.Type` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/registry.py",
|
||
"code": "RUF012",
|
||
"message": "Mutable default value for class attribute",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/registry.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/registry.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/registry.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Type` is deprecated, use `type` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/registry.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/registry_quarantine.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 9
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/registry_quarantine.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/registry_quarantine.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/registry_quarantine.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/registry_quarantine.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/registry_quarantine.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/registry_quarantine.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/registry_quarantine.py",
|
||
"code": "UP037",
|
||
"message": "Remove quotes from type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/registry_quarantine.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/request_contracts.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/request_contracts.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/request_ip.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/request_ip.py",
|
||
"code": "F841",
|
||
"message": "Local variable `candidate` is assigned to but never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/request_ip.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/request_ip.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/retry_after.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/retry_after.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/retry_after.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/retry_partition.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/retry_partition.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/retry_partition.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/retry_partition.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/retry_partition.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/rewrite_recipes.py",
|
||
"code": "SIM118",
|
||
"message": "Use `key in dict` instead of `key in dict.keys()`",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/rewrite_recipes.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 25
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/rewrite_recipes.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 16
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/rewrite_recipes.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/rewrite_recipes.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/rewrite_recipes.py",
|
||
"code": "UP037",
|
||
"message": "Remove quotes from type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/rewrite_recipes.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 15
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config.py",
|
||
"code": "F401",
|
||
"message": "`services.runtime_config_policy.get_apply_semantics` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config.py",
|
||
"code": "F401",
|
||
"message": "`services.runtime_config_policy.get_llm_egress_controls` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config.py",
|
||
"code": "F401",
|
||
"message": "`services.runtime_config_policy.get_scheduler_config` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config.py",
|
||
"code": "F401",
|
||
"message": "`services.runtime_config_policy.is_config_write_enabled` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config.py",
|
||
"code": "F401",
|
||
"message": "`services.runtime_config_policy.is_loopback_client` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config.py",
|
||
"code": "F401",
|
||
"message": "`services.runtime_config_policy.validate_admin_token` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config.py",
|
||
"code": "I001",
|
||
"message": "Import block is un-sorted or un-formatted",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 12
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config_policy.py",
|
||
"code": "E731",
|
||
"message": "Do not assign a `lambda` expression, use a `def`",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config_policy.py",
|
||
"code": "F401",
|
||
"message": "`services.config_layers.SOURCE_PERSISTED` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config_policy.py",
|
||
"code": "F401",
|
||
"message": "`services.config_layers.SOURCE_RUNTIME_OVERRIDE` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config_policy.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config_policy.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config_policy.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config_policy.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config_policy.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config_projection.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config_store.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config_store.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config_store.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_config_store.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_dependency_hygiene.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_dependency_hygiene.py",
|
||
"code": "UP007",
|
||
"message": "Use `X | Y` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_dependency_hygiene.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_dependency_hygiene.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_guardrails.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_guardrails.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_guardrails.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_guardrails.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_guardrails.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_guardrails.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_lifecycle.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_lifecycle.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_lifecycle.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/runtime_lifecycle.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/safe_io.py",
|
||
"code": "N806",
|
||
"message": "Variable `PACK_VERSION` in function should be lowercase",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/safe_io.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(Exception)` instead of `try`-`except`-`pass`",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/safe_io.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(OSError)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/safe_io.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(UnicodeError, UnicodeDecodeError)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/safe_io.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/safe_io.py",
|
||
"code": "UP006",
|
||
"message": "Use `frozenset` instead of `FrozenSet` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/safe_io.py",
|
||
"code": "UP006",
|
||
"message": "Use `set` instead of `Set` for type annotation",
|
||
"count": 9
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/safe_io.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/safe_io.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Callable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/safe_io.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/safe_io.py",
|
||
"code": "UP035",
|
||
"message": "`typing.FrozenSet` is deprecated, use `frozenset` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/safe_io.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/safe_io.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/safe_io.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 28
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/delivery_contract.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/delivery_contract.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/delivery_contract.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/delivery_contract.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/history.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/history.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/history.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/history.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/history.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/history.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 10
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/models.py",
|
||
"code": "F401",
|
||
"message": "`typing.List` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/models.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/models.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/models.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/models.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/runner.py",
|
||
"code": "F401",
|
||
"message": "`asyncio` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/runner.py",
|
||
"code": "F401",
|
||
"message": "`time` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/runner.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Awaitable`, `Callable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/runner.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/storage.py",
|
||
"code": "F401",
|
||
"message": "`pathlib.Path` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/storage.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/storage.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/storage.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/storage.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/storage.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/scheduler/storage.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/schema_sanitizer.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/schema_sanitizer.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/schema_sanitizer.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/schema_sanitizer.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/schema_sanitizer.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secret_providers.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 12
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secret_store.py",
|
||
"code": "SIM118",
|
||
"message": "Use `key in dict` instead of `key in dict.keys()`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secret_store.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secret_store.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secret_store.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secret_store.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 11
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secrets_encryption.py",
|
||
"code": "F401",
|
||
"message": "`dataclasses.field` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secrets_encryption.py",
|
||
"code": "F401",
|
||
"message": "`typing.Any` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secrets_encryption.py",
|
||
"code": "F401",
|
||
"message": "`typing.List` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secrets_encryption.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secrets_encryption.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secrets_encryption.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secrets_encryption.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secrets_encryption.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secrets_encryption.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/secrets_encryption.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_advisories.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_advisories.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_advisories.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_advisories.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_advisories.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_advisories.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_advisories.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_advisories.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor.py",
|
||
"code": "RUF022",
|
||
"message": "`__all__` is not sorted",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_checks.py",
|
||
"code": "RUF022",
|
||
"message": "`__all__` is not sorted",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_endpoint_checks.py",
|
||
"code": "RUF022",
|
||
"message": "`__all__` is not sorted",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_endpoint_checks.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_endpoint_checks.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_endpoint_checks.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_report.py",
|
||
"code": "RUF001",
|
||
"message": "String contains ambiguous `ℹ` (INFORMATION SOURCE). Did you mean `i` (LATIN SMALL LETTER I)?",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_report.py",
|
||
"code": "RUF022",
|
||
"message": "`__all__` is not sorted",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_report.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 13
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_report.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 9
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_report.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_report.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_report.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_report.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_runner.py",
|
||
"code": "RUF022",
|
||
"message": "`__all__` is not sorted",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_runtime_checks.py",
|
||
"code": "F401",
|
||
"message": "`.integrity.load_verified` imported but unused; consider using `importlib.util.find_spec` to test for availability",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_doctor_runtime_checks.py",
|
||
"code": "RUF022",
|
||
"message": "`__all__` is not sorted",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_gate.py",
|
||
"code": "SIM102",
|
||
"message": "Use a single `if` statement instead of nested `if` statements",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_gate.py",
|
||
"code": "SIM103",
|
||
"message": "Return the condition directly",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_gate.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_gate.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_gate.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_gate.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_invariants.py",
|
||
"code": "F401",
|
||
"message": "`typing.List` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_invariants.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_invariants.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_invariants.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_invariants.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_telemetry.py",
|
||
"code": "F401",
|
||
"message": "`dataclasses.field` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_telemetry.py",
|
||
"code": "F401",
|
||
"message": "`typing.List` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_telemetry.py",
|
||
"code": "UP006",
|
||
"message": "Use `collections.deque` instead of `Deque` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_telemetry.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_telemetry.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Deque` is deprecated, use `collections.deque` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_telemetry.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_telemetry.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/security_telemetry.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/settings_schema.py",
|
||
"code": "F401",
|
||
"message": "`dataclasses.field` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/settings_schema.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/settings_schema.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/settings_schema.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/settings_schema.py",
|
||
"code": "UP007",
|
||
"message": "Use `X | Y` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/settings_schema.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/settings_schema.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/settings_schema.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/settings_schema.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/__init__.py",
|
||
"code": "N999",
|
||
"message": "Invalid module name: 'ComfyUI-OpenClaw'",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/__init__.py",
|
||
"code": "RUF022",
|
||
"message": "`__all__` is not sorted",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/auth.py",
|
||
"code": "C401",
|
||
"message": "Unnecessary generator (rewrite as a set comprehension)",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/auth.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/auth.py",
|
||
"code": "UP006",
|
||
"message": "Use `set` instead of `Set` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/auth.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/auth.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/auth.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/auth.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/auth.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 8
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/bridge_client.py",
|
||
"code": "F401",
|
||
"message": "`typing.List` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/bridge_client.py",
|
||
"code": "F841",
|
||
"message": "Local variable `resp` is assigned to but never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/bridge_client.py",
|
||
"code": "RUF013",
|
||
"message": "PEP 484 prohibits implicit `Optional`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/bridge_client.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/bridge_client.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/bridge_client.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/bridge_client.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/bridge_contract.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/bridge_contract.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/bridge_contract.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/bridge_contract.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/bridge_contract.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/runtime.py",
|
||
"code": "F401",
|
||
"message": "`json` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/runtime.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(KeyboardInterrupt)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar/runtime.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(NotImplementedError)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/sidecar_secret_refs.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Mapping`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/startup_profile_gate.py",
|
||
"code": "F401",
|
||
"message": "`dataclasses.asdict` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/startup_profile_gate.py",
|
||
"code": "F401",
|
||
"message": "`typing.Tuple` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/startup_profile_gate.py",
|
||
"code": "RUF100",
|
||
"message": "Unused `noqa` directive (non-enabled: `PLW0603`)",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/startup_profile_gate.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/startup_profile_gate.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/startup_profile_gate.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Mapping`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/startup_profile_gate.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/startup_profile_gate.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/startup_profile_gate.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/startup_profile_gate.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 5
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/state_dir.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/structured_logging.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/structured_logging.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/structured_logging.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/surface_guard.py",
|
||
"code": "C416",
|
||
"message": "Unnecessary dict comprehension (rewrite using `dict()`)",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/templates.py",
|
||
"code": "C414",
|
||
"message": "Unnecessary `list()` call within `sorted()`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/templates.py",
|
||
"code": "F401",
|
||
"message": "`copy` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/templates.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/templates.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/templates.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/templates.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/templates.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tenant_context.py",
|
||
"code": "B009",
|
||
"message": "Do not call `getattr` with a constant attribute value. It is not any safer than normal property access.",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tenant_context.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Mapping`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tenant_context.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/threat_intel_gate.py",
|
||
"code": "F401",
|
||
"message": "`typing.Any` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/threat_intel_gate.py",
|
||
"code": "F401",
|
||
"message": "`typing.Dict` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/threat_intel_gate.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/threat_intel_gate.py",
|
||
"code": "F541",
|
||
"message": "f-string without any placeholders",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/threat_intel_gate.py",
|
||
"code": "SIM103",
|
||
"message": "Return the condition `self._policy != ThreatPolicy.STRICT` directly",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/threat_intel_gate.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/threat_intel_gate.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/threat_intel_gate.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/threat_intel_provider.py",
|
||
"code": "F401",
|
||
"message": "`typing.Any` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/threat_intel_provider.py",
|
||
"code": "F401",
|
||
"message": "`typing.Optional` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/threat_intel_provider.py",
|
||
"code": "SIM102",
|
||
"message": "Use a single `if` statement instead of nested `if` statements",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_calling.py",
|
||
"code": "RUF019",
|
||
"message": "Unnecessary key check before dictionary access",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_calling.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 21
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_calling.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_calling.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_calling.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_calling.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_calling.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_calling.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 15
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_runner.py",
|
||
"code": "F401",
|
||
"message": "`shlex` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_runner.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_runner.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 11
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_runner.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_runner.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_runner.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_runner.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_runner.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/tool_runner.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 7
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/trace.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/trace_store.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/trace_store.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/trace_store.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/trace_store.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/trace_store.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_common.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_common.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_common.py",
|
||
"code": "UP006",
|
||
"message": "Use `set` instead of `Set` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_common.py",
|
||
"code": "UP015",
|
||
"message": "Unnecessary mode argument",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_common.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_common.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_common.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_common.py",
|
||
"code": "UP037",
|
||
"message": "Remove quotes from type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_common.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_runner.py",
|
||
"code": "RUF010",
|
||
"message": "Use explicit conversion flag",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_runner.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_runner.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_runner.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_worker.py",
|
||
"code": "B009",
|
||
"message": "Do not call `getattr` with a constant attribute value. It is not any safer than normal property access.",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_worker.py",
|
||
"code": "F401",
|
||
"message": "`typing.Any` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_worker.py",
|
||
"code": "F401",
|
||
"message": "`typing.Dict` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/transform_worker.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_auth.py",
|
||
"code": "N806",
|
||
"message": "Variable `IdempotencyStore` in function should be lowercase",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_auth.py",
|
||
"code": "RUF059",
|
||
"message": "Unpacked variable `error` is never used",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_auth.py",
|
||
"code": "SIM105",
|
||
"message": "Use `contextlib.suppress(ImportError)` instead of `try`-`except`-`pass`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_auth.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_auth.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Mapping`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_auth.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_auth.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_mapping.py",
|
||
"code": "F401",
|
||
"message": "`os` imported but unused",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_mapping.py",
|
||
"code": "SIM102",
|
||
"message": "Use a single `if` statement instead of nested `if` statements",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_mapping.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 11
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_mapping.py",
|
||
"code": "UP006",
|
||
"message": "Use `frozenset` instead of `FrozenSet` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_mapping.py",
|
||
"code": "UP006",
|
||
"message": "Use `list` instead of `List` for type annotation",
|
||
"count": 6
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_mapping.py",
|
||
"code": "UP006",
|
||
"message": "Use `set` instead of `Set` for type annotation",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_mapping.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 3
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_mapping.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_mapping.py",
|
||
"code": "UP035",
|
||
"message": "`typing.FrozenSet` is deprecated, use `frozenset` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_mapping.py",
|
||
"code": "UP035",
|
||
"message": "`typing.List` is deprecated, use `list` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_mapping.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Set` is deprecated, use `set` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_mapping.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_mapping.py",
|
||
"code": "UP037",
|
||
"message": "Remove quotes from type annotation",
|
||
"count": 2
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/webhook_mapping.py",
|
||
"code": "UP045",
|
||
"message": "Use `X | None` for type annotations",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/workflow_portability.py",
|
||
"code": "UP006",
|
||
"message": "Use `dict` instead of `Dict` for type annotation",
|
||
"count": 17
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/workflow_portability.py",
|
||
"code": "UP006",
|
||
"message": "Use `tuple` instead of `Tuple` for type annotation",
|
||
"count": 4
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/workflow_portability.py",
|
||
"code": "UP035",
|
||
"message": "Import from `collections.abc` instead: `Iterable`",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/workflow_portability.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Dict` is deprecated, use `dict` instead",
|
||
"count": 1
|
||
},
|
||
{
|
||
"tool": "ruff",
|
||
"path": "services/workflow_portability.py",
|
||
"code": "UP035",
|
||
"message": "`typing.Tuple` is deprecated, use `tuple` instead",
|
||
"count": 1
|
||
}
|
||
]
|
||
}
|