code2llm 0.5.148__tar.gz → 0.5.150__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 (197) hide show
  1. {code2llm-0.5.148/code2llm.egg-info → code2llm-0.5.150}/PKG-INFO +5 -5
  2. {code2llm-0.5.148 → code2llm-0.5.150}/README.md +4 -4
  3. code2llm-0.5.150/VERSION +1 -0
  4. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/__init__.py +1 -1
  5. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/analysis/call_graph.py +1 -1
  6. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/analysis/cfg.py +0 -1
  7. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/analysis/data_analysis.py +1 -1
  8. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/analysis/dfg.py +1 -1
  9. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/analysis/side_effects.py +1 -1
  10. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/analysis/smells.py +1 -1
  11. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/cli_analysis.py +0 -1
  12. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/cli_exports/formats.py +0 -2
  13. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/cli_exports/orchestrator.py +10 -15
  14. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/cli_exports/orchestrator_handlers.py +1 -2
  15. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/cli_exports/prompt.py +0 -1
  16. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/analyzer.py +2 -3
  17. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/export_pipeline.py +1 -1
  18. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/file_filter.py +2 -1
  19. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/lang/php.py +1 -1
  20. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/lang/ruby.py +0 -1
  21. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/lang/ts_extractors.py +1 -1
  22. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/large_repo.py +1 -1
  23. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/streaming/strategies.py +1 -1
  24. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/streaming_analyzer.py +1 -1
  25. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/article_view.py +0 -1
  26. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/context_exporter.py +1 -1
  27. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/evolution/computation.py +1 -1
  28. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/evolution/yaml_export.py +0 -1
  29. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/flow_exporter.py +3 -6
  30. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/index_generator/scanner.py +1 -1
  31. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/map/details.py +2 -2
  32. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/map/header.py +1 -2
  33. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/map/yaml_export.py +1 -1
  34. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/mermaid/calls.py +0 -1
  35. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/mermaid/compact.py +0 -1
  36. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/mermaid/flow_compact.py +1 -2
  37. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/mermaid/flow_detailed.py +0 -2
  38. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/mermaid/flow_full.py +0 -2
  39. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/project_yaml/core.py +1 -2
  40. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/project_yaml/health.py +1 -1
  41. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/project_yaml/modules.py +0 -1
  42. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/readme_exporter.py +1 -1
  43. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/toon/renderer.py +2 -2
  44. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/llm_flow/generator.py +0 -1
  45. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/llm_flow/nodes.py +1 -1
  46. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/mermaid/png.py +42 -39
  47. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/nlp/__init__.py +1 -1
  48. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/nlp/config.py +1 -1
  49. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/nlp/entity_resolution.py +1 -1
  50. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/nlp/intent_matching.py +1 -2
  51. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/nlp/normalization.py +1 -1
  52. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/nlp/pipeline.py +0 -1
  53. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/patterns/detector.py +0 -1
  54. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/refactor/prompt_engine.py +1 -1
  55. {code2llm-0.5.148 → code2llm-0.5.150/code2llm.egg-info}/PKG-INFO +5 -5
  56. {code2llm-0.5.148 → code2llm-0.5.150}/pyproject.toml +1 -1
  57. code2llm-0.5.148/VERSION +0 -1
  58. {code2llm-0.5.148 → code2llm-0.5.150}/LICENSE +0 -0
  59. {code2llm-0.5.148 → code2llm-0.5.150}/MANIFEST.in +0 -0
  60. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/__main__.py +0 -0
  61. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/analysis/__init__.py +0 -0
  62. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/analysis/coupling.py +0 -0
  63. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/analysis/pipeline_classifier.py +0 -0
  64. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/analysis/pipeline_detector.py +0 -0
  65. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/analysis/pipeline_resolver.py +0 -0
  66. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/analysis/type_inference.py +0 -0
  67. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/analysis/utils/__init__.py +0 -0
  68. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/analysis/utils/ast_helpers.py +0 -0
  69. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/api.py +0 -0
  70. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/cli.py +0 -0
  71. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/cli_commands.py +0 -0
  72. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/cli_exports/__init__.py +0 -0
  73. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/cli_exports/code2logic.py +0 -0
  74. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/cli_exports/orchestrator_chunked.py +0 -0
  75. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/cli_exports/orchestrator_constants.py +0 -0
  76. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/cli_parser.py +0 -0
  77. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/__init__.py +0 -0
  78. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/ast_registry.py +0 -0
  79. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/config.py +0 -0
  80. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/file_analyzer.py +0 -0
  81. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/file_cache.py +0 -0
  82. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/gitignore.py +0 -0
  83. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/incremental.py +0 -0
  84. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/lang/__init__.py +0 -0
  85. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/lang/base.py +0 -0
  86. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/lang/cpp.py +0 -0
  87. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/lang/csharp.py +0 -0
  88. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/lang/generic.py +0 -0
  89. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/lang/go_lang.py +0 -0
  90. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/lang/java.py +0 -0
  91. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/lang/rust.py +0 -0
  92. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/lang/ts_parser.py +0 -0
  93. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/lang/typescript.py +0 -0
  94. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/models.py +0 -0
  95. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/persistent_cache.py +0 -0
  96. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/refactoring.py +0 -0
  97. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/repo_files.py +0 -0
  98. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/streaming/__init__.py +0 -0
  99. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/streaming/cache.py +0 -0
  100. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/streaming/incremental.py +0 -0
  101. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/streaming/prioritizer.py +0 -0
  102. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/streaming/scanner.py +0 -0
  103. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/core/toon_size_manager.py +0 -0
  104. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/__init__.py +0 -0
  105. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/base.py +0 -0
  106. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/context_view.py +0 -0
  107. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/dashboard_data.py +0 -0
  108. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/dashboard_renderer.py +0 -0
  109. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/evolution/__init__.py +0 -0
  110. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/evolution/constants.py +0 -0
  111. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/evolution/exclusion.py +0 -0
  112. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/evolution/render.py +0 -0
  113. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/evolution_exporter.py +0 -0
  114. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/flow_constants.py +0 -0
  115. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/flow_renderer.py +0 -0
  116. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/html_dashboard.py +0 -0
  117. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/index_generator/__init__.py +0 -0
  118. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/index_generator/renderer.py +0 -0
  119. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/index_generator.py +0 -0
  120. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/json_exporter.py +0 -0
  121. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/llm_exporter.py +0 -0
  122. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/map/__init__.py +0 -0
  123. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/map/alerts.py +0 -0
  124. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/map/module_list.py +0 -0
  125. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/map/utils.py +0 -0
  126. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/map_exporter.py +0 -0
  127. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/mermaid/__init__.py +0 -0
  128. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/mermaid/classic.py +0 -0
  129. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/mermaid/utils.py +0 -0
  130. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/mermaid_exporter.py +0 -0
  131. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/mermaid_flow_helpers.py +0 -0
  132. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/project_yaml/__init__.py +0 -0
  133. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/project_yaml/constants.py +0 -0
  134. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/project_yaml/evolution.py +0 -0
  135. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/project_yaml/hotspots.py +0 -0
  136. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/project_yaml_exporter.py +0 -0
  137. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/readme/__init__.py +0 -0
  138. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/readme/content.py +0 -0
  139. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/readme/files.py +0 -0
  140. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/readme/insights.py +0 -0
  141. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/readme/sections.py +0 -0
  142. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/report_generators.py +0 -0
  143. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/toon/__init__.py +0 -0
  144. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/toon/helpers.py +0 -0
  145. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/toon/metrics.py +0 -0
  146. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/toon/metrics_core.py +0 -0
  147. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/toon/metrics_duplicates.py +0 -0
  148. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/toon/metrics_health.py +0 -0
  149. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/toon/module_detail.py +0 -0
  150. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/toon.py +0 -0
  151. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/toon_view.py +0 -0
  152. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/validate_project.py +0 -0
  153. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/exporters/yaml_exporter.py +0 -0
  154. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/__init__.py +0 -0
  155. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/_utils.py +0 -0
  156. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/llm_flow/__init__.py +0 -0
  157. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/llm_flow/analysis.py +0 -0
  158. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/llm_flow/cli.py +0 -0
  159. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/llm_flow/parsing.py +0 -0
  160. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/llm_flow/utils.py +0 -0
  161. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/llm_flow.py +0 -0
  162. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/llm_task.py +0 -0
  163. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/mermaid/__init__.py +0 -0
  164. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/mermaid/fix.py +0 -0
  165. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/mermaid/validation.py +0 -0
  166. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/generators/mermaid.py +0 -0
  167. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/parsers/toon_parser.py +0 -0
  168. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/patterns/__init__.py +0 -0
  169. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm/refactor/__init__.py +0 -0
  170. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm.egg-info/SOURCES.txt +0 -0
  171. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm.egg-info/dependency_links.txt +0 -0
  172. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm.egg-info/entry_points.txt +0 -0
  173. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm.egg-info/requires.txt +0 -0
  174. {code2llm-0.5.148 → code2llm-0.5.150}/code2llm.egg-info/top_level.txt +0 -0
  175. {code2llm-0.5.148 → code2llm-0.5.150}/setup.cfg +0 -0
  176. {code2llm-0.5.148 → code2llm-0.5.150}/setup.py +0 -0
  177. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_advanced_analysis.py +0 -0
  178. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_analyzer.py +0 -0
  179. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_cache_invalidation_e2e.py +0 -0
  180. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_calls_toon_export.py +0 -0
  181. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_declarative_collection.py +0 -0
  182. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_deep_analysis.py +0 -0
  183. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_edge_cases.py +0 -0
  184. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_file_analyzer_tagging.py +0 -0
  185. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_flow_exporter.py +0 -0
  186. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_format_quality.py +0 -0
  187. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_multilanguage_e2e.py +0 -0
  188. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_nlp_pipeline.py +0 -0
  189. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_nonpython_cc_calls.py +0 -0
  190. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_orchestrator_cache_mtime.py +0 -0
  191. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_persistent_cache.py +0 -0
  192. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_pipeline_detector.py +0 -0
  193. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_project_toon_export.py +0 -0
  194. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_prompt_engine.py +0 -0
  195. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_prompt_txt.py +0 -0
  196. {code2llm-0.5.148 → code2llm-0.5.150}/tests/test_refactoring_engine.py +0 -0
  197. {code2llm-0.5.148 → code2llm-0.5.150}/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.148
