tree-sitter-analyzer 0.2.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.

Files changed (78) hide show
  1. tree_sitter_analyzer/__init__.py +134 -121
  2. tree_sitter_analyzer/__main__.py +11 -12
  3. tree_sitter_analyzer/api.py +533 -539
  4. tree_sitter_analyzer/cli/__init__.py +39 -39
  5. tree_sitter_analyzer/cli/__main__.py +12 -13
  6. tree_sitter_analyzer/cli/commands/__init__.py +26 -27
  7. tree_sitter_analyzer/cli/commands/advanced_command.py +88 -88
  8. tree_sitter_analyzer/cli/commands/base_command.py +160 -155
  9. tree_sitter_analyzer/cli/commands/default_command.py +18 -19
  10. tree_sitter_analyzer/cli/commands/partial_read_command.py +141 -133
  11. tree_sitter_analyzer/cli/commands/query_command.py +81 -82
  12. tree_sitter_analyzer/cli/commands/structure_command.py +138 -121
  13. tree_sitter_analyzer/cli/commands/summary_command.py +101 -93
  14. tree_sitter_analyzer/cli/commands/table_command.py +235 -233
  15. tree_sitter_analyzer/cli/info_commands.py +120 -121
  16. tree_sitter_analyzer/cli_main.py +278 -276
  17. tree_sitter_analyzer/core/__init__.py +15 -20
  18. tree_sitter_analyzer/core/analysis_engine.py +555 -574
  19. tree_sitter_analyzer/core/cache_service.py +320 -330
  20. tree_sitter_analyzer/core/engine.py +559 -560
  21. tree_sitter_analyzer/core/parser.py +293 -288
  22. tree_sitter_analyzer/core/query.py +502 -502
  23. tree_sitter_analyzer/encoding_utils.py +456 -460
  24. tree_sitter_analyzer/exceptions.py +337 -340
  25. tree_sitter_analyzer/file_handler.py +210 -222
  26. tree_sitter_analyzer/formatters/__init__.py +1 -1
  27. tree_sitter_analyzer/formatters/base_formatter.py +167 -168
  28. tree_sitter_analyzer/formatters/formatter_factory.py +78 -74
  29. tree_sitter_analyzer/formatters/java_formatter.py +291 -270
  30. tree_sitter_analyzer/formatters/python_formatter.py +259 -235
  31. tree_sitter_analyzer/interfaces/__init__.py +9 -10
  32. tree_sitter_analyzer/interfaces/cli.py +528 -557
  33. tree_sitter_analyzer/interfaces/cli_adapter.py +343 -319
  34. tree_sitter_analyzer/interfaces/mcp_adapter.py +206 -170
  35. tree_sitter_analyzer/interfaces/mcp_server.py +405 -416
  36. tree_sitter_analyzer/java_analyzer.py +187 -219
  37. tree_sitter_analyzer/language_detector.py +398 -400
  38. tree_sitter_analyzer/language_loader.py +224 -228
  39. tree_sitter_analyzer/languages/__init__.py +10 -11
  40. tree_sitter_analyzer/languages/java_plugin.py +1174 -1113
  41. tree_sitter_analyzer/{plugins → languages}/javascript_plugin.py +446 -439
  42. tree_sitter_analyzer/languages/python_plugin.py +747 -712
  43. tree_sitter_analyzer/mcp/__init__.py +31 -32
  44. tree_sitter_analyzer/mcp/resources/__init__.py +44 -47
  45. tree_sitter_analyzer/mcp/resources/code_file_resource.py +209 -213
  46. tree_sitter_analyzer/mcp/resources/project_stats_resource.py +555 -550
  47. tree_sitter_analyzer/mcp/server.py +333 -345
  48. tree_sitter_analyzer/mcp/tools/__init__.py +30 -31
  49. tree_sitter_analyzer/mcp/tools/analyze_scale_tool.py +654 -557
  50. tree_sitter_analyzer/mcp/tools/analyze_scale_tool_cli_compatible.py +247 -245
  51. tree_sitter_analyzer/mcp/tools/base_tool.py +54 -55
  52. tree_sitter_analyzer/mcp/tools/read_partial_tool.py +300 -302
  53. tree_sitter_analyzer/mcp/tools/table_format_tool.py +362 -359
  54. tree_sitter_analyzer/mcp/tools/universal_analyze_tool.py +543 -476
  55. tree_sitter_analyzer/mcp/utils/__init__.py +107 -106
  56. tree_sitter_analyzer/mcp/utils/error_handler.py +549 -549
  57. tree_sitter_analyzer/models.py +470 -481
  58. tree_sitter_analyzer/output_manager.py +255 -264
  59. tree_sitter_analyzer/plugins/__init__.py +280 -334
  60. tree_sitter_analyzer/plugins/base.py +496 -446
  61. tree_sitter_analyzer/plugins/manager.py +379 -355
  62. tree_sitter_analyzer/queries/__init__.py +26 -27
  63. tree_sitter_analyzer/queries/java.py +391 -394
  64. tree_sitter_analyzer/queries/javascript.py +148 -149
  65. tree_sitter_analyzer/queries/python.py +285 -286
  66. tree_sitter_analyzer/queries/typescript.py +229 -230
  67. tree_sitter_analyzer/query_loader.py +257 -260
  68. tree_sitter_analyzer/table_formatter.py +471 -448
  69. tree_sitter_analyzer/utils.py +277 -277
  70. {tree_sitter_analyzer-0.2.0.dist-info → tree_sitter_analyzer-0.4.0.dist-info}/METADATA +23 -8
  71. tree_sitter_analyzer-0.4.0.dist-info/RECORD +73 -0
  72. {tree_sitter_analyzer-0.2.0.dist-info → tree_sitter_analyzer-0.4.0.dist-info}/entry_points.txt +2 -1
  73. tree_sitter_analyzer/plugins/java_plugin.py +0 -625
  74. tree_sitter_analyzer/plugins/plugin_loader.py +0 -83
  75. tree_sitter_analyzer/plugins/python_plugin.py +0 -598
  76. tree_sitter_analyzer/plugins/registry.py +0 -366
  77. tree_sitter_analyzer-0.2.0.dist-info/RECORD +0 -77
  78. {tree_sitter_analyzer-0.2.0.dist-info → tree_sitter_analyzer-0.4.0.dist-info}/WHEEL +0 -0
