code2llm 0.5.110__tar.gz → 0.5.111__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.
Files changed (128) hide show
  1. {code2llm-0.5.110 → code2llm-0.5.111}/PKG-INFO +2 -2
  2. {code2llm-0.5.110 → code2llm-0.5.111}/README.md +1 -1
  3. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/__init__.py +1 -1
  4. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/cli_exports/formats.py +11 -0
  5. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/cli_exports/orchestrator.py +1 -0
  6. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/yaml_exporter.py +72 -0
  7. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/nlp/__init__.py +1 -1
  8. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm.egg-info/PKG-INFO +2 -2
  9. {code2llm-0.5.110 → code2llm-0.5.111}/pyproject.toml +1 -1
  10. {code2llm-0.5.110 → code2llm-0.5.111}/setup.py +1 -1
  11. {code2llm-0.5.110 → code2llm-0.5.111}/LICENSE +0 -0
  12. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/__main__.py +0 -0
  13. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/analysis/__init__.py +0 -0
  14. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/analysis/call_graph.py +0 -0
  15. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/analysis/cfg.py +0 -0
  16. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/analysis/coupling.py +0 -0
  17. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/analysis/data_analysis.py +0 -0
  18. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/analysis/dfg.py +0 -0
  19. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/analysis/pipeline_detector.py +0 -0
  20. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/analysis/side_effects.py +0 -0
  21. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/analysis/smells.py +0 -0
  22. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/analysis/type_inference.py +0 -0
  23. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/analysis/utils/__init__.py +0 -0
  24. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/analysis/utils/ast_helpers.py +0 -0
  25. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/api.py +0 -0
  26. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/cli.py +0 -0
  27. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/cli_analysis.py +0 -0
  28. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/cli_commands.py +0 -0
  29. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/cli_exports/__init__.py +0 -0
  30. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/cli_exports/code2logic.py +0 -0
  31. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/cli_exports/prompt.py +0 -0
  32. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/cli_parser.py +0 -0
  33. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/__init__.py +0 -0
  34. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/analyzer.py +0 -0
  35. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/ast_registry.py +0 -0
  36. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/config.py +0 -0
  37. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/export_pipeline.py +0 -0
  38. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/file_analyzer.py +0 -0
  39. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/file_cache.py +0 -0
  40. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/file_filter.py +0 -0
  41. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/gitignore.py +0 -0
  42. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/incremental.py +0 -0
  43. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/lang/__init__.py +0 -0
  44. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/lang/base.py +0 -0
  45. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/lang/cpp.py +0 -0
  46. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/lang/csharp.py +0 -0
  47. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/lang/generic.py +0 -0
  48. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/lang/go_lang.py +0 -0
  49. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/lang/java.py +0 -0
  50. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/lang/php.py +0 -0
  51. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/lang/ruby.py +0 -0
  52. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/lang/rust.py +0 -0
  53. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/lang/ts_extractors.py +0 -0
  54. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/lang/ts_parser.py +0 -0
  55. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/lang/typescript.py +0 -0
  56. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/large_repo.py +0 -0
  57. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/models.py +0 -0
  58. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/refactoring.py +0 -0
  59. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/repo_files.py +0 -0
  60. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/streaming/__init__.py +0 -0
  61. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/streaming/cache.py +0 -0
  62. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/streaming/incremental.py +0 -0
  63. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/streaming/prioritizer.py +0 -0
  64. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/streaming/scanner.py +0 -0
  65. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/streaming/strategies.py +0 -0
  66. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/streaming_analyzer.py +0 -0
  67. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/core/toon_size_manager.py +0 -0
  68. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/__init__.py +0 -0
  69. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/article_view.py +0 -0
  70. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/base.py +0 -0
  71. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/context_exporter.py +0 -0
  72. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/context_view.py +0 -0
  73. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/evolution_exporter.py +0 -0
  74. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/flow_constants.py +0 -0
  75. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/flow_exporter.py +0 -0
  76. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/flow_renderer.py +0 -0
  77. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/html_dashboard.py +0 -0
  78. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/index_generator.py +0 -0
  79. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/json_exporter.py +0 -0
  80. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/llm_exporter.py +0 -0
  81. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/map_exporter.py +0 -0
  82. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/mermaid_exporter.py +0 -0
  83. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/mermaid_flow_helpers.py +0 -0
  84. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/project_yaml_exporter.py +0 -0
  85. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/readme_exporter.py +0 -0
  86. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/report_generators.py +0 -0
  87. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/toon/__init__.py +0 -0
  88. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/toon/helpers.py +0 -0
  89. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/toon/metrics.py +0 -0
  90. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/toon/module_detail.py +0 -0
  91. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/toon/renderer.py +0 -0
  92. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/toon.py +0 -0
  93. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/toon_view.py +0 -0
  94. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/exporters/validate_project.py +0 -0
  95. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/generators/__init__.py +0 -0
  96. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/generators/llm_flow.py +0 -0
  97. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/generators/llm_task.py +0 -0
  98. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/generators/mermaid.py +0 -0
  99. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/nlp/config.py +0 -0
  100. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/nlp/entity_resolution.py +0 -0
  101. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/nlp/intent_matching.py +0 -0
  102. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/nlp/normalization.py +0 -0
  103. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/nlp/pipeline.py +0 -0
  104. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/patterns/__init__.py +0 -0
  105. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/patterns/detector.py +0 -0
  106. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/refactor/__init__.py +0 -0
  107. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm/refactor/prompt_engine.py +0 -0
  108. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm.egg-info/SOURCES.txt +0 -0
  109. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm.egg-info/dependency_links.txt +0 -0
  110. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm.egg-info/entry_points.txt +0 -0
  111. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm.egg-info/requires.txt +0 -0
  112. {code2llm-0.5.110 → code2llm-0.5.111}/code2llm.egg-info/top_level.txt +0 -0
  113. {code2llm-0.5.110 → code2llm-0.5.111}/setup.cfg +0 -0
  114. {code2llm-0.5.110 → code2llm-0.5.111}/tests/test_advanced_analysis.py +0 -0
  115. {code2llm-0.5.110 → code2llm-0.5.111}/tests/test_analyzer.py +0 -0
  116. {code2llm-0.5.110 → code2llm-0.5.111}/tests/test_deep_analysis.py +0 -0
  117. {code2llm-0.5.110 → code2llm-0.5.111}/tests/test_edge_cases.py +0 -0
  118. {code2llm-0.5.110 → code2llm-0.5.111}/tests/test_flow_exporter.py +0 -0
  119. {code2llm-0.5.110 → code2llm-0.5.111}/tests/test_format_quality.py +0 -0
  120. {code2llm-0.5.110 → code2llm-0.5.111}/tests/test_multilanguage_e2e.py +0 -0
  121. {code2llm-0.5.110 → code2llm-0.5.111}/tests/test_nlp_pipeline.py +0 -0
  122. {code2llm-0.5.110 → code2llm-0.5.111}/tests/test_nonpython_cc_calls.py +0 -0
  123. {code2llm-0.5.110 → code2llm-0.5.111}/tests/test_pipeline_detector.py +0 -0
  124. {code2llm-0.5.110 → code2llm-0.5.111}/tests/test_project_toon_export.py +0 -0
  125. {code2llm-0.5.110 → code2llm-0.5.111}/tests/test_prompt_engine.py +0 -0
  126. {code2llm-0.5.110 → code2llm-0.5.111}/tests/test_prompt_txt.py +0 -0
  127. {code2llm-0.5.110 → code2llm-0.5.111}/tests/test_refactoring_engine.py +0 -0
  128. {code2llm-0.5.110 → code2llm-0.5.111}/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.110
