modwire 11.0.3__tar.gz → 11.1.0__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.
- {modwire-11.0.3 → modwire-11.1.0}/.dev/modwire.egg-info/SOURCES.txt +9 -7
- {modwire-11.0.3 → modwire-11.1.0}/Makefile +2 -2
- {modwire-11.0.3 → modwire-11.1.0}/PKG-INFO +23 -2
- {modwire-11.0.3 → modwire-11.1.0}/README.md +22 -1
- {modwire-11.0.3/tests/extraction/cache_benchmark → modwire-11.1.0/scripts/benchmarks/cache}/run.py +11 -5
- {modwire-11.0.3/tests/architecture/report_benchmark → modwire-11.1.0/scripts/benchmarks/report}/run.py +6 -3
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/application.py +36 -6
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/cache/application.py +18 -17
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/cache/models/cache_outcome.py +3 -1
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/cache/models/cache_plan.py +3 -3
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/facade.py +11 -8
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/application.py +6 -6
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/domain.py +3 -3
- modwire-11.1.0/src/modwire/cli/pipeline/models/source_observation.py +23 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/batch_source_reader.py +27 -14
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_manifest.py +4 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/application/base_test.py +5 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/application/test_07_cache.py +5 -4
- modwire-11.1.0/tests/application/test_11_source_observation.py +114 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/cli/pipeline/test_06_happy_path.py +0 -24
- modwire-11.1.0/tests/cli/pipeline/test_07_report_commands.py +25 -0
- modwire-11.0.3/src/modwire/cli/pipeline/models/source_inventory.py +0 -11
- {modwire-11.0.3 → modwire-11.1.0}/.github/workflows/ci.yml +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/.github/workflows/release.yml +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/.gitignore +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/AGENTS.md +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/LICENSE +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/MANIFEST.in +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/pyproject.toml +0 -0
- {modwire-11.0.3/src/modwire → modwire-11.1.0/scripts/benchmarks/cache}/__init__.py +0 -0
- {modwire-11.0.3/tests/architecture/report_benchmark → modwire-11.1.0/scripts/benchmarks/cache}/benchmark_process_timeout.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/boundaries → modwire-11.1.0/scripts/benchmarks/report}/__init__.py +0 -0
- {modwire-11.0.3/tests/extraction/cache_benchmark → modwire-11.1.0/scripts/benchmarks/report}/benchmark_process_timeout.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/scripts/check_extractors.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/scripts/generate_docs.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/scripts/verify_consumer.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/setup.cfg +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/setup.py +0 -0
- {modwire-11.0.3/src/modwire/architecture → modwire-11.1.0/src/modwire}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/__main__.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/report/services → modwire-11.1.0/src/modwire/architecture}/__init__.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/boundaries/models → modwire-11.1.0/src/modwire/architecture/boundaries}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/boundaries/application.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/boundaries/domain.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/boundaries/services → modwire-11.1.0/src/modwire/architecture/boundaries/models}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/boundaries/models/edge_rule_violation.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/boundaries/models/flow_report.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/boundaries/models/flow_violation.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/boundaries/models/types.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/config → modwire-11.1.0/src/modwire/architecture/boundaries/services}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/boundaries/services/backward_flow_analyzer.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/boundaries/services/boundaries_flow_analyzer.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/boundaries/services/module_boundary_analyzer.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/boundaries/services/no_cycles_flow_analyzer.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/boundaries/services/no_reentry_flow_analyzer.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/config/models → modwire-11.1.0/src/modwire/architecture/config}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/config/application.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/insights → modwire-11.1.0/src/modwire/architecture/config/models}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/config/models/architecture_config.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/config/models/boundaries_config.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/config/models/boundary_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/config/models/configuration_value.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/config/models/flow_realm.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/config/models/flow_rules.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/config/models/shape_config.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/config/models/shape_realm.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/config/models/shape_rules.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/config/models/tag_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/facade.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/insights/models → modwire-11.1.0/src/modwire/architecture/insights}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/application.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/domain.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/insights/services → modwire-11.1.0/src/modwire/architecture/insights/models}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/models/callable_report_entry.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/models/callables_report.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/models/clusters_report.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/models/clusters_report_item.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/models/coherence_report.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/models/exports_report.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/models/exports_report_item.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/models/hotspots_report.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/models/hotspots_report_item.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/models/insight_report.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/map → modwire-11.1.0/src/modwire/architecture/insights/services}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/services/callables_reporter.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/services/clusters_reporter.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/services/coherence_reporter.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/services/exports_reporter.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/services/hotspots_reporter.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/insights/services/insight_report_field_map.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/map/models → modwire-11.1.0/src/modwire/architecture/map}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/map/application.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/map/domain.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/map/services → modwire-11.1.0/src/modwire/architecture/map/models}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/map/models/architecture_map.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/map/models/architecture_realm.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/map/models/tag_map.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/map/models/tag_match.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/report → modwire-11.1.0/src/modwire/architecture/map/services}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/map/services/architecture_map_loader.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/map/services/tag_matcher.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/report/models → modwire-11.1.0/src/modwire/architecture/report}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/report/application.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/report/domain.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/shape → modwire-11.1.0/src/modwire/architecture/report/models}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/report/models/architecture_group.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/report/models/map_report.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/report/models/report_catalog.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/report/models/report_descriptor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/report/models/report_item.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/report/models/report_metadata.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/report/models/report_node.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/report/models/report_section.py +0 -0
- {modwire-11.0.3/src/modwire/cli → modwire-11.1.0/src/modwire/architecture/report/services}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/report/services/map_report_collector.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/shape/models → modwire-11.1.0/src/modwire/architecture/shape}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/shape/application.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/shape/domain.py +0 -0
- {modwire-11.0.3/src/modwire/architecture/shape/services → modwire-11.1.0/src/modwire/architecture/shape/models}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/shape/models/shape_realm_architecture_map.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/shape/models/shape_report.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/shape/models/shape_violation.py +0 -0
- {modwire-11.0.3/src/modwire/cli/documentation → modwire-11.1.0/src/modwire/architecture/shape/services}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/shape/services/abstract_class_resolver.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/shape/services/callable_resolver.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/shape/services/class_resolver.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/shape/services/file_resolver.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/shape/services/import_resolver.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/shape/services/property_resolver.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/shape/services/signature_resolver.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/architecture/shape/services/symbol_resolver.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/autowiring.py +0 -0
- {modwire-11.0.3/src/modwire/cli/cache → modwire-11.1.0/src/modwire/cli}/__init__.py +0 -0
- {modwire-11.0.3/src/modwire/cli/cache/models → modwire-11.1.0/src/modwire/cli/cache}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/cache/domain.py +0 -0
- {modwire-11.0.3/src/modwire/cli/cache/services → modwire-11.1.0/src/modwire/cli/cache/models}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/cache/models/cache_entry.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/cache/models/cache_key.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/cache/models/cache_kind.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/cache/models/cache_options.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/cache/models/cache_stage.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/cache/models/cache_storage_state.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/cache/models/cached_result.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/cache/models/source_cache_entry.py +0 -0
- {modwire-11.0.3/src/modwire/cli/resources/models → modwire-11.1.0/src/modwire/cli/cache/services}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/cache/services/cache_codec.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/cache/services/cache_identity.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/cache/services/filesystem_cache_storage.py +0 -0
- {modwire-11.0.3/src/modwire/cli/documentation/services → modwire-11.1.0/src/modwire/cli/documentation}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/documentation/application.py +0 -0
- {modwire-11.0.3/src/modwire/cli/initialization → modwire-11.1.0/src/modwire/cli/documentation/services}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/documentation/services/documentation_generator.py +0 -0
- {modwire-11.0.3/src/modwire/cli/initialization/models → modwire-11.1.0/src/modwire/cli/initialization}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/initialization/application.py +0 -0
- {modwire-11.0.3/src/modwire/cli/initialization/services → modwire-11.1.0/src/modwire/cli/initialization/models}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/initialization/models/initialization_result.py +0 -0
- {modwire-11.0.3/src/modwire/cli/pipeline → modwire-11.1.0/src/modwire/cli/initialization/services}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/initialization/services/initialization_service.py +0 -0
- {modwire-11.0.3/src/modwire/cli/pipeline/models → modwire-11.1.0/src/modwire/cli/pipeline}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/batching/balanced_planner.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/batching/fixed_planner.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/batching/plan.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/batching/planner.py +0 -0
- {modwire-11.0.3/src/modwire/cli/pipeline/services → modwire-11.1.0/src/modwire/cli/pipeline/models}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/models/command_name.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/models/command_request.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/models/extractor_batch_input.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/models/extractor_command_input.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/models/extractor_source_input.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/models/report_pipeline_context.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/models/source_entry.py +0 -0
- {modwire-11.0.3/src/modwire/cli/resources → modwire-11.1.0/src/modwire/cli/pipeline/services}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/callables_insight.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/clusters_insight.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/coherence_insight.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/command_line.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/configuration_loader.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/extractor_command.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/flow_violations.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/hotspots_insight.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/map_tree.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/output_console.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/shape_violations.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/source_manifest_builder.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/success.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/unknown_files_warning.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/services/unused_exports_insight.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/transport/json_lines_output_reader.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/transport/json_output_reader.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/transport/output_reader.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/pipeline/transport/source_file_factory.py +0 -0
- {modwire-11.0.3/src/modwire/extraction/dependency → modwire-11.1.0/src/modwire/cli/resources}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/resources/application.py +0 -0
- {modwire-11.0.3/src/modwire/extraction → modwire-11.1.0/src/modwire/cli/resources/models}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/resources/models/defaults.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/resources/models/init_asset.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/resources/models/init_target_base.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/resources/templates/AGENTS.md +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/resources/templates/ARCHITECTURE.md +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/resources/templates/INDEX.md +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/resources/templates/MODWIRE.md +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/resources/templates/RULES.md +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/resources/templates/TESTING.md +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/resources/templates/WORKFLOW.md +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/cli/resources/templates/architecture.yaml +0 -0
- {modwire-11.0.3/src/modwire/extraction/extractors/php → modwire-11.1.0/src/modwire/extraction}/__init__.py +0 -0
- {modwire-11.0.3/src/modwire/extraction/dependency/services → modwire-11.1.0/src/modwire/extraction/dependency}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/dependency/application.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/dependency/domain.py +0 -0
- {modwire-11.0.3/src/modwire/extraction/extractors → modwire-11.1.0/src/modwire/extraction/dependency/services}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/dependency/services/graph_builder.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/dependency/services/import_identity_index.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/dependency/services/import_resolver.py +0 -0
- {modwire-11.0.3/src/modwire/extraction/extractors/models → modwire-11.1.0/src/modwire/extraction/extractors}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/application.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/domain.py +0 -0
- {modwire-11.0.3/src/modwire/extraction/extractors/resources → modwire-11.1.0/src/modwire/extraction/extractors/models}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/models/batch_config.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/models/batch_output_format.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/models/extraction_request.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/models/extractor_resource.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/models/extractor_runtime.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/models/parsed_source_batch.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/models/parsed_source_file.py +0 -0
- {modwire-11.0.3/src/modwire/extraction/extractors/python → modwire-11.1.0/src/modwire/extraction/extractors/php}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/php/extractor.py +0 -0
- {modwire-11.0.3/src/modwire/extraction/extractors/typescript → modwire-11.1.0/src/modwire/extraction/extractors/python}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/extractor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/observations/call_candidate.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/observations/call_observation.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/observations/call_reference.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/observations/callable_candidate.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/observations/class_candidate.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/observations/export_candidate.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/observations/function_candidate.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/observations/import_candidate.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/observations/inheritance_candidate.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/observations/property_candidate.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/observations/property_scope.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/observations/source_context.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/observations/source_observation.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/observations/value_candidate.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/pipeline/source_parser.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/callables/classifier.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/callables/constructor_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/callables/function_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/callables/instance_method_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/callables/static_method_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/callables/type_method_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/calls/classifier.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/calls/constructor_target_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/calls/dynamic_target_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/calls/instance_target_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/calls/local_target_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/calls/qualified_target_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/calls/reference_reader.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/calls/unresolved_target_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/catalog.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/classes/abstract_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/classes/classifier.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/classes/concrete_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/contribution.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/contributors/call_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/contributors/callable_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/contributors/class_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/contributors/export_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/contributors/function_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/contributors/import_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/contributors/inheritance_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/contributors/metric_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/contributors/property_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/contributors/value_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/exports/classifier.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/exports/explicit_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/exports/implicit_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/policies/annotation_reader.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/policies/assigned_value_reader.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/policies/declaration_identity_factory.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/policies/expression_reference_reader.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/policies/import_path_policy.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/policies/module_identity_policy.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/policies/parameter_reader.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/policies/type_alias_classifier.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/policies/visibility_policy.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/properties/annotated_class_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/properties/annotated_instance_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/properties/assigned_class_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/properties/assigned_instance_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/properties/classifier.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/properties/decorated_method_rule.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/semantics/reader.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/source_facts/call_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/source_facts/callable_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/source_facts/class_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/source_facts/contribution.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/source_facts/export_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/source_facts/function_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/source_facts/import_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/source_facts/inheritance_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/source_facts/metric_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/source_facts/property_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/source_facts/reader.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/source_facts/value_contributor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/traversal/context.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/traversal/observation_reader.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/traversal/ordered_observation_visitor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/python/traversal/traversal_role.py +0 -0
- {modwire-11.0.3/src/modwire/extraction/extractors/resources/python → modwire-11.1.0/src/modwire/extraction/extractors/resources}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/resources/php/build.php +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/resources/php/build.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/resources/php/composer.json +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/resources/php/composer.lock +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/resources/php/script.php +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/resources/php/script.src.php +0 -0
- {modwire-11.0.3/src/modwire/implementation/manifest → modwire-11.1.0/src/modwire/extraction/extractors/resources/python}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/resources/python/script.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/resources/typescript/build.mjs +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/resources/typescript/build.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/resources/typescript/package-lock.json +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/resources/typescript/package.json +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/resources/typescript/script.js +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/resources/typescript/script.ts +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/resources/typescript/tsconfig.json +0 -0
- {modwire-11.0.3/src/modwire/implementation → modwire-11.1.0/src/modwire/extraction/extractors/typescript}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/extractors/typescript/extractor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/extraction/facade.py +0 -0
- {modwire-11.0.3/src/modwire/shared → modwire-11.1.0/src/modwire/implementation}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/facade.py +0 -0
- {modwire-11.0.3/src/modwire/implementation/manifest/contracts → modwire-11.1.0/src/modwire/implementation/manifest}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/application.py +0 -0
- {modwire-11.0.3/src/modwire/implementation/manifest/models → modwire-11.1.0/src/modwire/implementation/manifest/contracts}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/contracts/manifest_compiler.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/contracts/manifest_serializer.py +0 -0
- {modwire-11.0.3/src/modwire/implementation/manifest/services → modwire-11.1.0/src/modwire/implementation/manifest/models}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/models/implementation_manifest.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/models/implementation_manifest_document.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/models/manifest_annotation.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/models/manifest_annotation_role.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/models/manifest_attribute.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/models/manifest_callable.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/models/manifest_dependency.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/models/manifest_dependency_target_kind.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/models/manifest_format.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/models/manifest_inheritance.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/models/manifest_parameter.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/models/manifest_span.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/models/manifest_symbol.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/models/manifest_symbol_kind.py +0 -0
- {modwire-11.0.3/src/modwire/shared/code → modwire-11.1.0/src/modwire/implementation/manifest/services}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/services/canonical_json_manifest_serializer.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/implementation/manifest/services/code_map_manifest_compiler.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/py.typed +0 -0
- {modwire-11.0.3/src/modwire/shared/values/models → modwire-11.1.0/src/modwire/shared}/__init__.py +0 -0
- {modwire-11.0.3/src/modwire/shared/code/models → modwire-11.1.0/src/modwire/shared/code}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/application.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/domain.py +0 -0
- {modwire-11.0.3/src/modwire/shared/code/services → modwire-11.1.0/src/modwire/shared/code/models}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/capability_coverage.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/capability_status.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/code_map.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/code_map_producer.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/code_package.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/declaration_family.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/declaration_identity.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/dependency_edge_result.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/dependency_graph.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/dependency_node_result.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/digest_algorithm.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/duplicate_identity_error.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/edge.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/extractor_descriptor.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/fact_capability.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/identity.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/identity_kind.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/import_crossing_type.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/node.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/node_kind.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/query_builder.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/query_types.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/queryable_code_map.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/runtime_observation.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/scan_policy.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_abstract_class.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_artifact.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_assigned_value.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_assigned_value_kind.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_call.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_call_resolution.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_callable.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_callable_kind.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_callable_symbol.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_class.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_class_method.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_class_property.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_dependency_resolution.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_export.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_export_kind.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_extraction.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_file.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_file_result.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_function.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_import.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_imported_symbol.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_inheritance.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_interface.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_item_result.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_manifest_identity.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_member_kind.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_parameter.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_parameter_kind.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_relation_kind.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_signature.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_signature_kind.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_symbol.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_type.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_value.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_value_declaration_kind.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_value_kind.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_value_scope.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/models/source_visibility.py +0 -0
- {modwire-11.0.3/src/modwire/shared/values → modwire-11.1.0/src/modwire/shared/code/services}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/services/glob_path_matcher.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/services/identity_resolver.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/code/services/installed_package_version.py +0 -0
- {modwire-11.0.3/tests/architecture/report_benchmark → modwire-11.1.0/src/modwire/shared/values}/__init__.py +0 -0
- {modwire-11.0.3/tests → modwire-11.1.0/src/modwire/shared/values/models}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/src/modwire/shared/values/models/value_model.py +0 -0
- {modwire-11.0.3/tests/application → modwire-11.1.0/tests}/__init__.py +0 -0
- {modwire-11.0.3/tests/architecture → modwire-11.1.0/tests/application}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/application/test_01_attacks.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/application/test_06_happy_path.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/application/test_08_implementation_manifest.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/application/test_09_source_manifest_identity.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/application/test_10_assigned_value_evidence.py +0 -0
- {modwire-11.0.3/tests/architecture/boundaries → modwire-11.1.0/tests/architecture}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/architecture/base_test.py +0 -0
- {modwire-11.0.3/tests/architecture/config → modwire-11.1.0/tests/architecture/boundaries}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/architecture/boundaries/base_test.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/architecture/boundaries/test_01_attacks.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/architecture/boundaries/test_02_invariants.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/architecture/boundaries/test_03_public_api.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/architecture/boundaries/test_04_paths.py +0 -0
- {modwire-11.0.3/tests/architecture/insights → modwire-11.1.0/tests/architecture/config}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/architecture/config/test_01_attacks.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/architecture/config/test_02_invariants.py +0 -0
- {modwire-11.0.3/tests/architecture/map → modwire-11.1.0/tests/architecture/insights}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/architecture/insights/base_test.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/architecture/insights/test_02_invariants.py +0 -0
- {modwire-11.0.3/tests/architecture/report → modwire-11.1.0/tests/architecture/map}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/architecture/map/test_02_patterns.py +0 -0
- {modwire-11.0.3/tests/architecture/shape → modwire-11.1.0/tests/architecture/report}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/architecture/report/test_02_invariants.py +0 -0
- {modwire-11.0.3/tests/cli → modwire-11.1.0/tests/architecture/shape}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/architecture/shape/base_test.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/architecture/shape/test_01_limits.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/architecture/shape/test_02_invariants.py +0 -0
- {modwire-11.0.3/tests/cli/documentation → modwire-11.1.0/tests/cli}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/cli/base_test.py +0 -0
- {modwire-11.0.3/tests/cli/initialization → modwire-11.1.0/tests/cli/documentation}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/cli/documentation/test_02_invariants.py +0 -0
- {modwire-11.0.3/tests/cli/pipeline → modwire-11.1.0/tests/cli/initialization}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/cli/initialization/test_01_attacks.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/cli/initialization/test_02_invariants.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/cli/initialization/test_03_interruption.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/cli/initialization/test_04_cleanup.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/cli/initialization/test_05_recovery.py +0 -0
- {modwire-11.0.3/tests/extraction → modwire-11.1.0/tests/cli/pipeline}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/cli/pipeline/base_test.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/cli/pipeline/test_01_attacks.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/cli/pipeline/test_02_invariants.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/cli/pipeline/test_03_interruption.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/cli/pipeline/test_04_command_transport.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/cli/pipeline/test_05_recovery.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/conftest.py +0 -0
- {modwire-11.0.3/tests/extraction/big_projects → modwire-11.1.0/tests/extraction}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/base_test.py +0 -0
- {modwire-11.0.3/tests/extraction/cache_benchmark → modwire-11.1.0/tests/extraction/big_projects}/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/big_projects/project.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/big_projects/projects.json +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/big_projects/resolution_results.json +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/big_projects/results.json +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/big_projects/run.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/dependency/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/dependency/test_02_invariants.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/extractors/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/extractors/test_01_attacks.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/extractors/test_02_invariants.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/extractors/test_03_native_symbols.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/scan_benchmark/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/scan_benchmark/prepare.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/scan_benchmark/results.json +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/extraction/scan_benchmark/run.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/php/ignored/example_generated.php +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/php/src/example_application/example_actions/example_action.php +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/php/src/example_domain/example_model/example_record.php +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/php/src/example_domain/example_services/example_policy.php +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/php/src/example_interfaces/example_http/example_controller.php +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/python/ignored/example_generated.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/python/src/example_application/example_actions/example_action.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/python/src/example_domain/example_model/example_record.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/python/src/example_domain/example_services/example_policy.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/python/src/example_interfaces/example_http/example_controller.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/typescript/ignored/example_generated.ts +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/typescript/src/example_application/example_actions/example_action.ts +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/typescript/src/example_domain/example_model/example_record.ts +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/typescript/src/example_domain/example_model/example_view.tsx +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_audit.js +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_callables.ts +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_policy.ts +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_controller.ts +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_view.jsx +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/syntax/php/example_shapes.php +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/syntax/python/example_shapes.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/fixtures/syntax/typescript/example_shapes.ts +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/shared/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/shared/code/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/shared/code/test_02_invariants.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/support/__init__.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/support/base_test.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/support/code_map.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/tests/support/service_test.py +0 -0
- {modwire-11.0.3 → modwire-11.1.0}/uv.lock +0 -0
|
@@ -13,6 +13,12 @@ uv.lock
|
|
|
13
13
|
scripts/check_extractors.py
|
|
14
14
|
scripts/generate_docs.py
|
|
15
15
|
scripts/verify_consumer.py
|
|
16
|
+
scripts/benchmarks/cache/__init__.py
|
|
17
|
+
scripts/benchmarks/cache/benchmark_process_timeout.py
|
|
18
|
+
scripts/benchmarks/cache/run.py
|
|
19
|
+
scripts/benchmarks/report/__init__.py
|
|
20
|
+
scripts/benchmarks/report/benchmark_process_timeout.py
|
|
21
|
+
scripts/benchmarks/report/run.py
|
|
16
22
|
src/modwire/__init__.py
|
|
17
23
|
src/modwire/__main__.py
|
|
18
24
|
src/modwire/application.py
|
|
@@ -154,7 +160,7 @@ src/modwire/cli/pipeline/models/extractor_command_input.py
|
|
|
154
160
|
src/modwire/cli/pipeline/models/extractor_source_input.py
|
|
155
161
|
src/modwire/cli/pipeline/models/report_pipeline_context.py
|
|
156
162
|
src/modwire/cli/pipeline/models/source_entry.py
|
|
157
|
-
src/modwire/cli/pipeline/models/
|
|
163
|
+
src/modwire/cli/pipeline/models/source_observation.py
|
|
158
164
|
src/modwire/cli/pipeline/services/__init__.py
|
|
159
165
|
src/modwire/cli/pipeline/services/batch_source_reader.py
|
|
160
166
|
src/modwire/cli/pipeline/services/callables_insight.py
|
|
@@ -422,6 +428,7 @@ tests/application/test_07_cache.py
|
|
|
422
428
|
tests/application/test_08_implementation_manifest.py
|
|
423
429
|
tests/application/test_09_source_manifest_identity.py
|
|
424
430
|
tests/application/test_10_assigned_value_evidence.py
|
|
431
|
+
tests/application/test_11_source_observation.py
|
|
425
432
|
tests/architecture/__init__.py
|
|
426
433
|
tests/architecture/base_test.py
|
|
427
434
|
tests/architecture/boundaries/__init__.py
|
|
@@ -440,9 +447,6 @@ tests/architecture/map/__init__.py
|
|
|
440
447
|
tests/architecture/map/test_02_patterns.py
|
|
441
448
|
tests/architecture/report/__init__.py
|
|
442
449
|
tests/architecture/report/test_02_invariants.py
|
|
443
|
-
tests/architecture/report_benchmark/__init__.py
|
|
444
|
-
tests/architecture/report_benchmark/benchmark_process_timeout.py
|
|
445
|
-
tests/architecture/report_benchmark/run.py
|
|
446
450
|
tests/architecture/shape/__init__.py
|
|
447
451
|
tests/architecture/shape/base_test.py
|
|
448
452
|
tests/architecture/shape/test_01_limits.py
|
|
@@ -465,6 +469,7 @@ tests/cli/pipeline/test_03_interruption.py
|
|
|
465
469
|
tests/cli/pipeline/test_04_command_transport.py
|
|
466
470
|
tests/cli/pipeline/test_05_recovery.py
|
|
467
471
|
tests/cli/pipeline/test_06_happy_path.py
|
|
472
|
+
tests/cli/pipeline/test_07_report_commands.py
|
|
468
473
|
tests/extraction/__init__.py
|
|
469
474
|
tests/extraction/base_test.py
|
|
470
475
|
tests/extraction/big_projects/__init__.py
|
|
@@ -473,9 +478,6 @@ tests/extraction/big_projects/projects.json
|
|
|
473
478
|
tests/extraction/big_projects/resolution_results.json
|
|
474
479
|
tests/extraction/big_projects/results.json
|
|
475
480
|
tests/extraction/big_projects/run.py
|
|
476
|
-
tests/extraction/cache_benchmark/__init__.py
|
|
477
|
-
tests/extraction/cache_benchmark/benchmark_process_timeout.py
|
|
478
|
-
tests/extraction/cache_benchmark/run.py
|
|
479
481
|
tests/extraction/dependency/__init__.py
|
|
480
482
|
tests/extraction/dependency/test_02_invariants.py
|
|
481
483
|
tests/extraction/extractors/__init__.py
|
|
@@ -36,10 +36,10 @@ scan-benchmark:
|
|
|
36
36
|
uv run python -m tests.extraction.scan_benchmark.run --root .dev/benchmarks/scan-project --language "$(SCAN_BENCHMARK_LANGUAGE)" --excluded-pattern 'example_excluded/**'
|
|
37
37
|
|
|
38
38
|
cache-benchmark:
|
|
39
|
-
uv run python -m
|
|
39
|
+
uv run python -m scripts.benchmarks.cache.run --root "$(CACHE_BENCHMARK_ROOT)" --language "$(CACHE_BENCHMARK_LANGUAGE)" --cache-directory .dev/benchmarks/cache --incremental-source "$(CACHE_BENCHMARK_SOURCE)" --replacement-source "$(CACHE_BENCHMARK_REPLACEMENT)"
|
|
40
40
|
|
|
41
41
|
report-benchmark:
|
|
42
|
-
uv run python -m
|
|
42
|
+
uv run python -m scripts.benchmarks.report.run --root "$(REPORT_BENCHMARK_ROOT)" --language "$(REPORT_BENCHMARK_LANGUAGE)" --cache-directory "$(REPORT_BENCHMARK_CACHE)" --cache-namespace "$(REPORT_BENCHMARK_NAMESPACE)"
|
|
43
43
|
|
|
44
44
|
docs-check:
|
|
45
45
|
uv run python scripts/generate_docs.py --check
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: modwire
|
|
3
|
-
Version: 11.0
|
|
3
|
+
Version: 11.1.0
|
|
4
4
|
Summary: Code extraction, architecture analysis and the Modwire CLI.
|
|
5
5
|
Author: Tomasz Szpak
|
|
6
6
|
License-Expression: MIT
|
|
@@ -80,6 +80,10 @@ Return a code map with content-addressed source and complete-source-set reuse.
|
|
|
80
80
|
|
|
81
81
|
Return a code map and public outcomes for extraction and complete-map reuse.
|
|
82
82
|
|
|
83
|
+
### `generate_map_cached_from_observation_with_diagnostics`
|
|
84
|
+
|
|
85
|
+
Return a cached code map derived from the exact supplied source observation.
|
|
86
|
+
|
|
83
87
|
### `generate_queryable_map_cached`
|
|
84
88
|
|
|
85
89
|
Return a queryable code map with content-addressed persistent reuse.
|
|
@@ -88,6 +92,14 @@ Return a queryable code map with content-addressed persistent reuse.
|
|
|
88
92
|
|
|
89
93
|
Return a queryable code map and public outcomes for every applicable cache stage.
|
|
90
94
|
|
|
95
|
+
### `generate_queryable_map_cached_from_observation_with_diagnostics`
|
|
96
|
+
|
|
97
|
+
Return a queryable cached map derived from the exact supplied source observation.
|
|
98
|
+
|
|
99
|
+
### `observe_sources`
|
|
100
|
+
|
|
101
|
+
Observe one complete immutable canonical source inventory without parsing source.
|
|
102
|
+
|
|
91
103
|
### `source_manifest_identity`
|
|
92
104
|
|
|
93
105
|
Observe the current canonical source-manifest identity without parsing source.
|
|
@@ -140,7 +152,8 @@ Extraction counts describe current source records. An exact code-map hit
|
|
|
140
152
|
reports its digest-backed source-set entries as extraction hits without loading
|
|
141
153
|
individual source payloads. Code-map and report counts describe one entry.
|
|
142
154
|
Invalidated entries are also misses. Diagnostics include the configured
|
|
143
|
-
namespace but never cache keys, source identities, or content.
|
|
155
|
+
namespace but never cache keys, source identities, or content. The reuse flag
|
|
156
|
+
states whether the exact supplied source observation drove the cache operation.
|
|
144
157
|
|
|
145
158
|
## `CachedResult`
|
|
146
159
|
|
|
@@ -174,6 +187,14 @@ Kinds of class-property assignment evidence published by extractors.
|
|
|
174
187
|
|
|
175
188
|
Canonical identity of one observed source manifest.
|
|
176
189
|
|
|
190
|
+
## `SourceObservation`
|
|
191
|
+
|
|
192
|
+
Immutable canonical source inventory reusable by identity and cached map operations.
|
|
193
|
+
|
|
194
|
+
### `identity`
|
|
195
|
+
|
|
196
|
+
Return the canonical public identity of this observed source manifest.
|
|
197
|
+
|
|
177
198
|
## `SourceMemberKind`
|
|
178
199
|
|
|
179
200
|
Ownership kind for a declared class or type member.
|
|
@@ -52,6 +52,10 @@ Return a code map with content-addressed source and complete-source-set reuse.
|
|
|
52
52
|
|
|
53
53
|
Return a code map and public outcomes for extraction and complete-map reuse.
|
|
54
54
|
|
|
55
|
+
### `generate_map_cached_from_observation_with_diagnostics`
|
|
56
|
+
|
|
57
|
+
Return a cached code map derived from the exact supplied source observation.
|
|
58
|
+
|
|
55
59
|
### `generate_queryable_map_cached`
|
|
56
60
|
|
|
57
61
|
Return a queryable code map with content-addressed persistent reuse.
|
|
@@ -60,6 +64,14 @@ Return a queryable code map with content-addressed persistent reuse.
|
|
|
60
64
|
|
|
61
65
|
Return a queryable code map and public outcomes for every applicable cache stage.
|
|
62
66
|
|
|
67
|
+
### `generate_queryable_map_cached_from_observation_with_diagnostics`
|
|
68
|
+
|
|
69
|
+
Return a queryable cached map derived from the exact supplied source observation.
|
|
70
|
+
|
|
71
|
+
### `observe_sources`
|
|
72
|
+
|
|
73
|
+
Observe one complete immutable canonical source inventory without parsing source.
|
|
74
|
+
|
|
63
75
|
### `source_manifest_identity`
|
|
64
76
|
|
|
65
77
|
Observe the current canonical source-manifest identity without parsing source.
|
|
@@ -112,7 +124,8 @@ Extraction counts describe current source records. An exact code-map hit
|
|
|
112
124
|
reports its digest-backed source-set entries as extraction hits without loading
|
|
113
125
|
individual source payloads. Code-map and report counts describe one entry.
|
|
114
126
|
Invalidated entries are also misses. Diagnostics include the configured
|
|
115
|
-
namespace but never cache keys, source identities, or content.
|
|
127
|
+
namespace but never cache keys, source identities, or content. The reuse flag
|
|
128
|
+
states whether the exact supplied source observation drove the cache operation.
|
|
116
129
|
|
|
117
130
|
## `CachedResult`
|
|
118
131
|
|
|
@@ -146,6 +159,14 @@ Kinds of class-property assignment evidence published by extractors.
|
|
|
146
159
|
|
|
147
160
|
Canonical identity of one observed source manifest.
|
|
148
161
|
|
|
162
|
+
## `SourceObservation`
|
|
163
|
+
|
|
164
|
+
Immutable canonical source inventory reusable by identity and cached map operations.
|
|
165
|
+
|
|
166
|
+
### `identity`
|
|
167
|
+
|
|
168
|
+
Return the canonical public identity of this observed source manifest.
|
|
169
|
+
|
|
149
170
|
## `SourceMemberKind`
|
|
150
171
|
|
|
151
172
|
Ownership kind for a declared class or type member.
|
{modwire-11.0.3/tests/extraction/cache_benchmark → modwire-11.1.0/scripts/benchmarks/cache}/run.py
RENAMED
|
@@ -132,7 +132,10 @@ class CacheBenchmark:
|
|
|
132
132
|
|
|
133
133
|
total_started = time.perf_counter()
|
|
134
134
|
cold_plan, measurement["cold_inventory"] = self._phase(
|
|
135
|
-
repetition,
|
|
135
|
+
repetition,
|
|
136
|
+
"cold",
|
|
137
|
+
"inventory",
|
|
138
|
+
lambda: application.cli.prepare_cache(application.cli.observe(request, policy)),
|
|
136
139
|
)
|
|
137
140
|
cold_cached_map, measurement["cold_code_map_loading"] = self._phase(
|
|
138
141
|
repetition,
|
|
@@ -146,7 +149,7 @@ class CacheBenchmark:
|
|
|
146
149
|
repetition,
|
|
147
150
|
"cold",
|
|
148
151
|
"source_loading",
|
|
149
|
-
lambda: application.cli.cached_sources(
|
|
152
|
+
lambda: application.cli.cached_sources(cold_plan, options),
|
|
150
153
|
)
|
|
151
154
|
_, measurement["cold_source_set_maintenance"] = self._phase(
|
|
152
155
|
repetition,
|
|
@@ -177,7 +180,10 @@ class CacheBenchmark:
|
|
|
177
180
|
|
|
178
181
|
total_started = time.perf_counter()
|
|
179
182
|
warm_plan, measurement["warm_inventory"] = self._phase(
|
|
180
|
-
repetition,
|
|
183
|
+
repetition,
|
|
184
|
+
"warm",
|
|
185
|
+
"inventory",
|
|
186
|
+
lambda: application.cli.prepare_cache(application.cli.observe(request, policy)),
|
|
181
187
|
)
|
|
182
188
|
warm_cached_map, measurement["warm_code_map_loading"] = self._phase(
|
|
183
189
|
repetition,
|
|
@@ -206,7 +212,7 @@ class CacheBenchmark:
|
|
|
206
212
|
repetition,
|
|
207
213
|
"incremental",
|
|
208
214
|
"inventory",
|
|
209
|
-
lambda: application.cli.prepare_cache(request, policy),
|
|
215
|
+
lambda: application.cli.prepare_cache(application.cli.observe(request, policy)),
|
|
210
216
|
)
|
|
211
217
|
incremental_cached_map, measurement["incremental_code_map_loading"] = self._phase(
|
|
212
218
|
repetition,
|
|
@@ -220,7 +226,7 @@ class CacheBenchmark:
|
|
|
220
226
|
repetition,
|
|
221
227
|
"incremental",
|
|
222
228
|
"source_loading",
|
|
223
|
-
lambda: application.cli.cached_sources(
|
|
229
|
+
lambda: application.cli.cached_sources(incremental_plan, options),
|
|
224
230
|
)
|
|
225
231
|
_, measurement["incremental_source_set_maintenance"] = self._phase(
|
|
226
232
|
repetition,
|
|
@@ -107,7 +107,7 @@ class ReportBenchmark:
|
|
|
107
107
|
cleanup_reserve = min(1.0, max_process_seconds * 0.1)
|
|
108
108
|
supervisor_seconds = max_process_seconds - cleanup_reserve
|
|
109
109
|
if Path(sys.argv[0]).resolve() == Path(__file__).resolve():
|
|
110
|
-
entrypoint = [sys.executable, "-m", "
|
|
110
|
+
entrypoint = [sys.executable, "-m", "scripts.benchmarks.report.run"]
|
|
111
111
|
else:
|
|
112
112
|
entrypoint = [sys.executable, sys.argv[0]]
|
|
113
113
|
command = [*entrypoint, *sys.argv[1:], "--worker"]
|
|
@@ -228,7 +228,10 @@ class ReportBenchmark:
|
|
|
228
228
|
cache_file = self.code_map_cache_file
|
|
229
229
|
if cache_file is None:
|
|
230
230
|
plan, measurement["inventory"] = self._phase(
|
|
231
|
-
repetition,
|
|
231
|
+
repetition,
|
|
232
|
+
"map",
|
|
233
|
+
"inventory",
|
|
234
|
+
lambda: application.cli.prepare_cache(application.cli.observe(request, policy)),
|
|
232
235
|
)
|
|
233
236
|
cached_map, measurement["code_map_loading"] = self._phase(
|
|
234
237
|
repetition, "map", "code_map_loading", lambda: application.cli.cached_code_map(plan, options)
|
|
@@ -240,7 +243,7 @@ class ReportBenchmark:
|
|
|
240
243
|
repetition,
|
|
241
244
|
"map",
|
|
242
245
|
"extraction_loading",
|
|
243
|
-
lambda: application.cli.cached_sources(
|
|
246
|
+
lambda: application.cli.cached_sources(plan, options),
|
|
244
247
|
)
|
|
245
248
|
_, measurement["source_set_maintenance"] = self._phase(
|
|
246
249
|
repetition,
|
|
@@ -15,6 +15,7 @@ from .cli.cache.models.cache_outcome import CacheOutcome
|
|
|
15
15
|
from .cli.cache.models.cache_stage import CacheStage
|
|
16
16
|
from .cli.cache.models.cached_result import CachedResult
|
|
17
17
|
from .cli.facade import CliFacade
|
|
18
|
+
from .cli.pipeline.models.source_observation import SourceObservation
|
|
18
19
|
from .extraction.facade import ExtractionFacade
|
|
19
20
|
from .implementation.facade import ImplementationFacade
|
|
20
21
|
from .implementation.manifest.models.implementation_manifest import ImplementationManifest
|
|
@@ -57,6 +58,7 @@ __all__ = [
|
|
|
57
58
|
"SourceAssignedValueKind",
|
|
58
59
|
"SourceMemberKind",
|
|
59
60
|
"SourceManifestIdentity",
|
|
61
|
+
"SourceObservation",
|
|
60
62
|
"SourceRelationKind",
|
|
61
63
|
]
|
|
62
64
|
|
|
@@ -157,8 +159,18 @@ class ModwireApplication:
|
|
|
157
159
|
) -> CachedResult[CodeMap]:
|
|
158
160
|
"""Return a code map and public outcomes for extraction and complete-map reuse."""
|
|
159
161
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
+
observation = self.observe_sources(language, root, policy)
|
|
163
|
+
cached = self.generate_map_cached_from_observation_with_diagnostics(observation, options)
|
|
164
|
+
outcomes = tuple(outcome.model_copy(update={"source_observation_reused": False}) for outcome in cached.outcomes)
|
|
165
|
+
return CachedResult(value=cached.value, outcomes=outcomes)
|
|
166
|
+
|
|
167
|
+
def generate_map_cached_from_observation_with_diagnostics(
|
|
168
|
+
self, observation: SourceObservation, options: CacheOptions
|
|
169
|
+
) -> CachedResult[CodeMap]:
|
|
170
|
+
"""Return a cached code map derived from the exact supplied source observation."""
|
|
171
|
+
|
|
172
|
+
request = observation.request
|
|
173
|
+
plan = self.cli.prepare_cache(observation)
|
|
162
174
|
cached = self.cli.cached_code_map(plan, options)
|
|
163
175
|
outcome = cached.outcome(CacheStage.CODE_MAP)
|
|
164
176
|
if cached.value is not None:
|
|
@@ -171,14 +183,18 @@ class ModwireApplication:
|
|
|
171
183
|
),
|
|
172
184
|
)
|
|
173
185
|
else:
|
|
174
|
-
sources = self.cli.cached_sources(
|
|
186
|
+
sources = self.cli.cached_sources(plan, options)
|
|
175
187
|
self.cli.maintain_source_set(plan, options)
|
|
176
188
|
code_map = self.extraction.generate_map(request, sources.value)
|
|
177
189
|
self.cli.store_code_map(plan, code_map, options)
|
|
178
190
|
outcome = outcome.model_copy(update={"computed": 1, "stored": 1})
|
|
179
191
|
extraction_outcomes = sources.outcomes
|
|
180
192
|
self.cli.maintain_cache(options)
|
|
181
|
-
|
|
193
|
+
outcomes = tuple(
|
|
194
|
+
cache_outcome.model_copy(update={"source_observation_reused": True})
|
|
195
|
+
for cache_outcome in (*extraction_outcomes, outcome)
|
|
196
|
+
)
|
|
197
|
+
return CachedResult(value=code_map, outcomes=outcomes)
|
|
182
198
|
|
|
183
199
|
def generate_queryable_map_cached(
|
|
184
200
|
self, language: str, root: str, policy: ScanPolicy, options: CacheOptions
|
|
@@ -195,11 +211,24 @@ class ModwireApplication:
|
|
|
195
211
|
cached = self.generate_map_cached_with_diagnostics(language, root, policy, options)
|
|
196
212
|
return CachedResult(value=QueryableCodeMap(code_map=cached.value), outcomes=cached.outcomes)
|
|
197
213
|
|
|
214
|
+
def generate_queryable_map_cached_from_observation_with_diagnostics(
|
|
215
|
+
self, observation: SourceObservation, options: CacheOptions
|
|
216
|
+
) -> CachedResult[QueryableCodeMap]:
|
|
217
|
+
"""Return a queryable cached map derived from the exact supplied source observation."""
|
|
218
|
+
|
|
219
|
+
cached = self.generate_map_cached_from_observation_with_diagnostics(observation, options)
|
|
220
|
+
return CachedResult(value=QueryableCodeMap(code_map=cached.value), outcomes=cached.outcomes)
|
|
221
|
+
|
|
222
|
+
def observe_sources(self, language: str, root: str, policy: ScanPolicy) -> SourceObservation:
|
|
223
|
+
"""Observe one complete immutable canonical source inventory without parsing source."""
|
|
224
|
+
|
|
225
|
+
request = self.extraction.request(language, str(root))
|
|
226
|
+
return self.cli.observe(request, policy)
|
|
227
|
+
|
|
198
228
|
def source_manifest_identity(self, language: str, root: str, policy: ScanPolicy) -> SourceManifestIdentity:
|
|
199
229
|
"""Observe the current canonical source-manifest identity without parsing source."""
|
|
200
230
|
|
|
201
|
-
|
|
202
|
-
return self.cli.source_manifest_identity(request, policy)
|
|
231
|
+
return self.observe_sources(language, root, policy).identity()
|
|
203
232
|
|
|
204
233
|
def implementation_manifest(self, code_map: CodeMap, format: ManifestFormat) -> ImplementationManifestDocument:
|
|
205
234
|
"""Publish a deterministic, provenance-bearing implementation manifest."""
|
|
@@ -246,6 +275,7 @@ class ModwireApplication:
|
|
|
246
275
|
SourceAssignedValue,
|
|
247
276
|
SourceAssignedValueKind,
|
|
248
277
|
SourceManifestIdentity,
|
|
278
|
+
SourceObservation,
|
|
249
279
|
SourceMemberKind,
|
|
250
280
|
SourceRelationKind,
|
|
251
281
|
ImplementationManifest,
|
|
@@ -16,6 +16,7 @@ from ...shared.code.models.scan_policy import ScanPolicy
|
|
|
16
16
|
from ...shared.code.models.source_extraction import SourceExtraction
|
|
17
17
|
from ...shared.code.models.source_file import SourceFile
|
|
18
18
|
from ..pipeline.domain import SourceReader
|
|
19
|
+
from ..pipeline.models.source_observation import SourceObservation
|
|
19
20
|
from .domain import CacheStorage
|
|
20
21
|
from .models.cache_key import CacheKey
|
|
21
22
|
from .models.cache_options import CacheOptions
|
|
@@ -43,26 +44,26 @@ class CacheApplication:
|
|
|
43
44
|
self.reader.ensure_available(request.runtime)
|
|
44
45
|
return self.reader.extract_source(request, policy)
|
|
45
46
|
|
|
46
|
-
def prepare(self,
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
def prepare(self, observation: SourceObservation) -> CachePlan:
|
|
48
|
+
request = observation.request
|
|
49
|
+
policy = observation.manifest.policy
|
|
49
50
|
sources = tuple(
|
|
50
51
|
SourceCacheEntry(
|
|
51
52
|
entry=entry,
|
|
52
|
-
key=self.identity.source(request, policy,
|
|
53
|
+
key=self.identity.source(request, policy, observation.manifest.runtime, entry),
|
|
53
54
|
)
|
|
54
|
-
for entry in
|
|
55
|
+
for entry in observation.entries
|
|
55
56
|
)
|
|
56
57
|
return CachePlan(
|
|
57
58
|
language=request.runtime.descriptor.language,
|
|
58
|
-
|
|
59
|
+
observation=observation,
|
|
59
60
|
sources=sources,
|
|
60
|
-
source_set=self.identity.source_set(request,
|
|
61
|
+
source_set=self.identity.source_set(request, observation.manifest, sources),
|
|
61
62
|
)
|
|
62
63
|
|
|
63
|
-
def sources(
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
def sources(self, plan: CachePlan, options: CacheOptions) -> CachedResult[SourceExtraction]:
|
|
65
|
+
observation = plan.observation
|
|
66
|
+
request = observation.request
|
|
66
67
|
payloads = self.storage.read_many(options, tuple(source.key for source in plan.sources))
|
|
67
68
|
files: dict[FileId, SourceFile] = {}
|
|
68
69
|
misses: list[FileId] = []
|
|
@@ -86,9 +87,9 @@ class CacheApplication:
|
|
|
86
87
|
misses.append(source.entry.source_id)
|
|
87
88
|
self.storage.delete_many(options, tuple(invalid_keys))
|
|
88
89
|
|
|
89
|
-
if misses or not
|
|
90
|
+
if misses or not observation.entries:
|
|
90
91
|
self.reader.ensure_available(request.runtime)
|
|
91
|
-
extracted = self.reader.extract_entries(
|
|
92
|
+
extracted = self.reader.extract_entries(observation, tuple(misses))
|
|
92
93
|
writes: list[tuple[CacheKey, bytes]] = []
|
|
93
94
|
for source_id in misses:
|
|
94
95
|
source_file = extracted.get(source_id)
|
|
@@ -110,10 +111,10 @@ class CacheApplication:
|
|
|
110
111
|
extraction = SourceExtraction(
|
|
111
112
|
files=ordered_files,
|
|
112
113
|
modules=modules,
|
|
113
|
-
manifest=
|
|
114
|
-
files_found=
|
|
115
|
-
files_excluded=
|
|
116
|
-
directories_pruned=
|
|
114
|
+
manifest=observation.manifest,
|
|
115
|
+
files_found=observation.files_found,
|
|
116
|
+
files_excluded=observation.files_excluded,
|
|
117
|
+
directories_pruned=observation.directories_pruned,
|
|
117
118
|
)
|
|
118
119
|
return CachedResult(
|
|
119
120
|
value=extraction,
|
|
@@ -142,7 +143,7 @@ class CacheApplication:
|
|
|
142
143
|
cached_value, cached_invalidated = self._read(options, key)
|
|
143
144
|
try:
|
|
144
145
|
value = CodeMap.model_validate(cached_value)
|
|
145
|
-
if value.extraction.manifest != plan.
|
|
146
|
+
if value.extraction.manifest != plan.observation.manifest:
|
|
146
147
|
raise ValueError("Cached code map provenance does not match the current source manifest.")
|
|
147
148
|
outcome = CacheOutcome(stage=CacheStage.CODE_MAP, namespace=options.namespace, hits=1)
|
|
148
149
|
except (TypeError, ValueError, ValidationError):
|
|
@@ -11,7 +11,8 @@ class CacheOutcome(ValueModel):
|
|
|
11
11
|
reports its digest-backed source-set entries as extraction hits without loading
|
|
12
12
|
individual source payloads. Code-map and report counts describe one entry.
|
|
13
13
|
Invalidated entries are also misses. Diagnostics include the configured
|
|
14
|
-
namespace but never cache keys, source identities, or content.
|
|
14
|
+
namespace but never cache keys, source identities, or content. The reuse flag
|
|
15
|
+
states whether the exact supplied source observation drove the cache operation.
|
|
15
16
|
"""
|
|
16
17
|
|
|
17
18
|
stage: CacheStage
|
|
@@ -21,6 +22,7 @@ class CacheOutcome(ValueModel):
|
|
|
21
22
|
invalidated: int = 0
|
|
22
23
|
computed: int = 0
|
|
23
24
|
stored: int = 0
|
|
25
|
+
source_observation_reused: bool = False
|
|
24
26
|
|
|
25
27
|
@field_validator("namespace")
|
|
26
28
|
@classmethod
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
from ....shared.values.models.value_model import ValueModel
|
|
2
|
-
from ...pipeline.models.
|
|
2
|
+
from ...pipeline.models.source_observation import SourceObservation
|
|
3
3
|
from .cache_key import CacheKey
|
|
4
4
|
from .source_cache_entry import SourceCacheEntry
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class CachePlan(ValueModel):
|
|
8
8
|
language: str
|
|
9
|
-
|
|
9
|
+
observation: SourceObservation
|
|
10
10
|
sources: tuple[SourceCacheEntry, ...]
|
|
11
11
|
source_set: CacheKey
|
|
12
12
|
|
|
13
13
|
def source_set_value(self) -> dict[str, object]:
|
|
14
14
|
return {
|
|
15
|
-
"source_manifest": self.
|
|
15
|
+
"source_manifest": self.observation.manifest.digest,
|
|
16
16
|
"sources": [
|
|
17
17
|
{
|
|
18
18
|
"relative_path": source.entry.relative_path,
|
|
@@ -25,6 +25,7 @@ from .pipeline.application import PipelineApplication
|
|
|
25
25
|
from .pipeline.models.command_name import CommandName
|
|
26
26
|
from .pipeline.models.command_request import CommandRequest
|
|
27
27
|
from .pipeline.models.extractor_command_input import ExtractorCommandInput
|
|
28
|
+
from .pipeline.models.source_observation import SourceObservation
|
|
28
29
|
|
|
29
30
|
|
|
30
31
|
@injectable
|
|
@@ -52,19 +53,20 @@ class CliFacade:
|
|
|
52
53
|
def extract(self, request: ExtractionRequest, policy: ScanPolicy) -> SourceExtraction:
|
|
53
54
|
return self.pipeline.extract(request, policy)
|
|
54
55
|
|
|
56
|
+
def observe(self, request: ExtractionRequest, policy: ScanPolicy) -> SourceObservation:
|
|
57
|
+
return self.pipeline.observe(request, policy)
|
|
58
|
+
|
|
55
59
|
def source_manifest_identity(self, request: ExtractionRequest, policy: ScanPolicy) -> SourceManifestIdentity:
|
|
56
60
|
return self.pipeline.source_manifest_identity(request, policy)
|
|
57
61
|
|
|
58
62
|
def has_source_files(self, request: ExtractionRequest, policy: ScanPolicy) -> bool:
|
|
59
63
|
return self.pipeline.has_source_files(request, policy)
|
|
60
64
|
|
|
61
|
-
def prepare_cache(self,
|
|
62
|
-
return self.cache.prepare(
|
|
65
|
+
def prepare_cache(self, observation: SourceObservation) -> CachePlan:
|
|
66
|
+
return self.cache.prepare(observation)
|
|
63
67
|
|
|
64
|
-
def cached_sources(
|
|
65
|
-
self
|
|
66
|
-
) -> CachedResult[SourceExtraction]:
|
|
67
|
-
return self.cache.sources(request, plan, options)
|
|
68
|
+
def cached_sources(self, plan: CachePlan, options: CacheOptions) -> CachedResult[SourceExtraction]:
|
|
69
|
+
return self.cache.sources(plan, options)
|
|
68
70
|
|
|
69
71
|
def maintain_source_set(self, plan: CachePlan, options: CacheOptions) -> bool:
|
|
70
72
|
return self.cache.maintain_source_set(plan, options)
|
|
@@ -148,10 +150,11 @@ class CliFacade:
|
|
|
148
150
|
extraction = self.extract(extraction_request, policy)
|
|
149
151
|
code_map = self.extraction.generate_queryable_map(extraction_request, extraction)
|
|
150
152
|
return self.render(self.architecture.analyze(code_map, config), request.summary)
|
|
151
|
-
|
|
153
|
+
observation = self.observe(extraction_request, policy)
|
|
154
|
+
plan = self.prepare_cache(observation)
|
|
152
155
|
cached_code_map = self.cached_code_map(plan, cache_options).value
|
|
153
156
|
if cached_code_map is None:
|
|
154
|
-
extraction = self.cached_sources(
|
|
157
|
+
extraction = self.cached_sources(plan, cache_options).value
|
|
155
158
|
self.maintain_source_set(plan, cache_options)
|
|
156
159
|
cached_code_map = self.extraction.generate_map(extraction_request, extraction)
|
|
157
160
|
self.store_code_map(plan, cached_code_map, cache_options)
|
|
@@ -14,6 +14,7 @@ from .domain import ReportPipelineStep, SourceReader
|
|
|
14
14
|
from .models.command_request import CommandRequest
|
|
15
15
|
from .models.extractor_command_input import ExtractorCommandInput
|
|
16
16
|
from .models.report_pipeline_context import ReportPipelineContext
|
|
17
|
+
from .models.source_observation import SourceObservation
|
|
17
18
|
from .services.command_line import CommandLine
|
|
18
19
|
from .services.configuration_loader import ConfigurationLoader
|
|
19
20
|
from .services.extractor_command import ExtractorCommand
|
|
@@ -38,13 +39,12 @@ class PipelineApplication:
|
|
|
38
39
|
self.reader.ensure_available(request.runtime)
|
|
39
40
|
return self.reader.extract_source(request, policy)
|
|
40
41
|
|
|
41
|
-
def
|
|
42
|
+
def observe(self, request: ExtractionRequest, policy: ScanPolicy) -> SourceObservation:
|
|
42
43
|
self.reader.ensure_available(request.runtime)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
)
|
|
44
|
+
return self.reader.observe(request, policy)
|
|
45
|
+
|
|
46
|
+
def source_manifest_identity(self, request: ExtractionRequest, policy: ScanPolicy) -> SourceManifestIdentity:
|
|
47
|
+
return self.observe(request, policy).identity()
|
|
48
48
|
|
|
49
49
|
def has_source_files(self, request: ExtractionRequest, policy: ScanPolicy) -> bool:
|
|
50
50
|
self.reader.ensure_available(request.runtime)
|
|
@@ -7,7 +7,7 @@ from ...shared.code.models.scan_policy import ScanPolicy
|
|
|
7
7
|
from ...shared.code.models.source_extraction import SourceExtraction
|
|
8
8
|
from ...shared.code.models.source_file import SourceFile
|
|
9
9
|
from .models.report_pipeline_context import ReportPipelineContext
|
|
10
|
-
from .models.
|
|
10
|
+
from .models.source_observation import SourceObservation
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class ReportPipelineStep(ABC):
|
|
@@ -28,12 +28,12 @@ class SourceReader(ABC):
|
|
|
28
28
|
raise NotImplementedError
|
|
29
29
|
|
|
30
30
|
@abstractmethod
|
|
31
|
-
def
|
|
31
|
+
def observe(self, request: ExtractionRequest, policy: ScanPolicy) -> SourceObservation:
|
|
32
32
|
raise NotImplementedError
|
|
33
33
|
|
|
34
34
|
@abstractmethod
|
|
35
35
|
def extract_entries(
|
|
36
|
-
self,
|
|
36
|
+
self, observation: SourceObservation, source_ids: tuple[FileId, ...]
|
|
37
37
|
) -> dict[FileId, SourceFile]:
|
|
38
38
|
raise NotImplementedError
|
|
39
39
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from pydantic import Field
|
|
2
|
+
|
|
3
|
+
from ....extraction.extractors.models.extraction_request import ExtractionRequest
|
|
4
|
+
from ....shared.code.models.source_manifest import SourceManifest
|
|
5
|
+
from ....shared.code.models.source_manifest_identity import SourceManifestIdentity
|
|
6
|
+
from ....shared.values.models.value_model import ValueModel
|
|
7
|
+
from .source_entry import SourceEntry
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class SourceObservation(ValueModel):
|
|
11
|
+
"""Immutable canonical source inventory reusable by identity and cached map operations."""
|
|
12
|
+
|
|
13
|
+
request: ExtractionRequest
|
|
14
|
+
entries: tuple[SourceEntry, ...]
|
|
15
|
+
files_found: int = Field(ge=0)
|
|
16
|
+
files_excluded: int = Field(ge=0)
|
|
17
|
+
directories_pruned: int = Field(ge=0)
|
|
18
|
+
manifest: SourceManifest
|
|
19
|
+
|
|
20
|
+
def identity(self) -> SourceManifestIdentity:
|
|
21
|
+
"""Return the canonical public identity of this observed source manifest."""
|
|
22
|
+
|
|
23
|
+
return self.manifest.identity()
|