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:
+9
-11
@@ -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:
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user