3
+ Version: 0.5.111
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
@@ -67,7 +67,7 @@ Dynamic: requires-python
67
67
 
68
68
  ## AI Cost Tracking
69
69
 
70
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.5.110-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
70
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.5.111-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
71
71
  ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-53.7h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
72
72
 
73
73
  - 🤖 **LLM usage:** $7.5000 (154 commits)
@@ -3,7 +3,7 @@
3
3
 
4
4
  ## AI Cost Tracking
5
5
 
6
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.5.110-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
6
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.5.111-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
7
7
  ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-53.7h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
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.110"
11
+ __version__ = "0.5.111"
12
12
  __author__ = "STTS Project"
13
13
 
14
14
  # Core analysis components (lightweight, always needed)
@@ -225,6 +225,17 @@ def _export_calls(args, result, output_dir: Path):
225
225
  print(f" - CALLS (call graph YAML): {output_dir / 'calls.yaml'}")
226
226
 
227
227
 
228
+ def _export_calls_toon(args, result, output_dir: Path):
229
+ """Export calls.toon.yaml (call graph in human-readable toon format).
230
+
231
+ Generates calls.toon.yaml with hubs, modules, and edges sections.
232
+ """
233
+ yaml_exporter = YAMLExporter()
234
+ yaml_exporter.export_calls_toon(result, str(output_dir / 'calls.toon.yaml'))
235
+ if args.verbose:
236
+ print(f" - CALLS (toon format): {output_dir / 'calls.toon.yaml'}")
237
+
238
+
228
239
  def _export_mermaid(args, result, output_dir: Path):
