code2llm 0.5.134__tar.gz → 0.5.136__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.134/code2llm.egg-info → code2llm-0.5.136}/PKG-INFO +11 -9
- {code2llm-0.5.134 → code2llm-0.5.136}/README.md +10 -8
- code2llm-0.5.136/VERSION +1 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/__init__.py +1 -1
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/mermaid/calls.py +5 -2
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/mermaid/classic.py +7 -4
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/mermaid/compact.py +5 -2
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/mermaid/flow_compact.py +15 -13
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/mermaid/flow_detailed.py +5 -2
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/mermaid/flow_full.py +5 -2
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/mermaid/utils.py +25 -4
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/mermaid_flow_helpers.py +3 -2
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/yaml_exporter.py +1 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/nlp/__init__.py +1 -1
- {code2llm-0.5.134 → code2llm-0.5.136/code2llm.egg-info}/PKG-INFO +11 -9
- {code2llm-0.5.134 → code2llm-0.5.136}/pyproject.toml +1 -1
- code2llm-0.5.134/VERSION +0 -1
- {code2llm-0.5.134 → code2llm-0.5.136}/LICENSE +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/MANIFEST.in +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/__main__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/analysis/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/analysis/call_graph.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/analysis/cfg.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/analysis/coupling.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/analysis/data_analysis.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/analysis/dfg.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/analysis/pipeline_classifier.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/analysis/pipeline_detector.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/analysis/pipeline_resolver.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/analysis/side_effects.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/analysis/smells.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/analysis/type_inference.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/analysis/utils/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/analysis/utils/ast_helpers.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/api.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/cli.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/cli_analysis.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/cli_commands.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/cli_exports/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/cli_exports/code2logic.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/cli_exports/formats.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/cli_exports/orchestrator.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/cli_exports/orchestrator_chunked.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/cli_exports/orchestrator_constants.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/cli_exports/orchestrator_handlers.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/cli_exports/prompt.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/cli_parser.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/analyzer.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/ast_registry.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/config.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/export_pipeline.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/file_analyzer.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/file_cache.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/file_filter.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/gitignore.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/incremental.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/lang/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/lang/base.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/lang/cpp.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/lang/csharp.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/lang/generic.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/lang/go_lang.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/lang/java.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/lang/php.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/lang/ruby.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/lang/rust.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/lang/ts_extractors.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/lang/ts_parser.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/lang/typescript.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/large_repo.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/models.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/persistent_cache.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/refactoring.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/repo_files.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/streaming/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/streaming/cache.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/streaming/incremental.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/streaming/prioritizer.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/streaming/scanner.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/streaming/strategies.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/streaming_analyzer.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/core/toon_size_manager.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/article_view.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/base.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/context_exporter.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/context_view.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/dashboard_data.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/dashboard_renderer.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/evolution/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/evolution/computation.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/evolution/constants.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/evolution/exclusion.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/evolution/render.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/evolution/yaml_export.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/evolution_exporter.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/flow_constants.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/flow_exporter.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/flow_renderer.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/html_dashboard.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/index_generator/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/index_generator/renderer.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/index_generator/scanner.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/index_generator.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/json_exporter.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/llm_exporter.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/map/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/map/alerts.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/map/details.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/map/header.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/map/module_list.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/map/utils.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/map/yaml_export.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/map_exporter.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/mermaid/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/mermaid_exporter.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/project_yaml/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/project_yaml/constants.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/project_yaml/core.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/project_yaml/evolution.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/project_yaml/health.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/project_yaml/hotspots.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/project_yaml/modules.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/project_yaml_exporter.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/readme/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/readme/content.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/readme/files.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/readme/insights.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/readme/sections.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/readme_exporter.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/report_generators.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/toon/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/toon/helpers.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/toon/metrics.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/toon/metrics_core.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/toon/metrics_duplicates.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/toon/metrics_health.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/toon/module_detail.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/toon/renderer.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/toon.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/toon_view.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/exporters/validate_project.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/_utils.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/llm_flow/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/llm_flow/analysis.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/llm_flow/cli.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/llm_flow/generator.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/llm_flow/nodes.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/llm_flow/parsing.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/llm_flow/utils.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/llm_flow.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/llm_task.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/mermaid/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/mermaid/fix.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/mermaid/png.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/mermaid/validation.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/generators/mermaid.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/nlp/config.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/nlp/entity_resolution.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/nlp/intent_matching.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/nlp/normalization.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/nlp/pipeline.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/parsers/toon_parser.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/patterns/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/patterns/detector.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/refactor/__init__.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm/refactor/prompt_engine.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm.egg-info/SOURCES.txt +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm.egg-info/dependency_links.txt +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm.egg-info/entry_points.txt +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm.egg-info/requires.txt +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/code2llm.egg-info/top_level.txt +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/setup.cfg +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/setup.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_advanced_analysis.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_analyzer.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_calls_toon_export.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_deep_analysis.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_edge_cases.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_flow_exporter.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_format_quality.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_multilanguage_e2e.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_nlp_pipeline.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_nonpython_cc_calls.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_persistent_cache.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_pipeline_detector.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_project_toon_export.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_prompt_engine.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_prompt_txt.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/tests/test_refactoring_engine.py +0 -0
- {code2llm-0.5.134 → code2llm-0.5.136}/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.136
|
|
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,16 +67,18 @@ Dynamic: requires-python
|
|
|
67
67
|
|
|
68
68
|
## AI Cost Tracking
|
|
69
69
|
|
|
70
|
-
    