3
+ Version: 0.5.150
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,11 +66,11 @@ Dynamic: requires-python
66
66
 
67
67
  ## AI Cost Tracking
68
68
 
69
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.5.148-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
70
- ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-73.2h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
69
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.5.150-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
70
+ ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-74.0h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
71
71
 
72
- - 🤖 **LLM usage:** $7.5000 (200 commits)
73
- - 👤 **Human dev:** ~$7319 (73.2h @ $100/h, 30min dedup)
72
+ - 🤖 **LLM usage:** $7.5000 (202 commits)
73
+ - 👤 **Human dev:** ~$7401 (74.0h @ $100/h, 30min dedup)
74
74
 
75
75
  Generated on 2026-05-06 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
76
76
 
@@ -2,11 +2,11 @@
2
2
 
3
3
  ## AI Cost Tracking
4
4
 
5
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.5.148-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
6
- ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-73.2h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
5
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.5.150-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
6
+ ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-74.0h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
7
7
 
8
- - 🤖 **LLM usage:** $7.5000 (200 commits)
9
- - 👤 **Human dev:** ~$7319 (73.2h @ $100/h, 30min dedup)
8
+ - 🤖 **LLM usage:** $7.5000 (202 commits)
9
+ - 👤 **Human dev:** ~$7401 (74.0h @ $100/h, 30min dedup)
10
10
 
