tree-sitter-analyzer 0.3.0__py3-none-any.whl → 0.6.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of tree-sitter-analyzer might be problematic. Click here for more details.
- tree_sitter_analyzer/__init__.py +5 -6
- tree_sitter_analyzer/__main__.py +2 -2
- tree_sitter_analyzer/api.py +4 -2
- tree_sitter_analyzer/cli/__init__.py +3 -3
- tree_sitter_analyzer/cli/commands/advanced_command.py +1 -1
- tree_sitter_analyzer/cli/commands/base_command.py +1 -1
- tree_sitter_analyzer/cli/commands/default_command.py +1 -1
- tree_sitter_analyzer/cli/commands/partial_read_command.py +2 -2
- tree_sitter_analyzer/cli/commands/query_command.py +5 -5
- tree_sitter_analyzer/cli/commands/summary_command.py +2 -2
- tree_sitter_analyzer/cli/commands/table_command.py +14 -11
- tree_sitter_analyzer/cli/info_commands.py +14 -13
- tree_sitter_analyzer/cli_main.py +51 -31
- tree_sitter_analyzer/core/analysis_engine.py +54 -90
- tree_sitter_analyzer/core/cache_service.py +31 -31
- tree_sitter_analyzer/core/engine.py +6 -4
- tree_sitter_analyzer/core/parser.py +1 -1
- tree_sitter_analyzer/core/query.py +502 -494
- tree_sitter_analyzer/encoding_utils.py +3 -2
- tree_sitter_analyzer/exceptions.py +23 -23
- tree_sitter_analyzer/file_handler.py +7 -14
- tree_sitter_analyzer/formatters/base_formatter.py +18 -18
- tree_sitter_analyzer/formatters/formatter_factory.py +15 -15
- tree_sitter_analyzer/formatters/java_formatter.py +291 -287
- tree_sitter_analyzer/formatters/python_formatter.py +259 -255
- tree_sitter_analyzer/interfaces/cli.py +1 -1
- tree_sitter_analyzer/interfaces/cli_adapter.py +62 -41
- tree_sitter_analyzer/interfaces/mcp_adapter.py +43 -17
- tree_sitter_analyzer/interfaces/mcp_server.py +9 -9
- tree_sitter_analyzer/language_detector.py +398 -398
- tree_sitter_analyzer/language_loader.py +224 -224
- tree_sitter_analyzer/languages/java_plugin.py +1174 -1129
- tree_sitter_analyzer/{plugins → languages}/javascript_plugin.py +3 -3
- tree_sitter_analyzer/languages/python_plugin.py +26 -8
- tree_sitter_analyzer/mcp/resources/code_file_resource.py +0 -3
- tree_sitter_analyzer/mcp/resources/project_stats_resource.py +555 -560
- tree_sitter_analyzer/mcp/server.py +4 -4
- tree_sitter_analyzer/mcp/tools/analyze_scale_tool.py +63 -30
- tree_sitter_analyzer/mcp/tools/analyze_scale_tool_cli_compatible.py +9 -4
- tree_sitter_analyzer/mcp/tools/table_format_tool.py +2 -2
- tree_sitter_analyzer/mcp/utils/__init__.py +10 -8
- tree_sitter_analyzer/models.py +470 -470
- tree_sitter_analyzer/output_manager.py +12 -20
- tree_sitter_analyzer/plugins/__init__.py +9 -62
- tree_sitter_analyzer/plugins/base.py +53 -1
- tree_sitter_analyzer/plugins/manager.py +29 -12
- tree_sitter_analyzer/queries/java.py +78 -78
- tree_sitter_analyzer/queries/javascript.py +7 -7
- tree_sitter_analyzer/queries/python.py +18 -18
- tree_sitter_analyzer/queries/typescript.py +12 -12
- tree_sitter_analyzer/query_loader.py +17 -14
- tree_sitter_analyzer/table_formatter.py +24 -19
- tree_sitter_analyzer/utils.py +7 -7
- {tree_sitter_analyzer-0.3.0.dist-info → tree_sitter_analyzer-0.6.0.dist-info}/METADATA +11 -11
- tree_sitter_analyzer-0.6.0.dist-info/RECORD +72 -0
- {tree_sitter_analyzer-0.3.0.dist-info → tree_sitter_analyzer-0.6.0.dist-info}/entry_points.txt +2 -1
- tree_sitter_analyzer/java_analyzer.py +0 -218
- tree_sitter_analyzer/plugins/java_plugin.py +0 -608
- tree_sitter_analyzer/plugins/plugin_loader.py +0 -85
- tree_sitter_analyzer/plugins/python_plugin.py +0 -606
- tree_sitter_analyzer/plugins/registry.py +0 -374
- tree_sitter_analyzer-0.3.0.dist-info/RECORD +0 -77
- {tree_sitter_analyzer-0.3.0.dist-info → tree_sitter_analyzer-0.6.0.dist-info}/WHEEL +0 -0
|
@@ -19,9 +19,9 @@ except ImportError:
|
|
|
19
19
|
|
|
20
20
|
from ..core.analysis_engine import AnalysisRequest
|
|
21
21
|
from ..language_loader import loader
|
|
22
|
-
from ..models import AnalysisResult, Class, Function, Import, Variable
|
|
22
|
+
from ..models import AnalysisResult, Class, CodeElement, Function, Import, Variable
|
|
23
|
+
from ..plugins.base import ElementExtractor, LanguagePlugin
|
|
23
24
|
from ..utils import log_error, log_warning
|
|
24
|
-
from . import ElementExtractor, LanguagePlugin
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
class JavaScriptElementExtractor(ElementExtractor):
|
|
@@ -416,7 +416,7 @@ class JavaScriptPlugin(LanguagePlugin):
|
|
|
416
416
|
tree = parser.parse(bytes(source_code, "utf8"))
|
|
417
417
|
|
|
418
418
|
extractor = self.create_extractor()
|
|
419
|
-
elements = []
|
|
419
|
+
elements: list[CodeElement] = []
|
|
420
420
|
elements.extend(extractor.extract_functions(tree, source_code))
|
|
421
421
|
elements.extend(extractor.extract_classes(tree, source_code))
|
|
422
422
|
elements.extend(extractor.extract_variables(tree, source_code))
|
|
@@ -14,7 +14,7 @@ if TYPE_CHECKING:
|
|
|
14
14
|
from ..core.analysis_engine import AnalysisRequest
|
|
15
15
|
from ..models import AnalysisResult
|
|
16
16
|
|
|
17
|
-
from ..models import Class, Function, Import, Variable
|
|
17
|
+
from ..models import Class, CodeElement, Function, Import, Variable
|
|
18
18
|
from ..plugins.base import ElementExtractor, LanguagePlugin
|
|
19
19
|
from ..utils import log_error, log_warning
|
|
20
20
|
|
|
@@ -301,7 +301,7 @@ class PythonElementExtractor(ElementExtractor):
|
|
|
301
301
|
elif name.startswith("_"):
|
|
302
302
|
visibility = "private"
|
|
303
303
|
|
|
304
|
-
#
|
|
304
|
+
# Safely extract raw text, avoiding index out of bounds
|
|
305
305
|
start_byte = min(node.start_byte, len(source_code))
|
|
306
306
|
end_byte = min(node.end_byte, len(source_code))
|
|
307
307
|
raw_text = (
|
|
@@ -402,6 +402,7 @@ class PythonElementExtractor(ElementExtractor):
|
|
|
402
402
|
end_line=node.end_point[0] + 1,
|
|
403
403
|
raw_text=variable_text,
|
|
404
404
|
language="python",
|
|
405
|
+
variable_type=assignment_type,
|
|
405
406
|
)
|
|
406
407
|
|
|
407
408
|
except Exception as e:
|
|
@@ -416,7 +417,7 @@ class PythonElementExtractor(ElementExtractor):
|
|
|
416
417
|
if not self._validate_node(node):
|
|
417
418
|
return None
|
|
418
419
|
|
|
419
|
-
#
|
|
420
|
+
# Safely extract import text, avoiding index out of bounds
|
|
420
421
|
start_byte = min(node.start_byte, len(source_code))
|
|
421
422
|
end_byte = min(node.end_byte, len(source_code))
|
|
422
423
|
import_text = (
|
|
@@ -585,6 +586,7 @@ class PythonPlugin(LanguagePlugin):
|
|
|
585
586
|
"""Initialize the Python plugin"""
|
|
586
587
|
super().__init__()
|
|
587
588
|
self._language_cache: tree_sitter.Language | None = None
|
|
589
|
+
self._extractor: PythonElementExtractor | None = None
|
|
588
590
|
|
|
589
591
|
def get_language_name(self) -> str:
|
|
590
592
|
"""Return the name of the programming language this plugin supports"""
|
|
@@ -598,6 +600,12 @@ class PythonPlugin(LanguagePlugin):
|
|
|
598
600
|
"""Create and return an element extractor for this language"""
|
|
599
601
|
return PythonElementExtractor()
|
|
600
602
|
|
|
603
|
+
def get_extractor(self) -> ElementExtractor:
|
|
604
|
+
"""Get the cached extractor instance, creating it if necessary"""
|
|
605
|
+
if self._extractor is None:
|
|
606
|
+
self._extractor = PythonElementExtractor()
|
|
607
|
+
return self._extractor
|
|
608
|
+
|
|
601
609
|
def get_tree_sitter_language(self) -> Optional["tree_sitter.Language"]:
|
|
602
610
|
"""Get the Tree-sitter language object for Python"""
|
|
603
611
|
if self._language_cache is None:
|
|
@@ -677,13 +685,23 @@ class PythonPlugin(LanguagePlugin):
|
|
|
677
685
|
|
|
678
686
|
# Extract elements
|
|
679
687
|
extractor = self.create_extractor()
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
688
|
+
if parse_result.tree:
|
|
689
|
+
functions = extractor.extract_functions(parse_result.tree, source_code)
|
|
690
|
+
classes = extractor.extract_classes(parse_result.tree, source_code)
|
|
691
|
+
variables = extractor.extract_variables(parse_result.tree, source_code)
|
|
692
|
+
imports = extractor.extract_imports(parse_result.tree, source_code)
|
|
693
|
+
else:
|
|
694
|
+
functions = []
|
|
695
|
+
classes = []
|
|
696
|
+
variables = []
|
|
697
|
+
imports = []
|
|
684
698
|
|
|
685
699
|
# Combine all elements
|
|
686
|
-
all_elements =
|
|
700
|
+
all_elements: list[CodeElement] = []
|
|
701
|
+
all_elements.extend(functions)
|
|
702
|
+
all_elements.extend(classes)
|
|
703
|
+
all_elements.extend(variables)
|
|
704
|
+
all_elements.extend(imports)
|
|
687
705
|
|
|
688
706
|
return AnalysisResult(
|
|
689
707
|
file_path=file_path,
|