code2llm 0.5.147__tar.gz → 0.5.149__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.147/code2llm.egg-info → code2llm-0.5.149}/PKG-INFO +5 -6
- {code2llm-0.5.147 → code2llm-0.5.149}/README.md +4 -5
- code2llm-0.5.149/VERSION +1 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/__init__.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/analysis/call_graph.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/analysis/cfg.py +0 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/analysis/data_analysis.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/analysis/dfg.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/analysis/side_effects.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/analysis/smells.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/cli_analysis.py +0 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/cli_exports/formats.py +0 -2
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/cli_exports/orchestrator.py +10 -15
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/cli_exports/orchestrator_handlers.py +1 -2
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/cli_exports/prompt.py +0 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/analyzer.py +2 -3
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/export_pipeline.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/file_filter.py +2 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/lang/php.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/lang/ruby.py +0 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/lang/ts_extractors.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/large_repo.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/refactoring.py +3 -2
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/streaming/strategies.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/streaming_analyzer.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/article_view.py +0 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/context_exporter.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/evolution/computation.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/evolution/yaml_export.py +0 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/flow_exporter.py +3 -6
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/index_generator/scanner.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/map/details.py +2 -2
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/map/header.py +1 -2
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/map/utils.py +3 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/map/yaml_export.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/mermaid/calls.py +0 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/mermaid/compact.py +0 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/mermaid/flow_compact.py +18 -5
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/mermaid/flow_detailed.py +0 -2
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/mermaid/flow_full.py +0 -2
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/project_yaml/core.py +1 -2
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/project_yaml/health.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/project_yaml/modules.py +0 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/readme_exporter.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/toon/renderer.py +2 -2
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/llm_flow/generator.py +0 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/llm_flow/nodes.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/mermaid/png.py +42 -39
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/nlp/__init__.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/nlp/config.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/nlp/entity_resolution.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/nlp/intent_matching.py +1 -2
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/nlp/normalization.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/nlp/pipeline.py +0 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/patterns/detector.py +0 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/refactor/prompt_engine.py +1 -1
- {code2llm-0.5.147 → code2llm-0.5.149/code2llm.egg-info}/PKG-INFO +5 -6
- {code2llm-0.5.147 → code2llm-0.5.149}/pyproject.toml +1 -1
- code2llm-0.5.147/VERSION +0 -1
- {code2llm-0.5.147 → code2llm-0.5.149}/LICENSE +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/MANIFEST.in +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/__main__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/analysis/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/analysis/coupling.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/analysis/pipeline_classifier.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/analysis/pipeline_detector.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/analysis/pipeline_resolver.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/analysis/type_inference.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/analysis/utils/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/analysis/utils/ast_helpers.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/api.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/cli.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/cli_commands.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/cli_exports/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/cli_exports/code2logic.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/cli_exports/orchestrator_chunked.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/cli_exports/orchestrator_constants.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/cli_parser.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/ast_registry.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/config.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/file_analyzer.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/file_cache.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/gitignore.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/incremental.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/lang/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/lang/base.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/lang/cpp.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/lang/csharp.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/lang/generic.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/lang/go_lang.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/lang/java.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/lang/rust.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/lang/ts_parser.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/lang/typescript.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/models.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/persistent_cache.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/repo_files.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/streaming/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/streaming/cache.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/streaming/incremental.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/streaming/prioritizer.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/streaming/scanner.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/core/toon_size_manager.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/base.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/context_view.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/dashboard_data.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/dashboard_renderer.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/evolution/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/evolution/constants.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/evolution/exclusion.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/evolution/render.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/evolution_exporter.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/flow_constants.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/flow_renderer.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/html_dashboard.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/index_generator/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/index_generator/renderer.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/index_generator.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/json_exporter.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/llm_exporter.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/map/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/map/alerts.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/map/module_list.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/map_exporter.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/mermaid/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/mermaid/classic.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/mermaid/utils.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/mermaid_exporter.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/mermaid_flow_helpers.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/project_yaml/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/project_yaml/constants.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/project_yaml/evolution.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/project_yaml/hotspots.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/project_yaml_exporter.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/readme/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/readme/content.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/readme/files.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/readme/insights.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/readme/sections.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/report_generators.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/toon/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/toon/helpers.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/toon/metrics.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/toon/metrics_core.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/toon/metrics_duplicates.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/toon/metrics_health.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/toon/module_detail.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/toon.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/toon_view.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/validate_project.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/exporters/yaml_exporter.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/_utils.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/llm_flow/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/llm_flow/analysis.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/llm_flow/cli.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/llm_flow/parsing.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/llm_flow/utils.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/llm_flow.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/llm_task.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/mermaid/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/mermaid/fix.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/mermaid/validation.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/generators/mermaid.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/parsers/toon_parser.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/patterns/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm/refactor/__init__.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm.egg-info/SOURCES.txt +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm.egg-info/dependency_links.txt +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm.egg-info/entry_points.txt +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm.egg-info/requires.txt +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/code2llm.egg-info/top_level.txt +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/setup.cfg +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/setup.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_advanced_analysis.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_analyzer.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_cache_invalidation_e2e.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_calls_toon_export.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_declarative_collection.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_deep_analysis.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_edge_cases.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_file_analyzer_tagging.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_flow_exporter.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_format_quality.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_multilanguage_e2e.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_nlp_pipeline.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_nonpython_cc_calls.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_orchestrator_cache_mtime.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_persistent_cache.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_pipeline_detector.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_project_toon_export.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_prompt_engine.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_prompt_txt.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/tests/test_refactoring_engine.py +0 -0
- {code2llm-0.5.147 → code2llm-0.5.149}/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.149
|
|
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,17 +66,16 @@ Dynamic: requires-python
|
|
|
66
66
|
|
|
67
67
|
## AI Cost Tracking
|
|
68
68
|
|
|
69
|
-
     