11
11
  Generated on 2026-05-06 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
12
12
 
@@ -0,0 +1 @@
1
+ 0.5.150
@@ -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.148"
11
+ __version__ = "0.5.150"
12
12
  __author__ = "STTS Project"
13
13
 
14
14
  # Core analysis components (lightweight, always needed)
@@ -1,7 +1,7 @@
1
1
  """Call graph extractor using AST."""
2
2
 
3
3
  import ast
4
- from typing import Optional, Set, List, Dict
4
+ from typing import Optional
5
5
 
6
6
  from code2llm.core.config import Config
7
7
  from code2llm.core.models import AnalysisResult, FlowEdge
@@ -1,7 +1,6 @@
1
1
  """Control Flow Graph (CFG) extractor using AST."""
2
2
 
3
3
  import ast
4
- from collections import defaultdict
5
4
  from typing import Optional
6
5
 
7
6
  from code2llm.core.config import Config
@@ -6,7 +6,7 @@ This module provides three analyzers:
6
6
  - DataAnalyzer: facade combining both analyzers (backward compatibility)
7
7
  """
8
8
 
9
- from typing import Any, Dict, List, Tuple
9
+ from typing import Any, Dict, Tuple
10
10
  from code2llm.core.models import AnalysisResult
11
11
 
12
12
 
@@ -5,7 +5,7 @@ from collections import defaultdict
5
5
  from typing import Set, Dict, List
6
6
 
7
7
  from code2llm.core.config import Config
8
- from code2llm.core.models import AnalysisResult, FlowEdge, DataFlow, Mutation
8
+ from code2llm.core.models import AnalysisResult, DataFlow, Mutation
9
9
  from code2llm.analysis.utils import ast_unparse
10
10
 
11
11
 
@@ -11,7 +11,7 @@ Used by FlowExporter to enrich CONTRACTS and SIDE_EFFECTS sections.
11
11
 
12
12
  import ast
13
13
  import logging
14
- from typing import Any, Dict, List, Optional, Set
14
+ from typing import Any, Dict, List, Optional
15
15
 
16
16
  from code2llm.core.models import FunctionInfo
17
17
  from code2llm.core.ast_registry import ASTRegistry
@@ -1,6 +1,6 @@
1
1
  """Detection of code smells using analysis metrics."""
2
2
  from collections import defaultdict
3
- from typing import List, Dict, Any
3
+ from typing import List, Dict
4
4
  from code2llm.core.models import AnalysisResult, CodeSmell
5
5
 
6
6
  class SmellDetector:
@@ -5,7 +5,6 @@ Extracted from cli.py to isolate analysis orchestration from CLI parsing.
5
5
 
6
6
  import sys
7
7
  from pathlib import Path
8
- from typing import List, Optional, Tuple
9
8
 
10
9
 
11
10
  def _run_analysis(args, source_path: Path, output_dir: Path):
@@ -1,10 +1,8 @@
1
1
  """Format export functions — toon, map, context, yaml, json, mermaid, evolution, and legacy project-yaml/flow exports."""
2
2
 
3
- import os
4
3
  import sys
5
4
  import time
6
5
  from pathlib import Path
7
- from typing import Optional
8
6
 
9
7
  from code2llm.exporters import (
10
8
  YAMLExporter, JSONExporter, MermaidExporter,
@@ -18,15 +18,7 @@ try:
18
18
  except ImportError:
19
19
  _HAS_TQDM = False
20
20
 
21
- from code2llm.exporters import (
22
- get_exporter,
23
- EXPORT_REGISTRY,
24
- YAMLExporter,
25
- MermaidExporter,
26
- ToonViewGenerator,
27
- IndexHTMLGenerator,
28
- )
29
- from code2llm.exporters.project_yaml.evolution import load_previous_evolution
21
+ from code2llm.exporters import get_exporter
30
22
  from code2llm.core.persistent_cache import PersistentCache
31
23
  from code2llm.core.config import DEFAULT_PROGRESS_BAR_THRESHOLD
32
24
  from .orchestrator_constants import (
@@ -43,10 +35,6 @@ from .orchestrator_handlers import (
43
35
  _export_readme,
44
36
  _export_index_html,
45
37
  )
46
- from .orchestrator_chunked import (
47
- _get_filtered_subprojects,
48
- _process_subproject,
49
- )
50
38
 
51
39
 
52
40
  def _build_export_config(args, formats: List[str]) -> Dict[str, Any]:
@@ -329,8 +317,15 @@ def _inject_generation_time(filepath: Path, elapsed: float) -> None:
329
317
 
330
318
  tag = f"generated in {elapsed:.2f}s"
331
319
 
332
- if suffix in ('.yaml', '.yml', '.mmd', '.export', '.txt') or name.endswith('.toon.yaml'):
333
- # YAML/Mermaid/text: insert '# generated in X.XXs' after first line
320
+ if suffix in ('.mmd', '.export'):
321
+ # Mermaid uses %% for comments
322
+ lines = content.split('\n', 1)
323
+ if len(lines) == 2:
324
+ content = f"{lines[0]}\n%% {tag}\n{lines[1]}"
325
+ else:
326
+ content = f"{lines[0]}\n%% {tag}\n"
327
+ elif suffix in ('.yaml', '.yml', '.txt') or name.endswith('.toon.yaml'):
328
+ # YAML/text: insert '# generated in X.XXs' after first line
334
329
  lines = content.split('\n', 1)
335
330
  if len(lines) == 2:
336
331
  content = f"{lines[0]}\n# {tag}\n{lines[1]}"
@@ -6,7 +6,7 @@ that were extracted from orchestrator.py to reduce its size.
6
6
 
7
7
  import time
8
8
  from pathlib import Path
9
- from typing import Any, Dict, List
9
+ from typing import List
10
10
 
11
11
  from code2llm.exporters import (
12
12
  get_exporter,
@@ -16,7 +16,6 @@ from code2llm.exporters import (
16
16
  IndexHTMLGenerator,
17
17
  )
18
18
  from code2llm.exporters.project_yaml.evolution import load_previous_evolution
19
- from .orchestrator_constants import FORMAT_LABELS
20
19
 
21
20
 
22
21
  def _export_mermaid(args, result, output_dir: Path):
@@ -1,6 +1,5 @@
1
1
  """Prompt generation — prompt.txt for LLM consumption (regular and chunked)."""
2
2
 
3
- import sys
4
3
  import time
5
4
  from pathlib import Path
6
5
  from typing import List, Optional, Tuple
@@ -18,11 +18,10 @@ logger = logging.getLogger(__name__)
18
18
 
19
19
  from .config import (
20
20
  Config, FAST_CONFIG, ALL_EXTENSIONS, ALL_FILENAMES,
21
- LANGUAGE_EXTENSIONS, LANGUAGE_FILENAME_PREFIXES,
21
+ LANGUAGE_FILENAME_PREFIXES,
22
22
  DEFAULT_PROGRESS_BAR_THRESHOLD,
23
23
  )
24
- from .models import AnalysisResult, FlowEdge, FlowNode, Pattern
25
- from code2llm.analysis.call_graph import CallGraphExtractor
24
+ from .models import AnalysisResult, Pattern
26
25
 
27
26
  from .file_cache import FileCache
28
27
  from .file_filter import FastFileFilter
@@ -5,7 +5,7 @@ pre-computes shared data (metrics aggregations, call graph, etc.) and passes
5
5
  it to all exporters in sequence.
6
6
  """
