modwire 10.1.0__tar.gz → 11.0.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-10.1.0 → modwire-11.0.0}/.dev/modwire.egg-info/SOURCES.txt +15 -7
- {modwire-10.1.0 → modwire-11.0.0}/PKG-INFO +13 -1
- {modwire-10.1.0 → modwire-11.0.0}/README.md +12 -0
- modwire-11.0.0/docs/target-language-ownership.md +37 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/application.py +6 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/domain.py +0 -8
- modwire-10.1.0/src/modwire/extraction/extractors/services/php_extractor.py → modwire-11.0.0/src/modwire/extraction/extractors/php/extractor.py +5 -0
- modwire-11.0.0/src/modwire/extraction/extractors/python/assigned_value_reader.py +107 -0
- modwire-10.1.0/src/modwire/extraction/extractors/services/python_call_reader.py → modwire-11.0.0/src/modwire/extraction/extractors/python/call_reader.py +2 -2
- modwire-11.0.0/src/modwire/extraction/extractors/python/domain.py +27 -0
- modwire-11.0.0/src/modwire/extraction/extractors/python/expression_reference_reader.py +30 -0
- modwire-10.1.0/src/modwire/extraction/extractors/services/python_extractor.py → modwire-11.0.0/src/modwire/extraction/extractors/python/extractor.py +30 -6
- modwire-10.1.0/src/modwire/extraction/extractors/services/python_syntax_parser.py → modwire-11.0.0/src/modwire/extraction/extractors/python/syntax_parser.py +40 -4
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/php/script.php +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/php/script.src.php +10 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/typescript/script.js +4 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/typescript/script.ts +4 -0
- modwire-10.1.0/src/modwire/extraction/extractors/services/type_script_extractor.py → modwire-11.0.0/src/modwire/extraction/extractors/typescript/extractor.py +5 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/models/implementation_manifest.py +1 -1
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/models/manifest_attribute.py +3 -1
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/services/code_map_manifest_compiler.py +4 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/code_map.py +1 -1
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/fact_capability.py +1 -0
- modwire-11.0.0/src/modwire/shared/code/models/source_assigned_value.py +28 -0
- modwire-11.0.0/src/modwire/shared/code/models/source_assigned_value_kind.py +12 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_class_property.py +4 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/application/test_01_attacks.py +24 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/application/test_08_implementation_manifest.py +27 -4
- modwire-11.0.0/tests/application/test_10_assigned_value_evidence.py +108 -0
- modwire-11.0.0/tests/shared/__init__.py +0 -0
- modwire-11.0.0/tests/shared/code/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/shared/code/test_02_invariants.py +1 -1
- modwire-11.0.0/tests/support/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/support/code_map.py +1 -0
- modwire-10.1.0/docs/target-language-ownership.md +0 -35
- modwire-10.1.0/tests/architecture/report_benchmark/__init__.py +0 -1
- {modwire-10.1.0 → modwire-11.0.0}/.github/workflows/ci.yml +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/.github/workflows/release.yml +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/.gitignore +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/AGENTS.md +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/LICENSE +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/MANIFEST.in +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/Makefile +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/pyproject.toml +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/scripts/check_extractors.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/scripts/generate_docs.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/scripts/verify_consumer.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/setup.cfg +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/setup.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/__main__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/boundaries/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/boundaries/application.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/boundaries/domain.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/boundaries/models/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/boundaries/models/edge_rule_violation.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/boundaries/models/flow_report.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/boundaries/models/flow_violation.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/boundaries/models/types.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/boundaries/services/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/boundaries/services/backward_flow_analyzer.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/boundaries/services/boundaries_flow_analyzer.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/boundaries/services/module_boundary_analyzer.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/boundaries/services/no_cycles_flow_analyzer.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/boundaries/services/no_reentry_flow_analyzer.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/config/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/config/application.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/config/models/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/config/models/architecture_config.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/config/models/boundaries_config.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/config/models/boundary_rule.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/config/models/configuration_value.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/config/models/flow_realm.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/config/models/flow_rules.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/config/models/shape_config.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/config/models/shape_realm.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/config/models/shape_rules.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/config/models/tag_rule.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/facade.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/application.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/domain.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/models/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/models/callable_report_entry.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/models/callables_report.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/models/clusters_report.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/models/clusters_report_item.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/models/coherence_report.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/models/exports_report.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/models/exports_report_item.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/models/hotspots_report.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/models/hotspots_report_item.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/models/insight_report.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/services/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/services/callables_reporter.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/services/clusters_reporter.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/services/coherence_reporter.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/services/exports_reporter.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/services/hotspots_reporter.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/insights/services/insight_report_field_map.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/map/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/map/application.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/map/domain.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/map/models/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/map/models/architecture_map.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/map/models/architecture_realm.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/map/models/tag_map.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/map/models/tag_match.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/map/services/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/map/services/architecture_map_loader.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/map/services/tag_matcher.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/report/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/report/application.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/report/domain.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/report/models/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/report/models/architecture_group.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/report/models/map_report.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/report/models/report_catalog.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/report/models/report_descriptor.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/report/models/report_item.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/report/models/report_metadata.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/report/models/report_node.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/report/models/report_section.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/report/services/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/report/services/map_report_collector.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/application.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/domain.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/models/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/models/shape_realm_architecture_map.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/models/shape_report.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/models/shape_violation.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/services/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/services/abstract_class_resolver.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/services/callable_resolver.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/services/class_resolver.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/services/file_resolver.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/services/import_resolver.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/services/property_resolver.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/services/signature_resolver.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/architecture/shape/services/symbol_resolver.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/autowiring.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/application.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/domain.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/models/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/models/cache_entry.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/models/cache_key.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/models/cache_kind.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/models/cache_options.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/models/cache_outcome.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/models/cache_plan.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/models/cache_stage.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/models/cache_storage_state.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/models/cached_result.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/models/source_cache_entry.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/services/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/services/cache_codec.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/services/cache_identity.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/cache/services/filesystem_cache_storage.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/documentation/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/documentation/application.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/documentation/services/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/documentation/services/documentation_generator.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/facade.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/initialization/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/initialization/application.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/initialization/models/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/initialization/models/initialization_result.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/initialization/services/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/initialization/services/initialization_service.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/application.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/domain.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/models/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/models/command_request.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/models/extractor_batch_input.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/models/extractor_command_input.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/models/extractor_source_input.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/models/report_pipeline_context.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/models/source_entry.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/models/source_inventory.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/batch_source_reader.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/callables_insight.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/clusters_insight.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/coherence_insight.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/command_line.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/configuration_loader.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/extractor_command.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/flow_violations.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/hotspots_insight.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/map_tree.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/output_console.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/shape_violations.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/source_manifest_builder.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/success.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/unknown_files_warning.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/pipeline/services/unused_exports_insight.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/resources/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/resources/application.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/resources/models/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/resources/models/defaults.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/resources/models/init_asset.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/resources/templates/AGENTS.md +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/resources/templates/ARCHITECTURE.md +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/resources/templates/INDEX.md +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/resources/templates/MODWIRE.md +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/resources/templates/RULES.md +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/resources/templates/TESTING.md +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/resources/templates/WORKFLOW.md +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/cli/resources/templates/architecture.yaml +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/dependency/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/dependency/application.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/dependency/domain.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/dependency/services/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/dependency/services/graph_builder.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/dependency/services/import_identity_index.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/dependency/services/import_resolver.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/application.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/models/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/models/batch_config.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/models/extraction_request.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/models/extractor_resource.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/models/extractor_resource_set.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/models/extractor_runtime.py +0 -0
- {modwire-10.1.0/src/modwire/implementation → modwire-11.0.0/src/modwire/extraction/extractors/php}/__init__.py +0 -0
- {modwire-10.1.0/src/modwire/shared → modwire-11.0.0/src/modwire/extraction/extractors/python}/__init__.py +0 -0
- /modwire-10.1.0/src/modwire/extraction/extractors/models/python_call_context.py → /modwire-11.0.0/src/modwire/extraction/extractors/python/call_context.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/php/build.php +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/php/build.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/php/composer.json +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/php/composer.lock +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/python/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/python/script.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/typescript/build.mjs +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/typescript/build.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/typescript/package-lock.json +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/typescript/package.json +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/typescript/tsconfig.json +0 -0
- {modwire-10.1.0/src/modwire/shared/values/models → modwire-11.0.0/src/modwire/extraction/extractors/typescript}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/facade.py +0 -0
- {modwire-10.1.0/tests → modwire-11.0.0/src/modwire/implementation}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/facade.py +0 -0
- {modwire-10.1.0/src/modwire/extraction/extractors/services → modwire-11.0.0/src/modwire/implementation/manifest}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/application.py +0 -0
- {modwire-10.1.0/src/modwire/implementation/manifest → modwire-11.0.0/src/modwire/implementation/manifest/contracts}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/contracts/manifest_compiler.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/contracts/manifest_serializer.py +0 -0
- {modwire-10.1.0/src/modwire/implementation/manifest/contracts → modwire-11.0.0/src/modwire/implementation/manifest/models}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/models/digest_algorithm.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/models/implementation_manifest_document.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/models/manifest_annotation.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/models/manifest_callable.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/models/manifest_dependency.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/models/manifest_format.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/models/manifest_inheritance.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/models/manifest_parameter.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/models/manifest_span.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/models/manifest_symbol.py +0 -0
- {modwire-10.1.0/src/modwire/implementation/manifest/models → modwire-11.0.0/src/modwire/implementation/manifest/services}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/implementation/manifest/services/canonical_json_manifest_serializer.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/py.typed +0 -0
- {modwire-10.1.0/tests/application → modwire-11.0.0/src/modwire/shared}/__init__.py +0 -0
- {modwire-10.1.0/src/modwire/implementation/manifest/services → modwire-11.0.0/src/modwire/shared/code}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/application.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/domain.py +0 -0
- {modwire-10.1.0/src/modwire/shared/code → modwire-11.0.0/src/modwire/shared/code/models}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/capability_coverage.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/capability_status.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/code_map_producer.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/code_package.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/declaration_family.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/declaration_identity.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/dependency_edge_result.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/dependency_graph.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/dependency_node_result.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/duplicate_identity_error.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/edge.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/edge_resolution.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/extractor_descriptor.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/identity.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/node.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/query_builder.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/query_types.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/queryable_code_map.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/runtime_observation.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/scan_policy.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_abstract_class.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_artifact.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_call.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_callable.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_callable_symbol.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_class.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_class_method.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_export.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_extraction.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_file.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_file_result.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_function.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_import.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_imported_symbol.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_inheritance.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_interface.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_item_result.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_manifest.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_manifest_identity.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_member_kind.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_parameter.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_relation_kind.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_signature.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_symbol.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_type.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_value.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/source_value_scope.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/models/types.py +0 -0
- {modwire-10.1.0/src/modwire/shared/code/models → modwire-11.0.0/src/modwire/shared/code/services}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/services/glob_path_matcher.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/services/identity_resolver.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/code/services/installed_package_version.py +0 -0
- {modwire-10.1.0/src/modwire/shared/code/services → modwire-11.0.0/src/modwire/shared/values}/__init__.py +0 -0
- {modwire-10.1.0/tests/architecture → modwire-11.0.0/src/modwire/shared/values/models}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/src/modwire/shared/values/models/value_model.py +0 -0
- {modwire-10.1.0/tests/architecture/boundaries → modwire-11.0.0/tests}/__init__.py +0 -0
- {modwire-10.1.0/tests/architecture/config → modwire-11.0.0/tests/application}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/application/base_test.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/application/test_06_happy_path.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/application/test_07_cache.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/application/test_09_source_manifest_identity.py +0 -0
- {modwire-10.1.0/tests/architecture/insights → modwire-11.0.0/tests/architecture}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/base_test.py +0 -0
- {modwire-10.1.0/tests/architecture/map → modwire-11.0.0/tests/architecture/boundaries}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/boundaries/base_test.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/boundaries/test_01_attacks.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/boundaries/test_02_invariants.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/boundaries/test_03_public_api.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/boundaries/test_04_paths.py +0 -0
- {modwire-10.1.0/tests/architecture/report → modwire-11.0.0/tests/architecture/config}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/config/test_01_attacks.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/config/test_02_invariants.py +0 -0
- {modwire-10.1.0/tests/architecture/shape → modwire-11.0.0/tests/architecture/insights}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/insights/base_test.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/insights/test_02_invariants.py +0 -0
- {modwire-10.1.0/tests/cli → modwire-11.0.0/tests/architecture/map}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/map/test_02_patterns.py +0 -0
- {modwire-10.1.0/tests/cli/documentation → modwire-11.0.0/tests/architecture/report}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/report/test_02_invariants.py +0 -0
- {modwire-10.1.0/src/modwire/shared/values → modwire-11.0.0/tests/architecture/report_benchmark}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/report_benchmark/benchmark_process_timeout.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/report_benchmark/run.py +0 -0
- {modwire-10.1.0/tests/cli/initialization → modwire-11.0.0/tests/architecture/shape}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/shape/base_test.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/shape/test_01_limits.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/architecture/shape/test_02_invariants.py +0 -0
- {modwire-10.1.0/tests/cli/pipeline → modwire-11.0.0/tests/cli}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/cli/base_test.py +0 -0
- {modwire-10.1.0/tests/extraction → modwire-11.0.0/tests/cli/documentation}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/cli/documentation/test_02_invariants.py +0 -0
- {modwire-10.1.0/tests/extraction/big_projects → modwire-11.0.0/tests/cli/initialization}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/cli/initialization/test_01_attacks.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/cli/initialization/test_02_invariants.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/cli/initialization/test_03_interruption.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/cli/initialization/test_04_cleanup.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/cli/initialization/test_05_recovery.py +0 -0
- {modwire-10.1.0/tests/extraction/cache_benchmark → modwire-11.0.0/tests/cli/pipeline}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/cli/pipeline/base_test.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/cli/pipeline/test_01_attacks.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/cli/pipeline/test_02_invariants.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/cli/pipeline/test_03_interruption.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/cli/pipeline/test_04_command_transport.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/cli/pipeline/test_05_recovery.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/cli/pipeline/test_06_happy_path.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/conftest.py +0 -0
- {modwire-10.1.0/tests/extraction/dependency → modwire-11.0.0/tests/extraction}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/extraction/base_test.py +0 -0
- {modwire-10.1.0/tests/extraction/extractors → modwire-11.0.0/tests/extraction/big_projects}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/extraction/big_projects/project.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/extraction/big_projects/projects.json +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/extraction/big_projects/resolution_results.json +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/extraction/big_projects/results.json +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/extraction/big_projects/run.py +0 -0
- {modwire-10.1.0/tests/extraction/scan_benchmark → modwire-11.0.0/tests/extraction/cache_benchmark}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/extraction/cache_benchmark/benchmark_process_timeout.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/extraction/cache_benchmark/run.py +0 -0
- {modwire-10.1.0/tests/shared → modwire-11.0.0/tests/extraction/dependency}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/extraction/dependency/test_02_invariants.py +0 -0
- {modwire-10.1.0/tests/shared/code → modwire-11.0.0/tests/extraction/extractors}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/extraction/extractors/test_01_attacks.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/extraction/extractors/test_02_invariants.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/extraction/extractors/test_03_native_symbols.py +0 -0
- {modwire-10.1.0/tests/support → modwire-11.0.0/tests/extraction/scan_benchmark}/__init__.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/extraction/scan_benchmark/prepare.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/extraction/scan_benchmark/results.json +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/extraction/scan_benchmark/run.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/php/ignored/example_generated.php +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/php/src/example_application/example_actions/example_action.php +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/php/src/example_domain/example_model/example_record.php +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/php/src/example_domain/example_services/example_policy.php +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/php/src/example_interfaces/example_http/example_controller.php +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/python/ignored/example_generated.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/python/src/example_application/example_actions/example_action.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/python/src/example_domain/example_model/example_record.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/python/src/example_domain/example_services/example_policy.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/python/src/example_interfaces/example_http/example_controller.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/typescript/ignored/example_generated.ts +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/typescript/src/example_application/example_actions/example_action.ts +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_model/example_record.ts +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_model/example_view.tsx +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_audit.js +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_callables.ts +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/typescript/src/example_domain/example_services/example_policy.ts +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_controller.ts +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/languages/typescript/src/example_interfaces/example_http/example_view.jsx +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/syntax/php/example_shapes.php +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/syntax/python/example_shapes.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/fixtures/syntax/typescript/example_shapes.ts +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/support/base_test.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/tests/support/service_test.py +0 -0
- {modwire-10.1.0 → modwire-11.0.0}/uv.lock +0 -0
|
@@ -199,7 +199,16 @@ src/modwire/extraction/extractors/models/extraction_request.py
|
|
|
199
199
|
src/modwire/extraction/extractors/models/extractor_resource.py
|
|
200
200
|
src/modwire/extraction/extractors/models/extractor_resource_set.py
|
|
201
201
|
src/modwire/extraction/extractors/models/extractor_runtime.py
|
|
202
|
-
src/modwire/extraction/extractors/
|
|
202
|
+
src/modwire/extraction/extractors/php/__init__.py
|
|
203
|
+
src/modwire/extraction/extractors/php/extractor.py
|
|
204
|
+
src/modwire/extraction/extractors/python/__init__.py
|
|
205
|
+
src/modwire/extraction/extractors/python/assigned_value_reader.py
|
|
206
|
+
src/modwire/extraction/extractors/python/call_context.py
|
|
207
|
+
src/modwire/extraction/extractors/python/call_reader.py
|
|
208
|
+
src/modwire/extraction/extractors/python/domain.py
|
|
209
|
+
src/modwire/extraction/extractors/python/expression_reference_reader.py
|
|
210
|
+
src/modwire/extraction/extractors/python/extractor.py
|
|
211
|
+
src/modwire/extraction/extractors/python/syntax_parser.py
|
|
203
212
|
src/modwire/extraction/extractors/resources/__init__.py
|
|
204
213
|
src/modwire/extraction/extractors/resources/php/build.php
|
|
205
214
|
src/modwire/extraction/extractors/resources/php/build.py
|
|
@@ -216,12 +225,8 @@ src/modwire/extraction/extractors/resources/typescript/package.json
|
|
|
216
225
|
src/modwire/extraction/extractors/resources/typescript/script.js
|
|
217
226
|
src/modwire/extraction/extractors/resources/typescript/script.ts
|
|
218
227
|
src/modwire/extraction/extractors/resources/typescript/tsconfig.json
|
|
219
|
-
src/modwire/extraction/extractors/
|
|
220
|
-
src/modwire/extraction/extractors/
|
|
221
|
-
src/modwire/extraction/extractors/services/python_call_reader.py
|
|
222
|
-
src/modwire/extraction/extractors/services/python_extractor.py
|
|
223
|
-
src/modwire/extraction/extractors/services/python_syntax_parser.py
|
|
224
|
-
src/modwire/extraction/extractors/services/type_script_extractor.py
|
|
228
|
+
src/modwire/extraction/extractors/typescript/__init__.py
|
|
229
|
+
src/modwire/extraction/extractors/typescript/extractor.py
|
|
225
230
|
src/modwire/implementation/__init__.py
|
|
226
231
|
src/modwire/implementation/facade.py
|
|
227
232
|
src/modwire/implementation/manifest/__init__.py
|
|
@@ -274,6 +279,8 @@ src/modwire/shared/code/models/runtime_observation.py
|
|
|
274
279
|
src/modwire/shared/code/models/scan_policy.py
|
|
275
280
|
src/modwire/shared/code/models/source_abstract_class.py
|
|
276
281
|
src/modwire/shared/code/models/source_artifact.py
|
|
282
|
+
src/modwire/shared/code/models/source_assigned_value.py
|
|
283
|
+
src/modwire/shared/code/models/source_assigned_value_kind.py
|
|
277
284
|
src/modwire/shared/code/models/source_call.py
|
|
278
285
|
src/modwire/shared/code/models/source_callable.py
|
|
279
286
|
src/modwire/shared/code/models/source_callable_symbol.py
|
|
@@ -317,6 +324,7 @@ tests/application/test_06_happy_path.py
|
|
|
317
324
|
tests/application/test_07_cache.py
|
|
318
325
|
tests/application/test_08_implementation_manifest.py
|
|
319
326
|
tests/application/test_09_source_manifest_identity.py
|
|
327
|
+
tests/application/test_10_assigned_value_evidence.py
|
|
320
328
|
tests/architecture/__init__.py
|
|
321
329
|
tests/architecture/base_test.py
|
|
322
330
|
tests/architecture/boundaries/__init__.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: modwire
|
|
3
|
-
Version:
|
|
3
|
+
Version: 11.0.0
|
|
4
4
|
Summary: Code extraction, architecture analysis and the Modwire CLI.
|
|
5
5
|
Author: Tomasz Szpak
|
|
6
6
|
License-Expression: MIT
|
|
@@ -158,6 +158,18 @@ Generic persistent-cache settings supplied by a caller.
|
|
|
158
158
|
|
|
159
159
|
Caller-owned filesystem traversal policy with explicit exclusions and opt-in symlink following.
|
|
160
160
|
|
|
161
|
+
## `SourceAssignedValue`
|
|
162
|
+
|
|
163
|
+
Language-neutral evidence observed at one class-property assignment site.
|
|
164
|
+
|
|
165
|
+
### `validate_state`
|
|
166
|
+
|
|
167
|
+
Require the expression and reference fields appropriate to the evidence kind.
|
|
168
|
+
|
|
169
|
+
## `SourceAssignedValueKind`
|
|
170
|
+
|
|
171
|
+
Kinds of class-property assignment evidence published by extractors.
|
|
172
|
+
|
|
161
173
|
## `SourceManifestIdentity`
|
|
162
174
|
|
|
163
175
|
Canonical identity of one observed source manifest.
|
|
@@ -130,6 +130,18 @@ Generic persistent-cache settings supplied by a caller.
|
|
|
130
130
|
|
|
131
131
|
Caller-owned filesystem traversal policy with explicit exclusions and opt-in symlink following.
|
|
132
132
|
|
|
133
|
+
## `SourceAssignedValue`
|
|
134
|
+
|
|
135
|
+
Language-neutral evidence observed at one class-property assignment site.
|
|
136
|
+
|
|
137
|
+
### `validate_state`
|
|
138
|
+
|
|
139
|
+
Require the expression and reference fields appropriate to the evidence kind.
|
|
140
|
+
|
|
141
|
+
## `SourceAssignedValueKind`
|
|
142
|
+
|
|
143
|
+
Kinds of class-property assignment evidence published by extractors.
|
|
144
|
+
|
|
133
145
|
## `SourceManifestIdentity`
|
|
134
146
|
|
|
135
147
|
Canonical identity of one observed source manifest.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Target-language ownership
|
|
2
|
+
|
|
3
|
+
Modwire is hosted and distributed as a Python package. References to Python versions, Python packaging, type checking,
|
|
4
|
+
and Python-based development commands are host concerns rather than analyzed-language behavior.
|
|
5
|
+
|
|
6
|
+
All analyzed-language facts belong to extractor-owned locations:
|
|
7
|
+
|
|
8
|
+
- `src/modwire/extraction/extractors/{python,typescript,php}/` gives every extractor an owned package for its
|
|
9
|
+
contracts, context, adapters, registration, target identity, file extensions, runtime commands, parser selection,
|
|
10
|
+
and batch policy. Filenames rely on that package context; class names retain their explicit language intent.
|
|
11
|
+
- `src/modwire/extraction/extractors/resources/` owns parser programs, dependency manifests, generated executables,
|
|
12
|
+
and build adapters.
|
|
13
|
+
- `tests/fixtures/languages/` and extractor integration tests own language-specific validation inputs.
|
|
14
|
+
- `tests/extraction/big_projects/projects.json` owns pinned language-specific production fixtures.
|
|
15
|
+
|
|
16
|
+
Shared code, dependency resolution, architecture analysis, traversal, consumer verification, benchmarks, and CI
|
|
17
|
+
orchestration must not contain supported-language tables, runtime commands, extension tables, or language-selection
|
|
18
|
+
branches. Callers select a registered extractor explicitly.
|
|
19
|
+
|
|
20
|
+
## Shared contract version 6
|
|
21
|
+
|
|
22
|
+
The class-level `CodeMap.schema_version` is `6`. Every class property carries ordered, language-neutral assigned-value
|
|
23
|
+
evidence. Evidence distinguishes unassigned declarations, calls, references, literals, unresolved expressions, and
|
|
24
|
+
extractors that do not support the fact yet. Every runtime `SourceValue` declares a language-neutral `module`, `local`,
|
|
25
|
+
or `member` scope. Extractors distinguish variable assignments from constants and keep type aliases and export metadata
|
|
26
|
+
out of runtime values. Callable kinds are `function`, `instance_method`, `type_method`, `static_method`, `constructor`,
|
|
27
|
+
`callable_value`, and `anonymous`. Parameter kinds are `positional`, `variadic_positional`, `named_only`, and
|
|
28
|
+
`variadic_named`.
|
|
29
|
+
|
|
30
|
+
Earlier serialized maps do not satisfy the current contract. Regenerate them from source with the same registered
|
|
31
|
+
extractor; the cache identity includes the code-map schema and invalidates older maps instead of migrating them silently.
|
|
32
|
+
|
|
33
|
+
## Adding an extractor
|
|
34
|
+
|
|
35
|
+
Add one automatic Wireup `SourceExtractor` registration, its extractor-owned resources and optional `build.py`
|
|
36
|
+
adapter, and extractor integration fixtures. Package data and the generic build runner discover those resources without
|
|
37
|
+
changes to shared services, CLI traversal, architecture analysis, the top-level Makefile, or CI orchestration.
|
|
@@ -29,6 +29,8 @@ from .shared.code.models.declaration_identity import DeclarationIdentity
|
|
|
29
29
|
from .shared.code.models.fact_capability import FactCapability
|
|
30
30
|
from .shared.code.models.queryable_code_map import QueryableCodeMap
|
|
31
31
|
from .shared.code.models.scan_policy import ScanPolicy
|
|
32
|
+
from .shared.code.models.source_assigned_value import SourceAssignedValue
|
|
33
|
+
from .shared.code.models.source_assigned_value_kind import SourceAssignedValueKind
|
|
32
34
|
from .shared.code.models.source_manifest_identity import SourceManifestIdentity
|
|
33
35
|
from .shared.code.models.source_member_kind import SourceMemberKind
|
|
34
36
|
from .shared.code.models.source_relation_kind import SourceRelationKind
|
|
@@ -51,6 +53,8 @@ __all__ = [
|
|
|
51
53
|
"ModwireApplication",
|
|
52
54
|
"QueryableCodeMap",
|
|
53
55
|
"ScanPolicy",
|
|
56
|
+
"SourceAssignedValue",
|
|
57
|
+
"SourceAssignedValueKind",
|
|
54
58
|
"SourceMemberKind",
|
|
55
59
|
"SourceManifestIdentity",
|
|
56
60
|
"SourceRelationKind",
|
|
@@ -239,6 +243,8 @@ class ModwireApplication:
|
|
|
239
243
|
CachedResult,
|
|
240
244
|
CacheOptions,
|
|
241
245
|
ScanPolicy,
|
|
246
|
+
SourceAssignedValue,
|
|
247
|
+
SourceAssignedValueKind,
|
|
242
248
|
SourceManifestIdentity,
|
|
243
249
|
SourceMemberKind,
|
|
244
250
|
SourceRelationKind,
|
|
@@ -1,17 +1,9 @@
|
|
|
1
|
-
import ast
|
|
2
1
|
from abc import ABC, abstractmethod
|
|
3
2
|
|
|
4
3
|
from ...shared.code.models.identity import ModuleId
|
|
5
4
|
from ...shared.code.models.source_file import SourceFile
|
|
6
5
|
from .models.batch_config import BatchConfig
|
|
7
6
|
from .models.extractor_runtime import ExtractorRuntime
|
|
8
|
-
from .models.python_call_context import PythonCallContext
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class PythonCallReader(ABC):
|
|
12
|
-
@abstractmethod
|
|
13
|
-
def collect(self, node: ast.AST, context: PythonCallContext) -> list[dict[str, object]]:
|
|
14
|
-
raise NotImplementedError
|
|
15
7
|
|
|
16
8
|
|
|
17
9
|
class SourceParser(ABC):
|
|
@@ -70,6 +70,11 @@ class PhpExtractor(SourceExtractor):
|
|
|
70
70
|
"and member kind are extracted."
|
|
71
71
|
),
|
|
72
72
|
),
|
|
73
|
+
CapabilityCoverage(
|
|
74
|
+
capability=FactCapability.ASSIGNED_VALUES,
|
|
75
|
+
status=CapabilityStatus.UNSUPPORTED,
|
|
76
|
+
explanation="PHP property assigned-value evidence is not extracted yet.",
|
|
77
|
+
),
|
|
73
78
|
CapabilityCoverage(
|
|
74
79
|
capability=FactCapability.INHERITANCE,
|
|
75
80
|
status=CapabilityStatus.SUPPORTED,
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import ast
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from functools import singledispatchmethod
|
|
4
|
+
|
|
5
|
+
from wireup import injectable
|
|
6
|
+
|
|
7
|
+
from ....shared.code.models.source_assigned_value import SourceAssignedValue
|
|
8
|
+
from ....shared.code.models.source_assigned_value_kind import SourceAssignedValueKind
|
|
9
|
+
from .domain import PythonAssignedValueReader, PythonExpressionReferenceReader
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@injectable(as_type=PythonAssignedValueReader)
|
|
13
|
+
@dataclass(frozen=True)
|
|
14
|
+
class SyntaxAssignedValueReader(PythonAssignedValueReader):
|
|
15
|
+
references: PythonExpressionReferenceReader
|
|
16
|
+
|
|
17
|
+
def read(self, node: ast.expr) -> SourceAssignedValue:
|
|
18
|
+
return self.visit(node)
|
|
19
|
+
|
|
20
|
+
def unassigned(self) -> SourceAssignedValue:
|
|
21
|
+
return SourceAssignedValue(kind=SourceAssignedValueKind.UNASSIGNED, expression="", reference="")
|
|
22
|
+
|
|
23
|
+
@singledispatchmethod
|
|
24
|
+
def visit(self, node: ast.AST) -> SourceAssignedValue:
|
|
25
|
+
return self.generic_visit(node)
|
|
26
|
+
|
|
27
|
+
@visit.register
|
|
28
|
+
def visit_Call(self, node: ast.Call) -> SourceAssignedValue:
|
|
29
|
+
expression = ast.unparse(node)
|
|
30
|
+
reference = self.references.read(node.func)
|
|
31
|
+
if not reference:
|
|
32
|
+
return SourceAssignedValue(
|
|
33
|
+
kind=SourceAssignedValueKind.UNRESOLVED,
|
|
34
|
+
expression=expression,
|
|
35
|
+
reference="",
|
|
36
|
+
)
|
|
37
|
+
return SourceAssignedValue(
|
|
38
|
+
kind=SourceAssignedValueKind.CALL,
|
|
39
|
+
expression=expression,
|
|
40
|
+
reference=reference,
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
@visit.register
|
|
44
|
+
def visit_Name(self, node: ast.Name) -> SourceAssignedValue:
|
|
45
|
+
return SourceAssignedValue(
|
|
46
|
+
kind=SourceAssignedValueKind.REFERENCE,
|
|
47
|
+
expression=ast.unparse(node),
|
|
48
|
+
reference=self.references.read(node),
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
@visit.register
|
|
52
|
+
def visit_Attribute(self, node: ast.Attribute) -> SourceAssignedValue:
|
|
53
|
+
reference = self.references.read(node)
|
|
54
|
+
if not reference:
|
|
55
|
+
return self.generic_visit(node)
|
|
56
|
+
return SourceAssignedValue(
|
|
57
|
+
kind=SourceAssignedValueKind.REFERENCE,
|
|
58
|
+
expression=ast.unparse(node),
|
|
59
|
+
reference=reference,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
@visit.register
|
|
63
|
+
def visit_Constant(self, node: ast.Constant) -> SourceAssignedValue:
|
|
64
|
+
return SourceAssignedValue(
|
|
65
|
+
kind=SourceAssignedValueKind.LITERAL,
|
|
66
|
+
expression=ast.unparse(node),
|
|
67
|
+
reference="",
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
@visit.register
|
|
71
|
+
def visit_List(self, node: ast.List) -> SourceAssignedValue:
|
|
72
|
+
return SourceAssignedValue(
|
|
73
|
+
kind=SourceAssignedValueKind.LITERAL,
|
|
74
|
+
expression=ast.unparse(node),
|
|
75
|
+
reference="",
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
@visit.register
|
|
79
|
+
def visit_Tuple(self, node: ast.Tuple) -> SourceAssignedValue:
|
|
80
|
+
return SourceAssignedValue(
|
|
81
|
+
kind=SourceAssignedValueKind.LITERAL,
|
|
82
|
+
expression=ast.unparse(node),
|
|
83
|
+
reference="",
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
@visit.register
|
|
87
|
+
def visit_Set(self, node: ast.Set) -> SourceAssignedValue:
|
|
88
|
+
return SourceAssignedValue(
|
|
89
|
+
kind=SourceAssignedValueKind.LITERAL,
|
|
90
|
+
expression=ast.unparse(node),
|
|
91
|
+
reference="",
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
@visit.register
|
|
95
|
+
def visit_Dict(self, node: ast.Dict) -> SourceAssignedValue:
|
|
96
|
+
return SourceAssignedValue(
|
|
97
|
+
kind=SourceAssignedValueKind.LITERAL,
|
|
98
|
+
expression=ast.unparse(node),
|
|
99
|
+
reference="",
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
def generic_visit(self, node: ast.AST) -> SourceAssignedValue:
|
|
103
|
+
return SourceAssignedValue(
|
|
104
|
+
kind=SourceAssignedValueKind.UNRESOLVED,
|
|
105
|
+
expression=ast.unparse(node),
|
|
106
|
+
reference="",
|
|
107
|
+
)
|
|
@@ -3,8 +3,8 @@ from dataclasses import dataclass
|
|
|
3
3
|
|
|
4
4
|
from wireup import injectable
|
|
5
5
|
|
|
6
|
-
from
|
|
7
|
-
from
|
|
6
|
+
from .call_context import PythonCallContext
|
|
7
|
+
from .domain import PythonCallReader
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
@injectable(as_type=PythonCallReader)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import ast
|
|
2
|
+
from abc import ABC, abstractmethod
|
|
3
|
+
|
|
4
|
+
from ....shared.code.models.source_assigned_value import SourceAssignedValue
|
|
5
|
+
from .call_context import PythonCallContext
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class PythonCallReader(ABC):
|
|
9
|
+
@abstractmethod
|
|
10
|
+
def collect(self, node: ast.AST, context: PythonCallContext) -> list[dict[str, object]]:
|
|
11
|
+
raise NotImplementedError
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class PythonExpressionReferenceReader(ABC):
|
|
15
|
+
@abstractmethod
|
|
16
|
+
def read(self, node: ast.expr) -> str:
|
|
17
|
+
raise NotImplementedError
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class PythonAssignedValueReader(ABC):
|
|
21
|
+
@abstractmethod
|
|
22
|
+
def read(self, node: ast.expr) -> SourceAssignedValue:
|
|
23
|
+
raise NotImplementedError
|
|
24
|
+
|
|
25
|
+
@abstractmethod
|
|
26
|
+
def unassigned(self) -> SourceAssignedValue:
|
|
27
|
+
raise NotImplementedError
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import ast
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
from functools import singledispatchmethod
|
|
4
|
+
|
|
5
|
+
from wireup import injectable
|
|
6
|
+
|
|
7
|
+
from .domain import PythonExpressionReferenceReader
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@injectable(as_type=PythonExpressionReferenceReader)
|
|
11
|
+
@dataclass(frozen=True)
|
|
12
|
+
class SyntaxExpressionReferenceReader(PythonExpressionReferenceReader):
|
|
13
|
+
def read(self, node: ast.expr) -> str:
|
|
14
|
+
return self.visit(node)
|
|
15
|
+
|
|
16
|
+
@singledispatchmethod
|
|
17
|
+
def visit(self, node: ast.AST) -> str:
|
|
18
|
+
return self.generic_visit(node)
|
|
19
|
+
|
|
20
|
+
@visit.register
|
|
21
|
+
def visit_Name(self, node: ast.Name) -> str:
|
|
22
|
+
return node.id
|
|
23
|
+
|
|
24
|
+
@visit.register
|
|
25
|
+
def visit_Attribute(self, node: ast.Attribute) -> str:
|
|
26
|
+
parent = self.read(node.value)
|
|
27
|
+
return f"{parent}.{node.attr}" if parent else ""
|
|
28
|
+
|
|
29
|
+
def generic_visit(self, node: ast.AST) -> str:
|
|
30
|
+
return ""
|
|
@@ -71,6 +71,14 @@ class PythonExtractor(SourceExtractor):
|
|
|
71
71
|
"are extracted."
|
|
72
72
|
),
|
|
73
73
|
),
|
|
74
|
+
CapabilityCoverage(
|
|
75
|
+
capability=FactCapability.ASSIGNED_VALUES,
|
|
76
|
+
status=CapabilityStatus.SUPPORTED,
|
|
77
|
+
explanation=(
|
|
78
|
+
"Ordered assignment evidence distinguishes calls, references, literals, unresolved "
|
|
79
|
+
"expressions, and declarations without an assigned value."
|
|
80
|
+
),
|
|
81
|
+
),
|
|
74
82
|
CapabilityCoverage(
|
|
75
83
|
capability=FactCapability.INHERITANCE,
|
|
76
84
|
status=CapabilityStatus.SUPPORTED,
|
|
@@ -97,16 +105,32 @@ class PythonExtractor(SourceExtractor):
|
|
|
97
105
|
),
|
|
98
106
|
identity_resources=(
|
|
99
107
|
ExtractorResource(
|
|
100
|
-
package="modwire.extraction.extractors.
|
|
101
|
-
path="
|
|
108
|
+
package="modwire.extraction.extractors.python",
|
|
109
|
+
path="assigned_value_reader.py",
|
|
110
|
+
),
|
|
111
|
+
ExtractorResource(
|
|
112
|
+
package="modwire.extraction.extractors.python",
|
|
113
|
+
path="call_context.py",
|
|
102
114
|
),
|
|
103
115
|
ExtractorResource(
|
|
104
|
-
package="modwire.extraction.extractors.
|
|
105
|
-
path="
|
|
116
|
+
package="modwire.extraction.extractors.python",
|
|
117
|
+
path="call_reader.py",
|
|
106
118
|
),
|
|
107
119
|
ExtractorResource(
|
|
108
|
-
package="modwire.extraction.extractors.
|
|
109
|
-
path="
|
|
120
|
+
package="modwire.extraction.extractors.python",
|
|
121
|
+
path="domain.py",
|
|
122
|
+
),
|
|
123
|
+
ExtractorResource(
|
|
124
|
+
package="modwire.extraction.extractors.python",
|
|
125
|
+
path="expression_reference_reader.py",
|
|
126
|
+
),
|
|
127
|
+
ExtractorResource(
|
|
128
|
+
package="modwire.extraction.extractors.python",
|
|
129
|
+
path="syntax_parser.py",
|
|
130
|
+
),
|
|
131
|
+
ExtractorResource(
|
|
132
|
+
package="modwire.extraction.extractors.resources",
|
|
133
|
+
path="python/script.py",
|
|
110
134
|
),
|
|
111
135
|
),
|
|
112
136
|
),
|
|
@@ -4,18 +4,21 @@ from typing import cast
|
|
|
4
4
|
|
|
5
5
|
from wireup import injectable
|
|
6
6
|
|
|
7
|
+
from ....shared.code.models.source_assigned_value import SourceAssignedValue
|
|
7
8
|
from ....shared.code.models.source_class_property import SourceClassProperty
|
|
8
9
|
from ....shared.code.models.source_member_kind import SourceMemberKind
|
|
9
10
|
from ....shared.code.models.source_relation_kind import SourceRelationKind
|
|
10
11
|
from ....shared.code.models.types import SourceVisibility
|
|
11
|
-
from ..domain import
|
|
12
|
-
from
|
|
12
|
+
from ..domain import SourceParser
|
|
13
|
+
from .call_context import PythonCallContext
|
|
14
|
+
from .domain import PythonAssignedValueReader, PythonCallReader
|
|
13
15
|
|
|
14
16
|
|
|
15
17
|
@injectable(as_type=SourceParser, qualifier="python")
|
|
16
18
|
@dataclass(frozen=True)
|
|
17
19
|
class PythonSyntaxParser(SourceParser):
|
|
18
20
|
calls: PythonCallReader
|
|
21
|
+
assigned_values: PythonAssignedValueReader
|
|
19
22
|
|
|
20
23
|
def declaration_ordinal(self, node: ast.stmt | ast.expr) -> int:
|
|
21
24
|
return (node.lineno << 32) + node.col_offset + 1
|
|
@@ -152,6 +155,7 @@ class PythonSyntaxParser(SourceParser):
|
|
|
152
155
|
annotation: str,
|
|
153
156
|
visibility: SourceVisibility,
|
|
154
157
|
member_kind: SourceMemberKind,
|
|
158
|
+
assigned_values: tuple[SourceAssignedValue, ...],
|
|
155
159
|
) -> SourceClassProperty:
|
|
156
160
|
return SourceClassProperty(
|
|
157
161
|
name=name,
|
|
@@ -159,6 +163,7 @@ class PythonSyntaxParser(SourceParser):
|
|
|
159
163
|
annotation=annotation,
|
|
160
164
|
visibility=visibility,
|
|
161
165
|
member_kind=member_kind,
|
|
166
|
+
assigned_values=assigned_values,
|
|
162
167
|
)
|
|
163
168
|
|
|
164
169
|
def add_property(
|
|
@@ -178,8 +183,16 @@ class PythonSyntaxParser(SourceParser):
|
|
|
178
183
|
if SourceMemberKind.INSTANCE in {current.member_kind, property_definition.member_kind}
|
|
179
184
|
else SourceMemberKind.STATIC
|
|
180
185
|
),
|
|
186
|
+
assigned_values=(*current.assigned_values, *property_definition.assigned_values),
|
|
181
187
|
)
|
|
182
188
|
|
|
189
|
+
def descendants_in_source_order(self, node: ast.AST) -> tuple[ast.AST, ...]:
|
|
190
|
+
descendants: list[ast.AST] = []
|
|
191
|
+
for child in ast.iter_child_nodes(node):
|
|
192
|
+
descendants.append(child)
|
|
193
|
+
descendants.extend(self.descendants_in_source_order(child))
|
|
194
|
+
return tuple(descendants)
|
|
195
|
+
|
|
183
196
|
def class_properties(self, node: ast.ClassDef) -> list[dict[str, object]]:
|
|
184
197
|
properties: dict[str, SourceClassProperty] = {}
|
|
185
198
|
|
|
@@ -187,6 +200,9 @@ class PythonSyntaxParser(SourceParser):
|
|
|
187
200
|
if isinstance(child, ast.AnnAssign):
|
|
188
201
|
target = child.target
|
|
189
202
|
if isinstance(target, ast.Name):
|
|
203
|
+
annotation_origin = (
|
|
204
|
+
child.annotation.value if isinstance(child.annotation, ast.Subscript) else child.annotation
|
|
205
|
+
)
|
|
190
206
|
self.add_property(
|
|
191
207
|
properties,
|
|
192
208
|
self.property_definition(
|
|
@@ -195,7 +211,18 @@ class PythonSyntaxParser(SourceParser):
|
|
|
195
211
|
or self.value_is_none(child.value),
|
|
196
212
|
annotation=self.unparse(child.annotation),
|
|
197
213
|
visibility=self.visibility_intent(target.id),
|
|
198
|
-
member_kind=
|
|
214
|
+
member_kind=(
|
|
215
|
+
SourceMemberKind.STATIC
|
|
216
|
+
if self.node_name(annotation_origin) in {"ClassVar", "typing.ClassVar"}
|
|
217
|
+
else SourceMemberKind.INSTANCE
|
|
218
|
+
),
|
|
219
|
+
assigned_values=(
|
|
220
|
+
(
|
|
221
|
+
self.assigned_values.unassigned()
|
|
222
|
+
if child.value is None
|
|
223
|
+
else self.assigned_values.read(child.value)
|
|
224
|
+
),
|
|
225
|
+
),
|
|
199
226
|
),
|
|
200
227
|
)
|
|
201
228
|
continue
|
|
@@ -210,13 +237,14 @@ class PythonSyntaxParser(SourceParser):
|
|
|
210
237
|
annotation="",
|
|
211
238
|
visibility=self.visibility_intent(target.id),
|
|
212
239
|
member_kind=SourceMemberKind.STATIC,
|
|
240
|
+
assigned_values=(self.assigned_values.read(child.value),),
|
|
213
241
|
),
|
|
214
242
|
)
|
|
215
243
|
continue
|
|
216
244
|
if not isinstance(child, (ast.FunctionDef, ast.AsyncFunctionDef)):
|
|
217
245
|
continue
|
|
218
246
|
optional_parameter_names = self.optional_constructor_parameters(child)
|
|
219
|
-
for descendant in
|
|
247
|
+
for descendant in self.descendants_in_source_order(child):
|
|
220
248
|
if isinstance(descendant, ast.AnnAssign):
|
|
221
249
|
target = descendant.target
|
|
222
250
|
if (
|
|
@@ -237,6 +265,13 @@ class PythonSyntaxParser(SourceParser):
|
|
|
237
265
|
member_kind=(
|
|
238
266
|
SourceMemberKind.INSTANCE if target.value.id == "self" else SourceMemberKind.STATIC
|
|
239
267
|
),
|
|
268
|
+
assigned_values=(
|
|
269
|
+
(
|
|
270
|
+
self.assigned_values.unassigned()
|
|
271
|
+
if descendant.value is None
|
|
272
|
+
else self.assigned_values.read(descendant.value)
|
|
273
|
+
),
|
|
274
|
+
),
|
|
240
275
|
),
|
|
241
276
|
)
|
|
242
277
|
continue
|
|
@@ -261,6 +296,7 @@ class PythonSyntaxParser(SourceParser):
|
|
|
261
296
|
member_kind=(
|
|
262
297
|
SourceMemberKind.INSTANCE if target.value.id == "self" else SourceMemberKind.STATIC
|
|
263
298
|
),
|
|
299
|
+
assigned_values=(self.assigned_values.read(descendant.value),),
|
|
264
300
|
),
|
|
265
301
|
)
|
|
266
302
|
return [property_definition.model_dump(mode="json") for property_definition in properties.values()]
|
{modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/php/script.php
RENAMED
|
Binary file
|
{modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/php/script.src.php
RENAMED
|
@@ -486,6 +486,11 @@ function collect_definitions(array $nodes, string $sourceId): array {
|
|
|
486
486
|
'annotation' => type_annotation($property->type),
|
|
487
487
|
'visibility' => member_visibility($property),
|
|
488
488
|
'member_kind' => $property->isStatic() ? 'static' : 'instance',
|
|
489
|
+
'assigned_values' => [[
|
|
490
|
+
'kind' => 'unsupported',
|
|
491
|
+
'expression' => '',
|
|
492
|
+
'reference' => '',
|
|
493
|
+
]],
|
|
489
494
|
];
|
|
490
495
|
}
|
|
491
496
|
}
|
|
@@ -502,6 +507,11 @@ function collect_definitions(array $nodes, string $sourceId): array {
|
|
|
502
507
|
'annotation' => type_annotation($param->type),
|
|
503
508
|
'visibility' => parameter_visibility($param),
|
|
504
509
|
'member_kind' => 'instance',
|
|
510
|
+
'assigned_values' => [[
|
|
511
|
+
'kind' => 'unsupported',
|
|
512
|
+
'expression' => '',
|
|
513
|
+
'reference' => '',
|
|
514
|
+
]],
|
|
505
515
|
];
|
|
506
516
|
}
|
|
507
517
|
}
|
{modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/typescript/script.js
RENAMED
|
@@ -230226,6 +230226,7 @@ function collectClasses(sourceFile, lineStarts, sourceId) {
|
|
|
230226
230226
|
annotation: textOf(property.getTypeNode()),
|
|
230227
230227
|
visibility: visibilityFromModifiers(property),
|
|
230228
230228
|
member_kind: memberKindFromModifiers(property),
|
|
230229
|
+
assigned_values: [{ kind: 'unsupported', expression: '', reference: '' }],
|
|
230229
230230
|
});
|
|
230230
230231
|
}
|
|
230231
230232
|
for (const constructorDeclaration of classDeclaration.getConstructors()) {
|
|
@@ -230238,6 +230239,7 @@ function collectClasses(sourceFile, lineStarts, sourceId) {
|
|
|
230238
230239
|
annotation: textOf(parameter.getTypeNode()),
|
|
230239
230240
|
visibility: visibilityFromModifiers(parameter),
|
|
230240
230241
|
member_kind: 'instance',
|
|
230242
|
+
assigned_values: [{ kind: 'unsupported', expression: '', reference: '' }],
|
|
230241
230243
|
});
|
|
230242
230244
|
}
|
|
230243
230245
|
}
|
|
@@ -230321,6 +230323,7 @@ function collectInterfaces(sourceFile, lineStarts, sourceId) {
|
|
|
230321
230323
|
annotation: textOf(property.getTypeNode()),
|
|
230322
230324
|
visibility: 'public',
|
|
230323
230325
|
member_kind: 'instance',
|
|
230326
|
+
assigned_values: [{ kind: 'unsupported', expression: '', reference: '' }],
|
|
230324
230327
|
}));
|
|
230325
230328
|
const methods = interfaceDeclaration.getMethods().map(method => sourceClassMethod(method, lineStarts));
|
|
230326
230329
|
return {
|
|
@@ -230352,6 +230355,7 @@ function collectTypes(sourceFile, lineStarts, sourceId) {
|
|
|
230352
230355
|
annotation: textOf(property.getTypeNode()),
|
|
230353
230356
|
visibility: 'public',
|
|
230354
230357
|
member_kind: 'instance',
|
|
230358
|
+
assigned_values: [{ kind: 'unsupported', expression: '', reference: '' }],
|
|
230355
230359
|
}));
|
|
230356
230360
|
return {
|
|
230357
230361
|
declaration_id: {
|
{modwire-10.1.0 → modwire-11.0.0}/src/modwire/extraction/extractors/resources/typescript/script.ts
RENAMED
|
@@ -648,6 +648,7 @@ function collectClasses(sourceFile, lineStarts, sourceId) {
|
|
|
648
648
|
annotation: textOf(property.getTypeNode()),
|
|
649
649
|
visibility: visibilityFromModifiers(property),
|
|
650
650
|
member_kind: memberKindFromModifiers(property),
|
|
651
|
+
assigned_values: [{ kind: 'unsupported', expression: '', reference: '' }],
|
|
651
652
|
});
|
|
652
653
|
}
|
|
653
654
|
for (const constructorDeclaration of classDeclaration.getConstructors()) {
|
|
@@ -660,6 +661,7 @@ function collectClasses(sourceFile, lineStarts, sourceId) {
|
|
|
660
661
|
annotation: textOf(parameter.getTypeNode()),
|
|
661
662
|
visibility: visibilityFromModifiers(parameter),
|
|
662
663
|
member_kind: 'instance',
|
|
664
|
+
assigned_values: [{ kind: 'unsupported', expression: '', reference: '' }],
|
|
663
665
|
});
|
|
664
666
|
}
|
|
665
667
|
}
|
|
@@ -745,6 +747,7 @@ function collectInterfaces(sourceFile, lineStarts, sourceId) {
|
|
|
745
747
|
annotation: textOf(property.getTypeNode()),
|
|
746
748
|
visibility: 'public',
|
|
747
749
|
member_kind: 'instance',
|
|
750
|
+
assigned_values: [{ kind: 'unsupported', expression: '', reference: '' }],
|
|
748
751
|
}));
|
|
749
752
|
const methods = interfaceDeclaration.getMethods().map(method => sourceClassMethod(method, lineStarts));
|
|
750
753
|
return {
|
|
@@ -777,6 +780,7 @@ function collectTypes(sourceFile, lineStarts, sourceId) {
|
|
|
777
780
|
annotation: textOf(property.getTypeNode()),
|
|
778
781
|
visibility: 'public',
|
|
779
782
|
member_kind: 'instance',
|
|
783
|
+
assigned_values: [{ kind: 'unsupported', expression: '', reference: '' }],
|
|
780
784
|
}));
|
|
781
785
|
return {
|
|
782
786
|
declaration_id: {
|
|
@@ -70,6 +70,11 @@ class TypeScriptExtractor(SourceExtractor):
|
|
|
70
70
|
"member kind are extracted."
|
|
71
71
|
),
|
|
72
72
|
),
|
|
73
|
+
CapabilityCoverage(
|
|
74
|
+
capability=FactCapability.ASSIGNED_VALUES,
|
|
75
|
+
status=CapabilityStatus.UNSUPPORTED,
|
|
76
|
+
explanation="TypeScript property assigned-value evidence is not extracted yet.",
|
|
77
|
+
),
|
|
73
78
|
CapabilityCoverage(
|
|
74
79
|
capability=FactCapability.INHERITANCE,
|
|
75
80
|
status=CapabilityStatus.SUPPORTED,
|