|
|
70
|
+
  
|
|
71
71
|
|
|
72
|
-
- 🤖 **LLM usage:** $7.5000 (
|
|
73
|
-
- 👤 **Human dev:** ~$
|
|
72
|
+
- 🤖 **LLM usage:** $7.5000 (201 commits)
|
|
73
|
+
- 👤 **Human dev:** ~$7331 (73.3h @ $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
|
|
|
77
77
|
---
|
|
78
78
|
|
|
79
|
-
|
|
80
79
|
<!-- generated in 0.00s -->
|
|
81
80
|
|
|
82
81
|
This directory contains the complete analysis of your project generated by `code2llm`. Each file serves a specific purpose for understanding, refactoring, and documenting your codebase.
|
|
@@ -2,17 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
## AI Cost Tracking
|
|
4
4
|
|
|
5
|
-
     
|
|
6
|
+
  
|
|
7
7
|
|
|
8
|
-
- 🤖 **LLM usage:** $7.5000 (
|
|
9
|
-
- 👤 **Human dev:** ~$
|
|
8
|
+
- 🤖 **LLM usage:** $7.5000 (201 commits)
|
|
9
|
+
- 👤 **Human dev:** ~$7331 (73.3h @ $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
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
-
|
|
16
15
|
<!-- generated in 0.00s -->
|
|
17
16
|
|
|
18
17
|
This directory contains the complete analysis of your project generated by `code2llm`. Each file serves a specific purpose for understanding, refactoring, and documenting your codebase.
|
code2llm-0.5.149/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.5.149
|
|
@@ -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.149"
|
|
12
12
|
__author__ = "STTS Project"
|
|
13
13
|
|
|
14
14
|
# Core analysis components (lightweight, always needed)
|
|
@@ -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,
|
|
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
|
|
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,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 ('.
|
|
333
|
-
#
|
|
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
|
|
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):
|
|
@@ -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
|
-
|
|
21
|
+
LANGUAGE_FILENAME_PREFIXES,
|
|
22
22
|
DEFAULT_PROGRESS_BAR_THRESHOLD,
|
|
23
23
|
)
|
|
24
|
-
from .models import AnalysisResult,
|
|
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
|
|
@@ -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
|
-
|
|
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
|
|
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]:
|
|
@@ -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,
|
|
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
|
|
@@ -82,8 +82,9 @@ class RefactoringAnalyzer:
|
|
|
82
82
|
if node_count > 500:
|
|
83
83
|
if self.config.verbose:
|
|
84
84
|
print(f" Large graph ({node_count} nodes), using sampled centrality...")
|
|
85
|
-
# Sample 20%
|
|
86
|
-
|
|
85
|
+
# Sample adaptively: 10% for large, 20% for medium, cap at 200
|
|
86
|
+
ratio = 0.1 if node_count > 2000 else 0.2
|
|
87
|
+
k = min(int(node_count * ratio), 200)
|
|
87
88
|
import networkx as nx
|
|
88
89
|
centrality = nx.betweenness_centrality(call_graph, k=k)
|
|
89
90
|
else:
|
|
@@ -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
|
|
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
|
|
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
|
|
@@ -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
|
|
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,
|
|
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,8 +1,8 @@
|
|
|
1
1
|
"""Map exporter details — render D: details per module with imports, exports, classes, functions."""
|
|
2
2
|
|
|
3
|
-
from typing import
|
|
3
|
+
from typing import List
|
|
4
4
|
|
|
5
|
-
from code2llm.core.models import AnalysisResult,
|
|
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
|
|
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
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Map exporter utilities — path handling, line counting, language detection."""
|
|
2
2
|
|
|
3
|
+
from functools import lru_cache
|
|
3
4
|
from pathlib import Path
|
|
4
5
|
from typing import Dict, Set
|
|
5
6
|
from collections import defaultdict
|
|
@@ -8,6 +9,7 @@ from code2llm.core.config import LANGUAGE_EXTENSIONS
|
|
|
8
9
|
from code2llm.core.models import AnalysisResult
|
|
9
10
|
|
|
10
11
|
|
|
12
|
+
@lru_cache(maxsize=4096)
|
|
11
13
|
def rel_path(fpath: str, project_path: str) -> str:
|
|
12
14
|
"""Get relative path from project root."""
|
|
13
15
|
if not project_path or not fpath:
|
|
@@ -21,6 +23,7 @@ def rel_path(fpath: str, project_path: str) -> str:
|
|
|
21
23
|
return fpath
|
|
22
24
|
|
|
23
25
|
|
|
26
|
+
@lru_cache(maxsize=4096)
|
|
24
27
|
def file_line_count(fpath: str) -> int:
|
|
25
28
|
"""Count lines in a file."""
|
|
26
29
|
try:
|
|
@@ -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,
|
|
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
|
|
@@ -21,6 +20,21 @@ def should_skip_module(module: str, include_examples: bool = False) -> bool:
|
|
|
21
20
|
return any(pat in mod_lower for pat in SKIP_PATTERNS)
|
|
22
21
|
|
|
23
22
|
|
|
23
|
+
# Pre-computed set of functions that have at least one incoming call
|
|
24
|
+
_called_funcs_cache: Dict[int, Set[str]] = {}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _get_called_funcs(result: AnalysisResult) -> Set[str]:
|
|
28
|
+
"""Build (and cache) the set of all functions called by other functions."""
|
|
29
|
+
rid = id(result)
|
|
30
|
+
if rid not in _called_funcs_cache:
|
|
31
|
+
called: Set[str] = set()
|
|
32
|
+
for fi in result.functions.values():
|
|
33
|
+
called.update(fi.calls)
|
|
34
|
+
_called_funcs_cache[rid] = called
|
|
35
|
+
return _called_funcs_cache[rid]
|
|
36
|
+
|
|
37
|
+
|
|
24
38
|
def is_entry_point(func_name: str, fi, result: AnalysisResult) -> bool:
|
|
25
39
|
"""Detect if function is an entry point (main, cli, api entry)."""
|
|
26
40
|
name = fi.name
|
|
@@ -36,9 +50,8 @@ def is_entry_point(func_name: str, fi, result: AnalysisResult) -> bool:
|
|
|
36
50
|
if func_name.startswith('code2llm.api.'):
|
|
37
51
|
return True
|
|
38
52
|
# Entry points have no incoming calls from within the project
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if not has_incoming and name not in ('__init__', '__getattr__'):
|
|
53
|
+
called_funcs = _get_called_funcs(result)
|
|
54
|
+
if func_name not in called_funcs and name not in ('__init__', '__getattr__'):
|
|
42
55
|
return True
|
|
43
56
|
return False
|
|
44
57
|
|
|
@@ -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
|
|
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
|
|
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
|
|
|
@@ -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
|
|
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
|
|
10
|
+
from .helpers import _dup_file_set
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
# Constants
|