7
7
 
8
- from typing import Any, Dict, List, Optional
8
+ from typing import Any, Dict, List
9
9
 
10
10
  from code2llm.core.models import AnalysisResult
11
11
 
@@ -61,7 +61,8 @@ class FastFileFilter:
61
61
 
62
62
  def should_skip_dir(self, dirname: str) -> bool:
63
63
  """Fast O(1) check: skip this directory entirely during tree walk?"""
64
- return dirname.lower() in _SKIP_DIR_NAMES
64
+ lower = dirname.lower()
65
+ return lower.startswith('.') or lower in _SKIP_DIR_NAMES
65
66
 
66
67
  def _passes_gitignore(self, file_path: str) -> bool:
67
68
  """Check if file passes gitignore patterns (True = pass, False = excluded)."""
@@ -1,6 +1,6 @@
1
1
  import re
2
2
  from typing import Dict, Optional, Tuple
3
- from code2llm.core.models import ClassInfo, FunctionInfo, ModuleInfo
3
+ from code2llm.core.models import ClassInfo
4
4
  from code2llm.core.lang.base import calculate_complexity_regex, extract_calls_regex, _extract_declarations
5
5
 
6
6
  def _parse_php_metadata(content: str, module_name: str, result: Dict) -> Tuple[Optional[str], bool]:
