code2llm 0.5.107__tar.gz → 0.5.108__tar.gz
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.
- {code2llm-0.5.107 → code2llm-0.5.108}/PKG-INFO +2 -2
- {code2llm-0.5.107 → code2llm-0.5.108}/README.md +1 -1
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/__init__.py +1 -1
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/cli_exports/orchestrator.py +3 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/yaml_exporter.py +63 -28
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/nlp/__init__.py +1 -1
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm.egg-info/PKG-INFO +2 -2
- {code2llm-0.5.107 → code2llm-0.5.108}/pyproject.toml +1 -1
- {code2llm-0.5.107 → code2llm-0.5.108}/setup.py +1 -1
- {code2llm-0.5.107 → code2llm-0.5.108}/LICENSE +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/__main__.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/analysis/__init__.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/analysis/call_graph.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/analysis/cfg.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/analysis/coupling.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/analysis/data_analysis.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/analysis/dfg.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/analysis/pipeline_detector.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/analysis/side_effects.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/analysis/smells.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/analysis/type_inference.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/analysis/utils/__init__.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/analysis/utils/ast_helpers.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/api.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/cli.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/cli_analysis.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/cli_commands.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/cli_exports/__init__.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/cli_exports/code2logic.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/cli_exports/formats.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/cli_exports/prompt.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/cli_parser.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/__init__.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/analyzer.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/ast_registry.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/config.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/export_pipeline.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/file_analyzer.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/file_cache.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/file_filter.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/gitignore.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/incremental.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/lang/__init__.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/lang/base.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/lang/cpp.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/lang/csharp.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/lang/generic.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/lang/go_lang.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/lang/java.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/lang/php.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/lang/ruby.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/lang/rust.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/lang/ts_extractors.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/lang/ts_parser.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/lang/typescript.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/large_repo.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/models.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/refactoring.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/repo_files.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/streaming/__init__.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/streaming/cache.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/streaming/incremental.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/streaming/prioritizer.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/streaming/scanner.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/streaming/strategies.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/streaming_analyzer.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/core/toon_size_manager.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/__init__.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/article_view.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/base.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/context_exporter.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/context_view.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/evolution_exporter.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/flow_constants.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/flow_exporter.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/flow_renderer.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/html_dashboard.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/index_generator.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/json_exporter.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/llm_exporter.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/map_exporter.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/mermaid_exporter.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/mermaid_flow_helpers.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/project_yaml_exporter.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/readme_exporter.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/report_generators.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/toon/__init__.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/toon/helpers.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/toon/metrics.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/toon/module_detail.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/toon/renderer.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/toon.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/toon_view.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/exporters/validate_project.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/generators/__init__.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/generators/llm_flow.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/generators/llm_task.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/generators/mermaid.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/nlp/config.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/nlp/entity_resolution.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/nlp/intent_matching.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/nlp/normalization.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/nlp/pipeline.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/patterns/__init__.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/patterns/detector.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/refactor/__init__.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm/refactor/prompt_engine.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm.egg-info/SOURCES.txt +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm.egg-info/dependency_links.txt +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm.egg-info/entry_points.txt +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm.egg-info/requires.txt +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/code2llm.egg-info/top_level.txt +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/setup.cfg +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/tests/test_advanced_analysis.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/tests/test_analyzer.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/tests/test_deep_analysis.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/tests/test_edge_cases.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/tests/test_flow_exporter.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/tests/test_format_quality.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/tests/test_multilanguage_e2e.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/tests/test_nlp_pipeline.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/tests/test_nonpython_cc_calls.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/tests/test_pipeline_detector.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/tests/test_project_toon_export.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/tests/test_prompt_engine.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/tests/test_prompt_txt.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/tests/test_refactoring_engine.py +0 -0
- {code2llm-0.5.107 → code2llm-0.5.108}/tests/test_toon_v2.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code2llm
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.108
|
|
4
4
|
Summary: High-performance Python code flow analysis with optimized TOON format - CFG, DFG, call graphs, and intelligent code queries
|
|
5
5
|
Home-page: https://github.com/wronai/stts
|
|
6
6
|
Author: STTS Project
|
|
@@ -66,7 +66,7 @@ Dynamic: requires-python
|
|
|
66
66
|
|
|
67
67
|
## AI Cost Tracking
|
|
68
68
|
|
|
69
|
-
    
|
|
70
70
|
  
|
|
71
71
|
|
|
72
72
|
- 🤖 **LLM usage:** $7.5000 (154 commits)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
## AI Cost Tracking
|
|
5
5
|
|
|
6
|
-
    
