tree-sitter-analyzer 0.3.0__py3-none-any.whl → 0.4.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 +4 -3
- 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/partial_read_command.py +2 -2
- tree_sitter_analyzer/cli/commands/summary_command.py +2 -2
- tree_sitter_analyzer/cli/commands/table_command.py +11 -8
- tree_sitter_analyzer/cli_main.py +2 -1
- tree_sitter_analyzer/core/analysis_engine.py +33 -69
- tree_sitter_analyzer/core/engine.py +6 -4
- tree_sitter_analyzer/core/parser.py +1 -1
- tree_sitter_analyzer/core/query.py +16 -8
- tree_sitter_analyzer/encoding_utils.py +0 -2
- tree_sitter_analyzer/exceptions.py +23 -23
- tree_sitter_analyzer/file_handler.py +4 -11
- tree_sitter_analyzer/formatters/java_formatter.py +8 -4
- tree_sitter_analyzer/formatters/python_formatter.py +8 -4
- tree_sitter_analyzer/interfaces/cli.py +1 -1
- tree_sitter_analyzer/interfaces/cli_adapter.py +30 -9
- tree_sitter_analyzer/interfaces/mcp_adapter.py +43 -17
- tree_sitter_analyzer/interfaces/mcp_server.py +9 -9
- tree_sitter_analyzer/java_analyzer.py +20 -51
- tree_sitter_analyzer/language_loader.py +2 -2
- tree_sitter_analyzer/languages/java_plugin.py +86 -41
- tree_sitter_analyzer/{plugins → languages}/javascript_plugin.py +3 -3
- tree_sitter_analyzer/languages/python_plugin.py +16 -6
- tree_sitter_analyzer/mcp/resources/code_file_resource.py +0 -3
- tree_sitter_analyzer/mcp/resources/project_stats_resource.py +0 -5
- 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 +1 -1
- tree_sitter_analyzer/output_manager.py +4 -10
- tree_sitter_analyzer/plugins/__init__.py +9 -62
- tree_sitter_analyzer/plugins/base.py +20 -1
- tree_sitter_analyzer/plugins/manager.py +29 -12
- tree_sitter_analyzer/query_loader.py +4 -1
- tree_sitter_analyzer/table_formatter.py +4 -1
- tree_sitter_analyzer/utils.py +6 -6
- {tree_sitter_analyzer-0.3.0.dist-info → tree_sitter_analyzer-0.4.0.dist-info}/METADATA +3 -3
- tree_sitter_analyzer-0.4.0.dist-info/RECORD +73 -0
- {tree_sitter_analyzer-0.3.0.dist-info → tree_sitter_analyzer-0.4.0.dist-info}/entry_points.txt +2 -1
- 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.4.0.dist-info}/WHEEL +0 -0
|
@@ -1,374 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
Language Registry
|
|
4
|
-
|
|
5
|
-
Manages mapping between languages, file extensions, and plugins.
|
|
6
|
-
Provides language detection and plugin resolution services.
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
import logging
|
|
10
|
-
from pathlib import Path
|
|
11
|
-
|
|
12
|
-
from ..utils import log_debug, log_error, log_warning
|
|
13
|
-
from .base import LanguagePlugin
|
|
14
|
-
|
|
15
|
-
logger = logging.getLogger(__name__)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class LanguageRegistry:
|
|
19
|
-
"""
|
|
20
|
-
Registry for managing language-to-plugin mappings.
|
|
21
|
-
|
|
22
|
-
This class handles:
|
|
23
|
-
- Mapping languages to plugins
|
|
24
|
-
- Mapping file extensions to languages
|
|
25
|
-
- Language detection from file paths
|
|
26
|
-
- Plugin resolution for languages
|
|
27
|
-
"""
|
|
28
|
-
|
|
29
|
-
def __init__(self):
|
|
30
|
-
"""Initialize the language registry."""
|
|
31
|
-
self._plugins: dict[str, LanguagePlugin] = {}
|
|
32
|
-
self._extension_map: dict[str, str] = {} # extension -> language
|
|
33
|
-
self._language_aliases: dict[str, str] = {} # alias -> canonical_language
|
|
34
|
-
|
|
35
|
-
# Initialize common language aliases
|
|
36
|
-
self._init_language_aliases()
|
|
37
|
-
|
|
38
|
-
def _init_language_aliases(self):
|
|
39
|
-
"""Initialize common language aliases."""
|
|
40
|
-
self._language_aliases.update(
|
|
41
|
-
{
|
|
42
|
-
"js": "javascript",
|
|
43
|
-
"ts": "typescript",
|
|
44
|
-
"py": "python",
|
|
45
|
-
"rb": "ruby",
|
|
46
|
-
"cpp": "c++",
|
|
47
|
-
"cxx": "c++",
|
|
48
|
-
"cc": "c++",
|
|
49
|
-
"c++": "cpp", # Normalize c++ to cpp
|
|
50
|
-
}
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
def register_plugin(self, plugin: LanguagePlugin) -> bool:
|
|
54
|
-
"""
|
|
55
|
-
Register a language plugin.
|
|
56
|
-
|
|
57
|
-
Args:
|
|
58
|
-
plugin: Plugin instance to register
|
|
59
|
-
|
|
60
|
-
Returns:
|
|
61
|
-
True if registration was successful
|
|
62
|
-
"""
|
|
63
|
-
try:
|
|
64
|
-
language = plugin.get_language_name().lower()
|
|
65
|
-
extensions = plugin.get_file_extensions()
|
|
66
|
-
|
|
67
|
-
# Check for conflicts
|
|
68
|
-
if language in self._plugins:
|
|
69
|
-
existing_plugin = self._plugins[language]
|
|
70
|
-
log_warning(
|
|
71
|
-
f"Language '{language}' already registered by {existing_plugin.__class__.__name__}, "
|
|
72
|
-
f"replacing with {plugin.__class__.__name__}"
|
|
73
|
-
)
|
|
74
|
-
|
|
75
|
-
# Register the plugin
|
|
76
|
-
self._plugins[language] = plugin
|
|
77
|
-
|
|
78
|
-
# Register file extensions
|
|
79
|
-
for ext in extensions:
|
|
80
|
-
ext = ext.lower()
|
|
81
|
-
if not ext.startswith("."):
|
|
82
|
-
ext = "." + ext
|
|
83
|
-
|
|
84
|
-
if ext in self._extension_map:
|
|
85
|
-
existing_lang = self._extension_map[ext]
|
|
86
|
-
log_debug(
|
|
87
|
-
f"Extension '{ext}' already mapped to '{existing_lang}', overriding with '{language}'"
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
self._extension_map[ext] = language
|
|
91
|
-
|
|
92
|
-
log_debug(
|
|
93
|
-
f"Registered plugin for language '{language}' with extensions: {extensions}"
|
|
94
|
-
)
|
|
95
|
-
return True
|
|
96
|
-
|
|
97
|
-
except Exception as e:
|
|
98
|
-
log_error(f"Failed to register plugin: {e}")
|
|
99
|
-
return False
|
|
100
|
-
|
|
101
|
-
def get_plugin(self, language: str) -> LanguagePlugin | None:
|
|
102
|
-
"""
|
|
103
|
-
Get plugin for a specific language.
|
|
104
|
-
|
|
105
|
-
Args:
|
|
106
|
-
language: Programming language name
|
|
107
|
-
|
|
108
|
-
Returns:
|
|
109
|
-
Plugin instance or None if not found
|
|
110
|
-
"""
|
|
111
|
-
# Normalize language name
|
|
112
|
-
language = self._normalize_language(language)
|
|
113
|
-
return self._plugins.get(language)
|
|
114
|
-
|
|
115
|
-
def detect_language_from_file(self, file_path: Path) -> str | None:
|
|
116
|
-
"""
|
|
117
|
-
Detect programming language from file path.
|
|
118
|
-
|
|
119
|
-
Args:
|
|
120
|
-
file_path: Path to the file
|
|
121
|
-
|
|
122
|
-
Returns:
|
|
123
|
-
Detected language name or None
|
|
124
|
-
"""
|
|
125
|
-
if file_path is None:
|
|
126
|
-
return None
|
|
127
|
-
|
|
128
|
-
if isinstance(file_path, str):
|
|
129
|
-
file_path = Path(file_path)
|
|
130
|
-
|
|
131
|
-
# Get file extension
|
|
132
|
-
extension = file_path.suffix.lower()
|
|
133
|
-
|
|
134
|
-
# Look up in extension map
|
|
135
|
-
language = self._extension_map.get(extension)
|
|
136
|
-
if language:
|
|
137
|
-
return language
|
|
138
|
-
|
|
139
|
-
# Try compound extensions (e.g., .test.js, .spec.ts)
|
|
140
|
-
if len(file_path.suffixes) > 1:
|
|
141
|
-
# Try the last extension
|
|
142
|
-
last_ext = file_path.suffixes[-1].lower()
|
|
143
|
-
language = self._extension_map.get(last_ext)
|
|
144
|
-
if language:
|
|
145
|
-
return language
|
|
146
|
-
|
|
147
|
-
# Special cases based on filename patterns
|
|
148
|
-
filename = file_path.name.lower()
|
|
149
|
-
|
|
150
|
-
# Common configuration files
|
|
151
|
-
config_patterns = {
|
|
152
|
-
"makefile": "make",
|
|
153
|
-
"dockerfile": "dockerfile",
|
|
154
|
-
"vagrantfile": "ruby",
|
|
155
|
-
"rakefile": "ruby",
|
|
156
|
-
"gemfile": "ruby",
|
|
157
|
-
"podfile": "ruby",
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
for pattern, lang in config_patterns.items():
|
|
161
|
-
if filename == pattern or filename.startswith(pattern):
|
|
162
|
-
if lang in self._plugins:
|
|
163
|
-
return lang
|
|
164
|
-
|
|
165
|
-
log_debug(f"Could not detect language for file: {file_path}")
|
|
166
|
-
return None
|
|
167
|
-
|
|
168
|
-
def get_supported_languages(self) -> list[str]:
|
|
169
|
-
"""
|
|
170
|
-
Get list of all supported languages.
|
|
171
|
-
|
|
172
|
-
Returns:
|
|
173
|
-
List of supported language names
|
|
174
|
-
"""
|
|
175
|
-
return list(self._plugins.keys())
|
|
176
|
-
|
|
177
|
-
def get_supported_extensions(self) -> list[str]:
|
|
178
|
-
"""
|
|
179
|
-
Get list of all supported file extensions.
|
|
180
|
-
|
|
181
|
-
Returns:
|
|
182
|
-
List of supported file extensions
|
|
183
|
-
"""
|
|
184
|
-
return list(self._extension_map.keys())
|
|
185
|
-
|
|
186
|
-
def get_extensions_for_language(self, language: str) -> list[str]:
|
|
187
|
-
"""
|
|
188
|
-
Get file extensions for a specific language.
|
|
189
|
-
|
|
190
|
-
Args:
|
|
191
|
-
language: Programming language name
|
|
192
|
-
|
|
193
|
-
Returns:
|
|
194
|
-
List of file extensions for the language
|
|
195
|
-
"""
|
|
196
|
-
language = self._normalize_language(language)
|
|
197
|
-
plugin = self._plugins.get(language)
|
|
198
|
-
|
|
199
|
-
if plugin:
|
|
200
|
-
return plugin.get_file_extensions()
|
|
201
|
-
|
|
202
|
-
return []
|
|
203
|
-
|
|
204
|
-
def get_language_for_extension(self, extension: str) -> str | None:
|
|
205
|
-
"""
|
|
206
|
-
Get language for a specific file extension.
|
|
207
|
-
|
|
208
|
-
Args:
|
|
209
|
-
extension: File extension (with or without leading dot)
|
|
210
|
-
|
|
211
|
-
Returns:
|
|
212
|
-
Language name or None if not found
|
|
213
|
-
"""
|
|
214
|
-
if not extension.startswith("."):
|
|
215
|
-
extension = "." + extension
|
|
216
|
-
|
|
217
|
-
return self._extension_map.get(extension.lower())
|
|
218
|
-
|
|
219
|
-
def is_language_supported(self, language: str) -> bool:
|
|
220
|
-
"""
|
|
221
|
-
Check if a language is supported.
|
|
222
|
-
|
|
223
|
-
Args:
|
|
224
|
-
language: Programming language name
|
|
225
|
-
|
|
226
|
-
Returns:
|
|
227
|
-
True if the language is supported
|
|
228
|
-
"""
|
|
229
|
-
language = self._normalize_language(language)
|
|
230
|
-
return language in self._plugins
|
|
231
|
-
|
|
232
|
-
def is_extension_supported(self, extension: str) -> bool:
|
|
233
|
-
"""
|
|
234
|
-
Check if a file extension is supported.
|
|
235
|
-
|
|
236
|
-
Args:
|
|
237
|
-
extension: File extension (with or without leading dot)
|
|
238
|
-
|
|
239
|
-
Returns:
|
|
240
|
-
True if the extension is supported
|
|
241
|
-
"""
|
|
242
|
-
if not extension.startswith("."):
|
|
243
|
-
extension = "." + extension
|
|
244
|
-
|
|
245
|
-
return extension.lower() in self._extension_map
|
|
246
|
-
|
|
247
|
-
def _normalize_language(self, language: str) -> str:
|
|
248
|
-
"""
|
|
249
|
-
Normalize language name using aliases.
|
|
250
|
-
|
|
251
|
-
Args:
|
|
252
|
-
language: Language name to normalize
|
|
253
|
-
|
|
254
|
-
Returns:
|
|
255
|
-
Normalized language name
|
|
256
|
-
"""
|
|
257
|
-
if language is None:
|
|
258
|
-
return ""
|
|
259
|
-
language = language.lower().strip()
|
|
260
|
-
return self._language_aliases.get(language, language)
|
|
261
|
-
|
|
262
|
-
def add_language_alias(self, alias: str, canonical_language: str) -> bool:
|
|
263
|
-
"""
|
|
264
|
-
Add a language alias.
|
|
265
|
-
|
|
266
|
-
Args:
|
|
267
|
-
alias: Alias name
|
|
268
|
-
canonical_language: Canonical language name
|
|
269
|
-
|
|
270
|
-
Returns:
|
|
271
|
-
True if alias was added successfully
|
|
272
|
-
"""
|
|
273
|
-
try:
|
|
274
|
-
alias = alias.lower().strip()
|
|
275
|
-
canonical_language = canonical_language.lower().strip()
|
|
276
|
-
|
|
277
|
-
if canonical_language not in self._plugins:
|
|
278
|
-
log_warning(
|
|
279
|
-
f"Cannot add alias '{alias}' for unsupported language '{canonical_language}'"
|
|
280
|
-
)
|
|
281
|
-
return False
|
|
282
|
-
|
|
283
|
-
self._language_aliases[alias] = canonical_language
|
|
284
|
-
log_debug(f"Added language alias: '{alias}' -> '{canonical_language}'")
|
|
285
|
-
return True
|
|
286
|
-
|
|
287
|
-
except Exception as e:
|
|
288
|
-
log_error(f"Failed to add language alias: {e}")
|
|
289
|
-
return False
|
|
290
|
-
|
|
291
|
-
def get_registry_info(self) -> dict[str, any]:
|
|
292
|
-
"""
|
|
293
|
-
Get comprehensive information about the registry.
|
|
294
|
-
|
|
295
|
-
"plugin_count": len(self._plugins),
|
|
296
|
-
Returns:
|
|
297
|
-
Dictionary containing registry information
|
|
298
|
-
"""
|
|
299
|
-
return {
|
|
300
|
-
"plugin_count": len(self._plugins),
|
|
301
|
-
"supported_languages": len(self._plugins),
|
|
302
|
-
"supported_extensions": len(self._extension_map),
|
|
303
|
-
"language_aliases": len(self._language_aliases),
|
|
304
|
-
"languages": list(self._plugins.keys()),
|
|
305
|
-
"extensions": list(self._extension_map.keys()),
|
|
306
|
-
"aliases": dict(self._language_aliases),
|
|
307
|
-
"extension_mapping": dict(self._extension_map),
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
def find_plugins_for_file(self, file_path: Path) -> list[LanguagePlugin]:
|
|
311
|
-
"""
|
|
312
|
-
Find all possible plugins for a file (useful for ambiguous cases).
|
|
313
|
-
|
|
314
|
-
Args:
|
|
315
|
-
file_path: Path to the file
|
|
316
|
-
|
|
317
|
-
Returns:
|
|
318
|
-
List of possible plugins
|
|
319
|
-
"""
|
|
320
|
-
plugins = []
|
|
321
|
-
|
|
322
|
-
# Primary detection
|
|
323
|
-
language = self.detect_language_from_file(file_path)
|
|
324
|
-
if language:
|
|
325
|
-
plugin = self.get_plugin(language)
|
|
326
|
-
if plugin:
|
|
327
|
-
plugins.append(plugin)
|
|
328
|
-
|
|
329
|
-
# Check if any plugins explicitly support this file
|
|
330
|
-
for plugin in self._plugins.values():
|
|
331
|
-
if hasattr(plugin, "is_applicable") and plugin.is_applicable(
|
|
332
|
-
str(file_path)
|
|
333
|
-
):
|
|
334
|
-
if plugin not in plugins:
|
|
335
|
-
plugins.append(plugin)
|
|
336
|
-
|
|
337
|
-
return plugins
|
|
338
|
-
|
|
339
|
-
def clear(self):
|
|
340
|
-
"""Clear all registered plugins and mappings."""
|
|
341
|
-
self._plugins.clear()
|
|
342
|
-
self._extension_map.clear()
|
|
343
|
-
# Keep language aliases as they're static
|
|
344
|
-
log_debug("Cleared language registry")
|
|
345
|
-
|
|
346
|
-
def unregister_plugin(self, language: str) -> bool:
|
|
347
|
-
"""
|
|
348
|
-
Unregister a plugin for a specific language.
|
|
349
|
-
|
|
350
|
-
Args:
|
|
351
|
-
language: Programming language name
|
|
352
|
-
|
|
353
|
-
Returns:
|
|
354
|
-
True if unregistration was successful
|
|
355
|
-
"""
|
|
356
|
-
language = self._normalize_language(language)
|
|
357
|
-
|
|
358
|
-
if language not in self._plugins:
|
|
359
|
-
return False
|
|
360
|
-
|
|
361
|
-
# Remove the plugin
|
|
362
|
-
self._plugins.pop(language)
|
|
363
|
-
|
|
364
|
-
# Remove associated extensions
|
|
365
|
-
extensions_to_remove = []
|
|
366
|
-
for ext, lang in self._extension_map.items():
|
|
367
|
-
if lang == language:
|
|
368
|
-
extensions_to_remove.append(ext)
|
|
369
|
-
|
|
370
|
-
for ext in extensions_to_remove:
|
|
371
|
-
del self._extension_map[ext]
|
|
372
|
-
|
|
373
|
-
log_debug(f"Unregistered plugin for language '{language}'")
|
|
374
|
-
return True
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
tree_sitter_analyzer/__init__.py,sha256=f_9AqMgRs7bCqlbAr_qI5s2GBCxSUNOjJzTxaCKdz2o,3113
|
|
2
|
-
tree_sitter_analyzer/__main__.py,sha256=zlzSTDNKSOs7koUVJc_yCNilrOpF80yS01Tvny6UBi8,281
|
|
3
|
-
tree_sitter_analyzer/api.py,sha256=2YcvoCocKrhQJ5syqVUzy5lnDtVdx5UMzj0WN_9tRsA,16850
|
|
4
|
-
tree_sitter_analyzer/cli_main.py,sha256=jXHJx7LnY7WfiAL_KBzIhrrREDtvDj5NvU3902JMQgg,9320
|
|
5
|
-
tree_sitter_analyzer/encoding_utils.py,sha256=fly2xf0Aet9lRu83pvCWrA9cphLFABlVC_HgEUHUvQ0,14430
|
|
6
|
-
tree_sitter_analyzer/exceptions.py,sha256=yAMNcwva4c_cwjH3IeRB67CMq8r9RPHYQawkl3SbykI,9568
|
|
7
|
-
tree_sitter_analyzer/file_handler.py,sha256=ne4W0AfZVTB0EOp_cA9XBYuDH5dUyf1esYYr2U3KzPo,7184
|
|
8
|
-
tree_sitter_analyzer/java_analyzer.py,sha256=jyyWyzPXVYoDHJ98Plgi826WqJUn_eGonS3Uu-Z3z98,8401
|
|
9
|
-
tree_sitter_analyzer/language_detector.py,sha256=EOwuraMtv9hW8xUU2hoD2-zlyhOStAadAXJ4EStiH6I,12142
|
|
10
|
-
tree_sitter_analyzer/language_loader.py,sha256=YQ_3AkWCPPEv8OBg0Bpyc0ABftqRBQfTbnCzcqhk-ZY,7902
|
|
11
|
-
tree_sitter_analyzer/models.py,sha256=zyaSGD7s9O4gWjz49LjTBnqRjXEDSVc7bEql_7l-wxs,16070
|
|
12
|
-
tree_sitter_analyzer/output_manager.py,sha256=29egMs1w0bejTm8M-YR0DZI4Kth0Pr0xrx63c5rkI-Q,8420
|
|
13
|
-
tree_sitter_analyzer/query_loader.py,sha256=HZzTJ7HfuTsmOaPOcv8-opVjco2u4gqKez8o6fZEIGI,9707
|
|
14
|
-
tree_sitter_analyzer/table_formatter.py,sha256=LS3b8XxSVqpsg8g9eyHvYn6kyyxaGf8Mc3MpZ6LvVeQ,17728
|
|
15
|
-
tree_sitter_analyzer/utils.py,sha256=1oryYZxks6JYjVO3opdCf4mAxe6l1bDR2qvf1QH9GkI,7981
|
|
16
|
-
tree_sitter_analyzer/cli/__init__.py,sha256=ChltfvS65GblR7k_mSgcPPnOdFsK-85-xr3Y1Hc1eko,823
|
|
17
|
-
tree_sitter_analyzer/cli/__main__.py,sha256=Xq8o8-0dPnMDU9WZqmqhzr98rx8rvoffTUHAkAwl-L8,218
|
|
18
|
-
tree_sitter_analyzer/cli/info_commands.py,sha256=fTW_rcEZuNB1iWSFPAp8CyhD_YUgvhAGtkvx64kYfvQ,4376
|
|
19
|
-
tree_sitter_analyzer/cli/commands/__init__.py,sha256=jpcpM1ptLuxLMBDUv1y_a87k8RAw1otFzeYpWtXvz3Y,671
|
|
20
|
-
tree_sitter_analyzer/cli/commands/advanced_command.py,sha256=MagDYt8c-clbpkBPRXUyxwOGdph5emAIJO6RUWPQsv8,3408
|
|
21
|
-
tree_sitter_analyzer/cli/commands/base_command.py,sha256=lVQOUeF0_9JKdhS9O41RacsLn0eG_ZaCzu9JF1HYnk4,5753
|
|
22
|
-
tree_sitter_analyzer/cli/commands/default_command.py,sha256=41zPRy2ClcJVFGATx2KCDiMSRKa7vQvJi6R6LccjRrc,558
|
|
23
|
-
tree_sitter_analyzer/cli/commands/partial_read_command.py,sha256=r2Im3kw-D6ACTcXi2JTd1JOqsBopuViD6uqjcY-moNo,4666
|
|
24
|
-
tree_sitter_analyzer/cli/commands/query_command.py,sha256=v-DCDF4lGPhQO4X4QplGXFZEjXP9wbytH4shM1mhMj8,3187
|
|
25
|
-
tree_sitter_analyzer/cli/commands/structure_command.py,sha256=0iJwjOgtW838hXleXogWhbu6eQFfrLR1QgKe5PFBqvU,5220
|
|
26
|
-
tree_sitter_analyzer/cli/commands/summary_command.py,sha256=h__km0dftQyn0Td6d2sdDuFCll5-eJ_A1NLZTfMXrqE,3581
|
|
27
|
-
tree_sitter_analyzer/cli/commands/table_command.py,sha256=UBGU1zlolq9mRbKuAoIwOFlvGVP3mR2U4mzZSelCb9M,9347
|
|
28
|
-
tree_sitter_analyzer/core/__init__.py,sha256=VlYOy1epW16vjaVd__knESewnU0sfXF9a4hjrFxiSEE,440
|
|
29
|
-
tree_sitter_analyzer/core/analysis_engine.py,sha256=qzmVC4Z0Ez0ExLVXMSVZ0DPPg3we3UZJz2LJbCyCkZc,20119
|
|
30
|
-
tree_sitter_analyzer/core/cache_service.py,sha256=WeNawH6JyJKKBA-0rlJIRPmdErxkLQTQsbghHVkqmPo,9924
|
|
31
|
-
tree_sitter_analyzer/core/engine.py,sha256=uTTSNs1bZLqsQ5l5919WF_K4U3VsSWiY8gHBzgdWGkk,18244
|
|
32
|
-
tree_sitter_analyzer/core/parser.py,sha256=zGA_SEZFZmT9XYZylWYRL6vsO5pk5pTNpTWi3B_wQb8,9264
|
|
33
|
-
tree_sitter_analyzer/core/query.py,sha256=jwSNtvTk0HHYaG1r_4WQ-jGX6P_5cZOF6EGqCZsoG3M,16008
|
|
34
|
-
tree_sitter_analyzer/formatters/__init__.py,sha256=yVb4HF_4EEPRwTf3y3-vM2NllrhykG3zlvQhN-6dB4c,31
|
|
35
|
-
tree_sitter_analyzer/formatters/base_formatter.py,sha256=L5OD0KbK9udMJ03Iy1gUtbit0iUdL2zduf5-zVUaV4A,5930
|
|
36
|
-
tree_sitter_analyzer/formatters/formatter_factory.py,sha256=riwl62urKwMka8CqPhkFy7CgZP2YM3lckLQ4-boSA6s,2319
|
|
37
|
-
tree_sitter_analyzer/formatters/java_formatter.py,sha256=3gNcRpoXh2_qvtRt9Fodbct9azvyYXfjBs-aKWuHT34,11199
|
|
38
|
-
tree_sitter_analyzer/formatters/python_formatter.py,sha256=RoUY3t0m6MIQ_hGupSaCPtStwrhm7wwon57yA5wVKwM,9888
|
|
39
|
-
tree_sitter_analyzer/interfaces/__init__.py,sha256=OcT7eNIU0ZXvAeAXbhDqRG3puxn93HeSLqplwj6npTM,271
|
|
40
|
-
tree_sitter_analyzer/interfaces/cli.py,sha256=F1J-KeHrZdRAjK2Ozztgu9MWk1WYjxd3kPp4RsQW2Yo,16824
|
|
41
|
-
tree_sitter_analyzer/interfaces/cli_adapter.py,sha256=3Z02rXJIH6gtxIP-3ENps1FYkmZSTLS6okdTXhaie4Y,10757
|
|
42
|
-
tree_sitter_analyzer/interfaces/mcp_adapter.py,sha256=FUUxkrOIkCwFZDvh9XBatkO08axs49RiUSsEfteW7fE,6229
|
|
43
|
-
tree_sitter_analyzer/interfaces/mcp_server.py,sha256=FQ59ANBa-4Dpv9RO_u3GDCWvJcvksQcdL3UZGFBOIFs,16067
|
|
44
|
-
tree_sitter_analyzer/languages/__init__.py,sha256=VTXxJgVjHJAciLhX0zzXOS4EygZMtebeYUbi_0z6fGw,340
|
|
45
|
-
tree_sitter_analyzer/languages/java_plugin.py,sha256=5L7j9LCFYLWaD7HA6Y6JpDyeKXb9RkJoqe7LsmmlwLI,44659
|
|
46
|
-
tree_sitter_analyzer/languages/python_plugin.py,sha256=aKEg93KeYE6-9J0tulCKCb04Y1zgluFjTCv7TBViFfI,28427
|
|
47
|
-
tree_sitter_analyzer/mcp/__init__.py,sha256=76ZKgWbsXZWB8mNER2D0fNHdULPZhqqBJHi8R0uHDPE,721
|
|
48
|
-
tree_sitter_analyzer/mcp/server.py,sha256=kC0eh3vLisdEPDea0ZluWUxgutBC6ZD9F0JbxMKDVoA,12362
|
|
49
|
-
tree_sitter_analyzer/mcp/resources/__init__.py,sha256=SWnK8liTQkuQXlVgyRP9mf5HzpqmqohShrC98xlNnDc,1389
|
|
50
|
-
tree_sitter_analyzer/mcp/resources/code_file_resource.py,sha256=cFzu-NpUrdXicFzlxoNC-dE9wn0zll3lRCHwTJlMVdc,6316
|
|
51
|
-
tree_sitter_analyzer/mcp/resources/project_stats_resource.py,sha256=0NYEOK7Zxm3yanx0rS2F7luvIAJvR9fw3mtK0f4La2Q,19402
|
|
52
|
-
tree_sitter_analyzer/mcp/tools/__init__.py,sha256=u7JrSLwE95y50mfjSus6HRdtdhkNbVrW8jP4AooawEU,762
|
|
53
|
-
tree_sitter_analyzer/mcp/tools/analyze_scale_tool.py,sha256=ARxOvBUrTmYAfMEU7eGFZD2Mi9D3o-ED_A81G3KedKQ,24485
|
|
54
|
-
tree_sitter_analyzer/mcp/tools/analyze_scale_tool_cli_compatible.py,sha256=AHjgWy5wCfCi2yF_Imlc3Mzjn8aj8WLhpW-XuB1oRJI,8683
|
|
55
|
-
tree_sitter_analyzer/mcp/tools/base_tool.py,sha256=FVSMgKIliQ5EBVQEfjYwWeqzWt9OqOFDr3dyACIDxig,1210
|
|
56
|
-
tree_sitter_analyzer/mcp/tools/read_partial_tool.py,sha256=0Rb-jI2CfzN1PVeJZnkERaowm9Y8iFSZl8W-VIQQ8cI,10735
|
|
57
|
-
tree_sitter_analyzer/mcp/tools/table_format_tool.py,sha256=s7b-u4OYBCq_QxVG3LC7Td0YyxAIcy4CrOE0LFNYGKQ,14246
|
|
58
|
-
tree_sitter_analyzer/mcp/tools/universal_analyze_tool.py,sha256=Wl4wZWHYbvcYKnFmdkEn7FTNSel_jlnpQCjfSuzYkEg,20785
|
|
59
|
-
tree_sitter_analyzer/mcp/utils/__init__.py,sha256=DFahy90M5lpNSMmCgQJHCHl_0gX9sn6lhCRsxlyaLgo,2858
|
|
60
|
-
tree_sitter_analyzer/mcp/utils/error_handler.py,sha256=QgKqjUhe0QTCRrtoiuTxDMUt-eDRNclf1ToJtaCNoq8,17423
|
|
61
|
-
tree_sitter_analyzer/plugins/__init__.py,sha256=J-QzhobLv9pAoGSW5IUNjlWow4fsDxYKkVoEvxz6eqE,12362
|
|
62
|
-
tree_sitter_analyzer/plugins/base.py,sha256=Nw8kIaUBJVdMXW2ITKyQZ32mASpCjmqzrVRm0MHsfks,15557
|
|
63
|
-
tree_sitter_analyzer/plugins/java_plugin.py,sha256=6RQGlv6_-BF2iwHcoBFazr3MbAjhjhXM-Pmy-jlyUmI,23430
|
|
64
|
-
tree_sitter_analyzer/plugins/javascript_plugin.py,sha256=rARje63z9vrn5EfOMHugrnQYKeHsv9KDWA-EGFDC1eE,15799
|
|
65
|
-
tree_sitter_analyzer/plugins/manager.py,sha256=cMs2fVlGBjTeYAVhpMe-O6G5RkNxVOWtzMMuu2IbcL4,11593
|
|
66
|
-
tree_sitter_analyzer/plugins/plugin_loader.py,sha256=ujWH1OORLp7xhrZsnTzIdS2qUepG1EbTp8HICc26dCU,2490
|
|
67
|
-
tree_sitter_analyzer/plugins/python_plugin.py,sha256=FeRVSdLnOQvCjIqm7xZ9zmKNnLhhPgJVVVnDvqPfuLo,23759
|
|
68
|
-
tree_sitter_analyzer/plugins/registry.py,sha256=WU2OcyX_iT837aLg0i_nX4jOOBk4Ufbh9FZTLt1j2p0,11174
|
|
69
|
-
tree_sitter_analyzer/queries/__init__.py,sha256=dwDDc7PCw_UWruxSeJ8uEBjY0O5uLDBI5YqyvBhbnN0,696
|
|
70
|
-
tree_sitter_analyzer/queries/java.py,sha256=eGbeu6UfTWsQ2oC5dvYMsQTH6GlT7mvhf9Mq2y52f2A,12536
|
|
71
|
-
tree_sitter_analyzer/queries/javascript.py,sha256=MFZgGGUTcujsG4fIMjQjaZoKezmpHsDGHBG2ZLBH1nQ,4010
|
|
72
|
-
tree_sitter_analyzer/queries/python.py,sha256=7-uOr8ZR7WC7iwbx8yeFfswYoNg6FwtdGXrnt6rGtm8,7708
|
|
73
|
-
tree_sitter_analyzer/queries/typescript.py,sha256=LJCfyntKFz7fHx1YG21DtdMC1nqRrrj3LkjydD2yDnk,6884
|
|
74
|
-
tree_sitter_analyzer-0.3.0.dist-info/METADATA,sha256=iwy2M2TTCACE8LcbTqvVJSK5zrNU0W-TTtlU5mov0PU,12976
|
|
75
|
-
tree_sitter_analyzer-0.3.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
76
|
-
tree_sitter_analyzer-0.3.0.dist-info/entry_points.txt,sha256=-XEh1racqnCT30mhKWMv5-bgX0iqd_J6b08lZS9J4eg,336
|
|
77
|
-
tree_sitter_analyzer-0.3.0.dist-info/RECORD,,
|
|
File without changes
|