@@ -3,7 +3,6 @@
3
3
  import re
4
4
  from typing import Dict
5
5
 
6
- from code2llm.core.models import ClassInfo, FunctionInfo, ModuleInfo
7
6
  from code2llm.core.lang.base import extract_calls_regex, _extract_declarations
8
7
 
9
8
 
@@ -4,7 +4,7 @@ Each language has specific node types for functions, classes, methods.
4
4
  This module provides unified extraction using tree-sitter queries.
5
5
  """
6
6
 
7
- from typing import Dict, List, Optional, Any
7
+ from typing import Dict, Optional, Any
8
8
  from pathlib import Path
9
9
 
10
10
  from code2llm.core.models import ClassInfo, FunctionInfo, ModuleInfo
@@ -8,7 +8,7 @@ Splitting strategy:
8
8
  """
9
9
 
10
10
  from pathlib import Path
11
- from typing import Dict, List, Optional, Tuple
11
+ from typing import List, Tuple
12
12
  from dataclasses import dataclass, field
13
13
 
14
14
  from .repo_files import (
@@ -1,6 +1,6 @@
1
1
  """Scanning strategies for streaming analyzer."""
2
2
 
3
- from dataclasses import dataclass, field
3
+ from dataclasses import dataclass
4
4
 
5
5
 
6
6
  @dataclass
@@ -10,7 +10,7 @@ Key optimizations:
10
10
 
11
11
  import time
12
12
  from pathlib import Path
13
- from typing import Dict, Iterator, List, Optional, Tuple
13
+ from typing import Dict, Iterator, Optional
14
14
 
15
15
  from .config import Config, FAST_CONFIG
16
16
  from .streaming import (
@@ -4,7 +4,6 @@ Generates status.md from project.yaml data.
4
4
  """
5
5
 
6
6
  from datetime import datetime
7
- from pathlib import Path
8
7
  from typing import Any, Dict, List
9
8
 
10
9
  from code2llm.exporters.base import ViewGeneratorMixin
@@ -8,7 +8,7 @@ from collections import defaultdict
8
8
  from pathlib import Path
9
9
  from typing import Any, Dict, List, Tuple, Optional
10
10
  from .base import BaseExporter, export_format
11
- from code2llm.core.models import AnalysisResult, FunctionInfo
11
+ from code2llm.core.models import AnalysisResult
12
12
  from code2llm.core.config import LANGUAGE_EXTENSIONS
13
13
 
14
14
 
@@ -4,7 +4,7 @@ from collections import defaultdict
4
4
  from pathlib import Path
5
5
  from typing import Any, Dict, List, Optional
6
6
 
7
- from code2llm.core.models import AnalysisResult, FunctionInfo
7
+ from code2llm.core.models import AnalysisResult
8
8
 
9
9
  from .constants import GOD_MODULE_LINES, HUB_TYPE_THRESHOLD, CC_SPLIT_THRESHOLD
10
10
  from .exclusion import is_excluded
@@ -2,7 +2,6 @@
2
2
 
3
3
  import yaml
4
4
  from pathlib import Path
5
- from typing import Any, Dict, List
6
5
 
7
6
  from code2llm.core.models import AnalysisResult
8
7
 
@@ -10,18 +10,15 @@ Sprint 2 (v0.3.1): AST-based type inference and side-effect detection.
10
10
  Sprint 3 (v0.3.2): networkx-based pipeline detection with domain grouping.
11
11
  """
12
12
 
13
- import ast
14
13
  from collections import defaultdict
15
14
  from datetime import datetime
16
15
  from pathlib import Path
17
- from typing import Any, Dict, List, Optional, Set, Tuple
16
+ from typing import Any, Dict, List, Optional
18
17
 
19
18
  from .base import BaseExporter, export_format
20
- from .flow_constants import CC_HIGH, FAN_OUT_THRESHOLD, EXCLUDE_PATTERNS, HUB_SPLIT_RECOMMENDATIONS, HUB_TYPE_THRESHOLD, is_excluded_path
19
+ from .flow_constants import CC_HIGH, FAN_OUT_THRESHOLD, HUB_TYPE_THRESHOLD, is_excluded_path
21
20
  from .flow_renderer import FlowRenderer
22
- from code2llm.core.models import (
23
- AnalysisResult, FunctionInfo, ClassInfo, ModuleInfo, FlowNode
24
- )
21
+ from code2llm.core.models import AnalysisResult, FunctionInfo
25
22
  from code2llm.analysis.type_inference import TypeInferenceEngine
26
23
  from code2llm.analysis.side_effects import SideEffectDetector, SideEffectInfo
27
24
  from code2llm.analysis.pipeline_detector import PipelineDetector, Pipeline
@@ -1,7 +1,7 @@
1
1
  """File Scanner — scans output directory and collects file metadata."""
2
2
 
3
3
  from pathlib import Path
4
- from typing import Any, Dict, List, Tuple
4
+ from typing import Any, Dict, List
5
5
 
6
6
 
7
7
  # File type detection and icons
@@ -1,8 +1,8 @@
1
1
  """Map exporter details — render D: details per module with imports, exports, classes, functions."""
2
2
 
3
- from typing import Any, List
3
+ from typing import List
4
4
 
5
- from code2llm.core.models import AnalysisResult, ModuleInfo, ClassInfo, FunctionInfo
5
+ from code2llm.core.models import AnalysisResult, FunctionInfo
6
6
 
7
7
  from .utils import rel_path
8
8
 
@@ -1,12 +1,11 @@
1
1
  """Map exporter header — render header lines with project stats and alerts."""
2
2
 
3
3
  from datetime import datetime
4
- from pathlib import Path
5
4
  from typing import Any, Dict, List
6
5
 
7
6
  from code2llm.core.models import AnalysisResult, FunctionInfo, ModuleInfo
8
7
 
9
- from .utils import rel_path, count_total_lines, detect_languages
8
+ from .utils import count_total_lines, detect_languages
10
9
  from .alerts import build_alerts, build_hotspots, load_evolution_trend
11
10
 
12
11
 
@@ -6,7 +6,7 @@ from typing import Any, Dict, List
6
6
 
7
7
  import yaml
8
8
 
9
- from code2llm.core.models import AnalysisResult, ModuleInfo
9
+ from code2llm.core.models import AnalysisResult
10
10
 
11
11
  from .utils import file_line_count, detect_languages, count_total_lines, rel_path
12
12
 
@@ -1,7 +1,6 @@
1
1
  """Mermaid calls export — calls.mmd simplified call graph."""
2
2
 
3
3
  from typing import Dict, List, Set, Tuple
4
- from pathlib import Path
5
4
 
6
5
  from code2llm.core.models import AnalysisResult
7
6
 
@@ -2,7 +2,6 @@
2
2
 
3
3
  from collections import defaultdict
4
4
  from typing import Dict, Set, Tuple
5
- from pathlib import Path
6
5
 
7
6
  from code2llm.core.models import AnalysisResult
8
7
 
@@ -2,11 +2,10 @@
2
2
 
3
3
  from collections import defaultdict
4
4
  from typing import Dict, List, Set
5
- from pathlib import Path
6
5
 
7
6
  from code2llm.core.models import AnalysisResult
8
7
 
9
- from .utils import readable_id, safe_module, resolve_callee, write_file, get_cc, build_name_index
8
+ from .utils import readable_id, resolve_callee, write_file, get_cc, build_name_index
10
9
 
11
10
 
12
11
  # Default skip patterns for noise reduction
@@ -1,7 +1,5 @@
1
1
  """Mermaid flow detailed export — flow_detailed.mmd per-module view (~150 nodes)."""
2
2
 
3
- from pathlib import Path
4
-
5
3
  from code2llm.core.models import AnalysisResult
6
4
 
7
5
  from .utils import readable_id, safe_module, resolve_callee, write_file, get_cc, build_name_index
@@ -1,7 +1,5 @@
1
1
  """Mermaid flow full export — flow_full.mmd debug view with all nodes."""
2
2
 
3
- from pathlib import Path
4
-
5
3
  from code2llm.core.models import AnalysisResult
6
4
 
7
5
  from .utils import readable_id, safe_module, resolve_callee, write_file, get_cc, build_name_index
@@ -11,8 +11,7 @@ from code2llm.core.models import AnalysisResult
11
11
  from code2llm.core.config import LANGUAGE_EXTENSIONS
12
12
  from code2llm.exporters.base import BaseExporter, export_format
13
13
 
14
- from code2llm.exporters.toon.helpers import _is_excluded, _scan_line_counts, _rel_path
15
- from .constants import GOD_MODULE_LINES
14
+ from code2llm.exporters.toon.helpers import _is_excluded, _scan_line_counts
16
15
  from .health import build_health
17
16
  from .modules import build_modules
18
17
  from .hotspots import build_hotspots, build_refactoring
@@ -3,7 +3,7 @@
3
3
  from collections import defaultdict
4
4
  from typing import Any, Dict, List
5
5
 
6
- from code2llm.core.models import AnalysisResult, ClassInfo, FunctionInfo
6
+ from code2llm.core.models import AnalysisResult
7
7
  from code2llm.exporters.toon.helpers import _is_excluded
8
8
  from .constants import CC_CRITICAL, CC_WARNING, CC_ERROR, CC_SEVERE, FAN_OUT_THRESHOLD, FAN_OUT_ERROR, FAN_OUT_SEVERE
9
9
 
@@ -1,7 +1,6 @@
1
1
  """Module metrics builder for project.yaml."""
2
2
 
3
3
  from collections import defaultdict
4
- from pathlib import Path
5
4
  from typing import Any, Dict, List, Tuple
6
5
 
7
6
  from code2llm.core.models import AnalysisResult, ClassInfo, FunctionInfo
@@ -10,7 +10,7 @@ Implementation has been split into:
10
10
  """
11
11
 
12
12
  from pathlib import Path
13
- from typing import Any, Dict, Optional
13
+ from typing import Any, Optional
14
14
 
15
15
  from .base import BaseExporter, export_format
16
16
  from .readme import (
@@ -4,10 +4,10 @@ from collections import defaultdict
4
4
  from pathlib import Path
5
5
  from typing import Any, Dict, List
6
6
 
7
- from code2llm.core.models import AnalysisResult, FunctionInfo
7
+ from code2llm.core.models import AnalysisResult
8
8
  from code2llm.core.config import LANGUAGE_EXTENSIONS
9
9
 
10
- from .helpers import _dup_file_set, _package_of
10
+ from .helpers import _dup_file_set
11
11
 
12
12
 
13
13
  # Constants
@@ -5,7 +5,6 @@ from typing import Any, Dict, List
5
5
  from .utils import _as_dict, _as_list, _shorten
6
6
  from .nodes import _collect_nodes, _collect_entrypoints, _collect_functions
7
7
  from .analysis import (
8
- FuncSummary,
9
8
  _summarize_functions,
10
9
  _pick_relevant_functions,
11
10
  )
@@ -1,7 +1,7 @@
1
1
  """LLM Flow node collection — collect and analyze CFG nodes."""
2
2
 
3
3
  from collections import defaultdict
4
- from typing import Any, Dict, List, Optional, Set, Tuple
4
+ from typing import Any, Dict, List, Optional, Set
5
5
 
6
6
  from .parsing import _parse_func_label
7
7