fix(legacy): silence ruff + mypy errors surfaced by litellm 1.83 bump

Three modules touched in Phase 0 surfaced latent issues:

  - llm/llm.py:_extract_thinking — choices[0].message can be None or a
    TextChoices variant without thinking_blocks under the new stubs.
    Narrow via getattr+Any; restructure return through the else block
    so try/except/else is ruff-clean (TRY300).
  - llm/__init__.py:litellm._logging._disable_debugging is now untyped;
    suppress with explicit type:ignore.
  - tools/notes/notes_actions.py:append_note_content — drop dead-code
    isinstance check (delta is typed str at the boundary), and cast the
    update_note return through a typed local in the try/else flow.

Plus per-file PLC0415 ignore for two modules whose lazy imports exist
to break the circular dependency on strix.telemetry. Pre-commit
auto-formatter strips inline #noqa comments, so the suppress lives in
pyproject.toml until the dep graph is refactored.

No behavior change. 165/165 tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
0xallam
2026-04-24 23:50:20 -07:00
parent d9748a44db
commit 3652b449d1
4 changed files with 19 additions and 13 deletions
+4
View File
@@ -243,6 +243,10 @@ ignore = [
]
[tool.ruff.lint.per-file-ignores]
# Pre-existing lazy imports inside functions (avoid circular dependency
# with strix.telemetry). Keep until the dependency graph is refactored.
"strix/llm/llm.py" = ["PLC0415"]
"strix/tools/notes/notes_actions.py" = ["PLC0415"]
"tests/**/*.py" = [
"S106", # Possible hardcoded password
"S108", # Possible insecure usage of temporary file/directory