|
|
7
7
|
  
|
|
8
8
|
|
|
9
9
|
- 🤖 **LLM usage:** $7.5000 (154 commits)
|
|
@@ -8,7 +8,7 @@ Includes NLP Processing Pipeline for query normalization, intent matching,
|
|
|
8
8
|
and entity resolution with multilingual support.
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
-
__version__ = "0.5.
|
|
11
|
+
__version__ = "0.5.108"
|
|
12
12
|
__author__ = "STTS Project"
|
|
13
13
|
|
|
14
14
|
# Core analysis components (lightweight, always needed)
|
|
@@ -103,6 +103,9 @@ def _export_chunked_results(
|
|
|
103
103
|
_export_simple_formats(args, result, output_dir, ['toon', 'context'])
|
|
104
104
|
_export_evolution(args, result, output_dir)
|
|
105
105
|
|
|
106
|
+
if 'calls' in formats:
|
|
107
|
+
_export_calls(args, result, output_dir)
|
|
108
|
+
|
|
106
109
|
if 'all' in requested_formats:
|
|
107
110
|
_export_project_toon(args, result, output_dir)
|
|
108
111
|
|
|
@@ -117,13 +117,24 @@ class YAMLExporter(Exporter):
|
|
|
117
117
|
- modules: grouping of functions by module
|
|
118
118
|
- stats: summary statistics
|
|
119
119
|
"""
|
|
120
|
-
|
|
120
|
+
connected, edges = self._collect_edges(result, max_calls_per_func, max_edges)
|
|
121
|
+
nodes = self._build_nodes(result, connected)
|
|
122
|
+
modules = self._group_by_module(result, connected)
|
|
123
|
+
|
|
124
|
+
calls_data = self._build_calls_data(result, nodes, edges, modules)
|
|
125
|
+
|
|
126
|
+
Path(output_path).parent.mkdir(parents=True, exist_ok=True)
|
|
127
|
+
with open(output_path, 'w', encoding='utf-8') as f:
|
|
128
|
+
yaml.dump(calls_data, f, default_flow_style=False, allow_unicode=True, sort_keys=False)
|
|
129
|
+
|
|
130
|
+
def _collect_edges(self, result: AnalysisResult, max_calls: int, max_edges: int) -> Tuple[Set[str], List[Dict]]:
|
|
131
|
+
"""Collect connected nodes and edges from function calls."""
|
|
121
132
|
connected: Set[str] = set()
|
|
122
133
|
edges: List[Dict] = []
|
|
123
134
|
seen_pairs: Set[Tuple[str, str]] = set()
|
|
124
135
|
|
|
125
136
|
for func_name, fi in result.functions.items():
|
|
126
|
-
for callee in fi.calls[:
|
|
137
|
+
for callee in fi.calls[:max_calls]:
|
|
127
138
|
resolved = self._resolve_callee(callee, result.functions)
|
|
128
139
|
if resolved and resolved != func_name:
|
|
129
140
|
connected.add(func_name)
|
|
@@ -131,39 +142,66 @@ class YAMLExporter(Exporter):
|
|
|
131
142
|
pair = (func_name, resolved)
|
|
132
143
|
if pair not in seen_pairs:
|
|
133
144
|
seen_pairs.add(pair)
|
|
134
|
-
edges.append(
|
|
135
|
-
'caller': func_name,
|
|
136
|
-
'callee': resolved,
|
|
137
|
-
'call_type': 'direct' if callee == resolved.split('.')[-1] else 'resolved'
|
|
138
|
-
})
|
|
145
|
+
edges.append(self._create_edge(func_name, resolved, callee))
|
|
139
146
|
if len(edges) >= max_edges:
|
|
140
|
-
|
|
147
|
+
return connected, edges
|
|
141
148
|
if len(edges) >= max_edges:
|
|
142
|
-
|
|
149
|
+
return connected, edges
|
|
143
150
|
|
|
144
|
-
|
|
151
|
+
return connected, edges
|
|
152
|
+
|
|
153
|
+
@staticmethod
|
|
154
|
+
def _create_edge(caller: str, resolved: str, callee: str) -> Dict:
|
|
155
|
+
"""Create edge dict with call type classification."""
|
|
156
|
+
return {
|
|
157
|
+
'caller': caller,
|
|
158
|
+
'callee': resolved,
|
|
159
|
+
'call_type': 'direct' if callee == resolved.split('.')[-1] else 'resolved'
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
def _build_nodes(self, result: AnalysisResult, connected: Set[str]) -> Dict[str, Dict]:
|
|
163
|
+
"""Build node data for all connected functions."""
|
|
145
164
|
nodes: Dict[str, Dict] = {}
|
|
146
165
|
for fn in connected:
|
|
147
166
|
fi = result.functions.get(fn)
|
|
148
167
|
if fi:
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
168
|
+
nodes[fn] = self._create_node(fi, fn, result)
|
|
169
|
+
return nodes
|
|
170
|
+
|
|
171
|
+
def _create_node(self, fi: FunctionInfo, fn: str, result: AnalysisResult) -> Dict:
|
|
172
|
+
"""Create node dict with function metadata."""
|
|
173
|
+
return {
|
|
174
|
+
'name': fi.name,
|
|
175
|
+
'module': fi.module,
|
|
176
|
+
'line': fi.line,
|
|
177
|
+
'cyclomatic_complexity': self._get_cc(fi),
|
|
178
|
+
'calls_out': len(fi.calls),
|
|
179
|
+
'calls_in': self._count_calls_in(fn, result),
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
def _count_calls_in(self, fn: str, result: AnalysisResult) -> int:
|
|
183
|
+
"""Count how many functions call the given function."""
|
|
184
|
+
count = 0
|
|
185
|
+
for f in result.functions.values():
|
|
186
|
+
for c in f.calls:
|
|
187
|
+
resolved = self._resolve_callee(c, result.functions)
|
|
188
|
+
if resolved == fn:
|
|
189
|
+
count += 1
|
|
190
|
+
break
|
|
191
|
+
return count
|
|
192
|
+
|
|
193
|
+
@staticmethod
|
|
194
|
+
def _group_by_module(result: AnalysisResult, connected: Set[str]) -> Dict[str, List[str]]:
|
|
195
|
+
"""Group connected functions by their module."""
|
|
160
196
|
modules: Dict[str, List[str]] = defaultdict(list)
|
|
161
197
|
for fn in connected:
|
|
162
198
|
fi = result.functions.get(fn)
|
|
163
199
|
if fi:
|
|
164
200
|
modules[fi.module].append(fn)
|
|
165
|
-
|
|
166
|
-
|
|
201
|
+
return {mod: sorted(funcs) for mod, funcs in sorted(modules.items())}
|
|
202
|
+
|
|
203
|
+
def _build_calls_data(self, result: AnalysisResult, nodes: Dict, edges: List, modules: Dict) -> Dict:
|
|
204
|
+
"""Build the final calls.yaml data structure."""
|
|
167
205
|
calls_data = {
|
|
168
206
|
'project': result.project_path,
|
|
169
207
|
'generated_from': 'code2llm call graph analysis',
|
|
@@ -174,16 +212,13 @@ class YAMLExporter(Exporter):
|
|
|
174
212
|
},
|
|
175
213
|
'nodes': nodes,
|
|
176
214
|
'edges': edges,
|
|
177
|
-
'modules':
|
|
215
|
+
'modules': modules,
|
|
178
216
|
}
|
|
179
217
|
|
|
180
|
-
# Add entry points if available
|
|
181
218
|
if result.entry_points:
|
|
182
219
|
calls_data['entry_points'] = sorted(result.entry_points)
|
|
183
220
|
|
|
184
|
-
|
|
185
|
-
with open(output_path, 'w', encoding='utf-8') as f:
|
|
186
|
-
yaml.dump(calls_data, f, default_flow_style=False, allow_unicode=True, sort_keys=False)
|
|
221
|
+
return calls_data
|
|
187
222
|
|
|
188
223
|
@staticmethod
|
|
189
224
|
def _resolve_callee(callee: str, funcs: Dict[str, FunctionInfo]) -> Optional[str]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code2llm
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.108
|
|
4
4
|
Summary: High-performance Python code flow analysis with optimized TOON format - CFG, DFG, call graphs, and intelligent code queries
|
|
5
5
|
Home-page: https://github.com/wronai/stts
|
|
6
6
|
Author: STTS Project
|
|
@@ -66,7 +66,7 @@ Dynamic: requires-python
|
|
|
66
66
|
|
|
67
67
|
## AI Cost Tracking
|
|
68
68
|
|
|
69
|
-
    
|
|
70
70
|
  
|
|
71
71
|
|
|
72
72
|
- 🤖 **LLM usage:** $7.5000 (154 commits)
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "code2llm"
|
|
7
|
-
version = "0.5.
|
|
7
|
+
version = "0.5.108"
|
|
8
8
|
description = "High-performance Python code flow analysis with optimized TOON format - CFG, DFG, call graphs, and intelligent code queries"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.8"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|