Private
Public Access
0
0

refactor(file_cache): remove top-level tree_sitter* imports; lazy via _require_warmed + TYPE_CHECKING

Sub-track 2B: 4 violations cleared. Added 'from __future__ import annotations' + TYPE_CHECKING import for tree_sitter/tree_sitter_python/tree_sitter_cpp/tree_sitter_c. Runtime access via _require_warmed() in ASTParser.__init__. 6 new tests in tests/test_file_cache_no_top_level_tree_sitter.py. All 25 tests pass (6 new + 19 existing).
This commit is contained in:
2026-06-07 10:08:16 -04:00
parent 02239bc38f
commit a41b31ed9f
2 changed files with 122 additions and 11 deletions
+9 -11
View File
@@ -34,15 +34,11 @@ See Also:
- docs/guide_tools.md for AST tool documentation
- src/summarize.py for heuristic summaries
"""
import re
import tree_sitter
import tree_sitter_python
import tree_sitter_cpp
import tree_sitter_c
from __future__ import annotations
# TODO(Ed): Eliminate these?
import re
from pathlib import Path
from typing import Optional, Any, List, Tuple, Dict
from typing import Any, Dict, List, Optional, Tuple
_ast_cache: Dict[str, Tuple[float, tree_sitter.Tree]] = {}
@@ -63,10 +59,12 @@ class ASTParser:
raise ValueError(f"Language '{language}' not supported yet.")
self.language_name = language
# Load the tree-sitter language grammar
if language == "python": self.language = tree_sitter.Language(tree_sitter_python.language())
elif language == "cpp": self.language = tree_sitter.Language(tree_sitter_cpp.language())
elif language == "c": self.language = tree_sitter.Language(tree_sitter_c.language())
self.parser = tree_sitter.Parser(self.language)
from src.module_loader import _require_warmed
ts = _require_warmed("tree_sitter")
if language == "python": self.language = ts.Language(_require_warmed("tree_sitter_python").language())
elif language == "cpp": self.language = ts.Language(_require_warmed("tree_sitter_cpp").language())
elif language == "c": self.language = ts.Language(_require_warmed("tree_sitter_c").language())
self.parser = ts.Parser(self.language)
def parse(self, code: str) -> tree_sitter.Tree:
"""