|
|
71
|
+
  
|
|
72
72
|
|
|
73
|
-
- 🤖 **LLM usage:** $
|
|
74
|
-
- 👤 **Human dev:** ~$
|
|
73
|
+
- 🤖 **LLM usage:** $7.5000 (188 commits)
|
|
74
|
+
- 👤 **Human dev:** ~$6526 (65.3h @ $100/h, 30min dedup)
|
|
75
75
|
|
|
76
76
|
Generated on 2026-04-20 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
|
|
77
77
|
|
|
78
78
|
---
|
|
79
79
|
|
|
80
|
+
|
|
81
|
+
|
|
80
82
|
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.
|
|
81
83
|
|
|
82
84
|
## 📁 Generated Files Overview
|
|
@@ -404,10 +406,10 @@ code2llm ./ -f yaml --separate-orphans
|
|
|
404
406
|
---
|
|
405
407
|
|
|
406
408
|
**Generated by**: `code2llm ./ -f all --readme`
|
|
407
|
-
**Analysis Date**: 2026-04-
|
|
408
|
-
**Total Functions**:
|
|
409
|
-
**Total Classes**:
|
|
410
|
-
**Modules**:
|
|
409
|
+
**Analysis Date**: 2026-04-20
|
|
410
|
+
**Total Functions**: 2124
|
|
411
|
+
**Total Classes**: 241
|
|
412
|
+
**Modules**: 359
|
|
411
413
|
|
|
412
414
|
For more information about code2llm, visit: https://github.com/tom-sapletta/code2llm
|
|
413
415
|
|
|
@@ -3,16 +3,18 @@
|
|
|
3
3
|
|
|
4
4
|
## AI Cost Tracking
|
|
5
5
|
|
|
6
|
-
    
|
|
7
|
+
  
