code2llm 0.5.175__tar.gz → 0.5.176__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.175/code2llm.egg-info → code2llm-0.5.176}/PKG-INFO +6 -6
- {code2llm-0.5.175 → code2llm-0.5.176}/README.md +5 -5
- code2llm-0.5.176/VERSION +1 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/__init__.py +1 -1
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/flow_constants.py +2 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/planfile_tickets.py +3 -1
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/nlp/__init__.py +1 -1
- {code2llm-0.5.175 → code2llm-0.5.176/code2llm.egg-info}/PKG-INFO +6 -6
- {code2llm-0.5.175 → code2llm-0.5.176}/pyproject.toml +1 -1
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_dup_groups.py +40 -0
- code2llm-0.5.175/VERSION +0 -1
- {code2llm-0.5.175 → code2llm-0.5.176}/LICENSE +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/MANIFEST.in +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/__main__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/analysis/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/analysis/_data_impl.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/analysis/call_graph.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/analysis/cfg.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/analysis/coupling.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/analysis/data_analysis.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/analysis/dfg.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/analysis/pipeline_classifier.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/analysis/pipeline_detector.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/analysis/pipeline_resolver.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/analysis/side_effects.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/analysis/smells.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/analysis/type_inference.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/analysis/utils/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/analysis/utils/ast_helpers.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/api.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/cli.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/cli_analysis.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/cli_commands.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/cli_exports/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/cli_exports/code2logic.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/cli_exports/formats.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/cli_exports/orchestrator.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/cli_exports/orchestrator_chunked.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/cli_exports/orchestrator_constants.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/cli_exports/orchestrator_handlers.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/cli_exports/prompt.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/cli_parser.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/analyzer.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/ast_registry.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/config.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/export_pipeline.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/file_analyzer.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/file_cache.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/file_filter.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/gitignore.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/incremental.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/_c_parser.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/_calls.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/_complexity.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/base.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/cpp.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/csharp.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/generic.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/go_lang.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/java.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/php.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/ruby.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/rust.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/ts_extractors.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/ts_parser.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/lang/typescript.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/large_repo.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/models.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/persistent_cache.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/refactoring.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/repo_files.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/source_classifier.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/streaming/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/streaming/cache.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/streaming/incremental.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/streaming/prioritizer.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/streaming/scanner.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/streaming/strategies.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/streaming_analyzer.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/core/toon_size_manager.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/article_view.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/base.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/context_exporter.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/context_view.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/dashboard_data.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/dashboard_renderer.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/evolution/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/evolution/computation.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/evolution/constants.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/evolution/exclusion.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/evolution/render.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/evolution/yaml_export.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/evolution_exporter.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/flow_exporter.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/flow_renderer.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/html_dashboard.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/index_generator/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/index_generator/renderer.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/index_generator/scanner.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/index_generator.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/json_exporter.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/llm_exporter.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/map/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/map/alerts.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/map/details.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/map/header.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/map/module_list.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/map/utils.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/map/yaml_export.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/map_exporter.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/mermaid/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/mermaid/calls.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/mermaid/classic.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/mermaid/compact.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/mermaid/flow_compact.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/mermaid/flow_detailed.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/mermaid/flow_full.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/mermaid/utils.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/mermaid_exporter.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/mermaid_flow_helpers.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/project_yaml/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/project_yaml/constants.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/project_yaml/core.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/project_yaml/evolution.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/project_yaml/health.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/project_yaml/hotspots.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/project_yaml/modules.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/project_yaml_exporter.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/readme/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/readme/content.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/readme/files.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/readme/insights.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/readme/sections.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/readme_exporter.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/report_generators.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/toon/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/toon/_render_coupling_helpers.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/toon/_render_section_helpers.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/toon/constants.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/toon/helpers.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/toon/metrics.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/toon/metrics_core.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/toon/metrics_duplicates.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/toon/metrics_health.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/toon/module_detail.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/toon/renderer.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/toon.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/toon_view.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/validate_project.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/exporters/yaml_exporter.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/_utils.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/llm_flow/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/llm_flow/analysis.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/llm_flow/cli.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/llm_flow/generator.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/llm_flow/nodes.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/llm_flow/parsing.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/llm_flow/utils.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/llm_flow.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/llm_task.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/mermaid/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/mermaid/fix.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/mermaid/png.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/mermaid/validation.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/generators/mermaid.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/nlp/config.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/nlp/entity_resolution.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/nlp/intent_matching.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/nlp/normalization.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/nlp/pipeline.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/parsers/toon_parser.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/patterns/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/patterns/detector.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/refactor/__init__.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm/refactor/prompt_engine.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm.egg-info/SOURCES.txt +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm.egg-info/dependency_links.txt +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm.egg-info/entry_points.txt +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm.egg-info/requires.txt +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/code2llm.egg-info/top_level.txt +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/setup.cfg +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/setup.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_advanced_analysis.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_analyzer.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_cache_invalidation_e2e.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_calls_toon_export.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_declarative_collection.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_deep_analysis.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_edge_cases.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_export_cache_flags.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_export_profile_contract.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_file_analyzer_tagging.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_flow_exporter.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_format_quality.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_mermaid_png.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_multilanguage_e2e.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_nlp_pipeline.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_nonpython_cc_calls.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_orchestrator_cache_mtime.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_persistent_cache.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_pipeline_detector.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_planfile_tickets_exporter.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_project_toon_export.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_prompt_engine.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_prompt_txt.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_refactoring_engine.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_smells_data_clumps.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/tests/test_smells_shotgun_surgery.py +0 -0
- {code2llm-0.5.175 → code2llm-0.5.176}/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.176
|
|
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: Tom Sapletta
|
|
@@ -67,13 +67,13 @@ 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:** $8.3176 (263 commits)
|
|
74
|
+
- 👤 **Human dev:** ~$10535 (105.3h @ $100/h, 30min dedup)
|
|
75
75
|
|
|
76
|
-
Generated on 2026-08-
|
|
76
|
+
Generated on 2026-08-06 using [openrouter/deep/deep-v4-pro](https://openrouter.ai/deep/deep-v4-pro)
|
|
77
77
|
|
|
78
78
|
---
|
|
79
79
|
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
## AI Cost Tracking
|
|
4
4
|
|
|
5
|
-
    
|
|
6
|
+
  
|
|
7
7
|
|
|
8
|
-
- 🤖 **LLM usage:** $
|
|
9
|
-
- 👤 **Human dev:** ~$
|
|
8
|
+
- 🤖 **LLM usage:** $8.3176 (263 commits)
|
|
9
|
+
- 👤 **Human dev:** ~$10535 (105.3h @ $100/h, 30min dedup)
|
|
10
10
|
|
|
11
|
-
Generated on 2026-08-
|
|
11
|
+
Generated on 2026-08-06 using [openrouter/deep/deep-v4-pro](https://openrouter.ai/deep/deep-v4-pro)
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
code2llm-0.5.176/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.5.176
|
|
@@ -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.176"
|
|
12
12
|
__author__ = "STTS Project"
|
|
13
13
|
|
|
14
14
|
# Core analysis components (lightweight, always needed)
|
|
@@ -47,6 +47,8 @@ INTENTIONAL_DUP_COPY_MARKERS: tuple[str, ...] = (
|
|
|
47
47
|
"examples/",
|
|
48
48
|
"-contract-",
|
|
49
49
|
"work/repos/",
|
|
50
|
+
# Vendored submodules / deployment mirrors (e.g. packages/ ↔ extern/oqlos/packages/).
|
|
51
|
+
"extern/",
|
|
50
52
|
)
|
|
51
53
|
|
|
52
54
|
# These repositories are deliberately separate execution planes. Classes with
|
|
@@ -270,7 +270,9 @@ def _duplicate_class_tickets(result: AnalysisResult) -> list[PlanfileTicketSugge
|
|
|
270
270
|
tickets: list[PlanfileTicketSuggestion] = []
|
|
271
271
|
for class_name, files in sorted(groups.items()):
|
|
272
272
|
rel_files = tuple(sorted(files))
|
|
273
|
-
|
|
273
|
+
# Skip when any path is a vendored/intentional copy tree (packages↔extern
|
|
274
|
+
# mirrors land here as mixed groups: one intentional, one host copy).
|
|
275
|
+
if any(is_intentional_duplicate_copy(f) for f in rel_files):
|
|
274
276
|
continue
|
|
275
277
|
tickets.append(
|
|
276
278
|
PlanfileTicketSuggestion(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code2llm
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.176
|
|
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: Tom Sapletta
|
|
@@ -67,13 +67,13 @@ 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:** $8.3176 (263 commits)
|
|
74
|
+
- 👤 **Human dev:** ~$10535 (105.3h @ $100/h, 30min dedup)
|
|
75
75
|
|
|
76
|
-
Generated on 2026-08-
|
|
76
|
+
Generated on 2026-08-06 using [openrouter/deep/deep-v4-pro](https://openrouter.ai/deep/deep-v4-pro)
|
|
77
77
|
|
|
78
78
|
---
|
|
79
79
|
|
|
@@ -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.176"
|
|
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.10"
|
|
@@ -32,7 +32,47 @@ def test_intentional_copy_paths_are_detected() -> None:
|
|
|
32
32
|
assert is_intentional_duplicate_copy(
|
|
33
33
|
"/repo/doctor-agent/work/repos/runtime/src/executor.py"
|
|
34
34
|
)
|
|
35
|
+
assert is_intentional_duplicate_copy(
|
|
36
|
+
"/repo/extern/oqlos/packages/backend-shared-py/src/shared/cqrs/http_relay.py"
|
|
37
|
+
)
|
|
35
38
|
assert not is_intentional_duplicate_copy("/repo/app/src/handler.py")
|
|
39
|
+
assert not is_intentional_duplicate_copy(
|
|
40
|
+
"/repo/packages/backend-shared-py/src/shared/cqrs/http_relay.py"
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def test_extern_vendored_mirror_pair_is_not_actionable_dup(tmp_path: Path) -> None:
|
|
45
|
+
"""packages/ ↔ extern/.../packages/ twins must not create DUP tickets."""
|
|
46
|
+
result = AnalysisResult(project_path=str(tmp_path))
|
|
47
|
+
host = tmp_path / "packages/backend-shared-py/src/shared/cqrs/http_relay.py"
|
|
48
|
+
vendored = (
|
|
49
|
+
tmp_path / "extern/oqlos/packages/backend-shared-py/src/shared/cqrs/http_relay.py"
|
|
50
|
+
)
|
|
51
|
+
for path, pkg in (
|
|
52
|
+
(host, "packages.backend_shared.http_relay"),
|
|
53
|
+
(vendored, "extern.oqlos.packages.backend_shared.http_relay"),
|
|
54
|
+
):
|
|
55
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
56
|
+
path.write_text("# stub\n", encoding="utf-8")
|
|
57
|
+
cls = _worker(path, pkg)
|
|
58
|
+
cls.name = "HttpInterServiceRelay"
|
|
59
|
+
cls.qualified_name = f"{pkg}.HttpInterServiceRelay"
|
|
60
|
+
cls.methods = [
|
|
61
|
+
f"{pkg}.HttpInterServiceRelay.send",
|
|
62
|
+
f"{pkg}.HttpInterServiceRelay.receive",
|
|
63
|
+
f"{pkg}.HttpInterServiceRelay.close",
|
|
64
|
+
]
|
|
65
|
+
result.classes[cls.qualified_name] = cls
|
|
66
|
+
|
|
67
|
+
assert is_intentional_duplicate_pair(str(host), str(vendored))
|
|
68
|
+
dupes = DuplicatesMetricsComputer(str(tmp_path)).detect_duplicates(result)
|
|
69
|
+
assert dupes == []
|
|
70
|
+
tickets = [
|
|
71
|
+
ticket
|
|
72
|
+
for ticket in collect_planfile_tickets(result)
|
|
73
|
+
if ticket.signal == "code2llm_dup"
|
|
74
|
+
]
|
|
75
|
+
assert tickets == []
|
|
36
76
|
|
|
37
77
|
|
|
38
78
|
def test_independent_agent_repositories_are_an_intentional_pair() -> None:
|
code2llm-0.5.175/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.5.175
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|