229
240
  """Export Mermaid diagrams + optional PNG generation.
230
241
 
@@ -8,6 +8,7 @@ from .formats import (
8
8
  _export_simple_formats,
9
9
  _export_mermaid,
10
10
  _export_calls,
11
+ _export_calls_toon,
11
12
  _export_evolution,
12
13
  _export_data_structures,
13
14
  _export_context_fallback,
@@ -252,3 +252,75 @@ class YAMLExporter(Exporter):
252
252
  if isinstance(fi.complexity, dict):
253
253
  return fi.complexity.get('cyclomatic_complexity', 0)
254
254
  return fi.complexity or 0
255
+
256
+ def export_calls_toon(self, result: AnalysisResult, output_path: str, max_calls_per_func: int = 10, max_edges: int = 500) -> None:
257
+ """Export call graph as toon.yaml format (human-readable).
258
+
259
+ Generates a human-readable toon format with:
260
+ - Header with project stats
261
+ - HUBS: high-degree functions (many calls in/out)
262
+ - CHAINS: call chains/paths
263
+ - MODULES: functions grouped by module with call relationships
264
+ """
265
+ connected, edges = self._collect_edges(result, max_calls_per_func, max_edges)
266
+ nodes = self._build_nodes(result, connected)
267
+ modules = self._group_by_module(result, connected)
268
+
269
+ # Build toon format sections
270
+ lines = []
271
+ lines.extend(self._render_calls_header(result, nodes, edges, modules))
272
+ lines.append("")
273
+ lines.extend(self._render_hubs(nodes))
274
+ lines.append("")
275
+ lines.extend(self._render_modules(modules, nodes, edges))
276
+ lines.append("")
277
+ lines.extend(self._render_edges(edges))
278
+
279
+ Path(output_path).parent.mkdir(parents=True, exist_ok=True)
280
+ with open(output_path, 'w', encoding='utf-8') as f:
281
+ f.write('\n'.join(lines) + '\n')
282
+
283
+ def _render_calls_header(self, result: AnalysisResult, nodes: Dict, edges: List, modules: Dict) -> List[str]:
284
+ """Render header section for calls.toon.yaml."""
285
+ nfuncs = len(result.functions)
286
+ all_cc = [self._get_cc(fi) for fi in result.functions.values()]
287
+ avg_cc = round(sum(all_cc) / len(all_cc), 1) if all_cc else 0.0
288
+
289
+ return [
290
+ f"# code2llm call graph | {result.project_path}",
291
+ f"# nodes: {len(nodes)} | edges: {len(edges)} | modules: {len(modules)}",
292
+ f"# CC̄={avg_cc}",
293
+ ]
294
+
295
+ def _render_hubs(self, nodes: Dict) -> List[str]:
296
+ """Render high-degree hub functions (sorted by total calls)."""
297
+ hubs = sorted(
298
+ [(name, data) for name, data in nodes.items()],
299
+ key=lambda x: x[1]['calls_in'] + x[1]['calls_out'],
300
+ reverse=True
301
+ )[:20]
302
+
303
+ lines = ['HUBS[20]:']
304
+ for name, data in hubs:
305
+ total_calls = data['calls_in'] + data['calls_out']
306
+ lines.append(f" {name}")
307
+ lines.append(f" CC={data['cyclomatic_complexity']} in:{data['calls_in']} out:{data['calls_out']} total:{total_calls}")
308
+ return lines
309
+
310
+ def _render_modules(self, modules: Dict, nodes: Dict, edges: List) -> List[str]:
311
+ """Render modules section with functions and call relationships."""
312
+ lines = ['MODULES:']
313
+ for module, funcs in sorted(modules.items()):
314
+ lines.append(f" {module} [{len(funcs)} funcs]")
315
+ for func in funcs[:10]: # Show up to 10 funcs per module
316
+ if func in nodes:
317
+ data = nodes[func]
318
+ lines.append(f" {data['name']} CC={data['cyclomatic_complexity']} out:{data['calls_out']}")
319
+ return lines
320
+
321
+ def _render_edges(self, edges: List) -> List[str]:
322
+ """Render call edges section."""
323
+ lines = ['EDGES:']
324
+ for edge in edges[:50]: # Show up to 50 edges
325
+ lines.append(f" {edge['caller']} → {edge['callee']}")
326
+ return lines
@@ -4,7 +4,7 @@ Provides query normalization, intent matching, and entity resolution
4
4
  with multilingual support and fuzzy matching.
5
5
  """
6
6
 
7
- __version__ = "0.5.110"
7
+ __version__ = "0.5.111"
8
8
 
9
9
  from .pipeline import NLPPipeline
10
10
  from .normalization import QueryNormalizer
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code2llm
3
- Version: 0.5.110
3
+ Version: 0.5.111
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
@@ -67,7 +67,7 @@ Dynamic: requires-python
67
67
 
68
68
  ## AI Cost Tracking
69
69
 
70
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.5.110-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
70
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.5.111-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
71
71
  ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-53.7h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
72
72
 
73
73
  - 🤖 **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.110"
7
+ version = "0.5.111"
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"
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
4
4
  import os
5
5
 
6
6
  # Read version
7
- version = "0.5.109"
7
+ version = "0.5.110"
8
8
 
9
9
  # Read long description
10
10
  def read_readme():
File without changes
File without changes
File without changes
File without changes