@@ -1,366 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- """
4
- Language Registry
5
-
6
- Manages mapping between languages, file extensions, and plugins.
7
- Provides language detection and plugin resolution services.
8
- """
9
-
10
- from pathlib import Path
11
- from typing import Dict, List, Optional, Set
12
- import logging
13
-
14
- from .base import LanguagePlugin
15
- from ..utils import log_error, log_info, log_warning, log_debug
16
-
17
- logger = logging.getLogger(__name__)
18
-
19
-
20
- class LanguageRegistry:
21
- """
22
- Registry for managing language-to-plugin mappings.
23
-
24
- This class handles:
25
- - Mapping languages to plugins
26
- - Mapping file extensions to languages
27
- - Language detection from file paths
28
- - Plugin resolution for languages
29
- """
30
-
31
- def __init__(self):
32
- """Initialize the language registry."""
33
- self._plugins: Dict[str, LanguagePlugin] = {}
34
- self._extension_map: Dict[str, str] = {} # extension -> language
35
- self._language_aliases: Dict[str, str] = {} # alias -> canonical_language
36
-
37
- # Initialize common language aliases
38
- self._init_language_aliases()
39
-
40
- def _init_language_aliases(self):
41
- """Initialize common language aliases."""
42
- self._language_aliases.update({
43
- 'js': 'javascript',
44
- 'ts': 'typescript',
45
- 'py': 'python',
46
- 'rb': 'ruby',
47
- 'cpp': 'c++',
48
- 'cxx': 'c++',
49
- 'cc': 'c++',
50
- 'c++': 'cpp', # Normalize c++ to cpp
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(f"Extension '{ext}' already mapped to '{existing_lang}', overriding with '{language}'")
87
-
88
- self._extension_map[ext] = language
89
-
90
- log_debug(f"Registered plugin for language '{language}' with extensions: {extensions}")
91
- return True
92
-
93
- except Exception as e:
94
- log_error(f"Failed to register plugin: {e}")
95
- return False
96
-
97
- def get_plugin(self, language: str) -> Optional[LanguagePlugin]:
98
- """
99
- Get plugin for a specific language.
100
-
101
- Args:
102
- language: Programming language name
103
-
104
- Returns:
105
- Plugin instance or None if not found
106
- """
107
- # Normalize language name
108
- language = self._normalize_language(language)
109
- return self._plugins.get(language)
110
-
111
- def detect_language_from_file(self, file_path: Path) -> Optional[str]:
112
- """
113
- Detect programming language from file path.
114
-
115
- Args:
116
- file_path: Path to the file
117
-
118
- Returns:
119
- Detected language name or None
120
- """
121
- if file_path is None:
122
- return None
123
-
124
- if isinstance(file_path, str):
125
- file_path = Path(file_path)
126
-
127
- # Get file extension
128
- extension = file_path.suffix.lower()
129
-
130
- # Look up in extension map
131
- language = self._extension_map.get(extension)
132
- if language:
133
- return language
134
-
135
- # Try compound extensions (e.g., .test.js, .spec.ts)
136
- if len(file_path.suffixes) > 1:
137
- # Try the last extension
138
- last_ext = file_path.suffixes[-1].lower()
139
- language = self._extension_map.get(last_ext)
140
- if language:
141
- return language
142
-
143
- # Special cases based on filename patterns
144
- filename = file_path.name.lower()
145
-
146
- # Common configuration files
147
- config_patterns = {
148
- 'makefile': 'make',
149
- 'dockerfile': 'dockerfile',
150
- 'vagrantfile': 'ruby',
151
- 'rakefile': 'ruby',
152
- 'gemfile': 'ruby',
153
- 'podfile': 'ruby',
154
- }
155
-
156
- for pattern, lang in config_patterns.items():
157
- if filename == pattern or filename.startswith(pattern):
158
- if lang in self._plugins:
159
- return lang
160
-
161
- log_debug(f"Could not detect language for file: {file_path}")
162
- return None
163
-
164
- def get_supported_languages(self) -> List[str]:
165
- """
166
- Get list of all supported languages.
167
-
168
- Returns:
169
- List of supported language names
170
- """
171
- return list(self._plugins.keys())
172
-
173
- def get_supported_extensions(self) -> List[str]:
174
- """
175
- Get list of all supported file extensions.
176
-
177
- Returns:
178
- List of supported file extensions
179
- """
180
- return list(self._extension_map.keys())
181
-
182
- def get_extensions_for_language(self, language: str) -> List[str]:
183
- """
184
- Get file extensions for a specific language.
185
-
186
- Args:
187
- language: Programming language name
188
-
189
- Returns:
190
- List of file extensions for the language
191
- """
192
- language = self._normalize_language(language)
193
- plugin = self._plugins.get(language)
194
-
195
- if plugin:
196
- return plugin.get_file_extensions()
197
-
198
- return []
199
-
200
- def get_language_for_extension(self, extension: str) -> Optional[str]:
201
- """
202
- Get language for a specific file extension.
203
-
204
- Args:
205
- extension: File extension (with or without leading dot)
206
-
207
- Returns:
208
- Language name or None if not found
209
- """
210
- if not extension.startswith('.'):
211
- extension = '.' + extension
212
-
213
- return self._extension_map.get(extension.lower())
214
-
215
- def is_language_supported(self, language: str) -> bool:
216
- """
217
- Check if a language is supported.
218
-
219
- Args:
220
- language: Programming language name
221
-
222
- Returns:
223
- True if the language is supported
224
- """
225
- language = self._normalize_language(language)
226
- return language in self._plugins
227
-
228
- def is_extension_supported(self, extension: str) -> bool:
229
- """
230
- Check if a file extension is supported.
231
-
232
- Args:
233
- extension: File extension (with or without leading dot)
234
-
235
- Returns:
236
- True if the extension is supported
237
- """
238
- if not extension.startswith('.'):
239
- extension = '.' + extension
240
-
241
- return extension.lower() in self._extension_map
242
-
243
- def _normalize_language(self, language: str) -> str:
244
- """
245
- Normalize language name using aliases.
246
-
247
- Args:
248
- language: Language name to normalize
249
-
250
- Returns:
251
- Normalized language name
252
- """
253
- if language is None:
254
- return ""
255
- language = language.lower().strip()
256
- return self._language_aliases.get(language, language)
257
-
258
- def add_language_alias(self, alias: str, canonical_language: str) -> bool:
259
- """
260
- Add a language alias.
261
-
262
- Args:
263
- alias: Alias name
264
- canonical_language: Canonical language name
265
-
266
- Returns:
267
- True if alias was added successfully
268
- """
269
- try:
270
- alias = alias.lower().strip()
271
- canonical_language = canonical_language.lower().strip()
272
-
273
- if canonical_language not in self._plugins:
274
- log_warning(f"Cannot add alias '{alias}' for unsupported language '{canonical_language}'")
275
- return False
276
-
277
- self._language_aliases[alias] = canonical_language
278
- log_debug(f"Added language alias: '{alias}' -> '{canonical_language}'")
279
- return True
280
-
281
- except Exception as e:
282
- log_error(f"Failed to add language alias: {e}")
283
- return False
284
-
285
- def get_registry_info(self) -> Dict[str, any]:
286
- """
287
- Get comprehensive information about the registry.
288
-
289
- "plugin_count": len(self._plugins),
290
- Returns:
291
- Dictionary containing registry information
292
- """
293
- return {
294
- "plugin_count": len(self._plugins),
295
- "supported_languages": len(self._plugins),
296
- "supported_extensions": len(self._extension_map),
297
- "language_aliases": len(self._language_aliases),
298
- "languages": list(self._plugins.keys()),
299
- "extensions": list(self._extension_map.keys()),
300
- "aliases": dict(self._language_aliases),
301
- "extension_mapping": dict(self._extension_map)
302
- }
303
-
304
- def find_plugins_for_file(self, file_path: Path) -> List[LanguagePlugin]:
305
- """
306
- Find all possible plugins for a file (useful for ambiguous cases).
307
-
308
- Args:
309
- file_path: Path to the file
310
-
311
- Returns:
312
- List of possible plugins
313
- """
314
- plugins = []
315
-
316
- # Primary detection
317
- language = self.detect_language_from_file(file_path)
318
- if language:
319
- plugin = self.get_plugin(language)
320
- if plugin:
321
- plugins.append(plugin)
322
-
323
- # Check if any plugins explicitly support this file
324
- for plugin in self._plugins.values():
325
- if hasattr(plugin, 'is_applicable') and plugin.is_applicable(str(file_path)):
326
- if plugin not in plugins:
327
- plugins.append(plugin)
328
-
329
- return plugins
330
-
331
- def clear(self):
332
- """Clear all registered plugins and mappings."""
333
- self._plugins.clear()
334
- self._extension_map.clear()
335
- # Keep language aliases as they're static
336
- log_debug("Cleared language registry")
337
-
338
- def unregister_plugin(self, language: str) -> bool:
339
- """
340
- Unregister a plugin for a specific language.
341
-
342
- Args:
343
- language: Programming language name
344
-
345
- Returns:
346
- True if unregistration was successful
347
- """
348
- language = self._normalize_language(language)
349
-
350
- if language not in self._plugins:
351
- return False
352
-
353
- # Remove the plugin
354
- plugin = self._plugins.pop(language)
355
-
356
- # Remove associated extensions
357
- extensions_to_remove = []
358
- for ext, lang in self._extension_map.items():
359
- if lang == language:
360
- extensions_to_remove.append(ext)
361
-
362
- for ext in extensions_to_remove:
363
- del self._extension_map[ext]
364
-
365
- log_debug(f"Unregistered plugin for language '{language}'")
366
- return True
@@ -1,77 +0,0 @@
1
- tree_sitter_analyzer/__init__.py,sha256=2T4SssTp_5Zh1OTmBsoVN98EShxcUj19PCGR3FPrfrQ,3003
2
- tree_sitter_analyzer/__main__.py,sha256=25E8WFUzTFAYqwT5Pdlq6cn8Aa25ogHP3w_5ybbHbNc,317
3
- tree_sitter_analyzer/api.py,sha256=-Np6khuxbzBA_T2FN-Z8WDEXz7260OcwKIMP3iz2Kaw,17870
4
- tree_sitter_analyzer/cli_main.py,sha256=WTP77Shnaa9yTKy0bMVLUj2i3xtLbIaDDOlUYbS2cGc,9656
5
- tree_sitter_analyzer/encoding_utils.py,sha256=bgzyec3Rm1oxyRpTmXS_B5GOcA6rU54YCPRxv-2Z3q0,15017
6
- tree_sitter_analyzer/exceptions.py,sha256=s--JRYJXH8Ui7ChtWuMS4npM4V0-L3aW831xQO5v6RM,10219
7
- tree_sitter_analyzer/file_handler.py,sha256=P2S0AOCeo1mzVj_gDrntCSWGt9E3cflSfaxsPRx2EPM,7620
8
- tree_sitter_analyzer/java_analyzer.py,sha256=axYh_OUidqrSWbqpXwAXU327_zhx4VmIgORoUuTpVxM,8699
9
- tree_sitter_analyzer/language_detector.py,sha256=KJfB8AMe9Kn0Y8hJyRRv7x3Onu5IvBGhoNI4gGKnEjM,12608
10
- tree_sitter_analyzer/language_loader.py,sha256=okZeUmEeJo_OQJSYCfjzDf29-RuNM9K8-JNlFD18CMs,8296
11
- tree_sitter_analyzer/models.py,sha256=2JZAQXM4nJVu7rfnsZFwpvPpv8fpk0POVHKCKeOMLMY,17039
12
- tree_sitter_analyzer/output_manager.py,sha256=dh_yfAmvn-XuF7RP5DM5vnqHGRzBUDOsuiVvTjcaOwg,8769
13
- tree_sitter_analyzer/query_loader.py,sha256=KrpNnf-plrtymDAfUF6ukw8ELtGWnqhikwPLW_z9vY8,10225
14
- tree_sitter_analyzer/table_formatter.py,sha256=4ioaIB6Sus-5Wd6ab-GMeRPVg8WH1a4XXkE4T0Ty2SA,18000
15
- tree_sitter_analyzer/utils.py,sha256=mL-TexPDTmapE3x7UErVQEJjXWn613KibPbZwgTpkd0,8332
16
- tree_sitter_analyzer/cli/__init__.py,sha256=zCYwQW0hKFfZ4w-qoSOnqVKZGtdZ-ziH60Ax0QBE2iQ,886
17
- tree_sitter_analyzer/cli/__main__.py,sha256=Sa02Ye57FhkDVTlGrb6U3m9V6II_TIuyzoQIwZtBkZ0,254
18
- tree_sitter_analyzer/cli/info_commands.py,sha256=B9fBryAJ2Ctt-wo8Tko86BKOfFCCBPhAWz9vz_3r1fs,4521
19
- tree_sitter_analyzer/cli/commands/__init__.py,sha256=duw37uHXggCRf08vaGQeY4dy7krZrc7YpXBNmlzhSQw,722
20
- tree_sitter_analyzer/cli/commands/advanced_command.py,sha256=aFxkvksJr7FtzKNJebS4SqCySjJQunUnp_7SVzeU29E,3521
21
- tree_sitter_analyzer/cli/commands/base_command.py,sha256=GrKQg_bTZuvuaS_fdzxGbhOE6JC1bMddrVMBz-qe6yo,5845
22
- tree_sitter_analyzer/cli/commands/default_command.py,sha256=lRy3WnCYZe3G4wpz4ZXyDc_wHByCHBhB0kdLdPJbKt0,601
23
- tree_sitter_analyzer/cli/commands/partial_read_command.py,sha256=OnQVk5inXeF07ClsOrMvyw80aP__MbWJ0f1ZvPaAV7M,4807
24
- tree_sitter_analyzer/cli/commands/query_command.py,sha256=Z3QFVD8pYauW7oUHr-X6zZqUM_GYfBXSNYdSqyEjHP8,3294
25
- tree_sitter_analyzer/cli/commands/structure_command.py,sha256=rwG87-EIjiqRfaoKGhH3mNBtr7DL9E0qF311oKHvcvU,5171
26
- tree_sitter_analyzer/cli/commands/summary_command.py,sha256=la0YEEYibmspHvIrvUSiNS45grEkHgaIC-XH1N5dIc8,3690
27
- tree_sitter_analyzer/cli/commands/table_command.py,sha256=vehgW7nEIF5x_ghUHytdQX5pl7_uKO1Qwmwj4OjFFx0,9604
28
- tree_sitter_analyzer/core/__init__.py,sha256=raWtpBZJFxo_G1q3WJxdzmcbQK0TqqDycm-GLrjv4OA,479
29
- tree_sitter_analyzer/core/analysis_engine.py,sha256=5xwGRd-Blkyp3M4CIkFHbD6jULm3bbnv2Hn15fRyk-8,21256
30
- tree_sitter_analyzer/core/cache_service.py,sha256=1TZm3YfyQJIhBAC-3GDmsMJBGsIVb9SFDYG74imZGlk,10836
31
- tree_sitter_analyzer/core/engine.py,sha256=nUQa_-Gjx0QSpbvYT17Tpo1Gp5Us9O1ohSLw5z_0NTM,19688
32
- tree_sitter_analyzer/core/parser.py,sha256=5MIP18Kx8jYgzkDOGsKXoN0aObNetbYjsLqGTkrhGNU,9733
33
- tree_sitter_analyzer/core/query.py,sha256=ye9MV5zH4qnA1Zrut3pWgCt9DWVAtI4JjepNyMSr7Uw,17306
34
- tree_sitter_analyzer/formatters/__init__.py,sha256=ILBoX4Fj2M8xdLuKsS0JIkhML0cNo7EziNWU8h--kfA,30
35
- tree_sitter_analyzer/formatters/base_formatter.py,sha256=5nbjJVyAJq4RPJjnqRhrR0buW31eRxhvMccEDIUTD2c,6132
36
- tree_sitter_analyzer/formatters/formatter_factory.py,sha256=_jw9Emd7t0vM3DroJwBxqPlNTpq2BDtUvE4juKOHlTI,2491
37
- tree_sitter_analyzer/formatters/java_formatter.py,sha256=HmbQJgYsswg3whZ61p-M_CuHxg72yY-EtszOBVnjsw8,11285
38
- tree_sitter_analyzer/formatters/python_formatter.py,sha256=Fz84SHDExP2nSx3Iq43XbbY8Z9dWYQj5zJS9cmPLysA,9898
39
- tree_sitter_analyzer/interfaces/__init__.py,sha256=YrVFjBhhOkcJ4bRGmQnRBHwOSyPUsBLVy77Bc9eUYC8,303
40
- tree_sitter_analyzer/interfaces/cli.py,sha256=hTAIFew7yq9a9ejWnyGnwFHqadzckWXT-EaX-Q-La7I,17832
41
- tree_sitter_analyzer/interfaces/cli_adapter.py,sha256=0lxm8dQuzTohlXptFq2bZEjnL7YAmOnli2iN3C8V0TA,11461
42
- tree_sitter_analyzer/interfaces/mcp_adapter.py,sha256=vZcZy5FRYrSjJkRvdyu28OtqoESwiXkTqH9Nv7irRqM,6515
43
- tree_sitter_analyzer/interfaces/mcp_server.py,sha256=3zj02Ur00ceJvKSG5bkuxlU2bHLaiCWjW2367dNPlLM,16907
44
- tree_sitter_analyzer/languages/__init__.py,sha256=MAZEb-ifvdttqAQts_n3Cj9jtMd1cyAtDgbEde63p4A,373
45
- tree_sitter_analyzer/languages/java_plugin.py,sha256=2VdS2ZoNhd8q-Dqlc08vpfhoGqpN-vqEkRkFF4uuczE,46174
46
- tree_sitter_analyzer/languages/python_plugin.py,sha256=to_mg-x4nJZO27i7geP5sTmHCLXiv2_gjFCCPB0ELZU,28839
47
- tree_sitter_analyzer/mcp/__init__.py,sha256=QX4WA9HrxASLW1q-aVKhmXyONBy__2X9jOj9YctEj9Q,783
48
- tree_sitter_analyzer/mcp/server.py,sha256=37dnVBM3Qm0k6jXh1DP7FgAOraJDo5MuDe-8s88qPYM,13086
49
- tree_sitter_analyzer/mcp/resources/__init__.py,sha256=caWz1n3l22IaxBZ1plSjIUfroassWNNDRWEwEp1vaMw,1490
50
- tree_sitter_analyzer/mcp/resources/code_file_resource.py,sha256=p3XrTAHPasl92f7mdiWnRv2nl338GPeKlYdCIzLyYqg,6541
51
- tree_sitter_analyzer/mcp/resources/project_stats_resource.py,sha256=CkvfOSr7Bk6mJlJt-MkXw3kmUC0VAAsw8w1-AcGO0ek,19854
52
- tree_sitter_analyzer/mcp/tools/__init__.py,sha256=MBX4-SX8gfUyEGs_BlsOD4toRosvw-rJt2ezD1HrSME,829
53
- tree_sitter_analyzer/mcp/tools/analyze_scale_tool.py,sha256=Bya1dsy4a-aTzyYSI32NDUgMbIVCFWpYXMtloGHx1V0,23448
54
- tree_sitter_analyzer/mcp/tools/analyze_scale_tool_cli_compatible.py,sha256=xwXuy72FEfoY2TW6URddfdS9Ha_lq8_ZgG0UxC26mLM,8954
55
- tree_sitter_analyzer/mcp/tools/base_tool.py,sha256=LpY_QPWbpm8ZGe3SPK7TIBFZMiwkUMpHa8zcswld2ag,1295
56
- tree_sitter_analyzer/mcp/tools/read_partial_tool.py,sha256=m71g5RjNkBf-DxXhHGYsRsID5fYfDFs53-2bGZ_C4sQ,11097
57
- tree_sitter_analyzer/mcp/tools/table_format_tool.py,sha256=3vfJk-KF7LMkztODZY2yBA3uaaqhvHXbXDrnCZU9ags,14538
58
- tree_sitter_analyzer/mcp/tools/universal_analyze_tool.py,sha256=asH_2BLzT-ACLLampyHF61WFn5nSVKL94wE0mU-uui8,19635
59
- tree_sitter_analyzer/mcp/utils/__init__.py,sha256=f1WkdJ3XNWgh2NDN0LGNdwk5O-ChqEvnOQ-mINlHPG8,3064
60
- tree_sitter_analyzer/mcp/utils/error_handler.py,sha256=VXVutTKA8AvtP_yiX__gqkbsSmK8_pfH3rF_H7yFsVI,18012
61
- tree_sitter_analyzer/plugins/__init__.py,sha256=HOxO8UVYexzkaxNTqKlWDXyrMy1cxnK7P-brQSh5WGU,12650
62
- tree_sitter_analyzer/plugins/base.py,sha256=ixGtS5uKmMArofK1G6xtqbtOdDjbNCHhjIgVNVqIx4c,15968
63
- tree_sitter_analyzer/plugins/java_plugin.py,sha256=9wAjLoj6uEsLupUz7l7xp5VppLG5TpapWpshJtmncjA,24137
64
- tree_sitter_analyzer/plugins/javascript_plugin.py,sha256=7LfNfuA-ygl_M5PbJz-QPMf7mnmGYRfSqrFwujiVhuo,16031
65
- tree_sitter_analyzer/plugins/manager.py,sha256=BjhdgNhS8ev2YtrG_awusNxmRXJSn6p5PraH5cLRhMk,12521
66
- tree_sitter_analyzer/plugins/plugin_loader.py,sha256=KZYEJCUo1w3w83YWRIh2lI1TRoS0CDQAtXWhdKrrVjM,2478
67
- tree_sitter_analyzer/plugins/python_plugin.py,sha256=hssiKuoRWefUwnaGBJNsfkplvMSfYm_VIfeWfBZ3bho,24055
68
- tree_sitter_analyzer/plugins/registry.py,sha256=ifKlvD4IFcwcvKcAoIJRVlLel-pg6ey97i1Nx_uic7s,12048
69
- tree_sitter_analyzer/queries/__init__.py,sha256=HavpqPqK5M4j8PjRWgkUm_9fTHqftDCHuz2zcG63Cc4,747
70
- tree_sitter_analyzer/queries/java.py,sha256=hmaj7jKQ_m9nmOAnyiWQhzH-6g41xIi3fwt5ZTUTrQQ,12979
71
- tree_sitter_analyzer/queries/javascript.py,sha256=TSe6uSHhBuQU0r2B8YBqpEYkU4q9CYRuTUqRK0WfM5o,4183
72
- tree_sitter_analyzer/queries/python.py,sha256=V5MsKmI9A_FqAT2PKkrSL_Xp9bGKBUSpyVPoBmLxxWg,8018
73
- tree_sitter_analyzer/queries/typescript.py,sha256=T8a9PwqqGkwLr8clVsAfu0IUIrLKH8u4sBqlU1Cz-FE,7138
74
- tree_sitter_analyzer-0.2.0.dist-info/METADATA,sha256=9rRYvib9drv587S9KdVp2ihhu6_BvbPCYut_X-881z8,12409
75
- tree_sitter_analyzer-0.2.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
76
- tree_sitter_analyzer-0.2.0.dist-info/entry_points.txt,sha256=-XEh1racqnCT30mhKWMv5-bgX0iqd_J6b08lZS9J4eg,336
77
- tree_sitter_analyzer-0.2.0.dist-info/RECORD,,