|
|
8
8
|
|
|
9
|
-
- 🤖 **LLM usage:** $
|
|
10
|
-
- 👤 **Human dev:** ~$
|
|
9
|
+
- 🤖 **LLM usage:** $7.5000 (188 commits)
|
|
10
|
+
- 👤 **Human dev:** ~$6526 (65.3h @ $100/h, 30min dedup)
|
|
11
11
|
|
|
12
12
|
Generated on 2026-04-20 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
+
|
|
17
|
+
|
|
16
18
|
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.
|
|
17
19
|
|
|
18
20
|
## 📁 Generated Files Overview
|
|
@@ -340,10 +342,10 @@ code2llm ./ -f yaml --separate-orphans
|
|
|
340
342
|
---
|
|
341
343
|
|
|
342
344
|
**Generated by**: `code2llm ./ -f all --readme`
|
|
343
|
-
**Analysis Date**: 2026-04-
|
|
344
|
-
**Total Functions**:
|
|
345
|
-
**Total Classes**:
|
|
346
|
-
**Modules**:
|
|
345
|
+
**Analysis Date**: 2026-04-20
|
|
346
|
+
**Total Functions**: 2124
|
|
347
|
+
**Total Classes**: 241
|
|
348
|
+
**Modules**: 359
|
|
347
349
|
|
|
348
350
|
For more information about code2llm, visit: https://github.com/tom-sapletta/code2llm
|
|
349
351
|
|
code2llm-0.5.136/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.5.136
|
|
@@ -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.136"
|
|
12
12
|
__author__ = "STTS Project"
|
|
13
13
|
|
|
14
14
|
# Core analysis components (lightweight, always needed)
|
|
@@ -5,19 +5,22 @@ from pathlib import Path
|
|
|
5
5
|
|
|
6
6
|
from code2llm.core.models import AnalysisResult
|
|
7
7
|
|
|
8
|
-
from .utils import readable_id, safe_module, resolve_callee, write_file
|
|
8
|
+
from .utils import readable_id, safe_module, resolve_callee, write_file, build_name_index
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
def export_calls(result: AnalysisResult, output_path: str) -> None:
|
|
12
12
|
"""Export simplified call graph — only connected nodes."""
|
|
13
13
|
lines = ["flowchart LR"]
|
|
14
14
|
|
|
15
|
+
# Build name index for O(1) callee resolution
|
|
16
|
+
name_index = build_name_index(result.functions)
|
|
17
|
+
|
|
15
18
|
# Collect connected nodes first
|
|
16
19
|
connected: Set[str] = set()
|
|
17
20
|
edges: List[Tuple[str, str]] = []
|
|
18
21
|
for func_name, fi in result.functions.items():
|
|
19
22
|
for callee in fi.calls[:10]:
|
|
20
|
-
resolved = resolve_callee(callee, result.functions)
|
|
23
|
+
resolved = resolve_callee(callee, result.functions, name_index)
|
|
21
24
|
if resolved and resolved != func_name:
|
|
22
25
|
connected.add(func_name)
|
|
23
26
|
connected.add(resolved)
|
|
@@ -5,18 +5,21 @@ from pathlib import Path
|
|
|
5
5
|
|
|
6
6
|
from code2llm.core.models import AnalysisResult
|
|
7
7
|
|
|
8
|
-
from .utils import readable_id, safe_module, resolve_callee, write_file, get_cc
|
|
8
|
+
from .utils import readable_id, safe_module, resolve_callee, write_file, get_cc, build_name_index
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
def export_classic(result: AnalysisResult, output_path: str) -> Optional[Path]:
|
|
12
12
|
"""Export full flow diagram with CC-based node shapes and styling."""
|
|
13
13
|
lines = ["flowchart TD"]
|
|
14
14
|
|
|
15
|
+
# Build name index for O(1) callee resolution
|
|
16
|
+
name_index = build_name_index(result.functions)
|
|
17
|
+
|
|
15
18
|
# Subgraphs per module
|
|
16
19
|
_render_subgraphs(result, lines)
|
|
17
20
|
|
|
18
21
|
# Edges — all cross-function calls
|
|
19
|
-
_render_edges(result, lines, limit=600)
|
|
22
|
+
_render_edges(result, lines, name_index, limit=600)
|
|
20
23
|
|
|
21
24
|
# CC-based styling
|
|
22
25
|
_render_cc_styles(result, lines)
|
|
@@ -48,13 +51,13 @@ def _render_subgraphs(result: AnalysisResult, lines: List[str]) -> None:
|
|
|
48
51
|
lines.append(" end")
|
|
49
52
|
|
|
50
53
|
|
|
51
|
-
def _render_edges(result: AnalysisResult, lines: List[str], limit: int = 600) -> None:
|
|
54
|
+
def _render_edges(result: AnalysisResult, lines: List[str], name_index: Dict[str, List[str]], limit: int = 600) -> None:
|
|
52
55
|
"""Render cross-function call edges up to limit."""
|
|
53
56
|
seen_edges: Set[Tuple[str, str]] = set()
|
|
54
57
|
for func_name, fi in result.functions.items():
|
|
55
58
|
src = readable_id(func_name)
|
|
56
59
|
for callee in fi.calls[:15]:
|
|
57
|
-
resolved = resolve_callee(callee, result.functions)
|
|
60
|
+
resolved = resolve_callee(callee, result.functions, name_index)
|
|
58
61
|
if resolved and resolved != func_name:
|
|
59
62
|
dst = readable_id(resolved)
|
|
60
63
|
edge = (src, dst)
|
|
@@ -6,7 +6,7 @@ from pathlib import Path
|
|
|
6
6
|
|
|
7
7
|
from code2llm.core.models import AnalysisResult
|
|
8
8
|
|
|
9
|
-
from .utils import safe_module, resolve_callee, write_file
|
|
9
|
+
from .utils import safe_module, resolve_callee, write_file, build_name_index
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
def export_compact(result: AnalysisResult, output_path: str) -> None:
|
|
@@ -14,6 +14,9 @@ def export_compact(result: AnalysisResult, output_path: str) -> None:
|
|
|
14
14
|
lines = ["flowchart TD"]
|
|
15
15
|
|
|
16
16
|
from .utils import module_of
|
|
17
|
+
# Build name index for O(1) callee resolution
|
|
18
|
+
name_index = build_name_index(result.functions)
|
|
19
|
+
|
|
17
20
|
# Compute module stats
|
|
18
21
|
mod_funcs: Dict[str, int] = defaultdict(int)
|
|
19
22
|
mod_lines: Dict[str, int] = defaultdict(int)
|
|
@@ -27,7 +30,7 @@ def export_compact(result: AnalysisResult, output_path: str) -> None:
|
|
|
27
30
|
for func_name, fi in result.functions.items():
|
|
28
31
|
src_mod = module_of(func_name)
|
|
29
32
|
for callee in fi.calls:
|
|
30
|
-
resolved = resolve_callee(callee, result.functions)
|
|
33
|
+
resolved = resolve_callee(callee, result.functions, name_index)
|
|
31
34
|
if resolved:
|
|
32
35
|
dst_mod = module_of(resolved)
|
|
33
36
|
if dst_mod != src_mod:
|
|
@@ -6,7 +6,7 @@ from pathlib import Path
|
|
|
6
6
|
|
|
7
7
|
from code2llm.core.models import AnalysisResult
|
|
8
8
|
|
|
9
|
-
from .utils import readable_id, safe_module, resolve_callee, write_file, get_cc
|
|
9
|
+
from .utils import readable_id, safe_module, resolve_callee, write_file, get_cc, build_name_index
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
# Default skip patterns for noise reduction
|
|
@@ -43,30 +43,30 @@ def is_entry_point(func_name: str, fi, result: AnalysisResult) -> bool:
|
|
|
43
43
|
return False
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
def build_callers_graph(result: AnalysisResult) -> Dict[str, Set[str]]:
|
|
46
|
+
def build_callers_graph(result: AnalysisResult, name_index: Dict[str, List[str]]) -> Dict[str, Set[str]]:
|
|
47
47
|
"""Build reverse graph: map each function to its callers."""
|
|
48
48
|
callers: Dict[str, Set[str]] = defaultdict(set)
|
|
49
49
|
for func_name, fi in result.functions.items():
|
|
50
50
|
for callee in fi.calls:
|
|
51
|
-
resolved = resolve_callee(callee, result.functions)
|
|
51
|
+
resolved = resolve_callee(callee, result.functions, name_index)
|
|
52
52
|
if resolved:
|
|
53
53
|
callers[resolved].add(func_name)
|
|
54
54
|
return callers
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
def find_leaves(result: AnalysisResult) -> Set[str]:
|
|
57
|
+
def find_leaves(result: AnalysisResult, name_index: Dict[str, List[str]]) -> Set[str]:
|
|
58
58
|
"""Find leaf nodes (functions that don't call other project functions)."""
|
|
59
59
|
leaves = set()
|
|
60
60
|
for func_name, fi in result.functions.items():
|
|
61
61
|
has_internal_call = any(
|
|
62
|
-
resolve_callee(c, result.functions) for c in fi.calls
|
|
62
|
+
resolve_callee(c, result.functions, name_index) for c in fi.calls
|
|
63
63
|
)
|
|
64
64
|
if not has_internal_call:
|
|
65
65
|
leaves.add(func_name)
|
|
66
66
|
return leaves
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
def _longest_path_dfs(result: AnalysisResult, start: str, visited: Set[str]) -> List[str]:
|
|
69
|
+
def _longest_path_dfs(result: AnalysisResult, start: str, visited: Set[str], name_index: Dict[str, List[str]]) -> List[str]:
|
|
70
70
|
"""DFS to find longest path from start node."""
|
|
71
71
|
if start in visited:
|
|
72
72
|
return []
|
|
@@ -77,21 +77,21 @@ def _longest_path_dfs(result: AnalysisResult, start: str, visited: Set[str]) ->
|
|
|
77
77
|
|
|
78
78
|
longest: List[str] = []
|
|
79
79
|
for callee in fi.calls:
|
|
80
|
-
resolved = resolve_callee(callee, result.functions)
|
|
80
|
+
resolved = resolve_callee(callee, result.functions, name_index)
|
|
81
81
|
if resolved and resolved not in visited:
|
|
82
|
-
path = _longest_path_dfs(result, resolved, visited)
|
|
82
|
+
path = _longest_path_dfs(result, resolved, visited, name_index)
|
|
83
83
|
if len(path) > len(longest):
|
|
84
84
|
longest = path
|
|
85
85
|
|
|
86
86
|
return [start] + longest
|
|
87
87
|
|
|
88
88
|
|
|
89
|
-
def _select_longest_path(result: AnalysisResult, entry_points: List[str]) -> List[str]:
|
|
89
|
+
def _select_longest_path(result: AnalysisResult, entry_points: List[str], name_index: Dict[str, List[str]]) -> List[str]:
|
|
90
90
|
"""Select the longest path from all entry points."""
|
|
91
91
|
max_path: List[str] = []
|
|
92
92
|
for ep in entry_points:
|
|
93
93
|
if ep in result.functions:
|
|
94
|
-
path = _longest_path_dfs(result, ep, set())
|
|
94
|
+
path = _longest_path_dfs(result, ep, set(), name_index)
|
|
95
95
|
if len(path) > len(max_path):
|
|
96
96
|
max_path = path
|
|
97
97
|
return max_path
|
|
@@ -101,11 +101,13 @@ def find_critical_path(result: AnalysisResult, entry_points: List[str]) -> Set[s
|
|
|
101
101
|
"""Find the longest path from entry points (critical path)."""
|
|
102
102
|
if not entry_points:
|
|
103
103
|
return set()
|
|
104
|
+
# Build name index for O(1) resolution
|
|
105
|
+
name_index = build_name_index(result.functions)
|
|
104
106
|
# Build data structures
|
|
105
|
-
build_callers_graph(result)
|
|
106
|
-
find_leaves(result)
|
|
107
|
+
build_callers_graph(result, name_index)
|
|
108
|
+
find_leaves(result, name_index)
|
|
107
109
|
# Find longest path from each entry point
|
|
108
|
-
max_path = _select_longest_path(result, entry_points)
|
|
110
|
+
max_path = _select_longest_path(result, entry_points, name_index)
|
|
109
111
|
return set(max_path)
|
|
110
112
|
|
|
111
113
|
|
|
@@ -4,7 +4,7 @@ from pathlib import Path
|
|
|
4
4
|
|
|
5
5
|
from code2llm.core.models import AnalysisResult
|
|
6
6
|
|
|
7
|
-
from .utils import readable_id, safe_module, resolve_callee, write_file, get_cc
|
|
7
|
+
from .utils import readable_id, safe_module, resolve_callee, write_file, get_cc, build_name_index
|
|
8
8
|
from ..mermaid_flow_helpers import (
|
|
9
9
|
_entry_points,
|
|
10
10
|
_filtered_functions,
|
|
@@ -25,6 +25,9 @@ def export_flow_detailed(result: AnalysisResult, output_path: str,
|
|
|
25
25
|
from .utils import module_of
|
|
26
26
|
|
|
27
27
|
lines = ["flowchart TD"]
|
|
28
|
+
|
|
29
|
+
# Build name index for O(1) callee resolution
|
|
30
|
+
name_index = build_name_index(result.functions)
|
|
28
31
|
lines.append("")
|
|
29
32
|
lines.append(" %% Styling definitions")
|
|
30
33
|
lines.append(" classDef highCC fill:#ff6b6b,stroke:#c92a2a,color:#fff")
|
|
@@ -50,7 +53,7 @@ def export_flow_detailed(result: AnalysisResult, output_path: str,
|
|
|
50
53
|
sort_funcs=True,
|
|
51
54
|
max_funcs=40,
|
|
52
55
|
)
|
|
53
|
-
_render_flow_edges(lines, filtered_funcs, readable_id, resolve_callee, calls_per_function=10, limit=200)
|
|
56
|
+
_render_flow_edges(lines, filtered_funcs, readable_id, resolve_callee, calls_per_function=10, limit=200, name_index=name_index)
|
|
54
57
|
_render_flow_styles(
|
|
55
58
|
lines,
|
|
56
59
|
filtered_funcs,
|
|
@@ -4,7 +4,7 @@ from pathlib import Path
|
|
|
4
4
|
|
|
5
5
|
from code2llm.core.models import AnalysisResult
|
|
6
6
|
|
|
7
|
-
from .utils import readable_id, safe_module, resolve_callee, write_file, get_cc
|
|
7
|
+
from .utils import readable_id, safe_module, resolve_callee, write_file, get_cc, build_name_index
|
|
8
8
|
from ..mermaid_flow_helpers import (
|
|
9
9
|
_entry_points,
|
|
10
10
|
_filtered_functions,
|
|
@@ -25,6 +25,9 @@ def export_flow_full(result: AnalysisResult, output_path: str,
|
|
|
25
25
|
from .utils import module_of
|
|
26
26
|
|
|
27
27
|
lines = ["flowchart TD"]
|
|
28
|
+
|
|
29
|
+
# Build name index for O(1) callee resolution
|
|
30
|
+
name_index = build_name_index(result.functions)
|
|
28
31
|
lines.append("")
|
|
29
32
|
lines.append(" %% Styling definitions")
|
|
30
33
|
lines.append(" classDef highCC fill:#ff6b6b,stroke:#c92a2a,color:#fff")
|
|
@@ -50,7 +53,7 @@ def export_flow_full(result: AnalysisResult, output_path: str,
|
|
|
50
53
|
sort_funcs=False,
|
|
51
54
|
max_funcs=None,
|
|
52
55
|
)
|
|
53
|
-
_render_flow_edges(lines, filtered_funcs, readable_id, resolve_callee, calls_per_function=15, limit=None)
|
|
56
|
+
_render_flow_edges(lines, filtered_funcs, readable_id, resolve_callee, calls_per_function=15, limit=None, name_index=name_index)
|
|
54
57
|
_render_flow_styles(
|
|
55
58
|
lines,
|
|
56
59
|
filtered_funcs,
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"""Mermaid exporter utilities — identifiers, module extraction, file writing."""
|
|
2
2
|
|
|
3
3
|
import re
|
|
4
|
+
from collections import defaultdict
|
|
4
5
|
from pathlib import Path
|
|
5
|
-
from typing import Optional
|
|
6
|
+
from typing import Dict, List, Optional
|
|
6
7
|
|
|
7
8
|
from code2llm.core.models import FunctionInfo
|
|
8
9
|
|
|
@@ -42,11 +43,30 @@ def module_of(func_name: str) -> str:
|
|
|
42
43
|
return parts[0] if parts else 'unknown'
|
|
43
44
|
|
|
44
45
|
|
|
45
|
-
def
|
|
46
|
-
"""
|
|
46
|
+
def build_name_index(funcs: dict) -> Dict[str, List[str]]:
|
|
47
|
+
"""Build index mapping simple names to qualified names for O(1) lookup."""
|
|
48
|
+
index: Dict[str, List[str]] = defaultdict(list)
|
|
49
|
+
for qn in funcs:
|
|
50
|
+
simple_name = qn.split('.')[-1]
|
|
51
|
+
index[simple_name].append(qn)
|
|
52
|
+
return index
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def resolve_callee(callee: str, funcs: dict, name_index: Optional[Dict[str, List[str]]] = None) -> Optional[str]:
|
|
56
|
+
"""Resolve callee to a known qualified name.
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
callee: The callee name to resolve
|
|
60
|
+
funcs: Dictionary of all functions
|
|
61
|
+
name_index: Optional pre-built index from build_name_index() for O(1) lookup
|
|
62
|
+
"""
|
|
47
63
|
if callee in funcs:
|
|
48
64
|
return callee
|
|
49
|
-
|
|
65
|
+
if name_index is not None:
|
|
66
|
+
candidates = name_index.get(callee, [])
|
|
67
|
+
else:
|
|
68
|
+
# Fallback to slow path if index not provided
|
|
69
|
+
candidates = [qn for qn in funcs if qn.endswith(f".{callee}")]
|
|
50
70
|
if len(candidates) == 1:
|
|
51
71
|
return candidates[0]
|
|
52
72
|
return None
|
|
@@ -72,6 +92,7 @@ __all__ = [
|
|
|
72
92
|
'readable_id',
|
|
73
93
|
'safe_module',
|
|
74
94
|
'module_of',
|
|
95
|
+
'build_name_index',
|
|
75
96
|
'resolve_callee',
|
|
76
97
|
'write_file',
|
|
77
98
|
'get_cc',
|
|
@@ -159,16 +159,17 @@ def _render_flow_edges(
|
|
|
159
159
|
lines: List[str],
|
|
160
160
|
funcs: Dict[str, Any],
|
|
161
161
|
readable_id: Callable[[str], str],
|
|
162
|
-
resolve: Callable[
|
|
162
|
+
resolve: Callable[..., Optional[str]],
|
|
163
163
|
calls_per_function: int = 10,
|
|
164
164
|
limit: Optional[int] = 200,
|
|
165
|
+
name_index: Optional[Dict[str, List[str]]] = None,
|
|
165
166
|
) -> None:
|
|
166
167
|
"""Render cross-function call edges with optional limits."""
|
|
167
168
|
seen_edges: Set[Tuple[str, str]] = set()
|
|
168
169
|
for func_name, fi in funcs.items():
|
|
169
170
|
src = readable_id(func_name)
|
|
170
171
|
for callee in fi.calls[:calls_per_function]:
|
|
171
|
-
resolved = resolve(callee, funcs)
|
|
172
|
+
resolved = resolve(callee, funcs, name_index) if name_index else resolve(callee, funcs)
|
|
172
173
|
if resolved and resolved != func_name:
|
|
173
174
|
dst = readable_id(resolved)
|
|
174
175
|
edge = (src, dst)
|
|
@@ -289,6 +289,7 @@ class YAMLExporter(BaseExporter):
|
|
|
289
289
|
- CHAINS: call chains/paths
|
|
290
290
|
- MODULES: functions grouped by module with call relationships
|
|
291
291
|
"""
|
|
292
|
+
self._name_index = None # Reset cache for fresh analysis
|
|
292
293
|
connected, edges = self._collect_edges(result, max_calls_per_func, max_edges)
|
|
293
294
|
nodes = self._build_nodes(result, connected)
|
|
294
295
|
modules = self._group_by_module(result, connected)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code2llm
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.136
|
|
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,16 +67,18 @@ Dynamic: requires-python
|
|
|
67
67
|
|
|
68
68
|
## AI Cost Tracking
|
|
69
69
|
|
|
70
|
-
    
|
|
71
|
+
  
|
|
72
72
|
|
|
73
|
-
- 🤖 **LLM usage:** $
|
|
74
|
-
- 👤 **Human dev:** ~$
|
|
73
|
+
- 🤖 **LLM usage:** $7.5000 (188 commits)
|
|
74
|
+
- 👤 **Human dev:** ~$6526 (65.3h @ $100/h, 30min dedup)
|
|
75
75
|
|
|
76
76
|
Generated on 2026-04-20 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
|
|
77
77
|
|
|
78
78
|
---
|
|
79
79
|
|
|
80
|
+
|
|
81
|
+
|
|
80
82
|
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.
|
|
81
83
|
|
|
82
84
|
## 📁 Generated Files Overview
|
|
@@ -404,10 +406,10 @@ code2llm ./ -f yaml --separate-orphans
|
|
|
404
406
|
---
|
|
405
407
|
|
|
406
408
|
**Generated by**: `code2llm ./ -f all --readme`
|
|
407
|
-
**Analysis Date**: 2026-04-
|
|
408
|
-
**Total Functions**:
|
|
409
|
-
**Total Classes**:
|
|
410
|
-
**Modules**:
|
|
409
|
+
**Analysis Date**: 2026-04-20
|
|
410
|
+
**Total Functions**: 2124
|
|
411
|
+
**Total Classes**: 241
|
|
412
|
+
**Modules**: 359
|
|
411
413
|
|
|
412
414
|
For more information about code2llm, visit: https://github.com/tom-sapletta/code2llm
|
|
413
415
|
|
|
@@ -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.136"
|
|
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"
|
code2llm-0.5.134/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.5.134
|
|
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
|